{"version":3,"file":"js/app.1d97a198.js","mappings":"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,sCACA,sCACA,4BAAAib,SAAAA,SAKA,wCACA,uBAEA,sBAGA,EACA5W,WAAAA,GACArE,QAAAA,IAAAA,EAAAA,gBACA,kBACA,EACA2a,cACA,mBAGA,wBACA,2CACA,iDACA,sDAEA,uBACA,8BAEA,oDACA,6CACA,+CACA,+CACA,+CACA,8CACA,sDACA,4CAEA,uBACA,8BAEA,mDACA,4CACA,iDACA,+CACA,+CACA,6CAEA,wBACA,6BAEA,oDACA,4CACA,kDACA,+CACA,+CACA,6CAEA,uBACA,+BAEA,mDACA,6CACA,iDACA,gDACA,+CACA,gDAEA,uBACA,yBAEA,EACA5N,UACA,uDAEA,EACAb,OAAAA,GACAlM,QAAAA,IAAAA,oBAAAA,EACA,GAEAG,QAAAA,CACA+a,4BACA,4BACA,sBACA,EACAC,4BACA,iCAEA,0CACA,uBAEA,EACAC,mBACA,+CACA,YACA,EACAC,OACA,aACA,+CACA,EACA7X,OACA,aACA,gDACA,EACA8X,WACA,wBACA,iBAEA,gBAEA,EACAC,oBAAAA,GACAvb,QAAAA,IAAAA,EAAAA,WAEA,6BADA,KAGA,EACAgO,WACA,oCAEA,2CACAvL,EAAAA,EAAAA,SACA,yCAEA,iCAEA,qCADA,gDAIA,EACA+Y,WACA,8CACAxb,QAAAA,IAAAA,uBAAAA,cACA,EACAyb,aAAAA,EAAAA,GACAC,GAAAA,EAAAA,IAAAA,EAAAA,CAAAC,aAAAA,SACApM,MAAAA,IACA,2BACA3R,KAAAA,KAAAA,YAAAA,KAEA,8BACAb,EAAAA,KAAAA,IAAAA,gBAAAA,GACAA,EAAAA,SAAAA,EACAA,EAAAA,QACA6e,IAAAA,gBAAAA,EAAAA,KAAAA,IAEAC,MAAAA,QAAAA,MACA,EACAC,YAAAA,GACA,OACAC,IAAAA,aACAC,IAAAA,YACAhN,IAAAA,mBAEA,qBACA,WACA,EACAiN,2BACA,8BACA,8BAEA,6BAEA,EACAC,4BACA,+BACA,+BAEA,8BAEA,EACAC,kCACA,+BACA,8BACA,qBAEA,8BACA,qBAEA,EACAC,wBACApc,QAAAA,IAAAA,aACA,2BACA,0BACA,mBACA,8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kW,iBAAAA,KACAC,cAAAA,KACAR,iBAAAA,KACAK,oBAAAA,IAEAn3B,WAAAA,CACAyR,UAAAA,GAAAA,EACA6D,qBAAAA,GAAAA,EACAE,qBAAAA,GAAAA,EACAD,gBAAAA,GAAAA,EAGAiQ,eAAAA,GAAAA,EACAvY,UAAAA,EAAAA,EACAqY,uBAAAA,GAAAA,GAEA3jB,UACA,oCACA,EACAjB,QAAAA,uBAEA,oBACA,+BACA,sCAGA,4CACA,qBAEA,oBAGA,2BAEA,EAEApD,SAAAA,CACA25B,wBACA,6BACA,IACA,uCACA,2CAGA,EACA,EAEAzkB,kBACA,0DACA,8CACA,EACAG,UACA,OACA,gCACA,kDAEA,EACA4D,cACA,uBACA,EACAgL,SACA,OACA,sEAEA,EACAjE,gBACA,SACA,wDAEA/a,EAAAA,MAAAA,EAAAA,KAAAA,SAAAA,MAAAA,KAAAA,OAAAA,EACA,+BACAA,EAAAA,SAAAA,EAAAA,SACAA,EAAAA,UAAAA,MAAAA,EAAAA,MAAAA,GAAAA,KAAAA,MAAAA,IAAAA,EAAAA,MACA+a,EAAAA,KAAAA,EACA,CACA,QACA,EACAsH,gBACA,4DACA,EACAvD,SACA,uDACA,wCACA,GACA,EACAC,SACA,uDACA,uCACA,GACA,EACAxD,oBACA,gDACA,EACAnU,oBACA,kDACA,EACA6M,mBACA,2DAKA,GAEA1V,QAAAA,CACAy2B,oBACA,0BACA,EACA,sBACA,cACA,+BACA9jB,GACA,mEAEA9S,QAAAA,IAAAA,CAAA62B,UAAAA,IACA,uBACA,6BACA,yBACA,4BACA,mDACA,wBACA,kCACA,iBACA,iDAEA,EACA,0BACA,QACA,iDACA,2BACAC,IAGA,IACAC,EAAAA,KAAAA,iBAAAA,wBAEA,0BACAA,EAAAA,KAAAA,SACA,yDAcA,sBACA,gBAMA,EACA9R,gBACA,yBACA,EACAnQ,UACA,gBACA,EACA/B,cAAAA,GACA,sBACA,OACA,EACAmS,aAAAA,GACA,0BACA,mBAEA,OAEA,EACA7S,WAAAA,GACA,aACA,uBACA,EACA8S,gBACA,oBACA,2BACA,0BACA,+BAEA,2BAEA,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CA,4BACA,8BAEA,sCACA,IACA,EACAC,iBACA,YACA,4BACA,8BAEA,wCACA,IACA,EACA7jB,mBACA,2DAKA,EACAssB,SACA,8DACA,mBACA,IACA,EAEA3V,0BACA,oDACA,EACA8N,iBACA,iDACA,EACAtwB,WACA,qCACA,GAEA3I,MAAAA,CACAurB,iBAAAA,EAAAA,GAEA,OACA,sBACA,iDAGA,EACAH,eAAAA,CACAnrB,QAAAA,EAAAA,GACA,UACA,mBAEA,EACAC,MAAAA,GAGAyI,SAAAA,CACA1I,QAAAA,EAAAA,GACA,UACAtB,QAAAA,IAAAA,yBAAAA,GACA,gBAEA,6BACA,+BAEA,0CACA,mDAGA,yCAGAA,QAAAA,IACA,gBACA,yBACA,mCAEA,aACAoiC,OAAAA,KAAAA,SAAAA,KACAA,OAAAA,KAAAA,SAAAA,MAEA,+DAGA,EACA7gC,MAAAA,GAEAmrB,iBAAAA,CACA,iBACA,KACA,4BACA,4DACA,8BACA,6BACA,iBACA,8DACA,2BACA,CACA1sB,QAAAA,IAAAA,WACA,kBACA,eACA,8DACA,mDAQA,CACA,EACAuB,MAAAA,GAEA0gC,cACA,mBACA,EACAC,gBACA,qBACA,EACAX,WAAAA,GACAvhC,QAAAA,IAAAA,EAAAA,oBACA,EACA6V,mBAEA,0BACA,wDAEA,0BACA,2BACA,8BACA,GAIA,GAEA1V,QAAAA,CACA05B,SAAAA,WACA,0BACAxU,YAAAA,KACA,8CACA,uDACA,aACA+c,OAAAA,KAAAA,wBAAAA,KACAA,OAAAA,KAAAA,wBAAAA,MAEA,2DACA,yBACA,SACA,CACA,WACA/c,YAAAA,WACA,yBACA9Y,EAAAA,gBACAA,EAAAA,gBAEA,OACA,CACA,EACAukB,gBACA,6BACA,iBACA,2BACA,mDACA9wB,QAAAA,IAAAA,UAAAA,KAAAA,OAAAA,MAAAA,QAAAA,YACA,yDACAA,QAAAA,IAAAA,YAAAA,KAAAA,gBAGA,EACAqiC,aAAAA,WACA,oBACA,EACAlL,cAAAA,eAAAA,GAIA,GAHA,8CACAn3B,QAAAA,IAAAA,EAAAA,8BAEA,6BACA,mCACA,+BACAsiC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","sources":["webpack://map-prototype/./src/components/blocks/pageShortcutBlock.vue","webpack://map-prototype/src/components/blocks/pageShortcutBlock.vue","webpack://map-prototype/./src/components/blocks/pageShortcutBlock.vue?e615","webpack://map-prototype/./src/components/blocks/pageShortcutBlock.vue?a5b5","webpack://map-prototype/./src/components/blocks/paragraphBlock.vue","webpack://map-prototype/src/components/blocks/paragraphBlock.vue","webpack://map-prototype/./src/components/blocks/paragraphBlock.vue?a249","webpack://map-prototype/./src/components/blocks/paragraphBlock.vue?3751","webpack://map-prototype/./src/components/blocks/streamfieldBlock.vue","webpack://map-prototype/./src/components/blocks/selectHotspotGroup.vue","webpack://map-prototype/src/components/blocks/selectHotspotGroup.vue","webpack://map-prototype/./src/components/blocks/selectHotspotGroup.vue?d99e","webpack://map-prototype/./src/components/blocks/selectHotspotGroup.vue?e093","webpack://map-prototype/./src/components/blocks/selectLocation.vue","webpack://map-prototype/src/components/blocks/selectLocation.vue","webpack://map-prototype/./src/components/blocks/selectLocation.vue?4b6c","webpack://map-prototype/./src/components/blocks/selectLocation.vue?b8bd","webpack://map-prototype/./src/components/blocks/alertBlock.vue","webpack://map-prototype/src/components/blocks/alertBlock.vue","webpack://map-prototype/./src/components/blocks/alertBlock.vue?930f","webpack://map-prototype/./src/components/blocks/alertBlock.vue?65ca","webpack://map-prototype/./src/components/blocks/headingBlock.vue","webpack://map-prototype/src/components/blocks/headingBlock.vue","webpack://map-prototype/./src/components/blocks/headingBlock.vue?6130","webpack://map-prototype/./src/components/blocks/headingBlock.vue?da57","webpack://map-prototype/./src/components/blocks/imageBlock.vue","webpack://map-prototype/src/components/blocks/imageBlock.vue","webpack://map-prototype/./src/components/blocks/imageBlock.vue?9b2d","webpack://map-prototype/./src/components/blocks/imageBlock.vue?b5d2","webpack://map-prototype/./src/components/blocks/imageLinkBlock.vue","webpack://map-prototype/src/components/blocks/imageLinkBlock.vue","webpack://map-prototype/./src/components/blocks/imageLinkBlock.vue?9e6a","webpack://map-prototype/./src/components/blocks/imageLinkBlock.vue?5a1a","webpack://map-prototype/./src/components/blocks/quoteBlock.vue","webpack://map-prototype/src/components/blocks/quoteBlock.vue","webpack://map-prototype/./src/components/blocks/quoteBlock.vue?7520","webpack://map-prototype/./src/components/blocks/quoteBlock.vue?a389","webpack://map-prototype/./src/components/blocks/documentBlock.vue","webpack://map-prototype/src/components/blocks/documentBlock.vue","webpack://map-prototype/./src/components/blocks/documentBlock.vue?34ae","webpack://map-prototype/./src/components/blocks/documentBlock.vue?dc10","webpack://map-prototype/./src/components/blocks/videoBlock.vue","webpack://map-prototype/src/components/blocks/videoBlock.vue","webpack://map-prototype/./src/components/blocks/videoBlock.vue?6c04","webpack://map-prototype/./src/components/blocks/videoBlock.vue?0a75","webpack://map-prototype/./src/components/blocks/layerFilterSliderBlock.vue","webpack://map-prototype/src/components/blocks/layerFilterSliderBlock.vue","webpack://map-prototype/./src/components/blocks/layerFilterSliderBlock.vue?0064","webpack://map-prototype/./src/components/blocks/layerFilterSliderBlock.vue?bc8e","webpack://map-prototype/./src/components/blocks/layerRadioGroupBlock.vue","webpack://map-prototype/src/components/blocks/layerRadioGroupBlock.vue","webpack://map-prototype/./src/components/blocks/layerRadioGroupBlock.vue?c64c","webpack://map-prototype/./src/components/blocks/layerRadioGroupBlock.vue?7506","webpack://map-prototype/./src/components/blocks/cardGalleryBlock.vue","webpack://map-prototype/./src/components/blocks/cardGalleryBlockCard.vue","webpack://map-prototype/src/components/blocks/cardGalleryBlockCard.vue","webpack://map-prototype/./src/components/blocks/cardGalleryBlockCard.vue?1a01","webpack://map-prototype/./src/components/blocks/cardGalleryBlockCard.vue?9d42","webpack://map-prototype/src/components/blocks/cardGalleryBlock.vue","webpack://map-prototype/./src/components/blocks/cardGalleryBlock.vue?eb50","webpack://map-prototype/./src/components/blocks/cardGalleryBlock.vue?5174","webpack://map-prototype/./src/components/blocks/columns/oneColumnBlock.vue","webpack://map-prototype/src/components/blocks/columns/oneColumnBlock.vue","webpack://map-prototype/./src/components/blocks/columns/oneColumnBlock.vue?bd5a","webpack://map-prototype/./src/components/blocks/columns/oneColumnBlock.vue?9df0","webpack://map-prototype/./src/components/blocks/columns/twoColumnBlock.vue","webpack://map-prototype/src/components/blocks/columns/twoColumnBlock.vue","webpack://map-prototype/./src/components/blocks/columns/twoColumnBlock.vue?36f7","webpack://map-prototype/./src/components/blocks/columns/twoColumnBlock.vue?f996","webpack://map-prototype/./src/components/blocks/columns/threeColumnBlock.vue","webpack://map-prototype/src/components/blocks/columns/threeColumnBlock.vue","webpack://map-prototype/./src/components/blocks/columns/threeColumnBlock.vue?d348","webpack://map-prototype/./src/components/blocks/columns/threeColumnBlock.vue?ceee","webpack://map-prototype/./src/components/blocks/columns/fourColumnBlock.vue","webpack://map-prototype/src/components/blocks/columns/fourColumnBlock.vue","webpack://map-prototype/./src/components/blocks/columns/fourColumnBlock.vue?ba86","webpack://map-prototype/./src/components/blocks/columns/fourColumnBlock.vue?4376","webpack://map-prototype/./src/components/blocks/columns/primaryLeftColumnBlock.vue","webpack://map-prototype/src/components/blocks/columns/primaryLeftColumnBlock.vue","webpack://map-prototype/./src/components/blocks/columns/primaryLeftColumnBlock.vue?2112","webpack://map-prototype/./src/components/blocks/columns/primaryLeftColumnBlock.vue?c64d","webpack://map-prototype/./src/components/blocks/columns/primaryRightColumnBlock.vue","webpack://map-prototype/src/components/blocks/columns/primaryRightColumnBlock.vue","webpack://map-prototype/./src/components/blocks/columns/primaryRightColumnBlock.vue?7430","webpack://map-prototype/./src/components/blocks/columns/primaryRightColumnBlock.vue?358c","webpack://map-prototype/./src/components/blocks/accordianBlock.vue","webpack://map-prototype/src/components/blocks/accordianBlock.vue","webpack://map-prototype/./src/components/blocks/accordianBlock.vue?012a","webpack://map-prototype/./src/components/blocks/accordianBlock.vue?47bf","webpack://map-prototype/./src/components/blocks/embeddedHtmlBlock.vue","webpack://map-prototype/src/components/blocks/embeddedHtmlBlock.vue","webpack://map-prototype/./src/components/blocks/embeddedHtmlBlock.vue?7ef5","webpack://map-prototype/./src/components/blocks/embeddedHtmlBlock.vue?3799","webpack://map-prototype/./src/components/blocks/buttonLinkRowBlock.vue","webpack://map-prototype/src/components/blocks/buttonLinkRowBlock.vue","webpack://map-prototype/./src/components/blocks/buttonLinkRowBlock.vue?9727","webpack://map-prototype/./src/components/blocks/buttonLinkRowBlock.vue?83af","webpack://map-prototype/./src/components/blocks/coloredNotificationBlock.vue","webpack://map-prototype/src/components/blocks/coloredNotificationBlock.vue","webpack://map-prototype/./src/components/blocks/coloredNotificationBlock.vue?5cb2","webpack://map-prototype/./src/components/blocks/coloredNotificationBlock.vue?226f","webpack://map-prototype/./src/components/blocks/tileButtonGridBlock.vue","webpack://map-prototype/./src/components/blocks/tileButtonBlock.vue","webpack://map-prototype/src/components/blocks/tileButtonBlock.vue","webpack://map-prototype/./src/components/blocks/tileButtonBlock.vue?c71e","webpack://map-prototype/./src/components/blocks/tileButtonBlock.vue?fd23","webpack://map-prototype/src/components/blocks/tileButtonGridBlock.vue","webpack://map-prototype/./src/components/blocks/tileButtonGridBlock.vue?9572","webpack://map-prototype/./src/components/blocks/tileButtonGridBlock.vue?4625","webpack://map-prototype/./src/components/blocks/journeySelector.vue","webpack://map-prototype/src/components/blocks/journeySelector.vue","webpack://map-prototype/./src/components/blocks/journeySelector.vue?f987","webpack://map-prototype/./src/components/blocks/journeySelector.vue?36e0","webpack://map-prototype/./src/components/blocks/resetMapBlock.vue","webpack://map-prototype/src/components/blocks/resetMapBlock.vue","webpack://map-prototype/./src/components/blocks/resetMapBlock.vue?9b54","webpack://map-prototype/./src/components/blocks/resetMapBlock.vue?0299","webpack://map-prototype/./src/components/blocks/precinctBlock.vue","webpack://map-prototype/src/components/blocks/precinctBlock.vue","webpack://map-prototype/./src/components/blocks/precinctBlock.vue?20c4","webpack://map-prototype/./src/components/blocks/precinctBlock.vue?c4eb","webpack://map-prototype/src/components/blocks/streamfieldBlock.vue","webpack://map-prototype/./src/components/blocks/streamfieldBlock.vue?bfd2","webpack://map-prototype/./src/components/blocks/streamfieldBlock.vue?5a9a","webpack://map-prototype/./src/components/lightbox/LightboxBase.vue","webpack://map-prototype/src/components/lightbox/LightboxBase.vue","webpack://map-prototype/./src/components/lightbox/LightboxBase.vue?8bf0","webpack://map-prototype/./src/components/lightbox/LightboxBase.vue?c526","webpack://map-prototype/./src/components/lightbox/LightboxContentLayout.vue","webpack://map-prototype/src/components/lightbox/LightboxContentLayout.vue","webpack://map-prototype/./src/components/lightbox/LightboxContentLayout.vue?1422","webpack://map-prototype/./src/components/lightbox/LightboxContentLayout.vue?1d6b","webpack://map-prototype/./src/components/lightbox/LightboxGallery.vue","webpack://map-prototype/./src/components/lightbox/LightboxImageCard.vue","webpack://map-prototype/src/components/lightbox/LightboxImageCard.vue","webpack://map-prototype/./src/components/lightbox/LightboxImageCard.vue?25b2","webpack://map-prototype/./src/components/lightbox/LightboxImageCard.vue?b3e0","webpack://map-prototype/./src/components/lightbox/LightboxVideoCard.vue","webpack://map-prototype/src/components/lightbox/LightboxVideoCard.vue","webpack://map-prototype/./src/components/lightbox/LightboxVideoCard.vue?9430","webpack://map-prototype/./src/components/lightbox/LightboxVideoCard.vue?3021","webpack://map-prototype/./src/components/lightbox/LightboxDocumentCard.vue","webpack://map-prototype/src/components/lightbox/LightboxDocumentCard.vue","webpack://map-prototype/./src/components/lightbox/LightboxDocumentCard.vue?897e","webpack://map-prototype/./src/components/lightbox/LightboxDocumentCard.vue?1cbd","webpack://map-prototype/./src/components/lightbox/LightboxWagtailPage.vue","webpack://map-prototype/src/components/lightbox/LightboxWagtailPage.vue","webpack://map-prototype/./src/components/lightbox/LightboxWagtailPage.vue?2cd8","webpack://map-prototype/./src/components/lightbox/LightboxWagtailPage.vue?0515","webpack://map-prototype/./src/components/lightbox/LightboxWagtailPageStruct.vue","webpack://map-prototype/src/components/lightbox/LightboxWagtailPageStruct.vue","webpack://map-prototype/./src/components/lightbox/LightboxWagtailPageStruct.vue?edd2","webpack://map-prototype/./src/components/lightbox/LightboxWagtailPageStruct.vue?0b04","webpack://map-prototype/./src/components/lightbox/LightboxIframeCard.vue","webpack://map-prototype/./src/components/lightbox/LoadingOverlay.vue","webpack://map-prototype/src/components/lightbox/LoadingOverlay.vue","webpack://map-prototype/./src/components/lightbox/LoadingOverlay.vue?fe4a","webpack://map-prototype/./src/components/lightbox/LoadingOverlay.vue?670c","webpack://map-prototype/src/components/lightbox/LightboxIframeCard.vue","webpack://map-prototype/./src/components/lightbox/LightboxIframeCard.vue?5509","webpack://map-prototype/./src/components/lightbox/LightboxIframeCard.vue?78c9","webpack://map-prototype/./src/components/lightbox/LightboxBeforeAfterCard.vue","webpack://map-prototype/src/components/lightbox/LightboxBeforeAfterCard.vue","webpack://map-prototype/./src/components/lightbox/LightboxBeforeAfterCard.vue?c8fc","webpack://map-prototype/./src/components/lightbox/LightboxBeforeAfterCard.vue?ecc2","webpack://map-prototype/./src/components/lightbox/LightboxPanoramaCard.vue","webpack://map-prototype/src/components/lightbox/LightboxPanoramaCard.vue","webpack://map-prototype/./src/components/lightbox/LightboxPanoramaCard.vue?ef73","webpack://map-prototype/./src/components/lightbox/LightboxPanoramaCard.vue?9455","webpack://map-prototype/./src/components/lightbox/LightboxVideo360Card.vue","webpack://map-prototype/src/components/lightbox/LightboxVideo360Card.vue","webpack://map-prototype/./src/components/lightbox/LightboxVideo360Card.vue?82a8","webpack://map-prototype/./src/components/lightbox/LightboxVideo360Card.vue?5c42","webpack://map-prototype/./src/components/lightbox/LightboxBiographyCard.vue","webpack://map-prototype/src/components/lightbox/LightboxBiographyCard.vue","webpack://map-prototype/./src/components/lightbox/LightboxBiographyCard.vue?fd83","webpack://map-prototype/./src/components/lightbox/LightboxBiographyCard.vue?a2db","webpack://map-prototype/./src/components/lightbox/LightboxCustomPanoramaCard.vue","webpack://map-prototype/src/components/lightbox/LightboxCustomPanoramaCard.vue","webpack://map-prototype/./src/components/lightbox/LightboxCustomPanoramaCard.vue?ab3c","webpack://map-prototype/./src/components/lightbox/LightboxCustomPanoramaCard.vue?9573","webpack://map-prototype/./src/components/lightbox/QuestionsLightbox.vue","webpack://map-prototype/src/components/lightbox/QuestionsLightbox.vue","webpack://map-prototype/./src/components/lightbox/QuestionsLightbox.vue?f5e3","webpack://map-prototype/./src/components/lightbox/QuestionsLightbox.vue?559e","webpack://map-prototype/./src/components/lightbox/LightboxBranchingVideo360Card.vue","webpack://map-prototype/src/components/lightbox/LightboxBranchingVideo360Card.vue","webpack://map-prototype/./src/components/lightbox/LightboxBranchingVideo360Card.vue?9fc6","webpack://map-prototype/./src/components/lightbox/LightboxBranchingVideo360Card.vue?ab3a","webpack://map-prototype/./src/components/lightbox/LightboxBranchingVideoCard.vue","webpack://map-prototype/src/components/lightbox/LightboxBranchingVideoCard.vue","webpack://map-prototype/./src/components/lightbox/LightboxBranchingVideoCard.vue?3331","webpack://map-prototype/./src/components/lightbox/LightboxBranchingVideoCard.vue?2429","webpack://map-prototype/./src/components/lightbox/LightboxAudio.vue","webpack://map-prototype/./src/components/VuetifyAudio.vue","webpack://map-prototype/src/components/VuetifyAudio.vue","webpack://map-prototype/./src/components/VuetifyAudio.vue?595a","webpack://map-prototype/./src/components/VuetifyAudio.vue?1414","webpack://map-prototype/src/components/lightbox/LightboxAudio.vue","webpack://map-prototype/./src/components/lightbox/LightboxAudio.vue?82bd","webpack://map-prototype/./src/components/lightbox/LightboxAudio.vue?a99a","webpack://map-prototype/./src/components/lightbox/LightboxExternalLinkCard.vue","webpack://map-prototype/src/components/lightbox/LightboxExternalLinkCard.vue","webpack://map-prototype/./src/components/lightbox/LightboxExternalLinkCard.vue?eb45","webpack://map-prototype/./src/components/lightbox/LightboxExternalLinkCard.vue?aaeb","webpack://map-prototype/./src/components/lightbox/LightboxInternalLinkCard.vue","webpack://map-prototype/src/components/lightbox/LightboxInternalLinkCard.vue","webpack://map-prototype/./src/components/lightbox/LightboxInternalLinkCard.vue?7884","webpack://map-prototype/./src/components/lightbox/LightboxInternalLinkCard.vue?2269","webpack://map-prototype/src/components/lightbox/LightboxGallery.vue","webpack://map-prototype/./src/components/lightbox/LightboxGallery.vue?2942","webpack://map-prototype/./src/components/lightbox/LightboxGallery.vue?e13e","webpack://map-prototype/./src/components/page/pageHeaderCard.vue","webpack://map-prototype/src/components/page/pageHeaderCard.vue","webpack://map-prototype/./src/components/page/pageHeaderCard.vue?d878","webpack://map-prototype/./src/components/page/pageHeaderCard.vue?ec7d","webpack://map-prototype/./src/components/panorama/ConcentricCircles.vue","webpack://map-prototype/src/components/panorama/ConcentricCircles.vue","webpack://map-prototype/./src/components/panorama/ConcentricCircles.vue?420a","webpack://map-prototype/./src/components/panorama/ConcentricCircles.vue?45e7","webpack://map-prototype/./src/components/panorama/Marzipano.vue","webpack://map-prototype/./src/components/panorama/MarzipanoRectConfigurator.vue","webpack://map-prototype/src/components/panorama/MarzipanoRectConfigurator.vue","webpack://map-prototype/./src/components/panorama/MarzipanoRectConfigurator.vue?f465","webpack://map-prototype/./src/components/panorama/MarzipanoRectConfigurator.vue?0ea4","webpack://map-prototype/src/components/panorama/Marzipano.vue","webpack://map-prototype/./src/components/panorama/Marzipano.vue?daf1","webpack://map-prototype/./src/components/panorama/Marzipano.vue?548c","webpack://map-prototype/./src/components/panorama/MarzipanoBubbleHotspot.vue","webpack://map-prototype/src/components/panorama/MarzipanoBubbleHotspot.vue","webpack://map-prototype/./src/components/panorama/MarzipanoBubbleHotspot.vue?62fb","webpack://map-prototype/./src/components/panorama/MarzipanoBubbleHotspot.vue?1ae2","webpack://map-prototype/./src/components/panorama/MarzipanoRectHotspot.vue","webpack://map-prototype/src/components/panorama/MarzipanoRectHotspot.vue","webpack://map-prototype/./src/components/panorama/MarzipanoRectHotspot.vue?a68d","webpack://map-prototype/./src/components/panorama/MarzipanoRectHotspot.vue?5ead","webpack://map-prototype/./src/components/panorama/PanoramaInstructions.vue","webpack://map-prototype/src/components/panorama/PanoramaInstructions.vue","webpack://map-prototype/./src/components/panorama/PanoramaInstructions.vue?9d5a","webpack://map-prototype/./src/components/panorama/PanoramaInstructions.vue?a2c4","webpack://map-prototype/./src/components/panorama/PanoramaLoading.vue","webpack://map-prototype/src/components/panorama/PanoramaLoading.vue","webpack://map-prototype/./src/components/panorama/PanoramaLoading.vue?3017","webpack://map-prototype/./src/components/panorama/PanoramaLoading.vue?d1aa","webpack://map-prototype/./src/views/wagtail/EngagementRoom.vue","webpack://map-prototype/src/views/wagtail/EngagementRoom.vue","webpack://map-prototype/./src/views/wagtail/EngagementRoom.vue?1a26","webpack://map-prototype/./src/views/wagtail/EngagementRoom.vue?5481","webpack://map-prototype/./src/views/wagtail/WebPage.vue","webpack://map-prototype/src/views/wagtail/WebPage.vue","webpack://map-prototype/./src/views/wagtail/WebPage.vue?8e44","webpack://map-prototype/./src/views/wagtail/WebPage.vue?50ca","webpack://map-prototype/./src/views/wagtail/WebPageLegacy.vue","webpack://map-prototype/src/views/wagtail/WebPageLegacy.vue","webpack://map-prototype/./src/views/wagtail/WebPageLegacy.vue?116d","webpack://map-prototype/./src/views/wagtail/WebPageLegacy.vue?0dfd","webpack://map-prototype/./src/App.vue","webpack://map-prototype/src/App.vue","webpack://map-prototype/./src/App.vue?46c1","webpack://map-prototype/./src/App.vue?01fe","webpack://map-prototype/./src/plugins/vuetify.js","webpack://map-prototype/./src/services/auth.service.js","webpack://map-prototype/./src/store/auth.module.js","webpack://map-prototype/./src/services/map.service.js","webpack://map-prototype/./src/store/map.module.js","webpack://map-prototype/./src/services/wagtail.service.js","webpack://map-prototype/./src/store/wagtail.module.js","webpack://map-prototype/./src/store/toolbar.module.js","webpack://map-prototype/./src/store/lightbox.module.js","webpack://map-prototype/./src/store/index.js","webpack://map-prototype/./src/views/Login.vue","webpack://map-prototype/./src/components/loadingScreen/LoadingScreen.vue","webpack://map-prototype/src/components/loadingScreen/LoadingScreen.vue","webpack://map-prototype/./src/components/loadingScreen/LoadingScreen.vue?f5b6","webpack://map-prototype/./src/components/loadingScreen/LoadingScreen.vue?2c78","webpack://map-prototype/src/views/Login.vue","webpack://map-prototype/./src/views/Login.vue?e68b","webpack://map-prototype/./src/views/Login.vue?9f01","webpack://map-prototype/./src/views/Logout.vue","webpack://map-prototype/src/views/Logout.vue","webpack://map-prototype/./src/views/Logout.vue?1ec2","webpack://map-prototype/./src/views/Logout.vue?f9ce","webpack://map-prototype/./src/views/WagtailPage.vue","webpack://map-prototype/./src/views/wagtail/Page.vue","webpack://map-prototype/src/views/wagtail/Page.vue","webpack://map-prototype/./src/views/wagtail/Page.vue?2c31","webpack://map-prototype/./src/views/wagtail/Page.vue?a616","webpack://map-prototype/./src/views/wagtail/EngageWalkthrough.vue","webpack://map-prototype/src/views/wagtail/EngageWalkthrough.vue","webpack://map-prototype/./src/views/wagtail/EngageWalkthrough.vue?8322","webpack://map-prototype/./src/views/wagtail/EngageWalkthrough.vue?c12c","webpack://map-prototype/./src/views/wagtail/MapPage.vue","webpack://map-prototype/./src/components/sidebar/RightSidebar.vue","webpack://map-prototype/src/components/sidebar/RightSidebar.vue","webpack://map-prototype/./src/components/sidebar/RightSidebar.vue?6a77","webpack://map-prototype/./src/components/sidebar/RightSidebar.vue?c31c","webpack://map-prototype/./src/components/sidebar/Sidebar.vue","webpack://map-prototype/src/components/sidebar/Sidebar.vue","webpack://map-prototype/./src/components/sidebar/Sidebar.vue?817a","webpack://map-prototype/./src/components/sidebar/Sidebar.vue?17fb","webpack://map-prototype/./src/components/esrimap/Map.vue","webpack://map-prototype/./src/components/esrimap/MapArc.vue","webpack://map-prototype/./src/components/esrimap/RenderView2d.vue","webpack://map-prototype/src/components/esrimap/RenderView2d.vue","webpack://map-prototype/./src/components/esrimap/RenderView2d.vue?d61a","webpack://map-prototype/./src/components/esrimap/RenderView2d.vue?cceb","webpack://map-prototype/src/components/esrimap/MapArc.vue","webpack://map-prototype/./src/components/esrimap/MapArc.vue?5302","webpack://map-prototype/./src/components/esrimap/MapArc.vue?132d","webpack://map-prototype/./src/components/esrimap/MapMarkerArcHtml.vue","webpack://map-prototype/src/components/esrimap/MapMarkerArcHtml.vue","webpack://map-prototype/./src/components/esrimap/MapMarkerArcHtml.vue?dbd5","webpack://map-prototype/./src/components/esrimap/MapMarkerArcHtml.vue?125d","webpack://map-prototype/./src/components/esrimap/Loading.vue","webpack://map-prototype/src/components/esrimap/Loading.vue","webpack://map-prototype/./src/components/esrimap/Loading.vue?8a12","webpack://map-prototype/./src/components/esrimap/Loading.vue?5def","webpack://map-prototype/./src/components/misc/MapStickyCard.vue","webpack://map-prototype/src/components/misc/MapStickyCard.vue","webpack://map-prototype/./src/components/misc/MapStickyCard.vue?b4ec","webpack://map-prototype/./src/components/misc/MapStickyCard.vue?4b4f","webpack://map-prototype/src/components/esrimap/Map.vue","webpack://map-prototype/./src/components/esrimap/Map.vue?a230","webpack://map-prototype/./src/components/esrimap/Map.vue?1f2e","webpack://map-prototype/./src/components/lightbox/MapLightbox.vue","webpack://map-prototype/src/components/lightbox/MapLightbox.vue","webpack://map-prototype/./src/components/lightbox/MapLightbox.vue?92ab","webpack://map-prototype/./src/components/lightbox/MapLightbox.vue?baef","webpack://map-prototype/src/views/wagtail/MapPage.vue","webpack://map-prototype/./src/views/wagtail/MapPage.vue?9555","webpack://map-prototype/./src/views/wagtail/MapPage.vue?4371","webpack://map-prototype/./src/views/wagtail/Error404.vue","webpack://map-prototype/src/views/wagtail/Error404.vue","webpack://map-prototype/./src/views/wagtail/Error404.vue?3a56","webpack://map-prototype/./src/views/wagtail/Error404.vue?4eec","webpack://map-prototype/./src/views/wagtail/MapVirtualTourPage.vue","webpack://map-prototype/src/views/wagtail/MapVirtualTourPage.vue","webpack://map-prototype/./src/views/wagtail/MapVirtualTourPage.vue?a022","webpack://map-prototype/./src/views/wagtail/MapVirtualTourPage.vue?193e","webpack://map-prototype/./src/components/misc/LandingStreamfield.vue","webpack://map-prototype/src/components/misc/LandingStreamfield.vue","webpack://map-prototype/./src/components/misc/LandingStreamfield.vue?9b6e","webpack://map-prototype/./src/components/misc/LandingStreamfield.vue?9e24","webpack://map-prototype/src/views/WagtailPage.vue","webpack://map-prototype/./src/views/WagtailPage.vue?fdbf","webpack://map-prototype/./src/views/WagtailPage.vue?1a7a","webpack://map-prototype/./src/router/index.js","webpack://map-prototype/./src/main.js","webpack://map-prototype/./src/services/api-url.js","webpack://map-prototype/./src/util/color.js","webpack://map-prototype/webpack/bootstrap","webpack://map-prototype/webpack/runtime/amd define","webpack://map-prototype/webpack/runtime/amd options","webpack://map-prototype/webpack/runtime/chunk loaded","webpack://map-prototype/webpack/runtime/compat get default export","webpack://map-prototype/webpack/runtime/define property getters","webpack://map-prototype/webpack/runtime/ensure chunk","webpack://map-prototype/webpack/runtime/get javascript chunk filename","webpack://map-prototype/webpack/runtime/get mini-css chunk filename","webpack://map-prototype/webpack/runtime/global","webpack://map-prototype/webpack/runtime/hasOwnProperty shorthand","webpack://map-prototype/webpack/runtime/load script","webpack://map-prototype/webpack/runtime/make namespace object","webpack://map-prototype/webpack/runtime/publicPath","webpack://map-prototype/webpack/runtime/css loading","webpack://map-prototype/webpack/runtime/jsonp chunk loading","webpack://map-prototype/webpack/startup"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-hover',{scopedSlots:_vm._u([{key:\"default\",fn:function({ hover }){return [_c('v-card',{staticClass:\"mx-auto transition-swing\",class:`elevation-${hover ? 6 : 0}`,attrs:{\"flat\":\"\",\"tabindex\":\"-1\"},on:{\"click\":function($event){return _vm.$emit('click')}}},[_c('v-card-text',{staticClass:\"pb-0 text-center\"},[_c('v-btn',{staticClass:\"streamfield-btn\",attrs:{\"tabindex\":\"0\",\"aria-hidden\":\"false\",\"aria-label\":_vm.title,\"fab\":\"\",\"x-large\":\"\",\"color\":\"secondary\"}},[_c('v-icon',{attrs:{\"x-large\":\"\"}},[_vm._v(_vm._s(_vm.icon))])],1)],1),_c('v-card-text',{staticClass:\"text-center subtitle-1\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")])],1)]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-hover v-slot:default=\"{ hover }\">\r\n <v-card \r\n flat\r\n @click=\"$emit('click')\"\r\n :class=\"`elevation-${hover ? 6 : 0}`\"\r\n class=\"mx-auto transition-swing\"\r\n tabindex=\"-1\"\r\n >\r\n <v-card-text class=\"pb-0 text-center\">\r\n <v-btn class=\"streamfield-btn\" tabindex=\"0\" aria-hidden=\"false\" :aria-label=\"title\" fab x-large color=\"secondary\">\r\n <v-icon x-large>{{ icon }}</v-icon>\r\n </v-btn>\r\n </v-card-text>\r\n <v-card-text class=\"text-center subtitle-1\">\r\n {{ title }}\r\n </v-card-text>\r\n </v-card>\r\n </v-hover>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"PageShortcutBlock\",\r\n props: [\"icon\", \"title\"],\r\n};\r\n\r\n</script>\r\n\r\n<style scoped>\r\n.streamfield-btn:focus-visible {\r\n outline: 4px dashed darkorange;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./pageShortcutBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./pageShortcutBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./pageShortcutBlock.vue?vue&type=template&id=59e461f3&scoped=true&\"\nimport script from \"./pageShortcutBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./pageShortcutBlock.vue?vue&type=script&lang=js&\"\nimport style0 from \"./pageShortcutBlock.vue?vue&type=style&index=0&id=59e461f3&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59e461f3\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.transformed,_vm._b({tag:\"component\"},'component',_vm.$props,false))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <!-- <div v-html=\"parseHtml\"></div> -->\r\n <component v-bind:is=\"transformed\" v-bind=\"$props\" />\r\n <!-- <dynamicHtml v-bind:is=\"transformed\" v-bind=\"parseHtml\"></dynamicHtml> -->\r\n <!-- <div><router-link to=\"/me\">Hello</router-link></div> -->\r\n</template>\r\n\r\n<script>\r\nimport apiUrl from \"../../services/api-url\";\r\n// import dynamicHtml from \"./dynamicHtml.vue\"\r\n\r\nexport default {\r\n name: \"ParagraphBlock\",\r\n props: [\"html\", \"link_colour\"],\r\n // components: {dynamicHtml},\r\n computed: {\r\n parseHtml() {\r\n // This section replaces <a> tags that reference the SPA, with vue-router compatible tags\r\n\r\n var root = document.createElement(\"div\");\r\n var el = document.createElement(\"div\");\r\n el.innerHTML = this.html;\r\n root.appendChild(el);\r\n\r\n const links = Array.from(el.getElementsByTagName(\"a\"));\r\n \r\n\r\n for (const link of links) {\r\n var href = link.getAttribute(\"href\");\r\n link.setAttribute(\"target\", \"_blank\")\r\n link.setAttribute(\"rel\", \"nofollow noopener\")\r\n \r\n if (this.link_colour){\r\n link.style.color = this.link_colour\r\n }\r\n\r\n // If the link is internal and not a PDF, create a router link element so the user routes to the URL\r\n if (href !== undefined) {\r\n if (href.startsWith(apiUrl()) && !href.endsWith('pdf')) {\r\n let url = new URL(href);\r\n var routerlink = document.createElement(\"router-link\");\r\n routerlink.setAttribute(\"to\", url.pathname);\r\n routerlink.innerText = link.innerText;\r\n link.parentNode.replaceChild(routerlink, link);\r\n }\r\n }\r\n }\r\n\r\n const embeds = Array.from(el.getElementsByTagName(\"embed\"));\r\n\r\n for (const embed of embeds) {\r\n if (embed.getAttribute(\"embedtype\") === \"image\") {\r\n var src = embed.getAttribute(\"src\");\r\n var format = embed.getAttribute(\"format\");\r\n if (src !== undefined) {\r\n var div = document.createElement(\"div\");\r\n var image = document.createElement(\"img\");\r\n div.appendChild(image);\r\n image.setAttribute(\"src\", src);\r\n image.style.maxWidth = \"100%\";\r\n if (format === \"fullwidth\") {\r\n image.style.width = \"100%\";\r\n div.className = \"text-center\";\r\n }\r\n if (format === \"left\") div.className = \"text-left\";\r\n if (format === \"right\") div.className = \"text-right\";\r\n embed.parentNode.replaceChild(div, embed);\r\n }\r\n }\r\n }\r\n\r\n for (const h2 of Array.from(el.getElementsByTagName(\"h2\"))) \r\n h2.className = \"text-h2 mb-6\"\r\n \r\n for (const h3 of Array.from(el.getElementsByTagName(\"h3\"))) \r\n h3.className = \"text-h3 mb-5\"\r\n\r\n for (const h4 of Array.from(el.getElementsByTagName(\"h4\"))) \r\n h4.className = \"text-h4 mb-4\"\r\n\r\n for (const p of Array.from(el.getElementsByTagName(\"p\"))) \r\n p.className = \"text-body-1 mb-4\"\r\n\r\n for (const li of Array.from(el.getElementsByTagName(\"li\"))) \r\n li.className = \"text-body-1 mb-4\"\r\n \r\n for (const li of Array.from(el.getElementsByTagName(\"ul\"))) \r\n li.className = \"text-body-1 mb-4\"\r\n\r\n for (const strong of Array.from(el.getElementsByTagName(\"strong\"))) \r\n strong.className = \"text-body-1 mb-4\"\r\n\r\n return root.innerHTML;\r\n },\r\n transformed() {\r\n // Magic from here: https://forum.vuejs.org/t/dynamically-compile-router-link/7410\r\n return {\r\n template: this.parseHtml,\r\n props: this.$options.props,\r\n };\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.fullwidth-img {\r\n width: 100%;\r\n}\r\n\r\n::v-deep h2 {\r\n margin-bottom: 8px;\r\n}\r\n\r\n::v-deep h3 {\r\n margin-bottom: 8px;\r\n}\r\n\r\n::v-deep h4 {\r\n margin-bottom: 8px;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./paragraphBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./paragraphBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./paragraphBlock.vue?vue&type=template&id=b42b1ee2&scoped=true&\"\nimport script from \"./paragraphBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./paragraphBlock.vue?vue&type=script&lang=js&\"\nimport style0 from \"./paragraphBlock.vue?vue&type=style&index=0&id=b42b1ee2&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b42b1ee2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.block.type === 'paragraph')?_c('ParagraphBlock',{attrs:{\"html\":_vm.block.value,\"link_colour\":_vm.linkColour}}):(_vm.block.type === 'heading')?_c('HeadingBlock',{attrs:{\"title\":_vm.block.value}}):(_vm.block.type === 'alert')?_c('AlertBlock',{attrs:{\"text\":_vm.block.value}}):(_vm.block.type === 'colored_notification')?_c('ColoredNotificationBlock',{attrs:{\"data\":_vm.block.value}}):(_vm.block.type === 'image')?_c('ImageBlock',{attrs:{\"url\":_vm.block.value.file,\"width\":_vm.block.value.width,\"height\":_vm.block.value.height}}):(_vm.block.type === 'image_link')?_c('ImageLinkBlock',{attrs:{\"url\":_vm.block.value.image.file,\"width\":_vm.block.value.image.width,\"height\":_vm.block.value.image.height,\"link_url\":_vm.block.value.link_url}}):(_vm.block.type === 'quote')?_c('QuoteBlock',{attrs:{\"text\":_vm.block.value}}):(_vm.block.type === 'document')?_c('DocumentBlock',{attrs:{\"title\":_vm.block.value.title,\"url\":_vm.block.value.file}}):(_vm.block.type === 'video')?_c('VideoBlock',{attrs:{\"url\":_vm.block.value.file,\"thumbnail\":_vm.block.value.thumbnail,\"subtitle\":_vm.block.value.subtitle}}):(_vm.block.type === 'layerFilterSlider')?_c('LayerFilterSliderBlock',{attrs:{\"sliderData\":_vm.block.value}}):(_vm.block.type === 'layerRadioGroup')?_c('LayerRadioGroupBlock',{attrs:{\"groupData\":_vm.block.value}}):(_vm.block.type === 'cardgallery')?_c('CardGalleryBlock',{attrs:{\"data\":_vm.block.value}}):(_vm.block.type === 'collection_card_gallery')?_c('CardGalleryBlock',{attrs:{\"data\":_vm.block.value[0]}}):(_vm.block.type === 'embedded_html')?_c('EmbeddedHtmlBlock',{attrs:{\"data\":_vm.block.value}}):(_vm.block.type === 'button_link_row')?_c('ButtonLinkRowBlock',{attrs:{\"data\":_vm.block.value}}):(_vm.block.type === 'one_column')?_c('OneColumnBlock',{attrs:{\"data\":_vm.block.value}}):(_vm.block.type === 'two_columns')?_c('TwoColumnBlock',{attrs:{\"data\":_vm.block.value}}):(_vm.block.type === 'three_columns')?_c('ThreeColumnBlock',{attrs:{\"data\":_vm.block.value}}):(_vm.block.type === 'four_columns')?_c('FourColumnBlock',{attrs:{\"data\":_vm.block.value}}):(_vm.block.type === 'primary_left_column')?_c('PrimaryLeftColumnBlock',{attrs:{\"data\":_vm.block.value}}):(_vm.block.type === 'primary_right_column')?_c('PrimaryRightColumnBlock',{attrs:{\"data\":_vm.block.value}}):(_vm.block.type === 'accordian')?_c('AccordianBlock',{attrs:{\"data\":_vm.block.value}}):(_vm.block.type === 'container')?_c('ContainerBlock',{attrs:{\"data\":_vm.block}}):(_vm.block.type === 'full_width_header')?_c('FullWidthHeaderBlock',{attrs:{\"headerTitle\":_vm.headerTitle,\"data\":_vm.block}}):(_vm.block.type === 'tile_button_grid')?_c('TileButtonGridBlock',{attrs:{\"data\":_vm.block.value}}):(_vm.block.type === 'selectLocation')?_c('SelectLocation',{attrs:{\"item\":_vm.block.value}}):(_vm.block.type === 'HotspotGroupSelector')?_c('SelectHotspotGroup',{attrs:{\"groupData\":_vm.block.value}}):(_vm.block.model_type === 'JourneyPlanner')?_c('JourneySelector',{attrs:{\"data\":_vm.block}}):(_vm.block.type === 'resetMap')?_c('ResetMapBlock',{attrs:{\"data\":_vm.block.value}}):(_vm.block.type === 'precinctSelector')?_c('PrecinctBlock',{attrs:{\"data\":_vm.block.value}}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-expansion-panels',{attrs:{\"variant\":\"accordion\",\"value\":_vm.groupData.open_by_default ? 0 : undefined}},[_c('v-expansion-panel',[_c('v-expansion-panel-header',[_vm._v(_vm._s(_vm.groupData.panel_title))]),_c('v-expansion-panel-content',[_c('v-container',{staticClass:\"pa-0\",attrs:{\"fluid\":\"\"}},[_c('v-radio-group',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.groupData.selected_groups.group_item_type == 'radioBtn'),expression:\"groupData.selected_groups.group_item_type == 'radioBtn'\"}],staticClass:\"mt-0\",attrs:{\"color\":\"primary\",\"mandatory\":\"\"},model:{value:(_vm.radiogroupValue),callback:function ($$v) {_vm.radiogroupValue=$$v},expression:\"radiogroupValue\"}},_vm._l((_vm.groupData.selected_groups.layers),function(item,i){return _c('v-list-item',{key:i,attrs:{\"color\":\"primary\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_c('v-radio',{attrs:{\"label\":item.title,\"value\":item.id}})],1)],1)],1)}),1),_c('v-list',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.groupData.selected_groups.group_item_type == 'checkBox'),expression:\"groupData.selected_groups.group_item_type == 'checkBox'\"}]},_vm._l((_vm.groupData.selected_groups.layers),function(item,i){return _c('v-list-item-group',{key:`layer-${i}`,staticClass:\"mt-0\",attrs:{\"color\":\"primary\"}},[_c('v-list-group',{key:`group-${i}`,attrs:{\"no-action\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c('v-list-item',[_c('v-list-item-content',[_c('v-list-item-title',{domProps:{\"textContent\":_vm._s(item.title)}})],1),_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"color\":\"secondary\",\"input-value\":_vm.checkboxGroupValue.includes(item.id)},on:{\"change\":function($event){return _vm.handleCheckboxChange(item.id, $event)},\"click\":function($event){$event.stopPropagation();}}})],1)],1)]},proxy:true}],null,true)},_vm._l((item.locations),function(item2,i2){return _c('v-list-item',{key:`item-${i}-${i2}`,on:{\"click\":function($event){return _vm.listItemClick(item2)}},model:{value:(_vm.activeListItemId),callback:function ($$v) {_vm.activeListItemId=$$v},expression:\"activeListItemId\"}},[_c('v-list-item-content',[_c('v-list-item-title',{domProps:{\"textContent\":_vm._s(item2.title)}})],1)],1)}),1)],1)}),1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-expansion-panels\r\n variant=\"accordion\"\r\n :value=\"groupData.open_by_default ? 0 : undefined\"\r\n >\r\n <v-expansion-panel>\r\n <v-expansion-panel-header>{{\r\n groupData.panel_title\r\n }}</v-expansion-panel-header>\r\n <v-expansion-panel-content>\r\n <v-container fluid class=\"pa-0\">\r\n <!--<span class=\"text-caption\">{{ groupData.title }}</span>-->\r\n <v-radio-group\r\n v-show=\"groupData.selected_groups.group_item_type == 'radioBtn'\"\r\n v-model=\"radiogroupValue\"\r\n color=\"primary\"\r\n mandatory\r\n class=\"mt-0\"\r\n >\r\n <v-list-item\r\n v-for=\"(item, i) in groupData.selected_groups.layers\"\r\n :key=\"i\"\r\n color=\"primary\"\r\n >\r\n <v-list-item-content>\r\n <v-list-item-title>\r\n <v-radio :label=\"item.title\" :value=\"item.id\"> </v-radio>\r\n </v-list-item-title>\r\n </v-list-item-content>\r\n </v-list-item>\r\n </v-radio-group>\r\n\r\n <v-list\r\n v-show=\"groupData.selected_groups.group_item_type == 'checkBox'\"\r\n >\r\n <v-list-item-group\r\n class=\"mt-0\"\r\n color=\"primary\"\r\n v-for=\"(item, i) in groupData.selected_groups.layers\"\r\n :key=\"`layer-${i}`\"\r\n >\r\n <!-- Group with Checkbox as Header and Activator -->\r\n <v-list-group no-action :key=\"`group-${i}`\">\r\n <template v-slot:activator>\r\n <v-list-item>\r\n <v-list-item-content>\r\n <v-list-item-title\r\n v-text=\"item.title\"\r\n ></v-list-item-title>\r\n </v-list-item-content>\r\n <v-list-item-action>\r\n <v-checkbox\r\n color=\"secondary\"\r\n :input-value=\"checkboxGroupValue.includes(item.id)\"\r\n @change=\"handleCheckboxChange(item.id, $event)\"\r\n @click.stop\r\n ></v-checkbox>\r\n </v-list-item-action>\r\n </v-list-item>\r\n </template>\r\n\r\n <!-- Nested List Items -->\r\n <v-list-item\r\n v-for=\"(item2, i2) in item.locations\"\r\n :key=\"`item-${i}-${i2}`\"\r\n @click=\"listItemClick(item2)\"\r\n v-model=\"activeListItemId\"\r\n >\r\n <v-list-item-content>\r\n <v-list-item-title v-text=\"item2.title\"></v-list-item-title>\r\n </v-list-item-content>\r\n </v-list-item>\r\n </v-list-group>\r\n </v-list-item-group>\r\n </v-list>\r\n </v-container>\r\n </v-expansion-panel-content>\r\n </v-expansion-panel>\r\n </v-expansion-panels>\r\n</template>\r\n\r\n<script>\r\nimport StreamfieldBlock from \"../blocks/streamfieldBlock.vue\";\r\n\r\nexport default {\r\n props: [\"groupData\"],\r\n components: {\r\n StreamfieldBlock,\r\n },\r\n data: () => ({\r\n radiogroupValue: 0,\r\n checkboxGroupValue: [],\r\n checked: false,\r\n selectedItem: 0,\r\n showStream: false,\r\n activeCheckboxes: [],\r\n activelocation: null,\r\n activeListItemId: null,\r\n }),\r\n mounted() {\r\n console.log(this.groupData, \"TRACK grouped data\");\r\n },\r\n beforeCreate: function () {\r\n this.$options.components.StreamfieldBlock =\r\n require(\"../blocks/streamfieldBlock.vue\").default;\r\n },\r\n methods: {\r\n updateStore: function (HotspotGroupID) {\r\n console.log('[SELECT GROUP UPDATE STORE]')\r\n const activeLayerGroup = [this.radiogroupValue];\r\n this.$store.commit(\"wagtail/setVisibleHotspotGroups\", activeLayerGroup);\r\n },\r\n updateStoreCheckbox: function (HotspotGroupIDs) {\r\n console.log('[SELECT UPDATE STORE CHECK]')\r\n this.$store.commit(\r\n \"wagtail/setVisibleHotspotGroups\",\r\n this.activeCheckboxes\r\n );\r\n },\r\n checkboxClick(item) {\r\n // Logic to handle checkbox click\r\n },\r\n listItemClick(item) {\r\n const center = [Number(item.lng), Number(item.lat)];\r\n /* FIX ZOOM to use new zoom field not magic number*/\r\n let zoom = Number(0)\r\n if (item.zoom != null) {\r\n zoom = Number(item.zoom);\r\n } else {\r\n zoom = Number(18);\r\n }\r\n console.log('SCROLL', zoom, item.zoom )\r\n const payload = {\r\n zoomLevel: zoom,\r\n location: {\r\n lng: item.lng,\r\n lat: item.lat,\r\n },\r\n tilt_offset: 0,\r\n heading: 0,\r\n };\r\n\r\n this.activeListItemId = item.id;\r\n\r\n if (item.right_sidebar_content.length > 0) {\r\n console.log(item, \"item data of clicked\");\r\n this.$store.commit(\"map/setGroupLocation\", item);\r\n this.$store.commit(\"map/setRightSidebarZoomLevel\", item.zoom);\r\n this.$store.commit(\"map/setRenderLocation\", null);\r\n this.$store.commit(\"map/setPrecinct\", null);\r\n }\r\n this.$store.commit(\"map/setHotspotGroupSelectedLocation\", payload);\r\n\r\n // Logic to handle list item click\r\n },\r\n handleCheckboxChange(itemId, isChecked) {\r\n if (isChecked && !this.checkboxGroupValue.includes(itemId)) {\r\n this.checkboxGroupValue.push(itemId);\r\n console.log(\"TRACK Updating\", itemId, \"is checked\");\r\n } else if (!isChecked && this.checkboxGroupValue.includes(itemId)) {\r\n this.checkboxGroupValue = this.checkboxGroupValue.filter(\r\n (id) => id !== itemId\r\n );\r\n console.log(\"TRACK Updating\", itemId, \"is not checked\");\r\n }\r\n },\r\n },\r\n created() {\r\n let self = this;\r\n\r\n this.checkboxGroupValue = this.groupData.selected_groups.layers\r\n .filter((layer) => layer.visible_by_default)\r\n .map((layer) => layer.id);\r\n\r\n this.showStream = true;\r\n //Ensure the first filter is applied at load\r\n //this.updateStore(this.radiogroupValue);\r\n this.updateStoreCheckbox(this.checkboxGroupValue);\r\n },\r\n computed: {\r\n hotspotGroupSelectedLocation() {\r\n return this.$store.state.map.hotspotGroupSelectedLocation;\r\n },\r\n layerOptions() {\r\n return this.$store.state.wagtail.layerOptions;\r\n },\r\n // tickLabels: function() {\r\n // let labels = []\r\n // this.sliderData.forEach( function(item) {\r\n // labels.push(item.step)\r\n // })\r\n // return labels\r\n // }\r\n //Edit Here\r\n // isStreamfieldAvailable(){\r\n // this.groupData.layers.forEach(function (item, i) {\r\n // if (item.additional_detail == undefined || null) return true;\r\n // return false\r\n // });\r\n // }\r\n },\r\n watch: {\r\n hotspotGroupSelectedLocation: function (value) {\r\n console.log('[SELECT GROUP CHANGE SELECT]', value)\r\n if (value == null) {\r\n this.activeListItemId = null;\r\n }\r\n },\r\n radiogroupValue: {\r\n handler(newVal) {\r\n console.log('[SELECT GROUP RGV]', newVal)\r\n //this.updateStore(newVal);\r\n },\r\n deep: true,\r\n },\r\n data: function (newVal) {\r\n console.log('[SELECT GROUP datastore]', newVal) \r\n },\r\n checkboxGroupValue: {\r\n handler(newVal) {\r\n console.log('[SELECT GROUP CHECKGROUPVALUE]', newVal) \r\n this.activeCheckboxes = [...newVal]; // Update the array with the current active checkboxes\r\n this.updateStoreCheckbox(this.activeCheckboxes);\r\n },\r\n deep: true, // Use deep watcher to detect changes inside the array\r\n },\r\n },\r\n beforeDestroy() {\r\n let payload = { key: this._uid, data: null };\r\n this.$store.commit(\"wagtail/setLayerOptions\", payload);\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.radio-bg {\r\n background-color: rgb(229, 229, 229);\r\n}\r\n.subheader-checkbox {\r\n /* Adjust these styles as needed */\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./selectHotspotGroup.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./selectHotspotGroup.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./selectHotspotGroup.vue?vue&type=template&id=3c3e3668&scoped=true&\"\nimport script from \"./selectHotspotGroup.vue?vue&type=script&lang=js&\"\nexport * from \"./selectHotspotGroup.vue?vue&type=script&lang=js&\"\nimport style0 from \"./selectHotspotGroup.vue?vue&type=style&index=0&id=3c3e3668&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3c3e3668\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-expansion-panels',{attrs:{\"variant\":\"accordion\",\"value\":_vm.item.open_by_default ? 0 : undefined}},[_c('v-expansion-panel',[_c('v-expansion-panel-header',[_vm._v(_vm._s(_vm.item.panel_title))]),_c('v-expansion-panel-content',[_c('v-container',{staticClass:\"pa-0\",attrs:{\"fluid\":\"\"}},[_c('span',{staticClass:\"text-caption\"},[_vm._v(_vm._s(_vm.item.title))]),_c('v-select',{attrs:{\"hide-details\":\"\",\"items\":_vm.item.selected_location,\"item-text\":\"title\",\"return-object\":\"\"},model:{value:(_vm.location),callback:function ($$v) {_vm.location=$$v},expression:\"location\"}}),_c('v-btn',{attrs:{\"text\":\"\",\"x-small\":\"\"},on:{\"click\":function($event){_vm.location = null}}},[_vm._v(\"Reset\")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-expansion-panels variant=\"accordion\" :value=\"item.open_by_default ? 0 : undefined\">\r\n <v-expansion-panel>\r\n <v-expansion-panel-header>{{ item.panel_title }}</v-expansion-panel-header>\r\n <v-expansion-panel-content>\r\n <v-container fluid class=\"pa-0\">\r\n <span class=\"text-caption\">{{ item.title }}</span>\r\n <v-select\r\n v-model=\"location\"\r\n hide-details\r\n :items=\"item.selected_location\"\r\n item-text=\"title\"\r\n return-object\r\n >\r\n </v-select>\r\n <v-btn text x-small @click=\"location = null\">Reset</v-btn>\r\n </v-container>\r\n </v-expansion-panel-content>\r\n </v-expansion-panel>\r\n </v-expansion-panels>\r\n\r\n\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n props: [\"item\"],\r\n data() {\r\n return {\r\n location: null,\r\n layersID: null,\r\n layersData: null,\r\n };\r\n },\r\n computed: {\r\n selectLocation() {\r\n return this.pageData.description.find(\r\n (item) => item.type === \"selectLocation\"\r\n );\r\n },\r\n currentPage() {\r\n return this.$store.state.wagtail.currentPage;\r\n },\r\n resetLocation () {\r\n return this.$store.state.map.resetLocation;\r\n },\r\n },\r\n watch: {\r\n resetLocation (value) {\r\n if (value) {\r\n this.location = null\r\n this.$store.commit('map/setResetLocation', false)\r\n }\r\n },\r\n location() {\r\n this.$store.commit(\"map/setSelectedLocation\", this.location);\r\n console.log(\"TRACK\", this.location)\r\n if (this.location != null) {\r\n let layerOptionsData = {};\r\n layerOptionsData[this.location.layers[0].layer_name] = true;\r\n let payload = { key: this._uid, data: layerOptionsData };\r\n this.layersData = layerOptionsData;\r\n this.layersID = this._uid;\r\n console.log(\"LOCATION payloadJS\", payload);\r\n this.$store.commit(\"wagtail/setLayerOptions\", payload);\r\n } else {\r\n // Invert the layerOptionsData values\r\n let invertedLayerOptionsData = {};\r\n Object.keys(this.layersData).forEach((key) => {\r\n invertedLayerOptionsData[key] = !this.layersData[key];\r\n });\r\n\r\n let payload = { key: this.layersID, data: invertedLayerOptionsData };\r\n console.log(\"Inverted LOCATION payloadJS\", payload);\r\n this.$store.commit(\"wagtail/setLayerOptions\", payload);\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style></style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./selectLocation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./selectLocation.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./selectLocation.vue?vue&type=template&id=7efc4caa&\"\nimport script from \"./selectLocation.vue?vue&type=script&lang=js&\"\nexport * from \"./selectLocation.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-alert',{staticClass:\"ml-0 mr-0\",attrs:{\"border\":\"left\",\"type\":\"info\",\"text\":\"\",\"color\":\"secondary\"}},[_c('ParagraphBlock',{attrs:{\"html\":_vm.text.content}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <v-alert\r\n border=\"left\"\r\n class=\"ml-0 mr-0\"\r\n type=\"info\"\r\n text\r\n color=\"secondary\"\r\n ><ParagraphBlock :html=\"text.content\"></ParagraphBlock></v-alert\r\n >\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\nimport ParagraphBlock from \"./paragraphBlock.vue\"\r\n\r\nexport default {\r\n name: \"AlertBlock\",\r\n props: [\"text\"],\r\n components: {ParagraphBlock}\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./alertBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./alertBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./alertBlock.vue?vue&type=template&id=7d14fed5&scoped=true&\"\nimport script from \"./alertBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./alertBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7d14fed5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"text-h4\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div class=\"text-h4\">\r\n {{title}}\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"HeadingBlock\",\r\n props: ['title']\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./headingBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./headingBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./headingBlock.vue?vue&type=template&id=45cf8e84&scoped=true&\"\nimport script from \"./headingBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./headingBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"45cf8e84\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"justify\":\"center\"}},[_c('v-img',{attrs:{\"src\":_vm.url,\"max-height\":_vm.height,\"contain\":\"\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div justify=\"center\">\r\n <v-img :src=\"url\" :max-height=\"height\" contain></v-img>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"ImageBlock\",\r\n props: ['url', 'width', 'height']\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./imageBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./imageBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./imageBlock.vue?vue&type=template&id=edcc6aba&scoped=true&\"\nimport script from \"./imageBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./imageBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"edcc6aba\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"justify\":\"center\"}},[_c('a',{attrs:{\"href\":_vm.link_url}},[_c('v-img',{attrs:{\"href\":_vm.link_url,\"src\":_vm.url,\"max-height\":_vm.height,\"contain\":\"\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div justify=\"center\">\r\n <a :href=\"link_url\">\r\n <v-img :href=\"link_url\" :src=\"url\" :max-height=\"height\" contain></v-img>\r\n </a>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"ImageLinkBlock\",\r\n props: ['url', 'width', 'height', 'link_url'],\r\n};\r\n\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./imageLinkBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./imageLinkBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./imageLinkBlock.vue?vue&type=template&id=aab0dda0&scoped=true&\"\nimport script from \"./imageLinkBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./imageLinkBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"aab0dda0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('blockquote',{staticClass:\"blockquote\"},[_vm._v(_vm._s(_vm.text))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <blockquote class=\"blockquote\">{{ text }}</blockquote>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"QuoteBlock\",\r\n props: [\"text\"],\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./quoteBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./quoteBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./quoteBlock.vue?vue&type=template&id=65047d46&scoped=true&\"\nimport script from \"./quoteBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./quoteBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"65047d46\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-btn',{staticClass:\"display: inline-block mb-0 lightbox-btn\",attrs:{\"maxWidth\":200,\"block\":\"\",\"large\":\"\",\"color\":\"secondary\",\"dark\":\"\"},on:{\"click\":_vm.downloadFile}},[_c('span',{staticClass:\"cols-12 span-label d-inline-block text-truncate\"},[_c('span',[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-download\")]),_vm._v(_vm._s(_vm.title))],1)])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <v-btn :maxWidth=\"200\" class=\" display: inline-block mb-0 lightbox-btn\" block large color=\"secondary\" dark @click=\"downloadFile\">\r\n <span class = \"cols-12 span-label d-inline-block text-truncate\"> <span> <v-icon left>mdi-download</v-icon>{{title}}</span></span>\r\n </v-btn>\r\n </div>\r\n \r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"DocumentBlock\",\r\n props: [\"title\", \"url\"],\r\n methods: {\r\n downloadFile() {\r\n window.open(this.url)\r\n }\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n::v-deep .v-btn__content{\r\n max-width:100%\r\n}\r\n/* @media only screen and (max-width: 345px) {\r\n .span-label{\r\n max-width: 40% !important;\r\n }\r\n}\r\n\r\n@media only screen and (min-width:345px) and (max-width: 600px) {\r\n .span-label{\r\n max-width: 70% !important;\r\n }\r\n}\r\n\r\n@media only screen and (min-width:600px) and (max-width: 960px) {\r\n .span-label{\r\n max-width: 100% !important;\r\n }\r\n} */\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./documentBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./documentBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./documentBlock.vue?vue&type=template&id=0729aef0&scoped=true&\"\nimport script from \"./documentBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./documentBlock.vue?vue&type=script&lang=js&\"\nimport style0 from \"./documentBlock.vue?vue&type=style&index=0&id=0729aef0&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0729aef0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-row',{attrs:{\"justify\":\"center\"}},[_c('video',{staticClass:\"video\",attrs:{\"controls\":\"\",\"disablepictureinpicture\":\"\",\"width\":\"100%\",\"poster\":_vm.thumbnail,\"crossorigin\":\"anonymous\"}},[_c('source',{attrs:{\"src\":_vm.url,\"type\":\"video/mp4\"}}),_c('track',{attrs:{\"label\":\"English\",\"kind\":\"subtitles\",\"srclang\":\"en\",\"src\":_vm.subtitle,\"default\":\"\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-row justify=\"center\">\r\n <video class=\"video\" controls disablepictureinpicture width=\"100%\" :poster=\"thumbnail\" crossorigin=\"anonymous\">\r\n <source :src=\"url\" type=\"video/mp4\" />\r\n <track\r\n label=\"English\"\r\n kind=\"subtitles\"\r\n srclang=\"en\"\r\n :src=\"subtitle\"\r\n default />\r\n </video>\r\n </v-row>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"ImageBlock\",\r\n props: ['url', 'width', 'height', 'thumbnail', 'subtitle'],\r\n mounted(){\r\n var video = document.querySelector('.video'); // get the video element\r\n var tracks = video.textTracks; // one for each track element\r\n var track = tracks[0]; // corresponds to the first track element\r\n track.mode = 'hidden';\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./videoBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./videoBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./videoBlock.vue?vue&type=template&id=6d66340e&scoped=true&\"\nimport script from \"./videoBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./videoBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d66340e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-slider',{attrs:{\"tick-labels\":_vm.tickLabels,\"min\":\"0\",\"max\":_vm.tickLabels.length-1,\"tick-size\":\"4\",\"color\":\"secondary\"},model:{value:(_vm.sliderValue),callback:function ($$v) {_vm.sliderValue=$$v},expression:\"sliderValue\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <v-slider :tick-labels=\"tickLabels\" min=0 :max=\"tickLabels.length-1\" tick-size=\"4\" v-model=\"sliderValue\" color=\"secondary\"></v-slider>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"ImageBlock\",\r\n props: ['sliderData'],\r\n data: () => ({\r\n sliderValue: 0\r\n }),\r\n created() {\r\n //Ensure the first filter is applied at load\r\n let filter = this.sliderData[this.sliderValue].where\r\n this.$store.commit('map/setLayerFilter', {where: filter})\r\n },\r\n computed: {\r\n tickLabels: function() {\r\n let labels = []\r\n this.sliderData.forEach( function(item) {\r\n labels.push(item.step)\r\n })\r\n return labels\r\n }\r\n },\r\n watch: {\r\n sliderValue: function(newValue) {\r\n //TODO: This filtering should check out if this layer actually has the fields being filtered to prevent warnings\r\n let filter = this.sliderData[newValue].where\r\n this.$store.commit('map/setLayerFilter', {where: filter})\r\n }\r\n },\r\n beforeDestroy() {\r\n this.$store.commit('map/setLayerFilter', null)\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./layerFilterSliderBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./layerFilterSliderBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./layerFilterSliderBlock.vue?vue&type=template&id=bc29126c&scoped=true&\"\nimport script from \"./layerFilterSliderBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./layerFilterSliderBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bc29126c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-card',[(_vm.groupData.title !== '')?_c('v-card-title',{staticClass:\"text-subtitle-1\"},[_vm._v(\" \"+_vm._s(_vm.groupData.title)+\" \")]):_vm._e(),(_vm.groupData.subtitle !== '')?_c('v-card-subtitle',{staticClass:\"text-subtitle-2\"},[_vm._v(\" \"+_vm._s(_vm.groupData.subtitle)+\" \")]):_vm._e(),_c('v-radio-group',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.groupData.group_item_type == 'radioBtn'),expression:\"groupData.group_item_type == 'radioBtn'\"}],staticClass:\"mt-0\",attrs:{\"color\":\"primary\",\"mandatory\":\"\"},model:{value:(_vm.groupValue),callback:function ($$v) {_vm.groupValue=$$v},expression:\"groupValue\"}},_vm._l((_vm.groupData.layers),function(item,i){return _c('v-list-item',{key:i,attrs:{\"color\":\"primary\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_c('v-radio',{attrs:{\"label\":item.nice_name,\"value\":i}})],1),_vm._l((item.additional_detail),function(block,blockIndex){return _c('StreamfieldBlock',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.groupValue == i),expression:\"groupValue == i\"}],key:blockIndex,attrs:{\"id\":i,\"block\":block}})})],2)],1)}),1),_c('v-list',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.groupData.group_item_type == 'checkBox'),expression:\"groupData.group_item_type == 'checkBox'\"}]},[_c('v-list-item-group',{staticClass:\"mt-0\",attrs:{\"multiple\":\"\",\"color\":\"primary\"},on:{\"change\":_vm.updateStoreCheckbox},model:{value:(_vm.checkboxGroupValue),callback:function ($$v) {_vm.checkboxGroupValue=$$v},expression:\"checkboxGroupValue\"}},_vm._l((_vm.groupData.layers),function(item,i){return _c('v-list-item',{key:i,attrs:{\"value\":item.layer_name},scopedSlots:_vm._u([{key:\"default\",fn:function({ active }){return [_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"input-value\":active,\"color\":\"secondary\"}})],1),_c('v-list-item-content',[_c('v-list-item-title',{domProps:{\"textContent\":_vm._s(item.nice_name)}}),_vm._l((item.additional_detail),function(block,blockIndex){return _c('StreamfieldBlock',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.checkboxGroupValue.includes(item.layer_name)),expression:\"checkboxGroupValue.includes(item.layer_name)\"}],key:blockIndex,attrs:{\"id\":i,\"block\":block}})})],2)]}}],null,true)})}),1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <v-card>\r\n <v-card-title class=\"text-subtitle-1\" v-if=\"groupData.title !== ''\">\r\n {{ groupData.title }}\r\n </v-card-title>\r\n <v-card-subtitle class=\"text-subtitle-2\" v-if=\"groupData.subtitle !== ''\">\r\n {{ groupData.subtitle }}\r\n </v-card-subtitle>\r\n <v-radio-group\r\n v-show=\"groupData.group_item_type == 'radioBtn'\"\r\n v-model=\"groupValue\"\r\n color=\"primary\"\r\n mandatory\r\n class=\"mt-0\"\r\n >\r\n <v-list-item\r\n v-for=\"(item, i) in groupData.layers\"\r\n :key=\"i\"\r\n color=\"primary\"\r\n >\r\n <v-list-item-content>\r\n <v-list-item-title>\r\n <v-radio :label=\"item.nice_name\" :value=\"i\"> </v-radio>\r\n </v-list-item-title>\r\n\r\n <StreamfieldBlock\r\n v-for=\"(block, blockIndex) in item.additional_detail\"\r\n v-show=\"groupValue == i\"\r\n :id=\"i\"\r\n :key=\"blockIndex\"\r\n :block=\"block\"\r\n ></StreamfieldBlock>\r\n <!-- <v-list-item-subtitle v-text=\"item.nice_name\" class=\"ml-8\"></v-list-item-subtitle> -->\r\n </v-list-item-content>\r\n </v-list-item>\r\n </v-radio-group>\r\n\r\n <v-list v-show=\"groupData.group_item_type == 'checkBox'\">\r\n <v-list-item-group\r\n multiple\r\n v-model=\"checkboxGroupValue\"\r\n class=\"mt-0\"\r\n color=\"primary\"\r\n @change=\"updateStoreCheckbox\"\r\n >\r\n <v-list-item\r\n v-for=\"(item, i) in groupData.layers\"\r\n :value=\"item.layer_name\"\r\n :key=\"i\"\r\n >\r\n <template v-slot:default=\"{ active }\">\r\n <v-list-item-action>\r\n <v-checkbox\r\n :input-value=\"active\"\r\n color=\"secondary\"\r\n ></v-checkbox>\r\n </v-list-item-action>\r\n <v-list-item-content>\r\n <v-list-item-title v-text=\"item.nice_name\"></v-list-item-title>\r\n <StreamfieldBlock\r\n v-for=\"(block, blockIndex) in item.additional_detail\"\r\n v-show=\"checkboxGroupValue.includes(item.layer_name)\"\r\n :id=\"i\"\r\n :key=\"blockIndex\"\r\n :block=\"block\"\r\n ></StreamfieldBlock>\r\n </v-list-item-content>\r\n </template>\r\n </v-list-item>\r\n </v-list-item-group>\r\n </v-list>\r\n </v-card>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport StreamfieldBlock from \"../blocks/streamfieldBlock.vue\";\r\n\r\nexport default {\r\n name: \"ImageBlock\",\r\n props: [\"groupData\"],\r\n components: {\r\n StreamfieldBlock,\r\n },\r\n data: () => ({\r\n groupValue: 0,\r\n checkboxGroupValue: [],\r\n checked: false,\r\n selectedItem: 0,\r\n showStream: false,\r\n selectedLayers: {}\r\n }),\r\n mounted() {\r\n console.log(this.groupData, \"grouped data\");\r\n },\r\n beforeCreate: function () {\r\n this.$options.components.StreamfieldBlock =\r\n require(\"../blocks/streamfieldBlock.vue\").default;\r\n },\r\n methods: {\r\n updateStore: function (visibleLayerIndex) {\r\n let layerOptionsData = {};\r\n\r\n // Iterate through the options on this group and set layer visibility\r\n this.groupData.layers.forEach(function (item, i) {\r\n let visible = i === visibleLayerIndex;\r\n let layers = item.layer_name.split(\",\");\r\n\r\n layers.forEach(function (layer) {\r\n if (visible) layerOptionsData[layer] = true;\r\n //Make layers that belong to the active radio button visible\r\n else if (!(layer in layerOptionsData))\r\n layerOptionsData[layer] = false; //Only set the layer to be invisible if its not already being set visible\r\n });\r\n });\r\n\r\n let payload = { key: this._uid, data: layerOptionsData };\r\n console.log(\"payloadRadio\", payload);\r\n\r\n this.$store.commit(\"wagtail/setLayerOptions\", payload);\r\n },\r\n\r\n updateStoreCheckbox: function (visibleLayerIndex) {\r\n // Object.keys(this.selectedLayers).forEach(item => {\r\n // this.selectedLayers[item] = visibleLayerIndex.forEach(item => item.split('|').some(_layer => _layer === item))\r\n // })\r\n Object.keys(this.selectedLayers).forEach(item => {\r\n this.selectedLayers[item] = false\r\n })\r\n\r\n visibleLayerIndex.forEach(layer => {\r\n\r\n const layers = layer.split(',')\r\n\r\n layers.forEach(item => {\r\n this.selectedLayers[item] = true\r\n })\r\n })\r\n\r\n // let payload = { key: this._uid, data: {\r\n // '3m shared user path': true,\r\n // '4m wide shared user path': true,\r\n // 'Indicative culvert works': true,\r\n // 'Indicative culvert works LEGEND': true,\r\n // 'Line marking': true,\r\n // 'New bridge': true,\r\n // 'Pavement': true,\r\n // 'Pavement LEGEND': true,\r\n // } };\r\n let payload = { key: this._uid, data: this.selectedLayers };\r\n\r\n console.log(\"payloadCheckbox\", payload, visibleLayerIndex, this.selectedLayers);\r\n this.$store.commit(\"wagtail/setLayerOptions\", payload);\r\n },\r\n },\r\n created() {\r\n let self = this;\r\n\r\n this.groupData.layers.forEach(function (item, i) {\r\n if (item.active === true) self.groupValue = i;\r\n });\r\n\r\n this.groupData.layers.forEach(function (item) {\r\n if (item.active === true) self.checkboxGroupValue.push(item.layer_name);\r\n });\r\n\r\n this.selectedLayers = this.groupData.layers.reduce(function (prev, item) {\r\n let layers = item.layer_name.split(\",\");\r\n layers.forEach(function (layer) {\r\n prev[layer] = false; //Add the layer along with its appropriate visibility\r\n });\r\n return prev\r\n }, {});\r\n\r\n this.showStream = true;\r\n //Ensure the first filter is applied at load\r\n this.updateStore(this.groupValue);\r\n this.updateStoreCheckbox(this.checkboxGroupValue);\r\n },\r\n computed: {\r\n layerOptions() {\r\n return this.$store.state.wagtail.layerOptions;\r\n },\r\n // tickLabels: function() {\r\n // let labels = []\r\n // this.sliderData.forEach( function(item) {\r\n // labels.push(item.step)\r\n // })\r\n // return labels\r\n // }\r\n //Edit Here\r\n // isStreamfieldAvailable(){\r\n // this.groupData.layers.forEach(function (item, i) {\r\n // if (item.additional_detail == undefined || null) return true;\r\n // return false\r\n // });\r\n // }\r\n },\r\n watch: {\r\n layerOptions: {\r\n handler(newVal, oldVal) {\r\n // React to changes in layerOptions here\r\n console.log(\"L OPTIONS changed:\", newVal);\r\n if (this.groupData.group_item_type === \"radioBtn\") {\r\n // Update groupValue for radio buttons\r\n for (let i = 0; i < this.groupData.layers.length; i++) {\r\n let layerName = this.groupData.layers[i].layer_name;\r\n if (newVal[this._uid] && newVal[this._uid][layerName]) {\r\n if (this.groupValue !== i) {\r\n this.groupValue = i;\r\n break;\r\n }\r\n }\r\n }\r\n } else if (this.groupData.group_item_type === \"checkBox\") {\r\n // Update checkboxGroupValue for checkboxes\r\n let newCheckboxValues = [];\r\n this.groupData.layers.forEach((layer) => {\r\n if (newVal[this._uid] && newVal[this._uid][layer.layer_name]) {\r\n newCheckboxValues.push(layer.layer_name);\r\n }\r\n });\r\n if (\r\n JSON.stringify(this.checkboxGroupValue) !==\r\n JSON.stringify(newCheckboxValues)\r\n ) {\r\n // this.checkboxGroupValue = newCheckboxValues;\r\n }\r\n }\r\n },\r\n deep: true,\r\n },\r\n groupValue: function (newValue) {\r\n this.updateStore(newValue);\r\n },\r\n data: function (newVal) {\r\n console.log(newVal, \"datastore\");\r\n },\r\n // checkboxGroupValue: function (newValue) {\r\n // this.updateStoreCheckbox(newValue);\r\n // },\r\n },\r\n beforeDestroy() {\r\n let payload = { key: this._uid, data: null };\r\n this.$store.commit(\"wagtail/setLayerOptions\", payload);\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.radio-bg {\r\n background-color: rgb(229, 229, 229);\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./layerRadioGroupBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./layerRadioGroupBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./layerRadioGroupBlock.vue?vue&type=template&id=3b4d2fcd&scoped=true&\"\nimport script from \"./layerRadioGroupBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./layerRadioGroupBlock.vue?vue&type=script&lang=js&\"\nimport style0 from \"./layerRadioGroupBlock.vue?vue&type=style&index=0&id=3b4d2fcd&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3b4d2fcd\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"divWidth\"},[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"dense\":\"\"}},_vm._l((_vm.data.gallery_items),function(card,i){return _c('v-col',{key:card.id,staticClass:\"pa-6 d-flex\",attrs:{\"cols\":_vm.colsBreakpoint},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;$event.preventDefault();return _vm.openGallery(i, card)}}},[_c('CardGalleryBlockCard',{attrs:{\"data\":card,\"cardHeight\":_vm.minCardHeight},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;$event.preventDefault();return _vm.testFunc()},\"click\":function($event){return _vm.openGallery(i, card)}}})],1)}),1)],1),(_vm.showGallery)?_c('div',{staticClass:\"child-lightbox-container\"},[_c('v-scale-transition',{attrs:{\"origin\":\"center center\"}},[_c('LightboxGallery',{attrs:{\"content\":_vm.contentData,\"startIndex\":_vm.startIndex,\"showLightbox\":_vm.showGallery},on:{\"closed\":function($event){return _vm.closeGallery()}}})],1)],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-hover',{scopedSlots:_vm._u([{key:\"default\",fn:function({ hover }){return [(_vm.data.type !== 'external_link' && _vm.data.type !== 'internal_page_link')?_c('v-card',{staticClass:\"mx-auto transition-swing\",class:`elevation-${hover ? 12 : 2}`,attrs:{\"min-height\":_vm.cardHeight},on:{\"click\":function($event){return _vm.$emit('click')}}},[_c('v-img',{staticClass:\"img-cardgallery\",attrs:{\"src\":_vm.thumbnail}},[_c('v-icon',{staticClass:\"pa-2 text--shadow\",attrs:{\"color\":\"white\"}},[_vm._v(_vm._s(_vm.icon))])],1),_c('v-card-title',{staticClass:\"pa-4\"},[_c('div',{staticClass:\"header-class subtitle-2\"},[_vm._v(_vm._s(_vm.title))])]),(_vm.caption !== '')?_c('v-card-text',[_vm._v(_vm._s(_vm.caption))]):_vm._e(),(_vm.accessibility_text !== '')?_c('v-card-text',[_vm._v(_vm._s(_vm.accessibility_text))]):_vm._e()],1):(_vm.data.type == 'external_link' || _vm.data.type == 'internal_page_link' )?_c('v-card',{staticClass:\"mx-auto transition-swing\",class:`elevation-${hover ? 12 : 2}`,attrs:{\"id\":\"test-cards\",\"min-height\":_vm.cardHeight,\"href\":_vm.url}},[_c('v-img',{staticClass:\"img-cardgallery\",attrs:{\"src\":_vm.thumbnail}},[_c('v-icon',{staticClass:\"pa-2 text--shadow\",attrs:{\"color\":\"white\"}},[_vm._v(_vm._s(_vm.icon))])],1),_c('v-card-title',{staticClass:\"pa-4\"},[_c('div',{staticClass:\"header-class subtitle-2\"},[_vm._v(_vm._s(_vm.title))])]),(_vm.caption !== '')?_c('v-card-text',[_vm._v(_vm._s(_vm.caption))]):_vm._e(),(_vm.accessibility_text !== '')?_c('v-card-text',[_vm._v(_vm._s(_vm.accessibility_text))]):_vm._e()],1):_vm._e()]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-hover v-slot:default=\"{ hover }\">\r\n <v-card\r\n v-if=\"data.type !== 'external_link' && data.type !== 'internal_page_link'\"\r\n :class=\"`elevation-${hover ? 12 : 2}`\"\r\n class=\"mx-auto transition-swing\"\r\n :min-height=\"cardHeight\"\r\n\r\n @click=\"$emit('click')\"\r\n >\r\n \r\n <v-img\r\n :src=\"thumbnail\"\r\n class=\"img-cardgallery\"\r\n >\r\n <v-icon color=\"white\" class=\"pa-2 text--shadow\">{{icon}}</v-icon>\r\n </v-img>\r\n <v-card-title class=\"pa-4\"><div class=\"header-class subtitle-2\">{{ title }}</div></v-card-title>\r\n <v-card-text v-if=\"caption !== ''\">{{ caption }}</v-card-text>\r\n <v-card-text v-if=\"accessibility_text !== ''\">{{accessibility_text}}</v-card-text>\r\n\r\n </v-card>\r\n <v-card\r\n v-else-if=\"data.type == 'external_link' || data.type == 'internal_page_link' \"\r\n :class=\"`elevation-${hover ? 12 : 2}`\"\r\n id=\"test-cards\"\r\n :min-height=\"cardHeight\"\r\n class=\"mx-auto transition-swing\"\r\n :href=\"url\"\r\n >\r\n <v-img\r\n :src=\"thumbnail\"\r\n class=\"img-cardgallery\"\r\n >\r\n <v-icon color=\"white\" class=\"pa-2 text--shadow\">{{icon}}</v-icon>\r\n </v-img>\r\n <v-card-title class=\"pa-4\"><div class=\"header-class subtitle-2\">{{ title }}</div></v-card-title>\r\n <v-card-text v-if=\"caption !== ''\">{{ caption }}</v-card-text>\r\n <v-card-text v-if=\"accessibility_text !== ''\">{{accessibility_text}}</v-card-text>\r\n </v-card>\r\n </v-hover>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"CardGalleryBlockCard\",\r\n props: [\"data\", \"cardHeight\"],\r\n data: () => ({\r\n thumbnail: null\r\n }),\r\n mounted(){\r\n\r\n // Thumbnail\r\n if (this.data.type === 'page_struct') {\r\n this.$store.dispatch('wagtail/getPageById', this.data.value.page.id).then((data) => {\r\n this.thumbnail = data.thumbnail[0].value.file\r\n })\r\n } else if (this.data.value.thumbnail || this.data.type == 'beforeafter') {\r\n if (this.data.type == \"beforeafter\") {\r\n this.thumbnail = this.data.value.after.file;\r\n }\r\n else if (this.data.value.thumbnail.thumbnail && !this.data.value.thumbnail.full_image) {\r\n this.thumbnail = this.data.value.thumbnail.thumbnail\r\n }\r\n else if (this.data.value.thumbnail.thumbnail && this.data.value.thumbnail.full_image) {\r\n this.thumbnail = this.data.value.thumbnail.file\r\n } else {\r\n this.thumbnail = this.data.value.thumbnail\r\n }\r\n } else {\r\n this.thumbnail = \"/pdf-image.png\";\r\n }\r\n\r\n },\r\n\r\n computed: {\r\n url() {\r\n if (this.data.type === \"external_link\") {\r\n return this.data.value.url;\r\n } else if (this.data.type === \"internal_page_link\") {\r\n let path = new URL(this.data.value.page.meta.html_url).pathname\r\n return path;\r\n }\r\n },\r\n\r\n icon() {\r\n if (this.data.type === 'document')\r\n return 'mdi-file-document'\r\n if (this.data.type === 'image')\r\n return 'mdi-image'\r\n if (this.data.type === 'video')\r\n return 'mdi-youtube'\r\n if (this.data.type === 'beforeafter')\r\n return 'mdi-compare'\r\n return ''\r\n },\r\n title() {\r\n if (this.data.value.title)\r\n return this.data.value.title\r\n if (this.data.value.page.title)\r\n return this.data.value.page.title\r\n return \"\"\r\n },\r\n caption() {\r\n if (this.data.value.caption)\r\n return this.data.value.caption\r\n return \"\"\r\n },\r\n accessibility_text() {\r\n if (this.data.value.accessibility_text)\r\n return this.data.value.accessibility_text\r\n return \"\"\r\n }\r\n\r\n },\r\n methods:{\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.document-bg {\r\n background-color:lightgrey;\r\n}\r\n\r\n.text--shadow {\r\n text-shadow: 1px 2px 5px black;\r\n opacity: 0.75;\r\n}\r\n\r\n.header-class{\r\n white-space: nowrap ;\r\n word-break: normal;\r\n overflow: hidden ;\r\n text-overflow: ellipsis;\r\n}\r\n\r\n.img-cardgallery{\r\n transition: transform 0.3s ease-in-out;\r\n transform: scale(0.97);\r\n}\r\n\r\n.img-cardgallery:hover {\r\n transform: scale(1.0);\r\n}\r\n\r\n\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./cardGalleryBlockCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./cardGalleryBlockCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cardGalleryBlockCard.vue?vue&type=template&id=d9098268&scoped=true&\"\nimport script from \"./cardGalleryBlockCard.vue?vue&type=script&lang=js&\"\nexport * from \"./cardGalleryBlockCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./cardGalleryBlockCard.vue?vue&type=style&index=0&id=d9098268&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d9098268\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div ref=\"divWidth\">\r\n <v-container fluid>\r\n <v-row dense>\r\n <v-col\r\n @keydown.enter.exact.prevent=\"openGallery(i, card)\"\r\n v-for=\"(card, i) in data.gallery_items\"\r\n :key=\"card.id\"\r\n :cols=\"colsBreakpoint\"\r\n class=\"pa-6 d-flex\"\r\n >\r\n <CardGalleryBlockCard\r\n :data=\"card\"\r\n :cardHeight=\"minCardHeight\"\r\n @keydown.enter.exact.prevent=\"testFunc()\"\r\n @click=\"openGallery(i, card)\"\r\n />\r\n <!-- <CardGalleryBlockCard\r\n v-else-if=\"data.type == 'external_link' && data.type == 'internal_page_link' \"\r\n :data=\"card\"\r\n @keydown.enter.exact.prevent=\"testFunc()\"\r\n @click=\"openGallery(i, card)\"\r\n /> -->\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n <div class=\"child-lightbox-container\" v-if=\"showGallery\">\r\n <v-scale-transition origin=\"center center\">\r\n <LightboxGallery\r\n :content=\"contentData\"\r\n :startIndex=\"startIndex\"\r\n @closed=\"closeGallery()\"\r\n :showLightbox=\"showGallery\"\r\n />\r\n </v-scale-transition>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport CardGalleryBlockCard from \"./cardGalleryBlockCard\";\r\n// import axios from \"axios\"\r\n\r\nexport default {\r\n name: \"CardGalleryBlock\",\r\n props: [\"data\", \"srcWidth\"],\r\n data: () => ({\r\n showGallery: false,\r\n startIndex: 0,\r\n srcSize: 0,\r\n }),\r\n mounted() {\r\nconsole.log(this.data, this.minCardHeight,\"data from cardgallblock.vue\")\r\nconsole.log(\r\n this.srcWidth,\r\n this.$vuetify.breakpoint.name,\r\n \"cols breakpoint1\"\r\n );\r\n console.log(\r\n this.$parent.$el.clientWidth,\r\n this.$vuetify.breakpoint.thresholds,\r\n \"test\"\r\n );\r\n\r\n this.srcSize = this.$refs.divWidth.clientWidth;\r\n this.$nextTick(() => {\r\n window.addEventListener(\"resize\", this.divWidth);\r\n });\r\n window.addEventListener(\"resize\", this.divWidth);\r\n },\r\n beforeDestroy() {\r\n window.removeEventListener(\"resize\", this.divWidth);\r\n },\r\n components: { CardGalleryBlockCard },\r\n computed: {\r\n contentData() {\r\n //filters the external_link and internal_page_link from card gallery data\r\n return this.data.gallery_items.filter(item => item.type !== \"external_link\" && item.type !== \"internal_page_link\" );\r\n },\r\n minCardHeight(){\r\n if(this.data.min_card_height != null){\r\n console.log(this.data.min_card_height, \"mincard\")\r\n return this.data.min_card_height;\r\n }else return undefined\r\n },\r\n colsBreakpoint() {\r\n if (\r\n this.$vuetify.breakpoint.name == \"xs\" ||\r\n (this.srcSize > 0 &&\r\n this.srcSize < this.$vuetify.breakpoint.thresholds.xs)\r\n ) {\r\n return 12;\r\n } else if (\r\n this.$vuetify.breakpoint.name == \"sm\" ||\r\n (this.srcSize > 0 &&\r\n this.srcSize < this.$vuetify.breakpoint.thresholds.sm)\r\n ) {\r\n return 6;\r\n } else if (\r\n this.$vuetify.breakpoint.name == \"md\" ||\r\n (this.srcSize > 0 &&\r\n this.srcSize < this.$vuetify.breakpoint.thresholds.md)\r\n ) {\r\n return 4;\r\n } else if (\r\n this.$vuetify.breakpoint.name == \"lg\" ||\r\n (this.srcSize > 0 &&\r\n this.srcSize < this.$vuetify.breakpoint.thresholds.lg)\r\n ) {\r\n return 3;\r\n } else {\r\n return 3;\r\n }\r\n },\r\n },\r\n methods: {\r\n divWidth() {\r\n this.srcSize = this.$parent.$el.clientWidth;\r\n console.log(\r\n this.srcSize,\r\n this.$parent.$el.clientWidth,\r\n this.$vuetify.breakpoint.name,\r\n \"fr divWidth\"\r\n );\r\n },\r\n openGallery(index, card) {\r\n console.log(\"gallery open\", \"curr index\", index, card);\r\n if(card.type !== 'external_link' && card.type !== \"internal_page_link\"){\r\n this.startIndex = this.contentData.findIndex(item => item.id == card.id)\r\n }else{\r\n this.startIndex = index;\r\n }\r\n this.showGallery = true;\r\n },\r\n closeGallery() {\r\n this.showGallery = false;\r\n },\r\n downloadDocument: function (url, label) {\r\n console.log(label);\r\n window.open(url);\r\n // axios.get(url, { responseType: 'blob' })\r\n // .then(response => {\r\n // const blob = new Blob([response.data], { type: 'application/pdf' })\r\n // const link = document.createElement('a')\r\n // link.href = URL.createObjectURL(blob)\r\n // link.download = label\r\n // link.click()\r\n // URL.revokeObjectURL(link.href)\r\n // }).catch(console.error)\r\n },\r\n },\r\n watch: {\r\n colsBreakpoint(newVal) {\r\n console.log(newVal, \"cols breakpoint\");\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.child-lightbox-container {\r\n position: absolute;\r\n top: 50px;\r\n bottom: 50px;\r\n left: 50px;\r\n right: 50px;\r\n z-index: 100;\r\n /* pointer-events: none; */\r\n}\r\n.gallery {\r\n pointer-events: all;\r\n}\r\n.fitters {\r\n max-width: fit-content;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./cardGalleryBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./cardGalleryBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cardGalleryBlock.vue?vue&type=template&id=2f99a1cf&scoped=true&\"\nimport script from \"./cardGalleryBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./cardGalleryBlock.vue?vue&type=script&lang=js&\"\nimport style0 from \"./cardGalleryBlock.vue?vue&type=style&index=0&id=2f99a1cf&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2f99a1cf\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-row',_vm._l((_vm.data),function(value,key){return _c('v-col',{key:key,attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"12\",\"lg\":\"12\",\"xl\":\"12\"}},_vm._l((value),function(block,i){return _c('StreamfieldBlock',{key:i,attrs:{\"block\":block}})}),1)}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-row>\r\n <v-col\r\n cols=\"12\"\r\n sm=\"12\"\r\n md=\"12\"\r\n lg=\"12\"\r\n xl=\"12\"\r\n v-for=\"(value, key) of data\"\r\n :key=\"key\"\r\n >\r\n <StreamfieldBlock v-for=\"(block, i) in value\" :key=\"i\" :block=\"block\"/>\r\n </v-col>\r\n </v-row>\r\n</template>\r\n\r\n<script>\r\n\r\nexport default {\r\n name: \"OneColumnBlock\",\r\n props: [\"data\"],\r\n beforeCreate: function () {\r\n //Prevents recustive importing...\r\n this.$options.components.StreamfieldBlock = require('../streamfieldBlock.vue').default\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./oneColumnBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./oneColumnBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./oneColumnBlock.vue?vue&type=template&id=fd89379e&scoped=true&\"\nimport script from \"./oneColumnBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./oneColumnBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fd89379e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-row',_vm._l((_vm.data),function(value,key){return _c('v-col',{key:key,attrs:{\"cols\":\"12\",\"sm\":\"6\",\"md\":\"6\",\"lg\":\"6\",\"xl\":\"6\"}},_vm._l((value),function(block,i){return _c('StreamfieldBlock',{key:i,attrs:{\"block\":block}})}),1)}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-row>\r\n <v-col\r\n cols=\"12\"\r\n sm=\"6\"\r\n md=\"6\"\r\n lg=\"6\"\r\n xl=\"6\"\r\n v-for=\"(value, key) of data\"\r\n :key=\"key\"\r\n >\r\n <StreamfieldBlock v-for=\"(block, i) in value\" :key=\"i\" :block=\"block\"/>\r\n </v-col>\r\n </v-row>\r\n</template>\r\n\r\n<script>\r\n\r\nexport default {\r\n name: \"TwoColumnBlock\",\r\n props: [\"data\"],\r\n beforeCreate: function () {\r\n //Prevents recustive importing...\r\n this.$options.components.StreamfieldBlock = require('../streamfieldBlock.vue').default\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./twoColumnBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./twoColumnBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./twoColumnBlock.vue?vue&type=template&id=412fb293&scoped=true&\"\nimport script from \"./twoColumnBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./twoColumnBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"412fb293\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-row',_vm._l((_vm.data),function(value,key){return _c('v-col',{key:key,staticClass:\"streamfield-btn\",attrs:{\"cols\":\"12\",\"sm\":\"4\",\"md\":\"4\",\"lg\":\"4\",\"xl\":\"4\"}},_vm._l((value),function(block,i){return _c('StreamfieldBlock',{key:i,attrs:{\"block\":block}})}),1)}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-row>\r\n <v-col\r\n cols=\"12\"\r\n sm=\"4\"\r\n md=\"4\"\r\n lg=\"4\"\r\n xl=\"4\"\r\n class=\"streamfield-btn\"\r\n v-for=\"(value, key) of data\"\r\n :key=\"key\"\r\n >\r\n <StreamfieldBlock v-for=\"(block, i) in value\" :key=\"i\" :block=\"block\"/>\r\n </v-col>\r\n </v-row>\r\n</template>\r\n\r\n<script>\r\n\r\nexport default {\r\n name: \"ThreeColumnBlock\",\r\n props: [\"data\"],\r\n beforeCreate: function () {\r\n //Prevents recustive importing...\r\n this.$options.components.StreamfieldBlock = require('../streamfieldBlock.vue').default\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./threeColumnBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./threeColumnBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./threeColumnBlock.vue?vue&type=template&id=de76d94a&scoped=true&\"\nimport script from \"./threeColumnBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./threeColumnBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"de76d94a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-row',_vm._l((_vm.data),function(value,key){return _c('v-col',{key:key,attrs:{\"cols\":\"12\",\"sm\":\"3\",\"md\":\"3\",\"lg\":\"3\",\"xl\":\"3\"}},_vm._l((value),function(block,i){return _c('StreamfieldBlock',{key:i,attrs:{\"block\":block}})}),1)}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-row>\r\n <v-col\r\n cols=\"12\"\r\n sm=\"3\"\r\n md=\"3\"\r\n lg=\"3\"\r\n xl=\"3\"\r\n v-for=\"(value, key) of data\"\r\n :key=\"key\"\r\n >\r\n <StreamfieldBlock v-for=\"(block, i) in value\" :key=\"i\" :block=\"block\"/>\r\n </v-col>\r\n </v-row>\r\n</template>\r\n\r\n<script>\r\n\r\nexport default {\r\n name: \"FourColumnBlock\",\r\n props: [\"data\"],\r\n beforeCreate: function () {\r\n //Prevents recustive importing...\r\n this.$options.components.StreamfieldBlock = require('../streamfieldBlock.vue').default\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./fourColumnBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./fourColumnBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./fourColumnBlock.vue?vue&type=template&id=ebd0d06e&scoped=true&\"\nimport script from \"./fourColumnBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./fourColumnBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ebd0d06e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"8\",\"md\":\"8\",\"lg\":\"8\",\"xl\":\"8\"}},_vm._l((_vm.data.column_0),function(block,i){return _c('StreamfieldBlock',{key:i,attrs:{\"block\":block}})}),1),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"4\",\"md\":\"4\",\"lg\":\"4\",\"xl\":\"4\"}},_vm._l((_vm.data.column_1),function(block,i){return _c('StreamfieldBlock',{key:i,attrs:{\"block\":block}})}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-row>\r\n <v-col\r\n cols=\"12\"\r\n sm=\"8\"\r\n md=\"8\"\r\n lg=\"8\"\r\n xl=\"8\"\r\n >\r\n <StreamfieldBlock v-for=\"(block, i) in data.column_0\" :key=\"i\" :block=\"block\"/>\r\n </v-col>\r\n <v-col\r\n cols=\"12\"\r\n sm=\"4\"\r\n md=\"4\"\r\n lg=\"4\"\r\n xl=\"4\"\r\n >\r\n <StreamfieldBlock v-for=\"(block, i) in data.column_1\" :key=\"i\" :block=\"block\"/>\r\n </v-col>\r\n </v-row>\r\n</template>\r\n\r\n<script>\r\n\r\nexport default {\r\n name: \"PrimaryLeftColumnBlock\",\r\n props: [\"data\"],\r\n beforeCreate: function () {\r\n //Prevents recustive importing...\r\n this.$options.components.StreamfieldBlock = require('../streamfieldBlock.vue').default\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./primaryLeftColumnBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./primaryLeftColumnBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./primaryLeftColumnBlock.vue?vue&type=template&id=3562a9a0&scoped=true&\"\nimport script from \"./primaryLeftColumnBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./primaryLeftColumnBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3562a9a0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"4\",\"md\":\"4\",\"lg\":\"4\",\"xl\":\"4\"}},_vm._l((_vm.data.column_0),function(block,i){return _c('StreamfieldBlock',{key:i,attrs:{\"block\":block}})}),1),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"8\",\"md\":\"8\",\"lg\":\"8\",\"xl\":\"8\"}},_vm._l((_vm.data.column_1),function(block,i){return _c('StreamfieldBlock',{key:i,attrs:{\"block\":block}})}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-row>\r\n <v-col\r\n cols=\"12\"\r\n sm=\"4\"\r\n md=\"4\"\r\n lg=\"4\"\r\n xl=\"4\"\r\n >\r\n <StreamfieldBlock v-for=\"(block, i) in data.column_0\" :key=\"i\" :block=\"block\"/>\r\n </v-col>\r\n <v-col\r\n cols=\"12\"\r\n sm=\"8\"\r\n md=\"8\"\r\n lg=\"8\"\r\n xl=\"8\"\r\n >\r\n <StreamfieldBlock v-for=\"(block, i) in data.column_1\" :key=\"i\" :block=\"block\"/>\r\n </v-col>\r\n </v-row>\r\n</template>\r\n\r\n<script>\r\n\r\nexport default {\r\n name: \"PrimaryRightColumnBlock\",\r\n props: [\"data\"],\r\n beforeCreate: function () {\r\n //Prevents recustive importing...\r\n this.$options.components.StreamfieldBlock = require('../streamfieldBlock.vue').default\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./primaryRightColumnBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./primaryRightColumnBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./primaryRightColumnBlock.vue?vue&type=template&id=dc58ba5c&scoped=true&\"\nimport script from \"./primaryRightColumnBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./primaryRightColumnBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dc58ba5c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-expansion-panels',{attrs:{\"value\":0,\"focusable\":\"\",\"multiple\":\"\"},model:{value:(_vm.panel),callback:function ($$v) {_vm.panel=$$v},expression:\"panel\"}},_vm._l((_vm.data),function(card,i){return _c('v-expansion-panel',{key:i},[_c('v-expansion-panel-header',{staticClass:\"text-subtitle-1\"},[_vm._v(\" \"+_vm._s(card.title)+\" \")]),_c('v-expansion-panel-content',{staticClass:\"pt-4\"},[_c('ParagraphBlock',{attrs:{\"html\":card.content}})],1)],1)}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <v-expansion-panels v-model=\"panel\" :value=\"0\" focusable multiple>\r\n <v-expansion-panel v-for=\"(card, i) in data\" :key=\"i\">\r\n <!-- <v-expansion-panel v-for=\"(item, i) in data\"\r\n :key=\"i\"> -->\r\n\r\n <v-expansion-panel-header class=\"text-subtitle-1\">\r\n {{ card.title }}\r\n </v-expansion-panel-header>\r\n <v-expansion-panel-content class=\"pt-4\">\r\n <ParagraphBlock :html=\"card.content\"></ParagraphBlock>\r\n </v-expansion-panel-content>\r\n </v-expansion-panel>\r\n </v-expansion-panels>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport ParagraphBlock from \"./paragraphBlock.vue\";\r\n\r\nexport default {\r\n name: \"AccordianBlock\",\r\n props: [\"data\"],\r\n data: () => ({\r\n panel: []\r\n }),\r\n components: { ParagraphBlock },\r\n methods: {},\r\n mounted() {\r\n // this.items = this.data.length\r\n // let self = this;\r\n\r\n\r\n\r\n console.log(\"data from accordian\" , this.data, this.panel)\r\n\r\n }, \r\n created() {\r\n let self = this;\r\n\r\n\r\n this.data.forEach(function (item, i) {\r\n if (item.openByDefault == true) self.panel.push(i);\r\n });\r\n\r\n // this.showStream = true;\r\n // //Ensure the first filter is applied at load\r\n // this.updateStore(this.groupValue); \r\n // this.updateStoreCheckbox(this.checkboxGroupValue);\r\n\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./accordianBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./accordianBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./accordianBlock.vue?vue&type=template&id=400c1780&scoped=true&\"\nimport script from \"./accordianBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./accordianBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"400c1780\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-container',{staticClass:\"justify-center\",domProps:{\"innerHTML\":_vm._s(_vm.data)}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n<v-container class=\"justify-center\" v-html=\"data\">\r\n\r\n</v-container>\r\n</template>\r\n\r\n<script>\r\n// import StreamfieldBlock from \"./streamfieldBlock.vue\";\r\n\r\nexport default {\r\n name: \"embeddedHtmlBlock\",\r\n props: [\"data\"],\r\n data: () => ({\r\n htmlRawCode: this.data\r\n }),\r\n mounted() {\r\n },\r\n components: { },\r\n methods: {\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./embeddedHtmlBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./embeddedHtmlBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./embeddedHtmlBlock.vue?vue&type=template&id=1e3e8fa9&scoped=true&\"\nimport script from \"./embeddedHtmlBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./embeddedHtmlBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1e3e8fa9\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-container',[_c('v-row',{attrs:{\"justify\":'start'}},_vm._l((_vm.data),function(button,i){return _c('span',{key:i,staticClass:\"ma-1\"},[(button.button_type[0].type === 'document_link')?_c('v-btn',{attrs:{\"target\":\"_blank\",\"aria-label\":button.accessibility_text,\"href\":button.button_type[0].value.file}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(button.icon))]),_c('span',[_vm._v(_vm._s(button.title))])],1):(button.button_type[0].type === 'other_link')?_c('v-btn',{attrs:{\"target\":\"_blank\",\"aria-label\":button.accessibility_text,\"href\":button.button_type[0].value}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(button.icon))]),_c('span',[_vm._v(_vm._s(button.title)+\" \")])],1):(button.button_type[0].type === 'page_link')?_c('v-btn',{attrs:{\"aria-label\":button.accessibility_text,\"to\":_vm.getPageLink(button)},on:{\"click\":_vm.resetCurrentPopup}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(button.icon))]),_c('span',[_vm._v(\" \"+_vm._s(button.title)+\" \")])],1):_vm._e()],1)}),0)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-container>\r\n <!-- Refactor this! -->\r\n <v-row :justify=\"'start'\">\r\n <span v-for=\"(button, i) in data\" :key=\"i\" class=\"ma-1\">\r\n <v-btn v-if=\"button.button_type[0].type === 'document_link'\" target=\"_blank\" :aria-label=\"button.accessibility_text\" :href=\"button.button_type[0].value.file\">\r\n <v-icon left >{{button.icon}}</v-icon>\r\n <span >{{button.title}}</span>\r\n </v-btn>\r\n <v-btn v-else-if=\"button.button_type[0].type === 'other_link'\" target=\"_blank\" :aria-label=\"button.accessibility_text\" :href=\"button.button_type[0].value\">\r\n <v-icon left >{{button.icon}}</v-icon>\r\n <span >{{button.title}} </span>\r\n </v-btn>\r\n <v-btn v-else-if=\"button.button_type[0].type === 'page_link'\" :aria-label=\"button.accessibility_text\" :to=\"getPageLink(button)\" @click=\"resetCurrentPopup\">\r\n <v-icon left >{{button.icon}}</v-icon>\r\n <span > {{button.title}} </span>\r\n </v-btn>\r\n </span>\r\n </v-row>\r\n </v-container>\r\n</template>\r\n<script>\r\nexport default {\r\n name: \"ButtonLinkRowBlock\",\r\n props: [\"data\"],\r\n methods: {\r\n getPageLink(button){\r\n const backendUrl = button.button_type[0].value.meta.html_url\r\n return new URL(backendUrl).pathname\r\n },\r\n resetCurrentPopup() {\r\n this.$store.dispatch(\"wagtail/setCurrentPopup\", undefined)\r\n }\r\n }\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.v-btn {\r\n white-space: normal;\r\n min-height: 36px;\r\n height: fit-content !important;\r\n max-height: fit-content !important; \r\n padding: 5px 16px !important;\r\n\r\n}\r\n::v-deep .v-btn__content {\r\n width: 100%;\r\n }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./buttonLinkRowBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./buttonLinkRowBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./buttonLinkRowBlock.vue?vue&type=template&id=68ea2f4a&scoped=true&\"\nimport script from \"./buttonLinkRowBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./buttonLinkRowBlock.vue?vue&type=script&lang=js&\"\nimport style0 from \"./buttonLinkRowBlock.vue?vue&type=style&index=0&id=68ea2f4a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"68ea2f4a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-alert',{staticClass:\"ml-0 mb-0 mr-0\",attrs:{\"text\":\"\",\"icon\":_vm.data.icon,\"color\":_vm.data.color}},[_c('div',{class:_vm.getCustomCssClass(_vm.data)},[_c('ParagraphBlock',{attrs:{\"html\":_vm.data.content}})],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <v-alert\r\n class=\"ml-0 mb-0 mr-0\"\r\n text\r\n :icon=\"data.icon\"\r\n :color=\"data.color\"\r\n ><div :class=\"getCustomCssClass(data)\" ><ParagraphBlock :html=\"data.content\"></ParagraphBlock> </div>\r\n</v-alert>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\nimport ParagraphBlock from \"./paragraphBlock.vue\"\r\n\r\nexport default {\r\n name: \"ColoredNotificationBlock\",\r\n props: [\"data\"],\r\n data: () => ({\r\n }),\r\n components: {ParagraphBlock},\r\n mounted(){\r\n console.log(this.data, \"text from colored\")\r\n },\r\n methods:{\r\n getCustomCssClass(data) {\r\n if (data.custom_css_override !== null) {\r\n console.log(\r\n \"getCustomCssClass()\",\r\n data.custom_css_override\r\n );\r\n return data.custom_css_override;\r\n }\r\n return \"\";\r\n },\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./coloredNotificationBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./coloredNotificationBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./coloredNotificationBlock.vue?vue&type=template&id=e9311b4e&scoped=true&\"\nimport script from \"./coloredNotificationBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./coloredNotificationBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e9311b4e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticStyle:{\"display\":\"flex\",\"justify-content\":\"center\"}},[_c('div',{style:({ minWidth: _vm.data.grid_width + '%' })},[_c('div',{staticClass:\"gridOverflow go-actionIcon ssg fs ssgdim\",style:({\n '--itemMinWidth': _vm.data.minimum_tile_width ? _vm.data.minimum_tile_width + 'px' : 210 + 'px',\n '--gridGap': _vm.data.grid_gap ? _vm.data.grid_gap + 'px': '10px'\n })},_vm._l((_vm.data.tile_buttons),function(item,index){return _c('TileButtonBlock',{key:index,attrs:{\"item\":item,\"data\":_vm.data}})}),1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"go_gridItem\",class:_vm.item.tile_button_style !== '' ? 'go_gridItem-' + _vm.item.tile_button_style : '',style:({\n backgroundImage: 'url(' + _vm.item.image.file + ')',\n backgroundSize: 'cover',\n\n}),attrs:{\"aria-label\":_vm.item.accessibility_label}},[_c('div',{style:({\n background: 'rgba(0,0,0,0)',\n cursor: 'pointer',\n display: 'flex'\n }),on:{\"click\":_vm.openLightbox}},[(_vm.item.image_only_tile === false)?_c('span',{staticClass:\"text-body\",style:({\n color: _vm.item.title_color,\n display: 'flex',\n margin: '0 auto',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%',\n\n })},[_c('span',{style:({ \n backgroundColor: 'rgba(79, 79, 79, 0.5)', \n display: 'flex', \n justifyContent: 'center', \n width: '100%', \n fontSize: '40px', \n fontWeight: 'bold' })},[(_vm.item.page_icon)?_c('v-icon',{style:({ height: '16px', width: '16px', color: _vm.item.title_color, marginRight: '10px' })},[_vm._v(_vm._s(_vm.item.page_icon))]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.item.title)+\" \")],1)]):_vm._e()]),(_vm.showLightbox)?_c('LightboxGallery',{attrs:{\"content\":_vm.item.content,\"startIndex\":0,\"showLightbox\":_vm.showLightbox},on:{\"closed\":_vm.closeLightbox}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div\r\n :aria-label=\"item.accessibility_label\"\r\n class=\"go_gridItem\" \r\n :class=\"item.tile_button_style !== '' ? 'go_gridItem-' + item.tile_button_style : ''\" \r\n :style=\"{\r\n backgroundImage: 'url(' + item.image.file + ')',\r\n backgroundSize: 'cover',\r\n\r\n }\">\r\n <div @click=\"openLightbox\" :style=\"{\r\n background: 'rgba(0,0,0,0)',\r\n cursor: 'pointer',\r\n display: 'flex'\r\n }\">\r\n <span class=\"text-body\" v-if=\"item.image_only_tile === false\" :style=\"{\r\n color: item.title_color,\r\n display: 'flex',\r\n margin: '0 auto',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: '100%',\r\n\r\n }\">\r\n <span :style=\"{ \r\n backgroundColor: 'rgba(79, 79, 79, 0.5)', \r\n display: 'flex', \r\n justifyContent: 'center', \r\n width: '100%', \r\n fontSize: '40px', \r\n fontWeight: 'bold' }\">\r\n <v-icon v-if=\"item.page_icon\" :style=\"{ height: '16px', width: '16px', color: item.title_color, marginRight: '10px' }\">{{ item.page_icon }}</v-icon>\r\n {{ item.title }}\r\n </span>\r\n\r\n \r\n </span>\r\n </div>\r\n\r\n <LightboxGallery v-if=\"showLightbox\" :content=\"item.content\" :startIndex=\"0\" @closed=\"closeLightbox\"\r\n :showLightbox=\"showLightbox\" />\r\n </div>\r\n</template>\r\n<script>\r\n\r\nexport default {\r\n name: \"TileButtonBlock\",\r\n\r\n props: [\r\n \"item\",\r\n \"data\"\r\n ],\r\n\r\n data: () => ({\r\n showLightbox: false,\r\n }),\r\n\r\n methods: {\r\n openLightbox() {\r\n this.showLightbox = true;\r\n },\r\n\r\n closeLightbox(event) {\r\n this.showLightbox = false;\r\n },\r\n }\r\n}\r\n</script>\r\n<style>\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./tileButtonBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./tileButtonBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./tileButtonBlock.vue?vue&type=template&id=49879c75&\"\nimport script from \"./tileButtonBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./tileButtonBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\r\n <div style=\"display: flex; justify-content: center;\">\r\n\r\n <div :style=\"{ minWidth: data.grid_width + '%' }\">\r\n <div class=\"gridOverflow go-actionIcon ssg fs ssgdim\" :style=\"{\r\n '--itemMinWidth': data.minimum_tile_width ? data.minimum_tile_width + 'px' : 210 + 'px',\r\n '--gridGap': data.grid_gap ? data.grid_gap + 'px': '10px'\r\n }\">\r\n <TileButtonBlock v-for=\"(item, index) in data.tile_buttons\" :key=\"index\" :item=\"item\" :data=\"data\"></TileButtonBlock>\r\n </div>\r\n </div>\r\n </div>\r\n</template >\r\n\r\n<script>\r\n\r\nimport TileButtonBlock from \"./tileButtonBlock.vue\"\r\n\r\nexport default {\r\n name: \"TileButtonGridBlock\", \r\n props: [\"data\"],\r\n components: {\r\n TileButtonBlock\r\n }\r\n} \r\n</script>\r\n\r\n<style scoped></style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./tileButtonGridBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./tileButtonGridBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./tileButtonGridBlock.vue?vue&type=template&id=7aea3fca&scoped=true&\"\nimport script from \"./tileButtonGridBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./tileButtonGridBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7aea3fca\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-expansion-panels',{attrs:{\"variant\":\"accordion\",\"value\":_vm.data.open_by_default ? 0 : undefined}},[_c('v-expansion-panel',[_c('v-expansion-panel-header',[_vm._v(_vm._s(_vm.data.panel_title))]),_c('v-expansion-panel-content',[_c('span',{staticClass:\"text-caption\"},[_vm._v(\"Start\")]),_c('v-select',{attrs:{\"items\":_vm.locations,\"item-text\":\"title\",\"placeholder\":\"Select Location\",\"return-object\":\"\"},model:{value:(_vm.startLocation),callback:function ($$v) {_vm.startLocation=$$v},expression:\"startLocation\"}}),_c('v-select',{attrs:{\"disabled\":_vm.startLocation === null,\"items\":_vm.entrances,\"placeholder\":\"Choose an entrance\"},model:{value:(_vm.entrance),callback:function ($$v) {_vm.entrance=$$v},expression:\"entrance\"}}),_c('span',{staticClass:\"text-caption\"},[_vm._v(\"Stop\")]),_c('v-select',{attrs:{\"disabled\":_vm.startLocation === null,\"item-text\":\"title\",\"items\":_vm.stops,\"placeholder\":\"Select Location\",\"return-object\":\"\"},model:{value:(_vm.stopLocation),callback:function ($$v) {_vm.stopLocation=$$v},expression:\"stopLocation\"}}),_c('v-select',{attrs:{\"disabled\":_vm.stopLocation === null,\"items\":_vm.exits,\"placeholder\":\"Choose an exit\"},model:{value:(_vm.exit),callback:function ($$v) {_vm.exit=$$v},expression:\"exit\"}}),_c('div',{style:({\n display: 'flex',\n justifyContent: 'center',\n paddingBottom: '10px',\n paddingTop: '10px',\n })}),_c('v-btn',{style:({ marginTop: '10px' }),attrs:{\"disabled\":!_vm.enableJourney,\"block\":\"\"},on:{\"click\":function($event){return _vm.showJourney()}}},[_c('span',[_vm._v(\" Experience Journey \")])]),_c('v-btn',{style:({ marginTop: '10px' }),attrs:{\"disabled\":!_vm.hasSelectedLocation,\"block\":\"\"},on:{\"click\":function($event){return _vm.handleReset()}}},[_vm._v(\" Reset \")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-expansion-panels\r\n variant=\"accordion\"\r\n :value=\"data.open_by_default ? 0 : undefined\"\r\n >\r\n <v-expansion-panel>\r\n <v-expansion-panel-header>{{\r\n data.panel_title\r\n }}</v-expansion-panel-header>\r\n <v-expansion-panel-content>\r\n <span class=\"text-caption\">Start</span>\r\n <v-select\r\n v-model=\"startLocation\"\r\n :items=\"locations\"\r\n item-text=\"title\"\r\n placeholder=\"Select Location\"\r\n return-object\r\n >\r\n </v-select>\r\n <v-select\r\n v-model=\"entrance\"\r\n :disabled=\"startLocation === null\"\r\n :items=\"entrances\"\r\n placeholder=\"Choose an entrance\"\r\n >\r\n </v-select>\r\n <span class=\"text-caption\">Stop</span>\r\n <v-select\r\n :disabled=\"startLocation === null\"\r\n v-model=\"stopLocation\"\r\n item-text=\"title\"\r\n :items=\"stops\"\r\n placeholder=\"Select Location\"\r\n return-object\r\n >\r\n </v-select>\r\n <v-select\r\n v-model=\"exit\"\r\n :disabled=\"stopLocation === null\"\r\n :items=\"exits\"\r\n placeholder=\"Choose an exit\"\r\n >\r\n </v-select>\r\n <div\r\n :style=\"{\r\n display: 'flex',\r\n justifyContent: 'center',\r\n paddingBottom: '10px',\r\n paddingTop: '10px',\r\n }\"\r\n >\r\n <!--<v-btn-toggle v-model=\"toggle\" divided mandatory>\r\n <v-btn value=\"360\">360 Journey Videos</v-btn>\r\n <v-btn value=\"2D\">2D Journey Videos</v-btn>\r\n </v-btn-toggle> -->\r\n </div>\r\n\r\n <v-btn\r\n :disabled=\"!enableJourney\"\r\n :style=\"{ marginTop: '10px' }\"\r\n block\r\n @click=\"showJourney()\"\r\n >\r\n <span> Experience Journey </span>\r\n </v-btn>\r\n <v-btn\r\n :disabled=\"!hasSelectedLocation\"\r\n :style=\"{ marginTop: '10px' }\"\r\n block\r\n @click=\"handleReset()\"\r\n >\r\n Reset\r\n </v-btn>\r\n </v-expansion-panel-content>\r\n </v-expansion-panel>\r\n </v-expansion-panels>\r\n</template>\r\n\r\n<script>\r\nimport LightboxGallery from \"../lightbox/LightboxGallery.vue\";\r\n\r\nconst journeyPlannerChildrenType = Object.freeze({\r\n LOCATION: \"location\",\r\n JOURNEY: \"journey\",\r\n});\r\nconst branchingVideoType = Object.freeze({\r\n ENTRANCE: \"entrance\",\r\n JOURNEY: \"journey\",\r\n EXIT: \"exit\",\r\n});\r\n\r\nfunction findMatchingJourney(vue) {\r\n const locationPoints = vue.data.children.filter(\r\n (item) => item.type === journeyPlannerChildrenType.LOCATION\r\n );\r\n const currentStartLocation = locationPoints.find(\r\n (item) => item.value.title === vue.startLocation\r\n );\r\n const currentStopLocation = locationPoints.find(\r\n (item) => item.value.title === vue.stopLocation\r\n );\r\n\r\n let journeyKeyPair = [];\r\n journeyKeyPair.push(currentStartLocation.value.journey_key_id);\r\n journeyKeyPair.push(currentStopLocation.value.journey_key_id);\r\n\r\n // Find any matching journeys\r\n const journeys = vue.data.children.filter(\r\n (item) => item.type === journeyPlannerChildrenType.JOURNEY\r\n );\r\n\r\n const journey = journeys.find(\r\n (journey) =>\r\n journey.value.journey_key_pair.toString() === journeyKeyPair.toString()\r\n );\r\n return journey;\r\n}\r\n\r\nfunction updateMapWithJourney(vue, journey) {\r\n // Clear the current map layers\r\n vue.$store.dispatch(\"wagtail/updateMapLayerOptions\", {\r\n key: vue.activeJourneyLayerID,\r\n data: null,\r\n });\r\n\r\n vue.activeJourneyLayer = journey.value.layer_name;\r\n vue.activeJourneyLayerID = vue._uid;\r\n\r\n // Wait for the render then update the map with intended layers\r\n vue.$nextTick(function () {\r\n let payload = {\r\n key: vue.activeJourneyLayerID,\r\n data: { [vue.activeJourneyLayer]: true },\r\n };\r\n\r\n vue.$store.dispatch(\"wagtail/updateMapLayerOptions\", payload);\r\n });\r\n}\r\n\r\nexport default {\r\n components: {\r\n LightboxGallery,\r\n },\r\n props: [\"data\"],\r\n data() {\r\n return {\r\n enableJourney: false,\r\n toggle: \"2D\",\r\n startLocation: null,\r\n stopLocation: null,\r\n entrance: null,\r\n exit: null,\r\n locations: [],\r\n entrances: [],\r\n exits: [],\r\n stops: [],\r\n branchingVideos: [\r\n { type: \"entrance\", video: {}, video2D: {} },\r\n { type: \"exit\", video: {}, video2D: {} },\r\n ],\r\n journey: null,\r\n activeJourneyLayer: null,\r\n activeJourneyLayerID: null,\r\n branchingVideoContent: [{}],\r\n branchingVideo2DContent: [{}],\r\n showBranchingVideos: false,\r\n panel: [0, 1],\r\n disabled: false,\r\n };\r\n },\r\n\r\n mounted() {\r\n const locations = this.data.children.filter(\r\n (item) => item.type === journeyPlannerChildrenType.LOCATION\r\n );\r\n this.locations = locations.map((item) => item.value.title);\r\n },\r\n computed: {\r\n accessibilityMode() {\r\n return this.$store.state.wagtail.accessibilityMode;\r\n },\r\n hasSelectedLocation() {\r\n return (\r\n this.startLocation || this.stopLocation || this.entrance || this.exit\r\n );\r\n },\r\n resetJourney() {\r\n return this.$store.state.map.resetJourney;\r\n },\r\n },\r\n watch: {\r\n resetJourney(value) {\r\n if (value) {\r\n this.handleReset();\r\n this.$store.commit(\"map/setResetJourney\", false);\r\n }\r\n },\r\n startLocation(newValue, oldValue) {\r\n if (newValue) {\r\n const locations = this.data.children.filter(\r\n (item) => item.type === journeyPlannerChildrenType.LOCATION\r\n );\r\n const currentLocation = locations.find(\r\n (item) => item.value.title === newValue\r\n );\r\n this.entrances = currentLocation.value.sub_children.map(\r\n (item) => item.poi_title\r\n );\r\n\r\n // Reset these values when a location is chosen\r\n this.entrance = null;\r\n this.exit = null;\r\n this.journey = null;\r\n this.enableJourney = false;\r\n this.branchingVideoContent = [];\r\n this.branchingVideo2DContent = [];\r\n\r\n let stopLocations = [...locations];\r\n stopLocations = stopLocations.filter(\r\n (item) => item.value.title !== this.startLocation\r\n );\r\n stopLocations = stopLocations.map((item) => item.value.title);\r\n this.stops = stopLocations;\r\n\r\n if (this.startLocation != null && this.stopLocation != null) {\r\n if (this.startLocation === this.stopLocation) {\r\n this.$store.dispatch(\"wagtail/updateMapLayerOptions\", {\r\n key: this.activeJourneyLayerID,\r\n data: null,\r\n });\r\n return;\r\n }\r\n\r\n const journey = findMatchingJourney(this);\r\n if (journey) updateMapWithJourney(this, journey);\r\n }\r\n }\r\n },\r\n\r\n stopLocation(newValue, oldValue) {\r\n if (newValue) {\r\n const locations = this.data.children.filter(\r\n (item) => item.type === journeyPlannerChildrenType.LOCATION\r\n );\r\n const currentLocation = locations.find(\r\n (item) => item.value.title === newValue\r\n );\r\n this.exits = currentLocation.value.sub_children.map(\r\n (item) => item.poi_title\r\n );\r\n\r\n // Reset these values when a location is chosen\r\n this.exit = null;\r\n this.journey = null;\r\n this.enableJourney = false;\r\n this.branchingVideoContent = [];\r\n this.branchingVideo2DContent = [];\r\n\r\n if (this.startLocation != null && this.stopLocation != null) {\r\n const journey = findMatchingJourney(this);\r\n if (journey) updateMapWithJourney(this, journey);\r\n }\r\n }\r\n },\r\n\r\n entrance(newValue, oldValue) {\r\n if (!newValue) return;\r\n\r\n // Reset these values when a Point of Interest is chosen\r\n this.journey = null;\r\n this.enableJourney = false;\r\n this.branchingVideoContent = [];\r\n this.branchingVideo2DContent = [];\r\n\r\n // Find video to add\r\n let video = null;\r\n let videoAccessibility = null;\r\n let video2D = null;\r\n let video2DAccessibility = null;\r\n const locations = this.data.children.filter(\r\n (item) => item.type === journeyPlannerChildrenType.LOCATION\r\n );\r\n const currentLocation = locations.find(\r\n (item) => item.value.title === this.startLocation\r\n );\r\n const poi = currentLocation.value.sub_children.find(\r\n (item) => item.poi_title === newValue\r\n );\r\n\r\n video = poi.start_video.video ? poi.start_video : null;\r\n videoAccessibility = poi.start_accessible_video.video\r\n ? poi.start_accessible_video\r\n : null;\r\n video2D = poi.start_video_2D;\r\n video2DAccessibility = poi.start_accessible_video_2D;\r\n\r\n // Reconstruct the branching videos\r\n let newVideos = [];\r\n newVideos.push({\r\n type: branchingVideoType.ENTRANCE,\r\n video: video,\r\n videoAccessibility: videoAccessibility,\r\n video2D: video2D,\r\n video2DAccessibility: video2DAccessibility,\r\n });\r\n\r\n // Readd the exit if any\r\n for (let i = 0; i < this.branchingVideos.length; i++) {\r\n if (this.branchingVideos[i].type === branchingVideoType.EXIT) {\r\n newVideos.push(this.branchingVideos[i]);\r\n }\r\n }\r\n\r\n // Add / Readd possible journey\r\n if (this.entrance !== null && this.exit !== null) {\r\n // Get keys of the locations\r\n const locationPoints = this.data.children.filter(\r\n (item) => item.type === journeyPlannerChildrenType.LOCATION\r\n );\r\n const currentStartLocation = locationPoints.find(\r\n (item) => item.value.title === this.startLocation\r\n );\r\n const currentStopLocation = locationPoints.find(\r\n (item) => item.value.title === this.stopLocation\r\n );\r\n\r\n let journeyKeyPair = [];\r\n journeyKeyPair.push(currentStartLocation.value.journey_key_id);\r\n journeyKeyPair.push(currentStopLocation.value.journey_key_id);\r\n\r\n // Find any matching journeys\r\n const journeys = this.data.children.filter(\r\n (item) => item.type === journeyPlannerChildrenType.JOURNEY\r\n );\r\n let journeyMatch = false;\r\n for (const journey of journeys) {\r\n if (\r\n journey.value.journey_key_pair.toString() ===\r\n journeyKeyPair.toString()\r\n ) {\r\n journeyMatch = true;\r\n let video = journey.value.video_picker.video\r\n ? journey.value.video_picker\r\n : null;\r\n let videoAccessibility = journey.value.accessible_video_picker.video\r\n ? journey.value.accessible_video_picker\r\n : null;\r\n let video2D = journey.value.accessible_video_picker_2D;\r\n let video2DAccessibility = journey.value.accessible_video_picker_2D;\r\n\r\n newVideos.push({\r\n type: branchingVideoType.JOURNEY,\r\n video: video,\r\n videoAccessibility: videoAccessibility,\r\n video2D: video2D,\r\n video2DAccessibility: video2DAccessibility,\r\n });\r\n this.journey = journey;\r\n } else {\r\n if (journeyMatch == false) {\r\n this.journey = null;\r\n }\r\n }\r\n }\r\n }\r\n this.branchingVideos = newVideos;\r\n },\r\n exit(newValue, oldValue) {\r\n if (!newValue) return;\r\n\r\n // Reset these values when a Point of Interest is chosen\r\n this.journey = null;\r\n this.enableJourney = false;\r\n this.branchingVideoContent = [];\r\n this.branchingVideo2DContent = [];\r\n\r\n // Find video to add\r\n let video = null;\r\n let videoAccessibility = null;\r\n let video2D = null;\r\n let video2DAccessibility = null;\r\n const locations = this.data.children.filter(\r\n (item) => item.type === journeyPlannerChildrenType.LOCATION\r\n );\r\n const currentLocation = locations.find(\r\n (item) => item.value.title === this.stopLocation\r\n );\r\n const poi = currentLocation.value.sub_children.find(\r\n (item) => item.poi_title === newValue\r\n );\r\n\r\n video = poi.destination_video.video ? poi.destination_video : null;\r\n videoAccessibility = poi.destination_accessible_video.video\r\n ? poi.destination_accessible_video\r\n : null;\r\n video2D = poi.destination_video_2D;\r\n video2DAccessibility = poi.destination_accessible_video_2D;\r\n\r\n // Reconstruct the branching videos\r\n let newVideos = [];\r\n newVideos.push({\r\n type: branchingVideoType.EXIT,\r\n video: video,\r\n videoAccessibility,\r\n video2D: video2D,\r\n video2DAccessibility,\r\n });\r\n\r\n // Readd the Entrance video\r\n for (let i = 0; i < this.branchingVideos.length; i++) {\r\n if (this.branchingVideos[i].type === branchingVideoType.ENTRANCE) {\r\n newVideos.push(this.branchingVideos[i]);\r\n }\r\n }\r\n\r\n // Add / Readd possible journey\r\n if (this.entrance !== null && this.exit !== null) {\r\n // Get keys of the locations\r\n const locationPoints = this.data.children.filter(\r\n (item) => item.type === journeyPlannerChildrenType.LOCATION\r\n );\r\n const currentStartLocation = locationPoints.find(\r\n (item) => item.value.title === this.startLocation\r\n );\r\n const currentStopLocation = locationPoints.find(\r\n (item) => item.value.title === this.stopLocation\r\n );\r\n\r\n let journeyKeyPair = [];\r\n journeyKeyPair.push(currentStartLocation.value.journey_key_id);\r\n journeyKeyPair.push(currentStopLocation.value.journey_key_id);\r\n\r\n // Find any matching journeys\r\n const journeys = this.data.children.filter(\r\n (item) => item.type === journeyPlannerChildrenType.JOURNEY\r\n );\r\n let journeyMatch = false;\r\n for (const journey of journeys) {\r\n if (\r\n journey.value.journey_key_pair.toString() ===\r\n journeyKeyPair.toString()\r\n ) {\r\n journeyMatch = true;\r\n let video = journey.value.video_picker.video\r\n ? journey.value.video_picker\r\n : null;\r\n let videoAccessibility = journey.value.accessible_video_picker.video\r\n ? journey.value.accessible_video_picker\r\n : null;\r\n let video2D = journey.value.video_picker_2D;\r\n let video2DAccessibility = journey.value.accessible_video_picker_2D;\r\n\r\n newVideos.push({\r\n type: branchingVideoType.JOURNEY,\r\n video: video,\r\n videoAccessibility: videoAccessibility,\r\n video2D: video2D,\r\n video2DAccessibility: video2DAccessibility,\r\n });\r\n this.journey = journey;\r\n } else {\r\n if (journeyMatch == false) {\r\n this.journey = null;\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.branchingVideos = newVideos;\r\n },\r\n journey(newValue, oldValue) {\r\n if (!newValue) return;\r\n let journeyVideos = [];\r\n let journeyVideos2D = [];\r\n const startingVideo = this.branchingVideos.find(\r\n (item) => item.type === branchingVideoType.ENTRANCE\r\n );\r\n const journeyVideo = this.branchingVideos.find(\r\n (item) => item.type === branchingVideoType.JOURNEY\r\n );\r\n const endingVideo = this.branchingVideos.find(\r\n (item) => item.type === branchingVideoType.EXIT\r\n );\r\n\r\n journeyVideos.push(startingVideo ?? \"\");\r\n journeyVideos.push(journeyVideo ?? \"\");\r\n journeyVideos.push(endingVideo ?? \"\");\r\n\r\n journeyVideos2D.push(startingVideo ?? \"\");\r\n journeyVideos2D.push(journeyVideo ?? \"\");\r\n journeyVideos2D.push(endingVideo ?? \"\");\r\n\r\n const content = [\r\n { type: \"branching_video_360\", value: { videos: journeyVideos } },\r\n ];\r\n\r\n const content2D = [\r\n { type: \"branching_video\", value: { videos: journeyVideos2D } },\r\n ];\r\n this.branchingVideoContent = content;\r\n this.branchingVideo2DContent = content2D;\r\n\r\n if (this.toggle === \"360\") {\r\n if (!journeyVideos.includes(\"\")) {\r\n this.enableJourney = true;\r\n }\r\n } else if (this.toggle === \"2D\") {\r\n if (!journeyVideos2D.includes(\"\")) {\r\n this.enableJourney = true;\r\n }\r\n }\r\n },\r\n toggle(newValue, oldValue) {\r\n if (newValue === \"360\") {\r\n if (\r\n this.branchingVideoContent.length > 0 &&\r\n !this.branchingVideoContent[0].value.videos.includes(\"\")\r\n ) {\r\n this.enableJourney = true;\r\n } else {\r\n this.enableJourney = false;\r\n }\r\n } else if (newValue === \"2D\") {\r\n if (\r\n this.branchingVideo2DContent.length > 0 &&\r\n !this.branchingVideo2DContent[0].value.videos.includes(\"\")\r\n ) {\r\n this.enableJourney = true;\r\n } else {\r\n this.enableJourney = false;\r\n }\r\n }\r\n },\r\n },\r\n methods: {\r\n handleReset() {\r\n // Reset Map Layers\r\n this.$store.dispatch(\"wagtail/updateMapLayerOptions\", {\r\n key: this.activeJourneyLayerID,\r\n data: null,\r\n });\r\n\r\n this.startLocation = null;\r\n this.stopLocation = null;\r\n this.entrance = null;\r\n this.exit = null;\r\n this.activeJourneyLayer = null;\r\n this.activeJourneyLayerID = null;\r\n this.branchingVideos = [\r\n { type: \"entrance\", video: {}, video2D: {} },\r\n { type: \"exit\", video: {}, video2D: {} },\r\n ];\r\n this.journey = null;\r\n this.branchingVideoContent = [{}];\r\n this.branchingVideo2DContent = [{}];\r\n this.enableJourney = false;\r\n this.showBranchingVideos = false;\r\n this.toggle = \"2D\";\r\n },\r\n showJourney() {\r\n const content =\r\n this.toggle === \"360\"\r\n ? this.branchingVideoContent\r\n : this.branchingVideo2DContent;\r\n this.$store.commit(\"map/setExperienceJourney\", true);\r\n this.$store.commit(\"map/setVideoToggle\", this.accessibilityMode);\r\n this.$store.dispatch(\"wagtail/setCurrentPopup\", { content: content });\r\n this.$root.$emit(\"open-lightbox\");\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style></style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./journeySelector.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./journeySelector.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./journeySelector.vue?vue&type=template&id=736e07dc&\"\nimport script from \"./journeySelector.vue?vue&type=script&lang=js&\"\nexport * from \"./journeySelector.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-btn',{attrs:{\"block\":\"\"},on:{\"click\":_vm.reset}},[_vm._v(\" \"+_vm._s(_vm.data.title)+\" \"),(_vm.data.icon)?_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.data.icon)+\" \")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-btn @click=\"reset\" block>\r\n {{ data.title }}\r\n <v-icon\r\n right\r\n v-if=\"data.icon\"\r\n >\r\n {{ data.icon }}\r\n </v-icon>\r\n </v-btn>\r\n</template>\r\n<script>\r\nexport default {\r\n props: [\"data\"],\r\n methods: {\r\n reset() {\r\n this.$store.commit(\"map/setResetMap\", true);\r\n this.$store.commit(\"map/setResetJourney\", true);\r\n this.$store.commit(\"map/setGroupLocation\", null);\r\n this.$store.commit(\"map/setResetRenderLayer\", true);\r\n this.$store.commit(\"map/setResetLocation\", true);\r\n this.$store.commit(\"map/setSelectedLocation\", null);\r\n this.$store.commit(\"map/setRenderLocation\", null);\r\n this.$store.commit(\"map/setPrecinct\", null);\r\n this.$store.commit(\"map/setBackupPrecinct\", null);\r\n this.$store.commit(\"map/setRightSidebarZoomLevel\", null);\r\n this.$store.commit(\"map/setHotspotGroupSelectedLocation\", null);\r\n this.$store.commit(\"map/setJourney\", {\r\n startLocation: null,\r\n stopLocation: null,\r\n entrance: null,\r\n exit: null,\r\n });\r\n },\r\n },\r\n};\r\n</script>\r\n<style></style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./resetMapBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./resetMapBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./resetMapBlock.vue?vue&type=template&id=63b4b9f7&\"\nimport script from \"./resetMapBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./resetMapBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-expansion-panels',[_c('v-expansion-panel',[_c('v-expansion-panel-header',[_vm._v(\" \"+_vm._s(_vm.data.panel_title)+\" \")]),_c('v-expansion-panel-content',[_c('v-select',{attrs:{\"items\":_vm.data.selected_precinct,\"item-text\":\"title\",\"item-value\":\"id\",\"placeholder\":_vm.data.title,\"return-object\":\"\"},on:{\"change\":_vm.handlePrecinctSelection},model:{value:(_vm.selectedPrecinct),callback:function ($$v) {_vm.selectedPrecinct=$$v},expression:\"selectedPrecinct\"}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-expansion-panels>\r\n <v-expansion-panel>\r\n <v-expansion-panel-header>\r\n {{ data.panel_title }}\r\n </v-expansion-panel-header>\r\n <v-expansion-panel-content>\r\n <v-select\r\n :items=\"data.selected_precinct\"\r\n item-text=\"title\"\r\n item-value=\"id\"\r\n :placeholder=\"data.title\"\r\n return-object\r\n v-model=\"selectedPrecinct\"\r\n @change=\"handlePrecinctSelection\"\r\n >\r\n </v-select>\r\n\r\n <!--\r\n <v-btn\r\n :disabled=\"!selectedPrecinct\"\r\n class=\"mt-4\"\r\n block\r\n @click=\"handleReset()\"\r\n >\r\n Reset\r\n </v-btn>\r\n -->\r\n </v-expansion-panel-content>\r\n </v-expansion-panel>\r\n </v-expansion-panels>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n props: {\r\n data: Object,\r\n },\r\n data() {\r\n return {\r\n selectedPrecinct: null,\r\n };\r\n },\r\n computed: {\r\n precinct() {\r\n return this.$store.state.map.precinct;\r\n },\r\n },\r\n methods: {\r\n handlePrecinctSelection() {\r\n console.log(\"[PRECINCT]\", this.selectedPrecinct);\r\n this.$store.commit(\"map/setPrecinct\", this.selectedPrecinct);\r\n this.$store.commit(\"map/setGroupLocation\", null);\r\n this.$store.commit(\"map/setRightSidebarZoomLevel\", this.selectedPrecinct.precinct_zoom_level);\r\n this.$store.commit(\"map/setRenderLocation\", null);\r\n },\r\n handleReset() {\r\n this.$store.commit(\"map/setPrecinct\", null);\r\n this.$store.commit(\"map/setGroupLocation\", null);\r\n this.$store.commit(\"map/setRightSidebarZoomLevel\", null);\r\n this.$store.commit(\"map/setRenderLocation\", null);\r\n this.selectedPrecinct = null;\r\n },\r\n },\r\n watch: {\r\n precinct() {\r\n if (this.precinct == null) {\r\n this.selectedPrecinct = null;\r\n } else {\r\n if (this.precinct.precinct_select != null) {\r\n this.selectedPrecinct = this.precinct.precinct_select;\r\n console.log(\"[PRECINCT BLOCK]\", this.selectedPrecinct);\r\n } else {\r\n this.selectedPrecinct = this.precinct;\r\n }\r\n this.$root.$emit('clear-render-view-2d')\r\n this.$root.$emit('clear-render-layer')\r\n\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./precinctBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./precinctBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./precinctBlock.vue?vue&type=template&id=96db89c0&\"\nimport script from \"./precinctBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./precinctBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\r\n <ParagraphBlock\r\n v-if=\"block.type === 'paragraph'\"\r\n :html=\"block.value\"\r\n :link_colour=\"linkColour\"\r\n ></ParagraphBlock>\r\n <HeadingBlock\r\n v-else-if=\"block.type === 'heading'\"\r\n :title=\"block.value\"\r\n ></HeadingBlock>\r\n <AlertBlock\r\n v-else-if=\"block.type === 'alert'\"\r\n :text=\"block.value\"\r\n ></AlertBlock>\r\n <ColoredNotificationBlock\r\n v-else-if=\"block.type === 'colored_notification'\"\r\n :data=\"block.value\"\r\n ></ColoredNotificationBlock>\r\n <ImageBlock\r\n v-else-if=\"block.type === 'image'\"\r\n :url=\"block.value.file\"\r\n :width=\"block.value.width\"\r\n :height=\"block.value.height\"\r\n ></ImageBlock>\r\n <ImageLinkBlock\r\n v-else-if=\"block.type === 'image_link'\"\r\n :url=\"block.value.image.file\"\r\n :width=\"block.value.image.width\"\r\n :height=\"block.value.image.height\"\r\n :link_url=\"block.value.link_url\"\r\n ></ImageLinkBlock>\r\n <QuoteBlock\r\n v-else-if=\"block.type === 'quote'\"\r\n :text=\"block.value\"\r\n ></QuoteBlock>\r\n <DocumentBlock\r\n v-else-if=\"block.type === 'document'\"\r\n :title=\"block.value.title\"\r\n :url=\"block.value.file\"\r\n ></DocumentBlock>\r\n <VideoBlock\r\n v-else-if=\"block.type === 'video'\"\r\n :url=\"block.value.file\"\r\n :thumbnail=\"block.value.thumbnail\"\r\n :subtitle=\"block.value.subtitle\"\r\n ></VideoBlock>\r\n <LayerFilterSliderBlock\r\n v-else-if=\"block.type === 'layerFilterSlider'\"\r\n :sliderData=\"block.value\"\r\n >\r\n </LayerFilterSliderBlock>\r\n <LayerRadioGroupBlock\r\n v-else-if=\"block.type === 'layerRadioGroup'\"\r\n :groupData=\"block.value\"\r\n >\r\n </LayerRadioGroupBlock>\r\n <CardGalleryBlock\r\n v-else-if=\"block.type === 'cardgallery'\"\r\n :data=\"block.value\"\r\n ></CardGalleryBlock>\r\n <CardGalleryBlock\r\n v-else-if=\"block.type === 'collection_card_gallery'\"\r\n :data=\"block.value[0]\"\r\n ></CardGalleryBlock>\r\n <EmbeddedHtmlBlock\r\n v-else-if=\"block.type === 'embedded_html'\"\r\n :data=\"block.value\"\r\n ></EmbeddedHtmlBlock>\r\n <ButtonLinkRowBlock\r\n v-else-if=\"block.type === 'button_link_row'\"\r\n :data=\"block.value\"\r\n ></ButtonLinkRowBlock>\r\n <OneColumnBlock\r\n v-else-if=\"block.type === 'one_column'\"\r\n :data=\"block.value\"\r\n ></OneColumnBlock>\r\n <TwoColumnBlock\r\n v-else-if=\"block.type === 'two_columns'\"\r\n :data=\"block.value\"\r\n ></TwoColumnBlock>\r\n <ThreeColumnBlock\r\n v-else-if=\"block.type === 'three_columns'\"\r\n :data=\"block.value\"\r\n ></ThreeColumnBlock>\r\n <FourColumnBlock\r\n v-else-if=\"block.type === 'four_columns'\"\r\n :data=\"block.value\"\r\n ></FourColumnBlock>\r\n <PrimaryLeftColumnBlock\r\n v-else-if=\"block.type === 'primary_left_column'\"\r\n :data=\"block.value\"\r\n ></PrimaryLeftColumnBlock>\r\n <PrimaryRightColumnBlock\r\n v-else-if=\"block.type === 'primary_right_column'\"\r\n :data=\"block.value\"\r\n ></PrimaryRightColumnBlock>\r\n <AccordianBlock\r\n v-else-if=\"block.type === 'accordian'\"\r\n :data=\"block.value\"\r\n ></AccordianBlock>\r\n <ContainerBlock\r\n v-else-if=\"block.type === 'container'\"\r\n :data=\"block\"\r\n ></ContainerBlock>\r\n <FullWidthHeaderBlock\r\n v-else-if=\"block.type === 'full_width_header'\"\r\n :headerTitle=\"headerTitle\"\r\n :data=\"block\"\r\n ></FullWidthHeaderBlock>\r\n <TileButtonGridBlock\r\n v-else-if=\"block.type === 'tile_button_grid'\"\r\n :data=\"block.value\"\r\n ></TileButtonGridBlock>\r\n <SelectLocation\r\n v-else-if=\"block.type === 'selectLocation'\"\r\n :item=\"block.value\"\r\n ></SelectLocation>\r\n <SelectHotspotGroup\r\n v-else-if=\"block.type === 'HotspotGroupSelector'\" \r\n :groupData=\"block.value\"\r\n ></SelectHotspotGroup>\r\n <JourneySelector\r\n v-else-if=\"block.model_type === 'JourneyPlanner'\"\r\n :data=\"block\"\r\n ></JourneySelector>\r\n <ResetMapBlock v-else-if=\"block.type === 'resetMap'\" :data=\"block.value\">\r\n </ResetMapBlock>\r\n <PrecinctBlock v-else-if=\"block.type === 'precinctSelector'\" :data=\"block.value\">\r\n </PrecinctBlock>\r\n</template>\r\n\r\n<script>\r\nimport SelectHotspotGroup from \"./selectHotspotGroup.vue\";\r\nimport SelectLocation from \"./selectLocation.vue\";\r\nimport ParagraphBlock from \"./paragraphBlock.vue\";\r\nimport AlertBlock from \"./alertBlock.vue\";\r\nimport HeadingBlock from \"./headingBlock.vue\";\r\nimport ImageBlock from \"./imageBlock.vue\";\r\nimport ImageLinkBlock from \"./imageLinkBlock.vue\";\r\nimport QuoteBlock from \"./quoteBlock.vue\";\r\nimport DocumentBlock from \"./documentBlock.vue\";\r\nimport VideoBlock from \"./videoBlock.vue\";\r\nimport LayerFilterSliderBlock from \"./layerFilterSliderBlock.vue\";\r\nimport LayerRadioGroupBlock from \"./layerRadioGroupBlock.vue\";\r\nimport CardGalleryBlock from \"./cardGalleryBlock.vue\";\r\nimport OneColumnBlock from \"./columns/oneColumnBlock.vue\";\r\nimport TwoColumnBlock from \"./columns/twoColumnBlock.vue\";\r\nimport ThreeColumnBlock from \"./columns/threeColumnBlock.vue\";\r\nimport FourColumnBlock from \"./columns/fourColumnBlock.vue\";\r\nimport PrimaryLeftColumnBlock from \"./columns/primaryLeftColumnBlock.vue\";\r\nimport PrimaryRightColumnBlock from \"./columns/primaryRightColumnBlock.vue\";\r\nimport AccordianBlock from \"./accordianBlock.vue\";\r\nimport EmbeddedHtmlBlock from \"./embeddedHtmlBlock.vue\";\r\nimport ButtonLinkRowBlock from \"./buttonLinkRowBlock.vue\";\r\nimport ColoredNotificationBlock from \"./coloredNotificationBlock.vue\";\r\nimport TileButtonGridBlock from \"./tileButtonGridBlock.vue\";\r\nimport JourneySelector from \"./journeySelector.vue\";\r\nimport ResetMapBlock from \"./resetMapBlock.vue\";\r\nimport PrecinctBlock from \"./precinctBlock.vue\";\r\n\r\nexport default {\r\n name: \"StreamfieldBlock\",\r\n props: [\"block\", \"headerTitle\"],\r\n components: {\r\n PrecinctBlock,\r\n JourneySelector,\r\n ParagraphBlock,\r\n AlertBlock,\r\n HeadingBlock,\r\n ImageBlock,\r\n QuoteBlock,\r\n DocumentBlock,\r\n ColoredNotificationBlock,\r\n VideoBlock,\r\n ImageLinkBlock,\r\n LayerFilterSliderBlock,\r\n LayerRadioGroupBlock,\r\n CardGalleryBlock,\r\n EmbeddedHtmlBlock,\r\n TwoColumnBlock,\r\n ThreeColumnBlock,\r\n FourColumnBlock,\r\n ContainerBlock: () => import(\"./containerBlock.vue\"),\r\n FullWidthHeaderBlock: () => import(\"./fullWidthHeaderBlock.vue\"),\r\n PrimaryLeftColumnBlock,\r\n PrimaryRightColumnBlock,\r\n AccordianBlock,\r\n OneColumnBlock,\r\n ButtonLinkRowBlock,\r\n TileButtonGridBlock,\r\n SelectLocation,\r\n SelectHotspotGroup,\r\n ResetMapBlock,\r\n },\r\n computed: {\r\n isColumnBlock() {\r\n return this.block.type.includes(\"_column\");\r\n },\r\n linkColour() {\r\n return this.$store.state.wagtail.siteSettings.link_colour;\r\n },\r\n },\r\n mounted() {\r\n console.log(this.block, this.linkColour, \"blocker\");\r\n console.log(\"TRACKER\", this.block.type)\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped></style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./streamfieldBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./streamfieldBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./streamfieldBlock.vue?vue&type=template&id=ee7a4d1c&scoped=true&\"\nimport script from \"./streamfieldBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./streamfieldBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ee7a4d1c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-fade-transition',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showLightbox),expression:\"showLightbox\"}],staticClass:\"lightbox\",attrs:{\"tabindex\":\"-1\",\"transition\":\"fade-transition\"}},[_c('FocusLoop',{attrs:{\"is-visible\":_vm.activeTrapLB}},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"flat\":\"\",\"color\":\"transparent\"}},[_c('v-scale-transition',[(_vm.hasBack && _vm.dataFromQLB)?_c('v-btn',{staticClass:\"mr-4 lightbox-btn\",attrs:{\"rounded\":\"\",\"dark\":\"\",\"color\":\"secondary\"},on:{\"click\":function($event){return _vm.$emit('emit-back')}}},[_c('v-icon',[_vm._v(\"mdi-keyboard-backspace\")]),_vm._v(\" Back \")],1):_vm._e()],1),_c('v-spacer'),_c('v-toolbar-title'),_c('v-spacer'),(_vm.accessibilityMode && _vm.isVideo && _vm.hasAccessibleVideoAvailable)?_c('v-switch',{staticClass:\"lightbox-btn accessibility-switch\",staticStyle:{\"padding-top\":\"1.5rem\",\"padding-right\":\"1rem\"},attrs:{\"inset\":\"\",\"label\":\"Toggle Audio\"},on:{\"click\":function($event){return _vm.$emit('accessibilityvideo')}},model:{value:(_vm.accessibilityVideoFlag),callback:function ($$v) {_vm.accessibilityVideoFlag=$$v},expression:\"accessibilityVideoFlag\"}}):_vm._e(),(_vm.accessibilityMode && _vm.hasBeforeAfter)?_c('v-switch',{staticClass:\"lightbox-btn accessibility-switch\",staticStyle:{\"padding-top\":\"1.5rem\",\"padding-right\":\"1rem\"},attrs:{\"inset\":\"\",\"label\":\"Toggle Before/After\"},on:{\"click\":function($event){return _vm.$emit('accessibilitybeforeafter')}},model:{value:(_vm.accessibilityBeforeAfterFlag),callback:function ($$v) {_vm.accessibilityBeforeAfterFlag=$$v},expression:\"accessibilityBeforeAfterFlag\"}}):_vm._e(),(_vm.accessibilityMode && _vm.accessibleTextAvailable)?_c('v-switch',{staticClass:\"lightbox-btn accessibility-switch\",staticStyle:{\"padding-top\":\"1.5rem\",\"padding-right\":\"1rem\"},attrs:{\"inset\":\"\",\"label\":\"Toggle Text\"},on:{\"click\":function($event){return _vm.$emit('accessibility')}},model:{value:(_vm.accessibilityTextFlag),callback:function ($$v) {_vm.accessibilityTextFlag=$$v},expression:\"accessibilityTextFlag\"}}):_vm._e(),_c('v-scale-transition',{attrs:{\"origin\":\"center center\"}},[(_vm.canDownload)?_c('v-btn',{staticClass:\"mr-4 lightbox-btn\",attrs:{\"rounded\":\"\",\"dark\":\"\",\"color\":\"secondary\"},on:{\"click\":function($event){return _vm.$emit('download')}}},[_c('v-icon',[_vm._v(\"mdi-download\")]),_vm._v(\" Download \")],1):_vm._e()],1),(_vm.experienceJourney && _vm.accessibilityMode)?_c('v-switch',{staticClass:\"mt-5 mr-2\",attrs:{\"label\":\"Toggle Accessibility\",\"color\":\"secondary\"},model:{value:(_vm.videoToggle),callback:function ($$v) {_vm.videoToggle=$$v},expression:\"videoToggle\"}}):_vm._e(),_c('v-btn',{staticClass:\"lightbox-btn\",attrs:{\"rounded\":\"\",\"darkemit\":\"\",\"color\":\"secondary\",\"id\":_vm.currentLightboxButtonID},on:{\"click\":function($event){return _vm.$emit('closed')}}},[_c('v-icon',[_vm._v(\"mdi-close\")]),_vm._v(\" Close\")],1)],1),_c('div',{staticClass:\"card\"},[_vm._t(\"default\")],2)],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-fade-transition>\r\n <div\r\n tabindex=\"-1\"\r\n class=\"lightbox\"\r\n transition=\"fade-transition\"\r\n v-show=\"showLightbox\"\r\n >\r\n <FocusLoop :is-visible=\"activeTrapLB\">\r\n <v-toolbar dark flat color=\"transparent\">\r\n <v-scale-transition >\r\n <v-btn\r\n v-if=\"hasBack && dataFromQLB\"\r\n class=\"mr-4 lightbox-btn\"\r\n rounded\r\n dark\r\n color=\"secondary\"\r\n @click=\"$emit('emit-back')\"\r\n \r\n >\r\n <v-icon>mdi-keyboard-backspace</v-icon> Back\r\n </v-btn>\r\n </v-scale-transition>\r\n <v-spacer></v-spacer>\r\n <v-toolbar-title></v-toolbar-title>\r\n <v-spacer></v-spacer>\r\n <v-switch\r\n v-if=\"accessibilityMode && isVideo && hasAccessibleVideoAvailable\"\r\n v-model=\"accessibilityVideoFlag\"\r\n inset\r\n class=\"lightbox-btn accessibility-switch\"\r\n style=\"padding-top: 1.5rem; padding-right: 1rem\"\r\n @click=\"$emit('accessibilityvideo')\"\r\n label=\"Toggle Audio\"\r\n ></v-switch> \r\n <v-switch\r\n v-if=\"accessibilityMode && hasBeforeAfter\"\r\n v-model=\"accessibilityBeforeAfterFlag\"\r\n inset\r\n class=\"lightbox-btn accessibility-switch\"\r\n style=\"padding-top: 1.5rem; padding-right: 1rem\"\r\n @click=\"$emit('accessibilitybeforeafter')\"\r\n label=\"Toggle Before/After\"\r\n ></v-switch>\r\n \r\n <v-switch\r\n v-if=\"accessibilityMode && accessibleTextAvailable\"\r\n v-model=\"accessibilityTextFlag\"\r\n inset\r\n class=\"lightbox-btn accessibility-switch\"\r\n style=\"padding-top: 1.5rem; padding-right: 1rem\"\r\n @click=\"$emit('accessibility')\"\r\n label=\"Toggle Text\"\r\n ></v-switch> \r\n \r\n <v-scale-transition origin=\"center center\">\r\n <v-btn\r\n v-if=\"canDownload\"\r\n class=\"mr-4 lightbox-btn\"\r\n rounded\r\n dark\r\n color=\"secondary\"\r\n @click=\"$emit('download')\"\r\n >\r\n <v-icon>mdi-download</v-icon> Download\r\n </v-btn>\r\n </v-scale-transition>\r\n\r\n <v-switch v-if=\"experienceJourney && accessibilityMode\" label=\"Toggle Accessibility\" color=\"secondary\" class=\"mt-5 mr-2\" v-model=\"videoToggle\">\r\n </v-switch>\r\n \r\n <v-btn\r\n rounded\r\n darkemit\r\n class=\"lightbox-btn\"\r\n color=\"secondary\"\r\n :id=\"currentLightboxButtonID\"\r\n @click=\"$emit('closed')\"\r\n >\r\n <v-icon>mdi-close</v-icon> Close</v-btn\r\n >\r\n </v-toolbar>\r\n <div class=\"card\">\r\n <slot class=\"video\"></slot>\r\n </div>\r\n </FocusLoop>\r\n </div>\r\n </v-fade-transition>\r\n</template>\r\n\r\n<script>\r\nimport { FocusLoop } from \"@vue-a11y/focus-loop\";\r\n\r\nexport default {\r\n name: \"LightboxBase\",\r\n props: [\r\n \"title\",\r\n \"showDownload\",\r\n \"content\",\r\n \"accessibilityTextFlag\",\r\n \"accessibilityMode\",\r\n \"showAccessibleVideo\",\r\n \"accessibilityBeforeAfterFlag\",\r\n \"showAccessibleText\",\r\n \"showLightbox\",\r\n \"hasAccessibleText\",\r\n \"showBack\",\r\n \"dataFromQLB\",\r\n \"hasAccessibleVideo\",\r\n \"isBeforeAfter\",\r\n ],\r\n data: () => ({\r\n dialog: true,\r\n currentFocusIndex: 0,\r\n activeTrapLB: true,\r\n computedValueFromChild: null,\r\n videoToggle: false\r\n }),\r\n components: { FocusLoop },\r\n beforeDestroy() {\r\n //Remove the lightbox from the store if it no longer exists\r\n this.deregisterLightbox();\r\n this.$root.$emit('show-previous-lightbox-buttons')\r\n },\r\n created(){\r\n this.$on('answer-val-changed', this.handleComputedPropertyChange);\r\n\r\n },\r\n mounted() {\r\n console.log(\r\n this.accessibilityTextFlag,\r\n this.accessibilityMode,\r\n this.textAvailable,\r\n this.hasAccessibleVideo,\r\n \"MOUNTING hello console\"\r\n );\r\n let self = this;\r\n\r\n this.$root.$on('hide-previous-lightbox-buttons', () => {\r\n const lightboxes = this.$store.state.lightbox.lightboxObjects\r\n if (lightboxes.length > 1) {\r\n const lastLightboxId = lightboxes[lightboxes.length - 1]\r\n if (this._uid !== lastLightboxId) {\r\n this.$emit(\"hide-lightbox-buttons\")\r\n }\r\n }\r\n })\r\n this.$root.$on('show-previous-lightbox-buttons', () => {\r\n const lightboxes = this.$store.state.lightbox.lightboxObjects\r\n const lastLightboxId = lightboxes[lightboxes.length - 1]\r\n if (this._uid === lastLightboxId) {\r\n this.$emit(\"show-lightbox-buttons\")\r\n }\r\n \r\n })\r\n\r\n //const focusableElement = \".lightbox-btn\";\r\n //let currentElements = focusableElement;\r\n // let firstFocusableElement = document.querySelectorAll(currentElements)[0];\r\n // let focusableContent = document.querySelectorAll(currentElements);\r\n // let lastFocusableElement = focusableContent[focusableContent.length - 1];\r\n\r\n this.updateLightboxStatus();\r\n\r\n window.addEventListener(\"keydown\", function (event) {\r\n let isTabPressed = event.key === \"Tab\";\r\n if (!isTabPressed) {\r\n if (event.key === \"Escape\") {\r\n self.$emit(\"closed\");\r\n }\r\n }\r\n });\r\n },\r\n methods: {\r\n updateLightboxStatus() {\r\n if (this.showLightbox) {\r\n this.registerLightbox();\r\n this.$root.$emit('hide-previous-lightbox-buttons')\r\n } else {\r\n // Not sure if this is ever reached\r\n // Write code in beforeDestroy() to handle stuff when de-registering the lightbox\r\n this.deregisterLightbox(); \r\n }\r\n },\r\n registerLightbox() {\r\n this.$store.dispatch(\"lightbox/pushLightbox\", this._uid);\r\n },\r\n deregisterLightbox() {\r\n this.$store.dispatch(\"lightbox/popLightbox\", this._uid);\r\n },\r\n handleComputedPropertyChange(newValue) {\r\n console.log(newValue, '@@@@Base')\r\n this.computedValueFromChild = newValue;\r\n }\r\n \r\n },\r\n computed: {\r\n experienceJourney() {\r\n return this.$store.state.map.experienceJourney\r\n },\r\n videoToggleStore() {\r\n return this.$store.state.map.videoToggle\r\n },\r\n\r\n canDownload() {\r\n return this.showDownload;\r\n },\r\n hasBack(){\r\n return this.showBack;\r\n },\r\n isVideo() {\r\n return this.showAccessibleVideo;\r\n },\r\n accessibleTextAvailable() {\r\n return this.hasAccessibleText;\r\n },\r\n hasAccessibleVideoAvailable() {\r\n return this.hasAccessibleVideo;\r\n },\r\n hasBeforeAfter() {\r\n return this.isBeforeAfter;\r\n },\r\n isTopLightbox() {\r\n if (this.$store.state.lightbox.lightboxObjects.length <= 0) return false;\r\n\r\n //Return true if the last item in the lightbox list is this lightbox\r\n return (\r\n this.$store.state.lightbox.lightboxObjects[\r\n this.$store.state.lightbox.lightboxObjects.length - 1\r\n ] == this._uid\r\n );\r\n },\r\n currentLightboxButtonID() {\r\n return \"lightboxClosebtn\" + this._uid;\r\n },\r\n },\r\n watch: {\r\n videoToggleStore () {\r\n this.videoToggle = this.videoToggleStore\r\n },\r\n videoToggle () {\r\n this.$store.commit('map/setVideoToggle', this.videoToggle)\r\n },\r\n showLightbox() {\r\n this.updateLightboxStatus();\r\n },\r\n isTopLightbox() {\r\n if (this.isTopLightbox) {\r\n console.log(this._uid + \" - I'm now the top level lightbox\");\r\n let self = this;\r\n self.$nextTick(() => {\r\n //focus the first button in the lighbox to engage focus shift and focus trap\r\n let targetElement = document.getElementById(\r\n self.currentLightboxButtonID\r\n );\r\n targetElement.focus();\r\n });\r\n } else {\r\n console.log(this._uid + \" - I'm no longer the top level lightbox\");\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n\r\n<style scoped>\r\n.lightbox {\r\n position: fixed;\r\n top: 0px;\r\n bottom: 0px;\r\n left: 0px;\r\n right: 0px;\r\n background: rgba(0, 0, 0, 0.5);\r\n z-index: 5;\r\n backdrop-filter: blur(10px);\r\n}\r\n\r\n.card {\r\n position: absolute;\r\n top: 64px;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n}\r\n\r\n.caption {\r\n text-align: center;\r\n position: absolute;\r\n width: 100%;\r\n bottom: 0px;\r\n background: rgba(0, 0, 0, 0.75);\r\n color: white;\r\n}\r\n.accessibility_fab {\r\n bottom: 20px;\r\n}\r\n.lightbox-btn:focus-visible {\r\n outline: 4px dashed darkorange;\r\n}\r\n@media (max-width: 600px) {\r\n .card {\r\n position: absolute;\r\n top: 58px;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n }\r\n}\r\n.accessibility-switch {\r\n padding-top: 1.5rem;\r\n padding-right: 1rem;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxBase.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxBase.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxBase.vue?vue&type=template&id=76a7c751&scoped=true&\"\nimport script from \"./LightboxBase.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxBase.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LightboxBase.vue?vue&type=style&index=0&id=76a7c751&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"76a7c751\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"wrapper\"},[(_vm.hasAccessibleText && _vm.accessibilityMode && _vm.accessibilityTextFlag)?_c('div',{staticClass:\"header text-center white--text pa-2\",attrs:{\"id\":_vm.ariaDescription,\"aria-hidden\":\"false\"}},[_vm._v(_vm._s(_vm.accessibilityText)+\" \")]):_vm._e(),_c('div',{staticClass:\"main\",style:(_vm.isVimeoVideo)},[_vm._t(\"default\")],2),(_vm.hasCaption)?_c('div',{staticClass:\"footer text-center pa-2 white--text\"},[_vm._v(_vm._s(_vm.captionText))]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n\r\n <div class=\"wrapper\">\r\n <div v-if=\"hasAccessibleText && accessibilityMode && accessibilityTextFlag\"\r\n class=\"header text-center white--text pa-2\" :id=\"ariaDescription\" aria-hidden=\"false\">{{\r\n accessibilityText\r\n }}\r\n </div>\r\n\r\n <div class=\"main\" :style=\"isVimeoVideo\">\r\n <slot></slot>\r\n </div>\r\n <div v-if=\"hasCaption\" class=\"footer text-center pa-2 white--text\">{{ captionText }}</div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"LightboxContentLayout\",\r\n\r\n data: () => ({\r\n dialog: true,\r\n isMobile: false\r\n }),\r\n props: [\"data\", \"vimeoVideo\",\"C\", \"accessibilityTextFlag\", \"accessibilityText\", \"ariaDescription\", \"captionText\"],\r\n mounted() {\r\n },\r\n methods: {\r\n },\r\n computed: {\r\n hasCaption() {\r\n if (this.captionText !== undefined && this.captionText !== \"\") return true;\r\n return false;\r\n },\r\n hasAccessibleText() {\r\n if (this.accessibilityText !== undefined && this.accessibilityText !== \"\") return true;\r\n return false;\r\n },\r\n isVimeoVideo(){\r\n if(this.vimeoVideo == true){\r\n return 'overflow: hidden;'\r\n }else return ''\r\n },\r\n accessibilityMode() {\r\n return this.$store.state.wagtail.accessibilityMode;\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n\r\n<style scoped>\r\n.header {\r\n max-height: 20%;\r\n overflow-y: auto;\r\n /* background-color: green; */\r\n word-wrap: break-word;\r\n writing-mode: horizontal-tb;\r\n}\r\n\r\n.main {\r\n /* flex: 2; */\r\n /* flex-grow: 2; */\r\n /* flex-shrink: 1; */\r\n flex-basis: 90%;\r\n overflow-y: auto;\r\n /* background-color:rgba(0,0,0,0.25); */ \r\n}\r\n\r\n.footer {\r\n max-height: 20%;\r\n overflow-y: auto;\r\n /* background-color: brown; */\r\n word-wrap: break-word;\r\n writing-mode: horizontal-tb;\r\n}\r\n\r\n.wrapper {\r\n display: flex;\r\n flex-direction: column;\r\n height: 90vh\r\n}\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxContentLayout.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxContentLayout.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxContentLayout.vue?vue&type=template&id=93ff3abe&scoped=true&\"\nimport script from \"./LightboxContentLayout.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxContentLayout.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LightboxContentLayout.vue?vue&type=style&index=0&id=93ff3abe&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"93ff3abe\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('LightboxBase',{ref:\"lightbox_btn\",staticStyle:{\"z-index\":\"+99999\"},attrs:{\"title\":_vm.title,\"accessibilityTextFlag\":_vm.accessibilityTextFlag,\"accessibilityVideoFlag\":_vm.accessibilityVideoFlag,\"accessibilityMode\":_vm.accessibilityMode,\"hasAccessibleText\":this.accessibleText,\"hasAccessibleVideo\":this.accessibleVideo,\"isBeforeAfter\":_vm.isBeforeAfter,\"showDownload\":_vm.canDownload,\"showBack\":_vm.hasBack,\"showAccessibleVideo\":_vm.isVideo,\"dataFromQLB\":_vm.dataFromQuestionLB,\"showLightbox\":_vm.showLightbox},on:{\"closed\":function($event){return _vm.$emit('closed')},\"download\":function($event){return _vm.download()},\"emit-back\":function($event){return _vm.emitBack()},\"accessibility\":function($event){return _vm.accessibilityTextTrigger()},\"accessibilityvideo\":function($event){return _vm.accessibilityVideoTrigger()},\"accessibilitybeforeafter\":function($event){return _vm.accessibilityBeforeAfterTrigger()},\"hide-lightbox-buttons\":_vm.handleHideLightboxButtons,\"show-lightbox-buttons\":_vm.handleShowLightboxButtons}},[_c('LoadingOverlay',{staticClass:\"loading-overlay\",attrs:{\"title\":\"\"}}),_c('v-carousel',{attrs:{\"height\":\"90vh\",\"show-arrows\":_vm.content.length > 1,\"hide-delimiters\":!_vm.showDelimiters,\"hide-delimiter-background\":true,\"dark\":\"\",\"touchless\":\"\"},scopedSlots:_vm._u([{key:\"prev\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showLightboxButtons),expression:\"showLightboxButtons\"}],attrs:{\"color\":\"secondary\",\"rounded\":\"\",\"fab\":_vm.$vuetify.breakpoint.smAndDown,\"small\":_vm.$vuetify.breakpoint.smAndDown,\"aria-label\":\"prev-visual\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-chevron-left\")]),_c('span',{staticClass:\"d-none d-md-inline\"},[_vm._v(\"Prev\")])],1)]}},{key:\"next\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showLightboxButtons),expression:\"showLightboxButtons\"}],attrs:{\"color\":\"secondary\",\"rounded\":\"\",\"fab\":_vm.$vuetify.breakpoint.smAndDown,\"small\":_vm.$vuetify.breakpoint.smAndDown,\"aria-label\":\"next-visual\"}},'v-btn',attrs,false),on),[_c('span',{staticClass:\"d-none d-md-inline\"},[_vm._v(\"Next\")]),_c('v-icon',[_vm._v(\"mdi-chevron-right\")])],1)]}}]),model:{value:(_vm.index),callback:function ($$v) {_vm.index=$$v},expression:\"index\"}},_vm._l((_vm.content),function(item,index){return _c('v-carousel-item',{key:item.id},[_c('div',{staticClass:\"lightbox-content\"},[_c('v-container',{class:_vm.multi ? 'lightbox-container-multi' : 'lightbox-container',attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c('v-row',{staticClass:\"lightbox-row\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\"fill-height lightbox-col\"},[(item.type === 'iframe')?_c('LightboxIframeCard',{attrs:{\"data\":item.value,\"accessibilityTextFlag\":_vm.accessibilityTextFlag,\"ariaDescription\":'accessibilityDescriptionIframe' + index}}):_vm._e(),(item.type === 'image')?_c('LightboxImageCard',{attrs:{\"data\":item.value,\"accessibilityTextFlag\":_vm.accessibilityTextFlag,\"ariaDescription\":'accessibilityDescriptionImage' + index}}):_vm._e(),(item.type === 'video')?_c('LightboxVideoCard',{attrs:{\"data\":item.value,\"accessibilityTextFlag\":_vm.accessibilityTextFlag,\"accessibilityVideoFlag\":_vm.accessibilityVideoFlag,\"ariaDescription\":'accessibilityDescriptionVideo' + index++}}):_vm._e(),(item.type === 'branching_video_360')?_c('LightboxBranchingVideo360Card',{attrs:{\"data\":item.value}}):_vm._e(),(item.type === 'branching_video')?_c('LightboxBranchingVideoCard',{attrs:{\"data\":item.value}}):_vm._e(),(item.type === 'video_360')?_c('LightboxVideo360Card',{attrs:{\"data\":item.value,\"accessibilityTextFlag\":_vm.accessibilityTextFlag,\"accessibilityVideoFlag\":_vm.accessibilityVideoFlag,\"accessibilityMode\":_vm.accessibilityMode,\"ariaDescription\":'accessibilityDescriptionVideo' + index++}}):_vm._e(),(item.type === 'document')?_c('LightboxDocumentCard',{attrs:{\"data\":item.value,\"accessibilityTextFlag\":_vm.accessibilityTextFlag,\"ariaDescription\":'accessibilityDescriptionDocument' + index}}):_vm._e(),(item.type === 'panoramaroompopup')?_c('LightboxCustomPanoramaCard',{attrs:{\"data\":item.value,\"accessibilityTextFlag\":_vm.accessibilityTextFlag,\"ariaDescription\":'accessibilityDescriptionVideo' + index}}):_vm._e(),(item.type === 'page')?_c('LightboxWagtailPage',{attrs:{\"data\":item.value,\"accessibilityTextFlag\":_vm.accessibilityTextFlag,\"ariaDescription\":'accessibilityDescriptionWagtailPage' + index}}):_vm._e(),(item.type === 'questionBlock')?_c('QuestionsLightbox',{ref:\"childComponentRef\",refInFor:true,attrs:{\"data\":item.value,\"accessibility\":_vm.accessibilityTextFlag,\"ariaDescription\":'accessibiilityDescriptionQuestionBlock' + index},on:{\"answer-val-changed\":_vm.handleDataFromChild}}):_vm._e(),(item.type === 'page_struct')?_c('LightboxWagtailPageStruct',{attrs:{\"data\":item.value,\"accessibilityTextFlag\":_vm.accessibilityTextFlag,\"ariaDescription\":'accessibilityDescriptionPageStructure' + index}}):_vm._e(),(item.type === 'beforeafter')?_c('LightboxBeforeAfterCard',{attrs:{\"data\":item.value,\"accessibilityTextFlag\":_vm.accessibilityTextFlag,\"accessibleSliderValue\":_vm.sliderValue,\"ariaDescription\":'accessibilityDescriptionBeforeAfterImage' + index}}):_vm._e(),(item.type === 'biography')?_c('LightboxBiographyCard',{attrs:{\"data\":item.value,\"accessibilityTextFlag\":_vm.accessibilityTextFlag,\"ariaDescription\":'accessibilityDescriptionBiography' + index}}):_vm._e(),(item.type === 'audio')?_c('LightboxAudio',{attrs:{\"data\":item.value}}):_vm._e(),(item.type === 'external_link')?_c('LightboxExternalLinkCard',{attrs:{\"data\":item.value,\"accessibilityTextFlag\":_vm.accessibilityTextFlag,\"ariaDescription\":'accessibilityDescriptionExternalLink' + index}}):_vm._e(),(item.type === 'internal_page_link')?_c('LightboxInternalLinkCard',{attrs:{\"data\":item.value,\"accessibilityTextFlag\":_vm.accessibilityTextFlag,\"ariaDescription\":'accessibilityDescriptionInternalLink' + index}}):_vm._e()],1)],1)],1)],1)])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('LightboxContentLayout',{attrs:{\"accessibilityText\":_vm.data.accessibility_text,\"ariaDescription\":_vm.ariaDescription,\"captionText\":_vm.data.caption,\"accessibilityTextFlag\":_vm.accessibilityTextFlag}},[_c('v-img',{style:({\n width: '100%',\n height: '100%',\n }),attrs:{\"role\":\"img\",\"src\":_vm.image,\"contain\":true,\"title\":_vm.data.alternative_text,\"aria-describedby\":this.ariaDescription}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <LightboxContentLayout :accessibilityText=\"data.accessibility_text\" :ariaDescription=\"ariaDescription\"\r\n :captionText=\"data.caption\" :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n >\r\n <v-img \r\n role=\"img\"\r\n :style=\"{\r\n width: '100%',\r\n height: '100%',\r\n }\" :src=\"image\" :contain=\"true\" :title=\"data.alternative_text\" :aria-describedby=\"this.ariaDescription\"\r\n >\r\n </v-img>\r\n </LightboxContentLayout>\r\n</template>\r\n<script>\r\n\r\nimport LightboxContentLayout from \"./LightboxContentLayout.vue\"\r\n\r\nexport default {\r\n name: \"LightboxImageCard\",\r\n\r\n data: () => ({\r\n dialog: true,\r\n isMobile: false\r\n }),\r\n props: [\"data\", \"C\", \"accessibilityTextFlag\", \"ariaDescription\"],\r\n components: { LightboxContentLayout },\r\n mounted() {\r\n },\r\n methods: {\r\n },\r\n computed: {\r\n image() {\r\n if (this.data && this.data.file) return this.data.file;\r\n return undefined;\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxImageCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxImageCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxImageCard.vue?vue&type=template&id=6d084fcd&scoped=true&\"\nimport script from \"./LightboxImageCard.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxImageCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d084fcd\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('LightboxContentLayout',{attrs:{\"accessibilityText\":_vm.data.accessibility_text,\"ariaDescription\":_vm.ariaDescription,\"captionText\":_vm.data.caption,\"accessibilityTextFlag\":_vm.accessibilityTextFlag}},[_c('video',{ref:\"videoRef\",staticClass:\"lightbox-video\",attrs:{\"aria-label\":_vm.accessibilityLabel,\"id\":\"lightboxvideo\",\"controls\":\"\",\"type\":\"video/mp4\",\"crossorigin\":\"anonymous\"}},[_c('source',{attrs:{\"src\":_vm.videoAccessibility,\"type\":\"video/mp4\"}}),_c('track',{attrs:{\"label\":\"English\",\"kind\":\"subtitles\",\"srclang\":\"en\",\"src\":_vm.subtitle,\"default\":\"\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <LightboxContentLayout\r\n :accessibilityText=\"data.accessibility_text\"\r\n :ariaDescription=\"ariaDescription\"\r\n :captionText=\"data.caption\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n >\r\n <video\r\n :aria-label=\"accessibilityLabel\"\r\n id=\"lightboxvideo\"\r\n class=\"lightbox-video\"\r\n controls\r\n ref=\"videoRef\"\r\n type=\"video/mp4\"\r\n crossorigin=\"anonymous\"\r\n >\r\n <source :src=\"videoAccessibility\" \r\n type=\"video/mp4\" \r\n />\r\n <track\r\n label=\"English\"\r\n kind=\"subtitles\"\r\n srclang=\"en\"\r\n :src=\"subtitle\"\r\n default\r\n />\r\n </video>\r\n </LightboxContentLayout>\r\n</template>\r\n\r\n<script>\r\nimport LightboxContentLayout from \"./LightboxContentLayout.vue\";\r\n\r\nexport default {\r\n name: \"LightboxVideoCard\",\r\n data: () => ({\r\n dialog: true,\r\n isMobile: false,\r\n windowWidth: window.screen.width,\r\n isTablet: false,\r\n isLaptop: false,\r\n }),\r\n props: [\r\n \"data\",\r\n \"accessibilityTextFlag\",\r\n \"accessibilityVideoFlag\",\r\n \"accessibility\",\r\n \"ariaDescription\",\r\n ],\r\n components: { LightboxContentLayout },\r\n mounted() {\r\n console.log(this.data.subtitle, \"data from videolb\");\r\n const video = this.$refs.videoRef;\r\n\r\n video.addEventListener(\"loadeddata\", () => {\r\n if(video.readyState >= 3) {\r\n if (this.data.autoplay) {\r\n video.play();\r\n }\r\n }\r\n })\r\n\r\n video.addEventListener(\"ended\", (event) => {\r\n this.$emit(\"ended\");\r\n });\r\n\r\n for (let i = 0; i < video.textTracks.length; i++) {\r\n video.textTracks[i].mode = \"hidden\";\r\n }\r\n },\r\n computed: {\r\n videoToggle() {\r\n return this.$store.state.map.videoToggle\r\n },\r\n video() {\r\n if (this.data && this.data.file) return this.data.file;\r\n\r\n if (this.data.video2D && this.data.video2D.file)\r\n return this.data.video2D.file;\r\n return undefined;\r\n },\r\n subtitle() {\r\n if (this.data && this.data.subtitle) return this.data.subtitle;\r\n\r\n if (this.data.video2D && this.data.video2D.subtitle)\r\n return this.data.video2D.subtitle;\r\n return undefined;\r\n },\r\n videoAccessibility() {\r\n if ((this.accessibilityMode && this.accessibilityVideoFlag)) {\r\n if (process.env.NODE_ENV === \"development\") {\r\n // Branching Videos don't have the full URL but Card Galleries Videos do\r\n const url = new URL(\r\n this.data.accessible_video,\r\n process.env.VUE_APP_BACKEND_URL.slice(0, -1)\r\n );\r\n\r\n return url;\r\n }\r\n return this.data.accessible_video\r\n }\r\n const accessibilityVideo = (this.data && this.data.video2DAccessibility &&\r\n this.data.video2DAccessibility.file)\r\n\r\n if (this.videoToggle && accessibilityVideo) {\r\n if (process.env.NODE_ENV === \"development\") {\r\n // Branching Videos don't have the full URL but Card Galleries Videos do\r\n const url = new URL(\r\n accessibilityVideo,\r\n process.env.VUE_APP_BACKEND_URL.slice(0, -1)\r\n );\r\n\r\n return url;\r\n }\r\n\r\n return accessibilityVideo\r\n }\r\n\r\n if (process.env.NODE_ENV === \"development\") {\r\n // Branching Videos don't have the full URL but Card Galleries Videos do\r\n const url = new URL(\r\n this.data.file || (this.data.video2D && this.data.video2D.file),\r\n process.env.VUE_APP_BACKEND_URL.slice(0, -1)\r\n );\r\n return url;\r\n }\r\n\r\n return this.data.file || (this.data.video2D && this.data.video2D.file);\r\n },\r\n accessibilityLabel() {\r\n if (this.data && this.data.file) return this.data.accessibility_text;\r\n return undefined;\r\n },\r\n hasCaption() {\r\n if (this.data && this.data.caption)\r\n if (this.data.caption !== undefined) return true;\r\n return false;\r\n },\r\n accessibilityMode() {\r\n return this.$store.state.wagtail.accessibilityMode;\r\n },\r\n hasAccessibleText() {\r\n if (this.data && this.data.accessibility_text) return true;\r\n return false;\r\n },\r\n videoWidth() {\r\n if (this.accessibilityTextFlag) return 60 + \"%\";\r\n if (\r\n this.hasAccessibleText &&\r\n this.hasCaption &&\r\n this.accessibilityTextFlag == true\r\n )\r\n return 70 + \"%\";\r\n return 100 + \"%\";\r\n },\r\n },\r\n watch: {\r\n accessibilityVideoFlag(newValue) {\r\n console.log(newValue, \"value changed video\");\r\n var videoElement = document.getElementById(\"lightboxvideo\");\r\n\r\n if (this.accessibilityVideoFlag) {\r\n videoElement.pause();\r\n videoElement.removeAttribute(\"src\");\r\n videoElement.setAttribute(\"src\", this.data.accessible_video); // empty source\r\n videoElement.load();\r\n } else {\r\n videoElement.pause();\r\n videoElement.removeAttribute(\"src\");\r\n videoElement.setAttribute(\"src\", this.data.file); // empty source\r\n videoElement.load();\r\n }\r\n },\r\n videoAccessibility: {\r\n handler () {\r\n const video = this.$refs.videoRef;\r\n video.load();\r\n video.play();\r\n video.addEventListener(\"ended\", (event) => {\r\n this.$emit(\"ended\");\r\n });\r\n },\r\n deep: true\r\n },\r\n },\r\n methods: {\r\n textFlag() {\r\n console.log(\"triggered here from image\");\r\n if (this.accessibilityTextFlag == false) {\r\n this.accessibilityTextFlag = true;\r\n } else {\r\n this.accessibilityTextFlag = false;\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.full-screen {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\nvideo {\r\n margin-left: auto;\r\n margin-right: auto;\r\n display: block;\r\n}\r\n\r\n.lightbox-video {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxVideoCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxVideoCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxVideoCard.vue?vue&type=template&id=6f4f8927&scoped=true&\"\nimport script from \"./LightboxVideoCard.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxVideoCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LightboxVideoCard.vue?vue&type=style&index=0&id=6f4f8927&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6f4f8927\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('LightboxContentLayout',{attrs:{\"accessibilityText\":_vm.data.accessibility_text,\"ariaDescription\":undefined,\"captionText\":_vm.data.caption,\"accessibilityTextFlag\":false}},[_c('iframe',{staticClass:\"full-screen\",attrs:{\"src\":_vm.pdf,\"seamless\":\"true\",\"frameBorder\":\"0\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n\r\n <LightboxContentLayout :accessibilityText=\"data.accessibility_text\" :ariaDescription=\"undefined\"\r\n :captionText=\"data.caption\" :accessibilityTextFlag=\"false\">\r\n <iframe\r\n class=\"full-screen\"\r\n :src=\"pdf\"\r\n seamless=\"true\"\r\n frameBorder=\"0\"\r\n >\r\n </iframe>\r\n </LightboxContentLayout>\r\n\r\n</template>\r\n\r\n<script>\r\nimport {filesize} from \"filesize\"\r\nimport LightboxContentLayout from './LightboxContentLayout.vue';\r\n\r\nexport default {\r\n name: \"LightboxDocumentCard\",\r\n data: () => ({\r\n dialog: true,\r\n downloadLink: true,\r\n }),\r\n props: [\"data\"],\r\n components:{LightboxContentLayout},\r\n computed: {\r\n pdf() {\r\n console.log(this.data, \"document data\");\r\n if (this.data && this.data.file) return \"/pdfjs/web/viewer.html?file=\" + encodeURIComponent(this.data.file) + \"#page=0\" + \"&zoom=\" + this.data.default_zoom; \r\n return undefined;\r\n },\r\n size() {\r\n return filesize(this.data.file_size)\r\n },\r\n hasCaption() {\r\n if (this.data && this.data.caption)\r\n if (this.data.caption !== undefined)\r\n return true\r\n return false\r\n },\r\n },\r\n methods: {\r\n openWindow: function (url, label) {\r\n console.log(label)\r\n window.open(url)\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n\r\n<style scoped>\r\n.full-screen {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxDocumentCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxDocumentCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxDocumentCard.vue?vue&type=template&id=1a30be33&scoped=true&\"\nimport script from \"./LightboxDocumentCard.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxDocumentCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LightboxDocumentCard.vue?vue&type=style&index=0&id=1a30be33&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a30be33\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',{staticClass:\"content-container\",attrs:{\"light\":\"\"}},[_c('v-card-text',{staticClass:\"scrollable\"},[(_vm.pageData !== undefined)?_c('WebPageLegacy',{attrs:{\"pageData\":_vm.pageData,\"fill-width\":\"\",\"showTitle\":false,\"showHeader\":false}}):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-card light class=\"content-container\">\r\n <!-- <v-toolbar dense dark flat color=\"primary\">\r\n <v-toolbar-title>{{ pageTitle }}</v-toolbar-title>\r\n </v-toolbar> -->\r\n <v-card-text class=\"scrollable\">\r\n <WebPageLegacy\r\n v-if=\"pageData !== undefined\"\r\n :pageData=\"pageData\"\r\n fill-width\r\n :showTitle=\"false\"\r\n :showHeader=\"false\"\r\n />\r\n </v-card-text>\r\n\r\n </v-card>\r\n</template>\r\n\r\n<script>\r\nimport WebPageLegacy from \"../../views/wagtail/WebPageLegacy\";\r\n\r\nexport default {\r\n name: \"LightboxWagtailPage\",\r\n data: () => ({\r\n pageData: undefined,\r\n }),\r\n props: [\"data\"],\r\n components: { WebPageLegacy },\r\n mounted() {\r\n // Ajax request the page content\r\n // Once page content is established, render page\r\n console.log(this.data.meta.detail_url);\r\n let self = this;\r\n this.$store\r\n .dispatch(\"wagtail/getPageByUrl\", this.data.meta.detail_url)\r\n .then((response) => {\r\n self.pageData = response;\r\n });\r\n },\r\n computed: {\r\n pageTitle() {\r\n if (this.pageData != undefined)\r\n return this.pageData.title\r\n return \"\"\r\n }\r\n }\r\n};\r\n</script>\r\n\r\n\r\n<style scoped>\r\n.video {\r\n width: 100%;\r\n max-height: 100%;\r\n margin: 0 auto;\r\n text-align: center;\r\n /* background-color: black; */\r\n}\r\n\r\n.content-container {\r\n background-color: white;\r\n width: 100%;\r\n height: 100%;\r\n overflow-y: none;\r\n}\r\n\r\n/* .v-card {\r\n display: flex !important;\r\n flex-direction: column;\r\n}\r\n*/\r\n.scrollable {\r\n position:absolute;\r\n top:0px;\r\n bottom:0px;\r\n overflow-y: auto;\r\n} \r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxWagtailPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxWagtailPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxWagtailPage.vue?vue&type=template&id=5bd60b41&scoped=true&\"\nimport script from \"./LightboxWagtailPage.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxWagtailPage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LightboxWagtailPage.vue?vue&type=style&index=0&id=5bd60b41&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bd60b41\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('LightboxContentLayout',{attrs:{\"accessibilityText\":_vm.data.accessibility_text,\"ariaDescription\":undefined,\"captionText\":_vm.data.caption,\"accessibilityTextFlag\":false}},[_c('v-container',{staticClass:\"container\"},[_c('v-row',{staticClass:\"row\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\"col\",attrs:{\"cols\":_vm.cols,\"sm\":_vm.sm,\"md\":_vm.md,\"lg\":_vm.lg,\"xl\":_vm.xl}},[_c('v-card',{attrs:{\"light\":\"\"}},[_c('v-card-text',[(_vm.pageData !== undefined && this.data.page.meta.type == 'engage_pages.WebPageLegacy' )?_c('WebPageLegacy',{attrs:{\"pageData\":_vm.pageData,\"fill-width\":\"\",\"showTitle\":true,\"showHeader\":false,\"hasAccessibleModal\":false}}):_vm._e(),(_vm.pageData !== undefined && _vm.data.page.meta.type == 'engage_pages.WebPage' )?_c('WebPage',{attrs:{\"pageData\":_vm.pageData,\"fill-width\":\"\",\"showTitle\":true,\"showHeader\":false,\"hasAccessibleModal\":false}}):_vm._e()],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n\r\n <LightboxContentLayout :accessibilityText=\"data.accessibility_text\" :ariaDescription=\"undefined\"\r\n :captionText=\"data.caption\" :accessibilityTextFlag=\"false\">\r\n \r\n <v-container class=\"container\">\r\n <v-row align=\"center\" justify=\"center\" class=\"row\">\r\n <v-col class=\"col\" :cols=\"cols\" :sm=\"sm\" :md=\"md\" :lg=\"lg\" :xl=\"xl\">\r\n <v-card light>\r\n <!-- <v-toolbar dense dark color=\"primary\">\r\n <v-toolbar-title>{{pageData.title}}</v-toolbar-title>\r\n </v-toolbar> -->\r\n <v-card-text>\r\n <WebPageLegacy\r\n v-if=\"pageData !== undefined && this.data.page.meta.type == 'engage_pages.WebPageLegacy' \"\r\n :pageData=\"pageData\"\r\n fill-width\r\n :showTitle=\"true\"\r\n :showHeader=\"false\"\r\n :hasAccessibleModal=\"false\"\r\n />\r\n <WebPage\r\n v-if=\"pageData !== undefined && data.page.meta.type == 'engage_pages.WebPage' \"\r\n :pageData=\"pageData\"\r\n fill-width\r\n :showTitle=\"true\"\r\n :showHeader=\"false\"\r\n :hasAccessibleModal=\"false\"\r\n />\r\n\r\n \r\n </v-card-text>\r\n </v-card>\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n </LightboxContentLayout>\r\n\r\n\r\n\r\n\r\n</template>\r\n\r\n<script>\r\n\r\nimport WebPage from \"../../views/wagtail/WebPage.vue\"\r\nimport LightboxContentLayout from './LightboxContentLayout.vue';\r\nimport EngagementRoom from '../../views/wagtail/EngagementRoom.vue';\r\n\r\n\r\nexport default {\r\n name: \"LightboxWagtailPageStruct\",\r\n data: () => ({\r\n pageData: undefined,\r\n }),\r\n props: [\"data\"],\r\n components: { LightboxContentLayout, WebPage, EngagementRoom },\r\n mounted() {\r\n // Ajax request the page content\r\n // Once page content is established, render page\r\n console.log(this.data, \"data from page_struct\")\r\n console.log(this.data.page.meta.detail_url);\r\n let self = this;\r\n this.$store\r\n .dispatch(\"wagtail/getPageByUrl\", this.data.page.meta.detail_url)\r\n .then((response) => {\r\n self.pageData = response;\r\n });\r\n },\r\n computed: {\r\n pageTitle() {\r\n if (this.pageData != undefined) return this.pageData.title;\r\n return \"\";\r\n },\r\n sm() {\r\n return 12\r\n },\r\n md() {\r\n return this.data.half_width ? 10 : 12\r\n },\r\n lg() {\r\n return this.data.half_width ? 8 : 12\r\n },\r\n xl() {\r\n return this.data.half_width ? 6 : 12\r\n },\r\n cols() {\r\n return 12\r\n }\r\n },\r\n};\r\n</script>\r\n\r\n\r\n<style scoped>\r\n\r\n.container {\r\n padding: 0px;\r\n /* margin: 0px; */\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.row {\r\n padding: 0px;\r\n margin: 0px;\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.col {\r\n padding: 0px;\r\n margin: 0px;\r\n max-height: 100%;\r\n overflow-y: auto;\r\n}\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxWagtailPageStruct.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxWagtailPageStruct.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxWagtailPageStruct.vue?vue&type=template&id=2d96ac76&scoped=true&\"\nimport script from \"./LightboxWagtailPageStruct.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxWagtailPageStruct.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LightboxWagtailPageStruct.vue?vue&type=style&index=0&id=2d96ac76&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2d96ac76\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"full-screen\"},[_c('v-fade-transition',[_c('LoadingOverlay',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loaded),expression:\"!loaded\"}],staticClass:\"loading-overlay\",attrs:{\"title\":_vm.data.title}})],1),_c('LightboxContentLayout',{attrs:{\"accessibilityText\":_vm.data.accessibility_text,\"ariaDescription\":undefined,\"captionText\":_vm.data.caption,\"accessibilityTextFlag\":false,\"vimeoVideo\":_vm.data.vimeo_video}},[_c('iframe',{ref:\"iframe\",attrs:{\"src\":_vm.data.url,\"width\":\"100%\",\"height\":\"100%\",\"seamless\":\"true\",\"frameBorder\":\"0\"}})])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-fade-transition',[_c('v-container',{attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('div',{staticClass:\"text-center\"},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"size\":\"50\",\"color\":\"secondary\"}})],1)]),(_vm.title !== '' && _vm.title !== undefined)?_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('div',{staticClass:\"text-center secondary--text pt-6\"},[_c('span',[_vm._v(\"Loading \"+_vm._s(_vm.title))])])]):_vm._e()],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-fade-transition>\r\n <v-container fill-height fluid>\r\n <v-row align=\"center\" justify=\"center\">\r\n <v-col>\r\n <v-row align=\"center\" justify=\"center\">\r\n <div class=\"text-center\">\r\n <v-progress-circular\r\n indeterminate\r\n size=\"50\"\r\n color=\"secondary\"\r\n ></v-progress-circular>\r\n </div>\r\n </v-row>\r\n <v-row align=\"center\" justify=\"center\" v-if=\"title !== '' && title !== undefined\">\r\n <div class=\"text-center secondary--text pt-6\">\r\n <span>Loading {{title}}</span>\r\n </div>\r\n </v-row>\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n </v-fade-transition>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"Loading\",\r\n props: ['title'],\r\n data: () => ({\r\n items: [],\r\n select: undefined,\r\n search: undefined,\r\n loading: undefined,\r\n toggle_exclusive: 1,\r\n }),\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.background {\r\n background-color: rgba(255, 255, 255, 0.5);\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LoadingOverlay.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LoadingOverlay.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LoadingOverlay.vue?vue&type=template&id=70e804ff&scoped=true&\"\nimport script from \"./LoadingOverlay.vue?vue&type=script&lang=js&\"\nexport * from \"./LoadingOverlay.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoadingOverlay.vue?vue&type=style&index=0&id=70e804ff&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"70e804ff\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div class=\"full-screen\">\r\n <v-fade-transition>\r\n <LoadingOverlay class=\"loading-overlay\" :title=\"data.title\" v-show=\"!loaded\" />\r\n </v-fade-transition>\r\n\r\n <LightboxContentLayout :accessibilityText=\"data.accessibility_text\" :ariaDescription=\"undefined\"\r\n :captionText=\"data.caption\" :accessibilityTextFlag=\"false\" :vimeoVideo=\"data.vimeo_video\">\r\n <iframe ref=\"iframe\" :src=\"data.url\" width=\"100%\" height=\"100%\" seamless=\"true\" frameBorder=\"0\"></iframe>\r\n </LightboxContentLayout>\r\n </div>\r\n\r\n</template>\r\n\r\n<script>\r\n\r\nimport LoadingOverlay from \"./LoadingOverlay.vue\";\r\nimport LightboxContentLayout from './LightboxContentLayout.vue';\r\n\r\nexport default {\r\n name: \"LightboxIframeCard\",\r\n data: () => ({\r\n dialog: true,\r\n loaded: false,\r\n }),\r\n mounted() {\r\n let self = this\r\n this.$refs.iframe.addEventListener(\"load\", function () {\r\n self.loaded = true\r\n });\r\n console.log(\"Data from Iframe:\", this.data)\r\n },\r\n props: [\"data\"],\r\n computed: {\r\n image() {\r\n if (this.data && this.data.file) return this.data.file;\r\n return undefined;\r\n },\r\n caption() {\r\n if (this.data.caption)\r\n return this.data.caption\r\n return ''\r\n },\r\n },\r\n components: { LoadingOverlay, LightboxContentLayout }\r\n};\r\n</script>\r\n\r\n\r\n<style scoped>\r\n.full-screen {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.loading-overlay {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n background-color: white;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxIframeCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxIframeCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxIframeCard.vue?vue&type=template&id=942c3830&scoped=true&\"\nimport script from \"./LightboxIframeCard.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxIframeCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LightboxIframeCard.vue?vue&type=style&index=0&id=942c3830&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"942c3830\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('LightboxContentLayout',{attrs:{\"accessibilityText\":_vm.data.accessibility_text,\"ariaDescription\":_vm.ariaDescription,\"captionText\":_vm.data.caption,\"accessibilityTextFlag\":_vm.accessibilityTextFlag}},[_c('v-container',{staticClass:\"full-screen pa-0 ma-0\",attrs:{\"fluid\":\"\"}},[_c('v-row',{staticClass:\"pa-0 ma-0 full-screen\"},[_c('div',{style:({ maxWidth: 'fit-content', maxHeight: 'auto', margin: 'auto', display: 'flex', justifyContent: 'center' })},[(_vm.renderComponent)?_c('VueCompareImage',{staticClass:\"compare-image\",staticStyle:{\"text-align\":\"center\",\"position\":\"relative !important\"},attrs:{\"aria-describedby\":this.ariaDescription,\"sliderPositionPercentage\":_vm.accessibleSliderValue,\"leftImage\":_vm.beforeImage,\"rightImage\":_vm.afterImage,\"leftLabel\":\"Before\",\"rightLabel\":\"After\"}}):_vm._e()],1)])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n\r\n <LightboxContentLayout :accessibilityText=\"data.accessibility_text\" :ariaDescription=\"ariaDescription\"\r\n :captionText=\"data.caption\" :accessibilityTextFlag=\"accessibilityTextFlag\">\r\n\r\n <v-container fluid class=\"full-screen pa-0 ma-0\">\r\n <v-row class=\"pa-0 ma-0 full-screen\">\r\n <div :style=\"{ maxWidth: 'fit-content', maxHeight: 'auto', margin: 'auto', display: 'flex', justifyContent: 'center' }\">\r\n <VueCompareImage style=\"text-align: center; position: relative !important\" :aria-describedby=\"this.ariaDescription\" v-if=\"renderComponent\"\r\n :sliderPositionPercentage=\"accessibleSliderValue\" :leftImage=\"beforeImage\" :rightImage=\"afterImage\"\r\n leftLabel=\"Before\" rightLabel=\"After\" class=\"compare-image\" />\r\n </div>\r\n </v-row> \r\n </v-container>\r\n\r\n\r\n\r\n </LightboxContentLayout>\r\n\r\n</template>\r\n\r\n<script>\r\nimport VueCompareImage from \"vue-compare-image\";\r\nimport LightboxContentLayout from \"./LightboxContentLayout.vue\"\r\n\r\nexport default {\r\n name: \"LightboxBeforeAfterCard\",\r\n data: () => ({\r\n dialog: true,\r\n renderComponent: true,\r\n windowWidth: window.screen.width,\r\n }),\r\n props: [\r\n \"data\",\r\n \"accessibleSliderValue\",\r\n \"accessibilityTextFlag\",\r\n \"ariaDescription\",\r\n ],\r\n components: { VueCompareImage, LightboxContentLayout },\r\n mounted() {\r\n },\r\n computed: {\r\n beforeImage() {\r\n if (this.data && this.data.before.file) return this.data.before.file;\r\n return undefined;\r\n },\r\n afterImage() {\r\n if (this.data && this.data.after.file) return this.data.after.file;\r\n return undefined;\r\n }\r\n },\r\n methods: {\r\n },\r\n watch: {\r\n accessibleSliderValue(newVal) {\r\n console.log(\"Slider Value:\", newVal);\r\n this.renderComponent = false;\r\n this.$nextTick(() => {\r\n // Add the component back in\r\n this.renderComponent = true;\r\n });\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n\r\n<style scoped lang=\"scss\">\r\n.full-screen {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.compare-image {\r\n\r\n ::v-deep .right-image {\r\n max-height: calc(100vh - 20vh);\r\n }\r\n}\r\n\r\n::v-deep .left-label {\r\n color: white;\r\n background-color: rgba(0, 0, 0, 0.25);\r\n border-bottom-right-radius: 12px;\r\n padding-top: 4px;\r\n padding-bottom: 4px;\r\n}\r\n\r\n::v-deep .right-label {\r\n color: white;\r\n background-color: rgba(0, 0, 0, 0.25);\r\n border-bottom-left-radius: 12px;\r\n padding-top: 4px;\r\n padding-bottom: 4px;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxBeforeAfterCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxBeforeAfterCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxBeforeAfterCard.vue?vue&type=template&id=1ae43082&scoped=true&\"\nimport script from \"./LightboxBeforeAfterCard.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxBeforeAfterCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LightboxBeforeAfterCard.vue?vue&type=style&index=0&id=1ae43082&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1ae43082\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{style:({\n width: '100%',\n height: '100%',\n })},[_c('Marzipano',{attrs:{\"typeOf\":\"equirect\",\"data\":_vm.data.panorama}}),(_vm.hasCaption)?_c('div',{staticClass:\"caption-div\",style:({\n width: '100%',\n height: '15%',\n })},[(_vm.hasCaption)?_c('v-container',{staticClass:\"pa-2 lb-caption\",attrs:{\"fluid\":\"\"}},[_c('v-row',{staticClass:\"fill-height row\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c('v-col',{staticClass:\"caption-col\",attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"12\",\"lg\":\"10\",\"xl\":\"8\",\"justify\":\"center\",\"align\":\"center\"}},[_c('div',{staticClass:\"white--text\"},[_vm._v(_vm._s(_vm.data.caption))])])],1)],1):_vm._e()],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div\r\n :style=\"{\r\n width: '100%',\r\n height: '100%',\r\n }\"\r\n >\r\n <Marzipano typeOf=\"equirect\" :data=\"data.panorama\" />\r\n\r\n <div\r\n :style=\"{\r\n width: '100%',\r\n height: '15%',\r\n }\"\r\n v-if=\"hasCaption\"\r\n class=\"caption-div\"\r\n >\r\n <v-container v-if=\"hasCaption\" fluid class=\"pa-2 lb-caption\">\r\n <v-row justify=\"center\" align=\"center\" class=\"fill-height row\">\r\n <v-col\r\n cols=\"12\"\r\n sm=\"12\"\r\n md=\"12\"\r\n lg=\"10\"\r\n xl=\"8\"\r\n class=\"caption-col\"\r\n justify=\"center\"\r\n align=\"center\"\r\n >\r\n <div class=\"white--text\">{{ data.caption }}</div>\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport Marzipano from \"../panorama/Marzipano.vue\";\r\n\r\nexport default {\r\n name: \"LightboxPanoramaCard\",\r\n data: () => ({\r\n dialog: true,\r\n }),\r\n props: [\"data\"],\r\n components: {\r\n Marzipano,\r\n },\r\n computed: {\r\n image() {\r\n if (this.data && this.data.file) return this.data.file;\r\n return undefined;\r\n },\r\n hasCaption() {\r\n if (this.data && this.data.caption)\r\n if (this.data.caption !== undefined) return true;\r\n return false;\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n\r\n<style scoped>\r\n.lb-caption {\r\n position: relative;\r\n top: 0px;\r\n bottom: 0px;\r\n left: 0px;\r\n right: 0px;\r\n}\r\n\r\n.caption-col {\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n}\r\n\r\n.caption-div {\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n}\r\n\r\n.row {\r\n width: 100%;\r\n overflow-y: auto;\r\n}\r\n\r\n@media (max-width: 600px) {\r\n}\r\n\r\n.repeating-gradient {\r\n background-image: repeating-linear-gradient(\r\n -45deg,\r\n rgba(255, 0, 0, 0.25),\r\n rgba(255, 0, 0, 0.25) 5px,\r\n rgba(0, 0, 255, 0.25) 5px,\r\n rgba(0, 0, 255, 0.25) 10px\r\n );\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxPanoramaCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxPanoramaCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxPanoramaCard.vue?vue&type=template&id=c7dd1ad2&scoped=true&\"\nimport script from \"./LightboxPanoramaCard.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxPanoramaCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LightboxPanoramaCard.vue?vue&type=style&index=0&id=c7dd1ad2&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c7dd1ad2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('LightboxContentLayout',{attrs:{\"accessibilityText\":_vm.data.video.accessibility_text,\"ariaDescription\":_vm.ariaDescription,\"captionText\":_vm.data.video.caption,\"accessibilityTextFlag\":_vm.accessibilityTextFlag}},[(_vm.videoToggle ? false : !_vm.videoAccessibilityFile)?_c('View360',{ref:\"viewer\",staticClass:\"view360-container\",staticStyle:{\"width\":\"100%\",\"height\":\"100%\"},attrs:{\"projection\":_vm.projection,\"initialYaw\":_vm.data.heading},on:{\"render\":function($event){return _vm.checkVideoHasEnded($event)},\"load\":function($event){return _vm.contentLoaded()},\"ready\":function($event){return _vm.testFunc()}}}):_c('video',{ref:\"videoRef\",staticClass:\"lightbox-video\",attrs:{\"aria-label\":_vm.accessibilityLabel,\"id\":\"lightboxvideo\",\"controls\":\"\",\"muted\":\"\",\"autoplay\":\"\",\"type\":\"video/mp4\",\"crossorigin\":\"anonymous\"},domProps:{\"muted\":true}},[_c('source',{attrs:{\"src\":_vm.videoAccessibility,\"type\":\"video/mp4\"}})])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <LightboxContentLayout\r\n :accessibilityText=\"data.video.accessibility_text\"\r\n :ariaDescription=\"ariaDescription\"\r\n :captionText=\"data.video.caption\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n >\r\n <View360\r\n v-if=\"videoToggle ? false : !videoAccessibilityFile\"\r\n ref=\"viewer\"\r\n @render=\"checkVideoHasEnded($event)\"\r\n @load=\"contentLoaded()\"\r\n @ready=\"testFunc()\"\r\n class=\"view360-container\"\r\n :projection=\"projection\"\r\n :initialYaw=\"data.heading\"\r\n style=\"width: 100%; height: 100%\"\r\n />\r\n\r\n <video\r\n v-else\r\n :aria-label=\"accessibilityLabel\"\r\n id=\"lightboxvideo\"\r\n class=\"lightbox-video\"\r\n controls\r\n muted\r\n autoplay\r\n ref=\"videoRef\"\r\n type=\"video/mp4\"\r\n crossorigin=\"anonymous\"\r\n >\r\n <source :src=\"videoAccessibility\" type=\"video/mp4\" />\r\n\r\n </video>\r\n </LightboxContentLayout>\r\n</template>\r\n\r\n<script>\r\nimport LightboxContentLayout from \"./LightboxContentLayout.vue\";\r\nimport { View360, EquirectProjection, ControlBar } from \"@egjs/vue-view360\";\r\nimport \"@egjs/vue-view360/css/view360.min.css\";\r\n\r\nexport default {\r\n name: \"LightboxVideo360Card\",\r\n data: () => ({\r\n dialog: true,\r\n isMobile: false,\r\n windowWidth: window.screen.width,\r\n isTablet: false,\r\n isLaptop: false,\r\n projection: null,\r\n }),\r\n props: [\r\n \"data\",\r\n \"accessibilityTextFlag\",\r\n \"accessibilityVideoFlag\",\r\n \"accessibilityMode\",\r\n \"accessibility\",\r\n \"ariaDescription\",\r\n ],\r\n components: { LightboxContentLayout, View360 },\r\n mounted() {\r\n console.log(this.data, \"video light data content\");\r\n },\r\n created() {\r\n if (this.data.video && this.data.video.video.file !== null) {\r\n let src = \"\";\r\n if (process.env.NODE_ENV === \"development\") {\r\n src =\r\n process.env.VUE_APP_BACKEND_URL.slice(0, -1) +\r\n this.data.video.video.file;\r\n } else {\r\n src = this.data.video.video.file;\r\n }\r\n this.projection = new EquirectProjection({\r\n src: src,\r\n video: true,\r\n });\r\n }\r\n },\r\n computed: {\r\n videoToggle() {\r\n return this.$store.state.map.videoToggle\r\n },\r\n video() {\r\n if (this.data && this.data.video.file) return this.data.video.file;\r\n return undefined;\r\n },\r\n videoAccessibilityFile () {\r\n return this.data.videoAccessibility &&\r\n this.data.videoAccessibility.video &&\r\n this.data.videoAccessibility.video.file\r\n },\r\n videoAccessibility() {\r\n if (this.videoToggle) {\r\n if (this.videoAccessibilityFile) {\r\n if (process.env.NODE_ENV === \"development\") {\r\n return (\r\n process.env.VUE_APP_BACKEND_URL.slice(0, -1) +\r\n this.videoAccessibilityFile\r\n );\r\n }\r\n \r\n return this.videoAccessibilityFile\r\n }\r\n }\r\n return this.data.video && this.data.video.video.file;\r\n },\r\n // videoAccessibility() {\r\n // if (this.accessibilityMode && this.accessibilityVideoFlag)\r\n // return this.data.video.accessible_video;\r\n // return this.data.video.file;\r\n // },\r\n accessibilityLabel() {\r\n if (\r\n this.data.videoAccessibility &&\r\n this.data.videoAccessibility.video.file\r\n )\r\n return this.data.videoAccessibility.video.accessibility_text;\r\n return undefined;\r\n },\r\n hasCaption() {\r\n if (this.data && this.data.video.caption)\r\n if (this.data.video.caption !== undefined) return true;\r\n return false;\r\n },\r\n // accessibilityMode() {\r\n // return this.$store.state.wagtail.accessibilityMode;\r\n // },\r\n hasAccessibleText() {\r\n if (this.data && this.data.video.accessibility_text) return true;\r\n return false;\r\n },\r\n // videoWidth() {\r\n // if (this.accessibilityTextFlag) return 60 + '%'\r\n // if (this.hasAccessibleText &&\r\n // this.hasCaption &&\r\n // this.accessibilityTextFlag == true) return 70 + \"%\";\r\n // return 100 + '%'\r\n // }\r\n },\r\n watch: {\r\n accessibilityVideoFlag(newValue) {\r\n console.log(newValue, \"value changed video\");\r\n var videoElement = document.getElementById(\"lightboxvideo\");\r\n\r\n videoElement.pause();\r\n videoElement.removeAttribute(\"src\");\r\n videoElement.setAttribute(\"src\", this.data.video.file); // empty source\r\n videoElement.load();\r\n },\r\n },\r\n methods: {\r\n textFlag() {\r\n console.log(\"triggered here from image\");\r\n if (this.accessibilityTextFlag == false) {\r\n this.accessibilityTextFlag = true;\r\n } else {\r\n this.accessibilityTextFlag = false;\r\n }\r\n },\r\n testFunc() {\r\n console.log(\"fire command\");\r\n this.$refs.viewer.addPlugins(new ControlBar());\r\n },\r\n checkVideoHasEnded() {\r\n const time = document.getElementsByClassName(\"view360-controls-time\")[0];\r\n if (!time) return;\r\n\r\n const [currentTime, videoDuration] = time.innerHTML.split(\" / \");\r\n\r\n if (currentTime === videoDuration) {\r\n this.$emit(\"ended\");\r\n }\r\n },\r\n contentLoaded() {\r\n this.$emit(\"loaded\");\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.full-screen {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\nvideo {\r\n margin-left: auto;\r\n margin-right: auto;\r\n display: block;\r\n}\r\n\r\n.view360-canvas {\r\n width: 1000px;\r\n height: 1000px;\r\n}\r\n\r\n.full-screen {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.lightbox-video {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxVideo360Card.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxVideo360Card.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxVideo360Card.vue?vue&type=template&id=42f39c1e&scoped=true&\"\nimport script from \"./LightboxVideo360Card.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxVideo360Card.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LightboxVideo360Card.vue?vue&type=style&index=0&id=42f39c1e&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"42f39c1e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{style:({ display: 'flex', alignItems: 'center', justifyContent: 'center', height: '100%'})},[_c('v-card',{style:({ maxHeight: '100%', minHeight: '50%', maxWidth: '1600px', overflow: 'clip', overflowY: 'auto', })},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{style:({ padding: 0, display: 'flex', justifyContent: 'center', }),attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"6\",\"lg\":\"6\",\"xl\":\"6\"}},[_c('img',{style:({ objectFit: 'cover', overflow: 'hidden', height: '100%', position: 'sticky', top: 0, }),attrs:{\"src\":_vm.data.image.file,\"alt\":_vm.data.image.alternative_text,\"aria-label\":_vm.data.image.accessibility_text}})]),_c('v-col',{style:({ padding: '20px' }),attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"6\",\"lg\":\"6\",\"xl\":\"6\"}},[_c('v-card-title',[_vm._v(_vm._s(_vm.data.title))]),_c('v-card-text',[_c('ParagraphBlock',{attrs:{\"html\":_vm.data.description}})],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div :style=\"{ display: 'flex', alignItems: 'center', justifyContent: 'center', height: '100%'}\">\r\n <v-card :style=\"{ maxHeight: '100%', minHeight: '50%', maxWidth: '1600px', overflow: 'clip', overflowY: 'auto', }\">\r\n <v-row no-gutters>\r\n <v-col :style=\"{ padding: 0, display: 'flex', justifyContent: 'center', }\" cols=\"12\" sm=\"12\" md=\"6\" lg=\"6\" xl=\"6\">\r\n <img \r\n :style=\"{ objectFit: 'cover', overflow: 'hidden', height: '100%', position: 'sticky', top: 0, }\"\r\n :src=\"data.image.file\" \r\n :alt=\"data.image.alternative_text\" \r\n :aria-label=\"data.image.accessibility_text\" />\r\n </v-col>\r\n <v-col cols=\"12\" sm=\"12\" md=\"6\" lg=\"6\" xl=\"6\" :style=\"{ padding: '20px' }\">\r\n <v-card-title>{{ data.title }}</v-card-title>\r\n <v-card-text>\r\n <ParagraphBlock :html=\"data.description\"></ParagraphBlock>\r\n </v-card-text>\r\n </v-col>\r\n </v-row>\r\n </v-card>\r\n </div>\r\n\r\n\r\n</template>\r\n<script>\r\n\r\nimport ParagraphBlock from '../blocks/paragraphBlock.vue';\r\nexport default {\r\n props: [\"data\"],\r\ncomponents: {\r\n ParagraphBlock\r\n}\r\n}\r\n</script>\r\n<style>\r\n \r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxBiographyCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxBiographyCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxBiographyCard.vue?vue&type=template&id=deb6ca40&\"\nimport script from \"./LightboxBiographyCard.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxBiographyCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"panorama noscrollbars\",style:({\n width: '100%',\n height: '100%',\n })},[_c('LightboxGallery',{attrs:{\"showLightbox\":_vm.lightboxContent.length > 0 && _vm.lightboxReady,\"content\":_vm.lightboxContent,\"tileUrl\":_vm.lightboxContent,\"tabindex\":\"0\"},on:{\"closed\":function($event){return _vm.closeLightbox()}}}),_c('Marzipano',{ref:\"Marzipano\",attrs:{\"tileUrl\":_vm.tileUrl,\"data\":_vm.data.data,\"ready\":_vm.autoRotate,\"sasKey\":_vm.data.sas_key,\"minYaw\":_vm.data.min_yaw,\"maxYaw\":_vm.data.max_yaw,\"tabindex\":\"-1\"},on:{\"loaded\":_vm.panoLoaded}},[_vm._l((_vm.currentChildren),function(child,i){return _c('div',{key:i},[(child.type === 'virtualroomcontent')?_c('MarzipanoRectHotspot',{ref:\"rectHotspot\",refInFor:true,attrs:{\"index\":i,\"yaw\":child.position_data.yaw,\"pitch\":child.position_data.pitch,\"rotX\":child.position_data.rotX,\"rotY\":child.position_data.rotY,\"rotZ\":child.position_data.rotZ,\"width\":child.position_data.width,\"height\":child.position_data.height,\"thumbnail\":child.thumbnail,\"scene\":_vm.scene,\"title\":_vm.getChildTitle(child),\"icon\":child.menu_icon,\"clickable\":child.clickable,\"transparent\":child.transparent_background,\"lightboxActive\":_vm.lightboxActive},on:{\"click\":function($event){return _vm.clickChild(child)}}}):_vm._e()],1)}),_vm._l((_vm.currentPanoChildren),function(child,i){return _c('div',{key:i},[(child.type === 'panoramaroompopup')?_c('MarzipanoRectHotspot',{ref:\"rectHotspot\",refInFor:true,attrs:{\"index\":i,\"yaw\":child.position_data.yaw,\"pitch\":child.position_data.pitch,\"rotX\":child.position_data.rotX,\"rotY\":child.position_data.rotY,\"rotZ\":child.position_data.rotZ,\"width\":child.position_data.width,\"height\":child.position_data.height,\"thumbnail\":child.thumbnail,\"scene\":_vm.scene,\"title\":_vm.getChildTitle(child),\"icon\":child.menu_icon,\"clickable\":child.clickable,\"transparent\":child.transparent_background,\"lightboxActive\":_vm.lightboxActive},on:{\"click\":function($event){return _vm.clickChild(child)}}}):_vm._e()],1)})],2),_c('PanoramaInstructions',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showInstructions),expression:\"showInstructions\"}]})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n\r\n <div\r\n class = \"panorama noscrollbars\"\r\n :style=\"{\r\n width: '100%',\r\n height: '100%',\r\n }\"\r\n > \r\n \r\n <LightboxGallery\r\n :showLightbox=\"lightboxContent.length > 0 && lightboxReady\"\r\n :content=\"lightboxContent\"\r\n :tileUrl=\"lightboxContent\"\r\n @closed=\"closeLightbox()\"\r\n tabindex=\"0\"\r\n />\r\n\r\n <Marzipano\r\n :tileUrl=\"tileUrl\"\r\n :data=\"data.data\"\r\n :ready=\"autoRotate\"\r\n :sasKey=\"data.sas_key\"\r\n @loaded=\"panoLoaded\"\r\n ref=\"Marzipano\"\r\n :minYaw=\"data.min_yaw\"\r\n :maxYaw=\"data.max_yaw\"\r\n tabindex=\"-1\"\r\n >\r\n <div v-for=\"(child, i) in currentChildren\" :key=\"i\">\r\n <MarzipanoRectHotspot\r\n v-if=\"child.type === 'virtualroomcontent'\"\r\n :index=\"i\"\r\n :yaw=\"child.position_data.yaw\"\r\n :pitch=\"child.position_data.pitch\"\r\n :rotX=\"child.position_data.rotX\"\r\n :rotY=\"child.position_data.rotY\"\r\n :rotZ=\"child.position_data.rotZ\"\r\n :width=\"child.position_data.width\"\r\n :height=\"child.position_data.height\"\r\n :thumbnail=\"child.thumbnail\"\r\n :scene=\"scene\"\r\n :title=\"getChildTitle(child)\"\r\n @click=\"clickChild(child)\"\r\n :icon=\"child.menu_icon\"\r\n :clickable=\"child.clickable\"\r\n :transparent=\"child.transparent_background\"\r\n :lightboxActive=\"lightboxActive\"\r\n ref=\"rectHotspot\"\r\n />\r\n </div>\r\n <div v-for=\"(child, i) in currentPanoChildren\" :key=\"i\">\r\n <MarzipanoRectHotspot\r\n v-if=\"child.type === 'panoramaroompopup'\"\r\n :index=\"i\"\r\n :yaw=\"child.position_data.yaw\"\r\n :pitch=\"child.position_data.pitch\"\r\n :rotX=\"child.position_data.rotX\"\r\n :rotY=\"child.position_data.rotY\"\r\n :rotZ=\"child.position_data.rotZ\"\r\n :width=\"child.position_data.width\"\r\n :height=\"child.position_data.height\"\r\n :thumbnail=\"child.thumbnail\"\r\n :scene=\"scene\"\r\n :title=\"getChildTitle(child)\"\r\n :icon=\"child.menu_icon\"\r\n :clickable=\"child.clickable\"\r\n :transparent=\"child.transparent_background\"\r\n :lightboxActive=\"lightboxActive\"\r\n @click=\"clickChild(child)\"\r\n ref=\"rectHotspot\"\r\n />\r\n </div>\r\n </Marzipano>\r\n <!-- <div\r\n :style=\"{\r\n width: '100%',\r\n height: '15%',\r\n }\"\r\n v-if=\"hasCaption\"\r\n class=\"caption-div\"\r\n >\r\n <v-container v-if=\"hasCaption\" fluid class=\"pa-2 lb-caption\">\r\n <v-row justify=\"center\" align=\"center\" class=\"fill-height row\">\r\n <v-col\r\n cols=\"12\"\r\n sm=\"12\"\r\n md=\"12\"\r\n lg=\"10\"\r\n xl=\"8\"\r\n class=\"caption-col\"\r\n justify=\"center\"\r\n align=\"center\"\r\n >\r\n <div class=\"white--text\">{{ data.caption }}</div>\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n </div>\r\n </div> -->\r\n\r\n <!-- <LightboxGallery\r\n :showLightbox=\"lightboxContent.length > 0 && lightboxReady\"\r\n :content=\"lightboxContent\"\r\n @closed=\"closeLightbox()\"\r\n /> -->\r\n <PanoramaInstructions v-show=\"showInstructions\" />\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport Marzipano from \"../panorama/Marzipano.vue\";\r\nimport MarzipanoRectHotspot from \"../panorama/MarzipanoRectHotspot\";\r\nimport PanoramaLoading from \"../panorama/PanoramaLoading.vue\";\r\nimport LightboxGallery from \"../lightbox/LightboxGallery.vue\";\r\nimport PanoramaInstructions from '../panorama/PanoramaInstructions.vue';\r\n\r\nexport default {\r\n name: \"LightboxCustomPanoramaCard\",\r\n data: () => ({\r\n panorama: \"/engagement_room.json\",\r\n lightboxData: undefined,\r\n scene: undefined,\r\n lastYaw: undefined,\r\n lastPitch: undefined,\r\n lastFov: undefined,\r\n useLastLocation: false,\r\n lightboxReady: false,\r\n showInstructions: false,\r\n instructionsShown: false,\r\n autoRotate: false,\r\n consoleYaw: undefined,\r\n consolePitch: undefined,\r\n formYaw: undefined,\r\n formPitch: undefined,\r\n lightboxActive: undefined,\r\n currentFocusIndex: 0,\r\n currentActiveHotspot: undefined,\r\n currentActiveAccessibilityMenuItem: undefined,\r\n isMouseControl: false,\r\n isMoving: false,\r\n movementSpeed: 600,\r\n accessibilityModalFlag: false,\r\n accessibilityFlag: false,\r\n activeTrap: true,\r\n lightbox2Ready:false\r\n }),\r\n props: [\"data\", \"tiles\"],\r\n components: {\r\n MarzipanoRectHotspot,\r\n Marzipano,\r\n PanoramaLoading,\r\n PanoramaInstructions,\r\n LightboxGallery,\r\n },\r\n created() {\r\n\r\n },\r\n mounted() {\r\n console.log(this.data,\"data from panorama card\");\r\n\r\n \r\n },\r\n methods: {\r\n onFocus() {\r\n this.isMoving = true;\r\n },\r\n clickChild(child) {\r\n console.log('child clicked', child)\r\n this.lightboxReady = true;\r\n\r\n let currentUILocation = document.activeElement;\r\n if (\r\n currentUILocation.id == document.querySelectorAll(\"#hotspot-img\")[0].id\r\n ) {\r\n this.currentActiveHotspot = currentUILocation;\r\n this.isMouseControl = false;\r\n } else if (currentUILocation.classList[0] == \"v-image\") {\r\n //reset focus location storage if mouse is used.\r\n this.currentActiveHotspot = undefined;\r\n this.currentActiveAccessibilityMenuItem = undefined;\r\n this.isMouseControl = true;\r\n } else if (currentUILocation.classList[0] == \"accessibility-btn\") {\r\n this.currentActiveAccessibilityMenuItem = currentUILocation;\r\n this.isMouseControl = false;\r\n } else {\r\n console.log(\r\n \"Opening lightbox NO MATCH, new access method detected. update focus tracking script\"\r\n );\r\n }\r\n\r\n //Open URL\r\n this.$router.push(new URL(child.html_url).pathname);\r\n },\r\n getLightboxData(child) {\r\n let id = child.id;\r\n let zoomData = child.position_data;\r\n this.lightboxReady = false;\r\n //TODO: I don't like using the store for this - should call the API service directly\r\n console.log(this.$store.dispatch(\"wagtail/getPopup\", id), \"dispatch\");\r\n\r\n this.$store.dispatch(\"wagtail/getPopup\", id);\r\n \r\n var destinationViewParameters = {\r\n yaw: zoomData.yaw,\r\n pitch: zoomData.pitch,\r\n fov: (40 * Math.PI) / 180,\r\n };\r\n\r\n var options = {\r\n transitionDuration: 1500,\r\n };\r\n\r\n this.scene.lookTo(destinationViewParameters, options);\r\n // Might be useful chose not to remove\r\n //Resetting Window, body and panorama scroll location to zero to counteract marzipano bug that moves the viewport offscreen\r\n // window.scrollTo(0, 0);\r\n // var bodyElement = document.querySelector(\"body\");\r\n // bodyElement.scroll(0, 0);\r\n\r\n var panoramas = document.getElementsByClassName(\"panorama\");\r\n for (let i = 0; i < panoramas.length; i++) {\r\n panoramas[i].scroll(0, 0);\r\n console.log(\"Pano \" + i + \" scrolling\");\r\n }\r\n\r\n window.setTimeout(function () {\r\n this.lightboxReady = true;\r\n }, 1250);\r\n },\r\n checkZoomToChild() {\r\n let currPath = window.location.pathname;\r\n let pagePath = new URL(this.$store.state.wagtail.currentPopup.meta.html_url).pathname;\r\n\r\n //If we're not on the root page\r\n if (pagePath !== undefined && currPath !== undefined) {\r\n pagePath = pagePath.trimRight(\"/\");\r\n currPath = currPath.trimRight(\"/\");\r\n\r\n // If the requested path is not the same as the current page path, then we may be requesting a child object\r\n if (pagePath !== currPath) {\r\n // Search the children for a valid child\r\n for (let child of this.$store.state.wagtail.currentPopup.child_content) {\r\n let childPath = new URL(child.html_url).pathname;\r\n if (childPath !== undefined) {\r\n childPath = childPath.trimRight(\"/\");\r\n\r\n // We've found the right child, let's zoom to it and open the lightbox\r\n if (childPath === currPath) {\r\n this.getLightboxData(child);\r\n return;\r\n }\r\n }\r\n }\r\n for (let anotherChild of this.$store.state.wagtail.currentPopup.panorama_child_content) {\r\n let anotherChildPath = new URL(anotherChild.html_url).pathname;\r\n if (anotherChildPath !== undefined) {\r\n anotherChildPath = anotherChildPath.trimRight(\"/\");\r\n if (anotherChildPath === currPath) {\r\n this.getLightboxData(anotherChild);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n \r\n }\r\n // TODO: if we don't find a valid child, reset the scene or reload the page...\r\n },\r\n closeLightbox() {\r\n //Updates trackers for hotspot status and reopens the accessibility menu if in accessibility mode.\r\n //this.lightboxActive = false;\r\n console.log(\"new url from close lightbox\", this.$store.state.wagtail.currentPopup.meta.html_url)\r\n this.$router.push(new URL(this.$store.state.wagtail.currentPage.meta.html_url).pathname);\r\n\r\n this.$store.commit(\"wagtail/getPopupSuccess\", undefined);\r\n //Tracks that the camera is moving so that keyboard controls cannot override transition animation\r\n this.isMoving = true;\r\n\r\n // If we've flagged to use the last location, use it and clear the flag\r\n if (this.useLastLocation === true) {\r\n destinationViewParameters = {\r\n yaw: this.lastYaw,\r\n pitch: this.lastPitch,\r\n fov: this.lastFov,\r\n };\r\n this.useLastLocation = false;\r\n } else {\r\n var destinationViewParameters = {\r\n yaw: this.scene.view().yaw(),\r\n pitch: 0.0,\r\n fov: (60 * Math.PI) / 180,\r\n };\r\n }\r\n\r\n var options = {\r\n transitionDuration: this.movementSpeed,\r\n };\r\n\r\n // Display the instructions if they've not been displayed before\r\n // This is to handle use cases where a user has navigated straight\r\n // to some lightbox content, and hasn't come via the traditional entry point\r\n\r\n if (this.instructionsShown === false) this.displayInstructions();\r\n this.scene.lookTo(destinationViewParameters, options);\r\n\r\n //Resetting Window, body and panorama scroll location to zero to counteract marzipano bug that moves the viewport offscreen\r\n // window.scrollTo(0, 0);\r\n // var bodyElement = document.querySelector(\"body\");\r\n // bodyElement.scroll(0, 0);\r\n var panoramas = document.getElementsByClassName(\"panorama\");\r\n for (let i = 0; i < panoramas.length; i++) {\r\n panoramas[i].scroll(0, 0);\r\n console.log(\"Pano \" + i + \" scrolling\");\r\n }\r\n\r\n //use stored values to return focus to the correct previous location in virtual room or accessibility menu\r\n const elements = document.querySelectorAll(\"#hotspot-img\");\r\n\r\n if (\r\n this.currentActiveHotspot != undefined &&\r\n this.accessibilityMode == false\r\n ) {\r\n // Moves focus to previous hotspot location in virtual room\r\n this.currentActiveHotspot.focus();\r\n } else {\r\n if (this.accessibilityMode == false) {\r\n //Moves focus Back to the first hotspot if not using a mouse\"\r\n if (this.isMouseControl == false) {\r\n elements[0].focus();\r\n }\r\n } else {\r\n if (this.currentActiveAccessibilityMenuItem != undefined) {\r\n //Moves focus Back to the previous accessibility menu item\r\n this.$nextTick(() => {\r\n this.currentActiveAccessibilityMenuItem.focus();\r\n });\r\n }\r\n }\r\n }\r\n },\r\n isRootPage() {\r\n let currPath = this.currentPath;\r\n let pagePath = new URL(this.$store.state.wagtail.currentPopup.meta.html_url).pathname;\r\n if (currPath === pagePath) return true;\r\n return false;\r\n },\r\n\r\n panoLoaded(scene) {\r\n console.log(scene, \"scene from custompano\")\r\n this.scene = scene;\r\n this.checkZoomToChild();\r\n },\r\n getChildTitle(child){\r\n console.log(child, \"test-childtitle\")\r\n if (child.icon_only) return \"\";\r\n return child.title;\r\n }\r\n },\r\n computed: {\r\n image() {\r\n if (this.data && this.data.file) return this.data.file;\r\n return undefined;\r\n },\r\n hasCaption() {\r\n if (this.data && this.data.caption)\r\n if (this.data.caption !== undefined) return true;\r\n return false;\r\n },\r\n currentPath() {\r\n return this.$route.path;\r\n },\r\n tileUrl() {\r\n return this.data.tiles.split(\"?\")[0];\r\n },\r\n currentChildren() {\r\n return this.$store.state.wagtail.currentPopup.child_content;\r\n },\r\n currentPanoChildren(){\r\n return this.$store.state.wagtail.currentPopup.panorama_child_content;\r\n },\r\n lightboxContent(res) {\r\n if (this.$store.state.wagtail.currentPopup === undefined) return [];\r\n else return this.$store.state.wagtail.currentPopup.content;\r\n },\r\n islightboxActive() {\r\n if (this.$store.state.lightbox.lightboxObjects.length == 0) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n },\r\n },\r\n watch: {\r\n // hotspotContent(res) {\r\n // console.log(\"changed val\", res);\r\n // this.hotspotContent = res;\r\n // this.lightboxReady = true\r\n // }\r\n lightboxReady(res){\r\n console.log(\"lightbox ready val\", res)\r\n this.lightbox2Ready = true\r\n },\r\n currentPath() {\r\n console.log(\"current path from panocard changed\")\r\n this.checkZoomToChild();\r\n //Hide the landing page if the path has changed\r\n if (!this.isRootPage() && this.showLanding) this.showLanding = false;\r\n },\r\n lightboxContent(res){\r\n console.log('lightbox content from panocard', res.length, res)\r\n this.lightboxReady = true\r\n },\r\n islightboxActive() {\r\n if (this.islightboxActive == false) {\r\n if (this.accessibilityMode == true) {\r\n this.accessibilityModalFlag = true;\r\n } else {\r\n this.accessibilityModalFlag = false;\r\n }\r\n } else {\r\n this.accesibilityModal = false;\r\n }\r\n },\r\n isMoving() {\r\n //Resetting Window, body and panorama scroll location to zero to counteract marzipano bug that moves the viewport offscreen\r\n // window.scrollTo(0, 0);\r\n // var bodyElement = document.querySelector(\"body\");\r\n // bodyElement.scroll(0, 0);\r\n var panoramas = document.getElementsByClassName(\"panorama\");\r\n for (let i = 0; i < panoramas.length; i++) {\r\n panoramas[i].scroll(0, 0);\r\n console.log(\"Pano \" + i + \" scrolling\");\r\n }\r\n\r\n if (\"activeElement\" in document) {\r\n const elements = document.querySelectorAll(\"#hotspot-img\");\r\n if (document.activeElement.id == elements[0].id) {\r\n this.currentActiveHotspot = document.activeElement;\r\n }\r\n }\r\n if (this.isMoving) {\r\n arrowKeyNavigation.unregister();\r\n window.onkeydown = () => false;\r\n window.setTimeout(() => {\r\n this.isMoving = false;\r\n }, this.movementSpeed);\r\n } else {\r\n arrowKeyNavigation.register();\r\n window.onkeydown = () => true;\r\n\r\n //Resetting Window, body and panorama scroll location to zero to counteract marzipano bug that moves the viewport offscreen\r\n // window.scrollTo(0, 0);\r\n // var bodyElement = document.querySelector(\"body\");\r\n // bodyElement.scroll(0, 0);\r\n for (let i = 0; i < panoramas.length; i++) {\r\n panoramas[i].scroll(0, 0);\r\n console.log(\"Pano \" + i + \" scrolling\");\r\n }\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n\r\n<style scoped>\r\n\r\n.panorama {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n}\r\n\r\n.lb-caption {\r\n position: relative;\r\n top: 0px;\r\n bottom: 0px;\r\n left: 0px;\r\n right: 0px;\r\n}\r\n\r\n.caption-col {\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n}\r\n\r\n.caption-div {\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n}\r\n\r\n.row {\r\n width: 100%;\r\n overflow-y: auto;\r\n}\r\n\r\n@media (max-width: 600px) {\r\n}\r\n\r\n.repeating-gradient {\r\n background-image: repeating-linear-gradient(\r\n -45deg,\r\n rgba(255, 0, 0, 0.25),\r\n rgba(255, 0, 0, 0.25) 5px,\r\n rgba(0, 0, 255, 0.25) 5px,\r\n rgba(0, 0, 255, 0.25) 10px\r\n );\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxCustomPanoramaCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxCustomPanoramaCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxCustomPanoramaCard.vue?vue&type=template&id=2a4305d6&scoped=true&\"\nimport script from \"./LightboxCustomPanoramaCard.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxCustomPanoramaCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LightboxCustomPanoramaCard.vue?vue&type=style&index=0&id=2a4305d6&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2a4305d6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('LightboxContentLayout',{attrs:{\"accessibilityText\":_vm.data.accessibility_text,\"ariaDescription\":_vm.ariaDescription,\"captionText\":_vm.data.caption,\"accessibilityTextFlag\":_vm.accessibilityTextFlag}},[(!_vm.answerValue)?_c('div',{staticClass:\"page-container\"},[_c('v-card',{staticClass:\"pa-4 ma-3\"},[_c('h3',{staticClass:\"pt-1\"},[_vm._v(_vm._s(_vm.data.question))]),_c('v-radio-group',{key:\"question\",model:{value:(_vm.selectedItem.questionBlock),callback:function ($$v) {_vm.$set(_vm.selectedItem, \"questionBlock\", $$v)},expression:\"selectedItem.questionBlock\"}},_vm._l((_vm.data.choices),function(choice,index){return _c('v-radio',{key:index,staticClass:\"pl-4\",attrs:{\"label\":choice.question,\"value\":index}})}),1),(_vm.selectedItem.questionBlock !== null)?_c('div',_vm._l((_vm.data.choices[\n _vm.selectedItem.questionBlock\n ].content),function(choiceContent,choiceContentIndex){return _c('div',{key:choiceContentIndex},[_c('h3',{staticClass:\"pt-1\"},[_vm._v(_vm._s(choiceContent.value.question))]),_c('v-radio-group',{key:\"extQuestion\",model:{value:(_vm.selectedItem.extQuestionBlock),callback:function ($$v) {_vm.$set(_vm.selectedItem, \"extQuestionBlock\", $$v)},expression:\"selectedItem.extQuestionBlock\"}},_vm._l((choiceContent.value.content),function(answerBlock,index){return _c('v-radio',{key:`ext-${index}-${choiceContentIndex}`,staticClass:\"pl-4\",attrs:{\"label\":answerBlock.value.answer,\"value\":index}})}),1)],1)}),0):_vm._e()],1)],1):_vm._e(),_vm._l((_vm.answerValue),function(item,index){return _c('div',{key:item.id},[(item.type === 'image')?_c('LightboxImageCard',{attrs:{\"data\":item.value,\"accessibilityTextFlag\":_vm.accessibilityTextFlag,\"ariaDescription\":'accessibilityDescriptionImage' + index}}):_vm._e(),(item.type === 'video_360')?_c('LightboxVideo360Card',{attrs:{\"data\":item.value,\"accessibilityTextFlag\":_vm.accessibilityTextFlag,\"accessibilityVideoFlag\":_vm.accessibilityVideoFlag,\"ariaDescription\":'accessibilityDescriptionVideo' + index++}}):_vm._e(),(item.type === 'video')?_c('LightboxVideoCard',{attrs:{\"data\":item.value,\"accessibilityTextFlag\":_vm.accessibilityTextFlag,\"accessibilityVideoFlag\":_vm.accessibilityVideoFlag,\"ariaDescription\":'accessibilityDescriptionVideo' + index++}}):_vm._e()],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <LightboxContentLayout :accessibilityText=\"data.accessibility_text\" :ariaDescription=\"ariaDescription\"\r\n :captionText=\"data.caption\" :accessibilityTextFlag=\"accessibilityTextFlag\">\r\n <!-- <v-btn v-show=\"answerValue\" rounded darkemit class=\"lightbox-btn\" color=\"secondary\" @click=\"flushAnswer()\">\r\n <v-icon>mdi-keyboard-backspace</v-icon> Back</v-btn> -->\r\n <div class=\"page-container\" v-if=\"!answerValue\">\r\n <v-card class=\"pa-4 ma-3\">\r\n <h3 class=\"pt-1\">{{ data.question }}</h3>\r\n <v-radio-group v-model=\"selectedItem.questionBlock\" key=\"question\">\r\n <v-radio v-for=\"(choice, index) in data.choices\" :key=\"index\" :label=\"choice.question\" :value=\"index\"\r\n class=\"pl-4\">\r\n </v-radio>\r\n </v-radio-group>\r\n <div v-if=\"selectedItem.questionBlock !== null\">\r\n <div v-for=\"(choiceContent, choiceContentIndex) in data.choices[\r\n selectedItem.questionBlock\r\n ].content\" :key=\"choiceContentIndex\">\r\n <h3 class=\"pt-1\">{{ choiceContent.value.question }}</h3>\r\n <v-radio-group v-model=\"selectedItem.extQuestionBlock\" key=\"extQuestion\">\r\n <v-radio v-for=\"(answerBlock, index) in choiceContent.value.content\"\r\n :key=\"`ext-${index}-${choiceContentIndex}`\" :label=\"answerBlock.value.answer\" :value=\"index\" class=\"pl-4\">\r\n </v-radio>\r\n </v-radio-group>\r\n </div>\r\n </div>\r\n </v-card>\r\n </div>\r\n <div v-for=\"(item, index) in answerValue\" :key=\"item.id\">\r\n <LightboxImageCard v-if=\"item.type === 'image'\" :data=\"item.value\" :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n :ariaDescription=\"'accessibilityDescriptionImage' + index\" />\r\n <LightboxVideo360Card v-if=\"item.type === 'video_360'\" :data=\"item.value\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\" :accessibilityVideoFlag=\"accessibilityVideoFlag\"\r\n :ariaDescription=\"'accessibilityDescriptionVideo' + index++\" />\r\n <LightboxVideoCard v-if=\"item.type === 'video'\" :data=\"item.value\" :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n :accessibilityVideoFlag=\"accessibilityVideoFlag\" :ariaDescription=\"'accessibilityDescriptionVideo' + index++\" />\r\n </div>\r\n </LightboxContentLayout>\r\n</template>\r\n\r\n<script>\r\nimport LightboxContentLayout from \"./LightboxContentLayout.vue\";\r\nimport { View360, EquirectProjection, ControlBar } from \"@egjs/vue-view360\";\r\nimport \"@egjs/vue-view360/css/view360.min.css\";\r\nimport LightboxImageCard from './LightboxImageCard.vue';\r\nimport LightboxVideoCard from './LightboxVideoCard.vue';\r\nimport LightboxVideo360Card from './LightboxVideo360Card.vue'\r\n\r\nexport default {\r\n name: \"QuestionsLightbox\",\r\n data: () => ({\r\n dialog: true,\r\n isMobile: false,\r\n windowWidth: window.screen.width,\r\n isTablet: false,\r\n isLaptop: false,\r\n lightboxReady: false,\r\n resetAnswer: false,\r\n selectedItem: {\r\n questionBlock: null,\r\n extQuestionBlock: null,\r\n answerBlock: null,\r\n },\r\n }),\r\n props: [\r\n \"data\",\r\n \"accessibilityTextFlag\",\r\n \"accessibilityVideoFlag\",\r\n \"accessibility\",\r\n \"ariaDescription\",\r\n ],\r\n components: { LightboxContentLayout, View360, LightboxImageCard, LightboxVideoCard, LightboxVideo360Card },\r\n mounted() {\r\n console.log(this.answerValue , \"answerValue @@@@ questions lightbox\")\r\n },\r\n created() {\r\n // this.projection = new EquirectProjection({\r\n // src: this.selectedOption,\r\n // video: true\r\n // });\r\n },\r\n computed: {\r\n video() {\r\n if (this.data && this.data.file) return this.data.file;\r\n return undefined;\r\n },\r\n answerValue() {\r\n if (this.selectedItem.questionBlock !== null && this.selectedItem.extQuestionBlock !== null) {\r\n // return this.data.choices[this.selectedItem.questionBlock].content[this.selectedItem.extQuestionBlock]\r\n // Test Muna boy\r\n // this.resetAnswer = \r\n return this.data.choices[this.selectedItem.questionBlock].content[0].value.content[this.selectedItem.extQuestionBlock].value.content\r\n }\r\n\r\n },\r\n // videoAccessibility() {\r\n // if (this.accessibilityMode && this.accessibilityVideoFlag)\r\n // return this.data.accessible_video;\r\n // return this.data.file;\r\n // },\r\n accessibilityLabel() {\r\n if (this.data && this.data.file) return this.data.accessibility_text;\r\n return undefined;\r\n },\r\n hasCaption() {\r\n if (this.data && this.data.caption)\r\n if (this.data.caption !== undefined) return true;\r\n return false;\r\n },\r\n // accessibilityMode() {\r\n // return this.$store.state.wagtail.accessibilityMode;\r\n // },\r\n hasAccessibleText() {\r\n if (this.data && this.data.accessibility_text) return true;\r\n return false;\r\n },\r\n // videoWidth() {\r\n // if (this.accessibilityTextFlag) return 60 + '%'\r\n // if (this.hasAccessibleText &&\r\n // this.hasCaption &&\r\n // this.accessibilityTextFlag == true) return 70 + \"%\";\r\n // return 100 + '%'\r\n // }\r\n },\r\n watch: {\r\n accessibilityVideoFlag(newValue) {\r\n console.log(newValue, \"value changed video\");\r\n var videoElement = document.getElementById(\"lightboxvideo\");\r\n\r\n if (this.accessibilityVideoFlag) {\r\n videoElement.pause();\r\n videoElement.removeAttribute(\"src\");\r\n videoElement.setAttribute(\"src\", this.data.accessible_video); // empty source\r\n videoElement.load();\r\n } else {\r\n videoElement.pause();\r\n videoElement.removeAttribute(\"src\");\r\n videoElement.setAttribute(\"src\", this.data.file); // empty source\r\n videoElement.load();\r\n }\r\n },\r\n answerValue(newValue){\r\n console.log(newValue, '@@@@qlb')\r\n this.$emit('answer-val-changed', newValue)\r\n } \r\n },\r\n methods: {\r\n flushAnswer() {\r\n this.resetAnswer = true\r\n this.selectedItem = {\r\n questionBlock: null,\r\n extQuestionBlock: null,\r\n answerBlock: null,\r\n };\r\n },\r\n textFlag() {\r\n console.log(\"triggered here from image\");\r\n if (this.accessibilityTextFlag == false) {\r\n this.accessibilityTextFlag = true;\r\n } else {\r\n this.accessibilityTextFlag = false;\r\n }\r\n },\r\n testFunc() {\r\n console.log(\"fire command\");\r\n this.$refs.viewer.addPlugins(new ControlBar());\r\n },\r\n // handleChange() {\r\n // console.log(this.selectedOption);\r\n // this.projection = new EquirectProjection({\r\n // src: this.selectedOption,\r\n // video: true,\r\n // });\r\n // console.log(this.projection);\r\n // },\r\n answerValue(res) {\r\n console.log(res, \"results time\")\r\n this.lightboxReady = true\r\n\r\n }\r\n },\r\n};\r\n</script>\r\n\r\n\r\n<style scoped>\r\n.full-screen {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.page-container {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n height: 100%;\r\n /* Adjust as needed */\r\n}\r\n\r\nvideo {\r\n margin-left: auto;\r\n margin-right: auto;\r\n display: block;\r\n}\r\n\r\n.view360-canvas {\r\n width: 1000px;\r\n height: 1000px;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./QuestionsLightbox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./QuestionsLightbox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuestionsLightbox.vue?vue&type=template&id=30a09e06&scoped=true&\"\nimport script from \"./QuestionsLightbox.vue?vue&type=script&lang=js&\"\nexport * from \"./QuestionsLightbox.vue?vue&type=script&lang=js&\"\nimport style0 from \"./QuestionsLightbox.vue?vue&type=style&index=0&id=30a09e06&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"30a09e06\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('LightboxVideo360Card',{key:this.currentVideoIndex,attrs:{\"data\":this.currentVideo},on:{\"ended\":function($event){return _vm.setNextVideo()},\"loaded\":() => {this.isVideoSet = false}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template >\r\n <div>\r\n <LightboxVideo360Card :data=\"this.currentVideo\" :key=\"this.currentVideoIndex\" @ended=\"setNextVideo()\" @loaded=\"() => {this.isVideoSet = false}\"/>\r\n </div>\r\n</template>\r\n<script>\r\n\r\nimport LightboxVideo360Card from \"./LightboxVideo360Card.vue\"\r\nexport default {\r\n\r\n props: [\r\n 'data'\r\n ],\r\n components: {\r\n LightboxVideo360Card\r\n },\r\n data: () =>({\r\n // For testing purposes\r\n // videos: [\"http://localhost:8000/media/original_videos/video_01.mp4\", \"http://localhost:8000/media/original_videos/video_02.mp4\", \"http://localhost:8000/media/original_videos/video_03.mp4\", ],\r\n currentVideoIndex: 0,\r\n currentVideo: null,\r\n isVideoSet: false,\r\n }),\r\n created() {\r\n this.currentVideo = this.data.videos[0]\r\n },\r\n methods: {\r\n setNextVideo() {\r\n if(this.currentVideoIndex < this.data.videos.length - 1 && !this.isVideoSet) {\r\n this.currentVideoIndex = this.currentVideoIndex + 1\r\n this.currentVideo = this.data.videos[this.currentVideoIndex]\r\n this.isVideoSet = true\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n<style>\r\n \r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxBranchingVideo360Card.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxBranchingVideo360Card.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxBranchingVideo360Card.vue?vue&type=template&id=14972b06&\"\nimport script from \"./LightboxBranchingVideo360Card.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxBranchingVideo360Card.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('LightboxVideoCard',{key:this.currentVideoIndex,attrs:{\"data\":this.currentVideo},on:{\"ended\":function($event){return _vm.setNextVideo()}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template >\r\n <div>\r\n <LightboxVideoCard :data=\"this.currentVideo\" :key=\"this.currentVideoIndex\" @ended=\"setNextVideo()\"/>\r\n </div>\r\n</template>\r\n<script>\r\n\r\nimport LightboxVideoCard from \"./LightboxVideoCard.vue\"\r\n\r\nexport default {\r\n\r\n props: [\r\n 'data'\r\n ],\r\n components: {\r\n LightboxVideoCard\r\n },\r\n data: () => ({\r\n // For testing purposes\r\n // videos: [\"http://localhost:8000/media/original_videos/video_01.mp4\", \"http://localhost:8000/media/original_videos/video_02.mp4\", \"http://localhost:8000/media/original_videos/video_03.mp4\", ],\r\n currentVideoIndex: 0,\r\n currentVideo: null,\r\n }),\r\n created() {\r\n this.currentVideo = this.data.videos[0]\r\n\r\n },\r\n methods: {\r\n setNextVideo() {\r\n if (this.currentVideoIndex < this.data.videos.length - 1) {\r\n this.currentVideoIndex = this.currentVideoIndex + 1\r\n this.currentVideo = this.data.videos[this.currentVideoIndex]\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n<style></style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxBranchingVideoCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxBranchingVideoCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxBranchingVideoCard.vue?vue&type=template&id=5009e956&\"\nimport script from \"./LightboxBranchingVideoCard.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxBranchingVideoCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',{staticClass:\"mx-auto\",attrs:{\"flat\":\"\",\"max-width\":\"500px\"}},[_c('v-card-text',[_c('div',{staticClass:\"d-flex flex-column align-center justify-center\"},[_c('v-img',{staticClass:\"rounded-lg\",attrs:{\"src\":_vm.data.image.file,\"width\":\"280px\",\"height\":\"280px\"}}),_c('h6',{staticClass:\"text-h6 mt-4\"},[_vm._v(_vm._s(_vm.data.audio.title))]),_c('ParagraphBlock',{attrs:{\"html\":_vm.data.description}})],1),_c('VuetifyAudio',{attrs:{\"flat\":\"\",\"file\":_vm.data.audio.file,\"color\":\"success\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-container',[_c('v-card',{staticStyle:{\"text-align\":\"center\"},attrs:{\"flat\":\"\"}},[_c('v-card-text',[_c('v-btn',{staticClass:\"ma-2\",attrs:{\"outlined\":\"\",\"icon\":\"\",\"color\":_vm.color,\"disabled\":!_vm.audioLoaded},nativeOn:{\"click\":function($event){_vm.isPlaying ? _vm.playPause() : _vm.playPause()}}},[(!_vm.isPlaying || _vm.paused)?_c('v-icon',[_vm._v(_vm._s(_vm.playIcon))]):_c('v-icon',[_vm._v(_vm._s(_vm.pauseIcon))])],1),_c('div',{staticClass:\"d-inline-block h-auto w-auto relative\",on:{\"mouseenter\":function($event){_vm.showVolume = true},\"mouseleave\":function($event){_vm.showVolume = false}}},[_c('v-btn',{staticClass:\"ma-2\",attrs:{\"outlined\":\"\",\"icon\":\"\",\"color\":_vm.color,\"disabled\":!_vm.audioLoaded},nativeOn:{\"click\":function($event){return _vm.mute()}}},[(!_vm.muted)?_c('v-icon',[_vm._v(_vm._s(_vm.volumeHighIcon))]):_c('v-icon',[_vm._v(_vm._s(_vm.volumeMuteIcon))])],1),(_vm.showVolume)?_c('v-slider',{staticClass:\"volume\",staticStyle:{\"cursor\":\"pointer\"},attrs:{\"max\":\"1\",\"step\":\"0.01\",\"min\":\"0\"},model:{value:(_vm.playerVolume),callback:function ($$v) {_vm.playerVolume=$$v},expression:\"playerVolume\"}}):_vm._e()],1),_c('div',{staticClass:\"d-flex justify-space-between mt-2\"},[_c('span',[_vm._v(_vm._s(_vm.formatTime(_vm.currentTime)))]),_c('span',[_vm._v(_vm._s(_vm.formatTime(_vm.duration)))])]),(_vm.audioLoaded)?_c('v-progress-linear',{ref:\"progressBar\",staticStyle:{\"margin-top\":\"15px\",\"margin-bottom\":\"15px\",\"cursor\":\"pointer\"},attrs:{\"value\":_vm.progress,\"height\":\"8\",\"rounded\":\"xl\"},on:{\"click\":_vm.seek}}):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-container>\r\n <v-card style=\"text-align: center\" flat>\r\n <v-card-text>\r\n <v-btn\r\n outlined\r\n icon\r\n class=\"ma-2\"\r\n :color=\"color\"\r\n @click.native=\"isPlaying ? playPause() : playPause()\"\r\n :disabled=\"!audioLoaded\"\r\n >\r\n <v-icon v-if=\"!isPlaying || paused\">{{ playIcon }}</v-icon>\r\n <v-icon v-else>{{ pauseIcon }}</v-icon>\r\n </v-btn>\r\n <div\r\n class=\"d-inline-block h-auto w-auto relative\"\r\n @mouseenter=\"showVolume = true\"\r\n @mouseleave=\"showVolume = false\"\r\n >\r\n <v-btn\r\n outlined\r\n icon\r\n class=\"ma-2\"\r\n :color=\"color\"\r\n @click.native=\"mute()\"\r\n :disabled=\"!audioLoaded\"\r\n >\r\n <v-icon v-if=\"!muted\">{{ volumeHighIcon }}</v-icon>\r\n <v-icon v-else>{{ volumeMuteIcon }}</v-icon>\r\n </v-btn>\r\n\r\n <v-slider\r\n v-if=\"showVolume\"\r\n v-model=\"playerVolume\"\r\n max=\"1\"\r\n step=\"0.01\"\r\n min=\"0\"\r\n class=\"volume\"\r\n style=\"cursor: pointer\"\r\n ></v-slider>\r\n </div>\r\n <div class=\"d-flex justify-space-between mt-2\">\r\n <span>{{ formatTime(currentTime) }}</span>\r\n <span>{{ formatTime(duration) }}</span>\r\n </div>\r\n <v-progress-linear\r\n ref=\"progressBar\"\r\n :value=\"progress\"\r\n height=\"8\"\r\n rounded=\"xl\"\r\n style=\"margin-top: 15px; margin-bottom: 15px; cursor: pointer\"\r\n @click=\"seek\"\r\n v-if=\"audioLoaded\"\r\n ></v-progress-linear>\r\n </v-card-text>\r\n </v-card>\r\n </v-container>\r\n</template>\r\n\r\n<script>\r\nimport { Howl } from \"howler\";\r\n\r\nexport default {\r\n props: {\r\n file: {\r\n type: String,\r\n required: true,\r\n },\r\n color: {\r\n type: String,\r\n default: null,\r\n },\r\n downloadable: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n playIcon: {\r\n type: String,\r\n default: \"mdi-play\",\r\n },\r\n pauseIcon: {\r\n type: String,\r\n default: \"mdi-pause\",\r\n },\r\n stopIcon: {\r\n type: String,\r\n default: \"mdi-stop\",\r\n },\r\n refreshIcon: {\r\n type: String,\r\n default: \"mdi-refresh\",\r\n },\r\n downloadIcon: {\r\n type: String,\r\n default: \"mdi-download\",\r\n },\r\n volumeHighIcon: {\r\n type: String,\r\n default: \"mdi-volume-high\",\r\n },\r\n volumeMuteIcon: {\r\n type: String,\r\n default: \"mdi-volume-mute\",\r\n },\r\n },\r\n data() {\r\n return {\r\n sound: null,\r\n isPlaying: false,\r\n progress: 0,\r\n audioLoaded: false,\r\n progressInterval: null,\r\n backgroundAudioId: null,\r\n muted: false,\r\n showVolume: false,\r\n playerVolume: 0.5,\r\n currentTime: 0,\r\n duration: 0,\r\n };\r\n },\r\n mounted() {\r\n this.sound = new Howl({\r\n src: [this.file],\r\n volume: this.playerVolume,\r\n onload: () => {\r\n this.audioLoaded = true;\r\n this.duration = this.sound.duration();\r\n },\r\n onplay: () => {\r\n this.isPlaying = true;\r\n this.startProgressUpdates();\r\n },\r\n onpause: () => {\r\n this.isPlaying = false;\r\n this.stopProgressUpdates();\r\n },\r\n onend: () => {\r\n this.isPlaying = false;\r\n this.progress = 0;\r\n this.stopProgressUpdates();\r\n },\r\n });\r\n },\r\n methods: {\r\n mute() {\r\n this.muted = !this.muted;\r\n this.sound.mute(this.muted, this.backgroundAudioId);\r\n },\r\n playPause() {\r\n if (this.isPlaying) {\r\n this.sound.pause();\r\n } else {\r\n this.backgroundAudioId = this.sound.play();\r\n }\r\n },\r\n startProgressUpdates() {\r\n this.progressInterval = setInterval(() => {\r\n const duration = this.sound.duration();\r\n this.currentTime = this.sound.seek();\r\n this.progress = (currentTime / duration) * 100;\r\n }, 100); // Update every 100ms\r\n },\r\n stopProgressUpdates() {\r\n clearInterval(this.progressInterval);\r\n this.progressInterval = null;\r\n },\r\n seek(event) {\r\n const progressBarWidth = this.$refs.progressBar.$el.clientWidth;\r\n const clickX = event.offsetX;\r\n const newTime = (clickX / progressBarWidth) * this.sound.duration();\r\n this.sound.seek(newTime);\r\n\r\n // Immediately update progress bar\r\n this.progress = (newTime / this.sound.duration()) * 100;\r\n this.currentTime = newTime;\r\n },\r\n formatTime(seconds) {\r\n const minutes = Math.floor(seconds / 60);\r\n const secs = Math.floor(seconds % 60);\r\n return `${minutes}:${secs < 10 ? \"0\" : \"\"}${secs}`;\r\n },\r\n },\r\n watch: {\r\n playerVolume() {\r\n this.sound.volume(this.playerVolume);\r\n },\r\n },\r\n beforeDestroy() {\r\n this.sound.unload();\r\n this.stopProgressUpdates();\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.v-progress-linear {\r\n cursor: pointer;\r\n}\r\n\r\n.volume {\r\n position: absolute;\r\n width: 150px;\r\n top: -10px;\r\n left: 0;\r\n right: 0;\r\n margin: auto;\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VuetifyAudio.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VuetifyAudio.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./VuetifyAudio.vue?vue&type=template&id=cb278eda&scoped=true&\"\nimport script from \"./VuetifyAudio.vue?vue&type=script&lang=js&\"\nexport * from \"./VuetifyAudio.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VuetifyAudio.vue?vue&type=style&index=0&id=cb278eda&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cb278eda\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <v-card flat max-width=\"500px\" class=\"mx-auto\">\r\n <v-card-text>\r\n <div class=\"d-flex flex-column align-center justify-center\">\r\n <v-img\r\n class=\"rounded-lg\"\r\n :src=\"data.image.file\"\r\n width=\"280px\"\r\n height=\"280px\"\r\n ></v-img>\r\n\r\n <h6 class=\"text-h6 mt-4\">{{ data.audio.title }}</h6>\r\n <ParagraphBlock :html=\"data.description\"></ParagraphBlock>\r\n </div>\r\n <VuetifyAudio flat :file=\"data.audio.file\" color=\"success\" />\r\n </v-card-text>\r\n </v-card>\r\n</template>\r\n\r\n<script>\r\nimport VuetifyAudio from \"@/components/VuetifyAudio.vue\";\r\nimport ParagraphBlock from \"../blocks/paragraphBlock.vue\";\r\nexport default {\r\n components: {\r\n VuetifyAudio,\r\n ParagraphBlock,\r\n },\r\n props: {\r\n data: Object,\r\n },\r\n};\r\n</script>\r\n<style lang=\"scss\" scoped>\r\nh6 {\r\n max-width: 380px;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxAudio.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxAudio.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxAudio.vue?vue&type=template&id=2be34600&scoped=true&\"\nimport script from \"./LightboxAudio.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxAudio.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LightboxAudio.vue?vue&type=style&index=0&id=2be34600&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2be34600\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('LightboxContentLayout',{attrs:{\"ariaDescription\":_vm.ariaDescription,\"captionText\":_vm.data.caption,\"accessibilityTextFlag\":_vm.accessibilityTextFlag}},[_c('div',{staticClass:\"card\"},[_c('div',{style:({ textAlign: 'center' })},[_c('div',[_vm._v(\"If a tab hasn't opened click on the following\")])]),_c('div',[(_vm.data.thumbnail !== null)?_c('a',{staticClass:\"image-link\",attrs:{\"href\":_vm.data.url,\"target\":\"_blank\"}},[_c('v-img',{staticClass:\"link-thumbnail\",attrs:{\"src\":_vm.data.thumbnail.file}}),_c('span',{staticClass:\"text-truncate centered-text\",style:({ maxWidth: '300px' })},[_vm._v(_vm._s(_vm.data.url))])],1):_c('v-btn',{staticClass:\"mt-4\",style:({ maxWidth: '300px'}),attrs:{\"href\":_vm.data.url,\"target\":\"_blank\"}},[_c('span',{staticClass:\"text-truncate\",style:({ maxWidth: '300px' })},[_vm._v(_vm._s(_vm.data.url))])])],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <LightboxContentLayout :ariaDescription=\"ariaDescription\" :captionText=\"data.caption\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\">\r\n\r\n <div class=\"card\">\r\n <div :style=\"{ textAlign: 'center' }\">\r\n <div>If a tab hasn't opened click on the following</div>\r\n </div>\r\n <div>\r\n <a v-if=\"data.thumbnail !== null\" :href=\"data.url\" target=\"_blank\" class=\"image-link\">\r\n <v-img :src=\"data.thumbnail.file\" class=\"link-thumbnail\" />\r\n <span class=\"text-truncate centered-text \" :style=\" { maxWidth: '300px' }\">{{ data.url\r\n }}</span>\r\n </a>\r\n <v-btn v-else class=\"mt-4\" :href=\"data.url\" target=\"_blank\" :style=\"{ maxWidth: '300px'}\">\r\n <span class=\"text-truncate\" :style=\"{ maxWidth: '300px' }\">{{ data.url }}</span>\r\n </v-btn>\r\n </div>\r\n </div>\r\n </LightboxContentLayout>\r\n\r\n</template>\r\n<script>\r\n import LightboxContentLayout from './LightboxContentLayout.vue';\r\n\r\n export default {\r\n name: \"ExternalLinkCard\",\r\n data: () => ({\r\n backgroundImage\r\n }),\r\n props: [\"data\", \"ariaDescription\", \"accessibilityTextFlag\"],\r\n components: {\r\n LightboxContentLayout\r\n },\r\n mounted() {\r\n console.log(\"External Link\", this.data)\r\n },\r\n computed: {\r\n backgroundImage() {\r\n return this.data.thumbnail.file\r\n }\r\n }\r\n }\r\n</script>\r\n<style scoped>\r\n.card {\r\n height: 100%;\r\n width: 100%;\r\n background-color: rgb(32, 32, 32);\r\n border-radius: 5px;\r\n color: whitesmoke;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.link-thumbnail {\r\n margin-top: 10px;\r\n width: 300px;\r\n border-radius: 5px;\r\n opacity: 0.65;\r\n}\r\n.link-thumbnail:hover {\r\n opacity: 0.45;\r\n}\r\n\r\n.centered-text {\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n}\r\n\r\n.image-link {\r\n display: flex;\r\n justify-content: center;\r\n flex-direction: column;\r\n align-items: center;\r\n color: whitesmoke;\r\n position: relative;\r\n}\r\n\r\n\r\n\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxExternalLinkCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxExternalLinkCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxExternalLinkCard.vue?vue&type=template&id=15d598e6&scoped=true&\"\nimport script from \"./LightboxExternalLinkCard.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxExternalLinkCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LightboxExternalLinkCard.vue?vue&type=style&index=0&id=15d598e6&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"15d598e6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('LightboxContentLayout',{attrs:{\"ariaDescription\":_vm.ariaDescription,\"captionText\":_vm.data.caption,\"accessibilityTextFlag\":_vm.accessibilityTextFlag}},[_c('div',{staticClass:\"card\"},[_c('div',{style:({ textAlign: 'center' })},[_c('div',[_vm._v(\"If a tab hasn't opened click on the following\")]),_c('div',[(_vm.data.thumbnail !== null)?_c('a',{staticClass:\"image-link\",attrs:{\"href\":_vm.urlPath,\"target\":\"_blank\"}},[_c('v-img',{staticClass:\"link-thumbnail\",attrs:{\"src\":_vm.data.thumbnail.file}}),_c('span',{staticClass:\"text-truncate centered-text\",style:({ maxWidth: '300px', padding: '10px' })},[_vm._v(\" \"+_vm._s(_vm.urlPath)+\" \")])],1):_c('v-btn',{staticClass:\"mt-4\",style:({ maxWidth: '300px' }),attrs:{\"href\":_vm.urlPath,\"target\":\"_blank\"}},[_c('span',{staticClass:\"text-truncate\",style:({ maxWidth: '300px', padding: '10px'})},[_vm._v(\" \"+_vm._s(_vm.urlPath))])])],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <LightboxContentLayout :ariaDescription=\"ariaDescription\" :captionText=\"data.caption\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\">\r\n\r\n <div class=\"card\">\r\n\r\n <div :style=\"{ textAlign: 'center' }\">\r\n <div>If a tab hasn't opened click on the following</div>\r\n <div>\r\n <a v-if=\"data.thumbnail !== null\" :href=\"urlPath\" target=\"_blank\" class=\"image-link\">\r\n <v-img :src=\"data.thumbnail.file\" class=\"link-thumbnail\" />\r\n <span class=\"text-truncate centered-text\" :style=\"{ maxWidth: '300px', padding: '10px' }\">\r\n {{ urlPath }}\r\n </span>\r\n </a>\r\n <v-btn v-else class=\"mt-4\" :href=\"urlPath\" target=\"_blank\" :style=\"{ maxWidth: '300px' }\">\r\n <span class=\"text-truncate\" :style=\"{ maxWidth: '300px', padding: '10px'}\"> {{ urlPath }}</span>\r\n </v-btn>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </LightboxContentLayout>\r\n\r\n</template>\r\n<script>\r\nimport LightboxContentLayout from './LightboxContentLayout.vue';\r\n\r\nexport default {\r\n name: \"InternalLinkCard\",\r\n data: () => ({\r\n urlPath,\r\n fullLink,\r\n }),\r\n props: [\"data\", \"ariaDescription\", \"accessibilityTextFlag\"],\r\n components: {\r\n LightboxContentLayout\r\n },\r\n computed: {\r\n urlPath() {\r\n const location = new URL(window.location.href)\r\n const url = new URL(this.data.page.meta.html_url)\r\n return location.origin + url.pathname\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n<style scoped>\r\n.card {\r\n height: 100%;\r\n width: 100%;\r\n background-color: rgb(32, 32, 32);\r\n border-radius: 5px;\r\n color: whitesmoke;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.content {\r\n flex: 1;\r\n}\r\n\r\n.card {\r\n height: 100%;\r\n width: 100%;\r\n background-color: rgb(32, 32, 32);\r\n border-radius: 5px;\r\n color: whitesmoke;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.link-thumbnail {\r\n margin-top: 10px;\r\n width: 300px;\r\n border-radius: 5px;\r\n opacity: 0.65;\r\n}\r\n\r\n.link-thumbnail:hover {\r\n opacity: 0.45;\r\n}\r\n\r\n.centered-text {\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n}\r\n\r\n.image-link {\r\n display: flex;\r\n justify-content: center;\r\n flex-direction: column;\r\n align-items: center;\r\n color: whitesmoke;\r\n position: relative;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxInternalLinkCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxInternalLinkCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxInternalLinkCard.vue?vue&type=template&id=7089d334&scoped=true&\"\nimport script from \"./LightboxInternalLinkCard.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxInternalLinkCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LightboxInternalLinkCard.vue?vue&type=style&index=0&id=7089d334&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7089d334\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <LightboxBase\r\n style=\"z-index: +99999\"\r\n :title=\"title\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n :accessibilityVideoFlag=\"accessibilityVideoFlag\"\r\n :accessibilityMode=\"accessibilityMode\"\r\n :hasAccessibleText=\"this.accessibleText\"\r\n :hasAccessibleVideo=\"this.accessibleVideo\"\r\n :isBeforeAfter=\"isBeforeAfter\"\r\n @closed=\"$emit('closed')\"\r\n @download=\"download()\"\r\n @emit-back=\"emitBack()\"\r\n @accessibility=\"accessibilityTextTrigger()\"\r\n @accessibilityvideo=\"accessibilityVideoTrigger()\"\r\n @accessibilitybeforeafter=\"accessibilityBeforeAfterTrigger()\"\r\n :showDownload=\"canDownload\"\r\n :showBack=\"hasBack\"\r\n :showAccessibleVideo=\"isVideo\"\r\n :dataFromQLB=\"dataFromQuestionLB\"\r\n ref=\"lightbox_btn\"\r\n :showLightbox=\"showLightbox\"\r\n @hide-lightbox-buttons=\"handleHideLightboxButtons\"\r\n @show-lightbox-buttons=\"handleShowLightboxButtons\"\r\n >\r\n <LoadingOverlay class=\"loading-overlay\" title=\"\" />\r\n <v-carousel\r\n height=\"90vh\"\r\n :show-arrows=\"content.length > 1\"\r\n :hide-delimiters=\"!showDelimiters\"\r\n :hide-delimiter-background=\"true\"\r\n dark\r\n v-model=\"index\"\r\n touchless\r\n >\r\n <template v-slot:prev=\"{ on, attrs }\">\r\n <v-btn\r\n v-show=\"showLightboxButtons\"\r\n color=\"secondary\"\r\n v-bind=\"attrs\"\r\n v-on=\"on\"\r\n rounded\r\n :fab=\"$vuetify.breakpoint.smAndDown\"\r\n :small=\"$vuetify.breakpoint.smAndDown\"\r\n aria-label=\"prev-visual\"\r\n ><v-icon>mdi-chevron-left</v-icon\r\n ><span class=\"d-none d-md-inline\">Prev</span></v-btn\r\n >\r\n </template>\r\n <template v-slot:next=\"{ on, attrs }\">\r\n <v-btn\r\n v-show=\"showLightboxButtons\"\r\n color=\"secondary\"\r\n v-bind=\"attrs\"\r\n v-on=\"on\"\r\n rounded\r\n :fab=\"$vuetify.breakpoint.smAndDown\"\r\n :small=\"$vuetify.breakpoint.smAndDown\"\r\n aria-label=\"next-visual\"\r\n ><span class=\"d-none d-md-inline\">Next</span\r\n ><v-icon>mdi-chevron-right</v-icon></v-btn\r\n >\r\n </template>\r\n\r\n <v-carousel-item v-for=\"(item, index) in content\" :key=\"item.id\">\r\n <div class=\"lightbox-content\">\r\n <v-container\r\n fill-height\r\n fluid\r\n :class=\"multi ? 'lightbox-container-multi' : 'lightbox-container'\"\r\n >\r\n <v-row align=\"center\" justify=\"center\" class=\"lightbox-row\">\r\n <v-col class=\"fill-height lightbox-col\">\r\n <LightboxIframeCard\r\n v-if=\"item.type === 'iframe'\"\r\n :data=\"item.value\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n :ariaDescription=\"'accessibilityDescriptionIframe' + index\"\r\n />\r\n <LightboxImageCard\r\n v-if=\"item.type === 'image'\"\r\n :data=\"item.value\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n :ariaDescription=\"'accessibilityDescriptionImage' + index\"\r\n />\r\n <LightboxVideoCard\r\n v-if=\"item.type === 'video'\"\r\n :data=\"item.value\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n :accessibilityVideoFlag=\"accessibilityVideoFlag\"\r\n :ariaDescription=\"'accessibilityDescriptionVideo' + index++\"\r\n />\r\n <LightboxBranchingVideo360Card\r\n v-if=\"item.type === 'branching_video_360'\"\r\n :data=\"item.value\"\r\n />\r\n <LightboxBranchingVideoCard\r\n v-if=\"item.type === 'branching_video'\"\r\n :data=\"item.value\"\r\n />\r\n <LightboxVideo360Card\r\n v-if=\"item.type === 'video_360'\"\r\n :data=\"item.value\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n :accessibilityVideoFlag=\"accessibilityVideoFlag\"\r\n :accessibilityMode=\"accessibilityMode\"\r\n :ariaDescription=\"'accessibilityDescriptionVideo' + index++\"\r\n />\r\n <LightboxDocumentCard\r\n v-if=\"item.type === 'document'\"\r\n :data=\"item.value\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n :ariaDescription=\"'accessibilityDescriptionDocument' + index\"\r\n />\r\n <LightboxCustomPanoramaCard\r\n v-if=\"item.type === 'panoramaroompopup'\"\r\n :data=\"item.value\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n :ariaDescription=\"'accessibilityDescriptionVideo' + index\"\r\n />\r\n <LightboxWagtailPage\r\n v-if=\"item.type === 'page'\"\r\n :data=\"item.value\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n :ariaDescription=\"\r\n 'accessibilityDescriptionWagtailPage' + index\r\n \"\r\n />\r\n <QuestionsLightbox\r\n v-if=\"item.type === 'questionBlock'\"\r\n ref=\"childComponentRef\"\r\n @answer-val-changed=\"handleDataFromChild\"\r\n :data=\"item.value\"\r\n :accessibility=\"accessibilityTextFlag\"\r\n :ariaDescription=\"\r\n 'accessibiilityDescriptionQuestionBlock' + index\r\n \"\r\n >\r\n </QuestionsLightbox>\r\n <LightboxWagtailPageStruct\r\n v-if=\"item.type === 'page_struct'\"\r\n :data=\"item.value\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n :ariaDescription=\"\r\n 'accessibilityDescriptionPageStructure' + index\r\n \"\r\n />\r\n <LightboxBeforeAfterCard\r\n v-if=\"item.type === 'beforeafter'\"\r\n :data=\"item.value\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n :accessibleSliderValue=\"sliderValue\"\r\n :ariaDescription=\"\r\n 'accessibilityDescriptionBeforeAfterImage' + index\r\n \"\r\n />\r\n <LightboxBiographyCard\r\n v-if=\"item.type === 'biography'\"\r\n :data=\"item.value\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n :ariaDescription=\"'accessibilityDescriptionBiography' + index\"\r\n />\r\n <LightboxAudio\r\n v-if=\"item.type === 'audio'\"\r\n :data=\"item.value\"\r\n />\r\n <LightboxExternalLinkCard\r\n v-if=\"item.type === 'external_link'\"\r\n :data=\"item.value\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n :ariaDescription=\"'accessibilityDescriptionExternalLink' + index\"\r\n />\r\n <LightboxInternalLinkCard\r\n v-if=\"item.type === 'internal_page_link'\"\r\n :data=\"item.value\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n :ariaDescription=\"'accessibilityDescriptionInternalLink' + index\"\r\n />\r\n\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n </div>\r\n </v-carousel-item>\r\n </v-carousel>\r\n </LightboxBase>\r\n</template>\r\n\r\n<script>\r\n// import ImageLightbox from \"./ImageLightbox.vue\"\r\nimport LightboxBase from \"./LightboxBase.vue\";\r\nimport LightboxImageCard from \"./LightboxImageCard.vue\";\r\nimport LightboxVideoCard from \"./LightboxVideoCard.vue\";\r\nimport LightboxDocumentCard from \"./LightboxDocumentCard.vue\";\r\nimport LightboxWagtailPage from \"./LightboxWagtailPage.vue\";\r\nimport LightboxWagtailPageStruct from \"./LightboxWagtailPageStruct.vue\";\r\nimport LightboxIframeCard from \"./LightboxIframeCard.vue\";\r\nimport LightboxBeforeAfterCard from \"./LightboxBeforeAfterCard.vue\";\r\nimport LoadingOverlay from \"./LoadingOverlay.vue\";\r\nimport LightboxPanoramaCard from \"./LightboxPanoramaCard.vue\";\r\nimport LightboxVideo360Card from \"./LightboxVideo360Card.vue\";\r\nimport LightboxBiographyCard from \"./LightboxBiographyCard.vue\";\r\nimport LightboxCustomPanoramaCard from \"./LightboxCustomPanoramaCard.vue\";\r\nimport QuestionsLightbox from \"./QuestionsLightbox.vue\";\r\nimport Axios from \"axios\";\r\nimport LightboxBranchingVideo360Card from \"./LightboxBranchingVideo360Card.vue\";\r\nimport LightboxBranchingVideoCard from \"./LightboxBranchingVideoCard.vue\";\r\nimport LightboxAudio from \"./LightboxAudio.vue\";\r\nimport LightboxExternalLinkCard from \"./LightboxExternalLinkCard.vue\";\r\nimport LightboxInternalLinkCard from \"./LightboxInternalLinkCard.vue\"\r\n\r\nexport default {\r\n props: [\"content\", \"startIndex\", \"showLightbox\", \"lightboxTrigger\"],\r\n data: () => ({\r\n showLightboxButtons: true,\r\n showDelimiters: false,\r\n dialog: true,\r\n index: 0,\r\n accessibilityTextFlag: false,\r\n accessibilityVideoFlag: false,\r\n accessibleText: false,\r\n accessibleBeforeAfter: false,\r\n accessibleVideo: false,\r\n sliderValue: 0.5,\r\n dataFromQuestionLB: false,\r\n isMobile: false,\r\n goToOptions: {\r\n duration: 0,\r\n offset: 0,\r\n easing: \"linear\",\r\n },\r\n }),\r\n // components: { LightboxBase },\r\n components: {\r\n LightboxAudio,\r\n LightboxBase,\r\n LightboxImageCard,\r\n LightboxVideoCard,\r\n LightboxDocumentCard,\r\n LightboxWagtailPage,\r\n LightboxWagtailPageStruct,\r\n LightboxIframeCard,\r\n LightboxBeforeAfterCard,\r\n LoadingOverlay,\r\n LightboxPanoramaCard,\r\n LightboxVideo360Card,\r\n LightboxBiographyCard,\r\n LightboxBranchingVideo360Card,\r\n LightboxCustomPanoramaCard,\r\n QuestionsLightbox,\r\n LightboxBranchingVideoCard,\r\n LightboxExternalLinkCard,\r\n LightboxInternalLinkCard\r\n },\r\n\r\n computed: {\r\n currentItem() {\r\n console.log(\"current item updated\", this.content);\r\n if (this.content[this.index] !== undefined)\r\n return this.content[this.index];\r\n return undefined;\r\n },\r\n canDownload() {\r\n if (this.currentItem === undefined || this.currentItem.value.downloadable === false) return false;\r\n\r\n \r\n let downloadTypes = [\"image\", \"document\"];\r\n return downloadTypes.includes(this.currentItem.type);\r\n },\r\n hasBack() {\r\n if (this.currentItem === undefined) return false;\r\n\r\n let questionBlock = [\"questionBlock\"];\r\n return questionBlock.includes(this.currentItem.type);\r\n },\r\n isVideo() {\r\n if (this.currentItem === undefined) return false;\r\n\r\n let videoType = [\"video\"];\r\n return videoType.includes(this.currentItem.type);\r\n },\r\n isBeforeAfter() {\r\n if (this.currentItem === undefined) return false;\r\n\r\n let beforeafter = [\"beforeafter\"];\r\n return beforeafter.includes(this.currentItem.type);\r\n },\r\n title() {\r\n if (this.content[this.index] !== undefined)\r\n return this.content[this.index].value.title;\r\n return \"\";\r\n },\r\n showButtons() {\r\n if (this.$vuetify.breakpoint.name === \"xs\") return false;\r\n\r\n if (this.content !== undefined) if (this.content.length > 1) return true;\r\n return false;\r\n },\r\n\r\n multi() {\r\n if (this.content !== undefined && this.content.length > 1) return true;\r\n return false;\r\n },\r\n accessibilityMode() {\r\n return this.$store.state.wagtail.accessibilityMode;\r\n },\r\n currOpacity() {\r\n if (this.isMobile) return 0.5;\r\n return 1;\r\n },\r\n },\r\n // beforeCreate(){\r\n // let html = document.querySelector('html');\r\n\r\n // html.style.overflow = 'hidden'\r\n // this.$refs.lightbox_btn.$el.focus();\r\n\r\n // },\r\n mounted() {\r\n console.log(this.$refs.lightbox_btn.clientWidth, \"test-vid\");\r\n console.log(this.content, \"content time\");\r\n console.log(this.startIndex, \"index of current gal\");\r\n this.$vuetify.goTo(0, this.goToOptions);\r\n let html = document.querySelector(\"html\");\r\n\r\n html.style.overflow = \"hidden\";\r\n\r\n // this.index = this.startIndex || 0;\r\n\r\n this.updateIndex();\r\n this.$refs.lightbox_btn.$el.focus();\r\n window.addEventListener(\"resize\", this.onResize, { passive: true });\r\n if (window.screen.width < 600) {\r\n this.isMobile = true;\r\n }\r\n\r\n\r\n // On mount, show/hide delimeters\r\n if (this.content !== undefined && this.content.length > 1) {\r\n this.showDelimiters = true;\r\n } else {\r\n this.showDelimiters = false;\r\n }\r\n\r\n },\r\n beforeDestroy() {\r\n console.log(\"destroy\");\r\n let html = document.querySelector(\"html\");\r\n\r\n html.style.overflow = \"scroll\";\r\n html.style.overflowX = \"hidden\";\r\n },\r\n watch: {\r\n showLightbox(value) {\r\n\r\n if (value) {\r\n for (const item of this.content) {\r\n if (item.type === 'external_link') {\r\n window.open(item.value.url, '_blank')\r\n break;\r\n } else if (item.type === 'internal_page_link') {\r\n const url = new URL(item.value.page.meta.html_url)\r\n window.open(url.pathname, '_blank')\r\n break;\r\n }\r\n }\r\n }\r\n\r\n },\r\n content() {\r\n console.log(\"content update lightbox gall\");\r\n this.updateIndex();\r\n for (var i = 0; i < this.content.length; i++) {\r\n if (this.content[i] <= this.content.length) {\r\n this.content[0].value.push({ testtest: i });\r\n }\r\n\r\n }\r\n // On content change, show/hide delimeters\r\n if (this.content !== undefined && this.content.length > 1) {\r\n this.showDelimiters = true;\r\n } else {\r\n this.showDelimiters = false;\r\n }\r\n\r\n },\r\n startIndex(result) {\r\n console.log(result, \"update index\");\r\n this.updateIndex();\r\n },\r\n currentItem() {\r\n if (!this.currentItem) return;\r\n\r\n if (\r\n this.currentItem.value &&\r\n this.currentItem.value.videoAccessibility &&\r\n this.currentItem.value.videoAccessibility.video &&\r\n this.currentItem.value.videoAccessibility.video.file\r\n ) {\r\n this.accessibleText = true;\r\n this.accessibleVideo = true;\r\n } else if (\r\n (this.currentItem.value.accessibility_text === undefined &&\r\n this.currentItem.value.accessible_video === undefined) ||\r\n (this.currentItem.value.accessibility_text == `` &&\r\n this.currentItem.value.accessible_video == null) ||\r\n (this.currentItem.value.accessibility_text == \"\" &&\r\n this.currentItem.value.accessible_video === \"\") ||\r\n (this.currentItem.value.accessibility_text == null &&\r\n this.currentItem.value.accessible_video == undefined)\r\n ) {\r\n this.accessibleText = false;\r\n this.accessibleVideo = false;\r\n } else if (\r\n (this.currentItem.value.accessibility_text != undefined &&\r\n this.currentItem.value.accessible_video != undefined) ||\r\n (this.currentItem.value.accessibility_text != null &&\r\n this.currentItem.value.accessible_video != null) ||\r\n (this.currentItem.value.accessibility_text != `` &&\r\n this.currentItem.value.accessible_video != \"\")\r\n ) {\r\n this.accessibleVideo = true;\r\n this.accessibleText = true;\r\n } else if (\r\n (this.currentItem.value.accessibility_text === undefined &&\r\n this.currentItem.value.accessible_video != undefined) ||\r\n (this.currentItem.value.accessibility_text === null &&\r\n this.currentItem.value.accessible_video != null) ||\r\n (this.currentItem.value.accessibility_text == `` &&\r\n this.currentItem.value.accessible_video != \"\")\r\n ) {\r\n this.accessibleText = false;\r\n this.accessibleVideo = true;\r\n } else if (\r\n (this.currentItem.value.accessibility_text != undefined &&\r\n this.currentItem.value.accessible_video === undefined) ||\r\n (this.currentItem.value.accessibility_text != null &&\r\n this.currentItem.value.accessible_video === null) ||\r\n (this.currentItem.value.accessibility_text != `` &&\r\n this.currentItem.value.accessible_video === \"\")\r\n ) {\r\n this.accessibleText = true;\r\n this.accessibleVideo = false;\r\n }\r\n },\r\n isVideo() {\r\n if (this.currentItem.value.accessible_video === undefined) return false;\r\n return true;\r\n },\r\n dialog(newVal) {\r\n console.log(\"new value for vid\", newVal);\r\n },\r\n },\r\n methods: {\r\n handleHideLightboxButtons() {\r\n this.showLightboxButtons = false;\r\n this.showDelimiters = false;\r\n },\r\n handleShowLightboxButtons() {\r\n this.showLightboxButtons = true;\r\n\r\n if (this.content !== undefined && this.content.length > 1) {\r\n this.showDelimiters = true;\r\n }\r\n },\r\n updateIndex() {\r\n if (this.startIndex !== undefined) this.index = this.startIndex;\r\n else this.index = 0;\r\n },\r\n next() {\r\n this.index++;\r\n if (this.index >= this.content.length) this.index = 0;\r\n },\r\n prev() {\r\n this.index--;\r\n if (this.index < 0) this.index = this.content.length - 1;\r\n },\r\n onResize() {\r\n if (window.screen.width < 600) {\r\n this.isMobile = true;\r\n } else {\r\n this.isMobile = false;\r\n }\r\n },\r\n handleDataFromChild(data) {\r\n console.log(data, \"@@@@LBG\");\r\n if (data !== undefined) {\r\n this.dataFromQuestionLB = true;\r\n } else this.dataFromQuestionLB = false;\r\n },\r\n download() {\r\n if (this.currentItem === undefined) return;\r\n\r\n let url = new URL(this.currentItem.value.file);\r\n url = url.pathname;\r\n let filename = url.substring(url.lastIndexOf(\"/\") + 1);\r\n\r\n if (this.currentItem.type === \"image\") {\r\n this.downloadItem(this.currentItem.value.file, filename);\r\n } else if (this.currentItem.type === \"document\") {\r\n this.downloadItem(this.currentItem.value.file, filename);\r\n }\r\n },\r\n emitBack() {\r\n this.$refs.childComponentRef[0].flushAnswer();\r\n console.log(childComponentInstance, \"@@@@childco\");\r\n },\r\n downloadItem(url, label) {\r\n Axios.get(url, { responseType: \"blob\" })\r\n .then((response) => {\r\n const blob = new Blob([response.data], {\r\n type: this.getMimetype(label),\r\n });\r\n const link = document.createElement(\"a\");\r\n link.href = URL.createObjectURL(blob);\r\n link.download = label;\r\n link.click();\r\n URL.revokeObjectURL(link.href);\r\n })\r\n .catch(console.error);\r\n },\r\n getMimetype(filename) {\r\n var extToMimes = {\r\n jpg: \"image/jpeg\",\r\n png: \"image/png\",\r\n pdf: \"application/pdf\",\r\n };\r\n var fileExt = filename.split(\".\").pop();\r\n return extToMimes[fileExt];\r\n },\r\n accessibilityTextTrigger() {\r\n if (this.accessibilityTextFlag == false) {\r\n this.accessibilityTextFlag = true;\r\n } else {\r\n this.accessibilityTextFlag = false;\r\n }\r\n },\r\n accessibilityVideoTrigger() {\r\n if (this.accessibilityVideoFlag == false) {\r\n this.accessibilityVideoFlag = true;\r\n } else {\r\n this.accessibilityVideoFlag = false;\r\n }\r\n },\r\n accessibilityBeforeAfterTrigger() {\r\n if (this.accessibleBeforeAfter == true) {\r\n this.accessibleBeforeAfter = false;\r\n this.sliderValue = 1.0;\r\n } else {\r\n this.accessibleBeforeAfter = true;\r\n this.sliderValue = 0.01;\r\n }\r\n },\r\n accessibilityModeFlag() {\r\n console.log(\"activated\");\r\n if (this.accessibilityMode == true) {\r\n this.accessibilityFlag = false;\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityFlag,\r\n { root: true }\r\n );\r\n console.log(this.accessibilityFlag, \"access flag\");\r\n } else {\r\n this.accessibilityFlag = true;\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityFlag,\r\n { root: true }\r\n );\r\n console.log(this.accessibilityFlag, \"access flag\");\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.lb-debug {\r\n background-color: blue !important;\r\n}\r\n\r\n.lb-content {\r\n position: absolute;\r\n max-width: 100%;\r\n max-height: 100%;\r\n}\r\n\r\n.lightbox-content {\r\n width: 100%;\r\n left: 40px;\r\n right: 40px;\r\n height: 100%;\r\n background: none;\r\n}\r\n\r\n.lightbox-container-multi {\r\n background: none;\r\n padding-left: 132px;\r\n padding-right: 132px;\r\n padding-top: 0px;\r\n padding-bottom: 48px;\r\n}\r\n\r\n.lightbox-container {\r\n background: none;\r\n padding-left: 48px;\r\n padding-right: 48px;\r\n padding-top: 0px;\r\n padding-bottom: 48px;\r\n overflow: hidden !important;\r\n}\r\n\r\n.lightbox-row {\r\n background: none;\r\n padding: 0px;\r\n margin: 0px;\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.lightbox-col {\r\n padding: 0px;\r\n margin: 0px;\r\n}\r\n\r\n.loading-overlay {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n}\r\n\r\n@media (max-width: 960px) {\r\n .lightbox-container-multi {\r\n background: none;\r\n padding-left: 64px;\r\n padding-right: 64px;\r\n padding-top: 0px;\r\n padding-bottom: 48px;\r\n }\r\n\r\n .lightbox-container {\r\n background: none;\r\n padding-left: 32px;\r\n padding-right: 32px;\r\n padding-top: 0px;\r\n padding-bottom: 48px;\r\n }\r\n\r\n ::v-deep .v-window__next {\r\n border-radius: 28px;\r\n background: rgba(0, 0, 0, 0.3);\r\n position: absolute;\r\n margin: 0 16px;\r\n z-index: 1;\r\n }\r\n ::v-deep .v-window__prev {\r\n border-radius: 28px;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxGallery.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LightboxGallery.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LightboxGallery.vue?vue&type=template&id=28e7550c&scoped=true&\"\nimport script from \"./LightboxGallery.vue?vue&type=script&lang=js&\"\nexport * from \"./LightboxGallery.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LightboxGallery.vue?vue&type=style&index=0&id=28e7550c&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"28e7550c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-toolbar',{class:_vm.transparent ? 'pass-thru' : 'clickable',attrs:{\"dark\":_vm.darkBackground ? true : false,\"color\":_vm.transparent ? 'transparent' : _vm.navBarColor,\"elevation\":_vm.transparent ? 0 : 2,\"height\":_vm.height}},[_c('v-app-bar-nav-icon',{staticClass:\"clickable\",attrs:{\"aria-label\":\"Open Main Navigation Menu\"},on:{\"click\":function($event){return _vm.TOGGLE_HOME_NAVIGATION_DRAWER(!_vm.isHomeNavigationDrawerOpen)}}}),_c('v-app-bar-nav-icon',{staticClass:\"clickable accessibility-menu-btn\",attrs:{\"id\":\"accessibility-menu-btn\",\"aria-label\":\"Enable All Accessibility Features\"},on:{\"click\":function($event){return _vm.accessibilityModeActive()}}},[_c('v-icon',[_vm._v(\" mdi-human \")])],1),_c('v-img',{attrs:{\"height\":\"100%\",\"src\":_vm.siteLogo,\"width\":\"200px\",\"contain\":\"\",\"position\":\"left\"}}),(!_vm.transparent)?_c('v-toolbar-items',{staticClass:\"d-none d-md-flex\",attrs:{\"aria-label\":\"secondary\",\"role\":\"navigation\"}},_vm._l((_vm.siteStructure),function(item){return _c('v-btn',{key:item.title,attrs:{\"text\":\"\",\"aria-label\":item.title,\"target\":item.meta.type !== 'engage_pages.GlobalRedirectPage' ? '' : '_blank',\"to\":item.pathname}},[_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.depth == 0),expression:\"item.depth == 0\"}],attrs:{\"dark\":\"\"}},[_vm._v(_vm._s(item.menu_icon))]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.depth > 0),expression:\"item.depth > 0\"}]},[_vm._v(_vm._s(item.title)+\" \")])],1)}),1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-toolbar :dark=\"darkBackground ? true : false\" :color=\"transparent ? 'transparent' : navBarColor \" :elevation=\"transparent ? 0 : 2\" :height=\"height\" :class=\"transparent ? 'pass-thru' : 'clickable'\">\r\n <v-app-bar-nav-icon\r\n class=\"clickable\"\r\n @click=\"TOGGLE_HOME_NAVIGATION_DRAWER(!isHomeNavigationDrawerOpen)\"\r\n aria-label=\"Open Main Navigation Menu\"\r\n ></v-app-bar-nav-icon>\r\n\r\n <v-app-bar-nav-icon\r\n id=\"accessibility-menu-btn\"\r\n class=\"clickable accessibility-menu-btn\"\r\n aria-label=\"Enable All Accessibility Features\"\r\n @click=\"accessibilityModeActive()\"\r\n >\r\n <v-icon> mdi-human </v-icon>\r\n </v-app-bar-nav-icon>\r\n \r\n <v-img\r\n height=\"100%\"\r\n :src=\"siteLogo\"\r\n width=\"200px\"\r\n contain\r\n position=\"left\"\r\n ></v-img>\r\n\r\n <v-toolbar-items aria-label=\"secondary\" role=\"navigation\" v-if=\"!transparent\" class=\"d-none d-md-flex\">\r\n <v-btn\r\n text\r\n v-for=\"item in siteStructure\"\r\n :aria-label=\"item.title\"\r\n :target=\"item.meta.type !== 'engage_pages.GlobalRedirectPage' ? '' : '_blank'\"\r\n :key=\"item.title\"\r\n :to=\"item.pathname\"\r\n >\r\n <v-icon v-show=\"item.depth == 0\" dark >{{ item.menu_icon }}</v-icon>\r\n <span v-show=\"item.depth > 0\">{{ item.title }} </span>\r\n </v-btn>\r\n </v-toolbar-items>\r\n </v-toolbar>\r\n\r\n</template>\r\n\r\n<script>\r\nimport { mapActions, mapState } from \"vuex\";\r\nimport {isDark} from \"../../util/color\"\r\nexport default {\r\n name: \"MenuLogoCard\",\r\n props: [\"data\", \"transparent\", \"height\"],\r\n data: () => ({\r\n currentPath: \"/\",\r\n darkBackground: false,\r\n }),\r\n components: {},\r\n mounted (){\r\n console.log(this.siteStructure ,\"data from eader\")\r\n this.$store.dispatch(\"wagtail/getSiteStructure\");\r\n this.currentPath = window.location.pathname\r\n\r\n // On mount, determine the menu and accessibility icon colors in the toolbar\r\n if (this.$store.state.wagtail.siteSettings.navbar_colour !== null) {\r\n this.darkBackground = isDark(this.$store.state.wagtail.siteSettings.navbar_colour)\r\n } else {\r\n this.darkBackground = isDark(this.$vuetify.theme.currentTheme.primary)\r\n }\r\n },\r\n computed: {\r\n ...mapState(\"toolbar\", [\"isHomeNavigationDrawerOpen\"]),\r\n siteLogo() {\r\n return this.$store.state.wagtail.siteSettings.site_logo;\r\n },\r\n siteStructure() {\r\n let siteStructure = [];\r\n for (const item of this.$store.state.wagtail.siteStructure) {\r\n //TODO: Unsure how reliable this is. Looks at the URL to calculate depth by counting slashes in the URL\r\n //Keep Icon for L0 no text, keep text no icon for L1\r\n console.log(item, \"test item\")\r\n if (item.depth == 0 || item.depth == 1){\r\n \r\n item.depth = item.meta.html_url.split(\"/\").length - 4;\r\n let url = new URL(item.meta.html_url);\r\n item.pathname = url.pathname;\r\n item.menutitle = Array(item.depth + 1).join(\" -\") + \" \" + item.title;\r\n console.log(item,item.depth, \"item depth\")\r\n siteStructure.push(item);\r\n }\r\n }\r\n\r\n return siteStructure;\r\n },\r\n navBarColor(){\r\n if(this.$store.state.wagtail.siteSettings.navbar_colour !== null){\r\n return this.$store.state.wagtail.siteSettings.navbar_colour\r\n }\r\n return 'primary';\r\n }\r\n },\r\n watch: {\r\n navBarColor(newValue) {\r\n // On navbar color change, determine the menu and accessibility icon colors in the toolbar\r\n if(newValue !== 'primary') {\r\n this.darkBackground = isDark(newValue)\r\n } else {\r\n this.darkBackground = isDark(this.$vuetify.theme.currentTheme.primary)\r\n }\r\n }\r\n },\r\n methods: {\r\n ...mapActions(\"toolbar\", [\"TOGGLE_HOME_NAVIGATION_DRAWER\"]),\r\n accessibilityModeActive() {\r\n console.log(\"activated\");\r\n if (this.accessibilityMode == true) {\r\n this.accessibilityFlag = false;\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityFlag,\r\n { root: true }\r\n );\r\n console.log(this.accessibilityFlag, \"access flag\");\r\n } else {\r\n this.accessibilityFlag = true;\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityFlag,\r\n { root: true }\r\n );\r\n console.log(this.accessibilityFlag, \"access flag\");\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.pass-thru {\r\n pointer-events: none;\r\n}\r\n\r\n.clickable {\r\n pointer-events: all;\r\n}\r\n\r\n.menu-btn {\r\n position: absolute;\r\n left: 0px;\r\n top: 0%;\r\n margin-top: 0px;\r\n}\r\n\r\n.site-logo {\r\n /* height:56px; */ \r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./pageHeaderCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./pageHeaderCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./pageHeaderCard.vue?vue&type=template&id=9c3f90e8&scoped=true&\"\nimport script from \"./pageHeaderCard.vue?vue&type=script&lang=js&\"\nexport * from \"./pageHeaderCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./pageHeaderCard.vue?vue&type=style&index=0&id=9c3f90e8&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9c3f90e8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"circle\",staticStyle:{\"animation-delay\":\"0s\"}}),_c('div',{staticClass:\"circle\",staticStyle:{\"animation-delay\":\"2s\"}})])\n}]\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <!-- <div class=\"item\">\r\n <img src=\"https://www.kirupa.com/images/orange.png\" />\r\n </div> -->\r\n <div class=\"circle\" style=\"animation-delay: 0s\"></div>\r\n <div class=\"circle\" style=\"animation-delay: 2s\"></div>\r\n <!-- <div class=\"circle\" style=\"animation-delay: 1.0s\"></div> -->\r\n <!-- <div class=\"circle\" style=\"animation-delay: 3s\"></div> -->\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"ConcentricCircles\",\r\n props: [\r\n ],\r\n data: () => ({ showTooltip: false, hasMoved: false, hasClicked: false }),\r\n components: {},\r\n mounted: function () {\r\n },\r\n methods: {\r\n },\r\n computed: {\r\n },\r\n watch: {\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n\r\n.circle {\r\n border-radius: 50%;\r\n border-width: 2px;\r\n border-style: solid;\r\n border-color: white;\r\n background-color: rgba(255,255,255,0.5);\r\n width: 40px;\r\n height: 40px;\r\n margin-left: -20px;\r\n margin-top: -20px;\r\n position: absolute;\r\n opacity: 0;\r\n animation: scaleIn 4s infinite ease-out;\r\n}\r\n\r\n@keyframes scaleIn {\r\n from {\r\n transform: scale(1.0, 1.0);\r\n opacity: 1.0;\r\n }\r\n to {\r\n transform: scale(2.0, 2.0);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.item {\r\n z-index: 100;\r\n padding: 5px;\r\n}\r\n\r\n.item img {\r\n width: 150px;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ConcentricCircles.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ConcentricCircles.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ConcentricCircles.vue?vue&type=template&id=564e419c&scoped=true&\"\nimport script from \"./ConcentricCircles.vue?vue&type=script&lang=js&\"\nexport * from \"./ConcentricCircles.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ConcentricCircles.vue?vue&type=style&index=0&id=564e419c&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"564e419c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"pano\"},[_c('PanoramaLoading',{staticClass:\"pano\"}),_c('div',{ref:\"panocontainer\",staticClass:\"pano\",attrs:{\"tabindex\":\"-1\",\"name\":\"marzipano-room\"}}),(_vm.scenesLoading)?_c('PanoramaLoading',{staticClass:\"pano\"}):_vm._e(),(_vm.scene !== undefined)?_vm._t(\"default\"):_vm._e(),(_vm.scene !== undefined && _vm.rectConfigEnabled)?_c('div',[(_vm.scene !== undefined)?_c('MarzipanoRectConfigurator',{attrs:{\"scene\":_vm.scene,\"tabindex\":\"-1\"},on:{\"changed\":_vm.configuratorChanged}}):_vm._e(),(Object.keys(_vm.config).length !== 0)?_c('MarzipanoRectHotspot',{attrs:{\"yaw\":_vm.config.yaw,\"pitch\":_vm.config.pitch,\"rotX\":_vm.config.rotX,\"rotY\":_vm.config.rotY,\"rotZ\":_vm.config.rotZ,\"width\":_vm.config.width,\"height\":_vm.config.height,\"debug\":true,\"scene\":_vm.scene}}):_vm._e()],1):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{style:({maxWidth: '500px', display: 'flex'})},[(_vm.showConfig)?_c('v-card',{style:({ display: 'flex', flexDirection: 'column', maxWidth: '500px', minWidth: '400px', maxHeight: '100vh', zIndex: '5' })},[_c('v-card-text',{staticClass:\"scroll\",style:({ overflow: 'visible auto !important', flexGrow: 1 })},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-btn',{attrs:{\"outlined\":\"\",\"block\":\"\"},on:{\"click\":_vm.handleShowPosition}},[_vm._v(\" \"+_vm._s(_vm.showPosition ? 'Hide Position' : 'Show Position')+\" \"),_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\"mdi-code-braces\")])],1)],1),_c('v-col',[_c('v-btn',{staticClass:\"ma-0\",attrs:{\"color\":\"primary\",\"outlined\":\"\",\"block\":\"\"},on:{\"click\":_vm.copyToClipboard}},[_vm._v(\" Copy (Ctrl + C) \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-content-copy\")])],1)],1)],1),(_vm.showPosition)?_c('v-row',{attrs:{\"dense\":\"\"}},[_c('div',{staticClass:\"pa-2 mt-2\",style:({ backgroundColor: '#ebebeb', borderRadius: '4px' })},[_c('pre',{style:({ whiteSpace: 'pre-wrap', wordBreak: 'break-all' })},[_vm._v(_vm._s(JSON.stringify(_vm.position)))])])]):_vm._e(),_c('v-row',{staticClass:\"ml-2\",attrs:{\"dense\":\"\"}},[_c('v-switch',{attrs:{\"label\":\"Keyboard/Mouse Controls\"},model:{value:(_vm.drawMode),callback:function ($$v) {_vm.drawMode=$$v},expression:\"drawMode\"}})],1),(_vm.drawMode)?_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-subheader',{staticClass:\"pl-0\"},[_vm._v(\" Position Grid \"),_c('span',{staticClass:\"ma-5 control-help-text\"},[_vm._v(\"Mouse Click\")])])],1)],1):_vm._e(),(_vm.drawMode)?_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-subheader',{staticClass:\"pl-0\"},[_vm._v(\" Look Around \"),_c('span',{staticClass:\"ma-5 control-help-text\"},[_vm._v(\"Left Alt + Mouse Drag\")])])],1)],1):_vm._e(),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-subheader',{staticClass:\"pl-0\"},[_vm._v(\"X Position\")]),_c('v-slider',{staticClass:\"align-center\",attrs:{\"max\":180,\"min\":-180,\"step\":0.1,\"hide-details\":\"\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\",\"type\":\"number\"},model:{value:(_vm.yaw),callback:function ($$v) {_vm.yaw=$$v},expression:\"yaw\"}}),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.yaw += 0.1}}},[_c('v-icon',[_vm._v(\"mdi-plus\")])],1),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.yaw -= 0.1}}},[_c('v-icon',[_vm._v(\"mdi-minus\")])],1)]},proxy:true}],null,false,1355741261),model:{value:(_vm.yaw),callback:function ($$v) {_vm.yaw=$$v},expression:\"yaw\"}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-subheader',{staticClass:\"pl-0\"},[_vm._v(\"Y Position\")]),_c('v-slider',{staticClass:\"align-center\",attrs:{\"max\":180,\"min\":-180,\"step\":0.1,\"hide-details\":\"\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\",\"type\":\"number\"},model:{value:(_vm.pitch),callback:function ($$v) {_vm.pitch=$$v},expression:\"pitch\"}}),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.pitch += 0.1}}},[_c('v-icon',[_vm._v(\"mdi-plus\")])],1),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.pitch -= 0.1}}},[_c('v-icon',[_vm._v(\"mdi-minus\")])],1)]},proxy:true}],null,false,2594520420),model:{value:(_vm.pitch),callback:function ($$v) {_vm.pitch=$$v},expression:\"pitch\"}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-subheader',{staticClass:\"pl-0\"},[_vm._v(\"Width \"),(_vm.drawMode)?_c('span',{staticClass:\"ma-5 control-help-text\"},[_vm._v(\"Shift + Left Click Drag\")]):_vm._e()]),_c('v-slider',{staticClass:\"align-center\",attrs:{\"max\":2000,\"min\":5,\"hide-details\":\"\"},on:{\"input\":(value) => _vm.handleSliderChange(value, 'width')},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\"},model:{value:(_vm.width),callback:function ($$v) {_vm.width=$$v},expression:\"width\"}}),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.width += 1}}},[_c('v-icon',[_vm._v(\"mdi-plus\")])],1),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.width -= 1}}},[_c('v-icon',[_vm._v(\"mdi-minus\")])],1)]},proxy:true}],null,false,3674975017),model:{value:(_vm.widthSlider),callback:function ($$v) {_vm.widthSlider=$$v},expression:\"widthSlider\"}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-subheader',{staticClass:\"pl-0\"},[_vm._v(\"Height \"),(_vm.drawMode)?_c('span',{staticClass:\"ma-5 control-help-text\",attrs:{\"variant\":\"outlined\"}},[_vm._v(\"Ctrl + Left Click Drag\")]):_vm._e()]),_c('v-slider',{staticClass:\"align-center\",attrs:{\"max\":2000,\"min\":5,\"hide-details\":\"\"},on:{\"input\":(value) => _vm.handleSliderChange(value, 'height')},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\"},model:{value:(_vm.height),callback:function ($$v) {_vm.height=$$v},expression:\"height\"}}),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.height += 1}}},[_c('v-icon',[_vm._v(\"mdi-plus\")])],1),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.height -= 1}}},[_c('v-icon',[_vm._v(\"mdi-minus\")])],1)]},proxy:true}],null,false,1092637744),model:{value:(_vm.heightSlider),callback:function ($$v) {_vm.heightSlider=$$v},expression:\"heightSlider\"}})],1)],1),(_vm.drawMode)?_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{style:({ flexGrow: 1 })},[_c('v-text-field',{attrs:{\"label\":\"Width/Height Multiplier\",\"type\":\"number\",\"filled\":\"\"},model:{value:(_vm.transformMultiplier),callback:function ($$v) {_vm.transformMultiplier=$$v},expression:\"transformMultiplier\"}})],1)],1):_vm._e(),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-subheader',{staticClass:\"pl-0\"},[_vm._v(\"X Rotation \"),(_vm.drawMode)?_c('span',{staticClass:\"ma-5 control-help-text\"},[_vm._v(\"Shift + Mouse Wheel\")]):_vm._e()]),_c('v-slider',{staticClass:\"align-center\",attrs:{\"max\":90,\"min\":-90,\"hide-details\":\"\"},on:{\"input\":(value) => _vm.handleSliderChange(value, 'rotX')},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\"},model:{value:(_vm.rotX),callback:function ($$v) {_vm.rotX=$$v},expression:\"rotX\"}}),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":() => _vm.plusRotationValue('rotX')}},[_c('v-icon',[_vm._v(\"mdi-plus\")])],1),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":() => _vm.minusRotationValue('rotX')}},[_c('v-icon',[_vm._v(\"mdi-minus\")])],1)]},proxy:true}],null,false,1087539086),model:{value:(_vm.rotXSlider),callback:function ($$v) {_vm.rotXSlider=$$v},expression:\"rotXSlider\"}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-subheader',{staticClass:\"pl-0\"},[_vm._v(\"Y Rotation \"),(_vm.drawMode)?_c('span',{staticClass:\"ma-5 control-help-text\"},[_vm._v(\"Ctrl + Mouse Wheel\")]):_vm._e()]),_c('v-slider',{staticClass:\"align-center\",attrs:{\"max\":90,\"min\":-90,\"hide-details\":\"\"},on:{\"input\":(value) => _vm.handleSliderChange(value, 'rotY')},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\"},model:{value:(_vm.rotY),callback:function ($$v) {_vm.rotY=$$v},expression:\"rotY\"}}),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":() => _vm.plusRotationValue('rotY')}},[_c('v-icon',[_vm._v(\"mdi-plus\")])],1),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":() => _vm.minusRotationValue('rotY')}},[_c('v-icon',[_vm._v(\"mdi-minus\")])],1)]},proxy:true}],null,false,3555431951),model:{value:(_vm.rotYSlider),callback:function ($$v) {_vm.rotYSlider=$$v},expression:\"rotYSlider\"}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-subheader',{staticClass:\"pl-0\"},[_vm._v(\"Z Rotation \"),(_vm.drawMode)?_c('span',{staticClass:\"ma-5 control-help-text\"},[_vm._v(\"Shift + Ctrl + Mouse Wheel\")]):_vm._e()]),_c('v-slider',{staticClass:\"align-center\",attrs:{\"max\":180,\"min\":-180,\"hide-details\":\"\"},on:{\"input\":(value) => _vm.handleSliderChange(value, 'rotZ')},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\"},model:{value:(_vm.rotZ),callback:function ($$v) {_vm.rotZ=$$v},expression:\"rotZ\"}}),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":() => _vm.plusRotationValue('rotZ')}},[_c('v-icon',[_vm._v(\"mdi-plus\")])],1),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":() => _vm.minusRotationValue('rotZ')}},[_c('v-icon',[_vm._v(\"mdi-minus\")])],1)]},proxy:true}],null,false,2715694860),model:{value:(_vm.rotZSlider),callback:function ($$v) {_vm.rotZSlider=$$v},expression:\"rotZSlider\"}})],1)],1),(_vm.drawMode)?_c('v-row',{staticClass:\"pl-1\",style:({ display: 'flex' }),attrs:{\"dense\":\"\"}},[_c('v-col',{staticClass:\"pl-1\",style:({ flexGrow: 1 })},[_c('v-text-field',{attrs:{\"label\":\"Rotation Increment (degrees)\",\"type\":\"number\",\"filled\":\"\"},model:{value:(_vm.rotationIncrement),callback:function ($$v) {_vm.rotationIncrement=$$v},expression:\"rotationIncrement\"}})],1)],1):_vm._e()],1)],1):_vm._e(),_c('v-btn',{style:({zIndex: 6, backgroundColor: 'white'}),attrs:{\"depressed\":\"\"},on:{\"click\":_vm.handleShowConfig}},[(_vm.showConfig)?_c('v-icon',[_vm._v(\"mdi-arrow-collapse-left\")]):_vm._e(),(!_vm.showConfig)?_c('v-icon',[_vm._v(\"mdi-arrow-expand-right\")]):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div :style=\"{maxWidth: '500px', display: 'flex'}\">\r\n <v-card v-if=\"showConfig\"\r\n :style=\"{ display: 'flex', flexDirection: 'column', maxWidth: '500px', minWidth: '400px', maxHeight: '100vh', zIndex: '5' }\">\r\n <v-card-text class=\"scroll\" :style=\"{ overflow: 'visible auto !important', flexGrow: 1 }\">\r\n <v-row dense>\r\n <v-col>\r\n <v-btn outlined block @click=\"handleShowPosition\">\r\n {{ showPosition ? 'Hide Position' : 'Show Position' }}\r\n <v-icon right dark>mdi-code-braces</v-icon>\r\n </v-btn>\r\n </v-col>\r\n <v-col>\r\n <v-btn class=\"ma-0\" color=\"primary\" @click=\"copyToClipboard\" outlined block>\r\n Copy (Ctrl + C)\r\n <v-icon right>mdi-content-copy</v-icon>\r\n </v-btn>\r\n </v-col>\r\n </v-row>\r\n <v-row dense v-if=\"showPosition\">\r\n <div :style=\"{ backgroundColor: '#ebebeb', borderRadius: '4px' }\" class=\"pa-2 mt-2\">\r\n <pre :style=\"{ whiteSpace: 'pre-wrap', wordBreak: 'break-all' }\">{{ JSON.stringify(position) }}</pre>\r\n </div>\r\n </v-row>\r\n <v-row class=\"ml-2\" dense>\r\n <v-switch v-model=\"drawMode\" label=\"Keyboard/Mouse Controls\"></v-switch>\r\n </v-row>\r\n\r\n <v-row dense v-if=\"drawMode\">\r\n <v-col>\r\n <v-subheader class=\"pl-0\"> Position Grid <span class=\"ma-5 control-help-text\">Mouse\r\n Click</span></v-subheader>\r\n </v-col>\r\n </v-row>\r\n\r\n <v-row dense v-if=\"drawMode\">\r\n <v-col>\r\n <v-subheader class=\"pl-0\"> Look Around <span class=\"ma-5 control-help-text\">Left Alt + Mouse\r\n Drag</span></v-subheader>\r\n </v-col>\r\n </v-row>\r\n <v-row dense>\r\n <v-col>\r\n <v-subheader class=\"pl-0\">X Position</v-subheader>\r\n <v-slider v-model=\"yaw\" class=\"align-center\" :max=\"180\" :min=\"-180\" :step=\"0.1\" hide-details>\r\n <template v-slot:append>\r\n <v-text-field v-model=\"yaw\" class=\"mt-0 pt-0\" hide-details single-line type=\"number\"\r\n style=\"width: 60px\"></v-text-field>\r\n <v-btn icon @click=\"yaw += 0.1\"><v-icon>mdi-plus</v-icon></v-btn>\r\n <v-btn icon @click=\"yaw -= 0.1\"><v-icon>mdi-minus</v-icon></v-btn>\r\n </template>\r\n </v-slider>\r\n </v-col>\r\n </v-row>\r\n <v-row dense>\r\n <v-col>\r\n <v-subheader class=\"pl-0\">Y Position</v-subheader>\r\n <v-slider v-model=\"pitch\" class=\"align-center\" :max=\"180\" :min=\"-180\" :step=\"0.1\" hide-details>\r\n <template v-slot:append>\r\n <v-text-field v-model=\"pitch\" class=\"mt-0 pt-0\" hide-details single-line type=\"number\"\r\n style=\"width: 60px\"></v-text-field>\r\n <v-btn icon @click=\"pitch += 0.1\"><v-icon>mdi-plus</v-icon></v-btn>\r\n <v-btn icon @click=\"pitch -= 0.1\"><v-icon>mdi-minus</v-icon></v-btn>\r\n </template>\r\n </v-slider>\r\n </v-col>\r\n </v-row>\r\n\r\n\r\n <v-row dense>\r\n <v-col>\r\n <v-subheader class=\"pl-0\">Width <span v-if=\"drawMode\" class=\"ma-5 control-help-text\">Shift + Left\r\n Click Drag</span></v-subheader>\r\n <v-slider v-model=\"widthSlider\" class=\"align-center\" :max=\"2000\" :min=\"5\" hide-details\r\n @input=\"(value) => handleSliderChange(value, 'width') \">\r\n <template v-slot:append>\r\n <v-text-field v-model=\"width\" class=\"mt-0 pt-0\" hide-details single-line\r\n style=\"width: 60px\"></v-text-field>\r\n <v-btn icon @click=\"width += 1\"><v-icon>mdi-plus</v-icon></v-btn>\r\n <v-btn icon @click=\"width -= 1\"><v-icon>mdi-minus</v-icon></v-btn>\r\n </template>\r\n </v-slider>\r\n </v-col>\r\n </v-row>\r\n <v-row dense>\r\n <v-col>\r\n <v-subheader class=\"pl-0\">Height <span v-if=\"drawMode\" class=\"ma-5 control-help-text\"\r\n variant=\"outlined\">Ctrl\r\n +\r\n Left\r\n Click Drag</span></v-subheader>\r\n <v-slider v-model=\"heightSlider\" class=\"align-center\" :max=\"2000\" :min=\"5\" hide-details\r\n @input=\"(value) => handleSliderChange(value, 'height') \">\r\n <template v-slot:append>\r\n <v-text-field v-model=\"height\" class=\"mt-0 pt-0\" hide-details single-line\r\n style=\"width: 60px\"></v-text-field>\r\n <v-btn icon @click=\"height += 1\"><v-icon>mdi-plus</v-icon></v-btn>\r\n <v-btn icon @click=\"height -= 1\"><v-icon>mdi-minus</v-icon></v-btn>\r\n </template>\r\n </v-slider>\r\n </v-col>\r\n </v-row>\r\n <v-row dense v-if=\"drawMode\">\r\n <v-col :style=\"{ flexGrow: 1 }\">\r\n <v-text-field v-model=\"transformMultiplier\" label=\"Width/Height Multiplier\" type=\"number\" filled>\r\n </v-text-field>\r\n </v-col>\r\n </v-row>\r\n <v-row dense>\r\n <v-col>\r\n <v-subheader class=\"pl-0\">X Rotation <span v-if=\"drawMode\" class=\"ma-5 control-help-text\">Shift + Mouse\r\n Wheel</span></v-subheader>\r\n <v-slider v-model=\"rotXSlider\" class=\"align-center\" :max=\"90\" :min=\"-90\" hide-details\r\n @input=\"(value) => handleSliderChange(value, 'rotX') \">\r\n <template v-slot:append>\r\n <v-text-field v-model=\"rotX\" class=\"mt-0 pt-0\" hide-details single-line\r\n style=\"width: 60px\"></v-text-field>\r\n <v-btn icon @click=\"() => plusRotationValue('rotX') \"><v-icon>mdi-plus</v-icon></v-btn>\r\n <v-btn icon @click=\"() => minusRotationValue('rotX') \"><v-icon>mdi-minus</v-icon></v-btn>\r\n </template>\r\n </v-slider>\r\n </v-col>\r\n </v-row>\r\n <v-row dense>\r\n <v-col>\r\n <v-subheader class=\"pl-0\">Y Rotation <span v-if=\"drawMode\" class=\"ma-5 control-help-text\">Ctrl + Mouse\r\n Wheel</span></v-subheader>\r\n <v-slider v-model=\"rotYSlider\" class=\"align-center\" :max=\"90\" :min=\"-90\" hide-details\r\n @input=\"(value) => handleSliderChange(value, 'rotY')\">\r\n <template v-slot:append>\r\n <v-text-field v-model=\"rotY\" class=\"mt-0 pt-0\" hide-details single-line\r\n style=\"width: 60px\"></v-text-field>\r\n <v-btn icon @click=\"() => plusRotationValue('rotY') \"><v-icon>mdi-plus</v-icon></v-btn>\r\n <v-btn icon @click=\"() => minusRotationValue('rotY') \"><v-icon>mdi-minus</v-icon></v-btn>\r\n </template>\r\n </v-slider>\r\n </v-col>\r\n </v-row>\r\n <v-row dense>\r\n <v-col>\r\n <v-subheader class=\"pl-0\">Z Rotation <span v-if=\"drawMode\" class=\"ma-5 control-help-text\">Shift + Ctrl +\r\n Mouse\r\n Wheel</span></v-subheader>\r\n <v-slider v-model=\"rotZSlider\" class=\"align-center\" :max=\"180\" :min=\"-180\" hide-details\r\n @input=\"(value) => handleSliderChange(value, 'rotZ') \">\r\n <template v-slot:append>\r\n <v-text-field v-model=\"rotZ\" class=\"mt-0 pt-0\" hide-details single-line\r\n style=\"width: 60px\"></v-text-field>\r\n <v-btn icon @click=\"() => plusRotationValue('rotZ')\"><v-icon>mdi-plus</v-icon></v-btn>\r\n <v-btn icon @click=\"() => minusRotationValue('rotZ') \"><v-icon>mdi-minus</v-icon></v-btn>\r\n </template>\r\n </v-slider>\r\n </v-col>\r\n </v-row>\r\n <v-row v-if=\"drawMode\" dense :style=\"{ display: 'flex' }\" class=\"pl-1\">\r\n <v-col :style=\"{ flexGrow: 1 }\" class=\"pl-1\">\r\n <v-text-field v-model=\"rotationIncrement\" label=\"Rotation Increment (degrees)\" type=\"number\" filled>\r\n </v-text-field>\r\n </v-col>\r\n </v-row>\r\n </v-card-text>\r\n </v-card>\r\n <v-btn depressed :style=\"{zIndex: 6, backgroundColor: 'white'}\" @click=\"handleShowConfig\">\r\n\r\n <v-icon v-if=\"showConfig\">mdi-arrow-collapse-left</v-icon>\r\n <v-icon v-if=\"!showConfig\">mdi-arrow-expand-right</v-icon>\r\n\r\n </v-btn>\r\n </div>\r\n\r\n</template>\r\n\r\n<script>\r\n\r\n\r\nimport Marzipano from 'marzipano'\r\n\r\nlet startMouseX = 0\r\nlet startMouseY = 0\r\nlet leftAlt = false\r\nlet leftCtrl = false\r\n\r\nexport default {\r\n name: \"MarzipanoRectConfigurator\",\r\n props: [\"scene\"],\r\n data: () => ({\r\n yaw: 0.0,\r\n pitch: 0.0,\r\n width: 100.0,\r\n height: 100.0,\r\n rotX: 0.0,\r\n rotY: 0.0,\r\n rotZ: 0.0,\r\n firstPos: undefined,\r\n secondPos: undefined,\r\n drawMode: false,\r\n transformMultiplier: 0.5, \r\n rotationIncrement: 5.0,\r\n showPosition: false,\r\n showConfig: true,\r\n\r\n widthSlider: 100,\r\n heightSlider: 100,\r\n rotXSlider: 0,\r\n rotYSlider: 0,\r\n rotZSlider: 0,\r\n }),\r\n components: {},\r\n mounted() {\r\n\r\n document.getElementsByName(\"marzipano-room\")[0].addEventListener('wheel', (event) => this.handleMouseWheel(event))\r\n document.getElementsByName(\"marzipano-room\")[0].addEventListener('mousedown', (event) => this.handleMouseDown(event))\r\n document.getElementsByName(\"marzipano-room\")[0].addEventListener('mousemove', (event) => this.handleMouseMove(event))\r\n document.getElementsByName(\"marzipano-room\")[0].addEventListener('click', (event) => this.handleClick(event))\r\n\r\n window.addEventListener('keydown', (event) => this.handleKeydown(event) )\r\n window.addEventListener('keyup', (event) => this.handleKeyUp(event))\r\n\r\n },\r\n methods: {\r\n plusRotationValue(rotation) {\r\n let total = this[rotation] + parseFloat(this.rotationIncrement)\r\n this[rotation] = parseFloat(total.toFixed(1))\r\n },\r\n minusRotationValue(rotation) {\r\n let total = this[rotation] - parseFloat(this.rotationIncrement)\r\n this[rotation] = parseFloat(total.toFixed(1))\r\n },\r\n handleSliderChange(sliderValue, config) { \r\n this[config] = sliderValue\r\n },\r\n handleConfigChange(configValue, slider) {\r\n let newSliderValue = Math.round(configValue)\r\n this[slider] = newSliderValue\r\n },\r\n handleShowConfig() {\r\n this.showConfig = !this.showConfig\r\n },\r\n handleShowPosition() {\r\n this.showPosition = !this.showPosition\r\n },\r\n\r\n async copyToClipboard() {\r\n await navigator.clipboard.writeText(JSON.stringify(this.position))\r\n },\r\n async handleKeydown(event) {\r\n if(!this.drawMode) return;\r\n\r\n if(!leftAlt && event.code === 'AltLeft') {\r\n leftAlt = true\r\n this.scene.viewer().controls().enable()\r\n }\r\n\r\n if (!leftCtrl) {\r\n leftCtrl = true\r\n }\r\n \r\n if(leftCtrl && event.code === 'KeyC'){\r\n await this.copyToClipboard()\r\n }\r\n },\r\n\r\n handleKeyUp() {\r\n if (!this.drawMode) return;\r\n\r\n if (leftAlt) {\r\n leftAlt = false\r\n this.scene.viewer().controls().disable()\r\n }\r\n\r\n if (leftCtrl) {\r\n leftCtrl = false\r\n }\r\n },\r\n\r\n handleMouseDown(event) {\r\n if (!this.drawMode) return;\r\n\r\n startMouseX = event.clientX;\r\n startMouseY = event.clientY;\r\n \r\n },\r\n\r\n handleMouseMove(event) {\r\n if (!this.drawMode) return;\r\n if (!event.ctrlKey && !event.shiftKey) return;\r\n\r\n let transformMultiplier = parseFloat(this.transformMultiplier)\r\n\r\n const currentMouseX = event.clientX;\r\n const currentMouseY = event.clientY;\r\n\r\n \r\n const yaw = Marzipano.util.degToRad(this.yaw)\r\n const pitch = Marzipano.util.degToRad(this.pitch)\r\n\r\n const coordinates = { yaw: yaw, pitch: pitch }\r\n const center = this.scene.view().coordinatesToScreen(coordinates)\r\n\r\n\r\n const centerX = Math.round(center.x)\r\n const centerY = Math.round(center.y)\r\n\r\n let mouseDistance = Math.sqrt((currentMouseX - startMouseX) ** 2 + (currentMouseY - startMouseY) ** 2) * transformMultiplier\r\n\r\n const centerToStartDistance = Math.sqrt(Math.pow((startMouseX - centerX), 2) + Math.pow((startMouseY - centerY), 2))\r\n const centerToEndDistance = Math.sqrt(Math.pow((currentMouseX - centerX), 2) + Math.pow((currentMouseY - centerY), 2))\r\n\r\n if (event.which === 1) {\r\n if (event.ctrlKey) {\r\n let height = 0\r\n if (centerToStartDistance <= centerToEndDistance) {\r\n height = this.height + mouseDistance\r\n } else {\r\n height = this.height - mouseDistance\r\n }\r\n this.height = parseFloat(height.toFixed(1))\r\n }\r\n\r\n if (event.shiftKey) {\r\n let width = 0\r\n if (centerToStartDistance <= centerToEndDistance) {\r\n width = this.width + mouseDistance\r\n } else {\r\n width = this.width - mouseDistance\r\n }\r\n this.width = parseFloat(width.toFixed(1))\r\n\r\n }\r\n }\r\n\r\n },\r\n\r\n handleMouseWheel(event) {\r\n if (!this.drawMode) return;\r\n if (!event.ctrlKey && !event.shiftKey) return;\r\n\r\n let rotationIncrement = parseFloat(this.rotationIncrement)\r\n\r\n const direction = event.deltaY * -0.01\r\n \r\n if (event.shiftKey && event.ctrlKey) {\r\n let rotation = 0\r\n if (direction < 0) {\r\n rotation = this.rotZ - rotationIncrement;\r\n } else {\r\n rotation = this.rotZ + rotationIncrement;\r\n }\r\n this.rotZ = parseFloat(rotation.toFixed(1))\r\n\r\n } else if (event.shiftKey) {\r\n let rotation = 0\r\n\r\n if (direction < 0) {\r\n rotation = this.rotX - rotationIncrement;\r\n } else {\r\n rotation = this.rotX + rotationIncrement;\r\n }\r\n \r\n this.rotX = parseFloat(rotation.toFixed(1))\r\n\r\n\r\n } else if (event.ctrlKey) {\r\n let rotation = 0\r\n\r\n if (direction < 0) {\r\n rotation = this.rotY - rotationIncrement;\r\n } else {\r\n rotation = this.rotY + rotationIncrement;\r\n }\r\n\r\n this.rotY = parseFloat(rotation.toFixed(1))\r\n\r\n }\r\n },\r\n\r\n\r\n handleClick(event) {\r\n if (this.drawMode && !event.shiftKey && !event.ctrlKey && !event.altKey) {\r\n\r\n const screenCoordinates = { x: event.clientX, y: event.clientY }\r\n\r\n let result = this.scene.view().screenToCoordinates(screenCoordinates)\r\n this.yaw = Marzipano.util.radToDeg(result.yaw)\r\n this.pitch = Marzipano.util.radToDeg(result.pitch)\r\n }\r\n },\r\n},\r\n computed: {\r\n changeData() {\r\n let data = {\r\n yaw: (this.yaw * Math.PI) / 180.0,\r\n pitch: (this.pitch * Math.PI) / 180.0,\r\n width: this.width,\r\n height: this.height,\r\n rotX: this.rotX,\r\n rotY: this.rotY,\r\n rotZ: this.rotZ,\r\n };\r\n return data\r\n },\r\n\r\n position() {\r\n let data = {\r\n yaw: (this.yaw * Math.PI) / 180.0,\r\n pitch: (this.pitch * Math.PI) / 180.0,\r\n width: String(this.width) + 'px',\r\n height: String(this.height) + 'px',\r\n rotX: this.rotX,\r\n rotY: this.rotY,\r\n rotZ: this.rotZ,\r\n };\r\n return data\r\n }\r\n\r\n\r\n },\r\n watch: {\r\n width(value) {\r\n this.widthSlider = Math.round(value)\r\n },\r\n height(value) {\r\n this.heightSlider = Math.round(value)\r\n },\r\n rotX(value) {\r\n this.rotXSlider = Math.round(value)\r\n },\r\n rotY(value) {\r\n this.rotYSlider = Math.round(value)\r\n },\r\n rotZ(value) {\r\n this.rotZSlider = Math.round(value)\r\n },\r\n\r\n changeData() {\r\n this.$emit(\"changed\", this.changeData);\r\n },\r\n\r\n drawMode(value) {\r\n if (value === true) {\r\n this.scene.viewer().controls().disable()\r\n } else {\r\n this.scene.viewer().controls().enable()\r\n }\r\n }\r\n\r\n\r\n },\r\n}\r\n \r\n</script>\r\n\r\n<style scoped>\r\n\r\n.scroll::-webkit-scrollbar {\r\n width: 12px;\r\n}\r\n\r\n.scroll::-webkit-scrollbar-track {\r\n -webkit-border-radius: 10px;\r\n border-radius: 10px;\r\n background: rgb(219, 219, 219);\r\n}\r\n\r\n.scroll::-webkit-scrollbar-thumb {\r\n -webkit-border-radius: 10px;\r\n border-radius: 10px;\r\n background: #c4c4c4;\r\n}\r\n\r\n.scroll::-webkit-scrollbar-thumb:window-inactive {\r\n background: #c4c4c4;\r\n}\r\n\r\n.hotspot-bg {\r\n background-color: rgba(255, 0, 0, 0.5);\r\n}\r\n\r\n.control-help-text{\r\n border: 1px #c4c4c4 solid;\r\n border-radius: 5px;\r\n padding: 5px 8px 5px 8px;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MarzipanoRectConfigurator.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MarzipanoRectConfigurator.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MarzipanoRectConfigurator.vue?vue&type=template&id=0e6d1168&scoped=true&\"\nimport script from \"./MarzipanoRectConfigurator.vue?vue&type=script&lang=js&\"\nexport * from \"./MarzipanoRectConfigurator.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MarzipanoRectConfigurator.vue?vue&type=style&index=0&id=0e6d1168&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0e6d1168\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div class=\"pano\">\r\n <PanoramaLoading class=\"pano\" />\r\n <div\r\n class=\"pano\"\r\n ref=\"panocontainer\"\r\n tabindex=\"-1\"\r\n name=\"marzipano-room\"\r\n ></div>\r\n <PanoramaLoading class=\"pano\" v-if=\"scenesLoading\" />\r\n <slot v-if=\"scene !== undefined\" />\r\n <div v-if=\"scene !== undefined && rectConfigEnabled\">\r\n <MarzipanoRectConfigurator\r\n v-if=\"scene !== undefined\"\r\n :scene=\"scene\"\r\n @changed=\"configuratorChanged\"\r\n tabindex=\"-1\"\r\n />\r\n <MarzipanoRectHotspot\r\n v-if=\"Object.keys(config).length !== 0\"\r\n :yaw=\"config.yaw\"\r\n :pitch=\"config.pitch\"\r\n :rotX=\"config.rotX\"\r\n :rotY=\"config.rotY\"\r\n :rotZ=\"config.rotZ\"\r\n :width=\"config.width\"\r\n :height=\"config.height\"\r\n :debug=\"true\"\r\n :scene=\"scene\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport Marzipano from \"marzipano\";\r\nimport MarzipanoRectHotspot from \"./MarzipanoRectHotspot\";\r\nimport MarzipanoRectConfigurator from \"./MarzipanoRectConfigurator\";\r\nimport PanoramaLoading from \"./PanoramaLoading.vue\";\r\n\r\nimport ResizeSensor from \"css-element-queries/src/ResizeSensor\";\r\n\r\nexport default {\r\n name: \"Marzipano\",\r\n props: [\r\n \"multipleScenes\",\r\n \"typeOf\",\r\n \"tileUrl\",\r\n \"data\",\r\n \"ready\",\r\n \"sasKey\",\r\n \"rectConfigEnabled\",\r\n \"minYaw\",\r\n \"maxYaw\",\r\n \"activeScene\",\r\n \"activeSceneView\",\r\n \"initialViewParameters\",\r\n ],\r\n data: () => ({\r\n dialog: true,\r\n firstClick: true,\r\n rotx: 0.0,\r\n roty: 0.0,\r\n scene: undefined,\r\n scenesLoading: true,\r\n drawMode: false,\r\n config: {},\r\n keyboardConfig: {},\r\n rotationIncrement: 5,\r\n transformIncrement: 1,\r\n }),\r\n components: {\r\n MarzipanoRectHotspot,\r\n MarzipanoRectConfigurator,\r\n PanoramaLoading,\r\n },\r\n async mounted() {\r\n await this.$nextTick();\r\n\r\n var viewer = new Marzipano.Viewer(\r\n // document.getElementById(\"panorama-container\"),\r\n this.$refs.panocontainer,\r\n { stage: { progressive: true } }\r\n );\r\n if (this.multipleScenes) {\r\n console.log({ \"this.multipleScenes\": this.multipleScenes });\r\n // Initialize all scenes asynchronously and wait for them to be ready\r\n Promise.all(\r\n this.multipleScenes.map((item) =>\r\n this.initScene({\r\n file: item.panorama.data.file,\r\n width: item.panorama.data.width,\r\n levels: item.panorama.data.levels,\r\n initialViewParameters: item.panorama.data.initialViewParameters,\r\n typeOf: item.panorama.typeOf,\r\n minYaw: item.panorama.min_yaw || -181,\r\n maxYaw: item.panorama.max_yaw || 181,\r\n tileUrl: item.panorama.tiles.split(\"?\")[0],\r\n sasKey: item.panorama.sas_key,\r\n viewer,\r\n item,\r\n })\r\n )\r\n )\r\n .then((scenes) => {\r\n // All scenes are initialized\r\n console.log({ scenes });\r\n this.scene = scenes[0].scene; // Assuming `initScene` resolves with an object that has a `scene` property\r\n this.scene.switchTo();\r\n this.onRenderComplete();\r\n\r\n // Emit events after all scenes are loaded\r\n this.$emit(\"loaded\", this.scene);\r\n this.$emit(\"view\", scenes[0].view);\r\n this.$emit(\"initialViewParameters\", scenes[0].initialViewParameters);\r\n this.$emit(\"scenes\", scenes);\r\n })\r\n .catch((error) => {\r\n console.error(\"Error initializing scenes:\", error);\r\n this.scenesLoading = false; // Hide preloader and possibly handle error\r\n });\r\n } else {\r\n // Handle single scene initialization if needed\r\n this.initScene({\r\n file: this.data.file,\r\n width: this.data.width,\r\n levels: this.data.levels,\r\n initialViewParameters: this.data.initialViewParameters,\r\n typeOf: this.typeOf,\r\n minYaw: this.minYaw,\r\n maxYaw: this.maxYaw,\r\n tileUrl: this.tileUrl,\r\n sasKey: this.sasKey,\r\n viewer,\r\n });\r\n this.$emit(\"loaded\", this.scene);\r\n this.onRenderComplete();\r\n }\r\n },\r\n watch: {\r\n ready() {\r\n if (this.ready === true && this.scene && !this.rectConfigEnabled) {\r\n this.autoRotateScene()\r\n }\r\n },\r\n activeScene() {\r\n if (this.activeScene) {\r\n console.log(\"asdasdsa\", this.activeScene);\r\n this.activeSceneView.setParameters(this.initialViewParameters);\r\n this.activeScene.switchTo();\r\n this.$emit(\"loaded\", this.activeScene);\r\n this.autoRotateScene();\r\n }\r\n },\r\n },\r\n methods: {\r\n\r\n autoRotateScene() {\r\n let autorotate = Marzipano.autorotate({\r\n yawSpeed: 0.025, // Yaw rotation speed\r\n targetPitch: 0, // Pitch value to converge to\r\n targetFov: (80 * Math.PI) / 180, // Fov value to converge to\r\n });\r\n\r\n this.scene.viewer().startMovement(autorotate);\r\n },\r\n\r\n onRenderComplete() {\r\n console.log(\"Render complete!\");\r\n this.scenesLoading = false;\r\n this.$emit(\"walkthroughReady\");\r\n\r\n // Implement any action you want to take after the render is complete\r\n },\r\n configuratorChanged(data) {\r\n this.config = data;\r\n },\r\n lookToConsole(consoleYaw, consolePitch) {\r\n var destinationViewParameters = {\r\n yaw: (consoleYaw * Math.PI) / 60,\r\n pitch: (consolePitch * Math.PI) / 60,\r\n fov: (80 * Math.PI) / 180,\r\n };\r\n var options = {\r\n transitionDuration: 2000,\r\n };\r\n this.scene.lookTo(destinationViewParameters, options);\r\n },\r\n initScene({\r\n file,\r\n width,\r\n levels,\r\n initialViewParameters,\r\n typeOf,\r\n minYaw,\r\n maxYaw,\r\n tileUrl,\r\n sasKey,\r\n viewer,\r\n item,\r\n }) {\r\n console.log(\r\n this.data,\r\n this.maxYaw,\r\n this.minYaw,\r\n \"data from marzipano.vue\"\r\n );\r\n // console.log(this.typeOf, \"typeOf\")\r\n let pano = this.$refs.panocontainer;\r\n\r\n new ResizeSensor(pano, function () {\r\n viewer.updateSize();\r\n });\r\n\r\n var view, geometry, source, limiter;\r\n\r\n if (typeOf == \"equirect\") {\r\n // Create source.\r\n source = Marzipano.ImageUrlSource.fromString(file);\r\n\r\n // Create geometry.\r\n geometry = new Marzipano.EquirectGeometry([{ width: width }]);\r\n \r\n\r\n // Create view.\r\n Marzipano.RectilinearView.limit.yaw(\r\n Math.PI * (minYaw / 180),\r\n Math.PI * (maxYaw / 180)\r\n ),\r\n //Limiter for Equirect View - Images for Virtual\r\n (limiter = Marzipano.util.compose(\r\n Marzipano.RectilinearView.limit.vfov(\r\n (40 * Math.PI) / 180,\r\n (120 * Math.PI) / 180\r\n ),\r\n\r\n Marzipano.RectilinearView.limit.pitch(\r\n Math.PI * (-80 / 180),\r\n Math.PI * (80 / 180)\r\n )\r\n ));\r\n view = new Marzipano.RectilinearView({ yaw: 10, fov: (Math.PI * 90)/ 180 }, limiter);\r\n \r\n } else {\r\n var urlPrefix = tileUrl;\r\n\r\n source = Marzipano.ImageUrlSource.fromString(\r\n urlPrefix + \"/{z}/{f}/{y}/{x}.jpg?\" + sasKey,\r\n { cubeMapPreviewUrl: urlPrefix + \"/preview.jpg?\" + sasKey }\r\n );\r\n\r\n // Create geometry.\r\n geometry = new Marzipano.CubeGeometry(levels);\r\n\r\n // limiter = Marzipano.RectilinearView.limit.vfov(\r\n // Math.PI * (this.minYaw / 180), Math.PI * (this.maxYaw / 180)\r\n // );\r\n\r\n limiter = Marzipano.util.compose(\r\n Marzipano.RectilinearView.limit.vfov(\r\n (40 * Math.PI) / 180,\r\n (80 * Math.PI) / 180\r\n ),\r\n Marzipano.RectilinearView.limit.yaw(\r\n Math.PI * (minYaw / 180),\r\n Math.PI * (maxYaw / 180)\r\n ),\r\n Marzipano.RectilinearView.limit.pitch(\r\n Math.PI * (-80 / 180),\r\n Math.PI * (80 / 180)\r\n )\r\n );\r\n\r\n view = new Marzipano.RectilinearView(initialViewParameters, limiter);\r\n }\r\n // Autorotate will start after 3s of idle time\r\n // viewer.setIdleMovement(5000, autorotate);\r\n\r\n if (this.multipleScenes) {\r\n const scene = viewer.createScene({\r\n source: source,\r\n geometry: geometry,\r\n view: view,\r\n pinFirstLevel: false,\r\n });\r\n\r\n return {\r\n scene,\r\n view,\r\n initialViewParameters,\r\n item,\r\n };\r\n } else if(this.typeOf = \"equirect\") {\r\n // Create scene.\r\n this.scene = viewer.createScene({\r\n source: source,\r\n geometry: geometry,\r\n view: view,\r\n pinFirstLevel: false,\r\n });\r\n\r\n // Display scene.\r\n this.scene.switchTo();\r\n\r\n this.autoRotateScene()\r\n\r\n\r\n }else {\r\n // Create scene.\r\n this.scene = viewer.createScene({\r\n source: source,\r\n geometry: geometry,\r\n view: view,\r\n pinFirstLevel: false,\r\n });\r\n\r\n // Display scene.\r\n this.scene.switchTo();\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.pano {\r\n position: absolute;\r\n top: 0px;\r\n bottom: 0px;\r\n left: 0px;\r\n right: 0px;\r\n overflow: visible !important;\r\n}\r\n\r\n.frame {\r\n width: 1000px;\r\n height: 1000px;\r\n background-color: rgba(255, 0, 0, 0.5);\r\n}\r\n\r\n.controls {\r\n position: absolute;\r\n left: 10px;\r\n /* right: 10px; */\r\n top: 10px;\r\n z-index: 5;\r\n}\r\n\r\n.loading-transparent {\r\n opacity: 0.5;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Marzipano.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Marzipano.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Marzipano.vue?vue&type=template&id=1f1f2fb8&scoped=true&\"\nimport script from \"./Marzipano.vue?vue&type=script&lang=js&\"\nexport * from \"./Marzipano.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Marzipano.vue?vue&type=style&index=0&id=1f1f2fb8&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1f1f2fb8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.validIcon),expression:\"validIcon\"}],ref:\"icon\",staticClass:\"icon-div\"},[_c('v-container',{directives:[{name:\"show\",rawName:\"v-show\",value:(true || (_vm.showTooltip && !_vm.debug)),expression:\"true || (showTooltip && !debug)\"}],staticClass:\"hotspot-hint fluid pa-0\",attrs:{\"fill-height\":\"\"}},[_c('v-row',{staticClass:\"text-center pa-0 ma-0\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-scale-transition',{attrs:{\"origin\":\"center center\"}},[_c('ConcentricCircles',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showTooltip && !_vm.isCentered),expression:\"!showTooltip && !isCentered\"}],staticClass:\"hotspot-circle\"})],1),_c('v-scale-transition',{attrs:{\"origin\":\"center center\"}},[_c('v-card',{directives:[{name:\"show\",rawName:\"v-show\",value:((!_vm.showTooltip && !_vm.isCentered) || _vm.title === ''),expression:\"(!showTooltip && !isCentered) || title === ''\"}],class:!_vm.showTooltip\n ? 'pa-0 hotspot-title hotspot-icon'\n : 'pa-1 hotspot-title hotspot-icon',attrs:{\"dark\":\"\",\"color\":\"secondary\",\"rounded\":\"pill\"}},[_c('v-icon',{staticClass:\"pa-3\"},[_vm._v(_vm._s(_vm.icon))])],1)],1),(_vm.title !== '')?_c('v-scale-transition',{attrs:{\"origin\":\"center center\"}},[_c('v-card',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showTooltip || _vm.isCentered),expression:\"showTooltip || isCentered\"}],class:_vm.showTooltip\n ? 'pa-1 hotspot-title hotspot-icon'\n : 'pa-0 hotspot-title hotspot-icon',style:(_vm.cardStyles),attrs:{\"dark\":\"\",\"color\":\"secondary\",\"rounded\":\"pill\"}},[_c('v-card-subtitle',{staticClass:\"pa-2 ml-2 mr-2 white--text\"},[_c('v-icon',{staticClass:\"pr-2\"},[_vm._v(_vm._s(_vm.icon))]),_vm._v(\" \"+_vm._s(_vm.title)+\" \")],1)],1)],1):_vm._e(),(_vm.showBubble)?_c('v-scale-transition',{attrs:{\"origin\":\"center center\"}},[_c('div',{staticClass:\"bubble\",style:(`top: -${_vm.chatHeight}px`),on:{\"focus\":function($event){_vm.showBubble = true},\"mouseover\":function($event){_vm.showBubble = true}}},[_c('p',{on:{\"focus\":function($event){_vm.showBubble = true},\"mouseover\":function($event){_vm.showBubble = true}}},[_vm._v(\" \"+_vm._s(_vm.text)+\" \")])])]):_vm._e()],1)],1)],1),_c('v-scale-transition',{attrs:{\"origin\":\"center center\"}},[_c('div',{ref:\"rect\",staticClass:\"hotspot-bg hotspot-btn\",style:({\n width: _vm.hotspotSizeString.width,\n height: _vm.hotspotSizeString.height,\n }),attrs:{\"data-testid\":'rectHotspot' + _vm.index,\"id\":\"rectHotspot\",\"alt\":\"\"},on:{\"mouseenter\":function($event){_vm.showBubble = true},\"mouseleave\":function($event){_vm.showBubble = false},\"mousemove\":function($event){_vm.showBubble = true}}},[_c('div',[(_vm.debug === true)?_c('v-img',{style:({\n width: _vm.hotspotSizeString.width,\n height: _vm.hotspotSizeString.height,\n opacity: 0.5,\n }),attrs:{\"src\":\"/grid.png\",\"tab-index\":\"-1\",\"alt\":\"\",\"id\":\"hotspot-img\"}}):_c('v-btn',{style:({\n width: _vm.hotspotSizeString.width,\n height: _vm.hotspotSizeString.height,\n }),attrs:{\"text\":\"\",\"dark\":\"\",\"aria-label\":_vm.ariaLabel,\"disabled\":!_vm.clickable,\"id\":\"hotspot-img\",\"data-testid\":'hotspotBtn' + _vm.index},on:{\"click\":_vm.clicked,\"mousedown\":_vm.mouseDown,\"mousemove\":_vm.mouseMove,\"focus\":_vm.onFocus}},[_c('div',{class:_vm.transparent ? 'img-no-background' : 'img-background',attrs:{\"tabindex\":\"-1\"}},[(_vm.hasThumbnail)?_c('v-img',{style:({\n width: _vm.hotspotSizeString.width,\n height: _vm.hotspotSizeString.height,\n }),attrs:{\"src\":_vm.thumbnail.file,\"contain\":\"\",\"tabindex\":\"-1\",\"alt\":\"\"}}):_vm._e()],1),_vm._t(\"default\")],2),_c('v-fade-transition',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showTooltip && !_vm.debug && _vm.clickable),expression:\"showTooltip && !debug && clickable\"}],staticClass:\"hotspot-overlay\"},[_c('v-container',{staticClass:\"background\",attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col')],1)],1)],1)])],1)])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div ref=\"icon\" class=\"icon-div\" v-show=\"validIcon\">\r\n <v-container\r\n fill-height\r\n class=\"hotspot-hint fluid pa-0\"\r\n v-show=\"true || (showTooltip && !debug)\"\r\n >\r\n <v-row class=\"text-center pa-0 ma-0\" align=\"center\" justify=\"center\">\r\n <v-scale-transition origin=\"center center\">\r\n <ConcentricCircles\r\n v-show=\"!showTooltip && !isCentered\"\r\n class=\"hotspot-circle\"\r\n />\r\n </v-scale-transition>\r\n\r\n <!-- this is the small icon - might be the only one used if title has no text-->\r\n <v-scale-transition origin=\"center center\">\r\n <v-card\r\n v-show=\"(!showTooltip && !isCentered) || title === ''\"\r\n dark\r\n color=\"secondary\"\r\n rounded=\"pill\"\r\n :class=\"\r\n !showTooltip\r\n ? 'pa-0 hotspot-title hotspot-icon'\r\n : 'pa-1 hotspot-title hotspot-icon'\r\n \"\r\n >\r\n <v-icon class=\"pa-3\">{{ icon }}</v-icon>\r\n </v-card>\r\n </v-scale-transition>\r\n\r\n <!-- if we have text, switch to this bigger icon on showTooltip = true -->\r\n <v-scale-transition origin=\"center center\" v-if=\"title !== ''\">\r\n <v-card\r\n :style=\"cardStyles\"\r\n v-show=\"showTooltip || isCentered\"\r\n dark\r\n color=\"secondary\"\r\n rounded=\"pill\"\r\n :class=\"\r\n showTooltip\r\n ? 'pa-1 hotspot-title hotspot-icon'\r\n : 'pa-0 hotspot-title hotspot-icon'\r\n \"\r\n >\r\n <v-card-subtitle class=\"pa-2 ml-2 mr-2 white--text\">\r\n <v-icon class=\"pr-2\">{{ icon }}</v-icon>\r\n {{ title }}\r\n </v-card-subtitle>\r\n </v-card>\r\n </v-scale-transition>\r\n\r\n <v-scale-transition origin=\"center center\" v-if=\"showBubble\">\r\n <div\r\n class=\"bubble\"\r\n @focus=\"showBubble = true\"\r\n @mouseover=\"showBubble = true\"\r\n :style=\"`top: -${chatHeight}px`\"\r\n >\r\n <p @focus=\"showBubble = true\" @mouseover=\"showBubble = true\">\r\n {{ text }}\r\n </p>\r\n </div>\r\n </v-scale-transition>\r\n </v-row>\r\n </v-container>\r\n </div>\r\n\r\n <v-scale-transition origin=\"center center\">\r\n <div\r\n :data-testid=\"'rectHotspot' + index\"\r\n id=\"rectHotspot\"\r\n ref=\"rect\"\r\n class=\"hotspot-bg hotspot-btn\"\r\n :style=\"{\r\n width: hotspotSizeString.width,\r\n height: hotspotSizeString.height,\r\n }\"\r\n @mouseenter=\"showBubble = true\"\r\n @mouseleave=\"showBubble = false\"\r\n @mousemove=\"showBubble = true\"\r\n alt=\"\"\r\n >\r\n <div>\r\n <v-img\r\n v-if=\"debug === true\"\r\n src=\"/grid.png\"\r\n :style=\"{\r\n width: hotspotSizeString.width,\r\n height: hotspotSizeString.height,\r\n opacity: 0.5,\r\n }\"\r\n tab-index=\"-1\"\r\n alt=\"\"\r\n id=\"hotspot-img\"\r\n >\r\n <!-- <v-btn @click=\"yaw -= 0.001\">Left</v-btn>\r\n <v-btn @click=\"yaw += 0.001\">Right</v-btn>\r\n <v-btn @click=\"pitch -= 0.001\">Up</v-btn>\r\n <v-btn @click=\"pitch += 0.001\">Down</v-btn> -->\r\n <!-- <v-text-field :value=\"JSON.stringify(changeData)\"></v-text-field> -->\r\n </v-img>\r\n\r\n <v-btn\r\n v-else\r\n text\r\n dark\r\n :style=\"{\r\n width: hotspotSizeString.width,\r\n height: hotspotSizeString.height,\r\n }\"\r\n :aria-label=\"ariaLabel\"\r\n :disabled=\"!clickable\"\r\n @click=\"clicked\"\r\n @mousedown=\"mouseDown\"\r\n @mousemove=\"mouseMove\"\r\n @focus=\"onFocus\"\r\n id=\"hotspot-img\"\r\n :data-testid=\"'hotspotBtn' + index\"\r\n >\r\n <div\r\n tabindex=\"-1\"\r\n :class=\"transparent ? 'img-no-background' : 'img-background'\"\r\n >\r\n <v-img\r\n v-if=\"hasThumbnail\"\r\n :style=\"{\r\n width: hotspotSizeString.width,\r\n height: hotspotSizeString.height,\r\n }\"\r\n :src=\"thumbnail.file\"\r\n contain\r\n tabindex=\"-1\"\r\n alt=\"\"\r\n >\r\n </v-img>\r\n </div>\r\n <slot />\r\n </v-btn>\r\n <v-fade-transition>\r\n <div\r\n class=\"hotspot-overlay\"\r\n v-show=\"showTooltip && !debug && clickable\"\r\n >\r\n <v-container fill-height fluid class=\"background\">\r\n <v-row align=\"center\" justify=\"center\">\r\n <v-col>\r\n <!-- <div class=\"text-center\">\r\n <h1 class=\"white--text\">{{ title }}</h1>\r\n </div> -->\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n </div>\r\n </v-fade-transition>\r\n </div>\r\n </div>\r\n </v-scale-transition>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mdiNumeric9PlusBoxMultipleOutline } from \"@mdi/js\";\r\nimport ConcentricCircles from \"./ConcentricCircles.vue\";\r\n\r\nexport default {\r\n name: \"MarzipanoRectHotspot\",\r\n props: [\r\n \"index\",\r\n \"yaw\",\r\n \"pitch\",\r\n \"width\",\r\n \"height\",\r\n \"rotX\",\r\n \"rotY\",\r\n \"rotZ\",\r\n \"scene\",\r\n \"thumbnail\",\r\n \"title\",\r\n \"icon\",\r\n \"text\",\r\n \"debug\",\r\n \"clickable\",\r\n \"transparent\",\r\n \"activeSceneIndex\",\r\n \"arialabel\",\r\n \"lightboxActive\",\r\n \"movementSpeed\",\r\n \"isMoving\",\r\n ],\r\n data: () => ({\r\n showTooltip: false,\r\n hasMoved: false,\r\n hasClicked: false,\r\n isCentered: false,\r\n showBubble: false,\r\n marzipanoScene: null,\r\n container: null,\r\n chatHeight: 0,\r\n }),\r\n components: { ConcentricCircles },\r\n\r\n mounted: function () {\r\n // this.scene.hotspotContainer().listHotspots()\r\n // .forEach((item) =>\r\n // this.scene.destroyHotspot(item)\r\n // );\r\n // console.log(this.scene, \"data from recthotspot\");\r\n // Get the hotspot container for scene.\r\n this.marzipanoScene = this.scene;\r\n this.container = this.marzipanoScene.hotspotContainer();\r\n\r\n // Create hotspot with different sources.\r\n if (this.$refs.rect !== undefined) {\r\n this.hotspot = this.container.createHotspot(\r\n this.$refs.rect,\r\n { yaw: this.yaw, pitch: this.pitch },\r\n {\r\n perspective: this.getPerspectiveTransform(),\r\n }\r\n );\r\n }\r\n\r\n // Create hotspot with different sources.\r\n if (this.$refs.icon !== undefined) {\r\n this.hotspotIcon = this.container.createHotspot(this.$refs.icon, {\r\n yaw: this.yaw,\r\n pitch: this.pitch,\r\n });\r\n }\r\n\r\n let self = this;\r\n\r\n this.marzipanoScene.addEventListener(\"viewChange\", this.viewChanged);\r\n // this.marzipanoScene.hotspotContainer().listHotspots().forEach(item => this.marzipanoScene.hotspotContainer().destroyHotspot(item))\r\n\r\n // const elements = document.querySelectorAll(\"#hotspot-img\");\r\n // document.addEventListener(\"keydown\", (e) => {\r\n // if (e.key === \"ArrowRight\") {\r\n // console.log(\"=>\");\r\n // this.nextFocus(elements);\r\n // } else if (e.key === \"ArrowLeft\") {\r\n // console.log(\"<=\");\r\n // this.prevFocus(elements);\r\n // }\r\n // });\r\n\r\n // // if (event.shiftKey) {\r\n // // if (document.activeElement === firstFocusableElement) {\r\n // // lastFocusableElement.focus(); // add focus for the last focusable element\r\n // // event.preventDefault();\r\n // // } else {\r\n // // if (document.activeElement === lastFocusableElement) {\r\n // // // if focused has reached to last focusable element then focus first focusable element after pressing tab\r\n // // firstFocusableElement.focus(); // add focus for the first focusable element\r\n // // event.preventDefault();\r\n // // }\r\n // // }\r\n // });\r\n //End of Keys\r\n },\r\n beforeDestroy() {\r\n this.marzipanoScene.removeEventListener(\"viewChange\", this.viewChanged);\r\n if (this.hotspot) {\r\n this.container.destroyHotspot(this.hotspot);\r\n }\r\n if (this.hotspotIcon) {\r\n this.container.destroyHotspot(this.hotspotIcon);\r\n }\r\n },\r\n methods: {\r\n //Accessibility Function that will enable user to navigate using the TAB Key\r\n\r\n onFocus(e) {\r\n if (e.target.matches(\"#hotspot-img\") && !this.isMoving) {\r\n this.$emit(\"focus\");\r\n\r\n // Move the view to look at this particular hotspot\r\n const hotspotDirection = {\r\n yaw: this.yaw,\r\n pitch: this.pitch,\r\n fov: (60 * Math.PI) / 60,\r\n };\r\n const options = {\r\n transitionDuration: this.movementSpeed,\r\n };\r\n\r\n // Look to the hotspot.\r\n this.marzipanoScene.lookTo(hotspotDirection, options);\r\n }\r\n },\r\n\r\n getPerspectiveTransform() {\r\n return {\r\n radius: 1000,\r\n extraTransforms:\r\n \"rotateY(\" +\r\n this.xRotation +\r\n \"deg) rotateX(\" +\r\n this.yRotation +\r\n \"deg) rotateZ(\" +\r\n this.zRotation +\r\n \"deg)\",\r\n };\r\n },\r\n\r\n updateHotspot() {\r\n if (this.hotspot === undefined) return;\r\n this.hotspot.setPosition({ yaw: this.yaw, pitch: this.pitch });\r\n this.hotspot.setPerspective(this.getPerspectiveTransform());\r\n },\r\n\r\n clicked() {\r\n if (!this.hasMoved) {\r\n this.$emit(\"click\");\r\n this.hasClicked = false;\r\n this.hasMoved = false;\r\n }\r\n },\r\n\r\n mouseDown() {\r\n this.hasClicked = true;\r\n this.hasMoved = false;\r\n },\r\n\r\n mouseMove() {\r\n if (this.hasClicked === true) {\r\n this.hasMoved = true;\r\n }\r\n },\r\n\r\n viewChanged() {\r\n if (!this.marzipanoScene) {\r\n return;\r\n }\r\n let difference1 = Math.abs(\r\n this.marzipanoScene.view().yaw() - this.hotspot.position().yaw\r\n );\r\n // This tests for angles that are close to the wrap around point\r\n // Eg Angle1 = -3.1 and Angle2 = 3.1 - these angles are technically only 0.083185307 radians apart\r\n let difference2 = Math.PI * 2.0 - difference1;\r\n let threshold = 0.4;\r\n if (difference1 < threshold || difference2 < threshold)\r\n this.isCentered = true;\r\n else this.isCentered = false;\r\n },\r\n },\r\n computed: {\r\n cardStyles() {\r\n const styles = {};\r\n\r\n // Check if minExpandedWidth is greater than 0, then set the min-width\r\n if (this.$store.getters[\"wagtail/getMinHotspotSize\"] > 0) {\r\n styles.minWidth = `${this.$store.getters[\"wagtail/getMinHotspotSize\"]}px`;\r\n }\r\n\r\n // Check if maxExpandedWidth is greater than 0, then set the max-width\r\n if (this.$store.getters[\"wagtail/getMaxHotspotSize\"] > 0) {\r\n styles.maxWidth = `${this.$store.getters[\"wagtail/getMaxHotspotSize\"]}px`;\r\n }\r\n\r\n return styles;\r\n },\r\n hasThumbnail() {\r\n if (this.thumbnail === null || this.thumbnail === undefined) return false;\r\n return true;\r\n },\r\n elHeight() {\r\n return this.height;\r\n },\r\n ariaLabel() {\r\n return this.arialabel;\r\n },\r\n xRotation() {\r\n if (this.rotX === undefined) return 0.0;\r\n return this.rotX;\r\n },\r\n yRotation() {\r\n if (this.rotY === undefined) return 0.0;\r\n return this.rotY;\r\n },\r\n zRotation() {\r\n if (this.rotZ === undefined) return 0.0;\r\n return this.rotZ;\r\n },\r\n hotspotSize() {\r\n // Resize the hotspot area, to be of the same ratio as the source image\r\n // but no larger than our max dimensions from the hotspot canvas json\r\n\r\n let hotspotWidth = parseFloat(this.width.replace(\"px\"));\r\n let hotspotHeight = parseFloat(this.height.replace(\"px\"));\r\n\r\n if (this.hasThumbnail === false || this.debug === true)\r\n return { width: hotspotWidth, height: hotspotHeight };\r\n\r\n let hotspot_canvas_ratio = hotspotWidth / hotspotHeight;\r\n let thumbnail_ratio = this.thumbnail.width / this.thumbnail.height;\r\n let thumbnail_scale = 1.0;\r\n\r\n if (thumbnail_ratio > hotspot_canvas_ratio) {\r\n //Image has a wider aspect than canvas, so we need to clamp to canvas width and maintain aspect\r\n thumbnail_scale = hotspotWidth / this.thumbnail.width;\r\n } else {\r\n //Image has a taller aspect than canvas, so we need to clamp to canvas height and maintain aspect\r\n thumbnail_scale = hotspotHeight / this.thumbnail.height;\r\n }\r\n return {\r\n width: this.thumbnail.width * thumbnail_scale,\r\n height: this.thumbnail.height * thumbnail_scale,\r\n };\r\n //return {width: hotspotWidth, height: hotspotHeight}\r\n },\r\n hotspotSizeString() {\r\n let width = this.hotspotSize.width.toString() + \"px\";\r\n let height = this.hotspotSize.height.toString() + \"px\";\r\n return { width: width, height: height };\r\n },\r\n hotspotWidth() {\r\n return \"512px\";\r\n },\r\n hotspotHeight() {\r\n return \"100px\";\r\n },\r\n changeData() {\r\n let data = {\r\n yaw: this.yaw,\r\n pitch: this.pitch,\r\n width: this.width,\r\n height: this.height,\r\n rotX: this.rotX,\r\n rotY: this.rotY,\r\n rotZ: this.rotZ,\r\n };\r\n return data;\r\n },\r\n validIcon() {\r\n if (this.icon !== undefined && this.icon !== null) return true;\r\n return false;\r\n },\r\n },\r\n watch: {\r\n async showBubble() {\r\n if (this.showBubble) {\r\n await this.$nextTick();\r\n await this.$nextTick();\r\n await this.$nextTick();\r\n this.chatHeight =\r\n this.$refs.icon.querySelector(\".bubble p\").clientHeight;\r\n }\r\n },\r\n pitch() {\r\n this.updateHotspot();\r\n },\r\n yaw() {\r\n this.updateHotspot();\r\n },\r\n rotX() {\r\n this.updateHotspot();\r\n },\r\n rotY() {\r\n this.updateHotspot();\r\n },\r\n rotZ() {\r\n this.updateHotspot();\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.hotspot-bg {\r\n /* background-image: url(\"/grid.png\"); */\r\n /* background-color: grey; */\r\n background-color: RGBA(0, 0, 0, 0);\r\n background-position: center;\r\n background-repeat: repeat;\r\n background-size: contain;\r\n}\r\n\r\n.hotspot-overlay {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: rgba(255, 255, 255, 0.5);\r\n background-position: center;\r\n background-repeat: repeat;\r\n background-size: contain;\r\n /* outline-width: 4px; */\r\n /* outline-style: solid; */\r\n /* outline-color: white; */\r\n box-shadow: 0px 0px 50px white;\r\n opacity: 0.9;\r\n pointer-events: none;\r\n}\r\n\r\n.hotspot-btn {\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n}\r\n\r\n.hotspot-icon {\r\n position: absolute;\r\n /* margin-left: -20px;\r\n margin-top: -20px; */\r\n}\r\n\r\n.hotspot-title {\r\n transition: 0.15s padding ease-out;\r\n}\r\n\r\n.hotspot-hint {\r\n position: absolute;\r\n width: 400px;\r\n height: 100px;\r\n /* bottom: 40px; */\r\n margin-left: -200px;\r\n margin-top: -50px;\r\n\r\n pointer-events: none;\r\n}\r\n\r\n.hotspot-circle {\r\n position: absolute;\r\n transform: scale(1);\r\n}\r\n\r\n.icon-div {\r\n pointer-events: none;\r\n}\r\n\r\n.debug-rect {\r\n background: red;\r\n}\r\n\r\n.down-arrow {\r\n position: absolute;\r\n bottom: 0px;\r\n width: 10px;\r\n height: 2px;\r\n}\r\n\r\n.img-background {\r\n background: white;\r\n}\r\n\r\n.img-background {\r\n background: transparent;\r\n}\r\n\r\n#hotspot-img:focus-visible {\r\n outline: 4px dashed darkorange;\r\n}\r\n\r\n.bubble {\r\n position: absolute;\r\n background-color: #ffffff;\r\n box-shadow: 0 2.8px 2.2px rgba(0, 0, 0, 0.034),\r\n 0 6.7px 5.3px rgba(0, 0, 0, 0.048), 0 12.5px 10px rgba(0, 0, 0, 0.06),\r\n 0 22.3px 17.9px rgba(0, 0, 0, 0.072), 0 41.8px 33.4px rgba(0, 0, 0, 0.086),\r\n 0 100px 80px rgba(0, 0, 0, 0.12);\r\n text-align: left;\r\n max-width: 320px;\r\n border-radius: 8px;\r\n z-index: +999999;\r\n\r\n p {\r\n max-height: 300px;\r\n z-index: +999999;\r\n padding: 8px;\r\n overflow: auto;\r\n }\r\n\r\n &:after {\r\n content: \"\";\r\n height: 0;\r\n width: 0;\r\n border-width: 0 20px 20px 20px;\r\n border-style: solid;\r\n border-color: transparent transparent rgba(255, 255, 255, 1) transparent;\r\n rotate: 180deg;\r\n position: absolute;\r\n bottom: -20px;\r\n margin: auto;\r\n left: 0;\r\n right: 0;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MarzipanoBubbleHotspot.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MarzipanoBubbleHotspot.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MarzipanoBubbleHotspot.vue?vue&type=template&id=dbce8f5c&scoped=true&\"\nimport script from \"./MarzipanoBubbleHotspot.vue?vue&type=script&lang=js&\"\nexport * from \"./MarzipanoBubbleHotspot.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MarzipanoBubbleHotspot.vue?vue&type=style&index=0&id=dbce8f5c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dbce8f5c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.debug)?_c('div',{ref:\"rect\",style:({\n width: String(_vm.width) + 'px',\n height: String(_vm.height) + 'px',\n })},[_c('v-img',{staticClass:\"hotspot-bg hotspot-btn\",style:({\n width: String(_vm.width) + 'px',\n height: String(_vm.height) + 'px',\n opacity: 0.5,\n }),attrs:{\"src\":\"/grid.png\",\"tab-index\":\"-1\",\"alt\":\"\",\"id\":\"hotspot-img\"}})],1):_vm._e(),(!_vm.debug)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.validIcon && !_vm.invisible),expression:\"validIcon && !invisible\"}],ref:\"icon\",staticClass:\"icon-div\"},[_c('v-container',{directives:[{name:\"show\",rawName:\"v-show\",value:(true || (_vm.showTooltip && !_vm.debug)),expression:\"true || (showTooltip && !debug)\"}],staticClass:\"hotspot-hint fluid pa-0\",attrs:{\"fill-height\":\"\"}},[_c('v-row',{staticClass:\"text-center pa-0 ma-0\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-scale-transition',{attrs:{\"origin\":\"center center\"}},[_c('ConcentricCircles',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showTooltip && !_vm.isCentered && !_vm.invisible),expression:\"!showTooltip && !isCentered && !invisible\"}],staticClass:\"hotspot-circle\"})],1),_c('v-scale-transition',{attrs:{\"origin\":\"center center\"}},[_c('v-card',{directives:[{name:\"show\",rawName:\"v-show\",value:((!_vm.showTooltip && !_vm.isCentered && !_vm.invisible) || _vm.title === ''),expression:\"(!showTooltip && !isCentered && !invisible) || title === ''\"}],class:!_vm.showTooltip\n ? 'pa-0 hotspot-title hotspot-icon'\n : 'pa-1 hotspot-title hotspot-icon',attrs:{\"dark\":\"\",\"color\":\"secondary\",\"rounded\":\"pill\"}},[_c('v-icon',{staticClass:\"pa-3\"},[_vm._v(_vm._s(_vm.icon))])],1)],1),(_vm.title !== '')?_c('v-scale-transition',{attrs:{\"origin\":\"center center\"}},[_c('v-card',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.invisible ? false : _vm.showTooltip || _vm.isCentered),expression:\"invisible ? false : showTooltip || isCentered\"}],class:_vm.showTooltip\n ? 'pa-1 hotspot-title hotspot-icon'\n : 'pa-0 hotspot-title hotspot-icon',style:(_vm.cardStyles),attrs:{\"dark\":\"\",\"color\":\"secondary\",\"rounded\":\"pill\"}},[_c('v-card-subtitle',{staticClass:\"pa-2 ml-2 mr-2 white--text\"},[_c('v-icon',{staticClass:\"pr-2\"},[_vm._v(_vm._s(_vm.icon))]),_vm._v(\" \"+_vm._s(_vm.title)+\" \")],1)],1)],1):_vm._e()],1)],1)],1):_vm._e(),(!_vm.debug)?_c('v-scale-transition',{attrs:{\"origin\":\"center center\"}},[_c('div',{ref:\"rect\",staticClass:\"hotspot-bg hotspot-btn\",style:({\n width: _vm.hotspotSizeString.width,\n height: _vm.hotspotSizeString.height,\n }),attrs:{\"data-testid\":'rectHotspot' + _vm.index,\"id\":\"rectHotspot\",\"alt\":\"\"},on:{\"mouseenter\":function($event){_vm.showTooltip = true},\"mouseleave\":function($event){_vm.showTooltip = false},\"mousemove\":function($event){_vm.showTooltip = true}}},[_c('div',[_c('v-btn',{style:({\n width: _vm.hotspotSizeString.width,\n height: _vm.hotspotSizeString.height,\n }),attrs:{\"text\":\"\",\"dark\":\"\",\"aria-label\":_vm.ariaLabel,\"disabled\":!_vm.clickable,\"id\":\"hotspot-img\",\"data-testid\":'hotspotBtn' + _vm.index},on:{\"click\":_vm.clicked,\"mousedown\":_vm.mouseDown,\"mousemove\":_vm.mouseMove,\"focus\":_vm.onFocus}},[_c('div',{class:_vm.transparent ? 'img-no-background' : 'img-background',attrs:{\"tabindex\":\"-1\"}},[(_vm.hasThumbnail)?_c('v-img',{style:({\n width: _vm.hotspotSizeString.width,\n height: _vm.hotspotSizeString.height \n }),attrs:{\"src\":_vm.thumbnail.file,\"contain\":\"\",\"tabindex\":\"-1\",\"alt\":\"\"}}):_vm._e()],1),_vm._t(\"default\")],2),_c('v-fade-transition',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showTooltip && !_vm.debug && _vm.clickable),expression:\"showTooltip && !debug && clickable\"}],staticClass:\"hotspot-overlay\"},[_c('v-container',{staticClass:\"background\",attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col')],1)],1)],1)])],1)])]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div v-if=\"debug\" ref=\"rect\"\r\n :style=\"{\r\n width: String(width) + 'px',\r\n height: String(height) + 'px',\r\n }\">\r\n <v-img class=\"hotspot-bg hotspot-btn\" src=\"/grid.png\" :style=\"{\r\n width: String(width) + 'px',\r\n height: String(height) + 'px',\r\n opacity: 0.5,\r\n }\" tab-index=\"-1\" alt=\"\" id=\"hotspot-img\" >\r\n </v-img>\r\n </div>\r\n <div v-if=\"!debug\" ref=\"icon\" class=\"icon-div\" v-show=\"validIcon && !invisible\">\r\n <v-container fill-height class=\"hotspot-hint fluid pa-0\" v-show=\"true || (showTooltip && !debug)\">\r\n <v-row class=\"text-center pa-0 ma-0\" align=\"center\" justify=\"center\">\r\n <v-scale-transition origin=\"center center\">\r\n <ConcentricCircles v-show=\"!showTooltip && !isCentered && !invisible\" class=\"hotspot-circle\" />\r\n </v-scale-transition>\r\n\r\n <!-- this is the small icon - might be the only one used if title has no text-->\r\n <v-scale-transition origin=\"center center\">\r\n <v-card v-show=\"(!showTooltip && !isCentered && !invisible) || title === ''\" dark color=\"secondary\" rounded=\"pill\" :class=\"\r\n !showTooltip\r\n ? 'pa-0 hotspot-title hotspot-icon'\r\n : 'pa-1 hotspot-title hotspot-icon'\r\n \">\r\n <v-icon class=\"pa-3\">{{ icon }}</v-icon>\r\n </v-card>\r\n </v-scale-transition>\r\n\r\n <!-- if we have text, switch to this bigger icon on showTooltip = true -->\r\n <v-scale-transition origin=\"center center\" v-if=\"title !== ''\">\r\n <v-card :style=\"cardStyles\" v-show=\"invisible ? false : showTooltip || isCentered\" dark color=\"secondary\" rounded=\"pill\" :class=\"\r\n showTooltip\r\n ? 'pa-1 hotspot-title hotspot-icon'\r\n : 'pa-0 hotspot-title hotspot-icon'\r\n \">\r\n <v-card-subtitle class=\"pa-2 ml-2 mr-2 white--text\">\r\n <v-icon class=\"pr-2\">{{ icon }}</v-icon>\r\n {{ title }}\r\n </v-card-subtitle>\r\n </v-card>\r\n </v-scale-transition>\r\n </v-row>\r\n </v-container>\r\n </div>\r\n <v-scale-transition v-if=\"!debug\" origin=\"center center\">\r\n <div :data-testid=\"'rectHotspot' + index\" id=\"rectHotspot\" ref=\"rect\" class=\"hotspot-bg hotspot-btn\" :style=\"{\r\n width: hotspotSizeString.width,\r\n height: hotspotSizeString.height,\r\n }\" @mouseenter=\"showTooltip = true\" @mouseleave=\"showTooltip = false\" @mousemove=\"showTooltip = true\" alt=\"\">\r\n <div>\r\n <v-btn text dark :style=\"{\r\n width: hotspotSizeString.width,\r\n height: hotspotSizeString.height,\r\n }\" :aria-label=\"ariaLabel\" :disabled=\"!clickable\" @click=\"clicked\" @mousedown=\"mouseDown\"\r\n @mousemove=\"mouseMove\" @focus=\"onFocus\" id=\"hotspot-img\" :data-testid=\"'hotspotBtn' + index\">\r\n <div tabindex=\"-1\" :class=\"transparent ? 'img-no-background' : 'img-background'\">\r\n <v-img v-if=\"hasThumbnail\" :style=\"{\r\n width: hotspotSizeString.width,\r\n height: hotspotSizeString.height \r\n }\" :src=\"thumbnail.file\" contain tabindex=\"-1\" alt=\"\">\r\n </v-img>\r\n </div>\r\n <slot />\r\n </v-btn>\r\n <v-fade-transition>\r\n <div class=\"hotspot-overlay\" v-show=\"showTooltip && !debug && clickable\">\r\n <v-container fill-height fluid class=\"background\">\r\n <v-row align=\"center\" justify=\"center\">\r\n <v-col>\r\n <!-- <div class=\"text-center\">\r\n <h1 class=\"white--text\">{{ title }}</h1>\r\n </div> -->\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n </div>\r\n </v-fade-transition>\r\n </div>\r\n </div>\r\n </v-scale-transition>\r\n\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport ConcentricCircles from \"./ConcentricCircles.vue\";\r\n\r\nexport default {\r\n name: \"MarzipanoRectHotspot\",\r\n props: [\r\n \"index\",\r\n \"invisible\",\r\n \"yaw\",\r\n \"pitch\",\r\n \"width\",\r\n \"height\",\r\n \"rotX\",\r\n \"rotY\",\r\n \"rotZ\",\r\n \"scene\",\r\n \"thumbnail\",\r\n \"title\",\r\n \"icon\",\r\n \"debug\",\r\n \"clickable\",\r\n \"transparent\",\r\n \"activeSceneIndex\",\r\n \"arialabel\",\r\n \"lightboxActive\",\r\n \"movementSpeed\",\r\n \"isMoving\",\r\n ],\r\n data: () => ({\r\n showTooltip: false,\r\n hasMoved: false,\r\n hasClicked: false,\r\n isCentered: false,\r\n marzipanoScene: null,\r\n container: null,\r\n }),\r\n components: { ConcentricCircles },\r\n\r\n mounted: function () {\r\n // this.scene.hotspotContainer().listHotspots()\r\n // .forEach((item) =>\r\n // this.scene.destroyHotspot(item)\r\n // );\r\n // console.log(this.scene, \"data from recthotspot\");\r\n // Get the hotspot container for scene.\r\n this.marzipanoScene = this.scene;\r\n this.container = this.marzipanoScene.hotspotContainer();\r\n\r\n // Create hotspot with different sources.\r\n if (this.$refs.rect !== undefined) {\r\n this.hotspot = this.container.createHotspot(\r\n this.$refs.rect,\r\n { yaw: this.yaw, pitch: this.pitch },\r\n {\r\n perspective: this.getPerspectiveTransform(),\r\n }\r\n );\r\n }\r\n\r\n // Create hotspot with different sources.\r\n if (this.$refs.icon !== undefined) {\r\n this.hotspotIcon = this.container.createHotspot(this.$refs.icon, {\r\n yaw: this.yaw,\r\n pitch: this.pitch,\r\n });\r\n }\r\n\r\n let self = this;\r\n\r\n this.marzipanoScene.addEventListener(\"viewChange\", this.viewChanged);\r\n \r\n },\r\n beforeDestroy() {\r\n this.marzipanoScene.removeEventListener(\"viewChange\", this.viewChanged);\r\n if (this.hotspot) {\r\n this.container.destroyHotspot(this.hotspot);\r\n }\r\n if (this.hotspotIcon) {\r\n this.container.destroyHotspot(this.hotspotIcon);\r\n }\r\n },\r\n methods: {\r\n //Accessibility Function that will enable user to navigate using the TAB Key\r\n\r\n onFocus(e) {\r\n if (e.target.matches(\"#hotspot-img\") && !this.isMoving) {\r\n this.$emit(\"focus\");\r\n\r\n // Move the view to look at this particular hotspot\r\n const hotspotDirection = {\r\n yaw: this.yaw,\r\n pitch: this.pitch,\r\n fov: (60 * Math.PI) / 60,\r\n };\r\n const options = {\r\n transitionDuration: this.movementSpeed,\r\n };\r\n\r\n // Look to the hotspot.\r\n this.marzipanoScene.lookTo(hotspotDirection, options);\r\n }\r\n },\r\n\r\n getPerspectiveTransform() {\r\n return {\r\n radius: 1000,\r\n extraTransforms:\r\n \"rotateY(\" +\r\n this.xRotation +\r\n \"deg) rotateX(\" +\r\n this.yRotation +\r\n \"deg) rotateZ(\" +\r\n this.zRotation +\r\n \"deg)\",\r\n };\r\n },\r\n\r\n updateHotspot() {\r\n if (this.hotspot === undefined) return;\r\n this.hotspot.setPosition({ yaw: this.yaw, pitch: this.pitch });\r\n this.hotspot.setPerspective(this.getPerspectiveTransform());\r\n },\r\n\r\n clicked() {\r\n if (!this.hasMoved) {\r\n this.$emit(\"click\");\r\n this.hasClicked = false;\r\n this.hasMoved = false;\r\n }\r\n },\r\n\r\n mouseDown() {\r\n this.hasClicked = true;\r\n this.hasMoved = false;\r\n },\r\n\r\n mouseMove() {\r\n if (this.hasClicked === true) {\r\n this.hasMoved = true;\r\n }\r\n },\r\n\r\n viewChanged() {\r\n if (!this.marzipanoScene) {\r\n return;\r\n }\r\n let difference1 = Math.abs(\r\n this.marzipanoScene.view().yaw() - this.hotspot.position().yaw\r\n );\r\n // This tests for angles that are close to the wrap around point\r\n // Eg Angle1 = -3.1 and Angle2 = 3.1 - these angles are technically only 0.083185307 radians apart\r\n let difference2 = Math.PI * 2.0 - difference1;\r\n let threshold = 0.4;\r\n if (difference1 < threshold || difference2 < threshold)\r\n this.isCentered = true;\r\n else this.isCentered = false;\r\n },\r\n },\r\n computed: {\r\n cardStyles() {\r\n const styles = {};\r\n\r\n // Check if minExpandedWidth is greater than 0, then set the min-width\r\n if (this.$store.getters[\"wagtail/getMinHotspotSize\"] > 0) {\r\n styles.minWidth = `${this.$store.getters[\"wagtail/getMinHotspotSize\"]}px`;\r\n }\r\n\r\n // Check if maxExpandedWidth is greater than 0, then set the max-width\r\n if (this.$store.getters[\"wagtail/getMaxHotspotSize\"] > 0) {\r\n styles.maxWidth = `${this.$store.getters[\"wagtail/getMaxHotspotSize\"]}px`;\r\n }\r\n\r\n return styles;\r\n },\r\n hasThumbnail() {\r\n if (this.thumbnail === null || this.thumbnail === undefined) return false;\r\n return true;\r\n },\r\n elHeight() {\r\n return this.height;\r\n },\r\n ariaLabel() {\r\n return this.arialabel;\r\n },\r\n xRotation() {\r\n if (this.rotX === undefined) return 0.0;\r\n return this.rotX;\r\n },\r\n yRotation() {\r\n if (this.rotY === undefined) return 0.0;\r\n return this.rotY;\r\n },\r\n zRotation() {\r\n if (this.rotZ === undefined) return 0.0;\r\n return this.rotZ;\r\n },\r\n hotspotSize() {\r\n // Resize the hotspot area, to be of the same ratio as the source image\r\n // but no larger than our max dimensions from the hotspot canvas json\r\n\r\n let hotspotWidth = parseFloat(this.width.replace(\"px\"));\r\n let hotspotHeight = parseFloat(this.height.replace(\"px\"));\r\n\r\n if (this.hasThumbnail === false || this.debug === true)\r\n return { width: hotspotWidth, height: hotspotHeight };\r\n\r\n let hotspot_canvas_ratio = hotspotWidth / hotspotHeight;\r\n let thumbnail_ratio = this.thumbnail.width / this.thumbnail.height;\r\n let thumbnail_scale = 1.0;\r\n\r\n if (thumbnail_ratio > hotspot_canvas_ratio) {\r\n //Image has a wider aspect than canvas, so we need to clamp to canvas width and maintain aspect\r\n thumbnail_scale = hotspotWidth / this.thumbnail.width;\r\n } else {\r\n //Image has a taller aspect than canvas, so we need to clamp to canvas height and maintain aspect\r\n thumbnail_scale = hotspotHeight / this.thumbnail.height;\r\n }\r\n return {\r\n width: this.thumbnail.width * thumbnail_scale,\r\n height: this.thumbnail.height * thumbnail_scale,\r\n };\r\n //return {width: hotspotWidth, height: hotspotHeight}\r\n },\r\n hotspotSizeString() {\r\n let width = this.hotspotSize.width.toString() + \"px\";\r\n let height = this.hotspotSize.height.toString() + \"px\";\r\n return { width: width, height: height };\r\n },\r\n hotspotWidth() {\r\n return \"512px\";\r\n },\r\n hotspotHeight() {\r\n return \"100px\";\r\n },\r\n changeData() {\r\n let data = {\r\n yaw: this.yaw,\r\n pitch: this.pitch,\r\n width: this.width,\r\n height: this.height,\r\n rotX: this.rotX,\r\n rotY: this.rotY,\r\n rotZ: this.rotZ,\r\n };\r\n return data;\r\n },\r\n validIcon() {\r\n if (this.icon !== undefined && this.icon !== null && !this.invisible)\r\n return true;\r\n return false;\r\n },\r\n },\r\n watch: {\r\n pitch() {\r\n this.updateHotspot();\r\n },\r\n yaw() {\r\n this.updateHotspot();\r\n },\r\n rotX() {\r\n this.updateHotspot();\r\n },\r\n rotY() {\r\n this.updateHotspot();\r\n },\r\n rotZ() {\r\n this.updateHotspot();\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.hotspot-bg {\r\n /* background-image: url(\"/grid.png\"); */\r\n /* background-color: grey; */\r\n background-color: RGBA(0, 0, 0, 0);\r\n background-position: center;\r\n background-repeat: repeat;\r\n background-size: contain;\r\n}\r\n\r\n.hotspot-overlay {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: rgba(255, 255, 255, 0.5);\r\n background-position: center;\r\n background-repeat: repeat;\r\n background-size: contain;\r\n /* outline-width: 4px; */\r\n /* outline-style: solid; */\r\n /* outline-color: white; */\r\n box-shadow: 0px 0px 50px white;\r\n opacity: 0.9;\r\n pointer-events: none;\r\n}\r\n\r\n.hotspot-btn {\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n}\r\n\r\n.hotspot-icon {\r\n position: absolute;\r\n /* margin-left: -20px;\r\n margin-top: -20px; */\r\n}\r\n\r\n.hotspot-title {\r\n transition: 0.15s padding ease-out;\r\n}\r\n\r\n.hotspot-hint {\r\n position: absolute;\r\n width: 400px;\r\n height: 100px;\r\n /* bottom: 40px; */\r\n margin-left: -200px;\r\n margin-top: -50px;\r\n\r\n pointer-events: none;\r\n}\r\n\r\n.hotspot-circle {\r\n position: absolute;\r\n transform: scale(1);\r\n}\r\n\r\n.icon-div {\r\n pointer-events: none;\r\n z-index: 1;\r\n}\r\n\r\n.debug-rect {\r\n background: red;\r\n}\r\n\r\n.down-arrow {\r\n position: absolute;\r\n bottom: 0px;\r\n width: 10px;\r\n height: 2px;\r\n}\r\n\r\n.img-background {\r\n background: white;\r\n}\r\n\r\n.img-background {\r\n background: transparent;\r\n}\r\n\r\n#hotspot-img {\r\n min-width: 0px;\r\n padding: 0px;\r\n}\r\n\r\n#hotspot-img:focus-visible {\r\n outline: 4px dashed darkorange;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MarzipanoRectHotspot.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MarzipanoRectHotspot.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MarzipanoRectHotspot.vue?vue&type=template&id=73f073b7&scoped=true&\"\nimport script from \"./MarzipanoRectHotspot.vue?vue&type=script&lang=js&\"\nexport * from \"./MarzipanoRectHotspot.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MarzipanoRectHotspot.vue?vue&type=style&index=0&id=73f073b7&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73f073b7\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-scale-transition',{attrs:{\"origin\":\"center center\"}},[_c('v-card',{staticClass:\"instruction-card\",attrs:{\"shaped\":\"\"}},[_c('div',{staticClass:\"text-center\"},[_c('v-icon',{attrs:{\"color\":\"white\",\"size\":\"130\"}},[_vm._v(_vm._s(_vm.mdiRotateOrbit))])],1),_c('v-card-text',{staticClass:\"text-center text-description\"},[_c('h2',{staticClass:\"white--text\"},[_vm._v(_vm._s(_vm.message))])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-scale-transition origin=\"center center\">\r\n <v-card shaped class=\"instruction-card\">\r\n <div class=\"text-center\">\r\n <v-icon color=\"white\" size=\"130\">{{mdiRotateOrbit}}</v-icon>\r\n </div>\r\n <v-card-text class=\"text-center text-description\">\r\n <h2 class=\"white--text\">{{message}}</h2>\r\n </v-card-text>\r\n </v-card>\r\n </v-scale-transition>\r\n</template>\r\n\r\n<script>\r\nimport { mdiRotateOrbit } from '@mdi/js'\r\nexport default {\r\n name: \"PanoramaInstructions\",\r\n props: [\"title\"],\r\n data: () => ({\r\n mdiRotateOrbit: mdiRotateOrbit,\r\n items: [],\r\n select: undefined,\r\n search: undefined,\r\n loading: undefined,\r\n toggle_exclusive: 1,\r\n message: \"Drag to look around\"\r\n }),\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.instruction-card {\r\n background-color: rgba(0, 0, 0, 0.5) !important;\r\n pointer-events: none;\r\n width: 230px;\r\n height: 175px;\r\n position: fixed;\r\n top: 50%;\r\n left: 50%;\r\n margin-top: -87.5px;\r\n margin-left: -115px;\r\n}\r\n\r\n.lottie-anim {\r\n position:absolute;\r\n top:50%;\r\n left:50%;\r\n width: 200px; \r\n height: 200px; \r\n margin-top:-120px; \r\n margin-left:-100px\r\n}\r\n\r\n.text-description {\r\n position:absolute;\r\n bottom:0px;\r\n}\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PanoramaInstructions.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PanoramaInstructions.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PanoramaInstructions.vue?vue&type=template&id=accd356e&scoped=true&\"\nimport script from \"./PanoramaInstructions.vue?vue&type=script&lang=js&\"\nexport * from \"./PanoramaInstructions.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PanoramaInstructions.vue?vue&type=style&index=0&id=accd356e&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"accd356e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-fade-transition',[_c('v-container',{attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('div',{staticClass:\"text-center\"},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"size\":\"50\",\"color\":\"secondary\",\"tabindex\":\"-1\"}})],1)]),(_vm.title !== '' && _vm.title !== undefined)?_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('div',{staticClass:\"text-center secondary--text pt-6\"},[_c('span',[_vm._v(\"Loading \"+_vm._s(_vm.title))])])]):_vm._e()],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-fade-transition>\r\n <v-container fill-height fluid>\r\n <v-row align=\"center\" justify=\"center\">\r\n <v-col>\r\n <v-row align=\"center\" justify=\"center\">\r\n <div class=\"text-center\">\r\n <v-progress-circular\r\n indeterminate\r\n size=\"50\"\r\n color=\"secondary\"\r\n tabindex=\"-1\"\r\n ></v-progress-circular>\r\n </div>\r\n </v-row>\r\n <v-row align=\"center\" justify=\"center\" v-if=\"title !== '' && title !== undefined\">\r\n <div class=\"text-center secondary--text pt-6\">\r\n <span>Loading {{title}}</span>\r\n </div>\r\n </v-row>\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n </v-fade-transition>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"Loading\",\r\n props: ['title'],\r\n data: () => ({\r\n items: [],\r\n select: undefined,\r\n search: undefined,\r\n loading: undefined,\r\n toggle_exclusive: 1,\r\n }),\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.background {\r\n background-color: rgba(255, 255, 255, 0.5);\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PanoramaLoading.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PanoramaLoading.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PanoramaLoading.vue?vue&type=template&id=71498160&scoped=true&\"\nimport script from \"./PanoramaLoading.vue?vue&type=script&lang=js&\"\nexport * from \"./PanoramaLoading.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PanoramaLoading.vue?vue&type=style&index=0&id=71498160&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"71498160\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"panorama noscrollbars\"},[_c('LightboxGallery',{attrs:{\"showLightbox\":_vm.lightboxContent.length > 0 && _vm.lightboxReady,\"content\":_vm.lightboxContent,\"tileUrl\":_vm.lightboxContent,\"tabindex\":\"0\"},on:{\"closed\":function($event){return _vm.closeLightbox()}}}),_c('Marzipano',{ref:\"Marzipano\",attrs:{\"tileUrl\":_vm.tileUrl,\"data\":_vm.pageData.panorama.data,\"ready\":_vm.autoRotate,\"sasKey\":_vm.sasKey,\"minYaw\":_vm.minYaw,\"maxYaw\":_vm.maxYaw,\"rectConfigEnabled\":_vm.rectConfigEnabled,\"tabindex\":\"-1\"},on:{\"loaded\":_vm.panoLoaded}},[_vm._l((_vm.pageData.child_content),function(child,i){return _c('div',{key:i},[(child.type === 'virtualroomcontent')?_c('MarzipanoRectHotspot',{ref:\"rectHotspot\",refInFor:true,attrs:{\"index\":i,\"yaw\":child.position_data.yaw,\"pitch\":child.position_data.pitch,\"rotX\":child.position_data.rotX,\"rotY\":child.position_data.rotY,\"rotZ\":child.position_data.rotZ,\"width\":child.position_data.width,\"height\":child.position_data.height,\"invisible\":child.invisible,\"thumbnail\":child.thumbnail,\"scene\":_vm.scene,\"arialabel\":_vm.getAriaLabel(child),\"title\":_vm.getChildTitle(child),\"icon\":child.menu_icon,\"clickable\":child.clickable,\"transparent\":child.transparent_background,\"lightboxActive\":_vm.lightboxActive,\"isMoving\":_vm.isMoving,\"movementSpeed\":_vm.movementSpeed},on:{\"click\":function($event){return _vm.clickChild(child)},\"focus\":function($event){return _vm.onFocus()}}}):_vm._e()],1)}),_vm._l((_vm.pageData.panorama_child_content),function(child,i){return _c('div',{key:i},[(child.type === 'panoramaroompopup')?_c('MarzipanoRectHotspot',{ref:\"rectHotspot\",refInFor:true,attrs:{\"index\":i,\"yaw\":child.position_data.yaw,\"pitch\":child.position_data.pitch,\"rotX\":child.position_data.rotX,\"rotY\":child.position_data.rotY,\"rotZ\":child.position_data.rotZ,\"width\":child.position_data.width,\"height\":child.position_data.height,\"invisible\":child.invisible,\"thumbnail\":child.thumbnail,\"scene\":_vm.scene,\"arialabel\":_vm.getAriaLabel(child),\"title\":_vm.getChildTitle(child),\"icon\":child.menu_icon,\"clickable\":child.clickable,\"transparent\":child.transparent_background,\"lightboxActive\":_vm.lightboxActive,\"isMoving\":_vm.isMoving,\"movementSpeed\":_vm.movementSpeed},on:{\"click\":function($event){return _vm.clickChild(child)},\"focus\":function($event){return _vm.onFocus()}}}):_vm._e()],1)}),_vm._l((_vm.pageData.chat_bubble_content),function(child,i){return _c('div',{key:i + 'chat'},[_c('MarzipanoBubbleHotspot',{ref:\"rectHotspot\",refInFor:true,attrs:{\"index\":i,\"yaw\":child.position_data.yaw,\"pitch\":child.position_data.pitch,\"rotX\":child.position_data.rotX,\"rotY\":child.position_data.rotY,\"rotZ\":child.position_data.rotZ,\"width\":child.position_data.width,\"height\":child.position_data.height,\"text\":child.chat_bubble_text,\"thumbnail\":child.thumbnail,\"scene\":_vm.scene,\"arialabel\":_vm.getAriaLabel(child),\"title\":_vm.getChildTitle(child),\"icon\":child.menu_icon,\"clickable\":child.clickable,\"transparent\":child.transparent_background,\"lightboxActive\":_vm.lightboxActive,\"isMoving\":_vm.isMoving,\"movementSpeed\":_vm.movementSpeed},on:{\"click\":function($event){return _vm.clickChild(child)},\"focus\":function($event){return _vm.onFocus()}}})],1)})],2),_c('div',{staticClass:\"button-panel pt-7 pr-5\"},[_c('v-container',{staticClass:\"pt-0 pb-0\"},[_c('v-row',[_c('v-btn',{staticClass:\"use-mouse\",attrs:{\"tabindex\":\"-1\",\"fab\":\"\",\"small\":\"\",\"data-testid\":\"infoButton\"},on:{\"click\":function($event){return _vm.welcomeOpened()}}},[_c('v-icon',[_vm._v(\"mdi-information-outline\")])],1)],1),(\n this.pageData &&\n this.pageData.background_audio &&\n this.pageData.background_audio.length\n )?_c('v-row',{staticClass:\"mt-6 flex-col\"},[_c('v-btn',{staticClass:\"use-mouse\",attrs:{\"tabindex\":\"-1\",\"fab\":\"\",\"small\":\"\",\"data-testid\":\"infoButton\"},on:{\"click\":_vm.handleBackgroundAudio,\"focus\":function($event){_vm.showVolume = true},\"mouseover\":function($event){_vm.showVolume = true}}},[_c('v-icon',[_vm._v(_vm._s(!_vm.backgroundAudioPlaying ? \"mdi-play\" : _vm.volumeOn && _vm.playerVolume > 0 ? \"mdi-volume-high\" : \"mdi-volume-off\"))])],1)],1):_vm._e(),(_vm.showVolume)?_c('v-row',{on:{\"focus\":function($event){_vm.showVolume = true},\"mouseleave\":function($event){_vm.showVolume = false}}},[_c('v-slider',{attrs:{\"tabindex\":\"-1\",\"max\":\"1\",\"step\":\"0.01\",\"min\":\"0\",\"vertical\":\"\"},model:{value:(_vm.playerVolume),callback:function ($$v) {_vm.playerVolume=$$v},expression:\"playerVolume\"}})],1):_vm._e()],1)],1),_c('PageHeaderCard',{attrs:{\"transparent\":true}}),(_vm.secondaryLogo !== undefined)?_c('img',{staticClass:\"secondary-logo-panel ignore-mouse\",attrs:{\"src\":_vm.secondaryLogo}}):_vm._e(),_c('v-dialog',{ref:\"accessibilityLightbox\",attrs:{\"content-class\":\"accessibility-lightbox\",\"persistent\":\"\",\"scrollable\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(dialog){return [_c('v-card',{attrs:{\"height\":\"100%\"}},[_c('FocusLoop',{attrs:{\"is-visible\":_vm.activeTrap}},[_c('v-card-title',{staticClass:\"text-h5 accessibility-header lighten-2\"},[_vm._v(\" Accessibility Mode \")]),_c('v-tabs',{attrs:{\"show-arrows\":\"\"}},[_c('v-tab',[_vm._v(\"Explore the Room\")]),_c('v-tab-item',[(_vm.accessibilityFlag)?_c('v-list-item',{key:\"1\",staticClass:\"accessibility-btn\",attrs:{\"link\":\"\"},on:{\"click\":function($event){_vm.closeAccessibilityLightbox();\n _vm.$emit('showLanding', 'read-welcome');}}},[_vm._v(\"Read Welcome Message\")]):_vm._e(),_vm._l((_vm.pageData.child_content),function(child,i){return _c('v-list-item',{key:_vm.accessibilityFlag ? i + 1 : i,staticClass:\"accessibility-btn\",attrs:{\"link\":\"\"},on:{\"click\":function($event){_vm.clickChild(child), (dialog.value = false)}}},[_vm._v(_vm._s(_vm.getChildTitle(child)))])})],2),_c('v-tab',[_vm._v(\"Site Navigation \")]),_c('v-tab-item',_vm._l((_vm.siteStructure),function(menuItem,i){return _c('v-list-item',{key:i,attrs:{\"to\":menuItem.pathname,\"link\":\"\"}},[_c('v-list-item-icon',{staticClass:\"mr-4\"},[_c('v-icon',[_vm._v(_vm._s(menuItem.menu_icon))])],1),_c('v-list-item-title',[_vm._v(_vm._s(menuItem.title))])],1)}),1)],1),_c('v-divider'),_c('v-btn',{staticClass:\"accessibility-btn close-accessibility-btn\",on:{\"click\":function($event){_vm.closeAccessibilityLightbox(), (dialog.value = false)}}},[_vm._v(\"Close\")])],1)],1)]}}]),model:{value:(_vm.accessibilityModalFlag),callback:function ($$v) {_vm.accessibilityModalFlag=$$v},expression:\"accessibilityModalFlag\"}}),_c('PanoramaInstructions',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showInstructions),expression:\"showInstructions\"}]})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"panorama noscrollbars\">\r\n <LightboxGallery\r\n :showLightbox=\"lightboxContent.length > 0 && lightboxReady\"\r\n :content=\"lightboxContent\"\r\n :tileUrl=\"lightboxContent\"\r\n @closed=\"closeLightbox()\"\r\n tabindex=\"0\"\r\n />\r\n\r\n <Marzipano\r\n :tileUrl=\"tileUrl\"\r\n :data=\"pageData.panorama.data\"\r\n :ready=\"autoRotate\"\r\n :sasKey=\"sasKey\"\r\n @loaded=\"panoLoaded\"\r\n ref=\"Marzipano\"\r\n :minYaw=\"minYaw\"\r\n :maxYaw=\"maxYaw\"\r\n :rectConfigEnabled=\"rectConfigEnabled\"\r\n tabindex=\"-1\"\r\n >\r\n <div v-for=\"(child, i) in pageData.child_content\" :key=\"i\">\r\n <MarzipanoRectHotspot\r\n v-if=\"child.type === 'virtualroomcontent'\"\r\n :index=\"i\"\r\n :yaw=\"child.position_data.yaw\"\r\n :pitch=\"child.position_data.pitch\"\r\n :rotX=\"child.position_data.rotX\"\r\n :rotY=\"child.position_data.rotY\"\r\n :rotZ=\"child.position_data.rotZ\"\r\n :width=\"child.position_data.width\"\r\n :height=\"child.position_data.height\"\r\n :invisible=\"child.invisible\"\r\n :thumbnail=\"child.thumbnail\"\r\n :scene=\"scene\"\r\n :arialabel=\"getAriaLabel(child)\"\r\n :title=\"getChildTitle(child)\"\r\n :icon=\"child.menu_icon\"\r\n :clickable=\"child.clickable\"\r\n :transparent=\"child.transparent_background\"\r\n :lightboxActive=\"lightboxActive\"\r\n @click=\"clickChild(child)\"\r\n @focus=\"onFocus()\"\r\n :isMoving=\"isMoving\"\r\n :movementSpeed=\"movementSpeed\"\r\n ref=\"rectHotspot\"\r\n />\r\n </div>\r\n <div v-for=\"(child, i) in pageData.panorama_child_content\" :key=\"i\">\r\n <MarzipanoRectHotspot\r\n v-if=\"child.type === 'panoramaroompopup'\"\r\n :index=\"i\"\r\n :yaw=\"child.position_data.yaw\"\r\n :pitch=\"child.position_data.pitch\"\r\n :rotX=\"child.position_data.rotX\"\r\n :rotY=\"child.position_data.rotY\"\r\n :rotZ=\"child.position_data.rotZ\"\r\n :width=\"child.position_data.width\"\r\n :height=\"child.position_data.height\"\r\n :invisible=\"child.invisible\"\r\n :thumbnail=\"child.thumbnail\"\r\n :scene=\"scene\"\r\n :arialabel=\"getAriaLabel(child)\"\r\n :title=\"getChildTitle(child)\"\r\n :icon=\"child.menu_icon\"\r\n :clickable=\"child.clickable\"\r\n :transparent=\"child.transparent_background\"\r\n :lightboxActive=\"lightboxActive\"\r\n @click=\"clickChild(child)\"\r\n @focus=\"onFocus()\"\r\n :isMoving=\"isMoving\"\r\n :movementSpeed=\"movementSpeed\"\r\n ref=\"rectHotspot\"\r\n />\r\n </div>\r\n <div v-for=\"(child, i) in pageData.chat_bubble_content\" :key=\"i + 'chat'\">\r\n <MarzipanoBubbleHotspot\r\n :index=\"i\"\r\n :yaw=\"child.position_data.yaw\"\r\n :pitch=\"child.position_data.pitch\"\r\n :rotX=\"child.position_data.rotX\"\r\n :rotY=\"child.position_data.rotY\"\r\n :rotZ=\"child.position_data.rotZ\"\r\n :width=\"child.position_data.width\"\r\n :height=\"child.position_data.height\"\r\n :text=\"child.chat_bubble_text\"\r\n :thumbnail=\"child.thumbnail\"\r\n :scene=\"scene\"\r\n :arialabel=\"getAriaLabel(child)\"\r\n :title=\"getChildTitle(child)\"\r\n :icon=\"child.menu_icon\"\r\n :clickable=\"child.clickable\"\r\n :transparent=\"child.transparent_background\"\r\n :lightboxActive=\"lightboxActive\"\r\n @click=\"clickChild(child)\"\r\n @focus=\"onFocus()\"\r\n :isMoving=\"isMoving\"\r\n :movementSpeed=\"movementSpeed\"\r\n ref=\"rectHotspot\"\r\n />\r\n </div>\r\n </Marzipano>\r\n\r\n <div class=\"button-panel pt-7 pr-5\">\r\n <v-container class=\"pt-0 pb-0\">\r\n <v-row>\r\n <v-btn\r\n tabindex=\"-1\"\r\n fab\r\n small\r\n class=\"use-mouse\"\r\n @click=\"welcomeOpened()\"\r\n data-testid=\"infoButton\"\r\n >\r\n <v-icon>mdi-information-outline</v-icon>\r\n </v-btn>\r\n </v-row>\r\n <v-row\r\n class=\"mt-6 flex-col\"\r\n v-if=\"\r\n this.pageData &&\r\n this.pageData.background_audio &&\r\n this.pageData.background_audio.length\r\n \"\r\n >\r\n <v-btn\r\n tabindex=\"-1\"\r\n fab\r\n small\r\n class=\"use-mouse\"\r\n data-testid=\"infoButton\"\r\n @click=\"handleBackgroundAudio\"\r\n @focus=\"showVolume = true\"\r\n @mouseover=\"showVolume = true\"\r\n >\r\n <v-icon>{{\r\n !backgroundAudioPlaying\r\n ? \"mdi-play\"\r\n : volumeOn && playerVolume > 0\r\n ? \"mdi-volume-high\"\r\n : \"mdi-volume-off\"\r\n }}</v-icon>\r\n </v-btn>\r\n </v-row>\r\n <v-row\r\n v-if=\"showVolume\"\r\n @focus=\"showVolume = true\"\r\n @mouseleave=\"showVolume = false\"\r\n >\r\n <v-slider\r\n tabindex=\"-1\"\r\n v-model=\"playerVolume\"\r\n max=\"1\"\r\n step=\"0.01\"\r\n min=\"0\"\r\n vertical\r\n ></v-slider>\r\n </v-row>\r\n </v-container>\r\n </div>\r\n\r\n <PageHeaderCard :transparent=\"true\"> </PageHeaderCard>\r\n\r\n <img\r\n v-if=\"secondaryLogo !== undefined\"\r\n :src=\"secondaryLogo\"\r\n class=\"secondary-logo-panel ignore-mouse\"\r\n />\r\n\r\n <v-dialog\r\n content-class=\"accessibility-lightbox\"\r\n persistent\r\n scrollable\r\n v-model=\"accessibilityModalFlag\"\r\n ref=\"accessibilityLightbox\"\r\n >\r\n <template v-slot:default=\"dialog\">\r\n <v-card height=\"100%\">\r\n <FocusLoop :is-visible=\"activeTrap\">\r\n <v-card-title class=\"text-h5 accessibility-header lighten-2\">\r\n Accessibility Mode\r\n </v-card-title>\r\n <v-tabs show-arrows>\r\n <v-tab>Explore the Room</v-tab>\r\n <v-tab-item>\r\n <v-list-item\r\n v-if=\"accessibilityFlag\"\r\n key=\"1\"\r\n link\r\n class=\"accessibility-btn\"\r\n @click=\"\r\n closeAccessibilityLightbox();\r\n $emit('showLanding', 'read-welcome');\r\n \"\r\n >Read Welcome Message</v-list-item\r\n >\r\n <v-list-item\r\n v-for=\"(child, i) in pageData.child_content\"\r\n :key=\"accessibilityFlag ? i + 1 : i\"\r\n link\r\n class=\"accessibility-btn\"\r\n @click=\"clickChild(child), (dialog.value = false)\"\r\n >{{ getChildTitle(child) }}</v-list-item\r\n >\r\n </v-tab-item>\r\n <v-tab>Site Navigation </v-tab>\r\n <v-tab-item>\r\n <v-list-item\r\n v-for=\"(menuItem, i) in siteStructure\"\r\n :key=\"i\"\r\n :to=\"menuItem.pathname\"\r\n link\r\n >\r\n <v-list-item-icon class=\"mr-4\">\r\n <v-icon>{{ menuItem.menu_icon }}</v-icon>\r\n </v-list-item-icon>\r\n <v-list-item-title>{{ menuItem.title }}</v-list-item-title>\r\n </v-list-item></v-tab-item\r\n >\r\n </v-tabs>\r\n <v-divider></v-divider>\r\n <v-btn\r\n class=\"accessibility-btn close-accessibility-btn\"\r\n @click=\"closeAccessibilityLightbox(), (dialog.value = false)\"\r\n >Close</v-btn\r\n >\r\n </FocusLoop>\r\n </v-card>\r\n </template>\r\n </v-dialog>\r\n\r\n <PanoramaInstructions v-show=\"showInstructions\" />\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport Marzipano from \"../../components/panorama/Marzipano.vue\";\r\nimport MarzipanoRectHotspot from \"../../components/panorama/MarzipanoRectHotspot\";\r\nimport MarzipanoBubbleHotspot from \"../../components/panorama/MarzipanoBubbleHotspot\";\r\nimport PanoramaInstructions from \"../../components/panorama/PanoramaInstructions\";\r\n// import StreamfieldBlock from \"../../components/blocks/streamfieldBlock.vue\";\r\nimport PageShortcutBlock from \"../../components/blocks/pageShortcutBlock.vue\";\r\nimport PageHeaderCard from \"../../components/page/pageHeaderCard.vue\";\r\nimport { FocusLoop } from \"@vue-a11y/focus-loop\";\r\nimport * as arrowKeyNavigation from \"arrow-key-navigation\";\r\n//enables next & previous tab style DOM navigation using arrow keys\r\narrowKeyNavigation.register();\r\nimport { Howl } from \"howler\";\r\n\r\n\r\nexport default {\r\n name: \"EngagementRoom\",\r\n props: [\"pageData\", \"pageChildren\", \"accessibilityStream\"],\r\n data: () => ({\r\n hasAudio: true,\r\n volumeOn: false,\r\n audioFile:\r\n \"http://localhost:8000/media/documents/For_the_first_time_VP_Duterte_speaks_in_Mandarin_China_is_a_generous_neighbor_to_PH.mp3\",\r\n panorama: \"/engagement_room.json\",\r\n lightboxData: undefined,\r\n scene: undefined,\r\n lastYaw: undefined,\r\n lastPitch: undefined,\r\n lastFov: undefined,\r\n useLastLocation: false,\r\n lightboxReady: false,\r\n showLanding: false,\r\n showInstructions: false,\r\n instructionsShown: false,\r\n autoRotate: false,\r\n consoleYaw: undefined,\r\n consolePitch: undefined,\r\n formYaw: undefined,\r\n formPitch: undefined,\r\n lightboxActive: undefined,\r\n currentFocusIndex: 0,\r\n currentActiveHotspot: undefined,\r\n currentActiveAccessibilityMenuItem: undefined,\r\n isMouseControl: false,\r\n isMoving: false,\r\n movementSpeed: 600,\r\n accessibilityModalFlag: false,\r\n accessibilityFlag: false,\r\n activeTrap: true,\r\n lightbox2Active: false,\r\n backgroundAudio: null,\r\n backgroundAudioId: null,\r\n playerVolume: 0.5,\r\n showVolume: false,\r\n backgroundAudioPlaying: false,\r\n }),\r\n components: {\r\n Marzipano,\r\n MarzipanoRectHotspot,\r\n MarzipanoBubbleHotspot,\r\n PanoramaInstructions,\r\n // StreamfieldBlock,\r\n PageShortcutBlock,\r\n PageHeaderCard,\r\n FocusLoop,\r\n },\r\n created() {\r\n this.$root.$refs.engagementRoom = this;\r\n },\r\n mounted: function () {\r\n if (\r\n this.pageData.background_audio &&\r\n this.pageData.background_audio.length\r\n ) {\r\n this.backgroundAudio = new Howl({\r\n src: [this.pageData.background_audio[0].value.audio.file],\r\n autoplay: true,\r\n loop: true,\r\n volume: this.playerVolume,\r\n });\r\n this.backgroundAudioId = this.backgroundAudio.play();\r\n this.backgroundAudio.mute(true, this.backgroundAudioId);\r\n }\r\n\r\n\r\n //If we're not loading the root engagement room, hide the landing page\r\n if (!this.isRootPage()) this.showLanding = false;\r\n //check the current status of accessibility mode\r\n\r\n if (this.pageData.landing_shortcuts.length >= 1) {\r\n this.showLanding = true;\r\n } else {\r\n this.showLanding = false;\r\n\r\n // Still show the instructions even when there is no landing streamfield\r\n this.displayInstructions()\r\n }\r\n\r\n\r\n\r\n // Saves popup state to popup landing\r\n if (sessionStorage.getItem(\"showLanding\") == \"false\") {\r\n this.showLanding = false;\r\n } else if (this.pageData.landing_shortcuts.length >= 1)\r\n this.showLanding = true;\r\n },\r\n\r\n computed: {\r\n lightboxContent() {\r\n if (this.$store.state.wagtail.currentPopup === undefined) return [];\r\n else return this.$store.state.wagtail.currentPopup.content;\r\n },\r\n tileUrl() {\r\n return this.pageData.panorama.tiles.split(\"?\")[0];\r\n },\r\n currentPath() {\r\n return this.$route.path;\r\n },\r\n sasKey() {\r\n return this.pageData.panorama.sas_key;\r\n },\r\n siteStructure() {\r\n let siteStructure = [];\r\n for (const item of this.$store.state.wagtail.siteStructure) {\r\n //TODO: Unsure how reliable this is. Looks at the URL to calculate depth by counting slashes in the URL\r\n item.depth = item.meta.html_url.split(\"/\").length - 4;\r\n let url = new URL(item.meta.html_url);\r\n item.pathname = url.pathname;\r\n item.menutitle = Array(item.depth + 1).join(\" -\") + \" \" + item.title;\r\n siteStructure.push(item);\r\n }\r\n return siteStructure;\r\n },\r\n secondaryLogo() {\r\n return this.$store.state.wagtail.siteSettings.secondary_logo;\r\n },\r\n minYaw() {\r\n if (this.pageData.panorama.min_yaw !== undefined)\r\n return this.pageData.panorama.min_yaw;\r\n return -181;\r\n },\r\n maxYaw() {\r\n if (this.pageData.panorama.max_yaw !== undefined)\r\n return this.pageData.panorama.max_yaw;\r\n return 181;\r\n },\r\n rectConfigEnabled() {\r\n return this.pageData.title === \"panoconfig\";\r\n },\r\n accessibilityMode() {\r\n return this.$store.state.wagtail.accessibilityMode;\r\n },\r\n islightboxActive() {\r\n if (this.$store.state.lightbox.lightboxObjects.length == 0) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n },\r\n },\r\n methods: {\r\n handleBackgroundAudio() {\r\n if (!this.backgroundAudioPlaying) this.backgroundAudioPlaying = true;\r\n this.playerVolume = 0.5;\r\n this.volumeOn = !this.volumeOn;\r\n this.backgroundAudio.mute(!this.volumeOn, this.backgroundAudioId);\r\n },\r\n welcomeOpened() {\r\n this.$emit(\"showLanding\");\r\n },\r\n onFocus() {\r\n this.isMoving = true;\r\n },\r\n getChildTitle(child) {\r\n if (child.icon_only) return \"\";\r\n return child.title;\r\n },\r\n getAriaLabel(child) {\r\n if (child.accessible_label) {\r\n return child.accessible_label;\r\n } else {\r\n return child.title;\r\n }\r\n },\r\n panoLoaded(scene) {\r\n this.scene = scene;\r\n this.checkZoomToChild();\r\n },\r\n welcomeClosed() {\r\n this.showLanding = false;\r\n this.displayInstructions();\r\n if (this.accessibilityMode == true) {\r\n this.accessibilityModalFlag = true;\r\n } else {\r\n this.accessibilityModalFlag == false;\r\n }\r\n },\r\n displayInstructions() {\r\n this.showInstructions = true;\r\n this.instructionsShown = true;\r\n let self = this;\r\n setTimeout(function () {\r\n self.showInstructions = false;\r\n self.autoRotate = true;\r\n }, 3000);\r\n },\r\n clickChild(child) {\r\n //Track which hotspot or accessibility menu item has been most recently clicked. used later to return forcus to the right place.\r\n let currentUILocation = document.activeElement;\r\n if (\r\n currentUILocation.id == document.querySelectorAll(\"#hotspot-img\")[0].id\r\n ) {\r\n this.currentActiveHotspot = currentUILocation;\r\n this.isMouseControl = false;\r\n } else if (currentUILocation.classList[0] == \"v-image\") {\r\n //reset focus location storage if mouse is used.\r\n this.currentActiveHotspot = undefined;\r\n this.currentActiveAccessibilityMenuItem = undefined;\r\n this.isMouseControl = true;\r\n } else if (currentUILocation.classList[0] == \"accessibility-btn\") {\r\n this.currentActiveAccessibilityMenuItem = currentUILocation;\r\n this.isMouseControl = false;\r\n } else {\r\n console.log(\r\n \"Opening lightbox NO MATCH, new access method detected. update focus tracking script\"\r\n );\r\n }\r\n\r\n //track previous camera position and hide the accessibility menu before opening the hotspot lightbox\r\n\r\n this.lastYaw = this.scene.view().yaw();\r\n this.lastPitch = this.scene.view().pitch();\r\n this.lastFov = this.scene.view().fov();\r\n this.useLastLocation = true;\r\n\r\n //Open URL\r\n this.$router.push(new URL(child.html_url).pathname);\r\n },\r\n\r\n getLightboxData(child) {\r\n let id = child.id;\r\n let zoomData = child.position_data;\r\n this.lightboxReady = false;\r\n //TODO: I don't like using the store for this - should call the API service directly\r\n this.$store.dispatch(\"wagtail/getPopup\", id);\r\n\r\n var destinationViewParameters = {\r\n yaw: zoomData.yaw,\r\n pitch: zoomData.pitch,\r\n fov: (40 * Math.PI) / 180,\r\n };\r\n\r\n var options = {\r\n transitionDuration: 1500,\r\n };\r\n\r\n this.scene.lookTo(destinationViewParameters, options);\r\n // Might be useful chose not to remove\r\n //Resetting Window, body and panorama scroll location to zero to counteract marzipano bug that moves the viewport offscreen\r\n // window.scrollTo(0, 0);\r\n // var bodyElement = document.querySelector(\"body\");\r\n // bodyElement.scroll(0, 0);\r\n\r\n var panoramas = document.getElementsByClassName(\"panorama\");\r\n for (let i = 0; i < panoramas.length; i++) {\r\n panoramas[i].scroll(0, 0);\r\n console.log(\"Pano \" + i + \" scrolling\");\r\n }\r\n\r\n let self = this;\r\n window.setTimeout(function () {\r\n self.lightboxReady = true;\r\n self.lightbox2Active = true;\r\n }, 1250);\r\n },\r\n\r\n closeLightbox() {\r\n //Updates trackers for hotspot status and reopens the accessibility menu if in accessibility mode.\r\n //this.lightboxActive = false;\r\n\r\n this.$router.push(new URL(this.pageData.meta.html_url).pathname);\r\n\r\n this.$store.commit(\"wagtail/getPopupSuccess\", undefined);\r\n //Tracks that the camera is moving so that keyboard controls cannot override transition animation\r\n this.isMoving = true;\r\n\r\n // If we've flagged to use the last location, use it and clear the flag\r\n if (this.useLastLocation === true) {\r\n destinationViewParameters = {\r\n yaw: this.lastYaw,\r\n pitch: this.lastPitch,\r\n fov: this.lastFov,\r\n };\r\n this.useLastLocation = false;\r\n } else {\r\n var destinationViewParameters = {\r\n yaw: this.scene.view().yaw(),\r\n pitch: 0.0,\r\n fov: (60 * Math.PI) / 180,\r\n };\r\n }\r\n\r\n var options = {\r\n transitionDuration: this.movementSpeed,\r\n };\r\n\r\n // Display the instructions if they've not been displayed before\r\n // This is to handle use cases where a user has navigated straight\r\n // to some lightbox content, and hasn't come via the traditional entry point\r\n\r\n if (this.instructionsShown === false) this.displayInstructions();\r\n this.scene.lookTo(destinationViewParameters, options);\r\n\r\n //Resetting Window, body and panorama scroll location to zero to counteract marzipano bug that moves the viewport offscreen\r\n // window.scrollTo(0, 0);\r\n // var bodyElement = document.querySelector(\"body\");\r\n // bodyElement.scroll(0, 0);\r\n var panoramas = document.getElementsByClassName(\"panorama\");\r\n for (let i = 0; i < panoramas.length; i++) {\r\n panoramas[i].scroll(0, 0);\r\n console.log(\"Pano \" + i + \" scrolling\");\r\n }\r\n\r\n //use stored values to return focus to the correct previous location in virtual room or accessibility menu\r\n const elements = document.querySelectorAll(\"#hotspot-img\");\r\n\r\n if (\r\n this.currentActiveHotspot != undefined &&\r\n this.accessibilityMode == false\r\n ) {\r\n // Moves focus to previous hotspot location in virtual room\r\n this.currentActiveHotspot.focus();\r\n } else {\r\n if (this.accessibilityMode == false) {\r\n //Moves focus Back to the first hotspot if not using a mouse\"\r\n if (this.isMouseControl == false) {\r\n elements[0].focus();\r\n }\r\n } else {\r\n if (this.currentActiveAccessibilityMenuItem != undefined) {\r\n //Moves focus Back to the previous accessibility menu item\r\n this.$nextTick(() => {\r\n this.currentActiveAccessibilityMenuItem.focus();\r\n });\r\n }\r\n }\r\n }\r\n },\r\n\r\n checkZoomToChild() {\r\n let currPath = window.location.pathname;\r\n let pagePath = new URL(this.pageData.meta.html_url).pathname;\r\n\r\n //If we're not on the root page\r\n if (pagePath !== undefined && currPath !== undefined) {\r\n pagePath = pagePath.trimRight(\"/\");\r\n currPath = currPath.trimRight(\"/\");\r\n\r\n // If the requested path is not the same as the current page path, then we may be requesting a child object\r\n if (pagePath !== currPath) {\r\n // Search the children for a valid child\r\n for (let child of this.pageData.child_content) {\r\n let childPath = new URL(child.html_url).pathname;\r\n if (childPath !== undefined) {\r\n console.log(childPath, \"child path from EngagementRoom\");\r\n childPath = childPath.trimRight(\"/\");\r\n\r\n // We've found the right child, let's zoom to it and open the lightbox\r\n if (childPath === currPath) {\r\n this.getLightboxData(child);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n if (\r\n this.pageData.panorama_child_content !== undefined &&\r\n this.pageData.panorama_child_content !== null\r\n ) {\r\n for (let anotherChild of this.pageData.panorama_child_content) {\r\n let anotherChildPath = new URL(anotherChild.html_url).pathname;\r\n if (anotherChildPath !== undefined) {\r\n anotherChildPath = anotherChildPath.trimRight(\"/\");\r\n console.log(anotherChildPath, \"child path from EngagementRoom\");\r\n if (anotherChildPath === currPath) {\r\n this.getLightboxData(anotherChild);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n if (\r\n this.pageData.chat_bubble_content !== undefined &&\r\n this.pageData.chat_bubble_content !== null\r\n ) {\r\n for (let anotherChild of this.pageData.chat_bubble_content) {\r\n let anotherChildPath = new URL(anotherChild.html_url).pathname;\r\n if (anotherChildPath !== undefined) {\r\n anotherChildPath = anotherChildPath.trimRight(\"/\");\r\n console.log(anotherChildPath, \"child path from EngagementRoom\");\r\n if (anotherChildPath === currPath) {\r\n this.getLightboxData(anotherChild);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // TODO: if we don't find a valid child, reset the scene or reload the page...\r\n },\r\n isRootPage() {\r\n let currPath = this.currentPath;\r\n let pagePath = new URL(this.pageData.meta.html_url).pathname;\r\n if (currPath === pagePath) return true;\r\n return false;\r\n },\r\n shortcutClicked(url) {\r\n //When we click a shortcut, we either route to that page, or if the shortcut is the current page we close the dialog\r\n let pagePath = new URL(url).pathname;\r\n let currPath = this.currentPath;\r\n\r\n if (currPath === pagePath) this.welcomeClosed();\r\n else this.$router.push(pagePath);\r\n\r\n const firstFocusableElement =\r\n document.querySelectorAll(\"#hotspot-img\")[0];\r\n firstFocusableElement.focus();\r\n },\r\n lookTo() {\r\n this.consoleYaw = this.formYaw;\r\n this.consolePitch = this.formPitch;\r\n this.$refs.Marzipano.lookToConsole(this.consoleYaw, this.consolePitch);\r\n },\r\n accesibilityFlag() {\r\n return (this.accesibilityMode = true);\r\n },\r\n closeAccessibilityLightbox() {\r\n this.accessibilityFlag = false;\r\n this.accessibilityModalFlag = false;\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityFlag,\r\n { root: true }\r\n );\r\n localStorage.setItem(\"accessibilityModeState\", false);\r\n this.$emit(\"closeAccessibility\");\r\n },\r\n accessibilityFlagChecker() {\r\n if (localStorage.getItem(\"accessibilityModeState\") == \"true\") {\r\n this.accessibilityModalFlag = true;\r\n this.accessibilityFlag = true;\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityModalFlag,\r\n { root: true }\r\n );\r\n console.log(\"ACCESS STATE TRUE\");\r\n } else {\r\n this.accessibilityModalFlag = false;\r\n this.accessibilityFlag = false;\r\n console.log(\"ACCESS STATE FALSE\");\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityModalFlag,\r\n { root: true }\r\n );\r\n }\r\n },\r\n },\r\n watch: {\r\n playerVolume() {\r\n this.backgroundAudio.volume(this.playerVolume);\r\n },\r\n accessibilityStream(val) {\r\n this.accessibilityModalFlag = !val;\r\n this.accessibilityFlag = !val;\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityModalFlag,\r\n { root: true }\r\n );\r\n },\r\n showLanding(val) {\r\n console.log(val, \"showlanding\");\r\n },\r\n isMoving() {\r\n //Resetting Window, body and panorama scroll location to zero to counteract marzipano bug that moves the viewport offscreen\r\n // window.scrollTo(0, 0);\r\n // var bodyElement = document.querySelector(\"body\");\r\n // bodyElement.scroll(0, 0);\r\n var panoramas = document.getElementsByClassName(\"panorama\");\r\n for (let i = 0; i < panoramas.length; i++) {\r\n panoramas[i].scroll(0, 0);\r\n console.log(\"Pano \" + i + \" scrolling\");\r\n }\r\n\r\n if (\"activeElement\" in document) {\r\n const elements = document.querySelectorAll(\"#hotspot-img\");\r\n if (document.activeElement.id == elements[0].id) {\r\n this.currentActiveHotspot = document.activeElement;\r\n }\r\n }\r\n if (this.isMoving) {\r\n arrowKeyNavigation.unregister();\r\n window.onkeydown = () => false;\r\n window.setTimeout(() => {\r\n this.isMoving = false;\r\n }, this.movementSpeed);\r\n } else {\r\n arrowKeyNavigation.register();\r\n window.onkeydown = () => true;\r\n\r\n //Resetting Window, body and panorama scroll location to zero to counteract marzipano bug that moves the viewport offscreen\r\n // window.scrollTo(0, 0);\r\n // var bodyElement = document.querySelector(\"body\");\r\n // bodyElement.scroll(0, 0);\r\n for (let i = 0; i < panoramas.length; i++) {\r\n panoramas[i].scroll(0, 0);\r\n console.log(\"Pano \" + i + \" scrolling\");\r\n }\r\n }\r\n },\r\n accessibilityMode(newValue) {\r\n if (newValue == true) {\r\n this.accessibilityModalFlag = true;\r\n this.accessibilityFlag = true;\r\n localStorage.setItem(\"accessibilityModeState\", true);\r\n } else {\r\n this.accessibilityModalFlag = false;\r\n this.accessibilityFlag = false;\r\n const elements = document.querySelectorAll(\"#hotspot-img\");\r\n localStorage.setItem(\"accessibilityModeState\", false);\r\n this.$nextTick(() => {\r\n elements[0].focus();\r\n });\r\n }\r\n },\r\n currentPath() {\r\n this.checkZoomToChild();\r\n //Hide the landing page if the path has changed\r\n if (!this.isRootPage() && this.showLanding) this.showLanding = false;\r\n },\r\n islightboxActive() {\r\n if (this.islightboxActive == false) {\r\n if (this.accessibilityMode == true) {\r\n this.accessibilityModalFlag = true;\r\n } else {\r\n this.accessibilityModalFlag = false;\r\n }\r\n } else {\r\n this.accesibilityModal = false;\r\n }\r\n },\r\n lightboxContent(res) {\r\n console.log(\r\n \"current popup val changed\",\r\n this.$store.state.wagtail.currentPopup,\r\n res\r\n );\r\n },\r\n lightboxReady(res) {\r\n console.log(\"lightbox ready\", res);\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.audio-row {\r\n position: relative;\r\n}\r\n.volume-slider {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n}\r\n.map-sidebar {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n /* width: 344px; */\r\n width: 500px;\r\n height: 100%;\r\n}\r\n\r\n.map {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n height: 100%;\r\n}\r\n\r\n.map-legend {\r\n display: none;\r\n}\r\n\r\nhtml {\r\n overflow: hidden !important;\r\n}\r\n\r\n.ignore-mouse {\r\n pointer-events: none !important;\r\n}\r\n\r\n.use-mouse {\r\n pointer-events: all;\r\n}\r\n\r\n.panorama {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n}\r\n\r\n.button-panel {\r\n position: absolute;\r\n top: 0px;\r\n right: 0px;\r\n}\r\n\r\n.attribution-panel {\r\n position: absolute;\r\n bottom: 0px;\r\n left: 0px;\r\n}\r\n\r\n@media (max-width: 600px) {\r\n .button-panel {\r\n bottom: 0px;\r\n }\r\n}\r\n\r\n.secondary-logo-panel {\r\n position: absolute;\r\n bottom: 0px;\r\n right: 0px;\r\n max-height: 96px;\r\n}\r\n\r\n.lightbox-btn:focus-visible {\r\n outline: 4px dashed darkorange;\r\n}\r\n.accessibility-btn:focus-visible {\r\n outline: 4px dashed darkorange;\r\n}\r\n\r\n.accessibility-header {\r\n background-color: black;\r\n color: white;\r\n}\r\n::v-deep .accessibility-lightbox {\r\n min-width: 300px;\r\n width: 25vw;\r\n &.v-dialog:not(.v-dialog--fullscreen) {\r\n max-height: 70%;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EngagementRoom.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EngagementRoom.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EngagementRoom.vue?vue&type=template&id=88c4c778&scoped=true&\"\nimport script from \"./EngagementRoom.vue?vue&type=script&lang=js&\"\nexport * from \"./EngagementRoom.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EngagementRoom.vue?vue&type=style&index=0&id=88c4c778&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"88c4c778\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.showHeader)?_c('PageHeaderCard',{staticClass:\"map-header\",attrs:{\"transparent\":false}}):_vm._e(),_vm._l((_vm.pageData.header),function(block,i){return _c('StreamfieldBlock',{key:i,attrs:{\"block\":block,\"headerTitle\":_vm.pageData.title}})}),_c('v-container',{staticClass:\"pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.pageData.content),function(block,i){return _c('StreamfieldBlock',{key:i,attrs:{\"block\":block}})}),1),(_vm.hasAccessibleModal)?_c('v-dialog',{ref:\"accessibilityLightbox\",attrs:{\"content-class\":\"accessibility-lightbox\",\"persistent\":\"\",\"scrollable\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(dialog){return [_c('v-card',{attrs:{\"height\":\"100%\"}},[_c('FocusLoop',{attrs:{\"is-visible\":_vm.activeTrap}},[_c('v-card-title',{staticClass:\"text-h5 accessibility-header lighten-2\"},[_vm._v(\" Accessibility Mode \")]),_c('v-tabs',{attrs:{\"show-arrows\":\"\"}},[_c('v-tab',[_vm._v(\"Accessibility Mode\")]),_c('v-tab-item',[_c('div',{staticClass:\"pa-5\"},[_vm._v(\" You have enabled Accessibility Mode, this mode enables additional accessibility features throughout the site including: \"),_c('ul',[_c('li',[_vm._v(\"Text Alternatives\")]),_c('li',[_vm._v(\"Audio Descriptions\")]),_c('li',[_vm._v(\"Alternative Navigation/interactivity Options\")])])])]),_c('v-tab',[_vm._v(\"Site Navigation \")]),_c('v-tab-item',_vm._l((_vm.siteStructure),function(menuItem,i){return _c('v-list-item',{key:i,attrs:{\"to\":menuItem.pathname,\"link\":\"\"}},[_c('v-list-item-icon',{staticClass:\"mr-4\"},[_c('v-icon',[_vm._v(_vm._s(menuItem.menu_icon))])],1),_c('v-list-item-title',[_vm._v(_vm._s(menuItem.title))])],1)}),1)],1),_c('v-divider'),_c('v-btn',{staticClass:\"accessibility-btn close-accessibility-btn\",on:{\"click\":function($event){_vm.closeAccessibilityLightbox(), (dialog.value = false)}}},[_vm._v(\"Close\")])],1)],1)]}}],null,false,3244347850),model:{value:(_vm.accessibilityModalFlag),callback:function ($$v) {_vm.accessibilityModalFlag=$$v},expression:\"accessibilityModalFlag\"}}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <PageHeaderCard v-if=\"showHeader\" :transparent=\"false\" class=\"map-header\">\r\n </PageHeaderCard>\r\n\r\n <!-- Page Header -->\r\n <StreamfieldBlock\r\n v-for=\"(block, i) in pageData.header\"\r\n :key=\"i\"\r\n :block=\"block\"\r\n :headerTitle=\"pageData.title\"\r\n />\r\n\r\n <!-- Page Content -->\r\n <v-container class=\"pa-0\" fluid>\r\n <StreamfieldBlock\r\n v-for=\"(block, i) in pageData.content\"\r\n :key=\"i\"\r\n :block=\"block\"\r\n />\r\n </v-container>\r\n\r\n <v-dialog\r\n v-if=\"hasAccessibleModal\"\r\n content-class=\"accessibility-lightbox\"\r\n persistent\r\n scrollable\r\n v-model=\"accessibilityModalFlag\"\r\n ref=\"accessibilityLightbox\"\r\n >\r\n <template v-slot:default=\"dialog\">\r\n <v-card height=\"100%\">\r\n <FocusLoop :is-visible=\"activeTrap\">\r\n <v-card-title class=\"text-h5 accessibility-header lighten-2\">\r\n Accessibility Mode\r\n </v-card-title>\r\n <v-tabs show-arrows>\r\n <v-tab>Accessibility Mode</v-tab>\r\n <v-tab-item >\r\n <div class=\"pa-5\">\r\n You have enabled Accessibility Mode, this mode enables\r\n additional accessibility features throughout the site including:\r\n <ul>\r\n <li>Text Alternatives</li>\r\n\r\n <li>Audio Descriptions</li>\r\n\r\n <li>Alternative Navigation/interactivity Options</li>\r\n </ul>\r\n </div>\r\n </v-tab-item>\r\n <v-tab>Site Navigation </v-tab>\r\n <v-tab-item>\r\n <v-list-item\r\n v-for=\"(menuItem, i) in siteStructure\"\r\n :key=\"i\"\r\n :to=\"menuItem.pathname\"\r\n link\r\n >\r\n <v-list-item-icon class=\"mr-4\">\r\n <v-icon>{{ menuItem.menu_icon }}</v-icon>\r\n </v-list-item-icon>\r\n <v-list-item-title>{{ menuItem.title }}</v-list-item-title>\r\n </v-list-item></v-tab-item\r\n >\r\n </v-tabs>\r\n <v-divider></v-divider>\r\n <v-btn\r\n class=\"accessibility-btn close-accessibility-btn\"\r\n @click=\"closeAccessibilityLightbox(), (dialog.value = false)\"\r\n >Close</v-btn\r\n >\r\n </FocusLoop>\r\n </v-card>\r\n </template>\r\n </v-dialog>\r\n\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\n// import StreamfieldBlock from \"../../components/blocks/streamfieldBlock.vue\";\r\nimport PageHeaderCard from \"../../components/page/pageHeaderCard.vue\";\r\nimport { FocusLoop } from \"@vue-a11y/focus-loop\";\r\nimport * as arrowKeyNavigation from \"arrow-key-navigation\";\r\n//enables next & previous tab style DOM navigation using arrow keys\r\narrowKeyNavigation.register();\r\n\r\nexport default {\r\n name: \"WebPage\",\r\n props: {\r\n pageData: Object,\r\n pageChildren: Array,\r\n showTitle: { type: Boolean, default: true },\r\n showHeader: { type: Boolean, default: true },\r\n hasAccessibleModal: { type: Boolean, default: true },\r\n },\r\n components: { PageHeaderCard, FocusLoop },\r\n data: () => ({\r\n showLanding: Boolean,\r\n accessibilityModalFlag: false,\r\n accessibilityFlag: false,\r\n accesibilityModal: false,\r\n activeTrap: true,\r\n }),\r\n\r\n\r\n mounted() {\r\n\r\n\r\n this.accessibilityFlagChecker();\r\n\r\n if (sessionStorage.getItem(\"showLanding\") == \"false\") {\r\n this.showLanding = false;\r\n } else if (this.pageData.landing_shortcuts.length >= 1)\r\n this.showLanding = true;\r\n console.log(this.pageData, this.showLanding, \"page data from webpage\");\r\n \r\n },\r\n computed: {\r\n accessibilityMode() {\r\n return this.$store.state.wagtail.accessibilityMode;\r\n },\r\n islightboxActive() {\r\n if (this.$store.state.lightbox.lightboxObjects.length == 0) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n },\r\n siteStructure() {\r\n let siteStructure = [];\r\n for (const item of this.$store.state.wagtail.siteStructure) {\r\n //TODO: Unsure how reliable this is. Looks at the URL to calculate depth by counting slashes in the URL\r\n item.depth = item.meta.html_url.split(\"/\").length - 4;\r\n let url = new URL(item.meta.html_url);\r\n item.pathname = url.pathname;\r\n item.menutitle = Array(item.depth + 1).join(\" -\") + \" \" + item.title;\r\n siteStructure.push(item);\r\n }\r\n\r\n return siteStructure;\r\n },\r\n },\r\n methods: {\r\n closeAccessibilityLightbox() {\r\n this.accessibilityFlag = false;\r\n this.accessibilityModalFlag = false;\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityFlag,\r\n { root: true }\r\n );\r\n localStorage.setItem(\"accessibilityModeState\", false);\r\n },\r\n accessibilityFlagChecker() {\r\n if (localStorage.getItem(\"accessibilityModeState\") == \"true\" || this.accessibilityModalFlag == true) {\r\n this.accessibilityModalFlag = true;\r\n this.accessibilityFlag = true;\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityModalFlag,\r\n { root: true }\r\n );\r\n console.log(\"ACCESS STATE TRUE\");\r\n } else {\r\n this.accessibilityModalFlag = false;\r\n this.accessibilityFlag = false;\r\n console.log(\"ACCESS STATE FALSE\");\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityModalFlag,\r\n { root: true }\r\n );\r\n }\r\n },\r\n\r\n },\r\n watch: {\r\n accessibilityMode(newValue) {\r\n if (newValue == true) {\r\n this.accessibilityModalFlag = true;\r\n this.accessibilityFlag = true;\r\n localStorage.setItem(\"accessibilityModeState\", true);\r\n } \r\n }\r\n }\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n\r\n::v-deep .accessibility-lightbox {\r\n min-width: 300px;\r\n width: 25vw;\r\n &.v-dialog:not(.v-dialog--fullscreen) {\r\n max-height: 70%;\r\n }\r\n\r\n .accessibility-header {\r\n background-color: black;\r\n color: white;\r\n}\r\n}\r\n\r\n.canvas-360time{\r\n height: 750px;\r\n width: 750px;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WebPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WebPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WebPage.vue?vue&type=template&id=96e0edc2&scoped=true&\"\nimport script from \"./WebPage.vue?vue&type=script&lang=js&\"\nexport * from \"./WebPage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./WebPage.vue?vue&type=style&index=0&id=96e0edc2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"96e0edc2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.showHeader)?_c('PageHeaderCard',{staticClass:\"map-header\",attrs:{\"transparent\":false}}):_vm._e(),_c('v-container',[(_vm.showTitle)?_c('v-row',[_c('v-col',[_c('h1',{staticClass:\"pb-4\"},[_vm._v(_vm._s(_vm.pageData.title))])])],1):_vm._e(),_vm._l((_vm.pageData.content),function(block,i){return _c('StreamfieldBlock',{key:i,attrs:{\"block\":block}})})],2),(_vm.hasAccessibleModal)?_c('v-dialog',{ref:\"accessibilityLightbox\",attrs:{\"content-class\":\"accessibility-lightbox\",\"persistent\":\"\",\"scrollable\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(dialog){return [_c('v-card',{attrs:{\"height\":\"100%\"}},[_c('FocusLoop',{attrs:{\"is-visible\":_vm.activeTrap}},[_c('v-card-title',{staticClass:\"text-h5 accessibility-header lighten-2\"},[_vm._v(\" Accessibility Mode \")]),_c('v-tabs',{attrs:{\"show-arrows\":\"\"}},[_c('v-tab',[_vm._v(\"Accessibility Mode\")]),_c('v-tab-item',[_c('div',{staticClass:\"pa-5\"},[_vm._v(\" You have enabled Accessibility Mode, this mode enables additional accessibility features throughout the site including: \"),_c('ul',[_c('li',[_vm._v(\"Text Alternatives\")]),_c('li',[_vm._v(\"Audio Descriptions\")]),_c('li',[_vm._v(\"Alternative Navigation/interactivity Options\")])])])]),_c('v-tab',[_vm._v(\"Site Navigation \")]),_c('v-tab-item',_vm._l((_vm.siteStructure),function(menuItem,i){return _c('v-list-item',{key:i,attrs:{\"to\":menuItem.pathname,\"link\":\"\"}},[_c('v-list-item-icon',{staticClass:\"mr-4\"},[_c('v-icon',[_vm._v(_vm._s(menuItem.menu_icon))])],1),_c('v-list-item-title',[_vm._v(_vm._s(menuItem.title))])],1)}),1)],1),_c('v-divider'),_c('v-btn',{staticClass:\"accessibility-btn close-accessibility-btn\",on:{\"click\":function($event){_vm.closeAccessibilityLightbox(), (dialog.value = false)}}},[_vm._v(\"Close\")])],1)],1)]}}],null,false,3244347850),model:{value:(_vm.accessibilityModalFlag),callback:function ($$v) {_vm.accessibilityModalFlag=$$v},expression:\"accessibilityModalFlag\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <PageHeaderCard v-if=\"showHeader\" :transparent=\"false\" class=\"map-header\">\r\n </PageHeaderCard>\r\n <v-container>\r\n <v-row v-if=\"showTitle\">\r\n <v-col>\r\n <h1 class=\"pb-4\">{{ pageData.title }}</h1>\r\n </v-col>\r\n </v-row>\r\n <StreamfieldBlock\r\n v-for=\"(block, i) in pageData.content\"\r\n :key=\"i\"\r\n :block=\"block\"\r\n />\r\n </v-container>\r\n\r\n <v-dialog\r\n v-if=\"hasAccessibleModal\"\r\n content-class=\"accessibility-lightbox\"\r\n persistent\r\n scrollable\r\n v-model=\"accessibilityModalFlag\"\r\n ref=\"accessibilityLightbox\"\r\n >\r\n <template v-slot:default=\"dialog\">\r\n <v-card height=\"100%\">\r\n <FocusLoop :is-visible=\"activeTrap\">\r\n <v-card-title class=\"text-h5 accessibility-header lighten-2\">\r\n Accessibility Mode\r\n </v-card-title>\r\n <v-tabs show-arrows>\r\n <v-tab>Accessibility Mode</v-tab>\r\n <v-tab-item>\r\n <div class=\"pa-5\">\r\n You have enabled Accessibility Mode, this mode enables\r\n additional accessibility features throughout the site including:\r\n <ul>\r\n <li>Text Alternatives</li>\r\n\r\n <li>Audio Descriptions</li>\r\n\r\n <li>Alternative Navigation/interactivity Options</li>\r\n </ul>\r\n </div>\r\n </v-tab-item>\r\n <v-tab>Site Navigation </v-tab>\r\n <v-tab-item >\r\n <v-list-item\r\n v-for=\"(menuItem, i) in siteStructure\"\r\n :key=\"i\"\r\n :to=\"menuItem.pathname\"\r\n link\r\n >\r\n <v-list-item-icon class=\"mr-4\">\r\n <v-icon>{{ menuItem.menu_icon }}</v-icon>\r\n </v-list-item-icon>\r\n <v-list-item-title>{{ menuItem.title }}</v-list-item-title>\r\n </v-list-item></v-tab-item\r\n >\r\n </v-tabs>\r\n <v-divider></v-divider>\r\n <v-btn\r\n class=\"accessibility-btn close-accessibility-btn\"\r\n @click=\"closeAccessibilityLightbox(), (dialog.value = false)\"\r\n >Close</v-btn\r\n >\r\n </FocusLoop>\r\n </v-card>\r\n </template>\r\n </v-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport StreamfieldBlock from \"../../components/blocks/streamfieldBlock.vue\";\r\nimport PageHeaderCard from \"../../components/page/pageHeaderCard.vue\";\r\n\r\nexport default {\r\n name: \"WebPageLegacy\",\r\n props: {\r\n pageData: Object,\r\n pageChildren: Array,\r\n showTitle: { type: Boolean, default: true },\r\n showHeader: { type: Boolean, default: true },\r\n hasAccessibleModal: { type: Boolean, default: true },\r\n },\r\n components: { StreamfieldBlock: StreamfieldBlock, PageHeaderCard },\r\n data: () => ({\r\n showLanding: Boolean,\r\n accessibilityModalFlag: false,\r\n accessibilityFlag: false,\r\n accesibilityModal: false,\r\n activeTrap: true,\r\n }),\r\n mounted() {\r\n this.accessibilityFlagChecker();\r\n // if (this.pageData.landing_streamfield.length >= 1 ){\r\n // this.$refs.landing.welcomeOpen();\r\n // }else this.$refs.landing.welcomeClosed();\r\n console.log(this.pageData, this.showLanding, \"page data from webpage\");\r\n },\r\n computed: {\r\n accessibilityMode() {\r\n return this.$store.state.wagtail.accessibilityMode;\r\n },\r\n islightboxActive() {\r\n if (this.$store.state.lightbox.lightboxObjects.length == 0) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n },\r\n siteStructure() {\r\n let siteStructure = [];\r\n for (const item of this.$store.state.wagtail.siteStructure) {\r\n //TODO: Unsure how reliable this is. Looks at the URL to calculate depth by counting slashes in the URL\r\n item.depth = item.meta.html_url.split(\"/\").length - 4;\r\n let url = new URL(item.meta.html_url);\r\n item.pathname = url.pathname;\r\n item.menutitle = Array(item.depth + 1).join(\" -\") + \" \" + item.title;\r\n siteStructure.push(item);\r\n }\r\n\r\n return siteStructure;\r\n },\r\n },\r\n methods: {\r\n closeAccessibilityLightbox() {\r\n this.accessibilityFlag = false;\r\n this.accessibilityModalFlag = false;\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityFlag,\r\n { root: true }\r\n );\r\n localStorage.setItem(\"accessibilityModeState\", false);\r\n },\r\n accessibilityFlagChecker() {\r\n if (\r\n localStorage.getItem(\"accessibilityModeState\") == \"true\" ||\r\n this.accessibilityModalFlag == true\r\n ) {\r\n this.accessibilityModalFlag = true;\r\n this.accessibilityFlag = true;\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityModalFlag,\r\n { root: true }\r\n );\r\n console.log(\"ACCESS STATE TRUE\");\r\n } else {\r\n this.accessibilityModalFlag = false;\r\n this.accessibilityFlag = false;\r\n console.log(\"ACCESS STATE FALSE\");\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityModalFlag,\r\n { root: true }\r\n );\r\n }\r\n },\r\n },\r\n watch: {\r\n accessibilityMode(newValue) {\r\n if (newValue == true) {\r\n this.accessibilityModalFlag = true;\r\n this.accessibilityFlag = true;\r\n localStorage.setItem(\"accessibilityModeState\", true);\r\n }\r\n // else {\r\n // this.accessibilityModalFlag = false;\r\n // this.accessibilityFlag = false;\r\n // const elements = document.querySelectorAll(\"#hotspot-img\");\r\n // localStorage.setItem(\"accessibilityModeState\", false);\r\n // this.$nextTick(() => {\r\n // elements[0].focus();\r\n // });\r\n // }\r\n },\r\n // islightboxActive() {\r\n // if (this.islightboxActive == false) {\r\n // if (this.accessibilityMode == true) {\r\n // this.accessibilityModalFlag = true;\r\n // } else {\r\n // this.accessibilityModalFlag = false;\r\n // }\r\n // } else {\r\n // this.accesibilityModal = false;\r\n // }\r\n // },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n::v-deep .accessibility-lightbox {\r\n min-width: 300px;\r\n width: 25vw;\r\n &.v-dialog:not(.v-dialog--fullscreen) {\r\n max-height: 70%;\r\n }\r\n \r\n .accessibility-header {\r\n background-color: black;\r\n color: white;\r\n}\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WebPageLegacy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WebPageLegacy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WebPageLegacy.vue?vue&type=template&id=17fab735&scoped=true&\"\nimport script from \"./WebPageLegacy.vue?vue&type=script&lang=js&\"\nexport * from \"./WebPageLegacy.vue?vue&type=script&lang=js&\"\nimport style0 from \"./WebPageLegacy.vue?vue&type=style&index=0&id=17fab735&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17fab735\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-app',{staticClass:\"pl-4 pr-4\",attrs:{\"tabindex\":\"-1\",\"id\":\"inspire\"}},[_c('div',{staticClass:\"engage-header\",attrs:{\"tabindex\":\"-1\"}},[_c('v-navigation-drawer',{attrs:{\"app\":\"\",\"temporary\":\"\",\"value\":_vm.isHomeNavigationDrawerOpen,\"width\":\"300\"},on:{\"input\":function($event){return _vm.TOGGLE_HOME_NAVIGATION_DRAWER(false)}}},[_c('div',{staticClass:\"pl-4 pr-4 primary-logo\",style:({background: _vm.$vuetify.theme.themes.light.primary}),attrs:{\"id\":\"header\",\"role\":\"banner\"}},[(_vm.$store.state.wagtail.siteSettings.primary_logo == null)?_c('v-img',{attrs:{\"width\":\"100%\",\"height\":\"96px\",\"contain\":\"\",\"src\":_vm.$store.state.wagtail.siteSettings.site_logo}}):(_vm.$store.state.wagtail.siteSettings.primary_logo)?_c('v-img',{attrs:{\"width\":\"100%\",\"height\":\"96px\",\"contain\":\"\",\"src\":_vm.$store.state.wagtail.siteSettings.primary_logo}}):_vm._e()],1),_c('div',{staticClass:\"app-menu\",attrs:{\"id\":\"nav\",\"role\":\"navigation\",\"aria-label\":\"Primary\"}},[_c('FocusLoop',{attrs:{\"is-visible\":_vm.activeTrapLB}},[_c('v-list',{ref:\"navigationMenuList\",attrs:{\"nav\":\"\",\"dense\":\"\"}},[_vm._l((_vm.siteStructure),function(menuItem,i){return _c('v-list-item',{key:i,style:(_vm.navStyle(menuItem)),attrs:{\"to\":menuItem.pathname,\"link\":\"\",\"color\":\"secondary\"}},[_c('v-list-item-icon',{staticClass:\"mr-4\"},[_c('v-icon',[_vm._v(_vm._s(menuItem.menu_icon))])],1),_c('v-list-item-title',[_vm._v(_vm._s(menuItem.title))])],1)}),_c('v-list-item',{ref:\"logoutTest\",on:{\"click\":function($event){$event.preventDefault();return _vm.logOut.apply(null, arguments)}}},[_c('v-list-item-icon',{staticClass:\"mr-4\"},[_c('v-icon',[_vm._v(\"mdi-logout\")])],1),_c('v-list-item-title',[_vm._v(\"Logout\")])],1)],2)],1)],1),_c('div',{staticClass:\"pl-4 pr-4 secondary-logo\",style:({background: _vm.$vuetify.theme.themes.light.primary})},[(_vm.$store.state.wagtail.siteSettings.secondary_logo !== null)?_c('v-img',{attrs:{\"width\":\"100%\",\"height\":\"100%\",\"contain\":\"\",\"src\":_vm.$store.state.wagtail.siteSettings.secondary_logo}}):_vm._e()],1)])],1),_c('v-main',{class:_vm.showHeader ? '' : 'pt-0',attrs:{\"id\":\"content\",\"role\":\"main\",\"tabindex\":\"-1\"}},[_c('router-view')],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-app class=\"pl-4 pr-4\" tabindex=\"-1\" id=\"inspire\">\r\n <div class=\"engage-header\" tabindex=\"-1\">\r\n <v-navigation-drawer\r\n app\r\n temporary\r\n :value=\"isHomeNavigationDrawerOpen\"\r\n @input=\"TOGGLE_HOME_NAVIGATION_DRAWER(false)\"\r\n width=\"300\"\r\n >\r\n <div\r\n id=\"header\"\r\n role=\"banner\"\r\n class=\"pl-4 pr-4 primary-logo\"\r\n :style=\"{background: $vuetify.theme.themes.light.primary}\"\r\n >\r\n <v-img\r\n v-if=\"$store.state.wagtail.siteSettings.primary_logo == null\"\r\n width=\"100%\"\r\n height=\"96px\"\r\n contain\r\n :src=\"$store.state.wagtail.siteSettings.site_logo\"\r\n />\r\n <v-img\r\n v-else-if=\"$store.state.wagtail.siteSettings.primary_logo\"\r\n width=\"100%\"\r\n height=\"96px\"\r\n contain\r\n :src=\"$store.state.wagtail.siteSettings.primary_logo\"\r\n />\r\n </div>\r\n <div id=\"nav\" role=\"navigation\" aria-label=\"Primary\" class=\"app-menu\">\r\n <FocusLoop :is-visible=\"activeTrapLB\">\r\n <v-list nav dense ref=\"navigationMenuList\">\r\n <v-list-item\r\n v-for=\"(menuItem, i) in siteStructure\"\r\n :key=\"i\"\r\n :to=\"menuItem.pathname\"\r\n link\r\n :style=\"navStyle(menuItem)\"\r\n color=\"secondary\"\r\n >\r\n <v-list-item-icon class=\"mr-4\">\r\n <v-icon>{{ menuItem.menu_icon }}</v-icon>\r\n </v-list-item-icon>\r\n <v-list-item-title>{{ menuItem.title }}</v-list-item-title>\r\n </v-list-item>\r\n <v-list-item @click.prevent=\"logOut\" ref=\"logoutTest\">\r\n <v-list-item-icon class=\"mr-4\">\r\n <v-icon>mdi-logout</v-icon>\r\n </v-list-item-icon>\r\n <v-list-item-title>Logout</v-list-item-title>\r\n </v-list-item>\r\n </v-list>\r\n </FocusLoop>\r\n </div>\r\n <div\r\n class=\"pl-4 pr-4 secondary-logo\"\r\n :style=\"{background: $vuetify.theme.themes.light.primary}\"\r\n >\r\n <v-img \r\n v-if=\"$store.state.wagtail.siteSettings.secondary_logo !== null\" \r\n width=\"100%\" height=\"100%\" contain \r\n :src=\"$store.state.wagtail.siteSettings.secondary_logo\" \r\n />\r\n </div>\r\n </v-navigation-drawer>\r\n </div>\r\n\r\n <v-main\r\n id=\"content\"\r\n role=\"main\"\r\n tabindex=\"-1\"\r\n :class=\"showHeader ? '' : 'pt-0'\"\r\n >\r\n <router-view> </router-view>\r\n </v-main>\r\n\r\n <!-- <v-footer color=\"primary\" app>\r\n <span class=\"white--text\"\r\n >© {{ new Date().getFullYear() }} - Powered by GHD Engage</span\r\n >\r\n </v-footer> -->\r\n </v-app>\r\n</template>\r\n\r\n<script>\r\nimport { mapState, mapActions } from \"vuex\";\r\nimport { FocusLoop } from \"@vue-a11y/focus-loop\";\r\nimport * as arrowKeyNavigation from \"arrow-key-navigation\";\r\n//enables next & previous tab style DOM navigation using arrow keys\r\narrowKeyNavigation.register();\r\n\r\nexport default {\r\n props: {\r\n source: String,\r\n },\r\n\r\n data: () => ({\r\n drawer: false,\r\n noHeader: true,\r\n customFont: null,\r\n activeTrapLB: false,\r\n loaded: false,\r\n }),\r\n components: { FocusLoop },\r\n\r\n beforeCreate() {\r\n if (!localStorage.getItem(\"accessibilityModeState\")) {\r\n localStorage.setItem(\"accessibilityModeState\", false);\r\n }\r\n },\r\n\r\n mounted() {\r\n\r\n document.addEventListener(\"keydown\", (event) => {\r\n if (event.key === \"Escape\") {\r\n //if esc key was not pressed in combination with ctrl or alt or shift\r\n this.TOGGLE_DRAWER(false);\r\n }\r\n });\r\n\r\n this.$store.dispatch(\"wagtail/getSiteSettings\");\r\n this.$store.dispatch(\"wagtail/getSiteStructure\");\r\n \r\n },\r\n\r\n methods: {\r\n ...mapActions(\"toolbar\", {\r\n TOGGLE_DRAWER: \"TOGGLE_HOME_NAVIGATION_DRAWER\",\r\n }),\r\n\r\n logOut() {\r\n this.$store.dispatch(\"auth/logout\");\r\n this.$router.push(\"/login\");\r\n },\r\n\r\n accessibilityModeActive() {\r\n console.log(\"activated\");\r\n if (this.accessibilityMode == true) {\r\n this.accessibilityFlag = false;\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityFlag,\r\n { root: true }\r\n );\r\n console.log(this.accessibilityFlag, \"access flag\");\r\n } else {\r\n this.accessibilityFlag = true;\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityFlag,\r\n { root: true }\r\n );\r\n console.log(this.accessibilityFlag, \"access flag\");\r\n }\r\n },\r\n navStyle(menuItem) {\r\n let style = \"\";\r\n style += \"padding-left:\" + (16 + 12 * menuItem.depth) + \"px\";\r\n return style;\r\n },\r\n TOGGLE_HOME_NAVIGATION_DRAWER() {\r\n this.drawer = !this.drawer;\r\n console.log(this.drawer);\r\n if (this.drawer) {\r\n console.log(\"SHOW\");\r\n this.activeTrapLB = true;\r\n } else {\r\n console.log(\"HIDE\");\r\n this.activeTrapLB = false;\r\n this.TOGGLE_DRAWER(false);\r\n }\r\n },\r\n updateThemeFromApiResponse(response) {\r\n\r\n if (response.primary_colour !== null) {\r\n this.$vuetify.theme.themes.light.primary = response.primary_colour\r\n }\r\n\r\n if (response.secondary_colour !== null) {\r\n this.$vuetify.theme.themes.light.secondary = response.secondary_colour\r\n }\r\n\r\n if (response.favicon !== null) {\r\n const favicon = document.getElementById(\"favicon\");\r\n favicon.href = response.favicon;\r\n }\r\n \r\n if (response.min_hotspot_size !== null) {\r\n this.$store.dispatch(\r\n \"wagtail/updateMinHotspotSize\",\r\n response.min_hotspot_size\r\n );\r\n }\r\n if (response.max_hotspot_size !== null) {\r\n this.$store.dispatch(\r\n \"wagtail/updateMaxHotspotSize\",\r\n response.max_hotspot_size\r\n );\r\n }\r\n\r\n this.customFont = response.custom_font;\r\n\r\n if (this.customFont !== null) {\r\n\r\n import(\"../public/css/variables.scss\")\r\n .then(() => {\r\n console.log(\r\n \"[SiteSettings] variables.scss file imported successfully\"\r\n );\r\n })\r\n .catch((error) => {\r\n console.error(\r\n \"[SiteSettings] Error importing variables.scss file:\",\r\n error\r\n );\r\n });\r\n }\r\n this.customCss = response.custom_css;\r\n\r\n if (this.customCss !== null) {\r\n //appends a new style sheet uploaded from wagtail to the vue app component\r\n let style = document.createElement(\"link\");\r\n style.type = \"text/css\";\r\n style.rel = \"stylesheet\";\r\n style.href = this.customCss;\r\n document.head.appendChild(style);\r\n }\r\n },\r\n },\r\n computed: {\r\n siteSettings() {\r\n return this.$store.state.wagtail.siteSettings\r\n },\r\n\r\n ...mapState(\"toolbar\", [\"isHomeNavigationDrawerOpen\"]),\r\n currentUser() {\r\n return this.$store.state.auth.user;\r\n },\r\n //add a new computed property for nav drawer logo\r\n siteStructure() {\r\n let siteStructure = [];\r\n for (const item of this.$store.state.wagtail.siteStructure) {\r\n //TODO: Unsure how reliable this is. Looks at the URL to calculate depth by counting slashes in the URL\r\n item.depth = item.meta.html_url.split(\"/\").length - 4;\r\n let url = new URL(item.meta.html_url);\r\n item.pathname = url.pathname;\r\n item.menutitle = Array(item.depth + 1).join(\" -\") + \" \" + item.title;\r\n siteStructure.push(item);\r\n }\r\n\r\n return siteStructure;\r\n },\r\n appBarClass() {\r\n if (!this.showHeader) return \"transparent-header\";\r\n return \"normal-header\";\r\n },\r\n showHeader() {\r\n return this.$store.state.wagtail.showHeader;\r\n },\r\n isLoggedIn() {\r\n return this.$store.state.auth.status.loggedIn;\r\n },\r\n pageTitle() {\r\n return this.$store.state.wagtail.currentPage.title;\r\n },\r\n accessibilityMode() {\r\n return this.$store.state.wagtail.accessibilityMode;\r\n },\r\n },\r\n watch: {\r\n \r\n siteSettings(newSettings) {\r\n if(Object.keys(newSettings).length > 0) {\r\n this.updateThemeFromApiResponse(newSettings);\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.side-by-side {\r\n display: inline-flex;\r\n}\r\n\r\n.header {\r\n height: 96px;\r\n}\r\n\r\n.menu-hamburg {\r\n display: none;\r\n}\r\n\r\n@media (max-width: 600px) {\r\n .logo-hidden {\r\n display: none;\r\n }\r\n}\r\n\r\n@media (max-width: 1400px) {\r\n .menu-hidden {\r\n display: none;\r\n }\r\n\r\n .menu-hamburg {\r\n display: block;\r\n }\r\n}\r\n\r\n.transparent-header {\r\n pointer-events: none;\r\n margin: 0px;\r\n padding: 0px;\r\n}\r\n\r\n.normal-header {\r\n}\r\n\r\n.pass-thru {\r\n pointer-events: none;\r\n}\r\n\r\n.clickable {\r\n pointer-events: all;\r\n}\r\n\r\n.logo-background {\r\n background-color: #1c3c52;\r\n}\r\n\r\n.use-mouse {\r\n pointer-events: all;\r\n}\r\n\r\n.engage-header ::v-deep .v-toolbar__content {\r\n padding: 0px !important;\r\n}\r\n\r\n.header-container {\r\n height: 100%;\r\n}\r\n\r\n.header-row {\r\n height: 100%;\r\n}\r\n\r\n.site-logo {\r\n max-height: 100%;\r\n}\r\n\r\n.app-menu {\r\n position: absolute;\r\n top: 96px;\r\n bottom: 96px;\r\n width: 100%;\r\n overflow-y: auto;\r\n}\r\n\r\n.primary-logo {\r\n position: absolute;\r\n top: 0px;\r\n height: 96px;\r\n width: 100%;\r\n}\r\n\r\n.secondary-logo {\r\n position: absolute;\r\n height: 96px;\r\n bottom: 0px;\r\n width: 100%;\r\n}\r\n\r\n.header-page-title {\r\n text-shadow: 1px 1px 2px #222;\r\n}\r\n\r\n.img-shadow {\r\n -webkit-filter: drop-shadow(1px 1px 1px #222);\r\n filter: drop-shadow(1px 1px 1px #222);\r\n}\r\n\r\n::v-deep .v-dialog__content {\r\n /* align-self: flex-start; */\r\n height: 100vh !important;\r\n}\r\n</style>\r\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=4ca5c946&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=4ca5c946&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4ca5c946\",\n null\n \n)\n\nexport default component.exports","import \"font-awesome/css/font-awesome.min.css\";\r\n\r\n\r\nimport Vue from \"vue\";\r\nimport Vuetify from \"vuetify/lib\";\r\n\r\nVue.use(Vuetify);\r\n\r\nexport default new Vuetify({\r\n breakpoint: {\r\n thresholds: {\r\n xl: 2000,\r\n },\r\n },\r\n theme: {\r\n themes: {\r\n light: {\r\n primary: \"#1976D2\",\r\n secondary: \"#424242\",\r\n accent: \"#82B1FF\",\r\n error: \"#FF5252\",\r\n info: \"#2196F3\",\r\n success: \"#4CAF50\",\r\n warning: \"#FFC107\",\r\n },\r\n },\r\n },\r\n icons: {\r\n iconfont: \"mdi\" || \"fa4\" || \"fa\",\r\n },\r\n});\r\n","import axios from 'axios';\r\nimport store from \"../store\"\r\nimport apiUrl from './api-url'\r\n\r\nconst ACCESS_KEY = 'accessToken'\r\nconst REFRESH_KEY = 'refreshToken'\r\n\r\nclass AuthService {\r\n\r\n constructor() {\r\n\r\n let that = this;\r\n\r\n this.axiosApiInstance = axios.create();\r\n // Request interceptor for API calls - this inserts the auth header into all HTTP requests using this axios instance\r\n this.axiosApiInstance.interceptors.request.use(\r\n async config => {\r\n config.headers = this.authHeader()\r\n return config;\r\n },\r\n error => {\r\n Promise.reject(error)\r\n });\r\n\r\n // Response interceptor for API calls - this checks the response from every HTTP request and handles invalidated tokens\r\n this.axiosApiInstance.interceptors.response.use((response) => {\r\n return response\r\n }, async function (error) {\r\n //Make a copy of the request - we'll try again after we've tried to obtain a new access token\r\n const originalRequest = error.config;\r\n // First we check if this is the first time we've hit a 401 - likely an invalid token TODO: Actually check properly\r\n if (error.response.status === 401 && !originalRequest._retry) {\r\n\r\n // Flag the request as being retried\r\n originalRequest._retry = true;\r\n\r\n // Request a new access token via the refresh token\r\n await that.refresh()\r\n\r\n // Try the request again - hopefully it works as we should have a new access token\r\n return that.axiosApiInstance.request(originalRequest)\r\n }\r\n else if (error.response.status === 401 && originalRequest._retry) {\r\n // We've got another 401 and we've already tried to obtain a new token, so just log the user out and get them to log in again\r\n\r\n store.dispatch(\"auth/logout\");\r\n\r\n // Ensure refresh to get site settings.\r\n window.location.href = \"/login\"\r\n }\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n authHeader() {\r\n let access = localStorage.getItem(ACCESS_KEY);\r\n if (access) {\r\n return {\r\n Authorization: 'Bearer ' + access, 'Accept': 'application/json',\r\n 'Content-Type': 'application/x-www-form-urlencoded'\r\n }; // for DRF Backend\r\n } else {\r\n return {};\r\n }\r\n }\r\n\r\n login(user) {\r\n // Use a post request to obtain a new access token using a username and password\r\n return axios\r\n .post(apiUrl() + 'api-token/obtain/', {\r\n username: user.username,\r\n password: user.password\r\n })\r\n .then(response => {\r\n if (response.data.access && response.data.refresh) {\r\n //Save tokens to local storage if they've been returned\r\n localStorage.setItem(ACCESS_KEY, response.data.access)\r\n localStorage.setItem(REFRESH_KEY, response.data.refresh)\r\n }\r\n return response.data;\r\n });\r\n }\r\n\r\n loginMicrosoft(code) {\r\n\r\n if(!code) {\r\n return axios.get(apiUrl() + 'api-ms-login/')\r\n .then(response => {\r\n if (response.data.url) {\r\n window.location.href = response.data.url\r\n }\r\n }).catch(error => {\r\n return error.data\r\n });\r\n } else {\r\n return axios.post(apiUrl() + 'api-ms-login/token/', {code: code})\r\n .then(response => {\r\n\r\n if (response.data.access && response.data.refresh) {\r\n localStorage.setItem(ACCESS_KEY, response.data.access)\r\n localStorage.setItem(REFRESH_KEY, response.data.refresh)\r\n }\r\n return response.data;\r\n }).catch(error => {\r\n return error.response\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n logout() {\r\n // Remove tokens from local storage\r\n localStorage.removeItem(ACCESS_KEY)\r\n localStorage.removeItem(REFRESH_KEY)\r\n }\r\n\r\n refresh() {\r\n // We need to get a refresh key from local storage and ask for a new access token\r\n let refreshToken = localStorage.getItem(REFRESH_KEY)\r\n return axios\r\n .post(apiUrl() + 'api-token/refresh/', {\r\n refresh: refreshToken\r\n })\r\n .then(response => {\r\n if (response.data.access) {\r\n // Store the new access token in local storage\r\n localStorage.setItem(ACCESS_KEY, response.data.access);\r\n }\r\n return response.data;\r\n })\r\n .catch(error => {\r\n return error.data\r\n });\r\n }\r\n\r\n register(user) {\r\n return axios.post(apiUrl() + 'api-token/signup', {\r\n username: user.username,\r\n email: user.email,\r\n password: user.password\r\n });\r\n }\r\n\r\n isLoggedIn() {\r\n if (localStorage.getItem(ACCESS_KEY))\r\n return true\r\n return false\r\n }\r\n}\r\n\r\nexport default new AuthService();\r\n","import AuthService from '../services/auth.service';\r\n\r\nconst initialState = {\r\n status: { loggedIn: AuthService.isLoggedIn() },\r\n}\r\n\r\nexport const auth = {\r\n namespaced: true,\r\n state: initialState,\r\n actions: {\r\n login({ commit }, user) {\r\n return AuthService.login(user).then(\r\n response => {\r\n commit('loginSuccess');\r\n return Promise.resolve(response.data);\r\n },\r\n error => {\r\n commit('loginFailure');\r\n return Promise.reject(error);\r\n }\r\n );\r\n },\r\n loginMicrosoft({ commit }, code) {\r\n if(!code) {\r\n return AuthService.loginMicrosoft();\r\n } else {\r\n return AuthService.loginMicrosoft(code).then(\r\n response => {\r\n if(response.status && response.status === 401) {\r\n commit('loginFailure');\r\n return Promise.reject(\"Not Authorized\");\r\n } else {\r\n commit('loginSuccess');\r\n return Promise.resolve(response.data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n },\r\n logout({ commit }) {\r\n AuthService.logout();\r\n commit('logout');\r\n },\r\n refresh({ commit }) {\r\n return AuthService.refresh().then(\r\n response => {\r\n commit('loginSuccess');\r\n return Promise.resolve(response.data);\r\n },\r\n error => {\r\n commit('loginFailure');\r\n return Promise.reject(error);\r\n }\r\n );\r\n },\r\n register({ commit }, user) {\r\n return AuthService.register(user).then(\r\n response => {\r\n commit('registerSuccess');\r\n return Promise.resolve(response.data);\r\n },\r\n error => {\r\n commit('registerFailure');\r\n return Promise.reject(error);\r\n }\r\n );\r\n }\r\n },\r\n mutations: {\r\n loginSuccess(state) {\r\n state.status.loggedIn = true;\r\n },\r\n loginFailure(state) {\r\n state.status.loggedIn = false;\r\n },\r\n logout(state) {\r\n state.status.loggedIn = false;\r\n // router.push(\"/login\");\r\n },\r\n registerSuccess(state) {\r\n state.status.loggedIn = false;\r\n },\r\n registerFailure(state) {\r\n state.status.loggedIn = false;\r\n }\r\n }\r\n};\r\n","import AuthService from './auth.service';\r\nimport apiUrl from './api-url'\r\n\r\nconst axiosApiInstance = AuthService.axiosApiInstance;\r\n\r\nclass MapService {\r\n getComments(mapPageId) {\r\n let params = {map: mapPageId}\r\n return axiosApiInstance.get(apiUrl() + 'api/map-comments/', params);\r\n }\r\n\r\n getPage(id) {\r\n return axiosApiInstance.get(apiUrl() + 'cms-api/pages/' + id + '/');\r\n }\r\n\r\n getEsriTokens() {\r\n return axiosApiInstance.get(apiUrl() + 'api/tokens/');\r\n }\r\n\r\n savePage(id, data) {\r\n console.log(data)\r\n return axiosApiInstance.patch(apiUrl() + 'api/map-pages/' + id + '/', {title: \"Hello\"})\r\n }\r\n}\r\n\r\nexport default new MapService();\r\n","import MapService from '../services/map.service';\r\n\r\nexport const map = {\r\n namespaced: true,\r\n state: {\r\n mapComments: [\r\n ],\r\n currentPage: undefined,\r\n currentPopup: undefined,\r\n esriTokens: [],\r\n newComment: undefined,\r\n activeTool: 'map',\r\n showLegend: false,\r\n layerFilter: null,\r\n layerOptions: {},\r\n sceneid: \"c5c3b634295c4474bfa03e5a0af96f3c\",\r\n webSceneId: \"undefined\",\r\n accessibilityMarkerZoom: null,\r\n renderLocation: null,\r\n selectedLocation: null,\r\n hotspotGroupSelectedLocation: null,\r\n\r\n journey: {\r\n startLocation: null,\r\n stopLocation: null,\r\n entrance: null,\r\n exit: null\r\n },\r\n resetMap: false,\r\n resetJourney: false,\r\n resetLocation: false,\r\n resetRenderLayer: false,\r\n precinct: null,\r\n backupPrecinct: null,\r\n rightSidebarZoomLevel:null,\r\n scrollZoom: false,\r\n groupLocation: null,\r\n videoToggle: null,\r\n experienceJourney: false,\r\n\r\n },\r\n\r\n actions: {\r\n getComments({ commit }, mapPageId) {\r\n return MapService.getComments(mapPageId).then(\r\n response => {\r\n commit('getCommentsSuccess', response.data);\r\n return Promise.resolve(response.data);\r\n },\r\n error => {\r\n commit('getCommentsFailure');\r\n return Promise.reject(error);\r\n }\r\n );\r\n },\r\n placeComment({ state, commit }, screenpoint) {\r\n let data = {\r\n \"lng\": screenpoint[0],\r\n \"lat\": screenpoint[1],\r\n \"name\": \"\",\r\n \"comment\": \"\",\r\n \"sentiment\": \"happy\",\r\n \"map\": state.currentPage.id\r\n }\r\n commit('addComment', data);\r\n },\r\n\r\n getEsriTokens({ commit }) {\r\n return MapService.getEsriTokens().then(\r\n response => {\r\n commit('getEsriTokenSuccess', response.data);\r\n return Promise.resolve(response.data);\r\n },\r\n error => {\r\n commit('getEsriTokenFailure');\r\n return Promise.reject(error);\r\n }\r\n );\r\n },\r\n\r\n getPage({ commit }, id) {\r\n return MapService.getPage(id).then(\r\n response => {\r\n commit('getPageSuccess', response.data);\r\n return Promise.resolve(response.data);\r\n },\r\n error => {\r\n commit('getPageFailure');\r\n return Promise.reject(error);\r\n }\r\n );\r\n },\r\n\r\n getPopup({ commit }, id) {\r\n return MapService.getPage(id).then(\r\n response => {\r\n commit('getPopupSuccess', response.data);\r\n return Promise.resolve(response.data);\r\n },\r\n error => {\r\n commit('getPopupFailure');\r\n return Promise.reject(error);\r\n }\r\n );\r\n },\r\n\r\n savePage({ state }) {\r\n let data = { title: \"Hello There\" }\r\n return MapService.savePage(state.currentPage.id, data).then(\r\n response => {\r\n return Promise.resolve(response.data);\r\n },\r\n error => {\r\n return Promise.reject(error);\r\n }\r\n );\r\n },\r\n\r\n setPageTitle({ commit }, data) {\r\n commit('setPageTitle', data)\r\n },\r\n\r\n addKeyStat({ commit }, data) {\r\n commit('addKeyStat', data)\r\n },\r\n removeKeyStat({ commit }, index) {\r\n commit('removeKeyStat', index)\r\n }\r\n },\r\n\r\n mutations: {\r\n setVideoToggle (state, data) {\r\n state.videoToggle = data\r\n },\r\n setExperienceJourney (state, data) {\r\n state.experienceJourney = data\r\n },\r\n setScrollZoom (state, data) {\r\n state.scrollZoom = data\r\n },\r\n setRightSidebarZoomLevel (state, data) {\r\n state.rightSidebarZoomLevel = data\r\n },\r\n setGroupLocation(state, data) {\r\n state.groupLocation = data\r\n },\r\n setPrecinct(state, data) {\r\n state.precinct = data\r\n },\r\n setBackupPrecinct(state, data) {\r\n state.backupPrecinct = data\r\n },\r\n setResetMap(state, data) {\r\n state.resetMap = data\r\n },\r\n setResetMap(state, data) {\r\n state.resetMap = data\r\n },\r\n setResetJourney(state, data) {\r\n state.resetJourney = data\r\n },\r\n setResetRenderLayer(state, data) {\r\n state.resetRenderLayer = data\r\n },\r\n setJourney(state, data) {\r\n state.journey = data;\r\n },\r\n setResetLocation(state, data) {\r\n state.resetLocation = data;\r\n },\r\n setSelectedLocation(state, data) { \r\n state.selectedLocation = data;\r\n },\r\n setRenderLocation(state, data) { \r\n state.renderLocation = data;\r\n },\r\n setHotspotGroupSelectedLocation(state, data) { \r\n state.hotspotGroupSelectedLocation = data;\r\n },\r\n getCommentsSuccess(state, data) {\r\n state.mapComments = data;\r\n },\r\n getCommentsFailure(state) {\r\n state.mapComments = [];\r\n },\r\n addComment(state, data) {\r\n state.newComment = data;\r\n },\r\n saveComment(state) {\r\n if (state.newComment !== undefined)\r\n state.mapComments.push( state.newComment );\r\n state.newComment = undefined\r\n },\r\n cancelComment(state) {\r\n state.newComment = undefined\r\n },\r\n getEsriTokenSuccess(state, data) {\r\n state.esriTokens = data;\r\n },\r\n getEsriTokenFailure(state) {\r\n state.esriTokens = [];\r\n },\r\n getPageSuccess(state, data) {\r\n state.currentPage = data;\r\n },\r\n getPageFailure(state) {\r\n state.currentPage = undefined;\r\n },\r\n getPopupSuccess(state, data) {\r\n state.currentPopup = data;\r\n },\r\n getPopupFailure(state) {\r\n state.currentPopup = undefined;\r\n },\r\n setPageTitle(state, data) {\r\n state.currentPage.title = data\r\n },\r\n addKeyStat(state, data) {\r\n state.currentPage.key_stats.push(data)\r\n },\r\n removeKeyStat(state, index) {\r\n state.currentPage.key_stats.pop(index)\r\n },\r\n setMapTool(state, value) {\r\n state.activeTool = value\r\n },\r\n showLegend(state, value) {\r\n state.showLegend = value\r\n },\r\n setLayerFilter(state, value) {\r\n state.layerFilter = value\r\n },\r\n setLayerOptions(state, value)\r\n {\r\n state.layerOptions = value\r\n },\r\n accessibilityMarkerZoom (state, payload) {\r\n state.accessibilityMarkerZoom = payload\r\n }\r\n }\r\n};\r\n","import AuthService from './auth.service';\r\nimport apiUrl from './api-url'\r\n\r\nconst axiosApiInstance = AuthService.axiosApiInstance;\r\n\r\nclass WagtailService {\r\n getComments(mapPageId) {\r\n let params = {map: mapPageId}\r\n return axiosApiInstance.get(apiUrl() + 'api/map-comments/', params);\r\n }\r\n\r\n getSiteSettings() {\r\n return axiosApiInstance.get(apiUrl() + 'api/site-settings/');\r\n }\r\n\r\n getSiteStructure() {\r\n return axiosApiInstance.get(apiUrl() + 'cms-api/pages/?show_in_menus=true&type=engage_pages.HeadlessPageBase&fields=menu_icon');\r\n }\r\n\r\n getPage(id) {\r\n return axiosApiInstance.get(apiUrl() + 'cms-api/pages/find/?html_path=' + id );\r\n }\r\n\r\n\r\n getPageByUrl(url) {\r\n return axiosApiInstance.get(url);\r\n }\r\n\r\n\r\n getPageById(id) {\r\n return axiosApiInstance.get(apiUrl() + 'cms-api/pages/' + id );\r\n }\r\n\r\n getPageChildren(id) {\r\n return axiosApiInstance.get(apiUrl() + 'cms-api/pages/?child_of=' + id );\r\n }\r\n\r\n getEsriTokens() {\r\n return axiosApiInstance.get(apiUrl() + 'api/tokens/');\r\n }\r\n\r\n savePage(id, data) {\r\n console.log(data)\r\n return axiosApiInstance.patch(apiUrl() + 'api/map-pages/' + id + '/', {title: \"Hello\"})\r\n }\r\n}\r\n\r\nexport default new WagtailService();\r\n","import Vue from \"vue\";\r\nimport WagtailService from \"../services/wagtail.service\";\r\n\r\nexport const wagtail = {\r\n namespaced: true,\r\n state: {\r\n mapComments: [],\r\n rootPage: undefined,\r\n currentPage: undefined,\r\n currentChildren: [],\r\n currentPopup: undefined,\r\n esriTokens: [],\r\n newComment: undefined,\r\n activeTool: \"map\",\r\n showLegend: false,\r\n layerFilter: null,\r\n layerOptions: {},\r\n sceneid: \"c5c3b634295c4474bfa03e5a0af96f3c\",\r\n webSceneId: \"undefined\",\r\n siteStructure: [],\r\n siteSettings: {},\r\n showHeader: true,\r\n accessibilityMode: false,\r\n setLandingStreamfield: false,\r\n pageViewed: [],\r\n stickyItem: undefined,\r\n minHotspotSize: 0,\r\n maxHotspotSize: 0,\r\n VisibleHotspotGroups: [],\r\n mapPageLightboxReady: false,\r\n },\r\n\r\n actions: {\r\n getPageLayers({ commit }, mapPageId) {\r\n return WagtailService.getPageById(mapPageId)\r\n },\r\n getComments({ commit }, mapPageId) {\r\n return WagtailService.getComments(mapPageId).then(\r\n (response) => {\r\n commit(\"getCommentsSuccess\", response.data);\r\n return Promise.resolve(response.data);\r\n },\r\n (error) => {\r\n commit(\"getCommentsFailure\");\r\n return Promise.reject(error);\r\n }\r\n );\r\n },\r\n placeComment({ state, commit }, screenpoint) {\r\n let data = {\r\n lng: screenpoint[0],\r\n lat: screenpoint[1],\r\n name: \"\",\r\n comment: \"\",\r\n sentiment: \"happy\",\r\n map: state.currentPage.id,\r\n };\r\n commit(\"addComment\", data);\r\n },\r\n\r\n getEsriTokens({ commit }) {\r\n return WagtailService.getEsriTokens().then(\r\n (response) => {\r\n commit(\"getEsriTokenSuccess\", response.data);\r\n return Promise.resolve(response.data);\r\n },\r\n (error) => {\r\n commit(\"getEsriTokenFailure\");\r\n return Promise.reject(error);\r\n }\r\n );\r\n },\r\n\r\n getRootPage({ dispatch, commit }, id) {\r\n return WagtailService.getPage(id).then(\r\n (response) => {\r\n commit(\"getPageSuccess\", response.data);\r\n dispatch(\"getPageChildren\", response.data.id);\r\n return Promise.resolve(response.data);\r\n },\r\n (error) => {\r\n commit(\"getPageFailure\");\r\n return Promise.reject(error);\r\n }\r\n );\r\n },\r\n\r\n getSiteSettings({ commit }) {\r\n return WagtailService.getSiteSettings().then(\r\n (response) => {\r\n commit(\"getSiteSettingsSuccess\", response.data);\r\n return Promise.resolve(response.data);\r\n },\r\n (error) => {\r\n commit(\"getSiteSettingsFailure\");\r\n return Promise.reject(error);\r\n }\r\n );\r\n },\r\n\r\n getSiteStructure({ commit }) {\r\n return WagtailService.getSiteStructure().then(\r\n (response) => {\r\n commit(\"getSiteStructureSuccess\", response.data);\r\n return Promise.resolve(response.data);\r\n },\r\n (error) => {\r\n commit(\"getSiteStructureFailure\");\r\n return Promise.reject(error);\r\n }\r\n );\r\n },\r\n\r\n getPage({ dispatch, commit }, id) {\r\n return WagtailService.getPage(id).then(\r\n (response) => {\r\n if (\r\n response.data.meta.type ===\r\n \"engage_virtualrooms.VirtualRoomContent\" ||\r\n response.data.meta.type === \"engage_virtualrooms.PanoramaRoomPopup\" ||\r\n response.data.meta.type === \"engage_virtualrooms.ChatBubbleHotspot\"\r\n\r\n ) {\r\n // If trying to load virtual room content, what we actually want to load is the parent virtual room page\r\n // Then the engagement room page will take care of any additional routing requirements\r\n return WagtailService.getPageById(\r\n response.data.meta.parent.id\r\n ).then(\r\n (response) => {\r\n commit(\"getPageSuccess\", response.data);\r\n dispatch(\"getPageChildren\", response.data.id);\r\n return Promise.resolve(response.data);\r\n },\r\n (error) => {\r\n commit(\"getPageFailure\");\r\n return Promise.reject(error);\r\n }\r\n );\r\n } else {\r\n commit(\"getPageSuccess\", response.data);\r\n dispatch(\"getPageChildren\", response.data.id);\r\n return Promise.resolve(response.data);\r\n }\r\n },\r\n (error) => {\r\n commit(\"getPageFailure\");\r\n return Promise.reject(error);\r\n }\r\n );\r\n },\r\n\r\n async getPanoramaPage({ dispatch, commit }, id) {\r\n return WagtailService.getPage(id);\r\n },\r\n\r\n // TODO: This doesn't really need to be an action and is just a wrapper for calling the wagtail service from a component\r\n // I can't quite figure out how to make the component successfully call the service without errors, so here we are\r\n // Future JS wizard, solve this :D\r\n getPageByUrl(context, url) {\r\n return WagtailService.getPageByUrl(url).then(\r\n (response) => {\r\n return Promise.resolve(response.data);\r\n },\r\n (error) => {\r\n return Promise.reject(error);\r\n }\r\n );\r\n },\r\n\r\n getPageChildren({ commit }, id) {\r\n return WagtailService.getPageChildren(id).then(\r\n (response) => {\r\n commit(\"getPageChildrenSuccess\", response.data);\r\n return Promise.resolve(response.data);\r\n },\r\n (error) => {\r\n commit(\"getPageChildrenFailure\");\r\n return Promise.reject(error);\r\n }\r\n );\r\n },\r\n\r\n async getStartPanorama({ commit }, id) {\r\n return WagtailService.getPageById(id).then(\r\n (response) => {\r\n return Promise.resolve(response.data);\r\n });\r\n },\r\n async getPrecinctChildPage({ commit }, id) {\r\n return WagtailService.getPageById(id).then(\r\n (response) => {\r\n return Promise.resolve(response.data);\r\n });\r\n },\r\n async getRenderLocationChildPage({ commit }, id) {\r\n return WagtailService.getPageById(id).then(\r\n (response) => {\r\n return Promise.resolve(response.data);\r\n });\r\n },\r\n async getPageById({commit}, id) {\r\n return WagtailService.getPageById(id).then(\r\n (response) => {\r\n return Promise.resolve(response.data);\r\n });\r\n },\r\n async getPageDetails({ commit }, id) {\r\n return WagtailService.getPage(id).then(\r\n (response) => {\r\n return Promise.resolve(response.data);\r\n });\r\n },\r\n\r\n getPopup({ commit }, page_id) {\r\n return WagtailService.getPageById(page_id).then(\r\n (response) => {\r\n commit(\"getPopupSuccess\", response.data);\r\n return Promise.resolve(response.data);\r\n },\r\n (error) => {\r\n commit(\"getPopupFailure\");\r\n return Promise.reject(error);\r\n }\r\n );\r\n },\r\n getStickyItem({commit}, page_id){\r\n return WagtailService.getPageById(page_id).then(\r\n (response) => {\r\n commit(\"getStickySuccess\", response.data);\r\n return Promise.resolve(response.data);\r\n },\r\n (error) => {\r\n commit(\"getStickyError\");\r\n return Promise.reject(error);\r\n }\r\n );\r\n },\r\n\r\n savePage({ state }) {\r\n let data = { title: \"Hello There\" };\r\n return WagtailService.savePage(state.currentPage.id, data).then(\r\n (response) => {\r\n return Promise.resolve(response.data);\r\n },\r\n (error) => {\r\n return Promise.reject(error);\r\n }\r\n );\r\n },\r\n\r\n setPageTitle({ commit }, data) {\r\n commit(\"setPageTitle\", data);\r\n },\r\n\r\n addKeyStat({ commit }, data) {\r\n commit(\"addKeyStat\", data);\r\n },\r\n removeKeyStat({ commit }, index) {\r\n commit(\"removeKeyStat\", index);\r\n },\r\n setAccessibiltyModeFlag({ commit }, value) {\r\n commit(\"setAccessibilityMode\", value);\r\n },\r\n setLandingStreamfieldFlag({ commit }, value) {\r\n commit(\"setLandingStreamfield\", value);\r\n },\r\n setViewedPageFlag({ commit }, value) {\r\n commit(\"setViewedPage\", value);\r\n }, \r\n updateMinHotspotSize({ commit }, newSize) {\r\n commit('setMinHotspotSizes', newSize);\r\n },\r\n updateMaxHotspotSize({ commit }, newSize) {\r\n commit('setMaxHotspotSizes', newSize);\r\n },\r\n setCurrentPopup({commit}, value) {\r\n commit('getPopupSuccess', value)\r\n },\r\n updateMapLayerOptions({commit}, newValue) {\r\n commit('setLayerOptions', newValue)\r\n }\r\n },\r\n\r\n mutations: { \r\n\r\n setVisibleHotspotGroups(state, newGroups) {\r\n state.VisibleHotspotGroups = newGroups;\r\n }, \r\n addVisibleHotspotGroup(state, newGroup) {\r\n state.VisibleHotspotGroups.push(newGroup);\r\n }, \r\n removeVisibleHotspotGroup(state, groupToRemove) {\r\n state.VisibleHotspotGroups = state.VisibleHotspotGroups.filter(group => group !== groupToRemove);\r\n }, \r\n resetVisibleHotspotGroups(state) {\r\n state.VisibleHotspotGroups = [];\r\n },\r\n setMinHotspotSizes(state, data) {\r\n state.minHotspotSize = data; \r\n },\r\n setMaxHotspotSizes(state, data) {\r\n state.maxHotspotSize = data;\r\n },\r\n getCommentsSuccess(state, data) {\r\n state.mapComments = data;\r\n },\r\n getCommentsFailure(state) {\r\n state.mapComments = [];\r\n },\r\n addComment(state, data) {\r\n state.newComment = data;\r\n },\r\n saveComment(state) {\r\n if (state.newComment !== undefined)\r\n state.mapComments.push(state.newComment);\r\n state.newComment = undefined;\r\n },\r\n cancelComment(state) {\r\n state.newComment = undefined;\r\n },\r\n getEsriTokenSuccess(state, data) {\r\n state.esriTokens = data;\r\n },\r\n getEsriTokenFailure(state) {\r\n state.esriTokens = [];\r\n },\r\n getSiteSettingsSuccess(state, data) {\r\n state.siteSettings = data;\r\n },\r\n getSiteSettingsFailure(state) {\r\n state.siteSettings = {};\r\n },\r\n getSiteStructureSuccess(state, data) {\r\n state.siteStructure = data.items;\r\n },\r\n getSiteStructureFailure(state) {\r\n state.siteStructure = [];\r\n },\r\n getPageSuccess(state, data) {\r\n state.currentChildren = [];\r\n state.currentPage = data;\r\n if (state.currentPage.meta.type === \"engage_virtualrooms.VirtualRoomPage\")\r\n state.showHeader = false;\r\n else state.showHeader = true;\r\n },\r\n getPageFailure(state) {\r\n state.currentChildren = [];\r\n state.currentPage = undefined;\r\n },\r\n getPageChildrenSuccess(state, data) {\r\n state.currentChildren = data.items;\r\n },\r\n getPageChildrenFailure(state) {\r\n state.currentChildren = [];\r\n },\r\n\r\n getPopupSuccess(state, data) {\r\n state.currentPopup = data;\r\n },\r\n getPopupFailure(state) {\r\n state.currentPopup = undefined;\r\n },\r\n getStickySuccess(state, data) {\r\n state.stickyItem = data;\r\n },\r\n getStickyError(state) {\r\n state.stickyItem = undefined;\r\n },\r\n setPageTitle(state, data) {\r\n state.currentPage.title = data;\r\n },\r\n addKeyStat(state, data) {\r\n state.currentPage.key_stats.push(data);\r\n },\r\n removeKeyStat(state, index) {\r\n state.currentPage.key_stats.pop(index);\r\n },\r\n setMapTool(state, value) {\r\n state.activeTool = value;\r\n },\r\n showLegend(state, value) {\r\n state.showLegend = value;\r\n },\r\n setLayerFilter(state, value) {\r\n state.layerFilter = value;\r\n },\r\n setLayerOptions(state, value) {\r\n // If the new value is null, delete the entry\r\n if (value.data === null) {\r\n Vue.delete(state.layerOptions, value.key);\r\n } else {\r\n // Iterate through all existing entries in state.layerOptions\r\n Object.keys(state.layerOptions).forEach(existingKey => {\r\n // Iterate through keys in the new data\r\n Object.keys(value.data).forEach(newDataKey => {\r\n // If a match is found, update the value\r\n if (state.layerOptions[existingKey].hasOwnProperty(newDataKey)) {\r\n Vue.set(state.layerOptions[existingKey], newDataKey, value.data[newDataKey]);\r\n }\r\n });\r\n });\r\n \r\n // Additionally, set the new data in state.layerOptions\r\n Vue.set(state.layerOptions, value.key, value.data);\r\n }\r\n }, \r\n setAccessibiltyMode(state, value) {\r\n state.accessibilityMode = value;\r\n },\r\n setLandingStreamfield(state, value) {\r\n state.setLandingStreamfield = value;\r\n },\r\n setViewedPage(state, value) {\r\n state.pageViewed = value;\r\n },\r\n },\r\n getters: {\r\n getLayerOptions(state) {\r\n return state.layerOptions;\r\n },\r\n\r\n getMaxHotspotSize(state) {\r\n return state.maxHotspotSize;\r\n },\r\n getMinHotspotSize(state) {\r\n return state.minHotspotSize;\r\n },\r\n getVisibleHotspotGroups(state) {\r\n return state.VisibleHotspotGroups;\r\n },\r\n }\r\n};\r\n","export const toolbar = {\r\n namespaced: true,\r\n state: {\r\n isHomeNavigationDrawerOpen: false,\r\n },\r\n actions: {\r\n TOGGLE_HOME_NAVIGATION_DRAWER(context, open) {\r\n console.log(\"action from toolbar\", open)\r\n\r\n context.commit('TOGGLE_HOME_NAVIGATION_DRAWER', open)\r\n },\r\n },\r\n mutations: {\r\n TOGGLE_HOME_NAVIGATION_DRAWER: (state, open) => {\r\n console.log(\"mutation from toolbar\", open)\r\n state.isHomeNavigationDrawerOpen = open\r\n },\r\n },\r\n};\r\n","export const lightbox = {\r\n namespaced: true,\r\n state: {\r\n lightboxObjects: [],\r\n },\r\n actions: {\r\n TOGGLE_HOME_NAVIGATION_DRAWER(context, open) {\r\n context.commit('TOGGLE_HOME_NAVIGATION_DRAWER', open)\r\n },\r\n pushLightbox(context, object) {\r\n context.commit('pushLightbox', object)\r\n },\r\n popLightbox(context, object) {\r\n context.commit('popLightbox', object)\r\n }\r\n },\r\n mutations: {\r\n TOGGLE_HOME_NAVIGATION_DRAWER: (state, open) => {\r\n state.isHomeNavigationDrawerOpen = open\r\n },\r\n pushLightbox: (state, object) => {\r\n console.log(\"New lightbox added\")\r\n console.log(object)\r\n console.log(\"-------\")\r\n state.lightboxObjects.push(object)\r\n },\r\n popLightbox: (state, object) => {\r\n console.log(\"Lightbox removed\")\r\n console.log(object)\r\n console.log(\"-------\")\r\n \r\n var i = 0;\r\n while (i < state.lightboxObjects.length) {\r\n if (state.lightboxObjects[i] === object) {\r\n state.lightboxObjects.splice(i, 1);\r\n } else {\r\n ++i;\r\n }\r\n }\r\n return state.lightboxObjects;\r\n\r\n }\r\n },\r\n};\r\n","import Vue from 'vue';\r\nimport Vuex from 'vuex';\r\nimport { auth } from './auth.module';\r\nimport { map } from './map.module';\r\nimport { wagtail } from './wagtail.module';\r\nimport { toolbar } from './toolbar.module';\r\nimport { lightbox } from './lightbox.module';\r\n\r\n\r\nVue.use(Vuex);\r\n\r\nexport default new Vuex.Store({\r\n modules: { auth, map, wagtail, toolbar, lightbox },\r\n state: {\r\n tokens: [],\r\n sitePage: \"map\",\r\n count: 0,\r\n activeTool: \"map\",\r\n activeToolData: undefined,\r\n showLegend: false,\r\n mapTool: undefined,\r\n mapZoom: 6.0,\r\n mapCenter: [150.87180567987266, -29.780386190387905],\r\n rootPage: 12,\r\n currentPage: undefined,\r\n currentMarker: undefined,\r\n currentComment: undefined,\r\n markers: [\r\n ],\r\n debugNoMarkers: true,\r\n debugNoLayers: true,\r\n addComment: true,\r\n },\r\n mutations: {\r\n setSitePage(state, value) {\r\n state.sitePage = value\r\n },\r\n increment(state) {\r\n state.count++\r\n },\r\n setTool(state, value) {\r\n state.activeTool = value;\r\n state.activeToolData = undefined;\r\n },\r\n setToolData(state, value) {\r\n state.activeToolData = value;\r\n },\r\n setLegend(state, value) {\r\n state.showLegend = value;\r\n },\r\n setMapTool(state, value) {\r\n state.mapTool = value;\r\n },\r\n setCategory(state, value) {\r\n state.selectedCategory = value;\r\n if (state.selectedCategory !== undefined) {\r\n state.markers = state.categoryData[state.selectedCategory][\"markers\"]\r\n }\r\n else {\r\n state.markers = []\r\n }\r\n },\r\n addMarker(state, value) {\r\n state.markers.push(value)\r\n },\r\n selectMarker(state, value) {\r\n state.currentMarker = value\r\n state.currentComment = undefined\r\n state.mapTool = undefined\r\n },\r\n selectComment(state, value) {\r\n state.currentComment = value\r\n state.currentMarker = undefined\r\n state.mapTool = undefined\r\n },\r\n setPage(state, data) {\r\n state.currentPage = data\r\n if (state.currentPage != undefined && state.currentPage != null)\r\n state.markers = state.currentPage.markers\r\n else\r\n state.markers = []\r\n state.currentComment = undefined\r\n state.currentMarker = undefined\r\n state.mapTool = undefined\r\n },\r\n setLayerVisible(state, data) {\r\n state.currentPage.layers[data.id] = data.visible\r\n },\r\n setTokens(state, data) {\r\n state.tokens = data\r\n }\r\n },\r\n});\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-container',{attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[(_vm.loading)?_c('LoadingScreen'):_vm._e(),_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"8\",\"md\":\"6\",\"lg\":\"4\",\"xl\":\"3\"}},[_c('v-row',{staticClass:\"pl-6 pr-6\",attrs:{\"justify\":\"center\"}},[_c('v-scale-transition',[_c('v-alert',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loading && _vm.message !== ''),expression:\"!loading && message !== ''\"}],attrs:{\"border\":\"top\",\"colored-border\":\"\",\"type\":\"error\",\"elevation\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.message)+\" \")])],1),_c('v-card',{attrs:{\"width\":\"100%\"}},[_c('v-toolbar',{attrs:{\"dark\":_vm.primaryIsDark ? true : false,\"color\":\"primary\"}},[_c('v-toolbar-title',[_vm._v(\"Login\")])],1),_c('v-container',{staticClass:\"pa-7\"},[_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-text-field',{attrs:{\"label\":\"Username\",\"placeholder\":\"Username\",\"id\":\"username\",\"required\":\"\",\"outlined\":\"\",\"dense\":\"\",\"prepend-icon\":\"mdi-account\",\"color\":_vm.primaryIsDark ? 'primary' : 'grey'},model:{value:(_vm.user.username),callback:function ($$v) {_vm.$set(_vm.user, \"username\", $$v)},expression:\"user.username\"}})],1),_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-text-field',{attrs:{\"id\":\"password\",\"label\":\"Password\",\"placeholder\":\"Password\",\"required\":\"\",\"outlined\":\"\",\"dense\":\"\",\"prepend-icon\":\"mdi-lock\",\"type\":\"password\",\"color\":_vm.primaryIsDark ? 'primary' : 'grey'},model:{value:(_vm.user.password),callback:function ($$v) {_vm.$set(_vm.user, \"password\", $$v)},expression:\"user.password\"}})],1),_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-btn',{class:_vm.primaryIsDark ? 'white--text' : 'black--text',attrs:{\"id\":\"login-btn\",\"color\":\"primary\"},on:{\"click\":_vm.handleLogin}},[_vm._v(\" Login \")])],1),_c('v-row',{staticClass:\"mt-5\",attrs:{\"justify\":\"center\"}},[_c('v-btn',{class:_vm.primaryIsDark ? 'white--text' : 'black--text',attrs:{\"color\":\"primary\"},on:{\"click\":_vm.handleLoginMicrosoft}},[_vm._v(\" Login With SSO \")])],1)],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-fade-transition',[_c('v-container',{staticClass:\"background\",attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',[_c('div',{staticClass:\"text-center\"},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"size\":\"50\",\"color\":\"secondary\"}})],1)])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-fade-transition >\r\n <v-container fill-height fluid class=\"background\">\r\n <v-row align=\"center\" justify=\"center\">\r\n <v-col>\r\n <div class=\"text-center\">\r\n <v-progress-circular\r\n indeterminate\r\n size=\"50\"\r\n color=\"secondary\"\r\n ></v-progress-circular>\r\n </div>\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n </v-fade-transition>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"Loading\",\r\n data: () => ({\r\n items: [],\r\n select: undefined,\r\n search: undefined,\r\n loading: undefined,\r\n toggle_exclusive: 1,\r\n }),\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n\r\n.background {\r\n background-color: rgba(255,255,255,0.5);\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n z-index: 100;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LoadingScreen.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LoadingScreen.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LoadingScreen.vue?vue&type=template&id=464ae38d&scoped=true&\"\nimport script from \"./LoadingScreen.vue?vue&type=script&lang=js&\"\nexport * from \"./LoadingScreen.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoadingScreen.vue?vue&type=style&index=0&id=464ae38d&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"464ae38d\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <v-container fill-height fluid>\r\n <LoadingScreen v-if=\"loading\"/>\r\n <v-row justify=\"center\">\r\n <v-col cols=\"12\" sm=\"8\" md=\"6\" lg=\"4\" xl=\"3\">\r\n <v-row justify=\"center\" class=\"pl-6 pr-6\">\r\n <v-scale-transition>\r\n <v-alert v-show=\"!loading && message !== ''\" border=\"top\" colored-border type=\"error\" elevation=\"2\">\r\n {{ message }}\r\n </v-alert>\r\n </v-scale-transition>\r\n <v-card width=\"100%\">\r\n <v-toolbar :dark=\"primaryIsDark ? true : false\" color=\"primary\">\r\n <v-toolbar-title>Login</v-toolbar-title>\r\n </v-toolbar>\r\n\r\n <v-container class=\"pa-7\">\r\n <v-row justify=\"center\">\r\n <v-text-field v-model=\"user.username\" label=\"Username\" placeholder=\"Username\" id=\"username\" required\r\n outlined dense prepend-icon=\"mdi-account\" :color=\"primaryIsDark ? 'primary' : 'grey'\">\r\n </v-text-field>\r\n </v-row>\r\n <v-row justify=\"center\">\r\n <v-text-field id=\"password\" v-model=\"user.password\" label=\"Password\" placeholder=\"Password\" required\r\n outlined dense prepend-icon=\"mdi-lock\" type=\"password\" :color=\"primaryIsDark ? 'primary' : 'grey'\">\r\n </v-text-field>\r\n </v-row>\r\n <v-row justify=\"center\">\r\n <v-btn id=\"login-btn\" color=\"primary\" :class=\"primaryIsDark ? 'white--text' : 'black--text'\"\r\n @click=\"handleLogin\">\r\n Login\r\n </v-btn>\r\n </v-row>\r\n <v-row justify=\"center\" class=\"mt-5\">\r\n <v-btn color=\"primary\" @click=\"handleLoginMicrosoft\"\r\n :class=\"primaryIsDark ? 'white--text' : 'black--text'\"> Login With SSO </v-btn>\r\n </v-row>\r\n </v-container>\r\n </v-card>\r\n </v-row>\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n</template>\r\n\r\n<script>\r\nimport LoadingScreen from \"../components/loadingScreen/LoadingScreen.vue\";\r\nimport { isDark } from \"../util/color\"\r\n\r\nexport default {\r\n name: \"Login\",\r\n data: () => ({\r\n user: { username: \"\", password: \"\" },\r\n loading: false,\r\n message: \"\",\r\n primaryIsDark: false,\r\n }),\r\n components: {\r\n LoadingScreen\r\n },\r\n\r\n mounted() {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n let message = urlParams.get(\"message\");\r\n if (message !== undefined && message != null) this.message = message\r\n\r\n const code = urlParams.get(\"code\")\r\n if (code) {\r\n this.loading = true;\r\n this.$store.dispatch(\"auth/loginMicrosoft\", code)\r\n .then(\r\n () => {\r\n this.$router.push(\"/\");\r\n this.loading = false;\r\n },\r\n (error) => {\r\n this.loading = false;\r\n console.log(error)\r\n this.message =\r\n (error.response &&\r\n error.response.data &&\r\n error.response.data.detail) ||\r\n error.message ||\r\n error.toString();\r\n })\r\n }\r\n\r\n this.primaryIsDark = isDark(this.$vuetify.theme.currentTheme.primary)\r\n\r\n },\r\n computed: {\r\n loggedIn() {\r\n return this.$store.state.auth.status.loggedIn;\r\n },\r\n primaryColor() {\r\n return this.$vuetify.theme.currentTheme.primary\r\n }\r\n },\r\n watch: {\r\n primaryColor(value) {\r\n // On primary color change, determine whether it's light or dark\r\n this.primaryIsDark = isDark(value) \r\n }\r\n },\r\n methods: {\r\n handleLoginMicrosoft() {\r\n this.loading = true\r\n this.$store.dispatch(\"auth/loginMicrosoft\")\r\n },\r\n handleLogin() {\r\n this.loading = true;\r\n\r\n if (this.user.username && this.user.password) {\r\n this.$store.dispatch(\"auth/login\", this.user).then(\r\n () => {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const redirectPath = urlParams.get(\"redirect\");\r\n if (redirectPath !== null) this.$router.push(redirectPath);\r\n else this.$router.push(\"/\");\r\n },\r\n (error) => {\r\n this.loading = false;\r\n this.message =\r\n (error.response &&\r\n error.response.data &&\r\n error.response.data.detail) ||\r\n error.message ||\r\n error.toString();\r\n }\r\n );\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.login-btn {\r\n border-radius: 5px;\r\n box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.3);\r\n padding-left: 20px;\r\n padding-right: 20px;\r\n padding-top: 6px;\r\n padding-bottom: 6px;\r\n}\r\n</style>","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=05925b01&scoped=true&\"\nimport script from \"./Login.vue?vue&type=script&lang=js&\"\nexport * from \"./Login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=05925b01&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"05925b01\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-container',[_c('v-row',{staticClass:\"text-center\"},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-img',{staticClass:\"my-3\",attrs:{\"src\":require('../assets/logo.svg'),\"contain\":\"\",\"height\":\"200\"}})],1),_c('v-col',{staticClass:\"mb-4\"},[_c('h2',{staticClass:\"display-2 font-weight-bold mb-3\"},[_vm._v(\"Logout\")])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-container>\r\n <v-row class=\"text-center\">\r\n <v-col cols=\"12\">\r\n <v-img\r\n :src=\"require('../assets/logo.svg')\"\r\n class=\"my-3\"\r\n contain\r\n height=\"200\"\r\n />\r\n </v-col>\r\n\r\n <v-col class=\"mb-4\">\r\n <h2 class=\"display-2 font-weight-bold mb-3\">Logout</h2>\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"Logout\",\r\n created() {\r\n console.log(\"Time to logout\")\r\n this.$store.dispatch(\"auth/logout\");\r\n this.$router.push(\"login\")\r\n },\r\n};\r\n</script>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Logout.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Logout.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Logout.vue?vue&type=template&id=47ab91d2&\"\nimport script from \"./Logout.vue?vue&type=script&lang=js&\"\nexport * from \"./Logout.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.currentPage !== undefined && _vm.error === undefined)?_c('div',[_c('div',{key:_vm.currentPage.id},[(_vm.currentPage.meta.type === 'engage_virtualrooms.WalkthroughRoom')?_c('EngageWalkthrough',{attrs:{\"pageData\":_vm.currentPage,\"pageChildren\":_vm.currentChildren,\"accessibilityStream\":_vm.accessibilityStream},on:{\"showLanding\":function($event){return _vm.showLanding(_vm.currentPage.id, $event)},\"closeAccessibility\":function($event){_vm.accessibilityStream = false}}}):_vm._e(),(_vm.currentPage.meta.type === 'engage_virtualrooms.VirtualRoomPage')?_c('EngagementRoom',{attrs:{\"pageData\":_vm.currentPage,\"pageChildren\":_vm.currentChildren,\"accessibilityStream\":_vm.accessibilityStream},on:{\"showLanding\":function($event){return _vm.showLanding(_vm.currentPage.id, $event)},\"closeAccessibility\":function($event){_vm.accessibilityStream = false}}}):_vm._e(),(_vm.currentPage.meta.type === 'wagtailcore.Page')?_c('Page',{attrs:{\"pageData\":_vm.currentPage,\"pageChildren\":_vm.currentChildren}}):_vm._e(),(_vm.currentPage.meta.type === 'engage_pages.WebPageLegacy')?_c('WebPageLegacy',{attrs:{\"pageData\":_vm.currentPage,\"pageChildren\":_vm.currentChildren}}):_vm._e(),(_vm.currentPage.meta.type === 'engage_pages.WebPage')?_c('WebPage',{attrs:{\"pageData\":_vm.currentPage,\"pageChildren\":_vm.currentChildren}}):_vm._e(),(_vm.currentPage.meta.type === 'engage_maps.MapPage')?_c('MapPage',{attrs:{\"pageData\":_vm.currentPage,\"pageChildren\":_vm.currentChildren}}):_vm._e(),(_vm.currentPage.meta.type === 'engage_maps.MapVirtualTourPage')?_c('MapVirtualTourPage',{attrs:{\"pageData\":_vm.currentPage,\"pageChildren\":_vm.currentChildren}}):_vm._e()],1),(_vm.showStreamfield)?_c('LandingStreamfield',{key:_vm.currentPage.id,ref:\"landing\",attrs:{\"pageType\":_vm.typeOfPage,\"data\":_vm.currentPage},on:{\"closed\":_vm.landingClosed}}):_vm._e()],1):(_vm.error !== undefined)?_c('div',[(_vm.error.response.status === 404)?_c('Error404'):_vm._e()],1):_vm._e(),_c('LoadingScreen',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loading),expression:\"loading\"}]})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-container',[_c('v-row',[_c('v-col',[_c('h1',[_vm._v(_vm._s(_vm.pageData.title))])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-container>\r\n <v-row>\r\n <v-col>\r\n <h1>{{pageData.title}}</h1>\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"Page\",\r\n props: [\"pageData\", \"pageChildren\"],\r\n data: () => ({}),\r\n mounted() {},\r\n computed: {},\r\n methods: {},\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Page.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Page.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Page.vue?vue&type=template&id=408b0ee2&scoped=true&\"\nimport script from \"./Page.vue?vue&type=script&lang=js&\"\nexport * from \"./Page.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"408b0ee2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"panorama noscrollbars\"},[_c('LightboxGallery',{attrs:{\"showLightbox\":_vm.lightboxContent.length > 0 && _vm.lightboxReady,\"content\":_vm.lightboxContent,\"tileUrl\":_vm.lightboxContent,\"tabindex\":\"0\"},on:{\"closed\":function($event){return _vm.closeLightbox()}}}),(_vm.startingPanorama && _vm.panoramas.length)?_c('Marzipano',{ref:\"Marzipano\",attrs:{\"tileUrl\":_vm.tileUrl,\"multiple-scenes\":[_vm.startingPanorama, ..._vm.panoramas],\"data\":_vm.startingPanorama && _vm.startingPanorama.panorama,\"ready\":_vm.ready,\"sasKey\":_vm.sasKey,\"minYaw\":_vm.minYaw,\"maxYaw\":_vm.maxYaw,\"rectConfigEnabled\":_vm.rectConfigEnabled,\"active-scene\":_vm.activeScene,\"active-scene-view\":_vm.activeSceneView,\"initialViewParameters\":_vm.initialViewParameters,\"tabindex\":\"-1\"},on:{\"walkthroughReady\":_vm.walkthroughLoaded,\"loaded\":_vm.panoLoaded,\"view\":function($event){_vm.activeSceneView = $event},\"scenes\":function($event){return _vm.handleScenes($event)},\"initialViewParameters\":function($event){_vm.initialViewParameters = $event}}},[_vm._l((_vm.parsedPanoramaContent),function(child,i){return _c('div',{key:_vm.activeScene ? `${i}-${_vm.activeSceneIndex}` : i},[(child.type === 'virtualroomcontent')?_c('MarzipanoRectHotspot',{key:_vm.activeScene\n ? `panorama-${_vm.activeSceneIndex}-${_vm.startingPanorama.id}-${i}`\n : i,ref:\"rectHotspot\",refInFor:true,attrs:{\"index\":i,\"yaw\":child.position_data.yaw,\"pitch\":child.position_data.pitch,\"rotX\":child.position_data.rotX,\"rotY\":child.position_data.rotY,\"rotZ\":child.position_data.rotZ,\"width\":child.position_data.width,\"height\":child.position_data.height,\"thumbnail\":child.thumbnail,\"scene\":_vm.activeScene || _vm.scene,\"activeSceneIndex\":_vm.startingPanorama.id,\"arialabel\":_vm.getAriaLabel(child),\"title\":_vm.getChildTitle(child),\"icon\":child.menu_icon,\"clickable\":child.clickable,\"transparent\":child.transparent_background,\"lightboxActive\":_vm.lightboxActive,\"isMoving\":_vm.isMoving,\"movementSpeed\":_vm.movementSpeed,\"invisible\":child.invisible},on:{\"click\":function($event){return _vm.clickChild(child, i)},\"focus\":function($event){return _vm.onFocus()}}}):_vm._e()],1)}),_vm._l((_vm.parsedPanoramaContent),function(child,i){return _c('div',{key:i + 'chat'},[(child.type === 'chatbubblehotspot')?_c('MarzipanoBubbleHotspot',{attrs:{\"index\":i,\"yaw\":child.position_data.yaw,\"pitch\":child.position_data.pitch,\"rotX\":child.position_data.rotX,\"rotY\":child.position_data.rotY,\"rotZ\":child.position_data.rotZ,\"width\":child.position_data.width,\"height\":child.position_data.height,\"text\":child.chat_bubble_text,\"thumbnail\":child.thumbnail,\"scene\":_vm.scene,\"arialabel\":_vm.getAriaLabel(child),\"title\":_vm.getChildTitle(child),\"icon\":child.menu_icon,\"clickable\":child.clickable,\"transparent\":child.transparent_background,\"lightboxActive\":_vm.lightboxActive,\"isMoving\":_vm.isMoving,\"movementSpeed\":_vm.movementSpeed},on:{\"click\":function($event){return _vm.clickChild(child)},\"focus\":function($event){return _vm.onFocus()}}}):_vm._e()],1)})],2):_vm._e(),(_vm.walkthroughLoading)?_c('PanoramaLoading',{staticClass:\"pano\"}):_vm._e(),_c('div',{staticClass:\"button-panel ignore-mouse pt-7 pr-5\"},[_c('v-container',{staticClass:\"pt-0 pb-0\"},[_c('v-row',[_c('v-btn',{staticClass:\"use-mouse\",attrs:{\"tabindex\":\"-1\",\"fab\":\"\",\"small\":\"\",\"data-testid\":\"infoButton\"},on:{\"click\":function($event){return _vm.welcomeOpened()}}},[_c('v-icon',[_vm._v(\"mdi-information-outline\")])],1)],1)],1)],1),_c('PageHeaderCard',{attrs:{\"transparent\":true}}),(_vm.secondaryLogo !== undefined)?_c('img',{staticClass:\"secondary-logo-panel ignore-mouse\",attrs:{\"src\":_vm.secondaryLogo}}):_vm._e(),_c('v-dialog',{ref:\"accessibilityLightbox\",attrs:{\"content-class\":\"accessibility-lightbox\",\"persistent\":\"\",\"scrollable\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(dialog){return [_c('v-card',{attrs:{\"height\":\"100%\"}},[_c('FocusLoop',{attrs:{\"is-visible\":_vm.activeTrap}},[_c('v-card-title',{staticClass:\"text-h5 accessibility-header lighten-2\"},[_vm._v(\" Accessibility Mode \")]),_c('v-tabs',{attrs:{\"show-arrows\":\"\"}},[_c('v-tab',[_vm._v(\"Explore the Room\")]),_c('v-tab-item',[(_vm.accessibilityFlag)?_c('v-list-item',{key:\"1\",staticClass:\"accessibility-btn\",attrs:{\"link\":\"\"},on:{\"click\":function($event){_vm.closeAccessibilityLightbox();\n _vm.$emit('showLanding', 'read-welcome');}}},[_vm._v(\"Read Welcome Message\")]):_vm._e(),_vm._l((_vm.startingPanorama.panorama_child_content),function(child,i){return _c('v-list-item',{key:_vm.accessibilityFlag ? i + 1 : i,staticClass:\"accessibility-btn\",attrs:{\"link\":\"\"},on:{\"click\":function($event){_vm.clickChild(child), (dialog.value = false)}}},[_vm._v(_vm._s(_vm.getChildTitle(child)))])})],2),_c('v-tab',[_vm._v(\"Site Navigation \")]),_c('v-tab-item',_vm._l((_vm.siteStructure),function(menuItem,i){return _c('v-list-item',{key:i,attrs:{\"to\":menuItem.pathname,\"link\":\"\"}},[_c('v-list-item-icon',{staticClass:\"mr-4\"},[_c('v-icon',[_vm._v(_vm._s(menuItem.menu_icon))])],1),_c('v-list-item-title',[_vm._v(_vm._s(menuItem.title))])],1)}),1)],1),_c('v-divider'),_c('v-btn',{staticClass:\"accessibility-btn close-accessibility-btn\",on:{\"click\":function($event){_vm.closeAccessibilityLightbox(), (dialog.value = false)}}},[_vm._v(\"Close\")])],1)],1)]}}]),model:{value:(_vm.accessibilityModalFlag),callback:function ($$v) {_vm.accessibilityModalFlag=$$v},expression:\"accessibilityModalFlag\"}}),_c('PanoramaInstructions',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showInstructions),expression:\"showInstructions\"}]})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"panorama noscrollbars\">\r\n <LightboxGallery\r\n :showLightbox=\"lightboxContent.length > 0 && lightboxReady\"\r\n :content=\"lightboxContent\"\r\n :tileUrl=\"lightboxContent\"\r\n @closed=\"closeLightbox()\"\r\n tabindex=\"0\"\r\n />\r\n\r\n <Marzipano\r\n v-if=\"startingPanorama && panoramas.length\"\r\n :tileUrl=\"tileUrl\"\r\n :multiple-scenes=\"[startingPanorama, ...panoramas]\"\r\n :data=\"startingPanorama && startingPanorama.panorama\"\r\n :ready=\"ready\"\r\n :sasKey=\"sasKey\"\r\n @walkthroughReady=\"walkthroughLoaded\"\r\n @loaded=\"panoLoaded\"\r\n @view=\"activeSceneView = $event\"\r\n @scenes=\"handleScenes($event)\"\r\n ref=\"Marzipano\"\r\n :minYaw=\"minYaw\"\r\n :maxYaw=\"maxYaw\"\r\n :rectConfigEnabled=\"rectConfigEnabled\"\r\n :active-scene=\"activeScene\"\r\n :active-scene-view=\"activeSceneView\"\r\n :initialViewParameters=\"initialViewParameters\"\r\n @initialViewParameters=\"initialViewParameters = $event\"\r\n tabindex=\"-1\"\r\n >\r\n <div\r\n v-for=\"(child, i) in parsedPanoramaContent\"\r\n :key=\"activeScene ? `${i}-${activeSceneIndex}` : i\"\r\n >\r\n <MarzipanoRectHotspot\r\n v-if=\"child.type === 'virtualroomcontent'\"\r\n :index=\"i\"\r\n :key=\"\r\n activeScene\r\n ? `panorama-${activeSceneIndex}-${startingPanorama.id}-${i}`\r\n : i\r\n \"\r\n :yaw=\"child.position_data.yaw\"\r\n :pitch=\"child.position_data.pitch\"\r\n :rotX=\"child.position_data.rotX\"\r\n :rotY=\"child.position_data.rotY\"\r\n :rotZ=\"child.position_data.rotZ\"\r\n :width=\"child.position_data.width\"\r\n :height=\"child.position_data.height\"\r\n :thumbnail=\"child.thumbnail\"\r\n :scene=\"activeScene || scene\"\r\n :activeSceneIndex=\"startingPanorama.id\"\r\n :arialabel=\"getAriaLabel(child)\"\r\n :title=\"getChildTitle(child)\"\r\n :icon=\"child.menu_icon\"\r\n :clickable=\"child.clickable\"\r\n :transparent=\"child.transparent_background\"\r\n :lightboxActive=\"lightboxActive\"\r\n @click=\"clickChild(child, i)\"\r\n @focus=\"onFocus()\"\r\n :isMoving=\"isMoving\"\r\n :movementSpeed=\"movementSpeed\"\r\n :invisible=\"child.invisible\"\r\n ref=\"rectHotspot\"\r\n />\r\n </div>\r\n\r\n <div v-for=\"(child, i) in parsedPanoramaContent\" :key=\"i + 'chat'\">\r\n <MarzipanoBubbleHotspot\r\n v-if=\"child.type === 'chatbubblehotspot'\"\r\n :index=\"i\"\r\n :yaw=\"child.position_data.yaw\"\r\n :pitch=\"child.position_data.pitch\"\r\n :rotX=\"child.position_data.rotX\"\r\n :rotY=\"child.position_data.rotY\"\r\n :rotZ=\"child.position_data.rotZ\"\r\n :width=\"child.position_data.width\"\r\n :height=\"child.position_data.height\"\r\n :text=\"child.chat_bubble_text\"\r\n :thumbnail=\"child.thumbnail\"\r\n :scene=\"scene\"\r\n :arialabel=\"getAriaLabel(child)\"\r\n :title=\"getChildTitle(child)\"\r\n :icon=\"child.menu_icon\"\r\n :clickable=\"child.clickable\"\r\n :transparent=\"child.transparent_background\"\r\n :lightboxActive=\"lightboxActive\"\r\n @click=\"clickChild(child)\"\r\n @focus=\"onFocus()\"\r\n :isMoving=\"isMoving\"\r\n :movementSpeed=\"movementSpeed\"\r\n />\r\n </div>\r\n </Marzipano>\r\n <PanoramaLoading class=\"pano\" v-if=\"walkthroughLoading\"/>\r\n\r\n <div class=\"button-panel ignore-mouse pt-7 pr-5\">\r\n <v-container class=\"pt-0 pb-0\">\r\n <v-row>\r\n <v-btn\r\n tabindex=\"-1\"\r\n fab\r\n small\r\n class=\"use-mouse\"\r\n @click=\"welcomeOpened()\"\r\n data-testid=\"infoButton\"\r\n >\r\n <v-icon>mdi-information-outline</v-icon>\r\n </v-btn>\r\n </v-row>\r\n </v-container>\r\n </div>\r\n\r\n <PageHeaderCard :transparent=\"true\"> </PageHeaderCard>\r\n\r\n <img\r\n v-if=\"secondaryLogo !== undefined\"\r\n :src=\"secondaryLogo\"\r\n class=\"secondary-logo-panel ignore-mouse\"\r\n />\r\n\r\n <v-dialog\r\n content-class=\"accessibility-lightbox\"\r\n persistent\r\n scrollable\r\n v-model=\"accessibilityModalFlag\"\r\n ref=\"accessibilityLightbox\"\r\n >\r\n <template v-slot:default=\"dialog\">\r\n <v-card height=\"100%\">\r\n <FocusLoop :is-visible=\"activeTrap\">\r\n <v-card-title class=\"text-h5 accessibility-header lighten-2\">\r\n Accessibility Mode\r\n </v-card-title>\r\n <v-tabs show-arrows>\r\n <v-tab>Explore the Room</v-tab>\r\n <v-tab-item>\r\n <v-list-item\r\n v-if=\"accessibilityFlag\"\r\n key=\"1\"\r\n link\r\n class=\"accessibility-btn\"\r\n @click=\"\r\n closeAccessibilityLightbox();\r\n $emit('showLanding', 'read-welcome');\r\n \"\r\n >Read Welcome Message</v-list-item\r\n >\r\n <v-list-item\r\n v-for=\"(child, i) in startingPanorama.panorama_child_content\"\r\n :key=\"accessibilityFlag ? i + 1 : i\"\r\n link\r\n class=\"accessibility-btn\"\r\n @click=\"clickChild(child), (dialog.value = false)\"\r\n >{{ getChildTitle(child) }}</v-list-item\r\n >\r\n </v-tab-item>\r\n <v-tab>Site Navigation </v-tab>\r\n <v-tab-item>\r\n <v-list-item\r\n v-for=\"(menuItem, i) in siteStructure\"\r\n :key=\"i\"\r\n :to=\"menuItem.pathname\"\r\n link\r\n >\r\n <v-list-item-icon class=\"mr-4\">\r\n <v-icon>{{ menuItem.menu_icon }}</v-icon>\r\n </v-list-item-icon>\r\n <v-list-item-title>{{ menuItem.title }}</v-list-item-title>\r\n </v-list-item></v-tab-item\r\n >\r\n </v-tabs>\r\n <v-divider></v-divider>\r\n <v-btn\r\n class=\"accessibility-btn close-accessibility-btn\"\r\n @click=\"closeAccessibilityLightbox(), (dialog.value = false)\"\r\n >Close</v-btn\r\n >\r\n </FocusLoop>\r\n </v-card>\r\n </template>\r\n </v-dialog>\r\n\r\n <PanoramaInstructions v-show=\"showInstructions\" />\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport Marzipano from \"../../components/panorama/Marzipano.vue\";\r\nimport PanoramaLoading from \"../../components/panorama/PanoramaLoading.vue\";\r\nimport MarzipanoRectHotspot from \"../../components/panorama/MarzipanoRectHotspot\";\r\nimport MarzipanoBubbleHotspot from \"../../components/panorama/MarzipanoBubbleHotspot.vue\"\r\nimport PanoramaInstructions from \"../../components/panorama/PanoramaInstructions\";\r\n\r\nimport PageHeaderCard from \"../../components/page/pageHeaderCard.vue\";\r\nimport { FocusLoop } from \"@vue-a11y/focus-loop\";\r\nimport * as arrowKeyNavigation from \"arrow-key-navigation\";\r\n\r\n//enables next & previous tab style DOM navigation using arrow keys\r\narrowKeyNavigation.register();\r\n\r\n\r\nexport default {\r\n name: \"EngageWalkthrough\",\r\n props: [\"pageData\", \"pageChildren\", \"accessibilityStream\"],\r\n data: () => ({\r\n panorama: \"/engagement_room.json\",\r\n lightboxData: undefined,\r\n scene: undefined,\r\n lastYaw: undefined,\r\n lastPitch: undefined,\r\n lastFov: undefined,\r\n useLastLocation: false,\r\n lightboxReady: false,\r\n showLanding: false,\r\n showInstructions: false,\r\n instructionsShown: false,\r\n ready: false,\r\n consoleYaw: undefined,\r\n consolePitch: undefined,\r\n formYaw: undefined,\r\n formPitch: undefined,\r\n lightboxActive: undefined,\r\n currentFocusIndex: 0,\r\n currentActiveHotspot: undefined,\r\n currentActiveAccessibilityMenuItem: undefined,\r\n isMouseControl: false,\r\n isMoving: false,\r\n movementSpeed: 600,\r\n accessibilityModalFlag: false,\r\n accessibilityFlag: false,\r\n activeTrap: true,\r\n lightbox2Active: false,\r\n\r\n scenes: [],\r\n panoramas: [],\r\n childInstances: [],\r\n activeScene: null,\r\n activeSceneView: null,\r\n initialViewParameters: null,\r\n activeSceneIndex: null,\r\n selectedChild: null,\r\n startingPanorama: null,\r\n walkthroughLoading: true,\r\n }),\r\n components: {\r\n Marzipano,\r\n MarzipanoRectHotspot,\r\n PanoramaInstructions,\r\n PanoramaLoading,\r\n // StreamfieldBlock,\r\n // PageShortcutBlock,\r\n PageHeaderCard,\r\n FocusLoop,\r\n MarzipanoBubbleHotspot\r\n },\r\n created() {\r\n this.$root.$refs.engagementRoom = this;\r\n },\r\n mounted: async function () {\r\n\r\n await this.fetchPanoramas(\r\n this.pageData.starting_pano.id,\r\n this.pageData.panorama_child_content\r\n );\r\n\r\n if (this.pageData?.landing_shortcuts?.length >= 1) {\r\n this.showLanding = true;\r\n } else {\r\n this.showLanding = false;\r\n\r\n // Still show the instructions even when there is no landing streamfield\r\n this.displayInstructions()\r\n }\r\n },\r\n\r\n computed: {\r\n parsedPanoramaContent() {\r\n if(this.startingPanorama) {\r\n return [\r\n ...this.startingPanorama.child_content,\r\n ...this.startingPanorama.chat_bubble_content,\r\n ];\r\n }\r\n return []\r\n },\r\n\r\n lightboxContent() {\r\n if (this.$store.state.wagtail.currentPopup === undefined) return [];\r\n else return this.$store.state.wagtail.currentPopup.content;\r\n },\r\n tileUrl() {\r\n return (\r\n this.startingPanorama.panorama &&\r\n this.startingPanorama.panorama.tiles.split(\"?\")[0]\r\n );\r\n },\r\n currentPath() {\r\n return this.$route.path;\r\n },\r\n sasKey() {\r\n return (\r\n this.startingPanorama.panorama && this.startingPanorama.panorama.sas_key\r\n );\r\n },\r\n siteStructure() {\r\n let siteStructure = [];\r\n for (const item of this.$store.state.wagtail.siteStructure) {\r\n //TODO: Unsure how reliable this is. Looks at the URL to calculate depth by counting slashes in the URL\r\n item.depth = item.meta.html_url.split(\"/\").length - 4;\r\n let url = new URL(item.meta.html_url);\r\n item.pathname = url.pathname;\r\n item.menutitle = Array(item.depth + 1).join(\" -\") + \" \" + item.title;\r\n siteStructure.push(item);\r\n }\r\n return siteStructure;\r\n },\r\n secondaryLogo() {\r\n return this.$store.state.wagtail.siteSettings.secondary_logo;\r\n },\r\n minYaw() {\r\n if (this.startingPanorama.panorama.min_yaw !== undefined)\r\n return this.startingPanorama.panorama.min_yaw;\r\n return -181;\r\n },\r\n maxYaw() {\r\n if (this.startingPanorama.panorama.max_yaw !== undefined)\r\n return this.startingPanorama.panorama.max_yaw;\r\n return 181;\r\n },\r\n rectConfigEnabled() {\r\n return this.startingPanorama.title === \"panoconfig\";\r\n },\r\n accessibilityMode() {\r\n return this.$store.state.wagtail.accessibilityMode;\r\n },\r\n islightboxActive() {\r\n if (this.$store.state.lightbox.lightboxObjects.length == 0) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n },\r\n },\r\n methods: {\r\n walkthroughLoaded() {\r\n this.walkthroughLoading = false;\r\n },\r\n async handleScenes(scenes) {\r\n this.scenes = scenes;\r\n const _sceneIndex = this.scenes.findIndex(\r\n (scene) =>\r\n new URL(scene.item.meta.html_url).pathname === this.$route.query.scene\r\n );\r\n console.log({ something: _sceneIndex });\r\n const sceneData = this.scenes[_sceneIndex];\r\n this.startingPanorama = sceneData.item;\r\n this.activeScene = sceneData.scene;\r\n this.activeSceneView = sceneData.view;\r\n this.initialViewParameters = sceneData.initialViewParameters;\r\n this.activeSceneIndex = _sceneIndex;\r\n if (this.$route.query.hotspot) {\r\n await this.$nextTick();\r\n this.clickChild({}, -1, this.$route.query.hotspot);\r\n }\r\n },\r\n async fetchPanoramas(startPanoramaId, panoramaChildren) {\r\n let _panoramaChildren = panoramaChildren;\r\n this.startingPanorama = await this.$store.dispatch(\r\n \"wagtail/getStartPanorama\",\r\n startPanoramaId\r\n );\r\n\r\n !_panoramaChildren &&\r\n (_panoramaChildren = this.startingPanorama.panorama_child_content);\r\n\r\n const data = await Promise.all(\r\n _panoramaChildren.map(async (item) => {\r\n return this.$store.dispatch(\"wagtail/getStartPanorama\", item.id);\r\n })\r\n );\r\n // console.log({ data }, \"xczxc\");\r\n // const _data = await Promise.all(\r\n // data.map(async (item) => {\r\n // return this.$store.dispatch(\r\n // \"wagtail/getStartPanorama\",\r\n // item.panorama_children ? item.panorama_children.id : item.room_details.id\r\n // // new URL(item.meta.html_url).pathname\r\n // );\r\n // })\r\n // );\r\n\r\n this.childInstances = data;\r\n this.panoramas = data;\r\n // console.log({\r\n // \"this.panoramas\": this.panoramas,\r\n // _data,\r\n // asd: this.startingPanorama.panorama_child_content,\r\n // });\r\n },\r\n welcomeOpened() {\r\n this.$emit(\"showLanding\");\r\n },\r\n onFocus() {\r\n this.isMoving = true;\r\n },\r\n getChildTitle(child) {\r\n if (child.icon_only) return \"\";\r\n return child.title;\r\n },\r\n getAriaLabel(child) {\r\n if (child.accessible_label) {\r\n return child.accessible_label;\r\n } else {\r\n return child.title;\r\n }\r\n },\r\n panoLoaded(scene) { \r\n this.scene = scene;\r\n this.checkZoomToChild();\r\n },\r\n welcomeClosed() {\r\n this.showLanding = false;\r\n this.displayInstructions();\r\n if (this.accessibilityMode == true) {\r\n this.accessibilityModalFlag = true;\r\n } else {\r\n this.accessibilityModalFlag == false;\r\n }\r\n },\r\n displayInstructions() {\r\n this.showInstructions = true;\r\n this.instructionsShown = true;\r\n let self = this;\r\n setTimeout(function () {\r\n self.showInstructions = false;\r\n self.ready = true\r\n }, 3000);\r\n },\r\n async clickChild(child, i, hotspot) {\r\n console.log({ child, hotspot }, \"hotspot child\");\r\n\r\n let isMoving = true;\r\n\r\n let zoomData = child.position_data;\r\n\r\n var destinationViewParameters = {\r\n yaw: zoomData.yaw,\r\n pitch: zoomData.pitch,\r\n fov: (40 * Math.PI) / 180,\r\n };\r\n\r\n var options = {\r\n transitionDuration: 1500,\r\n };\r\n\r\n this.scene.lookTo(destinationViewParameters, options);\r\n console.log(child, \"child pano\")\r\n if (child.walkthrough_step_new) {\r\n\r\n console.log(\"walkthrough step\", child.walkthrough_step_new, this.scenes)\r\n\r\n setTimeout(() => {\r\n const _sceneIndex = this.scenes.findIndex(\r\n (scene) => scene.item.id === child.walkthrough_step_new.panorama.id\r\n );\r\n console.log({ something: _sceneIndex });\r\n const sceneData = this.scenes[_sceneIndex];\r\n this.startingPanorama = sceneData.item;\r\n this.activeScene = sceneData.scene;\r\n this.activeSceneView = sceneData.view;\r\n console.log(sceneData, \"scenedata from new\")\r\n this.initialViewParameters = child.walkthrough_step_new.override_value;\r\n this.activeSceneIndex = _sceneIndex;\r\n\r\n const path = this.$route.path;\r\n this.$router.push(\r\n `${path}?scene=${new URL(sceneData.item.meta.html_url).pathname}`\r\n );\r\n }, options.transitionDuration);\r\n\r\n return;\r\n } else if (child.walkthrough_step) {\r\n \r\n\r\n setTimeout(() => {\r\n const _sceneIndex = this.scenes.findIndex(\r\n (scene) => scene.item.id === child.walkthrough_step.id\r\n );\r\n console.log({ something: _sceneIndex });\r\n const sceneData = this.scenes[_sceneIndex];\r\n this.startingPanorama = sceneData.item;\r\n this.activeScene = sceneData.scene;\r\n this.activeSceneView = sceneData.view;\r\n this.initialViewParameters = sceneData.initialViewParameters;\r\n this.activeSceneIndex = _sceneIndex;\r\n\r\n const path = this.$route.path;\r\n this.$router.push(\r\n `${path}?scene=${new URL(sceneData.item.meta.html_url).pathname}`\r\n );\r\n }, options.transitionDuration);\r\n\r\n return;\r\n }\r\n\r\n // Track which hotspot or accessibility menu item has been most recently clicked. used later to return forcus to the right place.\r\n let currentUILocation = document.activeElement;\r\n if (\r\n currentUILocation.id == document.querySelectorAll(\"#hotspot-img\")[0].id\r\n ) {\r\n this.currentActiveHotspot = currentUILocation;\r\n this.isMouseControl = false;\r\n } else if (currentUILocation.classList[0] == \"v-image\") {\r\n //reset focus location storage if mouse is used.\r\n this.currentActiveHotspot = undefined;\r\n this.currentActiveAccessibilityMenuItem = undefined;\r\n this.isMouseControl = true;\r\n } else if (currentUILocation.classList[0] == \"accessibility-btn\") {\r\n this.currentActiveAccessibilityMenuItem = currentUILocation;\r\n this.isMouseControl = false;\r\n } else {\r\n console.log(\r\n \"Opening lightbox NO MATCH, new access method detected. update focus tracking script\"\r\n );\r\n }\r\n\r\n //track previous camera position and hide the accessibility menu before opening the hotspot lightbox\r\n\r\n this.lastYaw = this.scene.view().yaw();\r\n this.lastPitch = this.scene.view().pitch();\r\n this.lastFov = this.scene.view().fov();\r\n this.useLastLocation = true;\r\n\r\n //Open URL\r\n this.checkZoomToChild();\r\n const path = this.$route.path;\r\n // console.log({path, qwe:new URL(child.html_url).pathname});\r\n // const childParsedUrl = new URL(child.html_url).pathname.split('/')[2]\r\n // this.$router.push(`${path}/${childParsedUrl}`);\r\n const hotpostUrl = hotspot || new URL(child.html_url).pathname;\r\n const scene = this.$route.query.scene;\r\n this.$router.push(\r\n `${path}?hotspot=${hotpostUrl}${scene ? `&scene=${scene}` : \"\"}`\r\n );\r\n this.selectedChild = child;\r\n\r\n const data = await this.$store.dispatch(\r\n \"wagtail/getPageDetails\",\r\n hotpostUrl\r\n );\r\n console.log({ data });\r\n this.getLightboxData(data);\r\n },\r\n\r\n getLightboxData(child) {\r\n let id = child.id;\r\n let zoomData = child.position_data;\r\n this.lightboxReady = false;\r\n //TODO: I don't like using the store for this - should call the API service directly\r\n this.$store.dispatch(\"wagtail/getPopup\", id);\r\n\r\n var destinationViewParameters = {\r\n yaw: zoomData.yaw,\r\n pitch: zoomData.pitch,\r\n fov: (40 * Math.PI) / 180,\r\n };\r\n\r\n var options = {\r\n transitionDuration: 1500,\r\n };\r\n\r\n this.scene.lookTo(destinationViewParameters, options);\r\n // Might be useful chose not to remove\r\n //Resetting Window, body and panorama scroll location to zero to counteract marzipano bug that moves the viewport offscreen\r\n // window.scrollTo(0, 0);\r\n // var bodyElement = document.querySelector(\"body\");\r\n // bodyElement.scroll(0, 0);\r\n\r\n var panoramas = document.getElementsByClassName(\"panorama\");\r\n for (let i = 0; i < panoramas.length; i++) {\r\n panoramas[i].scroll(0, 0);\r\n console.log(\"Pano \" + i + \" scrolling\");\r\n }\r\n\r\n let self = this;\r\n window.setTimeout(function () {\r\n self.lightboxReady = true;\r\n self.lightbox2Active = true;\r\n }, 1250);\r\n },\r\n\r\n closeLightbox() {\r\n //Updates trackers for hotspot status and reopens the accessibility menu if in accessibility mode.\r\n //this.lightboxActive = false;\r\n const path = this.$route.path;\r\n const scene = this.$route.query.scene;\r\n this.$router.push(`${path}${scene ? `?scene=${scene}` : \"\"}`);\r\n\r\n this.$store.commit(\"wagtail/getPopupSuccess\", undefined);\r\n //Tracks that the camera is moving so that keyboard controls cannot override transition animation\r\n this.isMoving = true;\r\n\r\n // If we've flagged to use the last location, use it and clear the flag\r\n if (this.useLastLocation === true) {\r\n destinationViewParameters = {\r\n yaw: this.lastYaw,\r\n pitch: this.lastPitch,\r\n fov: this.lastFov,\r\n };\r\n this.useLastLocation = false;\r\n } else {\r\n var destinationViewParameters = {\r\n yaw: this.scene.view().yaw(),\r\n pitch: 0.0,\r\n fov: (60 * Math.PI) / 180,\r\n };\r\n }\r\n\r\n var options = {\r\n transitionDuration: this.movementSpeed,\r\n };\r\n\r\n // Display the instructions if they've not been displayed before\r\n // This is to handle use cases where a user has navigated straight\r\n // to some lightbox content, and hasn't come via the traditional entry point\r\n\r\n if (this.instructionsShown === false) this.displayInstructions();\r\n this.scene.lookTo(destinationViewParameters, options);\r\n\r\n //Resetting Window, body and panorama scroll location to zero to counteract marzipano bug that moves the viewport offscreen\r\n // window.scrollTo(0, 0);\r\n // var bodyElement = document.querySelector(\"body\");\r\n // bodyElement.scroll(0, 0);\r\n var panoramas = document.getElementsByClassName(\"panorama\");\r\n for (let i = 0; i < panoramas.length; i++) {\r\n panoramas[i].scroll(0, 0);\r\n console.log(\"Pano \" + i + \" scrolling\");\r\n }\r\n\r\n //use stored values to return focus to the correct previous location in virtual room or accessibility menu\r\n const elements = document.querySelectorAll(\"#hotspot-img\");\r\n\r\n if (\r\n this.currentActiveHotspot != undefined &&\r\n this.accessibilityMode == false\r\n ) {\r\n // Moves focus to previous hotspot location in virtual room\r\n this.currentActiveHotspot.focus();\r\n } else {\r\n if (this.accessibilityMode == false) {\r\n //Moves focus Back to the first hotspot if not using a mouse\"\r\n if (this.isMouseControl == false) {\r\n elements[0].focus();\r\n }\r\n } else {\r\n if (this.currentActiveAccessibilityMenuItem != undefined) {\r\n //Moves focus Back to the previous accessibility menu item\r\n this.$nextTick(() => {\r\n this.currentActiveAccessibilityMenuItem.focus();\r\n });\r\n }\r\n }\r\n }\r\n },\r\n\r\n checkZoomToChild() {\r\n if (\r\n this.startingPanorama &&\r\n this.startingPanorama.meta.type ===\r\n \"engage_virtualrooms.EngageWalkthrough\"\r\n ) {\r\n this.getLightboxData(this.selectedChild);\r\n return;\r\n }\r\n\r\n let currPath = window.location.pathname;\r\n let pagePath = new URL(this.startingPanorama.meta.html_url).pathname;\r\n console.log(\"BEFORE IF\");\r\n //If we're not on the root page\r\n if (pagePath !== undefined && currPath !== undefined) {\r\n pagePath = pagePath.trimRight(\"/\");\r\n currPath = currPath.trimRight(\"/\");\r\n\r\n console.log(\"1 IF\");\r\n // If the requested path is not the same as the current page path, then we may be requesting a child object\r\n if (pagePath !== currPath) {\r\n // Search the children for a valid child\r\n console.log(\"2 IF\");\r\n for (let child of this.startingPanorama.child_content) {\r\n let childPath = new URL(child.html_url).pathname;\r\n if (childPath !== undefined) {\r\n console.log(childPath, \"child path from EngagementRoom\");\r\n childPath = childPath.trimRight(\"/\");\r\n\r\n // We've found the right child, let's zoom to it and open the lightbox\r\n if (childPath === currPath) {\r\n console.log(\"99 IF\");\r\n this.getLightboxData(child);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n // for (let anotherChild of this.startingPanorama.panorama_child_content) {\r\n // let anotherChildPath = new URL(anotherChild.html_url).pathname;\r\n // if (anotherChildPath !== undefined) {\r\n // anotherChildPath = anotherChildPath.trimRight(\"/\");\r\n // console.log(anotherChildPath, \"child path from EngagementRoom\");\r\n // if (anotherChildPath === currPath) {\r\n // this.getLightboxData(anotherChild);\r\n // return;\r\n // }\r\n // }\r\n // }\r\n }\r\n // TODO: if we don't find a valid child, reset the scene or reload the page...\r\n },\r\n isRootPage() {\r\n let currPath = this.currentPath;\r\n let pagePath = new URL(this.startingPanorama.meta.html_url).pathname;\r\n if (currPath === pagePath) return true;\r\n return false;\r\n },\r\n shortcutClicked(url) {\r\n //When we click a shortcut, we either route to that page, or if the shortcut is the current page we close the dialog\r\n let pagePath = new URL(url).pathname;\r\n let currPath = this.currentPath;\r\n\r\n if (currPath === pagePath) this.welcomeClosed();\r\n else this.$router.push(pagePath);\r\n\r\n const firstFocusableElement =\r\n document.querySelectorAll(\"#hotspot-img\")[0];\r\n firstFocusableElement.focus();\r\n },\r\n lookTo() {\r\n this.consoleYaw = this.formYaw;\r\n this.consolePitch = this.formPitch;\r\n this.$refs.Marzipano.lookToConsole(this.consoleYaw, this.consolePitch);\r\n },\r\n accesibilityFlag() {\r\n return (this.accesibilityMode = true);\r\n },\r\n closeAccessibilityLightbox() {\r\n this.accessibilityFlag = false;\r\n this.accessibilityModalFlag = false;\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityFlag,\r\n { root: true }\r\n );\r\n localStorage.setItem(\"accessibilityModeState\", false);\r\n this.$emit(\"closeAccessibility\");\r\n },\r\n accessibilityFlagChecker() {\r\n if (localStorage.getItem(\"accessibilityModeState\") == \"true\") {\r\n this.accessibilityModalFlag = true;\r\n this.accessibilityFlag = true;\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityModalFlag,\r\n { root: true }\r\n );\r\n console.log(\"ACCESS STATE TRUE\");\r\n } else {\r\n this.accessibilityModalFlag = false;\r\n this.accessibilityFlag = false;\r\n console.log(\"ACCESS STATE FALSE\");\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityModalFlag,\r\n { root: true }\r\n );\r\n }\r\n },\r\n },\r\n watch: {\r\n accessibilityStream(val) {\r\n this.accessibilityModalFlag = !val;\r\n this.accessibilityFlag = !val;\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityModalFlag,\r\n { root: true }\r\n );\r\n },\r\n showLanding(val) {\r\n console.log(val, \"showlanding\");\r\n },\r\n isMoving() {\r\n //Resetting Window, body and panorama scroll location to zero to counteract marzipano bug that moves the viewport offscreen\r\n // window.scrollTo(0, 0);\r\n // var bodyElement = document.querySelector(\"body\");\r\n // bodyElement.scroll(0, 0);\r\n var panoramas = document.getElementsByClassName(\"panorama\");\r\n for (let i = 0; i < panoramas.length; i++) {\r\n panoramas[i].scroll(0, 0);\r\n console.log(\"Pano \" + i + \" scrolling\");\r\n }\r\n\r\n if (\"activeElement\" in document) {\r\n const elements = document.querySelectorAll(\"#hotspot-img\");\r\n if (document.activeElement.id == elements[0].id) {\r\n this.currentActiveHotspot = document.activeElement;\r\n }\r\n }\r\n if (this.isMoving) {\r\n arrowKeyNavigation.unregister();\r\n window.onkeydown = () => false;\r\n window.setTimeout(() => {\r\n this.isMoving = false;\r\n }, this.movementSpeed);\r\n } else {\r\n arrowKeyNavigation.register();\r\n window.onkeydown = () => true;\r\n\r\n //Resetting Window, body and panorama scroll location to zero to counteract marzipano bug that moves the viewport offscreen\r\n // window.scrollTo(0, 0);\r\n // var bodyElement = document.querySelector(\"body\");\r\n // bodyElement.scroll(0, 0);\r\n for (let i = 0; i < panoramas.length; i++) {\r\n panoramas[i].scroll(0, 0);\r\n console.log(\"Pano \" + i + \" scrolling\");\r\n }\r\n }\r\n },\r\n accessibilityMode(newValue) {\r\n if (newValue == true) {\r\n this.accessibilityModalFlag = true;\r\n this.accessibilityFlag = true;\r\n localStorage.setItem(\"accessibilityModeState\", true);\r\n } else {\r\n this.accessibilityModalFlag = false;\r\n this.accessibilityFlag = false;\r\n const elements = document.querySelectorAll(\"#hotspot-img\");\r\n localStorage.setItem(\"accessibilityModeState\", false);\r\n this.$nextTick(() => {\r\n elements[0].focus();\r\n });\r\n }\r\n },\r\n currentPath() {\r\n this.checkZoomToChild();\r\n //Hide the landing page if the path has changed\r\n if (!this.isRootPage() && this.showLanding) this.showLanding = false;\r\n console.log(\r\n \"path change.....\",\r\n this.lightboxContent.length,\r\n this.lightboxReady\r\n );\r\n },\r\n islightboxActive() {\r\n if (this.islightboxActive == false) {\r\n if (this.accessibilityMode == true) {\r\n this.accessibilityModalFlag = true;\r\n } else {\r\n this.accessibilityModalFlag = false;\r\n }\r\n } else {\r\n this.accesibilityModal = false;\r\n }\r\n },\r\n lightboxContent(res) {\r\n console.log(\r\n \"current popup val changed\",\r\n this.$store.state.wagtail.currentPopup,\r\n res\r\n );\r\n },\r\n lightboxReady(res) {\r\n console.log(\"lightbox ready\", res);\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.map-sidebar {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n /* width: 344px; */\r\n width: 500px;\r\n height: 100%;\r\n}\r\n\r\n.map {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n height: 100%;\r\n}\r\n\r\n.map-legend {\r\n display: none;\r\n}\r\n\r\nhtml {\r\n overflow: hidden !important;\r\n}\r\n\r\n.ignore-mouse {\r\n pointer-events: none !important;\r\n}\r\n\r\n.use-mouse {\r\n pointer-events: all;\r\n}\r\n\r\n.panorama {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n}\r\n\r\n.button-panel {\r\n position: absolute;\r\n top: 0px;\r\n right: 0px;\r\n}\r\n\r\n.attribution-panel {\r\n position: absolute;\r\n bottom: 0px;\r\n left: 0px;\r\n}\r\n\r\n@media (max-width: 600px) {\r\n .button-panel {\r\n bottom: 0px;\r\n }\r\n}\r\n\r\n.secondary-logo-panel {\r\n position: absolute;\r\n bottom: 0px;\r\n right: 0px;\r\n max-height: 96px;\r\n}\r\n\r\n.lightbox-btn:focus-visible {\r\n outline: 4px dashed darkorange;\r\n}\r\n.accessibility-btn:focus-visible {\r\n outline: 4px dashed darkorange;\r\n}\r\n\r\n.accessibility-header {\r\n background-color: black;\r\n color: white;\r\n}\r\n::v-deep .accessibility-lightbox {\r\n min-width: 300px;\r\n width: 25vw;\r\n &.v-dialog:not(.v-dialog--fullscreen) {\r\n max-height: 70%;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EngageWalkthrough.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EngageWalkthrough.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EngageWalkthrough.vue?vue&type=template&id=f9195064&scoped=true&\"\nimport script from \"./EngageWalkthrough.vue?vue&type=script&lang=js&\"\nexport * from \"./EngageWalkthrough.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EngageWalkthrough.vue?vue&type=style&index=0&id=f9195064&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f9195064\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('PageHeaderCard',{staticClass:\"map-header\",attrs:{\"transparent\":false}}),_c('div',{staticClass:\"map-body\"},[_c('Sidebar',{staticClass:\"map-sidebar\",attrs:{\"pageData\":_vm.pageData}}),_c('Map',{class:'map',attrs:{\"tabindex\":\"-1\",\"pageData\":_vm.pageData,\"refs\":\"map\"},on:{\"mapMoved\":function($event){_vm.accessibilityModalFlag = true;\n _vm.accessibilityModalFlag2 = true;}}}),_c('v-slide-x-reverse-transition',[(_vm.precinct || _vm.groupLocation)?_c('RightSidebar',{class:'map-sidebar-right',attrs:{\"pageData\":_vm.precinct,\"groupData\":_vm.groupLocation}}):_vm._e()],1)],1),_c('v-dialog',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.accessibilityModalFlag2),expression:\"accessibilityModalFlag2\"}],ref:\"accessibilityLightbox\",attrs:{\"content-class\":\"accessibility-lightbox\",\"persistent\":\"\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;(_vm.accessibilityModalFlag2 = false),\n (_vm.accessibilityModalFlag = false),\n _vm.closeAccessibilityLightbox()}},scopedSlots:_vm._u([{key:\"default\",fn:function(dialog){return [_c('v-card',[_c('FocusLoop',{attrs:{\"is-visible\":_vm.activeTrap}},[_c('v-card-title',{staticClass:\"text-h5 accessibility-header lighten-2\"},[_vm._v(\" Accessibility Mode \")]),_c('v-tabs',{attrs:{\"grow\":\"\",\"show-arrows\":\"\"}},[_c('v-tab',{staticClass:\"accessibility-tab\"},[_vm._v(\" Sidebar Content \")]),_c('v-tab-item',[_vm._l((_vm.pageData.children),function(item,i){return _c('v-list-item-group',{key:_vm.pageData.id + 'page_' + i,attrs:{\"link\":\"\"},on:{\"click\":function($event){_vm.markerClicked(item), dialog.value = false;}}},[(item.type == 'mappage')?_c('v-list-item',{staticClass:\"accessibility-btn\",on:{\"click\":function($event){_vm.markerClicked(item);\n dialog.value = false;}}},[_vm._v(\" \"+_vm._s(item.title)+\" \")]):_vm._e()],1)}),_c('v-list-item',{staticClass:\"accessibility-btn\",on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;$event.preventDefault();return _vm.markerClicked()},\"click\":function($event){(_vm.sidebarLightbox = true), (dialog.value = false)}}},[_vm._v(\"Sidebar Overview \")]),(_vm.pageData.next_map !== null)?_c('v-list-item',{staticClass:\"accessibility-btn\",on:{\"click\":function($event){return _vm.gotoPage(_vm.pageData.next_map.html_url)}}},[_vm._v(\" Next - \"+_vm._s(_vm.pageData.next_map.title)+\" \")]):_vm._e(),(\n _vm.pageData.root_map !== null &&\n _vm.pageData.root_map.id !== _vm.pageData.id\n )?_c('v-list-item',{staticClass:\"accessibility-btn\",on:{\"click\":function($event){return _vm.gotoPage(_vm.pageData.root_map.html_url)}}},[_vm._v(\" Home - \"+_vm._s(_vm.pageData.root_map.title)+\" \")]):_vm._e()],2),_c('v-tab',{staticClass:\"accessibility-tab\"},[_vm._v(\" Map Content \")]),_c('v-tab-item',[_vm._l((_vm.pageData.children),function(item,i){return _c('v-list-item-group',{key:_vm.pageData.id + 'page_' + i,staticClass:\"accessibility-btn\",attrs:{\"link\":\"\"},on:{\"click\":function($event){_vm.markerClicked(item) ,(dialog.value = false)}}},[(\n item.type == 'mappopup' ||\n item.type == 'mapzoomtolocation' ||\n item.type == 'imagepreviewpopup'\n )?_c('v-list-item',{on:{\"click\":function($event){_vm.markerClicked(item), (dialog.value = false)}}},[_vm._v(\" \"+_vm._s(item.title)+\" \")]):_vm._e()],1)}),_c('v-list-item',{staticClass:\"accessibility-btn\",on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;$event.preventDefault();return _vm.markerClicked()},\"click\":function($event){(_vm.mapLightbox = true), (dialog.value = false)}}},[_vm._v(\"Map Overview\")]),(_vm.pageData.next_map !== null)?_c('v-list-item',{staticClass:\"accessibility-btn\",on:{\"click\":function($event){return _vm.gotoPage(_vm.pageData.next_map.html_url)}}},[_vm._v(\" Next - \"+_vm._s(_vm.pageData.next_map.title)+\" \")]):_vm._e(),(\n _vm.pageData.root_map !== null &&\n _vm.pageData.root_map.id !== _vm.pageData.id\n )?_c('v-list-item',{staticClass:\"accessibility-btn\",on:{\"click\":function($event){return _vm.gotoPage(_vm.pageData.root_map.html_url)}}},[_vm._v(\" Home - \"+_vm._s(_vm.pageData.root_map.title)+\" \")]):_vm._e()],2),_c('v-tab',[_vm._v(\"Site Navigation \")]),_c('v-tab-item',_vm._l((_vm.siteStructure),function(menuItem,i){return _c('v-list-item',{key:i,attrs:{\"to\":menuItem.pathname,\"link\":\"\"}},[_c('v-list-item-icon',{staticClass:\"mr-4\"},[_c('v-icon',[_vm._v(_vm._s(menuItem.menu_icon))])],1),_c('v-list-item-title',[_vm._v(_vm._s(menuItem.title))])],1)}),1)],1),_c('v-divider'),_c('v-btn',{staticClass:\"close-accessibility-btn\",attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){_vm.closeAccessibilityLightbox(), (dialog.value = false)}}},[_vm._v(\"Close\")])],1)],1)]}}]),model:{value:(_vm.accessibilityModalFlag),callback:function ($$v) {_vm.accessibilityModalFlag=$$v},expression:\"accessibilityModalFlag\"}}),_c('MapLightbox',{attrs:{\"pageData\":_vm.pageData,\"showLightbox\":_vm.showLightbox,\"accessibilityMode\":_vm.accessibilityMode,\"mapLightbox\":_vm.mapLightbox},on:{\"closed\":function($event){(_vm.mapLightbox = false), (_vm.accessibilityModalFlag = true)}}}),_c('LightboxGallery',{attrs:{\"showLightbox\":_vm.lightboxContent.length > 0 && _vm.lightboxReady,\"content\":_vm.lightboxContent},on:{\"closed\":function($event){return _vm.closeLightbox()}}}),(_vm.sidebarLightbox)?_c('LightboxBase',{ref:\"lightbox\",attrs:{\"showLightbox\":_vm.showLightbox},on:{\"closed\":function($event){(_vm.sidebarLightbox = false), (_vm.accessibilityModalFlag = true)}}},[_c('Sidebar',{class:'map-sidebar-accessibility-mode',attrs:{\"pageData\":_vm.pageData}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"scrollable\",staticStyle:{\"z-index\":\"3\",\"background-color\":\"white\"},attrs:{\"data-testid\":\"map-sidebar\",\"id\":\"sidebar-container\"}},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"color\":\"primary lighten-1\",\"elevation\":\"0\"}},[_c('v-btn',{attrs:{\"tabindex\":\"-1\",\"icon\":\"\",\"dark\":\"\"},on:{\"click\":_vm.closeRightSidebar}},[_c('v-icon',[_vm._v(\"mdi-arrow-left\")])],1),_c('v-divider',{staticClass:\"pl-2\",attrs:{\"vertical\":\"\"}}),_c('v-toolbar-title',{staticClass:\"pl-4\"},[_vm._v(\" Information\")]),_c('v-spacer')],1),_c('v-container',{staticClass:\"pb-0\"},[(_vm.pageData && _vm.pageData.content)?_vm._l((_vm.pageData.content),function(block,i){return _c('v-row',{key:i},[_c('v-col',[_c('Streamfield',{attrs:{\"block\":block}})],1)],1)}):_vm._e(),(\n _vm.pageData &&\n _vm.pageData.precinct_select &&\n _vm.pageData.precinct_select.content\n )?_vm._l((_vm.pageData.precinct_select.content),function(block,i){return _c('v-row',{key:i},[_c('v-col',[_c('Streamfield',{attrs:{\"block\":block}})],1)],1)}):_vm._e(),(_vm.groupData && _vm.groupData.right_sidebar_content)?_vm._l((_vm.groupData.right_sidebar_content),function(block,i){return _c('v-row',{key:i},[_c('v-col',[_c('Streamfield',{attrs:{\"block\":block}})],1)],1)}):_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div\r\n style=\"z-index: 3; background-color: white\"\r\n class=\"scrollable\"\r\n data-testid=\"map-sidebar\"\r\n id=\"sidebar-container\"\r\n >\r\n <v-toolbar dark color=\"primary lighten-1\" elevation=\"0\">\r\n <v-btn tabindex=\"-1\" icon dark @click=\"closeRightSidebar\">\r\n <v-icon>mdi-arrow-left</v-icon>\r\n </v-btn>\r\n <v-divider vertical class=\"pl-2\" />\r\n <v-toolbar-title class=\"pl-4\">\r\n <!-- <v-icon class=\"pl-3 pr-3\">{{ pageData.menu_icon }}</v-icon> -->\r\n Information</v-toolbar-title\r\n >\r\n <v-spacer />\r\n <!-- <v-btn icon dark>\r\n <v-icon>mdi-share-variant</v-icon>\r\n </v-btn> -->\r\n </v-toolbar>\r\n <v-container class=\"pb-0\">\r\n <template v-if=\"pageData && pageData.content\">\r\n <v-row v-for=\"(block, i) in pageData.content\" :key=\"i\">\r\n <v-col>\r\n <Streamfield :block=\"block\" />\r\n </v-col>\r\n </v-row>\r\n </template>\r\n\r\n <template\r\n v-if=\"\r\n pageData &&\r\n pageData.precinct_select &&\r\n pageData.precinct_select.content\r\n \"\r\n >\r\n <v-row v-for=\"(block, i) in pageData.precinct_select.content\" :key=\"i\">\r\n <v-col>\r\n <Streamfield :block=\"block\" />\r\n </v-col>\r\n </v-row>\r\n </template>\r\n\r\n <template v-if=\"groupData && groupData.right_sidebar_content\">\r\n <v-row v-for=\"(block, i) in groupData.right_sidebar_content\" :key=\"i\">\r\n <v-col>\r\n <Streamfield :block=\"block\" />\r\n </v-col>\r\n </v-row>\r\n </template>\r\n </v-container>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n// import SidebarPage from \"./SidebarPage.vue\";\r\n// import AddComment from \"./AddComment.vue\"\r\n// import ViewComment from \"./ViewComment.vue\"\r\nimport Streamfield from \"../../components/blocks/streamfieldBlock.vue\";\r\n// import PageShortcutBlock from \"../../components/blocks/pageShortcutBlock.vue\";\r\n\r\nexport default {\r\n name: \"Sidebar\",\r\n props: {\r\n pageData: Object,\r\n groupData: Object,\r\n },\r\n mounted() {},\r\n methods: {\r\n closeRightSidebar() {\r\n this.$store.commit(\"map/setResetMap\", true);\r\n this.$store.commit(\"map/setResetJourney\", true);\r\n this.$store.commit(\"map/setResetLocation\", true);\r\n this.$store.commit(\"map/setSelectedLocation\", null);\r\n this.$store.commit(\"map/setRenderLocation\", null);\r\n this.$store.commit(\"map/setGroupLocation\", null);\r\n this.$store.commit(\"map/setRightSidebarZoomLevel\", null);\r\n this.$store.commit(\"map/setPrecinct\", null);\r\n this.$store.commit(\"map/setBackupPrecinct\", null);\r\n this.$store.commit(\"map/setHotspotGroupSelectedLocation\", null);\r\n this.$store.commit(\"map/setJourney\", {\r\n startLocation: null,\r\n stopLocation: null,\r\n entrance: null,\r\n exit: null,\r\n });\r\n this.$root.$emit(\"close-precinct\")\r\n },\r\n },\r\n watch: {\r\n groupData(newVal, oldVal) {\r\n console.log(\"clicked myProp changed from\", oldVal, \"to\", newVal);\r\n },\r\n },\r\n components: {\r\n Streamfield,\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.scrollable {\r\n overflow-y: auto;\r\n overflow-x: none;\r\n /* position: absolute;\r\n right: 0;\r\n top: 0;\r\n left: 0; */\r\n}\r\n\r\n.map-legend {\r\n display: none;\r\n}\r\n\r\n.card-text {\r\n color: rgba(0, 0, 0, 1) !important;\r\n}\r\n\r\n@media (max-width: 600px) {\r\n .map-legend {\r\n display: block;\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n }\r\n\r\n .header {\r\n display: none;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RightSidebar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RightSidebar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RightSidebar.vue?vue&type=template&id=c5508b90&scoped=true&\"\nimport script from \"./RightSidebar.vue?vue&type=script&lang=js&\"\nexport * from \"./RightSidebar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RightSidebar.vue?vue&type=style&index=0&id=c5508b90&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c5508b90\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"scrollable\",staticStyle:{\"z-index\":\"3\",\"background-color\":\"white\"},attrs:{\"data-testid\":\"map-sidebar\",\"id\":\"sidebar-container\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;$event.preventDefault();return _vm.testFunc()}}},[_c('v-toolbar',{attrs:{\"dark\":_vm.primaryIsDark ? true : false,\"color\":\"primary lighten-1\",\"elevation\":\"0\"}},[_c('v-btn',{attrs:{\"dark\":_vm.primaryIsDark ? true : false,\"tabindex\":\"-1\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.back()}}},[_c('v-icon',[_vm._v(\"mdi-arrow-left\")])],1),_c('v-divider',{staticClass:\"pl-2\",attrs:{\"vertical\":\"\"}}),_c('v-toolbar-title',{staticClass:\"pl-4\"},[_vm._v(\" \"+_vm._s(_vm.pageData.title))]),_c('v-spacer')],1),_c('v-container',{staticClass:\"pb-0\"},_vm._l((_vm.pageData.description),function(block,i){return _c('v-row',{key:i},[_c('v-col',[_c('Streamfield',{attrs:{\"block\":block}})],1)],1)}),1),(_vm.childPages.length > 0)?_c('v-container',{staticClass:\"pb-0\"},[_c('v-row',[_c('v-col',{staticClass:\"pb-3\"},[_c('v-divider')],1)],1),_c('v-row',[_c('v-col',{staticClass:\"pb-0\"},[_c('v-alert',{staticClass:\"mb-0\",attrs:{\"type\":\"info\",\"color\":\"secondary\",\"border\":\"left\"}},[_vm._v(\" Click on the topics below for more information \")])],1)],1),_vm._l((_vm.childPages),function(menuItem,i){return _c('v-row',{key:i},[_c('v-col',{staticClass:\"pb-0\"},[_c('v-hover',{scopedSlots:_vm._u([{key:\"default\",fn:function({ hover }){return [_c('v-card',{style:(_vm.getBorderStyle(\n _vm.getPrimaryColour(menuItem.primary_colour_override)\n )),attrs:{\"elevation\":hover ? 4 : 1},on:{\"click\":function($event){return _vm.clickChild(menuItem)}}},[_c('v-card-text',{staticClass:\"text-subtitle-1 card-text\"},[_c('v-icon',{staticClass:\"mr-4\",attrs:{\"color\":_vm.getPrimaryColour(menuItem.primary_colour_override)}},[_vm._v(_vm._s(menuItem.menu_icon))]),_vm._v(_vm._s(menuItem.title))],1)],1)]}}],null,true)})],1)],1)}),_c('v-row',[_c('v-col',{staticClass:\"pt-6 pb-0\"},[_c('v-divider')],1)],1)],2):_vm._e(),_c('v-container',[(_vm.pageData.next_map !== null)?_c('v-row',[_c('v-col',{staticClass:\"pb-0\"},[_c('v-btn',{attrs:{\"block\":\"\",\"color\":\"primary lighten-1\"},on:{\"click\":function($event){return _vm.gotoPage(_vm.pageData.next_map.html_url)}}},[_vm._v(\"Next - \"+_vm._s(_vm.pageData.next_map.title))])],1)],1):_vm._e(),(\n _vm.pageData.prev_map !== null &&\n _vm.pageData.root_map.id !== _vm.pageData.prev_map.id\n )?_c('v-row',[_c('v-col',{staticClass:\"pb-0\"},[_c('v-btn',{attrs:{\"block\":\"\",\"color\":\"primary lighten-1\"},on:{\"click\":function($event){return _vm.gotoPage(_vm.pageData.prev_map.html_url)}}},[_vm._v(\"Prev - \"+_vm._s(_vm.pageData.prev_map.title))])],1)],1):_vm._e(),(\n _vm.pageData.root_map !== null && _vm.pageData.root_map.id !== _vm.pageData.id\n )?_c('v-row',[_c('v-col',[_c('v-btn',{attrs:{\"block\":\"\",\"color\":\"primary lighten-1\"},on:{\"click\":function($event){return _vm.gotoPage(_vm.pageData.root_map.html_url)}}},[_vm._v(\"Home - \"+_vm._s(_vm.pageData.root_map.title))])],1)],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div\r\n @keydown.up.exact.prevent=\"testFunc()\"\r\n style=\"z-index: 3; background-color: white\"\r\n class=\"scrollable\"\r\n data-testid=\"map-sidebar\"\r\n id=\"sidebar-container\"\r\n >\r\n <v-toolbar :dark=\"primaryIsDark ? true : false\" color=\"primary lighten-1\" elevation=\"0\">\r\n <v-btn :dark=\"primaryIsDark ? true : false\" tabindex=\"-1\" icon @click=\"back()\">\r\n <v-icon>mdi-arrow-left</v-icon>\r\n </v-btn>\r\n <v-divider vertical class=\"pl-2\" />\r\n <v-toolbar-title class=\"pl-4\">\r\n <!-- <v-icon class=\"pl-3 pr-3\">{{ pageData.menu_icon }}</v-icon> -->\r\n {{ pageData.title }}</v-toolbar-title\r\n >\r\n <v-spacer />\r\n </v-toolbar>\r\n\r\n <v-container class=\"pb-0\">\r\n <v-row v-for=\"(block, i) in pageData.description\" :key=\"i\">\r\n <v-col>\r\n <Streamfield :block=\"block\" />\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n\r\n <v-container class=\"pb-0\" v-if=\"childPages.length > 0\">\r\n <v-row>\r\n <v-col class=\"pb-3\">\r\n <v-divider />\r\n </v-col>\r\n </v-row>\r\n <v-row>\r\n <v-col class=\"pb-0\">\r\n <v-alert type=\"info\" color=\"secondary\" border=\"left\" class=\"mb-0\">\r\n Click on the topics below for more information\r\n </v-alert>\r\n </v-col>\r\n </v-row>\r\n <v-row v-for=\"(menuItem, i) in childPages\" :key=\"i\">\r\n <v-col class=\"pb-0\">\r\n <v-hover>\r\n <template v-slot:default=\"{ hover }\">\r\n <v-card\r\n :elevation=\"hover ? 4 : 1\"\r\n @click=\"clickChild(menuItem)\"\r\n :style=\"\r\n getBorderStyle(\r\n getPrimaryColour(menuItem.primary_colour_override)\r\n )\r\n \"\r\n >\r\n <v-card-text class=\"text-subtitle-1 card-text\"\r\n ><v-icon\r\n class=\"mr-4\"\r\n :color=\"getPrimaryColour(menuItem.primary_colour_override)\"\r\n >{{ menuItem.menu_icon }}</v-icon\r\n >{{ menuItem.title }}</v-card-text\r\n >\r\n </v-card>\r\n </template>\r\n </v-hover>\r\n </v-col>\r\n </v-row>\r\n <v-row>\r\n <v-col class=\"pt-6 pb-0\">\r\n <v-divider />\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n\r\n <v-container>\r\n <v-row v-if=\"pageData.next_map !== null\">\r\n <v-col class=\"pb-0\">\r\n <v-btn\r\n block\r\n color=\"primary lighten-1\"\r\n @click=\"gotoPage(pageData.next_map.html_url)\"\r\n >Next - {{ pageData.next_map.title }}</v-btn>\r\n </v-col>\r\n </v-row>\r\n <v-row\r\n v-if=\"\r\n pageData.prev_map !== null &&\r\n pageData.root_map.id !== pageData.prev_map.id\r\n \"\r\n >\r\n <v-col class=\"pb-0\">\r\n <v-btn\r\n block\r\n color=\"primary lighten-1\"\r\n @click=\"gotoPage(pageData.prev_map.html_url)\"\r\n >Prev - {{ pageData.prev_map.title }}</v-btn\r\n >\r\n </v-col>\r\n </v-row>\r\n <v-row\r\n v-if=\"\r\n pageData.root_map !== null && pageData.root_map.id !== pageData.id\r\n \"\r\n >\r\n <v-col>\r\n <v-btn\r\n block\r\n color=\"primary lighten-1\"\r\n @click=\"gotoPage(pageData.root_map.html_url)\"\r\n >Home - {{ pageData.root_map.title }}</v-btn\r\n >\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\nimport Streamfield from \"../../components/blocks/streamfieldBlock.vue\";\r\nimport {isDark} from \"../../util/color\"\r\n\r\nexport default {\r\n name: \"Sidebar\",\r\n data: () => ({\r\n primaryIsDark: false,\r\n items: [\r\n { text: \"Example Expanded 1\", icon: \"mdi-car\" },\r\n { text: \"Example Expander 2\", icon: \"mdi-car\" },\r\n { text: \"Example Expander 3\", icon: \"mdi-car\" },\r\n ],\r\n }),\r\n props: {\r\n pageData: Object,\r\n },\r\n mounted() {\r\n this.primaryIsDark = isDark(this.$vuetify.theme.currentTheme.primary)\r\n },\r\n components: {\r\n Streamfield,\r\n },\r\n computed: {\r\n locations() {\r\n return [\r\n {\r\n id: 1,\r\n title: \"Location 1\",\r\n entrances: [\"Entrance 1\", \"Entrance 2\"],\r\n exits: [\"Exit 1\", \"Exit 2\"],\r\n },\r\n {\r\n id: 2,\r\n title: \"Location 2\",\r\n entrances: [\"Entrance 3\", \"Entrance 4\"],\r\n exits: [\"Exit 3\", \"Exit 4\"],\r\n },\r\n {\r\n id: 3,\r\n title: \"Location 3\",\r\n entrances: [\"Entrance 5\", \"Entrance 6\"],\r\n exits: [\"Exit 5\", \"Exit 6\"],\r\n },\r\n ];\r\n },\r\n count() {\r\n return this.$store.state.map.currentPage;\r\n },\r\n childPages() {\r\n let pages = [];\r\n for (let child of this.pageData.children) {\r\n if (child.type === \"mappage\" || child.type === \"mapvirtualtourpage\")\r\n pages.push(child);\r\n }\r\n return pages;\r\n },\r\n primaryColor() {\r\n return this.$vuetify.theme.currentTheme.primary\r\n }\r\n },\r\n watch: {\r\n primaryColor(value) {\r\n // On primary color change, determine whether it's light or dark\r\n this.primaryIsDark = isDark(value)\r\n },\r\n count() {\r\n this.$el.scrollTop = 0;\r\n },\r\n selectLocation: {\r\n handler() {\r\n if (this.selectLocation) {\r\n this.locationOptions = this.selectLocation.value.selected_location;\r\n }\r\n },\r\n immediate: true,\r\n },\r\n },\r\n methods: {\r\n back() {\r\n console.log(\"Back\");\r\n this.$router.back();\r\n },\r\n gotoPage(url) {\r\n this.$router.push(new URL(url).pathname);\r\n },\r\n getMenuUrl(htmlUrl) {\r\n return new URL(htmlUrl).pathname;\r\n },\r\n testFunc() {\r\n console.log(\"triggered from sidebar\");\r\n },\r\n getPrimaryColour(childColour) {\r\n if (childColour !== null) return childColour;\r\n return this.$vuetify.theme.themes.light.primary;\r\n },\r\n getSecondaryColour(childColour) {\r\n if (childColour !== null) return childColour;\r\n return this.$vuetify.theme.themes.light.secondary;\r\n },\r\n getBorderStyle(colour) {\r\n return \"border-left: 8px solid \" + colour;\r\n },\r\n logger(text) {\r\n console.log(text);\r\n },\r\n clickChild(child) {\r\n this.$router.push(new URL(child.html_url).pathname);\r\n },\r\n updateSiblings() {\r\n //Reset the prev/next pages\r\n this.prevPage = undefined;\r\n this.nextPage = undefined;\r\n\r\n let returnNext = false;\r\n if (this.pageData.siblings.length > 1) {\r\n let prevSibling = undefined;\r\n for (let sibling of this.pageData.siblings) {\r\n console.log(sibling);\r\n //Assign the next page\r\n if (returnNext) {\r\n this.nextPage = sibling;\r\n returnNext = false;\r\n }\r\n\r\n if (sibling.id === this.pageData.id) {\r\n returnNext = true;\r\n\r\n //Assign the prev page\r\n this.prevPage = prevSibling;\r\n }\r\n\r\n prevSibling = sibling;\r\n }\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.scrollable {\r\n overflow-y: auto;\r\n overflow-x: none;\r\n}\r\n\r\n.v-btn {\r\n white-space: normal;\r\n min-height: 36px;\r\n height: fit-content !important;\r\n max-height: fit-content !important; \r\n padding: 5px 16px !important;\r\n\r\n}\r\n::v-deep .v-btn__content {\r\n width: 100%;\r\n }\r\n\r\n.map-legend {\r\n display: none;\r\n}\r\n\r\n.card-text {\r\n color: rgba(0, 0, 0, 1) !important;\r\n}\r\n\r\n@media (max-width: 600px) {\r\n .map-legend {\r\n display: block;\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n }\r\n\r\n .header {\r\n display: none;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Sidebar.vue?vue&type=template&id=c4f89a58&scoped=true&\"\nimport script from \"./Sidebar.vue?vue&type=script&lang=js&\"\nexport * from \"./Sidebar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Sidebar.vue?vue&type=style&index=0&id=c4f89a58&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c4f89a58\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticStyle:{\"overflow\":\"hidden\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;$event.preventDefault();return _vm.nextMarker()},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;$event.preventDefault();return _vm.prevMarker()}]}},[(_vm.pageData !== undefined)?_c('MapArc',{ref:\"map\",attrs:{\"legendOpacity\":_vm.pageData.legend_opacity,\"showLegend\":_vm.pageData.show_legend,\"showLegendWidget\":true,\"basemapWidget\":_vm.pageData.basemap_widget,\"mapZoom\":_vm.pageData.zoom,\"cameraTilt\":_vm.cameraTilt,\"heading\":_vm.heading,\"mapMinZoom\":_vm.pageData.minZoom,\"mapMaxZoom\":_vm.pageData.maxZoom,\"mapCenter\":[_vm.pageData.lng, _vm.pageData.lat],\"bottomLeftExtent\":_vm.pageData.bottomLeftpoint,\"topRightExtent\":_vm.pageData.topRightpoint,\"isRotationEnabled\":_vm.pageData.disableMapRotation,\"portalItemId\":_vm.portalItemId,\"portalItemType\":_vm.portalItemType,\"filterJson\":_vm.$store.state.map.layerFilter,\"layerOptions\":_vm.layerOptions,\"tokens\":_vm.pageData.tokens,\"selectedLayers\":_vm.selectedLayers,\"renderLayer\":_vm.renderLayer,\"renderView2d\":_vm.renderView2d,\"tabindex\":\"-1\"},on:{\"ready\":function($event){return _vm.mapReady()},\"mapLoadStart\":function($event){_vm.loading = true},\"mapLoadEnd\":function($event){_vm.loading = false},\"mapMoved\":_vm.mapMoved,\"mapZoomed\":_vm.mapZoomed,\"resetTilt\":function($event){_vm.cameraTilt = $event}}},_vm._l((_vm.pageData.children),function(item,i){return _c('div',{key:_vm.pageData.id + 'page_' + i,on:{\"click\":function($event){return _vm.markerClicked(item)}}},[(\n (item.type == 'mappage' && item.showMarker) ||\n item.type == 'precinctlocation' ||\n (item.type !== 'mappage' && item.lat !== null && item.lng !== null)\n )?_c('MapMarkerArcHtml',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n _vm.showMarkers &&\n item.min_marker_zoom <= _vm.currZoomLevel &&\n item.max_marker_zoom >= _vm.currZoomLevel\n ),expression:\"\\n showMarkers &&\\n item.min_marker_zoom <= currZoomLevel &&\\n item.max_marker_zoom >= currZoomLevel\\n \"}],attrs:{\"id\":i,\"coordinates\":[item.lng, item.lat],\"colour\":_vm.secondaryColor,\"title\":item.title,\"icon\":item.menu_icon,\"mapCenter\":_vm.mapCenter,\"mapArc\":_vm.$refs.map,\"arialabel\":_vm.getAriaLabel(item),\"currZoomLevel\":_vm.currZoomLevel,\"markerType\":item.type,\"layerData\":{ lat: item.lat, lng: item.lng },\"hotspotGroupData\":item.hotspotGroup,\"thumbnailImage\":item.thumbnail_image},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;$event.preventDefault();return _vm.nextMarker()},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;$event.preventDefault();return _vm.prevMarker()}]}}):_vm._e()],1)}),0):_vm._e(),(this.currStickyItem != undefined && _vm.colsBreakpoint !== false)?_c('MapStickyCard',{attrs:{\"stickyItemData\":this.currStickyItem}}):_vm._e(),_c('Loading',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"loading\"}),_c('LightboxGallery',{attrs:{\"showLightbox\":_vm.lightboxContent.length > 0 && _vm.lightboxReady,\"content\":_vm.lightboxContent},on:{\"closed\":function($event){return _vm.closeLightbox()}}}),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.isMounted)?_c('div',{attrs:{\"tabindex\":\"-1\"}}):_vm._e(),_c('div',{staticClass:\"map-html-overlays\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.renderView2d)?_c('RenderView2d',{staticClass:\"render-view-2d\",attrs:{\"data\":_vm.renderView2d}}):_vm._e()],1),_c('div',{class:['background-renderimage', { 'render-ready': _vm.renderReady }],style:(_vm.backgroundStyle)}),(_vm.renderView)?_c('v-card',{staticClass:\"pa-3 render-view-toggle\",attrs:{\"title\":\"Close 3D View\",\"prepend-icon\":\"mdi-close\"}},[_c('v-btn',{attrs:{\"text\":\"\",\"large\":\"\"},on:{\"click\":_vm.reset}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" mdi-sitemap-outline \")]),_vm._v(\" Network View \")],1),_c('v-btn',{attrs:{\"text\":\"\",\"large\":\"\"},on:{\"click\":_vm.returnToStation}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" mdi-train \")]),_vm._v(\" Precinct View \")],1)],1):_vm._e(),_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('img',{style:({ overflow: 'hidden' }),attrs:{\"name\":\"rendered-image\",\"src\":_vm.data.location_render_image.file,\"alt\":_vm.data.location_render_image.alternative_text,\"height\":\"100%\",\"width\":\"100%\"},on:{\"load\":function($event){return _vm.clearLoading()}}}),_vm._l((this.imageHotspots),function(hotspot){return _c('div',[_c('v-scale-transition',{attrs:{\"origin\":\"center center\"}},[_c('ConcentricCircles',{directives:[{name:\"show\",rawName:\"v-show\",value:(true),expression:\"true\"}],staticClass:\"hotspot-circle-map-marker\",style:({\n position: 'absolute',\n top: hotspot.top + '%',\n left: hotspot.left + '%',\n })})],1),_c('v-btn',{key:hotspot.title,staticClass:\"details-button white--text secondary\",style:({\n position: 'absolute',\n top: hotspot.top + '%',\n left: hotspot.left + '%',\n pointerEvents: 'all'\n }),on:{\"mouseenter\":function($event){_vm.showCircle = false},\"mouseleave\":function($event){_vm.showCircle = true},\"click\":() => _vm.handleClick(hotspot)}},[(hotspot.menu_icon !== null)?_c('v-icon',{staticClass:\"marker-icon\"},[_vm._v(_vm._s(hotspot.menu_icon))]):_vm._e(),_c('span',{staticClass:\"d-inline-block text-center marker-title\"},[_vm._v(_vm._s(hotspot.title))])],1)],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <img \r\n name=\"rendered-image\" \r\n :src=\"data.location_render_image.file\" \r\n :alt=\"data.location_render_image.alternative_text\"\r\n :style=\"{ overflow: 'hidden' }\"\r\n height=\"100%\" \r\n width=\"100%\" \r\n v-on:load=\"clearLoading()\"\r\n >\r\n <div v-for=\"hotspot in this.imageHotspots\">\r\n <v-scale-transition origin=\"center center\">\r\n <ConcentricCircles\r\n v-show=\"true\"\r\n class=\"hotspot-circle-map-marker\"\r\n :style=\"{\r\n position: 'absolute',\r\n top: hotspot.top + '%',\r\n left: hotspot.left + '%',\r\n }\"\r\n />\r\n </v-scale-transition>\r\n <v-btn\r\n class=\"details-button white--text secondary\"\r\n :key=\"hotspot.title\"\r\n :style=\"{\r\n position: 'absolute',\r\n top: hotspot.top + '%',\r\n left: hotspot.left + '%',\r\n pointerEvents: 'all'\r\n }\"\r\n @mouseenter=\"showCircle = false\"\r\n @mouseleave=\"showCircle = true\"\r\n @click=\"() => handleClick(hotspot)\"\r\n >\r\n <v-icon class=\"marker-icon\" v-if=\"hotspot.menu_icon !== null\">{{ hotspot.menu_icon }}</v-icon>\r\n <span class=\"d-inline-block text-center marker-title\">{{ hotspot.title }}</span>\r\n </v-btn>\r\n </div>\r\n\r\n </div>\r\n</template>\r\n<script>\r\n\r\n\r\nimport ConcentricCircles from \"../panorama/ConcentricCircles.vue\";\r\nexport default {\r\n name: \"RenderView2d\",\r\n data: () => ({\r\n imageHotspots: [],\r\n }),\r\n props:[\"data\"],\r\n components: {\r\n ConcentricCircles\r\n },\r\n\r\n async mounted() {\r\n try{\r\n\r\n const {items} = await this.$store.dispatch('wagtail/getPageChildren', this.data.id);\r\n\r\n let hotspotData =[]\r\n\r\n for(const item of items) {\r\n\r\n const imageHotspot = await this.$store.dispatch('wagtail/getPageById', item.id);\r\n hotspotData.push(imageHotspot)\r\n\r\n }\r\n\r\n this.imageHotspots = hotspotData;\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n },\r\n methods: {\r\n handleClick(hotspot) {\r\n this.$store.dispatch(\"wagtail/setCurrentPopup\", { content: hotspot.content});\r\n this.$root.$emit('open-lightbox')\r\n },\r\n clearLoading() {\r\n this.$root.$emit('clear-loading')\r\n }\r\n },\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RenderView2d.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RenderView2d.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RenderView2d.vue?vue&type=template&id=103b0568&\"\nimport script from \"./RenderView2d.vue?vue&type=script&lang=js&\"\nexport * from \"./RenderView2d.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\r\n <div>\r\n <!-- <transition name=\"fade\">\r\n <div v-show=\"loading\" :style=\"{ position: 'absolute', height: '100%', width: '100%' }\">\r\n <Loading />\r\n </div>\r\n </transition> -->\r\n <div tabindex=\"-1\" v-if=\"isMounted\">\r\n <!-- <slot /> -->\r\n </div>\r\n <div class=\"map-html-overlays\">\r\n <transition name=\"fade\">\r\n <RenderView2d\r\n v-if=\"renderView2d\"\r\n :data=\"renderView2d\"\r\n class=\"render-view-2d\"\r\n />\r\n </transition>\r\n <div\r\n :class=\"['background-renderimage', { 'render-ready': renderReady }]\"\r\n :style=\"backgroundStyle\"\r\n ></div>\r\n <v-card\r\n v-if=\"renderView\"\r\n title=\"Close 3D View\"\r\n prepend-icon=\"mdi-close\"\r\n class=\"pa-3 render-view-toggle\"\r\n >\r\n <v-btn text large @click=\"reset\">\r\n <v-icon left> mdi-sitemap-outline </v-icon> Network View\r\n </v-btn>\r\n <v-btn text large @click=\"returnToStation\">\r\n <v-icon left> mdi-train </v-icon> Precinct View\r\n </v-btn>\r\n </v-card>\r\n <slot />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { loadModules } from \"esri-loader\";\r\nimport { Camera } from \"@egjs/view360\";\r\nimport RenderView2d from \"./RenderView2d.vue\";\r\n\r\n// import { extractFilenameFromHeader } from \"../../../dist/pdfjs/build/pdf\";\r\n// import ApiService from \"../services/api.service\"\r\n\r\nexport default {\r\n name: \"MapArc\",\r\n components: { RenderView2d },\r\n data: () => ({\r\n isMounted: false,\r\n handler: {\r\n doubleClick: null,\r\n mouseWheel: null,\r\n mouseWheelToggle: null,\r\n dragStart: null,\r\n drag: null,\r\n keyDown: null,\r\n isWheelScrolled: false,\r\n },\r\n scrollTimeout: null,\r\n renderView: null,\r\n renderReady: false,\r\n }),\r\n props: [\r\n \"selectedLayers\",\r\n \"mapZoom\",\r\n \"cameraTilt\",\r\n \"heading\",\r\n \"mapMinZoom\",\r\n \"mapMaxZoom\",\r\n \"mapCenter\",\r\n \"bottomLeftExtent\",\r\n \"topRightExtent\",\r\n \"portalItemId\",\r\n \"portalItemType\",\r\n \"filterJson\",\r\n \"layerOptions\",\r\n \"tokens\",\r\n \"basemapWidget\",\r\n \"showLegend\",\r\n \"showLegendWidget\",\r\n \"legendOpacity\",\r\n \"renderLayer\",\r\n \"renderView2d\",\r\n ],\r\n provide() {\r\n const self = this;\r\n return {\r\n get map() {\r\n return self.map;\r\n },\r\n get markerLayer() {\r\n return self.markerLayer;\r\n },\r\n get view() {\r\n return self.view;\r\n },\r\n };\r\n },\r\n\r\n created() {\r\n console.log(\"MapCreated\");\r\n this.maps = [];\r\n },\r\n\r\n mounted() {\r\n console.log(\"MapMounted\");\r\n console.log(\"[RENDER]\", this.renderLayer);\r\n\r\n if (this.legendOpacity != null) {\r\n const style = document.createElement(\"style\");\r\n style.id = \"dynamic-legend-style\"; // Add an ID for easy reference\r\n style.innerHTML = `.esri-legend { background-color: rgba(255, 255, 255, ${this.legendOpacity}); }`;\r\n document.head.appendChild(style);\r\n } else {\r\n const style = document.createElement(\"style\");\r\n style.id = \"dynamic-legend-style\"; // Add an ID for easy reference\r\n style.innerHTML = `.esri-legend { background-color: rgba(255, 255, 255, 1); }`;\r\n document.head.appendChild(style);\r\n }\r\n // console.log( \"ultima\", this.bottomLeftExtent,\r\n // this.topRightExtent, Number(this.topRightExtent.x))\r\n this.view = undefined;\r\n this.map = undefined;\r\n this.markerLayer = undefined;\r\n\r\n // this.tokens = this.$store.state.map.esriTokens;\r\n\r\n // Get ArcGIS Tokens\r\n // ApiService.getEsriToken().then((response) => {\r\n\r\n // this.$store.state.map.tokens = response.data\r\n\r\n // lazy load the required ArcGIS API for JavaScript modules and CSS\r\n loadModules(\r\n [\r\n \"esri/WebMap\",\r\n \"esri/views/MapView\",\r\n \"esri/WebScene\",\r\n \"esri/views/SceneView\",\r\n \"esri/identity/IdentityManager\",\r\n \"esri/widgets/Search\",\r\n \"esri/widgets/Expand\",\r\n \"esri/widgets/Legend\",\r\n \"esri/widgets/BasemapGallery\",\r\n \"esri/core/watchUtils\",\r\n \"esri/renderers/visualVariables/RotationVariable\",\r\n ],\r\n {\r\n css: true,\r\n }\r\n ).then(\r\n ([\r\n WebMap,\r\n MapView,\r\n WebScene,\r\n SceneView,\r\n IdentityManager,\r\n Search,\r\n Expand,\r\n Legend,\r\n BasemapGallery,\r\n watchUtils,\r\n RotationVariable,\r\n ]) => {\r\n let self = this;\r\n // console.log(this.mapZoom);\r\n // Firstly any tokens for ArcGIS\r\n this.tokens.forEach(function (token) {\r\n // console.log(\"TOKEN!!!\");\r\n // console.log({\r\n // token: token.token,\r\n // server: token.server_url,\r\n // });\r\n IdentityManager.registerToken({\r\n token: token.token,\r\n server: token.server_url,\r\n });\r\n });\r\n\r\n console.log(\"portalItemId: \" + this.portalItemId);\r\n console.log(\"portalItemType: \" + this.portalItemType);\r\n\r\n if (this.portalItemType == \"webscene\") {\r\n console.log('I am a webscene')\r\n if (this.portalItemId !== null && this.portalItemId !== undefined) {\r\n console.log('I am not Null')\r\n\r\n this.map = new WebScene({\r\n portalItem: {\r\n id: this.portalItemId,\r\n },\r\n });\r\n } else {\r\n console.log('I am Null')\r\n\r\n this.map = new WebScene({\r\n basemap: \"topo\",\r\n ground: \"world-elevation\",\r\n });\r\n }\r\n console.log(\"sassadasd\", this.bottomLeftExtent);\r\n \r\n // Create the scene view\r\n if (this.bottomLeftExtent !== null || this.topRightExtent !== null) {\r\n console.log(\"cringefest 1\")\r\n self.view = new SceneView({\r\n container: this.$el,\r\n map: this.map,\r\n zoom: this.mapZoom,\r\n center: this.mapCenter,\r\n });\r\n\r\n self.view.minScale = 3; // Example value\r\n\r\n // self.view.constraints = {\r\n // geometry: {\r\n // type: \"extent\",\r\n // xmin: Number(this.bottomLeftExtent.x),\r\n // ymin: Number(this.bottomLeftExtent.y),\r\n // xmax: Number(this.topRightExtent.x),\r\n // ymax: Number(this.topRightExtent.y),\r\n // },\r\n // minZoom: 7,\r\n // rotationEnabled: this.isRotationEnabled,\r\n // maxZoom: 12,\r\n // };\r\n }else{\r\n console.log(\"cringefest 2\")\r\n this.view = new SceneView({\r\n container: this.$el,\r\n map: this.map,\r\n zoom: this.mapZoom,\r\n center: this.mapCenter,\r\n });\r\n\r\n this.view.constraints = {\r\n minZoom: this.mapMinZoom,\r\n rotationEnabled: this.isRotationEnabled,\r\n maxZoom: this.mapMaxZoom,\r\n };\r\n }\r\n console.log(\"View\", this.view);\r\n } //Just create a regular map if webscene isn't specified\r\n else {\r\n if (this.portalItemId !== null && this.portalItemId !== undefined) {\r\n this.map = new WebMap({\r\n portalItem: {\r\n id: this.portalItemId,\r\n },\r\n });\r\n } else {\r\n this.map = new WebMap({\r\n basemap: \"topo\",\r\n });\r\n }\r\n\r\n // Create the scene view\r\n if (this.bottomLeftExtent !== null || this.topRightExtent !== null) {\r\n this.view = new MapView({\r\n container: this.$el,\r\n map: this.map,\r\n zoom: this.mapZoom,\r\n center: this.mapCenter,\r\n });\r\n this.view.constraints = {\r\n geometry: {\r\n type: \"extent\",\r\n xmin: Number(this.bottomLeftExtent.x),\r\n ymin: Number(this.bottomLeftExtent.y),\r\n xmax: Number(this.topRightExtent.x),\r\n ymax: Number(this.topRightExtent.y),\r\n },\r\n minZoom: this.mapMinZoom,\r\n maxZoom: this.mapMaxZoom,\r\n rotationEnabled: this.isRotationEnabled,\r\n };\r\n } else {\r\n this.view = new MapView({\r\n container: this.$el,\r\n map: this.map,\r\n zoom: this.mapZoom,\r\n center: this.mapCenter,\r\n });\r\n this.view.constraints = {\r\n minZoom: this.mapMinZoom,\r\n maxZoom: this.mapMaxZoom,\r\n rotationEnabled: this.isRotationEnabled,\r\n };\r\n }\r\n }\r\n\r\n this.handler.mouseWheelToggle = this.view.on(\"mouse-wheel\", () => {\r\n this.isWheelScrolled = true;\r\n this.$store.commit(\"map/setScrollZoom\", this.isWheelScrolled);\r\n // Clear existing timeout if any\r\n if (this.scrollTimeout) {\r\n clearTimeout(this.scrollTimeout);\r\n }\r\n\r\n // Set a new timeout to reset the boolean value\r\n this.scrollTimeout = setTimeout(() => {\r\n this.isWheelScrolled = false;\r\n this.$store.commit(\"map/setScrollZoom\", this.isWheelScrolled);\r\n }, 200);\r\n });\r\n\r\n this.view.ui.move(\r\n [\"zoom\", \"navigation-toggle\", \"compass\"],\r\n \"top-right\"\r\n );\r\n // this.view.popup.autoOpenEnabled = false;\r\n this.view.popup.autoCloseEnabled = true;\r\n this.view.popup.dockEnabled = false;\r\n this.view.popup.actions = [];\r\n this.view.popup.dockOptions = { buttonEnabled: false };\r\n\r\n // Change the cursor to pointer if we're hovering a marker\r\n this.view.on(\"pointer-move\", function (evt) {\r\n var screenPoint = {\r\n x: evt.x,\r\n y: evt.y,\r\n };\r\n self.view.hitTest(screenPoint).then(function (response) {\r\n self.$el.style.cursor = \"default\";\r\n if (response.results.length > 0)\r\n if (response.results[0].graphic.layer === self.markerLayer)\r\n self.$el.style.cursor = \"pointer\";\r\n });\r\n });\r\n\r\n this.view.on(\"click\", function (evt) {\r\n var screenPoint = {\r\n x: evt.x,\r\n y: evt.y,\r\n };\r\n\r\n console.log(evt.mapPoint.longitude);\r\n console.log(evt.mapPoint.latitude);\r\n\r\n self.view.hitTest(screenPoint).then(function (response) {\r\n if (\r\n response.results.length === 0 &&\r\n self.$store.state.mapTool === \"comment\"\r\n ) {\r\n self.$store.dispatch(\"map/placeComment\", [\r\n evt.mapPoint.longitude,\r\n evt.mapPoint.latitude,\r\n ]);\r\n }\r\n });\r\n });\r\n\r\n // Fire an event when the map changes it's focus\r\n watchUtils.watch(self.view, \"extent\", function () {\r\n console.log(\"asdasddasasd\");\r\n self.$emit(\"mapMoved\", self.view.extent);\r\n self.$emit(\"mapZoomed\", self.view.zoom);\r\n });\r\n\r\n //Add the default search widget\r\n const search = new Search({\r\n view: this.view,\r\n });\r\n this.view.ui.add(search, \"top-left\");\r\n\r\n // Add the legend widget\r\n const legend = new Expand({\r\n content: new Legend({\r\n view: this.view,\r\n }),\r\n view: this.view,\r\n expanded: this.showLegend,\r\n });\r\n\r\n if(this.showLegendWidget){\r\n this.view.ui.add(legend, \"bottom-left\");\r\n }\r\n\r\n // Add the basemap widget\r\n const basemapGallery = new Expand({\r\n content: new BasemapGallery({\r\n view: this.view,\r\n }),\r\n view: this.view,\r\n expanded: false,\r\n });\r\n\r\n if (this.basemapWidget) {\r\n this.view.ui.add(basemapGallery, \"bottom-l;eft\");\r\n }\r\n\r\n this.isMounted = true;\r\n self.$emit(\"mapLoadEnd\");\r\n this.$emit(\"ready\");\r\n }\r\n );\r\n // });\r\n },\r\n methods: {\r\n reset() {\r\n this.$store.commit(\"map/setResetMap\", true);\r\n this.$store.commit(\"map/setResetJourney\", true);\r\n this.$store.commit(\"map/setResetLocation\", true);\r\n this.$store.commit(\"map/setSelectedLocation\", null);\r\n this.$store.commit(\"map/setPrecinct\", null);\r\n this.$store.commit(\"map/setGroupLocation\", null);\r\n this.$store.commit(\"map/setRightSidebarZoomLevel\", null);\r\n this.$store.commit(\"map/setBackupPrecinct\", null);\r\n this.renderReady = false;\r\n this.$store.commit(\"map/setResetRenderLayer\", true);\r\n setTimeout(() => {\r\n this.$store.commit(\"map/setRenderLocation\", null);\r\n }, 1000);\r\n this.$store.commit(\"map/setHotspotGroupSelectedLocation\", null);\r\n this.$store.commit(\"map/setJourney\", {\r\n startLocation: null,\r\n stopLocation: null,\r\n entrance: null,\r\n exit: null,\r\n });\r\n this.$root.$emit(\"clear-render-view-2d\");\r\n },\r\n returnToStation() {\r\n this.$store.commit(\"map/setResetRenderLayer\", true);\r\n this.renderReady = false;\r\n this.$root.$emit(\"clear-render-view-2d\");\r\n\r\n setTimeout(() => {\r\n this.$store.commit(\"map/setRenderLocation\", null);\r\n\r\n this.$store.commit(\r\n \"map/setPrecinct\",\r\n this.$store.state.map.backupPrecinct\r\n );\r\n this.$store.commit(\"map/setBackupPrecinct\", null);\r\n }, 500);\r\n },\r\n zoomToCenter: function (center, zoom, tilt) {\r\n //Reset Camera Tilt\r\n // this.cameraTilt = 0;\r\n this.$emit(\"resetTilt\", 0);\r\n console.log(\"SET LOCATION GO TO\", center, zoom, tilt, this.cameraTilt);\r\n this.view\r\n .goTo({\r\n center: center,\r\n zoom: zoom,\r\n tilt,\r\n heading: 0,\r\n })\r\n .catch(function (error) {\r\n if (error.name != \"AbortError\") {\r\n console.error(error);\r\n }\r\n });\r\n },\r\n zoomToPoints: function (pointArray) {\r\n if (pointArray.length === 0) return;\r\n\r\n let self = this;\r\n loadModules([\"esri/geometry/Multipoint\"], {\r\n css: true,\r\n }).then(([Multipoint]) => {\r\n let multiPoint = new Multipoint({ points: pointArray });\r\n self.view.goTo(multiPoint).catch(function (error) {\r\n if (error.name != \"AbortError\") {\r\n console.error(error);\r\n }\r\n });\r\n });\r\n },\r\n zoomToLocation: function (markerZoom, center) {\r\n this.$store.commit(\"map/setRenderLocation\", null);\r\n let options = {\r\n duration: 2000,\r\n easing: \"linear\",\r\n };\r\n this.view.goTo(\r\n {\r\n target: center,\r\n heading: this.heading,\r\n zoom: markerZoom,\r\n tilt: this.cameraTilt,\r\n },\r\n options\r\n );\r\n\r\n if (this.selectedLocation) {\r\n console.log(this.view);\r\n\r\n // this.view.navigation.mouseWheelEnable = false\r\n this.handler.mouseWheel = this.view.on(\"mouse-wheel\", function (event) {\r\n // prevents panning with the mouse drag event\r\n event.stopPropagation();\r\n });\r\n\r\n this.handler.drag = this.view.on(\"drag\", (event) => {\r\n if ((event.action = \"end\")) {\r\n const deltaX = event.x - event.origin.x;\r\n const deltaY = event.y - event.origin.y;\r\n const mouseDistance = Math.sqrt(\r\n Math.pow(deltaX, 2),\r\n Math.pow(deltaY, 2)\r\n );\r\n let angle = mouseDistance;\r\n\r\n // Ensures that the camera doesn't take the shortest path.\r\n // If the angle is larger than 180, the camera will take\r\n // the shortest route and therefore will go the opposite direction\r\n if (angle > 180) {\r\n angle = 180;\r\n }\r\n\r\n let heading = 0;\r\n\r\n // Rotate camera either left or right\r\n if (event.x > event.origin.x) {\r\n heading = Math.floor(this.view.camera.heading + angle);\r\n } else {\r\n heading = Math.floor(this.view.camera.heading - angle);\r\n }\r\n\r\n this.view\r\n .goTo(\r\n { heading: heading, center: center, zoom: markerZoom },\r\n { speedFactor: 0.5 }\r\n )\r\n .then((result) => {})\r\n .catch((error) => {\r\n if (error.name !== \"AbortError\") console.log(error);\r\n });\r\n }\r\n event.stopPropagation();\r\n });\r\n\r\n this.handler.doubleClick = this.view.on(\r\n \"double-click\",\r\n function (event) {\r\n // prevents panning with the mouse drag event\r\n event.stopPropagation();\r\n }\r\n );\r\n this.handler.keyDown = this.view.on(\"key-down\", function (event) {\r\n const keyPressed = event.key;\r\n if (keyPressed.slice(0, 5) === \"Arrow\") {\r\n event.stopPropagation();\r\n }\r\n });\r\n this.view.ui.remove(\"zoom\");\r\n this.view.ui.move([\"navigation-toggle\", \"compass\"], \"top-right\");\r\n // this.view.popup.autoOpenEnabled = false;\r\n this.view.popup.autoCloseEnabled = true;\r\n this.view.popup.dockEnabled = false;\r\n this.view.popup.actions = [];\r\n this.view.popup.dockOptions = { buttonEnabled: false };\r\n }\r\n },\r\n zoomToRenderLocation: function (\r\n center,\r\n renderTilt,\r\n renderZoom,\r\n renderHeading,\r\n renderDuration\r\n ) {\r\n let options = {\r\n duration: renderDuration,\r\n easing: \"linear\",\r\n // camera: {\r\n // tilt: this.cameraTilt || 100\r\n // }\r\n };\r\n\r\n this.view.goTo(\r\n {\r\n target: center,\r\n heading: renderHeading,\r\n zoom: renderZoom,\r\n tilt: renderTilt,\r\n // camera: {\r\n // tilt: this.cameraTilt || 300\r\n // }\r\n },\r\n options\r\n );\r\n\r\n // this.view.navigation.mouseWheelEnable = false\r\n this.handler.mouseWheel = this.view.on(\"mouse-wheel\", function (event) {\r\n // prevents panning with the mouse drag event\r\n event.stopPropagation();\r\n });\r\n let initialX = null;\r\n let initialHeading = null;\r\n\r\n this.handler.dragStart = this.view.on(\"pointer-down\", (event) => {\r\n event.stopPropagation();\r\n });\r\n\r\n this.handler.drag = this.view.on(\"drag\", (event) => {\r\n event.stopPropagation();\r\n });\r\n\r\n this.handler.doubleClick = this.view.on(\"double-click\", function (event) {\r\n // prevents panning with the mouse drag event\r\n event.stopPropagation();\r\n });\r\n this.handler.keyDown = this.view.on(\"key-down\", function (event) {\r\n const keyPressed = event.key;\r\n if (keyPressed.slice(0, 5) === \"Arrow\") {\r\n event.stopPropagation();\r\n }\r\n });\r\n this.view.ui.remove(\"zoom\");\r\n this.view.ui.move([\"navigation-toggle\", \"compass\"], \"top-right\");\r\n // this.view.popup.autoOpenEnabled = false;\r\n this.view.popup.autoCloseEnabled = true;\r\n this.view.popup.dockEnabled = false;\r\n this.view.popup.actions = [];\r\n this.view.popup.dockOptions = { buttonEnabled: false };\r\n },\r\n applyFilters: function () {\r\n console.log(\"Updating layer filters\");\r\n let self = this;\r\n self.view.layerViews.forEach(function (layerView) {\r\n layerView.filter = self.filterJson;\r\n });\r\n },\r\n applyOptions: function () {\r\n let self = this;\r\n\r\n // Reset all the Journey related layers\r\n // This is a really hacky way to determine whether a layer is journey related\r\n // Example journey layer name: \"Anzac Station to Town Hall Town Hall to Anzac Station\"\r\n self.view?.map.layers.forEach(function (layer) {\r\n const layerNameWords = layer.title.split(\"to\");\r\n if (layerNameWords.length >= 2) {\r\n const firstWord = layerNameWords[0].trim();\r\n const lastWord = layerNameWords[layerNameWords.length - 1].trim();\r\n\r\n if (firstWord === lastWord) {\r\n layer.visible = false;\r\n }\r\n }\r\n });\r\n\r\n self.view?.map.layers.forEach(function (layer) {\r\n if (self.layerVisibility) {\r\n if (layer.title in self.layerVisibility) {\r\n layer.visible = self.layerVisibility[layer.title];\r\n }\r\n }\r\n });\r\n },\r\n },\r\n computed: {\r\n backgroundStyle() {\r\n return {\r\n backgroundImage: this.renderLayer ? `url(${this.renderLayer})` : \"\",\r\n };\r\n },\r\n resetMap() {\r\n return this.$store.state.map.resetMap;\r\n },\r\n hotspotGroupSelectedLocation() {\r\n return this.$store.state.map.hotspotGroupSelectedLocation;\r\n },\r\n selectedLocation() {\r\n return this.$store.state.map.selectedLocation;\r\n },\r\n renderLocation() {\r\n return this.$store.state.map.renderLocation;\r\n },\r\n layerVisibility() {\r\n let layers = {};\r\n let layerOptions = this.layerOptions;\r\n\r\n if (layerOptions && Object.keys(layerOptions).length > 0) {\r\n //Build a list of layers and their visibility status\r\n for (let group in layerOptions) {\r\n for (let layer in layerOptions[group]) {\r\n let visible = layerOptions[group][layer];\r\n layers[layer] = visible;\r\n }\r\n }\r\n return layers;\r\n }\r\n },\r\n },\r\n watch: {\r\n legendOpacity(newValue) {\r\n const style = document.querySelector(\"#dynamic-legend-style\");\r\n if (style) {\r\n style.innerHTML = `.esri-legend { background-color: rgba(255, 255, 255, ${newValue}); }`;\r\n }\r\n },\r\n renderLayer: {\r\n handler(newValue, oldValue) {\r\n if (newValue != null) {\r\n this.renderView = newValue;\r\n this.renderReady = true;\r\n } else {\r\n this.renderReady = false;\r\n this.renderView = null; // Set renderView to null after the transition\r\n }\r\n },\r\n deep: true,\r\n },\r\n resetMap: function (value) {\r\n if (value) {\r\n const center = [Number(this.mapCenter[0]), Number(this.mapCenter[1])];\r\n this.zoomToCenter(center, this.mapZoom, 0);\r\n this.$store.commit(\"map/setResetMap\", false);\r\n }\r\n },\r\n hotspotGroupSelectedLocation: {\r\n async handler(value) {\r\n const center = [Number(value.location.lng), Number(value.location.lat)];\r\n if (value.zoomLevel != null) {\r\n console.log(\"SCROLL Watch\", value.zoomLevel);\r\n this.zoomToLocation(Number(value.zoomLevel), center);\r\n } else {\r\n map;\r\n this.zoomToLocation(18, center);\r\n }\r\n },\r\n deep: true,\r\n },\r\n selectedLocation: {\r\n async handler(value) {\r\n if (!value) {\r\n this.handler.mouseWheel.remove();\r\n this.handler.dragStart.remove();\r\n this.handler.drag.remove();\r\n this.handler.keyDown.remove();\r\n this.handler.doubleClick.remove();\r\n\r\n this.view.ui.add(\"zoom\");\r\n this.view.ui.move(\r\n [\"zoom\", \"navigation-toggle\", \"compass\"],\r\n \"top-right\"\r\n );\r\n // this.view.popup.autoOpenEnabled = false;\r\n this.view.popup.autoCloseEnabled = true;\r\n this.view.popup.dockEnabled = false;\r\n this.view.popup.actions = [];\r\n this.view.popup.dockOptions = { buttonEnabled: false };\r\n }\r\n },\r\n deep: true,\r\n },\r\n renderLocation: {\r\n async handler(value) {\r\n if (!value) {\r\n this.handler.mouseWheel.remove();\r\n this.handler.dragStart.remove();\r\n this.handler.drag.remove();\r\n this.handler.keyDown.remove();\r\n this.handler.doubleClick.remove();\r\n\r\n this.view.ui.add(\"zoom\");\r\n this.view.ui.move(\r\n [\"zoom\", \"navigation-toggle\", \"compass\"],\r\n \"top-right\"\r\n );\r\n // this.view.popup.autoOpenEnabled = false;\r\n this.view.popup.autoCloseEnabled = true;\r\n this.view.popup.dockEnabled = false;\r\n this.view.popup.actions = [];\r\n this.view.popup.dockOptions = { buttonEnabled: false };\r\n }\r\n },\r\n deep: true,\r\n },\r\n filterJson: function () {\r\n this.applyFilters();\r\n },\r\n\r\n layerVisibility: function () {\r\n this.applyOptions();\r\n\r\n // loadModules([\"esri/layers/FeatureLayer\", \"esri/layers/TileLayer\", \"esri/layers/ImageryLayer\"], {\r\n // css: true,\r\n // }).then(([FeatureLayer, TileLayer]) => {\r\n // view.map.layers.add(new TileLayer({\r\n // url: self.url,\r\n // id: self.name,\r\n // opacity: self.opacity,\r\n // visible: self.visible,\r\n // }));\r\n // })\r\n },\r\n renderView2d(newValue) {\r\n // Show/hide Precinct and Network overlay\r\n this.renderView = newValue ? true : false;\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\ndiv {\r\n padding: 0;\r\n margin: 0;\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.marker {\r\n position: absolute;\r\n /* top: 0px; */\r\n /* left: 0px; */\r\n}\r\n\r\n.centered-block {\r\n left: 50%;\r\n -webkit-transform: translate(-50%, -50%);\r\n position: absolute;\r\n}\r\n\r\n.esri-view-width-xsmall .esri-expand--auto .esri-expand__container--expanded {\r\n position: relative !important;\r\n}\r\n\r\n.esri-popup__main-container {\r\n max-width: 300px;\r\n}\r\n\r\n.esri-view-height-less-than-medium .esri-popup__main-container {\r\n max-height: 200px;\r\n}\r\n.esri-view-width-xlarge .esri-popup__main-container {\r\n width: 140px;\r\n}\r\n\r\n.esri-view-width-medium .esri-popup__main-container {\r\n width: 140px;\r\n}\r\n\r\n.map-html-overlays {\r\n position: absolute;\r\n overflow: hidden;\r\n top: 0px;\r\n left: 0px;\r\n bottom: 0px;\r\n right: 0px;\r\n pointer-events: None;\r\n}\r\n\r\n::v-deep .esri-ui {\r\n z-index: 2;\r\n}\r\n\r\n::v-deep .esri-view-width-xsmall\r\n .esri-expand--auto\r\n .esri-expand__container--expanded {\r\n position: relative;\r\n padding-bottom: 0px;\r\n}\r\n\r\n.background-renderimage {\r\n width: 100%;\r\n height: 100%;\r\n background-size: cover;\r\n background-position: center;\r\n transition: opacity 1s ease, background-image 1s ease; /* Add transition for background-image */\r\n opacity: 0; /* Start with a default opacity of 0 */\r\n}\r\n\r\n.render-ready {\r\n opacity: 1;\r\n}\r\n\r\n.render-view-2d {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n pointer-events: all;\r\n}\r\n.fade-enter-active,\r\n.fade-leave-active {\r\n transition: opacity 1s;\r\n}\r\n.fade-enter,\r\n.fade-leave-to {\r\n opacity: 0;\r\n}\r\n\r\n.render-view-toggle {\r\n position: absolute;\r\n top: 15px;\r\n right: 60px;\r\n width: 400px;\r\n background-color: rgba(255, 255, 255, 0.9);\r\n height: 65px;\r\n border-radius: 0;\r\n pointer-events: all;\r\n // z-index: +999;\r\n}\r\n\r\n@media (max-width: 1200px) {\r\n .render-view-toggle {\r\n display: flex;\r\n flex-direction: column;\r\n width: 140px;\r\n left: 18px;\r\n top: 60px;\r\n height: 96px;\r\n padding: 4px !important;\r\n\r\n .v-btn {\r\n font-size: 10px !important;\r\n padding: 4px;\r\n\r\n .v-btn__content {\r\n font-size: 10px !important;\r\n // display: none;\r\n }\r\n }\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MapArc.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MapArc.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MapArc.vue?vue&type=template&id=0ecb4b96&scoped=true&\"\nimport script from \"./MapArc.vue?vue&type=script&lang=js&\"\nexport * from \"./MapArc.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MapArc.vue?vue&type=style&index=0&id=0ecb4b96&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0ecb4b96\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.groupVisibility)?_c('div',[_c('v-scale-transition',{attrs:{\"origin\":\"center center\"}},[_c('ConcentricCircles',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.markerVisible),expression:\"markerVisible\"}],staticClass:\"hotspot-circle-map-marker\",style:(_vm.markerPosition)})],1),(_vm.showImagePreview && _vm.markerType==='imagepreviewpopup')?_c('v-scale-transition',{attrs:{\"origin\":\"center center\"}},[_c('span',{attrs:{\"aria-label\":_vm.arialabel}},[_c('span',{staticClass:\"image-preview-arrow\",style:(_vm.imagePreviewPosition)}),_c('v-img',{ref:\"imagePreviewRef\",staticClass:\"image-preview\",style:(_vm.imagePreviewPosition),attrs:{\"src\":_vm.thumbnailImage,\"cover\":true,\"position\":\"center\"}})],1)]):_vm._e(),(_vm.isMarkerFromTour == true)?_c('v-btn',{staticClass:\"map-marker details-button white--text\",style:(_vm.markerPosition),attrs:{\"color\":_vm.chosenPrimaryColor,\"aria-label\":_vm.ariaLabel},on:{\"mouseenter\":function($event){_vm.showCircle = false},\"mouseleave\":function($event){_vm.showCircle = true},\"focus\":function($event){return _vm.mapHotspotFocus()},\"click\":function($event){return _vm.$emit('setIndex')}}},[(_vm.icon !== null)?_c('v-icon',{staticClass:\"marker-icon\"},[_vm._v(_vm._s(_vm.icon))]):_vm._e(),_c('span',{staticClass:\"d-inline-block text-center marker-title\"},[_vm._v(_vm._s(_vm.title))])],1):_c('v-btn',{staticClass:\"map-marker details-button white--text\",style:(_vm.markerPosition),attrs:{\"color\":_vm.chosenPrimaryColor,\"aria-label\":_vm.ariaLabel,\"data-testid\":'hotspot-button' + _vm.id},on:{\"mouseenter\":_vm.onMouseEnterPopup,\"mouseleave\":_vm.onMouseLeavePopup,\"focus\":function($event){return _vm.mapHotspotFocus()},\"focusout\":_vm.mapHotspotFocusOut}},[(_vm.icon !== null)?_c('v-icon',{staticClass:\"marker-icon\"},[_vm._v(_vm._s(_vm.icon))]):_vm._e(),_c('span',{staticClass:\"d-inline-block text-center marker-title\"},[_vm._v(_vm._s(_vm.title))])],1)],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div v-if=\"groupVisibility\">\r\n <v-scale-transition origin=\"center center\">\r\n <ConcentricCircles\r\n v-show=\"markerVisible\"\r\n class=\"hotspot-circle-map-marker\"\r\n :style=\"markerPosition\"\r\n />\r\n </v-scale-transition>\r\n <v-scale-transition origin=\"center center\" v-if=\"showImagePreview && markerType==='imagepreviewpopup'\">\r\n <span :aria-label=\"arialabel\">\r\n <span class=\"image-preview-arrow\" :style=\"imagePreviewPosition\"></span>\r\n <v-img \r\n :src=\"thumbnailImage\" \r\n class=\"image-preview\" \r\n :style=\"imagePreviewPosition\" \r\n ref=\"imagePreviewRef\"\r\n :cover=\"true\"\r\n position=\"center\" \r\n />\r\n </span>\r\n\r\n </v-scale-transition>\r\n\r\n <v-btn\r\n v-if=\"isMarkerFromTour == true\"\r\n :color=\"chosenPrimaryColor\"\r\n class=\"map-marker details-button white--text\"\r\n :style=\"markerPosition\"\r\n :aria-label=\"ariaLabel\"\r\n @mouseenter=\"showCircle = false\"\r\n @mouseleave=\"showCircle = true\"\r\n @focus=\"mapHotspotFocus()\"\r\n @click=\"$emit('setIndex')\"\r\n >\r\n <v-icon class=\"marker-icon\" v-if=\"icon !== null\">{{ icon }}</v-icon>\r\n <span class=\"d-inline-block text-center marker-title\">{{ title }}</span>\r\n </v-btn>\r\n\r\n <v-btn\r\n v-else\r\n :color=\"chosenPrimaryColor\"\r\n class=\"map-marker details-button white--text\"\r\n :style=\"markerPosition\"\r\n :aria-label=\"ariaLabel\"\r\n :data-testid=\"'hotspot-button' + id\"\r\n @mouseenter=\"onMouseEnterPopup\"\r\n @mouseleave=\"onMouseLeavePopup\"\r\n @focus=\"mapHotspotFocus()\"\r\n @focusout=\"mapHotspotFocusOut\"\r\n >\r\n \r\n <v-icon class=\"marker-icon\" v-if=\"icon !== null\">{{ icon }}</v-icon>\r\n <span class=\"d-inline-block text-center marker-title\">{{ title }}</span>\r\n </v-btn>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { loadModules } from \"esri-loader\";\r\nimport ConcentricCircles from \"../panorama/ConcentricCircles.vue\";\r\n\r\nexport default {\r\n name: \"MapMarkerArcHtml\",\r\n props: [\r\n \"id\",\r\n \"coordinates\",\r\n \"colour\",\r\n \"icon\",\r\n \"mapCenter\",\r\n \"mapArc\",\r\n \"title\",\r\n \"arialabel\",\r\n \"markerVisible\",\r\n \"markerType\",\r\n \"currZoomLevel\",\r\n \"zoomMarkerFlag\",\r\n \"isMarkerFromTour\",\r\n \"layerData\",\r\n \"hotspotGroupData\",\r\n \"thumbnailImage\"\r\n ],\r\n data: () => ({\r\n screenXY: undefined,\r\n currentFocusIndex: 0,\r\n showCircle: true,\r\n markerVisibility: true,\r\n chosenPrimaryColor: null,\r\n groupVisibility: null,\r\n showImagePreview: false,\r\n }),\r\n\r\n components: { ConcentricCircles },\r\n\r\n mounted() {\r\n this.markerObject = undefined;\r\n this.handler = undefined;\r\n this.point = undefined;\r\n this.configureHotspotGroups();\r\n },\r\n created() {\r\n const self = this;\r\n\r\n loadModules([\"esri/geometry/Point\"], {\r\n css: true,\r\n }).then(([Point]) => {\r\n self.point = new Point({\r\n longitude: self.coordinates[0],\r\n latitude: self.coordinates[1],\r\n });\r\n });\r\n },\r\n beforeDestroy() {\r\n if (this.handler !== undefined) this.handler.remove();\r\n\r\n if (this.markerObject !== undefined)\r\n this.markerLayer.remove(this.markerObject);\r\n },\r\n computed: {\r\n secondaryColor() {\r\n return this.$vuetify.theme.themes.light.secondary;\r\n },\r\n markerPosition() {\r\n if (this.screenXY === undefined) {\r\n console.log(\"No XY\");\r\n return \"display:none\";\r\n }\r\n\r\n let screenY = this.screenXY.y - 18;\r\n let screenX = this.screenXY.x;\r\n // console.log(\"XY Found: \" + screenX + \"x \" + screenY + \"y\");\r\n return (\r\n \"z-index:1; display:inline-block; top: \" +\r\n screenY +\r\n \"px; left: \" +\r\n screenX +\r\n \"px;\"\r\n );\r\n },\r\n imagePreviewPosition() {\r\n if (this.screenXY === undefined) {\r\n return \"display:none\";\r\n }\r\n\r\n let screenY = this.screenXY.y - 150;\r\n let screenX = this.screenXY.x - 90;\r\n return (\r\n \"z-index:1; display:inline-block; top: \" +\r\n screenY +\r\n \"px; left: \" +\r\n screenX +\r\n \"px;\"\r\n );\r\n },\r\n ariaLabel() {\r\n return this.arialabel;\r\n },\r\n visibleHotspotGroups() {\r\n return this.$store.getters[\"wagtail/getVisibleHotspotGroups\"];\r\n },\r\n },\r\n watch: {\r\n secondaryColor: {\r\n handler(newVal, oldVal) {\r\n if (\r\n this.hotspotGroupData &&\r\n this.hotspotGroupData.primary_colour_override != null\r\n ) {\r\n this.chosenPrimaryColor =\r\n this.hotspotGroupData.primary_colour_override;\r\n } else {\r\n this.chosenPrimaryColor = newVal;\r\n }\r\n },\r\n },\r\n mapCenter: {\r\n handler(newVal, oldVal) {\r\n // console.log(\"Map Center Watcher Triggered\");\r\n this.updatedScreenXY();\r\n },\r\n deep: true,\r\n },\r\n visibleHotspotGroups(newValue, oldValue) {\r\n // Your code here. This function will run whenever the getter's value changes.\r\n this.checkGroupVisibility();\r\n },\r\n },\r\n methods: {\r\n onMouseEnterPopup() {\r\n this.showCircle = false\r\n this.showImagePreview = true\r\n }, \r\n onMouseLeavePopup() {\r\n this.showCircle = true\r\n this.showImagePreview = false\r\n\r\n },\r\n configureHotspotGroups() {\r\n if (this.hotspotGroupData != null) {\r\n console.log(\"[HSG]\", this.hotspotGroupData);\r\n\r\n if (this.hotspotGroupData && this.hotspotGroupData.primary_colour_override != null) {\r\n this.chosenPrimaryColor =\r\n this.hotspotGroupData.primary_colour_override;\r\n } else {\r\n this.chosenPrimaryColor = this.colour;\r\n }\r\n if (this.hotspotGroupData && this.hotspotGroupData.visible_by_default == true) {\r\n this.groupVisibility = true;\r\n } else {\r\n this.groupVisibility = false;\r\n }\r\n } else {\r\n this.chosenPrimaryColor = this.colour;\r\n this.groupVisibility = true;\r\n }\r\n },\r\n checkGroupVisibility() {\r\n const isIdMatched = this.$store.getters[\r\n \"wagtail/getVisibleHotspotGroups\"\r\n ].some((groupNumber) => groupNumber === this.hotspotGroupData.id);\r\n if (isIdMatched) {\r\n // Logic for when the ID is found in the array\r\n console.log(\"HSG ID matched!\");\r\n this.groupVisibility = true;\r\n } else {\r\n // Logic for when the ID is not found in the array\r\n console.log(\r\n \"HSG ID not matched\",\r\n this.hotspotGroupData.id,\r\n this.$store.getters[\"wagtail/getVisibleHotspotGroups\"]\r\n );\r\n this.groupVisibility = false;\r\n }\r\n },\r\n updatedScreenXY: function () {\r\n if (\r\n this.point !== undefined &&\r\n this.mapArc !== undefined &&\r\n this.mapArc.view !== undefined\r\n ) {\r\n if (this.layerData) {\r\n loadModules([\"esri/geometry/Point\"], {\r\n css: true,\r\n }).then(([Point]) => {\r\n const point = new Point({\r\n longitude: this.layerData.lng,\r\n latitude: this.layerData.lat,\r\n });\r\n this.screenXY = this.mapArc.view.toScreen(point);\r\n });\r\n } else {\r\n this.screenXY = this.mapArc.view.toScreen(this.point);\r\n }\r\n // console.log(\"Updated XY\");\r\n } else {\r\n console.log(\"Failed to update XY\");\r\n }\r\n },\r\n nextFocus() {\r\n const elements = document.querySelectorAll(\".map-marker\");\r\n this.currentFocusIndex++;\r\n this.currentFocusIndex = this.currentFocusIndex % elements.length;\r\n elements[this.currentFocusIndex].focus();\r\n },\r\n prevFocus() {\r\n const elements = document.querySelectorAll(\".map-marker\");\r\n this.currentFocusIndex--;\r\n if (this.currentFocusIndex < 0)\r\n this.currentFocusIndex = elements.length - 1;\r\n this.currentFocusIndex = this.currentFocusIndex % elements.length;\r\n elements[this.currentFocusIndex].focus();\r\n },\r\n mapHotspotFocus() {\r\n this.showImagePreview = true;\r\n this.$emit(\"focused\");\r\n },\r\n mapHotspotFocusOut() {\r\n this.showImagePreview = false;\r\n }\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.image-preview {\r\n position: absolute;\r\n background-color: #ffffff;\r\n /* box-shadow: 0px -10px 20px 5px rgba(0, 0, 0, 0.4); */\r\n max-width: 180px;\r\n max-height: 120px;\r\n width: 180px;\r\n height: 120px;\r\n border-radius: 8px;\r\n}\r\n\r\n\r\n.image-preview-arrow {\r\n position: absolute;\r\n\r\n &:after {\r\n content: \"\";\r\n height: 0;\r\n width: 0;\r\n border-width: 0 20px 20px 20px;\r\n border-style: solid;\r\n \r\n border-color: rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4) rgb(255, 255, 255) rgba(0, 0, 0, 0.4);\r\n box-shadow: 0px 20px 70px 70px rgba(0, 0, 0, 0.4);\r\n rotate: 180deg;\r\n position: absolute;\r\n bottom: -20px;\r\n margin: auto;\r\n left: 0;\r\n top: 120px;\r\n right: -180px;\r\n }\r\n }\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MapMarkerArcHtml.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MapMarkerArcHtml.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MapMarkerArcHtml.vue?vue&type=template&id=272c5b04&scoped=true&\"\nimport script from \"./MapMarkerArcHtml.vue?vue&type=script&lang=js&\"\nexport * from \"./MapMarkerArcHtml.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MapMarkerArcHtml.vue?vue&type=style&index=0&id=272c5b04&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"272c5b04\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-fade-transition',[_c('v-container',{staticClass:\"background\",attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',[_c('div',{staticClass:\"text-center\"},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"size\":\"50\",\"color\":\"secondary\"}})],1)])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-fade-transition >\r\n <v-container fill-height fluid class=\"background\">\r\n <v-row align=\"center\" justify=\"center\">\r\n <v-col>\r\n <div class=\"text-center\">\r\n <v-progress-circular\r\n indeterminate\r\n size=\"50\"\r\n color=\"secondary\"\r\n ></v-progress-circular>\r\n </div>\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n </v-fade-transition>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"Loading\",\r\n data: () => ({\r\n items: [],\r\n select: undefined,\r\n search: undefined,\r\n loading: undefined,\r\n toggle_exclusive: 1,\r\n }),\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n\r\n.background {\r\n background-color: rgba(255,255,255,0.5)\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Loading.vue?vue&type=template&id=f4c364d4&scoped=true&\"\nimport script from \"./Loading.vue?vue&type=script&lang=js&\"\nexport * from \"./Loading.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Loading.vue?vue&type=style&index=0&id=f4c364d4&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f4c364d4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-card',{class:_vm.cardPosition,style:(_vm.indexPriority),attrs:{\"fixed\":\"\"},on:{\"click\":function($event){return _vm.clickSticky()}}},[_c('v-img',{attrs:{\"src\":_vm.stickyItemData.thumbnail,\"cover\":\"\",\"height\":\"200px\"}}),_c('v-card-title',[_vm._v(_vm._s(_vm.stickyItemData.card_header))]),_c('v-card-text',[_vm._v(\" \"+_vm._s(_vm.stickyItemData.card_content)+\" \")])],1),_c('LightboxGallery',{attrs:{\"showLightbox\":_vm.lightboxContent.length > 0 && _vm.lightboxReady,\"content\":_vm.lightboxContent},on:{\"closed\":function($event){return _vm.closeLightbox()}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n<div >\r\n <v-card :style=\"indexPriority\" :class=\"cardPosition\" fixed @click=\"clickSticky()\">\r\n <!-- Your card content goes here -->\r\n <v-img :src=\"stickyItemData.thumbnail\" cover height=\"200px\"></v-img>\r\n <v-card-title>{{ stickyItemData.card_header }}</v-card-title>\r\n <v-card-text>\r\n {{ stickyItemData.card_content }}\r\n </v-card-text>\r\n </v-card>\r\n <LightboxGallery\r\n :showLightbox=\"lightboxContent.length > 0 && lightboxReady\"\r\n :content=\"lightboxContent\"\r\n @closed=\"closeLightbox()\"\r\n />\r\n</div>\r\n</template>\r\n\r\n<script>\r\nimport LightboxGallery from \"../lightbox/LightboxGallery.vue\";\r\n\r\nexport default {\r\n name: \"MapStickyCard\",\r\n props: { stickyItemData: Object },\r\n data: () => ({\r\n stickyPosition: undefined,\r\n lightboxReady: false\r\n }),\r\n components: {LightboxGallery},\r\n mounted() {\r\n console.log(this.stickyItemData, \"page data from mapsticky card vue\");\r\n },\r\n methods: {\r\n clickSticky(){\r\n if(this.lightboxContent[0].type == \"external_link\" ){\r\n this.lightboxReady = false;\r\n window.location.href = this.lightboxContent[0].value.url\r\n }else if(this.lightboxContent[0].type == \"internal_page_link\"){\r\n this.lightboxReady = false;\r\n const dirtyUrl = this.lightboxContent[0].value.page.meta.html_url\r\n //NOTE: Only Enable when testing on Local\r\n // const cleanUrl = dirtyUrl.replace(\"8000\", \"8080\")\r\n \r\n const cleanUrl = dirtyUrl.replace(\"-api\", \"\")\r\n window.location.href = cleanUrl\r\n\r\n }else this.lightboxReady = true;\r\n },\r\n closeLightbox() {\r\n //TODO: Make map popups update routes\r\n // this.$router.push(new URL(this.pageData.meta.html_url).pathname);\r\n this.$store.commit(\"wagtail/getPopupSuccess\", undefined);\r\n this.lightboxReady = false;\r\n //Return focus to previous element\r\n //this.$refs.sidebar.$children[this.counter_flag].$el.focus();\r\n },\r\n },\r\n computed: {\r\n cardPosition() {\r\n if (this.stickyItemData.sticky_position === \"top-left\") {\r\n return 'sticky-card-top-left'\r\n } else if (this.stickyItemData.sticky_position === \"top-right\") {\r\n return 'sticky-card-top-right'\r\n\r\n } else if (this.stickyItemData.sticky_position === \"bottom-left\") {\r\n return 'sticky-card-bottom-left'\r\n\r\n } else if (this.stickyItemData.sticky_position === \"bottom-right\") {\r\n return 'sticky-card-bottom-right'\r\n }else \r\n return 'sticky-card-bottom-right'\r\n\r\n },\r\n lightboxContent(){\r\n console.log(this.stickyItemData.content, \"returned lightboxContent from sticky\")\r\n return this.stickyItemData.content\r\n },\r\n indexPriority(){\r\n if(this.lightboxReady == true){\r\n return 'z-index:0'\r\n } else return 'z-index:1000'\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.sticky-card-bottom-right {\r\n position: fixed;\r\n bottom: 2rem;\r\n right: 12px;\r\n width: 300px;\r\n}\r\n.sticky-card-bottom-left {\r\n position: fixed;\r\n bottom: 4.2rem;\r\n left: 515px;\r\n width: 300px;\r\n}\r\n\r\n.sticky-card-top-right {\r\n position: fixed;\r\n top: 5rem;\r\n right: 56px;\r\n width: 300px;\r\n}\r\n\r\n\r\n.sticky-card-top-left {\r\n position: fixed;\r\n top: 8rem;\r\n left: 517px;\r\n width: 300px;\r\n}\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MapStickyCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MapStickyCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MapStickyCard.vue?vue&type=template&id=7e35acf4&scoped=true&\"\nimport script from \"./MapStickyCard.vue?vue&type=script&lang=js&\"\nexport * from \"./MapStickyCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MapStickyCard.vue?vue&type=style&index=0&id=7e35acf4&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7e35acf4\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div\r\n style=\"overflow: hidden\"\r\n @keydown.up.exact.prevent=\"nextMarker()\"\r\n @keydown.down.exact.prevent=\"prevMarker()\"\r\n >\r\n <MapArc\r\n v-if=\"pageData !== undefined\"\r\n ref=\"map\"\r\n :legendOpacity=\"pageData.legend_opacity\"\r\n :showLegend=\"pageData.show_legend\"\r\n :showLegendWidget=\"true\"\r\n :basemapWidget=\"pageData.basemap_widget\"\r\n :mapZoom=\"pageData.zoom\"\r\n :cameraTilt=\"cameraTilt\"\r\n :heading=\"heading\"\r\n :mapMinZoom=\"pageData.minZoom\"\r\n :mapMaxZoom=\"pageData.maxZoom\"\r\n :mapCenter=\"[pageData.lng, pageData.lat]\"\r\n :bottomLeftExtent=\"pageData.bottomLeftpoint\"\r\n :topRightExtent=\"pageData.topRightpoint\"\r\n :isRotationEnabled=\"pageData.disableMapRotation\"\r\n :portalItemId=\"portalItemId\"\r\n :portalItemType=\"portalItemType\"\r\n :filterJson=\"$store.state.map.layerFilter\"\r\n :layerOptions=\"layerOptions\"\r\n :tokens=\"pageData.tokens\"\r\n :selectedLayers=\"selectedLayers\"\r\n :renderLayer=\"renderLayer\"\r\n :renderView2d=\"renderView2d\"\r\n @ready=\"mapReady()\"\r\n @mapLoadStart=\"loading = true\"\r\n @mapLoadEnd=\"loading = false\"\r\n @mapMoved=\"mapMoved\"\r\n @mapZoomed=\"mapZoomed\"\r\n @resetTilt=\"cameraTilt = $event\"\r\n tabindex=\"-1\"\r\n >\r\n <div\r\n v-for=\"(item, i) in pageData.children\"\r\n :key=\"pageData.id + 'page_' + i\"\r\n @click=\"markerClicked(item)\"\r\n >\r\n <!-- Create a HTML marker for each marker - note this needs to site alongside the map, and be passed the map component as a prop -->\r\n <MapMarkerArcHtml\r\n v-show=\"\r\n showMarkers &&\r\n item.min_marker_zoom <= currZoomLevel &&\r\n item.max_marker_zoom >= currZoomLevel\r\n \"\r\n v-if=\"\r\n (item.type == 'mappage' && item.showMarker) ||\r\n item.type == 'precinctlocation' ||\r\n (item.type !== 'mappage' && item.lat !== null && item.lng !== null)\r\n \"\r\n :id=\"i\"\r\n :coordinates=\"[item.lng, item.lat]\"\r\n :colour=\"secondaryColor\"\r\n :title=\"item.title\"\r\n :icon=\"item.menu_icon\"\r\n :mapCenter=\"mapCenter\"\r\n :mapArc=\"$refs.map\"\r\n :arialabel=\"getAriaLabel(item)\"\r\n :currZoomLevel=\"currZoomLevel\"\r\n :markerType=\"item.type\"\r\n :layerData=\"{ lat: item.lat, lng: item.lng }\"\r\n :hotspotGroupData=\"item.hotspotGroup\"\r\n :thumbnailImage=\"item.thumbnail_image\"\r\n @keydown.up.exact.prevent=\"nextMarker()\"\r\n @keydown.down.exact.prevent=\"prevMarker()\"\r\n />\r\n </div>\r\n </MapArc>\r\n <MapStickyCard\r\n v-if=\"this.currStickyItem != undefined && colsBreakpoint !== false\"\r\n :stickyItemData=\"this.currStickyItem\"\r\n />\r\n\r\n <!-- <Searchbar class=\"searchbar\" /> -->\r\n <Loading v-show=\"loading\" class=\"loading\" />\r\n <LightboxGallery\r\n :showLightbox=\"lightboxContent.length > 0 && lightboxReady\"\r\n :content=\"lightboxContent\"\r\n @closed=\"closeLightbox()\"\r\n />\r\n <slot />\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport MapArc from \"./MapArc.vue\";\r\nimport MapMarkerArcHtml from \"./MapMarkerArcHtml.vue\";\r\nimport Loading from \"./Loading.vue\";\r\nimport LightboxGallery from \"../lightbox/LightboxGallery.vue\";\r\nimport MapStickyCard from \"../../components/misc/MapStickyCard.vue\";\r\n\r\nexport default {\r\n name: \"Map\",\r\n props: {\r\n pageData: Object,\r\n accessibilityZoom: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n data: () => ({\r\n selectedLayers: [],\r\n accessToken:\r\n \"pk.eyJ1IjoiZ2hkLWlkcyIsImEiOiJja2ZveHVycHkwNXlrMnpydmh0dWhmaXV5In0.KK_IxnZ4H4-9eEOIaUjN8g\",\r\n mapStyle: \"mapbox://styles/ghd-ids/ckg1rthma03821amhn8m49xlo\",\r\n mapCenter: [152.849434, -25.301246],\r\n popupCoordinates: [0, 0],\r\n // mapZoom: 15.51,\r\n mapMinZoom: 7,\r\n mapMaxZoom: 16,\r\n cameraTilt: 0,\r\n heading: 0,\r\n showPopup: false,\r\n popupText: \"\",\r\n loading: true,\r\n lightboxData: undefined,\r\n lightboxReady: false,\r\n accessibilityModal: false,\r\n counter_flag: 0,\r\n previousFocusItem: undefined,\r\n markerZoom: 0,\r\n markerVisible: true,\r\n zoomMarkerFlag: true,\r\n currZoomLevel: 0,\r\n transformedObject: {},\r\n renderLayer: undefined,\r\n renderView2d: undefined,\r\n showMarkers: true,\r\n currStickyItem: null,\r\n }),\r\n components: {\r\n MapArc,\r\n MapMarkerArcHtml,\r\n Loading,\r\n LightboxGallery,\r\n MapStickyCard,\r\n },\r\n mounted() {\r\n console.log(this.pageData, this.pageData.children, \"maparc butt\");\r\n this.getStickyItem();\r\n\r\n this.$root.$on(\"close-precinct\", () => {\r\n this.renderView2d = null;\r\n });\r\n\r\n this.$root.$on(\"clear-render-view-2d\", () => {\r\n this.clearRenderView2d();\r\n });\r\n\r\n this.$root.$on(\"clear-render-layer\", () => {\r\n this.renderLayer = null;\r\n });\r\n\r\n this.$root.$on(\"open-lightbox\", () => {\r\n this.lightboxReady = true;\r\n });\r\n\r\n this.$root.$on(\"clear-loading\", () => {\r\n this.loading = false;\r\n });\r\n\r\n if (this.pageData && Array.isArray(this.pageData.children)) {\r\n this.pageData.children.forEach((child, index) => {\r\n console.log(`HSG Child at index ${index}:`, child);\r\n if (child.hotspotGroup != null) {\r\n console.log(\"HSG!\", child.hotspotGroup);\r\n if (child.hotspotGroup.visible_by_default) {\r\n const currentVisibileMarkerGroups = [];\r\n currentVisibileMarkerGroups.push(child.hotspotGroup.id);\r\n this.$store.commit(\r\n \"wagtail/setVisibleHotspotGroups\",\r\n currentVisibileMarkerGroups\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (this.pageData.show_legend_header == false) {\r\n const header_style = `\r\n h3.esri-widget__heading.esri-legend__service-label {\r\n display: none !important;\r\n }\r\n\r\n .esri-legend__service {\r\n padding-top: 4px !important;\r\n padding-bottom: 0px !important;\r\n border-bottom: none !important;\r\n }`;\r\n const styleSheet = document.createElement(\"style\");\r\n styleSheet.innerText = header_style;\r\n document.head.appendChild(styleSheet);\r\n }\r\n },\r\n created() {},\r\n computed: {\r\n resetRenderLayer() {\r\n return this.$store.state.map.resetRenderLayer;\r\n },\r\n layerOptions() {\r\n return this.$store.getters[\"wagtail/getLayerOptions\"];\r\n },\r\n colsBreakpoint() {\r\n if (\r\n this.$vuetify.breakpoint.name == \"xs\" ||\r\n (this.srcSize > 0 &&\r\n this.srcSize < this.$vuetify.breakpoint.thresholds.xs)\r\n ) {\r\n return false;\r\n } else if (\r\n this.$vuetify.breakpoint.name == \"sm\" ||\r\n (this.srcSize > 0 &&\r\n this.srcSize < this.$vuetify.breakpoint.thresholds.sm)\r\n ) {\r\n return false;\r\n } else if (\r\n this.$vuetify.breakpoint.name == \"md\" ||\r\n (this.srcSize > 0 &&\r\n this.srcSize < this.$vuetify.breakpoint.thresholds.md)\r\n ) {\r\n return true;\r\n } else if (\r\n this.$vuetify.breakpoint.name == \"lg\" ||\r\n (this.srcSize > 0 &&\r\n this.srcSize < this.$vuetify.breakpoint.thresholds.lg)\r\n ) {\r\n return true;\r\n } else {\r\n return true;\r\n }\r\n },\r\n selectedLocation() {\r\n return this.$store.state.map.selectedLocation;\r\n },\r\n pageUpdated() {\r\n return this.pageData;\r\n },\r\n markerUpdated() {\r\n return this.$store.state.currentMarker;\r\n },\r\n lightboxContent() {\r\n if (this.$store.state.wagtail.currentPopup === undefined) {\r\n return [];\r\n } else if (this.$store.state.wagtail.currentPopup.question) {\r\n return this.$store.state.wagtail.currentPopup.question;\r\n } else return this.$store.state.wagtail.currentPopup.content;\r\n },\r\n portalItemId() {\r\n if (\r\n this.pageData.esri_map !== undefined &&\r\n this.pageData.esri_map !== null\r\n )\r\n return this.pageData.esri_map.portal_item_id;\r\n return null;\r\n },\r\n portalItemType() {\r\n if (\r\n this.pageData.esri_map !== undefined &&\r\n this.pageData.esri_map !== null\r\n )\r\n return this.pageData.esri_map.portal_item_type;\r\n return null;\r\n },\r\n islightboxActive() {\r\n if (this.$store.state.lightbox.lightboxObjects.length == 0) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n },\r\n zoomTo() {\r\n if (this.pageData.zoom !== undefined && this.pageData.zoom !== null)\r\n return this.pageData.zoom;\r\n return null;\r\n },\r\n\r\n accessibilityMarkerZoom() {\r\n return this.$store.state.map.accessibilityMarkerZoom;\r\n },\r\n secondaryColor() {\r\n return this.$vuetify.theme.themes.light.secondary;\r\n },\r\n precinct() {\r\n return this.$store.state.map.precinct;\r\n },\r\n },\r\n watch: {\r\n resetRenderLayer(newValue, oldValue) {\r\n // React to changes in resetRenderLayer\r\n if (newValue == true) {\r\n this.renderLayer = null;\r\n this.$store.commit(\"map/setResetRenderLayer\", false);\r\n }\r\n // Your logic here\r\n },\r\n renderLocation: {\r\n handler(newValue, oldValue) {\r\n if (newValue == null) {\r\n this.renderLayer = newValue;\r\n }\r\n },\r\n deep: true,\r\n },\r\n\r\n precinct: {\r\n handler(newValue, oldValue) {\r\n if (newValue != null) {\r\n console.log(\"[precinct watcher MAP]\", newValue);\r\n if (this.precinct) {\r\n if (\r\n this.precinct.markerZoom == 0 ||\r\n this.precinct.markerZoom == null\r\n ) {\r\n if (this.precinct.precinct_zoom_level != null) {\r\n this.markerZoom = this.precinct.precinct_zoom_level;\r\n }\r\n } else {\r\n this.markerZoom = this.precinct.markerZoom;\r\n }\r\n\r\n console.log(\r\n \"[ZOOMING PRE]\",\r\n this.precinct.markerZoom,\r\n this.precinct.precinct_zoom_level\r\n );\r\n this.center = [\r\n Number(this.precinct.lng),\r\n Number(this.precinct.lat),\r\n ];\r\n this.$refs.map.zoomToLocation(this.markerZoom, this.center, {});\r\n }\r\n }\r\n },\r\n deep: true,\r\n },\r\n selectedLocation: {\r\n async handler(data) {\r\n if (data) {\r\n this.markerZoom = data.zoomLevel;\r\n this.center = [Number(data.location.lng), Number(data.location.lat)];\r\n this.cameraTilt = data.tilt_offset;\r\n this.heading = data.heading;\r\n await this.$nextTick();\r\n this.$refs.map.zoomToLocation(this.markerZoom, this.center, {});\r\n this.zoomMarkerFlag = true;\r\n } else {\r\n console.log(\"no data\");\r\n this.cameraTilt = 0;\r\n this.heading = 0;\r\n const center = [Number(this.pageData.lng), Number(this.pageData.lat)];\r\n this.$refs.map.zoomToCenter(center, this.pageData.zoom, 0); // this.previousFocusItem = document.activeElement;\r\n // this.markerZoom = this.accessibilityMarkerZoom.zoomLevel;\r\n // this.center = [\r\n // Number(this.accessibilityMarkerZoom.lng),\r\n // Number(this.accessibilityMarkerZoom.lat),\r\n // ];\r\n // this.$refs.map.zoomToLocation(this.markerZoom, this.center);\r\n // this.zoomMarkerFlag = true;\r\n }\r\n },\r\n deep: true,\r\n },\r\n pageUpdated() {\r\n this.pageSelected();\r\n },\r\n markerUpdated() {\r\n this.markerSelected();\r\n },\r\n markerZoom(newValue) {\r\n console.log(newValue, \"new value of zoom\");\r\n },\r\n islightboxActive() {\r\n //return this.$store.state.lightbox.lightboxObjects.length\r\n if (this.islightboxActive == false) {\r\n if (localStorage.getItem(\"accessibilityModeState\") != \"true\") {\r\n //return focus to the previously focssed item after lightbox closes\r\n this.$nextTick(() => {\r\n if (this.previousFocusItem != undefined) {\r\n this.previousFocusItem.focus();\r\n }\r\n });\r\n }\r\n }\r\n },\r\n },\r\n methods: {\r\n mapReady: function () {\r\n if (this.accessibilityZoom) {\r\n setTimeout(() => {\r\n this.previousFocusItem = document.activeElement;\r\n this.markerZoom = this.accessibilityMarkerZoom.zoomLevel;\r\n this.center = [\r\n Number(this.accessibilityMarkerZoom.lng),\r\n Number(this.accessibilityMarkerZoom.lat),\r\n ];\r\n this.$refs.map.zoomToLocation(this.markerZoom, this.center);\r\n this.zoomMarkerFlag = true;\r\n }, 2000);\r\n } else {\r\n let self = this;\r\n setTimeout(function () {\r\n if (!this.accessibilityZoom) {\r\n self.zoomToMarkers();\r\n self.getStickyItem();\r\n }\r\n }, 2000);\r\n }\r\n },\r\n getStickyItem() {\r\n let currState = this.pageData.children;\r\n for (const item of currState) {\r\n if (item.type === \"mapstickyitem\") {\r\n this.$store.dispatch(\"wagtail/getStickyItem\", item.id);\r\n console.log(\"success\", this.$store.state.wagtail.stickyItem);\r\n this.currStickyItem = this.$store.state.wagtail.stickyItem;\r\n console.log(\"success 2\", this.currStickyItem);\r\n }\r\n }\r\n },\r\n pageSelected: function () {\r\n this.zoomToMarkers();\r\n },\r\n markerClicked: async function (markerData) {\r\n this.previousFocusItem = document.activeElement;\r\n console.log(markerData, \"WagtailService.getPageById\");\r\n\r\n if (markerData.type === \"precinctlocation\") {\r\n const data = await this.$store.dispatch(\r\n \"wagtail/getPrecinctChildPage\",\r\n markerData.id\r\n );\r\n console.log(\"[PRECINCT]\", data);\r\n this.$store.commit(\"map/setPrecinct\", data);\r\n this.$store.commit(\"map/setGroupLocation\", null);\r\n this.$store.commit(\"map/setRightSidebarZoomLevel\", data.markerZoom);\r\n return;\r\n }\r\n\r\n if (\r\n markerData.type === \"mappage\" ||\r\n markerData.type === \"mapvirtualtourpage\"\r\n ) {\r\n this.$router.push(new URL(markerData.html_url).pathname);\r\n }\r\n if (markerData.type === \"redirecturl\") {\r\n window.location.href = markerData.target;\r\n }\r\n if (markerData.type == \"mapzoomtolocation\") {\r\n this.markerZoom = markerData.zoom;\r\n console.log(\"MZ MD\", markerData);\r\n\r\n this.center = [Number(markerData.lng), Number(markerData.lat)];\r\n this.$refs.map.zoomToLocation(this.markerZoom, this.center);\r\n this.zoomMarkerFlag = true;\r\n\r\n this.$store.dispatch(\"map/getPopup\", markerData.id);\r\n\r\n //Get current popup (clicked) then get all necessary value to create an object that can be passed in the layerOptions\r\n console.log(\"MZ pre\");\r\n //const chosenLayer = this.$store.state.map.currentPopup.map_layers[0].value;\r\n const chosenLayer = markerData.map_layers;\r\n // this.selectedLayers = chosenLayer\r\n\r\n console.log(\"MZ layername\", chosenLayer);\r\n\r\n this.transformedObject = {\r\n key: this._uid,\r\n data: {\r\n [chosenLayer]: true,\r\n },\r\n };\r\n\r\n console.log(this.transformedObject, \"payloadMap\");\r\n\r\n this.$store.dispatch(\r\n \"wagtail/updateLayerOptions\",\r\n this.transformedObject\r\n );\r\n }\r\n if (markerData.type == \"maprenderlocation\") {\r\n this.markerZoom = markerData.marker_zoom;\r\n console.log(\"MZ MD\", markerData);\r\n\r\n this.center = [Number(markerData.lng), Number(markerData.lat)];\r\n const data = await this.$store.dispatch(\r\n \"wagtail/getRenderLocationChildPage\",\r\n markerData.id\r\n );\r\n this.$store.commit(\"map/setRenderLocation\", true);\r\n this.$refs.map.zoomToRenderLocation(\r\n this.center,\r\n data.tilt_offset,\r\n this.markerZoom,\r\n data.heading,\r\n 2000\r\n );\r\n setTimeout(() => {\r\n if (data.location_render_image != null) {\r\n if (this.$store.state.map.precinct != null) {\r\n this.$store.commit(\r\n \"map/setBackupPrecinct\",\r\n this.$store.state.map.precinct\r\n );\r\n }\r\n this.$store.commit(\"map/setPrecinct\", null);\r\n this.renderLayer = data.location_render_image;\r\n console.log(\"[RENDER] Not Null\", this.renderLayer);\r\n } else {\r\n console.log(\"[RENDER] Null\");\r\n }\r\n }, 2300); // Delay of 2300 milliseconds\r\n\r\n this.zoomMarkerFlag = true;\r\n\r\n this.$store.dispatch(\"map/getPopup\", markerData.id);\r\n\r\n //Get current popup (clicked) then get all necessary value to create an object that can be passed in the layerOptions\r\n\r\n //const chosenLayer = this.$store.state.map.currentPopup.map_layers[0].value;\r\n }\r\n if (markerData.type == \"renderview2d\") {\r\n this.showMarkers = false;\r\n\r\n // Hide the right side bar\r\n if (this.$store.state.map.precinct != null) {\r\n this.$store.commit(\r\n \"map/setBackupPrecinct\",\r\n this.$store.state.map.precinct\r\n );\r\n this.$store.commit(\"map/setPrecinct\", null);\r\n }\r\n\r\n this.loading = true;\r\n\r\n const data = await this.$store.dispatch(\"map/getPopup\", markerData.id);\r\n\r\n if (data.location_render_image != null) {\r\n this.renderView2d = data;\r\n }\r\n }\r\n if (markerData.type.includes(\"popup\")) {\r\n console.log(markerData.id, \"test\");\r\n this.$store.dispatch(\"map/getPopup\", markerData.id);\r\n let id = markerData.id;\r\n this.lightboxReady = true;\r\n //TODO: I don't like using the store for this - should call the API service directly\r\n this.$store.dispatch(\"wagtail/getPopup\", id);\r\n return (this.dialog.value = true);\r\n }\r\n },\r\n markerSelected: function () {\r\n //If we have a current marker zoom to it, otherwise zoom to all markers\r\n if (this.$store.state.currentMarker !== undefined) {\r\n var center = [\r\n Number(this.$store.state.currentMarker.long),\r\n Number(this.$store.state.currentMarker.lat),\r\n ];\r\n this.$refs.map.zoomToCenter(\r\n center,\r\n this.$store.state.currentMarker.zoom\r\n );\r\n } else {\r\n this.zoomToMarkers();\r\n }\r\n },\r\n zoomToMarkers: function (resetTilt) {\r\n if (this.pageData !== undefined) {\r\n //Assemble an array of point long/lats and pass them through to zoom onto\r\n const pointArray = [];\r\n this.pageData.children.forEach((element) => {\r\n if (\r\n element.icon !== null &&\r\n element.lng !== null &&\r\n element.lat !== null\r\n )\r\n pointArray.push([Number(element.lng), Number(element.lat)]);\r\n });\r\n\r\n if (pointArray.length === 0) {\r\n var center = [Number(this.pageData.lng), Number(this.pageData.lat)];\r\n console.log(\"back\");\r\n this.$refs.map.zoomToCenter(center, this.pageData.zoom, 0);\r\n } else {\r\n this.$refs.map.zoomToPoints(pointArray);\r\n }\r\n }\r\n },\r\n closeLightbox() {\r\n //TODO: Make map popups update routes\r\n // this.$router.push(new URL(this.pageData.meta.html_url).pathname);\r\n this.$store.commit(\"wagtail/getPopupSuccess\", undefined);\r\n\r\n this.lightboxReady = false;\r\n },\r\n mapMoved(evt) {\r\n if (this.accessibilityMarkerZoom) {\r\n clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.$emit(\"mapMoved\");\r\n }, 500);\r\n }\r\n this.mapCenter = [evt.center.latitude, evt.center.longitude];\r\n },\r\n mapZoomed(evt) {\r\n let previousZoomLevel = this.currZoomLevel;\r\n this.currZoomLevel = evt;\r\n console.log(\r\n \"[ZOOM] Current\",\r\n this.currZoomLevel,\r\n \" Previous\",\r\n previousZoomLevel\r\n );\r\n if (\r\n this.$store.state.map.rightSidebarZoomLevel != null &&\r\n previousZoomLevel > this.currZoomLevel &&\r\n this.$store.state.map.scrollZoom &&\r\n this.currZoomLevel < this.$store.state.map.rightSidebarZoomLevel &&\r\n this.$store.state.map.precinct != null\r\n ) {\r\n console.log(\"SCROLL PASSED PRECINCT CHECK\");\r\n this.$store.commit(\r\n \"map/setBackupPrecinct\",\r\n this.$store.state.map.precinct\r\n );\r\n this.$store.commit(\"map/setPrecinct\", null);\r\n this.$store.commit(\"map/setRightSidebarZoomLevel\", null);\r\n }\r\n if (\r\n this.$store.state.map.rightSidebarZoomLevel != null &&\r\n previousZoomLevel > this.currZoomLevel &&\r\n this.$store.state.map.scrollZoom &&\r\n this.currZoomLevel < this.$store.state.map.rightSidebarZoomLevel &&\r\n this.$store.state.map.groupLocation != null\r\n ) {\r\n console.log(\"SCROLL PASSED GROUP CHECK\");\r\n this.$store.commit(\"map/setGroupLocation\", null);\r\n this.$store.commit(\"map/setRightSidebarZoomLevel\", null);\r\n }\r\n\r\n if (this.currZoomLevel >= this.pageData.zoom * 1.1) {\r\n // console.log(\"test\", evt , \"vs\" , this.pageData.zoom,\"and\", this.pageData.children[0].type)\r\n //this.markerVisible = false;\r\n } else this.markerVisible = true;\r\n },\r\n getAriaLabel(item) {\r\n if (item.accessible_label) {\r\n return item.accessible_label;\r\n } else {\r\n return item.title;\r\n }\r\n },\r\n clearRenderView2d() {\r\n this.renderView2d = null;\r\n this.showMarkers = true;\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.searchbar {\r\n position: absolute;\r\n top: 12px;\r\n left: 270px;\r\n}\r\n\r\n.loading {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.map-legend {\r\n position: absolute;\r\n bottom: 35px;\r\n left: 15px;\r\n width: 344px;\r\n}\r\n\r\n.esri-view-width-xsmall .esri-expand--auto .esri-expand__container--expanded {\r\n position: relative !important;\r\n}\r\n\r\n@media (max-width: 600px) {\r\n .searchbar {\r\n width: unset;\r\n right: 10px;\r\n }\r\n\r\n .map-legend {\r\n width: unset;\r\n right: 15px;\r\n }\r\n ::v-deep .esri-legend.esri-widget.esri-widget--panel {\r\n max-height: 30vh;\r\n }\r\n}\r\n\r\n.map-sticky-card {\r\n z-index: 100;\r\n}\r\n\r\n::v-deep\r\n .esri-view-width-xsmall\r\n .esri-expand--auto\r\n .esri-expand__container--expanded {\r\n position: relative;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Map.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Map.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Map.vue?vue&type=template&id=72c3e203&scoped=true&\"\nimport script from \"./Map.vue?vue&type=script&lang=js&\"\nexport * from \"./Map.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Map.vue?vue&type=style&index=0&id=72c3e203&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"72c3e203\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.mapLightbox)?_c('LightboxBase',{ref:\"lightbox\",attrs:{\"showLightbox\":_vm.showLightbox,\"accessibilityMode\":_vm.accessibilityMode,\"hasAccessibleText\":_vm.pageData.accessibility_text ? _vm.pageData.accessibility_text : ''},on:{\"closed\":function($event){return _vm.closeMapLightbox()},\"accessibility\":function($event){return _vm.accessibilityTextTrigger()}}},[_c('LightboxContentLayout',{attrs:{\"ariaDescription\":'accessibilityDescriptionMap',\"accessibilityTextFlag\":_vm.accessibilityTextFlag,\"accessibilityText\":_vm.pageData.accessibility_text ? _vm.pageData.accessibility_text : ''}},[_c('Map',{staticClass:\"map-lightbox\",attrs:{\"aria-label\":_vm.pageData.accessibility_text ? _vm.pageData.accessibility_text : '',\"pageData\":_vm.pageData,\"tabindex\":\"-1\",\"accessibilityZoom\":true}})],1)],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <LightboxBase\r\n @closed=\"closeMapLightbox()\"\r\n @accessibility=\"accessibilityTextTrigger()\"\r\n ref=\"lightbox\"\r\n :showLightbox=\"showLightbox\"\r\n :accessibilityMode=\"accessibilityMode\"\r\n :hasAccessibleText=\"\r\n pageData.accessibility_text ? pageData.accessibility_text : ''\r\n \"\r\n v-if=\"mapLightbox\"\r\n >\r\n \r\n <LightboxContentLayout\r\n :ariaDescription=\"'accessibilityDescriptionMap'\"\r\n :accessibilityTextFlag=\"accessibilityTextFlag\"\r\n :accessibilityText=\"\r\n pageData.accessibility_text ? pageData.accessibility_text : ''\r\n \"\r\n >\r\n \r\n <Map\r\n :aria-label=\"\r\n pageData.accessibility_text ? pageData.accessibility_text : ''\r\n \"\r\n :pageData=\"pageData\"\r\n tabindex=\"-1\"\r\n class=\"map-lightbox\"\r\n :accessibilityZoom=\"true\"\r\n />\r\n \r\n </LightboxContentLayout>\r\n \r\n </LightboxBase>\r\n</template>\r\n\r\n<script>\r\nimport LightboxBase from \"../lightbox/LightboxBase.vue\";\r\nimport LightboxContentLayout from \"../lightbox/LightboxContentLayout.vue\";\r\nimport Map from \"../esrimap/Map.vue\";\r\n\r\nexport default {\r\n name: \"MapLightbox\",\r\n components: {\r\n LightboxBase,\r\n LightboxContentLayout,\r\n Map,\r\n },\r\n props: {\r\n pageData: Object,\r\n showLightbox: Boolean,\r\n accessibilityMode: Boolean,\r\n mapLightbox: Boolean,\r\n },\r\n data: () => ({\r\n accessibilityTextFlag: false,\r\n }),\r\n methods: {\r\n closeMapLightbox() {\r\n this.$emit(\"closed\");\r\n },\r\n accessibilityTextTrigger() {\r\n if (this.accessibilityTextFlag == false) {\r\n this.accessibilityTextFlag = true;\r\n } else {\r\n this.accessibilityTextFlag = false;\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.map-lightbox {\r\n height: 80%;\r\n width: 100%;\r\n position: relative;\r\n}\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MapLightbox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MapLightbox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MapLightbox.vue?vue&type=template&id=0db00f90&scoped=true&\"\nimport script from \"./MapLightbox.vue?vue&type=script&lang=js&\"\nexport * from \"./MapLightbox.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MapLightbox.vue?vue&type=style&index=0&id=0db00f90&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0db00f90\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div>\r\n <PageHeaderCard :transparent=\"false\" class=\"map-header\"></PageHeaderCard>\r\n <div class=\"map-body\">\r\n <Sidebar :pageData=\"pageData\" class=\"map-sidebar\"></Sidebar>\r\n <Map\r\n tabindex=\"-1\"\r\n :class=\"'map'\"\r\n :pageData=\"pageData\"\r\n refs=\"map\"\r\n @mapMoved=\"\r\n accessibilityModalFlag = true;\r\n accessibilityModalFlag2 = true;\r\n \"\r\n ></Map>\r\n <v-slide-x-reverse-transition>\r\n <RightSidebar\r\n v-if=\"precinct || groupLocation\"\r\n :pageData=\"precinct\"\r\n :groupData=\"groupLocation\"\r\n :class=\"'map-sidebar-right'\"\r\n ></RightSidebar>\r\n </v-slide-x-reverse-transition>\r\n </div>\r\n\r\n <!-- <LightboxGallery\r\n :showLightbox=\"lightboxContent?.length > 0 && mapPageLightboxReady\"\r\n :content=\"lightboxContent\"\r\n ref=\"lightbox\"\r\n @closed=\"closeLightbox()\"\r\n /> -->\r\n <v-dialog\r\n content-class=\"accessibility-lightbox\"\r\n persistent\r\n v-model=\"accessibilityModalFlag\"\r\n v-show=\"accessibilityModalFlag2\"\r\n ref=\"accessibilityLightbox\"\r\n @keydown.esc=\"\r\n (accessibilityModalFlag2 = false),\r\n (accessibilityModalFlag = false),\r\n closeAccessibilityLightbox()\r\n \"\r\n >\r\n <template v-slot:default=\"dialog\">\r\n <v-card>\r\n <FocusLoop :is-visible=\"activeTrap\">\r\n <v-card-title class=\"text-h5 accessibility-header lighten-2\">\r\n Accessibility Mode\r\n </v-card-title>\r\n <v-tabs grow show-arrows>\r\n <v-tab class=\"accessibility-tab\"> Sidebar Content </v-tab>\r\n <v-tab-item>\r\n <v-list-item-group\r\n v-for=\"(item, i) in pageData.children\"\r\n :key=\"pageData.id + 'page_' + i\"\r\n link\r\n @click=\"markerClicked(item), dialog.value = false;\r\n\"\r\n >\r\n <v-list-item\r\n v-if=\"item.type == 'mappage'\"\r\n class=\"accessibility-btn\"\r\n @click=\"\r\n markerClicked(item);\r\n dialog.value = false;\r\n \"\r\n >\r\n {{ item.title }}\r\n </v-list-item>\r\n </v-list-item-group>\r\n <v-list-item\r\n @keydown.enter.exact.prevent=\"markerClicked()\"\r\n @click=\"(sidebarLightbox = true), (dialog.value = false)\"\r\n class=\"accessibility-btn\"\r\n >Sidebar Overview\r\n </v-list-item>\r\n <v-list-item\r\n v-if=\"pageData.next_map !== null\"\r\n @click=\"gotoPage(pageData.next_map.html_url)\"\r\n class=\"accessibility-btn\"\r\n >\r\n Next - {{ pageData.next_map.title }}\r\n </v-list-item>\r\n <v-list-item\r\n v-if=\"\r\n pageData.root_map !== null &&\r\n pageData.root_map.id !== pageData.id\r\n \"\r\n @click=\"gotoPage(pageData.root_map.html_url)\"\r\n class=\"accessibility-btn\"\r\n >\r\n Home - {{ pageData.root_map.title }}\r\n </v-list-item>\r\n </v-tab-item>\r\n <v-tab class=\"accessibility-tab\"> Map Content </v-tab>\r\n <v-tab-item>\r\n <v-list-item-group\r\n v-for=\"(item, i) in pageData.children\"\r\n :key=\"pageData.id + 'page_' + i\"\r\n link\r\n class=\"accessibility-btn\"\r\n @click=\"markerClicked(item) ,(dialog.value = false)\"\r\n >\r\n <v-list-item\r\n @click=\"markerClicked(item), (dialog.value = false)\"\r\n v-if=\"\r\n item.type == 'mappopup' ||\r\n item.type == 'mapzoomtolocation' ||\r\n item.type == 'imagepreviewpopup'\r\n \"\r\n >\r\n {{ item.title }}\r\n </v-list-item>\r\n </v-list-item-group>\r\n <v-list-item\r\n class=\"accessibility-btn\"\r\n @keydown.enter.exact.prevent=\"markerClicked()\"\r\n @click=\"(mapLightbox = true), (dialog.value = false)\"\r\n >Map Overview</v-list-item\r\n >\r\n <v-list-item\r\n class=\"accessibility-btn\"\r\n v-if=\"pageData.next_map !== null\"\r\n @click=\"gotoPage(pageData.next_map.html_url)\"\r\n >\r\n Next - {{ pageData.next_map.title }}\r\n </v-list-item>\r\n <v-list-item\r\n v-if=\"\r\n pageData.root_map !== null &&\r\n pageData.root_map.id !== pageData.id\r\n \"\r\n class=\"accessibility-btn\"\r\n @click=\"gotoPage(pageData.root_map.html_url)\"\r\n >\r\n Home - {{ pageData.root_map.title }}\r\n </v-list-item>\r\n </v-tab-item>\r\n <v-tab>Site Navigation </v-tab>\r\n <v-tab-item>\r\n <v-list-item\r\n v-for=\"(menuItem, i) in siteStructure\"\r\n :key=\"i\"\r\n :to=\"menuItem.pathname\"\r\n link\r\n >\r\n <v-list-item-icon class=\"mr-4\">\r\n <v-icon>{{ menuItem.menu_icon }}</v-icon>\r\n </v-list-item-icon>\r\n <v-list-item-title>{{ menuItem.title }}</v-list-item-title>\r\n </v-list-item></v-tab-item\r\n >\r\n </v-tabs>\r\n\r\n <v-divider></v-divider>\r\n <v-btn\r\n class=\"close-accessibility-btn\"\r\n tabindex=\"0\"\r\n @click=\"closeAccessibilityLightbox(), (dialog.value = false)\"\r\n >Close</v-btn\r\n >\r\n </FocusLoop>\r\n </v-card>\r\n </template>\r\n </v-dialog>\r\n\r\n <!-- Map Overview -->\r\n <MapLightbox\r\n @closed=\"(mapLightbox = false), (accessibilityModalFlag = true)\"\r\n :pageData=\"pageData\"\r\n :showLightbox=\"showLightbox\"\r\n :accessibilityMode=\"accessibilityMode\"\r\n :mapLightbox=\"mapLightbox\"\r\n />\r\n <!-- End of Map Overview -->\r\n <!-- Do not remove this -->\r\n <LightboxGallery\r\n :showLightbox=\"lightboxContent.length > 0 && lightboxReady\"\r\n :content=\"lightboxContent\"\r\n @closed=\"closeLightbox()\"\r\n />\r\n\r\n <LightboxBase\r\n @closed=\"(sidebarLightbox = false), (accessibilityModalFlag = true)\"\r\n v-if=\"sidebarLightbox\"\r\n :showLightbox=\"showLightbox\"\r\n ref=\"lightbox\"\r\n >\r\n <Sidebar\r\n :pageData=\"pageData\"\r\n :class=\"'map-sidebar-accessibility-mode'\"\r\n ></Sidebar>\r\n </LightboxBase>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport RightSidebar from \"../../components/sidebar/RightSidebar.vue\";\r\nimport Sidebar from \"../../components/sidebar/Sidebar.vue\";\r\nimport Map from \"../../components/esrimap/Map.vue\";\r\nimport LightboxBase from \"../../components/lightbox/LightboxBase.vue\";\r\nimport PageHeaderCard from \"../../components/page/pageHeaderCard.vue\";\r\nimport { FocusLoop } from \"@vue-a11y/focus-loop\";\r\nimport * as arrowKeyNavigation from \"arrow-key-navigation\";\r\nimport MapLightbox from \"../../components/lightbox/MapLightbox.vue\";\r\n\r\n//enables next & previous tab style DOM navigation using arrow keys\r\narrowKeyNavigation.register();\r\n\r\nexport default {\r\n name: \"MapPage\",\r\n props: {\r\n pageData: Object,\r\n pageChildren: Array,\r\n showLightbox: { type: Boolean, default: true },\r\n showTitle: { type: Boolean, default: true },\r\n },\r\n components: {\r\n RightSidebar,\r\n Sidebar,\r\n Map,\r\n PageHeaderCard,\r\n FocusLoop,\r\n LightboxBase,\r\n MapLightbox,\r\n },\r\n data: () => ({\r\n accessibilityTextFlag: false,\r\n lightboxData: undefined,\r\n showPopup: false,\r\n counter_flag: 0,\r\n isMobile: false,\r\n accessibilityFlag: false,\r\n mapLightbox: false,\r\n sidebarLightbox: false,\r\n focused: false,\r\n showLanding: Boolean,\r\n accessibilityModalFlag: false,\r\n accessibilityModalFlag2: false,\r\n tab_counter: -1,\r\n map_flag: false,\r\n popupFlag: true,\r\n sidebar_flag: true,\r\n sidebarcontent: 0,\r\n mapcontent: 0,\r\n activeTrap: true,\r\n previousMenuItem: undefined,\r\n groupLocationData: null,\r\n renderView2d: null,\r\n lightboxReady: false,\r\n }),\r\n beforeDestroy() {\r\n if (typeof window === \"undefined\") return;\r\n\r\n window.removeEventListener(\"resize\", this.onResize, { passive: true });\r\n console.log(\"hello\");\r\n },\r\n mounted() {\r\n this.accessibilityFlagChecker();\r\n\r\n console.log(this.pageData, this.showLanding, \"page data from webpage\");\r\n\r\n var bodyElement = document.querySelector(\"body\");\r\n var htmlElement = document.querySelector(\"html\");\r\n bodyElement.classList.add(\"body-scrolldisable\");\r\n htmlElement.classList.add(\"html-scrolldisable\");\r\n\r\n this.onResize();\r\n for (var i = 0; i < this.pageData.children.length; i++) {\r\n if (this.pageData.children[i].type == \"mappage\") {\r\n this.sidebarcontent++;\r\n }\r\n }\r\n for (var m = 0; m < this.pageData.children.length; m++) {\r\n if (\r\n this.pageData.children[m].type == \"mappopup\" ||\r\n this.pageData.children[m].type == \"mapzoomtolocation\"\r\n ) {\r\n this.mapcontent++;\r\n }\r\n }\r\n },\r\n computed: {\r\n precinct() {\r\n return this.$store.state.map.precinct;\r\n },\r\n groupLocation() {\r\n const data = this.$store.state.map.groupLocation;\r\n console.log(\"groupLocation clicked computed property updated\", data);\r\n return data;\r\n },\r\n mapPageLightboxReady() {\r\n return this.$store.state.wagtail.mapPageLightboxReady;\r\n },\r\n pageUpdated() {\r\n return this.pageData;\r\n },\r\n currentPath() {\r\n return this.$route.path;\r\n },\r\n lightboxContent() {\r\n if (this.$store.state.wagtail.currentPopup === undefined) {\r\n return [];\r\n } else if (this.$store.state.wagtail.currentPopup.question) {\r\n return this.$store.state.wagtail.currentPopup.question;\r\n } else return this.$store.state.wagtail.currentPopup.content;\r\n },\r\n accessibilityMode() {\r\n return this.$store.state.wagtail.accessibilityMode;\r\n },\r\n islightboxActive() {\r\n if (this.$store.state.lightbox.lightboxObjects.length == 0) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n },\r\n siteStructure() {\r\n let siteStructure = [];\r\n for (const item of this.$store.state.wagtail.siteStructure) {\r\n //TODO: Unsure how reliable this is. Looks at the URL to calculate depth by counting slashes in the URL\r\n item.depth = item.meta.html_url.split(\"/\").length - 4;\r\n let url = new URL(item.meta.html_url);\r\n item.pathname = url.pathname;\r\n item.menutitle = Array(item.depth + 1).join(\" -\") + \" \" + item.title;\r\n siteStructure.push(item);\r\n }\r\n\r\n return siteStructure;\r\n },\r\n },\r\n methods: {\r\n markerClicked(markerData) {\r\n this.previousMenuItem = document.activeElement;\r\n console.log(markerData, \"WagtailService.getPageById\");\r\n\r\n if (markerData.type === \"mappage\") {\r\n this.$router.push(new URL(markerData.html_url).pathname);\r\n }\r\n if (markerData.type === \"mapzoomtolocation\") {\r\n this.mapLightbox = true;\r\n this.$store.commit(\"map/accessibilityMarkerZoom\", markerData);\r\n\r\n this.accessibilityModalFlag2 = false;\r\n this.accessibilityModalFlag = false;\r\n this.closeAccessibilityLightbox();\r\n }\r\n if (markerData.type.includes(\"popup\")) {\r\n this.$store.dispatch(\"map/getPopup\", markerData.id);\r\n let id = markerData.id;\r\n this.lightboxReady = true;\r\n this.accessibilityModalFlag2 = false;\r\n this.accessibilityModalFlag = false;\r\n //TODO: I don't like using the store for this - should call the API service directly\r\n this.$store.dispatch(\"wagtail/getPopup\", id);\r\n return (this.dialog.value = false);\r\n }\r\n },\r\n welcomeClosed() {\r\n this.showLanding = false;\r\n sessionStorage.setItem(\"showLanding\", false);\r\n },\r\n\r\n // isRootPage() {\r\n // let currPath = this.currentPath;\r\n // let pagePath = new URL(this.pageData.meta.html_url).pathname;\r\n // console.log(pagePath, this.currentPath , \"pagepath\")\r\n // if (currPath === pagePath) return true;\r\n // return false;\r\n // },\r\n // shortcutClicked(url) {\r\n // //When we click a shortcut, we either route to that page, or if the shortcut is the current page we close the dialog\r\n // let pagePath = new URL(url).pathname;\r\n // let currPath = this.currentPath;\r\n\r\n // if (currPath === pagePath) this.welcomeClosed();\r\n // else this.$router.push(pagePath);\r\n // },\r\n\r\n openMapLightbox() {\r\n if (this.mapLightbox == false) {\r\n this.mapLightbox = true;\r\n } else {\r\n this.mapLightbox = false;\r\n }\r\n },\r\n onResize() {\r\n this.isMobile = window.screen.width < 600;\r\n },\r\n closeLightbox() {\r\n //TODO: Make map popups update routes\r\n // this.$router.push(new URL(this.pageData.meta.html_url).pathname);\r\n this.$store.commit(\"wagtail/getPopupSuccess\", undefined);\r\n\r\n //Return focus to previous element\r\n //this.$refs.sidebar.$children[this.counter_flag].$el.focus();\r\n },\r\n closeAccessibilityLightbox() {\r\n this.accessibilityModalFlag = false;\r\n this.accessibilityModalFlag2 = false;\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityModalFlag,\r\n { root: true }\r\n );\r\n localStorage.setItem(\"accessibilityModeState\", false);\r\n },\r\n accessibilityFlagChecker() {\r\n let accessibilityState = localStorage.getItem(\"accessibilityModeState\");\r\n if (accessibilityState == \"true\") {\r\n this.accessibilityModalFlag = true;\r\n this.accessibilityModalFlag2 = true;\r\n } else {\r\n this.accessibilityModalFlag = false;\r\n this.accessibilityModalFlag2 = false;\r\n }\r\n this.$store.commit(\r\n \"wagtail/setAccessibiltyMode\",\r\n this.accessibilityModalFlag,\r\n { root: true }\r\n );\r\n },\r\n gotoPage(url) {\r\n this.$router.push(new URL(url).pathname);\r\n },\r\n },\r\n\r\n watch: {\r\n groupLocation: {\r\n handler(newValue, oldValue) {\r\n this.groupLocationData = newValue;\r\n console.log(\"clicked new data\", this.groupLocation);\r\n },\r\n deep: true,\r\n },\r\n markerUpdated() {\r\n this.markerSelected();\r\n },\r\n accessibilityMode(newValue) {\r\n if (newValue == true) {\r\n this.accessibilityModalFlag = true;\r\n this.accessibilityModalFlag2 = true;\r\n localStorage.setItem(\"accessibilityModeState\", true);\r\n } else {\r\n this.accessibilityModalFlag = false;\r\n this.accessibilityModalFlag2 = false;\r\n localStorage.setItem(\"accessibilityModeState\", false);\r\n }\r\n },\r\n\r\n onResize() {\r\n this.onResize();\r\n },\r\n islightboxActive() {\r\n //return this.$store.state.lightbox.lightboxObjects.length\r\n if (this.islightboxActive == false) {\r\n if (localStorage.getItem(\"accessibilityModeState\") == \"true\") {\r\n this.accessibilityModalFlag = true;\r\n this.accessibilityModalFlag2 = true;\r\n } else {\r\n this.accessibilityModalFlag = false;\r\n this.accessibilityModalFlag2 = false;\r\n }\r\n //return focus to the previously focssed item after lightbox closes\r\n this.$nextTick(() => {\r\n if (this.previousMenuItem != undefined) {\r\n //cleanup previously focussed item 'active' shading\r\n this.previousMenuItem.classList.remove(\"v-item--active\");\r\n this.previousMenuItem.classList.remove(\"v-list-item--active\");\r\n this.previousMenuItem.focus();\r\n }\r\n });\r\n } else {\r\n this.accesibilityModal = false;\r\n this.accessibilityModalFlag2 = false;\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.map-body {\r\n position: absolute;\r\n top: 56px;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n\r\n @media (min-width: 961px) {\r\n top: 64px !important;\r\n }\r\n}\r\n\r\n.map-header {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n width: 100%;\r\n}\r\n\r\n.map-sidebar {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n /* width: 344px; */\r\n width: 500px;\r\n height: 100%;\r\n}\r\n\r\n\r\n@media (min-width: 601px) and (max-width: 1000px){\r\n .map-sidebar {\r\n width: 320px;\r\n }\r\n\r\n .map {\r\n left: 320px !important;\r\n }\r\n}\r\n\r\n.map-sidebar-right {\r\n position: absolute;\r\n top: 0px;\r\n right: 0;\r\n width: 300px;\r\n height: 100%;\r\n}\r\n\r\n.map-sidebar-accessibility-mode {\r\n background: white;\r\n height: 100%;\r\n}\r\n\r\n.map {\r\n position: absolute;\r\n top: 0px;\r\n left: 500px;\r\n right: 0px;\r\n height: 100%;\r\n}\r\n.map-accessibility-mode {\r\n position: absolute;\r\n top: 0px;\r\n left: 750px;\r\n right: 0px;\r\n height: 100%;\r\n}\r\n\r\n.map-accessible-sidebar {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n /* / width: 500px; */\r\n height: 100%;\r\n}\r\n\r\n.map-legend {\r\n display: none;\r\n}\r\n\r\n.accessibility_sidebar {\r\n position: absolute;\r\n left: 26%;\r\n /* width: 200px; */\r\n}\r\n\r\n#accessibility-btn:focus-visible {\r\n outline: 4px dashed darkorange;\r\n}\r\n\r\n::v-deep .accessibility-lightbox {\r\n min-width: 300px;\r\n width: 25vw;\r\n}\r\n\r\n.accessibility-header {\r\n background-color: black;\r\n color: white;\r\n}\r\n\r\n@media (max-width: 600px) {\r\n\r\n .map-sidebar {\r\n height: 50%;\r\n width: 100%;\r\n top: 50%;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n }\r\n\r\n .map-sidebar-right {\r\n height: 50%;\r\n width: 100%;\r\n top: 50%;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n z-index: +999;\r\n }\r\n\r\n .map {\r\n height: 50%;\r\n width: 100%;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 50%;\r\n }\r\n\r\n .map-legend {\r\n display: block;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MapPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MapPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MapPage.vue?vue&type=template&id=559828ee&scoped=true&\"\nimport script from \"./MapPage.vue?vue&type=script&lang=js&\"\nexport * from \"./MapPage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MapPage.vue?vue&type=style&index=0&id=559828ee&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"559828ee\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-container',{staticClass:\"fullscreen\",attrs:{\"fill-height\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\"text-center\"},[_c('v-icon',{staticClass:\"pb-6\",attrs:{\"x-large\":\"\",\"color\":\"primary\"}},[_vm._v(\"mdi-emoticon-sad-outline\")]),_c('p',[_vm._v(\"We couldn't find the page you were looking for.\")]),_c('p',[_vm._v(\"This page doesn't exist or you don't have permission to view it.\")]),(!_vm.loggedIn)?_c('p',[_vm._v(\"Have you tried \"),_c('a',{attrs:{\"href\":_vm.loginUrl}},[_vm._v(\"logging in?\")])]):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-container fill-height class=\"fullscreen\">\r\n <v-row align=\"center\" justify=\"center\">\r\n <v-col class=\"text-center\">\r\n <v-icon x-large class=\"pb-6\" color=\"primary\">mdi-emoticon-sad-outline</v-icon>\r\n <p>We couldn't find the page you were looking for.</p>\r\n <p>This page doesn't exist or you don't have permission to view it.</p>\r\n <p v-if=\"!loggedIn\">Have you tried <a :href=\"loginUrl\">logging in?</a></p>\r\n </v-col>\r\n </v-row>\r\n \r\n </v-container>\r\n</template>\r\n\r\n<script>\r\n// import Streamfield from \"../../components/blocks/streamfieldBlock.vue\";\r\n\r\nexport default {\r\n name: \"Error404\",\r\n props: {\r\n },\r\n metaInfo: {\r\n meta: [\r\n { name: 'robots', content: 'noindex' }\r\n ]\r\n },\r\n // components: { Streamfield },\r\n data: () => ({}),\r\n mounted() {},\r\n computed: {\r\n loggedIn() {\r\n return this.$store.state.auth.status.loggedIn\r\n },\r\n loginUrl() {\r\n return \"/login?redirect=\" + window.location.pathname\r\n }\r\n },\r\n methods: {},\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n\r\n.fullscreen {\r\n position:absolute;\r\n bottom: 0px;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Error404.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Error404.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Error404.vue?vue&type=template&id=75abf5c4&scoped=true&\"\nimport script from \"./Error404.vue?vue&type=script&lang=js&\"\nexport * from \"./Error404.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Error404.vue?vue&type=style&index=0&id=75abf5c4&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"75abf5c4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('Sidebar',{staticClass:\"map-sidebar\",attrs:{\"pageData\":_vm.pageData}}),_c('div',{class:_vm.panoClass},[_c('Marzipano',{key:_vm.tourIndex,attrs:{\"typeOf\":\"equirect\",\"data\":_vm.currentMedia.value,\"minYaw\":_vm.minYaw,\"maxYaw\":_vm.maxYaw,\"ready\":true}}),_c('div',{staticClass:\"pano-nav\"},[_c('div',{staticClass:\"slide-group\"},[_c('v-slide-group',{staticClass:\"pa-0\",attrs:{\"center-active\":\"\",\"show-arrows\":\"\",\"dark\":\"\"},model:{value:(_vm.tourIndex),callback:function ($$v) {_vm.tourIndex=$$v},expression:\"tourIndex\"}},_vm._l((_vm.pageData.geotagged_media),function(data,index){return _c('v-slide-item',{key:index,scopedSlots:_vm._u([{key:\"default\",fn:function({ active, toggle }){return [_c('v-card',{staticClass:\"ma-2 slide-group-card\",attrs:{\"light\":\"\",\"color\":active ? 'orange' : 'white',\"elevation\":active ? 8 : 2},on:{\"click\":toggle}},[_c('v-img',{staticClass:\"slide-group-img\",attrs:{\"src\":data.value.thumbnail}}),(data.value.alternate_title)?_c('v-card-text',{staticClass:\"text-truncate pa-2 text-center text-caption slide-group-title\"},[_vm._v(\" \"+_vm._s(data.value.alternate_title)+\" \")]):(!data.value.alternate_title)?_c('v-card-text',{staticClass:\"text-truncate pa-2 text-center text-caption slide-group-title\"},[_vm._v(\" \"+_vm._s(data.value.title)+\" \")]):_vm._e()],1)]}}],null,true)})}),1)],1)])],1),_c('v-scale-transition',{attrs:{\"origin\":\"center center\"}},[_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showMap),expression:\"!showMap\"}],staticClass:\"map-show-btn\",attrs:{\"fab\":\"\"},on:{\"click\":function($event){_vm.showMap = true}}},[_c('v-icon',[_vm._v(\" mdi-map \")])],1)],1),_c('v-scale-transition',{attrs:{\"origin\":\"top right\"}},[_c('v-card',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showMap),expression:\"showMap\"}],class:_vm.mapClass,attrs:{\"elevation\":\"8\"}},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"color\":\"primary\",\"dense\":\"\"}},[_c('v-toolbar-title',[_vm._v(\"Map\")]),_c('v-spacer'),(_vm.pageData.meta.parent !== null && _vm.largeMap === false)?_c('v-btn',{staticClass:\"map-resize-btns\",attrs:{\"icon\":\"\",\"dark\":\"\"},on:{\"click\":function($event){_vm.largeMap = true}}},[_c('v-icon',[_vm._v(\"mdi-dock-right\")])],1):_vm._e(),(_vm.pageData.meta.parent !== null && _vm.largeMap === true)?_c('v-btn',{staticClass:\"map-resize-btns\",attrs:{\"icon\":\"\",\"dark\":\"\"},on:{\"click\":function($event){_vm.largeMap = false}}},[_c('v-icon',[_vm._v(\"mdi-picture-in-picture-top-right\")])],1):_vm._e(),(_vm.pageData.meta.parent !== null)?_c('v-btn',{attrs:{\"icon\":\"\",\"dark\":\"\"},on:{\"click\":function($event){_vm.showMap = false}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1):_vm._e()],1),(_vm.pageData !== undefined)?_c('MapArc',{ref:\"map\",staticClass:\"esri-map\",attrs:{\"mapZoom\":_vm.pageData.zoom,\"mapMinZoom\":_vm.pageData.minZoom,\"mapMaxZoom\":_vm.pageData.maxZoom,\"mapCenter\":[\n _vm.currentMedia.value.latitude,\n _vm.currentMedia.value.longitude,\n ],\"bottomLeftExtent\":_vm.pageData.bottomLeftpoint,\"topRightExtent\":_vm.pageData.topRightpoint,\"isRotationEnabled\":_vm.pageData.disableMapRotation,\"webScene\":_vm.pageData.web_scene_id,\"filterJson\":_vm.$store.state.map.layerFilter,\"layerOptions\":_vm.$store.state.map.layerOptions,\"tokens\":_vm.pageData.tokens,\"aria-label\":_vm.pageData.accessible_label,\"portalItemType\":_vm.pageData.portal_item_type,\"portalItemId\":_vm.pageData.portal_item_id,\"showSearch\":false,\"showBasemap\":false,\"showLegendWidget\":false},on:{\"ready\":function($event){return _vm.mapReady()},\"mapLoadStart\":function($event){_vm.loading = true},\"mapLoadEnd\":function($event){_vm.loading = false},\"mapMoved\":_vm.handleMapMoved}},[_vm._l((_vm.pageData.geotagged_media),function(data,index){return _c('div',{key:data.value.file},[(!_vm.isCurrent(index))?_c('MapMarkerArcHtml',{attrs:{\"mapArc\":_vm.$refs.map,\"id\":index,\"icon\":\"mdi-panorama\",\"aria-label\":\"button-man1\",\"isMarkerFromTour\":true,\"title\":data.value.title,\"mapCenter\":_vm.mapCenter,\"coordinates\":[data.value.longitude, data.value.latitude],\"colour\":_vm.secondaryColor},on:{\"setIndex\":function($event){return _vm.setTourIndex(index)}}}):_vm._e()],1)}),_c('MapMarkerArcHtml',{key:_vm.tourIndex,attrs:{\"mapArc\":_vm.$refs.map,\"title\":_vm.currentMedia.value.title,\"mapCenter\":_vm.mapCenter,\"icon\":\"mdi-panorama\",\"aria-label\":\"button-man2\",\"coordinates\":[\n Number(_vm.currentMedia.value.longitude),\n Number(_vm.currentMedia.value.latitude),\n ],\"colour\":_vm.primaryColor}})],2):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <Sidebar :pageData=\"pageData\" class=\"map-sidebar\"></Sidebar>\r\n <div :class=\"panoClass\">\r\n <Marzipano\r\n :key=\"tourIndex\"\r\n typeOf=\"equirect\"\r\n :data=\"currentMedia.value\"\r\n :minYaw=\"minYaw\"\r\n :maxYaw=\"maxYaw\"\r\n :ready=\"true\"\r\n >\r\n </Marzipano>\r\n <div class=\"pano-nav\">\r\n <div class=\"slide-group\">\r\n <v-slide-group\r\n v-model=\"tourIndex\"\r\n class=\"pa-0\"\r\n center-active\r\n show-arrows\r\n dark\r\n >\r\n <v-slide-item\r\n v-for=\"(data, index) in pageData.geotagged_media\"\r\n :key=\"index\"\r\n v-slot=\"{ active, toggle }\"\r\n >\r\n <v-card\r\n light\r\n :color=\"active ? 'orange' : 'white'\"\r\n :elevation=\"active ? 8 : 2\"\r\n class=\"ma-2 slide-group-card\"\r\n @click=\"toggle\"\r\n >\r\n <v-img\r\n :src=\"data.value.thumbnail\"\r\n class=\"slide-group-img\"\r\n ></v-img>\r\n <v-card-text\r\n v-if=\"data.value.alternate_title\"\r\n class=\"text-truncate pa-2 text-center text-caption slide-group-title\"\r\n >\r\n {{ data.value.alternate_title }}\r\n </v-card-text>\r\n <v-card-text\r\n v-else-if=\"!data.value.alternate_title\"\r\n class=\"text-truncate pa-2 text-center text-caption slide-group-title\"\r\n >\r\n {{ data.value.title }}\r\n </v-card-text>\r\n </v-card>\r\n </v-slide-item>\r\n </v-slide-group>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <v-scale-transition origin=\"center center\">\r\n <v-btn class=\"map-show-btn\" fab v-show=\"!showMap\" @click=\"showMap = true\">\r\n <v-icon> mdi-map </v-icon>\r\n </v-btn>\r\n </v-scale-transition>\r\n\r\n <v-scale-transition origin=\"top right\">\r\n <v-card :class=\"mapClass\" v-show=\"showMap\" elevation=\"8\">\r\n <v-toolbar dark color=\"primary\" dense>\r\n <v-toolbar-title>Map</v-toolbar-title>\r\n <v-spacer />\r\n\r\n <v-btn\r\n icon\r\n dark\r\n @click=\"largeMap = true\"\r\n v-if=\"pageData.meta.parent !== null && largeMap === false\"\r\n class=\"map-resize-btns\"\r\n >\r\n <v-icon>mdi-dock-right</v-icon>\r\n </v-btn>\r\n\r\n <v-btn\r\n icon\r\n dark\r\n @click=\"largeMap = false\"\r\n v-if=\"pageData.meta.parent !== null && largeMap === true\"\r\n class=\"map-resize-btns\"\r\n >\r\n <v-icon>mdi-picture-in-picture-top-right</v-icon>\r\n </v-btn>\r\n\r\n <v-btn\r\n icon\r\n dark\r\n @click=\"showMap = false\"\r\n v-if=\"pageData.meta.parent !== null\"\r\n >\r\n <v-icon>mdi-close</v-icon>\r\n </v-btn>\r\n </v-toolbar>\r\n <MapArc\r\n class=\"esri-map\"\r\n v-if=\"pageData !== undefined\"\r\n ref=\"map\"\r\n :mapZoom=\"pageData.zoom\"\r\n :mapMinZoom=\"pageData.minZoom\"\r\n :mapMaxZoom=\"pageData.maxZoom\"\r\n :mapCenter=\"[\r\n currentMedia.value.latitude,\r\n currentMedia.value.longitude,\r\n ]\"\r\n :bottomLeftExtent=\"pageData.bottomLeftpoint\"\r\n :topRightExtent=\"pageData.topRightpoint\"\r\n :isRotationEnabled=\"pageData.disableMapRotation\"\r\n :webScene=\"pageData.web_scene_id\"\r\n :filterJson=\"$store.state.map.layerFilter\"\r\n :layerOptions=\"$store.state.map.layerOptions\"\r\n :tokens=\"pageData.tokens\"\r\n :aria-label=\"pageData.accessible_label\"\r\n @ready=\"mapReady()\"\r\n :portalItemType=\"pageData.portal_item_type\"\r\n :portalItemId=\"pageData.portal_item_id\"\r\n @mapLoadStart=\"loading = true\"\r\n @mapLoadEnd=\"loading = false\"\r\n :showSearch=\"false\"\r\n :showBasemap=\"false\"\r\n :showLegendWidget=\"false\"\r\n @mapMoved=\"handleMapMoved\"\r\n >\r\n <div\r\n v-for=\"(data, index) in pageData.geotagged_media\"\r\n :key=\"data.value.file\"\r\n >\r\n <!-- renders all Panorama view map marker (map marker on mini map)-->\r\n <MapMarkerArcHtml\r\n v-if=\"!isCurrent(index)\"\r\n :mapArc=\"$refs.map\"\r\n :id=\"index\"\r\n icon=\"mdi-panorama\"\r\n aria-label=\"button-man1\"\r\n :isMarkerFromTour=\"true\"\r\n :title=\"data.value.title\"\r\n :mapCenter=\"mapCenter\"\r\n :coordinates=\"[data.value.longitude, data.value.latitude]\"\r\n :colour=\"secondaryColor\"\r\n @setIndex=\"setTourIndex(index)\"\r\n />\r\n </div>\r\n <!-- Current Active Panorama view (map marker on mini map)-->\r\n <MapMarkerArcHtml\r\n :key=\"tourIndex\"\r\n :mapArc=\"$refs.map\"\r\n :title=\"currentMedia.value.title\"\r\n :mapCenter=\"mapCenter\"\r\n icon=\"mdi-panorama\"\r\n aria-label=\"button-man2\"\r\n :coordinates=\"[\r\n Number(currentMedia.value.longitude),\r\n Number(currentMedia.value.latitude),\r\n ]\"\r\n :colour=\"primaryColor\"\r\n />\r\n </MapArc>\r\n </v-card>\r\n </v-scale-transition>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n// import Streamfield from \"../../components/blocks/streamfieldBlock.vue\";\r\nimport Sidebar from \"../../components/sidebar/Sidebar.vue\";\r\nimport MapArc from \"../../components/esrimap/MapArc.vue\";\r\n// import MapMarkerArc from \"../../components/esrimap/MapMarkerArc.vue\";\r\nimport Marzipano from \"../../components/panorama/Marzipano.vue\";\r\nimport MapMarkerArcHtml from \"../../components/esrimap/MapMarkerArcHtml.vue\";\r\n\r\nexport default {\r\n name: \"MapVirtualTourPage\",\r\n props: {\r\n pageData: Object,\r\n pageChildren: Array,\r\n model: undefined,\r\n showTitle: { type: Boolean, default: true },\r\n },\r\n components: { Sidebar, MapArc, Marzipano, MapMarkerArcHtml },\r\n data: () => ({\r\n showGeotaggedImage: true,\r\n page: 1,\r\n tourIndex: 0,\r\n showMap: true,\r\n mapMinZoom: 7,\r\n mapMaxZoom: 16,\r\n largeMap: false,\r\n mapCenter: [152.849434, -25.301246],\r\n panorama: {\r\n title: \"R0010206.JPG\",\r\n file: \"http://localhost:8000/media/original_images/R0010206.JPG\",\r\n width: 6720,\r\n height: 3360,\r\n file_size: 8436137,\r\n thumbnail:\r\n \"http://localhost:8000/media/images/R0010206.2e16d0ba.fill-240x240.jpg\",\r\n caption: \"\",\r\n },\r\n }),\r\n mounted() {\r\n console.log(this.pageData, \"Mounted Map Center\");\r\n },\r\n computed: {\r\n mapClass() {\r\n if (this.showGeotaggedImage)\r\n if (this.largeMap) return \"map-card-halfscreen\";\r\n else return \"map-card\";\r\n return \"map\";\r\n },\r\n minYaw() {\r\n return 0;\r\n },\r\n maxYaw() {\r\n return 0;\r\n },\r\n panoClass() {\r\n if (this.showGeotaggedImage) return \"pano-geotagged\";\r\n return \"pano\";\r\n },\r\n currentMedia() {\r\n return this.pageData.geotagged_media[this.tourIndex.toString()];\r\n },\r\n isFirstPano() {\r\n return this.tourIndex <= 0;\r\n },\r\n isLastPano() {\r\n return this.tourIndex - 1 >= this.tourLength;\r\n },\r\n // tourIndex() {\r\n // return this.page - 1;\r\n // },\r\n tourLength() {\r\n return Object.keys(this.pageData.geotagged_media).length;\r\n },\r\n primaryColor() {\r\n return this.$vuetify.theme.themes.light.primary;\r\n },\r\n secondaryColor() {\r\n return this.$vuetify.theme.themes.light.secondary;\r\n },\r\n },\r\n watch: {\r\n tourIndex: function () {\r\n this.zoomToCurrentMarker();\r\n },\r\n },\r\n methods: {\r\n handleMapMoved(evt) {\r\n if (this.accessibilityMarkerZoom) {\r\n clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.$emit(\"mapMoved\");\r\n }, 500);\r\n }\r\n this.mapCenter = [evt.center.latitude, evt.center.longitude];\r\n console.log(\"VTMap Moved Current Map Center: \" + this.mapCenter);\r\n },\r\n setTourIndex(index) {\r\n console.log(\"setTourIndex\");\r\n // Page starts from an index of 1 to be compatible with the vuetify pagination widget\r\n // this.page = Number(index) + 1;\r\n this.tourIndex = Number(index);\r\n },\r\n isCurrent(index) {\r\n return this.tourIndex.toString() === index.toString();\r\n },\r\n markerClicked(item) {\r\n console.log(\"MarkerClicked\");\r\n console.log(item);\r\n },\r\n mapReady: function () {\r\n let self = this;\r\n setTimeout(function () {\r\n self.zoomToCurrentMarker();\r\n }, 2000);\r\n },\r\n\r\n zoomToCurrentMarker: function () {\r\n if (this.pageData !== undefined) {\r\n var center = [\r\n Number(this.currentMedia.value.longitude),\r\n Number(this.currentMedia.value.latitude),\r\n ];\r\n this.$refs.map.zoomToCenter(center, 20);\r\n }\r\n },\r\n viewChanged(value) {\r\n console.log(value);\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.slide-group {\r\n background-color: rgba(0, 0, 0, 0.5);\r\n}\r\n\r\n.pano-nav {\r\n position: absolute;\r\n bottom: 0px;\r\n left: 0px;\r\n right: 0px;\r\n}\r\n\r\n.map-sidebar {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n /* width: 344px; */\r\n width: 350px;\r\n height: 100%;\r\n}\r\n\r\n.map {\r\n position: absolute;\r\n top: 0px;\r\n left: 500px;\r\n right: 0px;\r\n height: 100%;\r\n}\r\n\r\n.map-card {\r\n position: absolute;\r\n top: 10px;\r\n width: 400px;\r\n height: 300px;\r\n right: 10px;\r\n}\r\n\r\n.map-card-halfscreen {\r\n position: absolute;\r\n top: 10px;\r\n left: 50%;\r\n margin-left: 175px;\r\n bottom: 162px;\r\n right: 10px;\r\n}\r\n\r\n.map-show-btn {\r\n position: absolute;\r\n top: 10px;\r\n right: 10px;\r\n}\r\n\r\n.esri-map {\r\n position: absolute;\r\n top: 48px;\r\n bottom: 0px;\r\n left: 0px;\r\n right: 0px;\r\n width: unset;\r\n height: unset;\r\n}\r\n\r\n.pano {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n height: 100%;\r\n}\r\n\r\n.pano-geotagged {\r\n position: absolute;\r\n top: 0px;\r\n left: 350px;\r\n right: 0px;\r\n height: 100%;\r\n}\r\n\r\n.map-legend {\r\n display: none;\r\n}\r\n\r\n.slide-group-img {\r\n width: 150px;\r\n height: 100px;\r\n}\r\n\r\n@media (max-width: 600px) {\r\n .slide-group-img {\r\n width: 75px;\r\n height: 50px;\r\n }\r\n\r\n .slide-group-title {\r\n display: none;\r\n }\r\n\r\n .map-resize-btns {\r\n display: none;\r\n }\r\n\r\n .map-sidebar {\r\n height: 50%;\r\n width: 100%;\r\n top: 50%;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n }\r\n\r\n .map {\r\n height: 50%;\r\n width: 100%;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 50%;\r\n }\r\n\r\n .map-legend {\r\n display: block;\r\n }\r\n\r\n .pano-geotagged {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n height: 50%;\r\n }\r\n\r\n .map-card {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n width: unset;\r\n height: unset;\r\n top: 50%;\r\n bottom: 0px;\r\n }\r\n\r\n .map-card-halfscreen {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n width: unset;\r\n height: unset;\r\n margin-left: unset;\r\n top: 50%;\r\n bottom: 0px;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MapVirtualTourPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MapVirtualTourPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MapVirtualTourPage.vue?vue&type=template&id=10f166ab&scoped=true&\"\nimport script from \"./MapVirtualTourPage.vue?vue&type=script&lang=js&\"\nexport * from \"./MapVirtualTourPage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MapVirtualTourPage.vue?vue&type=style&index=0&id=10f166ab&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"10f166ab\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"persistent\":\"\",\"max-width\":\"640px\",\"height\":\"100vh\",\"content-class\":\"landing_streamfield_dialog\"},model:{value:(_vm.showLanding),callback:function ($$v) {_vm.showLanding=$$v},expression:\"showLanding\"}},[_c('v-card',{staticClass:\"welcome_lightbox\",staticStyle:{\"overflow\":\"hidden\"}},[_c('FocusLoop',{attrs:{\"is-visible\":_vm.showLanding,\"auto-focus\":true}},[_c('v-card-text',{staticClass:\"pt-5 pb-0\"},[_c('v-container',{staticClass:\"pt-0 pb-0\"},_vm._l((_vm.data.landing_streamfield),function(block,i){return _c('v-row',{key:i},[_c('v-col',[_c('StreamfieldBlock',{attrs:{\"block\":block}})],1)],1)}),1)],1),_c('v-card-actions',[_c('v-container',{staticClass:\"pt-0 pb-0\"},[_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"6\",\"sm\":\"4\",\"md\":\"4\",\"lg\":\"4\",\"xl\":\"4\"}},[_c('v-hover',{scopedSlots:_vm._u([{key:\"default\",fn:function({ hover }){return [_c('v-card',{staticClass:\"mx-auto transition-swing\",class:`elevation-${hover ? 6 : 0}`,attrs:{\"flat\":\"\",\"tabindex\":\"-1\"},on:{\"click\":function($event){return _vm.welcomeClosed()}}},[_c('v-card-text',{staticClass:\"pb-0 text-center\"},[_c('v-btn',{staticClass:\"streamfield-btn\",attrs:{\"id\":\"explore-btn\",\"aria-hidden\":\"false\",\"aria-label\":'Explore the ' + _vm.pageType,\"tabindex\":\"0\",\"fab\":\"\",\"x-large\":\"\",\"color\":\"secondary\"}},[_c('v-icon',{attrs:{\"x-large\":\"\"}},[_vm._v(_vm._s(_vm.data.menu_icon))])],1)],1),_c('v-card-text',{staticClass:\"text-center subtitle-1\"},[_vm._v(\" Explore the \"+_vm._s(_vm.pageType)+\" \")])],1)]}}])})],1),_vm._l((_vm.data.landing_shortcuts),function(block,i){return _c('v-col',{key:i,attrs:{\"cols\":\"6\",\"sm\":\"4\",\"md\":\"4\",\"lg\":\"4\",\"xl\":\"4\"}},[_c('PageShortcutBlock',{attrs:{\"icon\":block.value.page.menu_icon,\"title\":block.value.caption},on:{\"click\":function($event){return _vm.shortcutClicked(block.value.page.detail_url)}}})],1)})],2)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <v-dialog\r\n persistent\r\n max-width=\"640px\"\r\n height=\"100vh\"\r\n v-model=\"showLanding\"\r\n style=\"\"\r\n content-class=\"landing_streamfield_dialog\"\r\n >\r\n <v-card class=\"welcome_lightbox\" style=\"overflow: hidden\">\r\n <FocusLoop :is-visible=\"showLanding\" :auto-focus=\"true\">\r\n <v-card-text class=\"pt-5 pb-0\">\r\n <v-container class=\"pt-0 pb-0\">\r\n <v-row v-for=\"(block, i) in data.landing_streamfield\" :key=\"i\">\r\n <v-col>\r\n <StreamfieldBlock :block=\"block\" />\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n </v-card-text>\r\n <v-card-actions>\r\n <v-container class=\"pt-0 pb-0\">\r\n <v-row justify=\"center\">\r\n <v-col cols=\"6\" sm=\"4\" md=\"4\" lg=\"4\" xl=\"4\">\r\n <v-hover v-slot:default=\"{ hover }\">\r\n <v-card\r\n flat\r\n @click=\"welcomeClosed()\"\r\n :class=\"`elevation-${hover ? 6 : 0}`\"\r\n class=\"mx-auto transition-swing\"\r\n tabindex=\"-1\"\r\n >\r\n <v-card-text class=\"pb-0 text-center\">\r\n <v-btn\r\n id=\"explore-btn\"\r\n aria-hidden=\"false\"\r\n :aria-label=\"'Explore the ' + pageType\"\r\n class=\"streamfield-btn\"\r\n tabindex=\"0\"\r\n fab\r\n x-large\r\n color=\"secondary\"\r\n >\r\n <v-icon x-large>{{ data.menu_icon }}</v-icon>\r\n </v-btn>\r\n </v-card-text>\r\n <v-card-text class=\"text-center subtitle-1\">\r\n Explore the {{ pageType }}\r\n </v-card-text>\r\n </v-card>\r\n </v-hover>\r\n </v-col>\r\n <v-col\r\n v-for=\"(block, i) in data.landing_shortcuts\"\r\n :key=\"i\"\r\n cols=\"6\"\r\n sm=\"4\"\r\n md=\"4\"\r\n lg=\"4\"\r\n xl=\"4\"\r\n >\r\n <PageShortcutBlock\r\n :icon=\"block.value.page.menu_icon\"\r\n :title=\"block.value.caption\"\r\n @click=\"shortcutClicked(block.value.page.detail_url)\"\r\n />\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n </v-card-actions>\r\n </FocusLoop>\r\n </v-card>\r\n </v-dialog>\r\n</template>\r\n\r\n<script>\r\nimport StreamfieldBlock from \"../../components/blocks/streamfieldBlock.vue\";\r\nimport PageShortcutBlock from \"../../components/blocks/pageShortcutBlock.vue\";\r\nimport { FocusLoop } from \"@vue-a11y/focus-loop\";\r\nimport * as arrowKeyNavigation from \"arrow-key-navigation\";\r\n\r\n//enables next & previous tab style DOM navigation using arrow keys\r\narrowKeyNavigation.register();\r\n\r\nexport default {\r\n name: \"LandingStreamfield\",\r\n props: [\"pageType\", \"data\"],\r\n data: () => ({ showLanding: true, pageViewed: false, displayLanding: true }),\r\n components: { StreamfieldBlock, PageShortcutBlock, FocusLoop },\r\n computed: {\r\n landingActive() {\r\n if (localStorage.getItem(\"accessibilityModeState\") == \"true\") {\r\n return false;\r\n } else return this.$store.state.wagtail.setLandingStreamfield;\r\n },\r\n isPageViewed() {\r\n return this.$store.state.wagtail.pageViewed;\r\n },\r\n },\r\n mounted() {\r\n const element_btn = document.getElementById(\"explore-btn\");\r\n element_btn.focus();\r\n element_btn.addEventListener(\"click\", () => {\r\n this.welcomeClosed();\r\n });\r\n\r\n console.log(\r\n this.data,\r\n this.$store.state.wagtail.setLandingStreamfield,\r\n \"data from landing\"\r\n );\r\n let html = document.querySelector(\"html\");\r\n html.style.overflow = \"hidden\";\r\n\r\n console.log(\r\n this.landing_shortcuts,\r\n this.landing_streamfield,\r\n \"landingstream\"\r\n );\r\n console.log(this.data, \"test data\");\r\n },\r\n\r\n methods: {\r\n shortcutClicked(url) {\r\n //When we click a shortcut, we either route to that page, or if the shortcut is the current page we close the dialog\r\n let pagePath = new URL(url).pathname;\r\n let currPath = this.currentPath;\r\n this.showLanding = false;\r\n\r\n if (currPath === pagePath) this.welcomeClosed();\r\n else this.$router.push(pagePath);\r\n },\r\n welcomeClosed() {\r\n console.log(\"test\");\r\n // this.showLanding = false;\r\n // console.log(\"destory landing\")\r\n // sessionStorage.setItem(\"showLanding\", false);\r\n this.showLanding = false;\r\n // this.$store.commit(\r\n // \"wagtail/setLandingStreamfield\",\r\n // this.showLanding,\r\n // { root: true }\r\n // );\r\n if (this.pageType == \"room\") {\r\n this.$root.$refs.engagementRoom.displayInstructions();\r\n let html = document.querySelector(\"html\");\r\n html.style.overflow = \"hidden\";\r\n } else {\r\n let html = document.querySelector(\"html\");\r\n // html.style.overflowY = 'scroll'\r\n html.style.overflowX = \"hidden\";\r\n }\r\n // this.$nextTick(() => {\r\n // if (this.accessibilityMode == false) {\r\n // const elements = document.querySelectorAll(\"#hotspot-img\");\r\n // elements[0].focus();\r\n // }\r\n // });\r\n\r\n // console.log(\"Welcome Closed\")\r\n // this.$store.commit('wagtail/setViewedPage', [\r\n // ...this.$store.state.wagtail.pageViewed,\r\n // this.data.id\r\n // ])\r\n\r\n this.$emit(\"closed\");\r\n },\r\n },\r\n watch: {\r\n isPageViewed(newVal) {\r\n console.log(\"showlanding\", newVal);\r\n\r\n let html = document.querySelector(\"html\");\r\n\r\n if (this.pageType !== \"room\") {\r\n console.log(\"newVal is false\");\r\n html.style.overflowY = \"scroll\";\r\n html.style.overflowX = \"hidden\";\r\n } else {\r\n html.style.overflowY = \"hidden\";\r\n html.style.overflowX = \"hidden\";\r\n }\r\n },\r\n landingActive(newVal) {\r\n console.log(newVal, \"from landing active\");\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.lightbox-btn:focus-visible {\r\n outline: 4px dashed darkorange;\r\n}\r\n\r\n.streamfield-btn:focus-visible {\r\n outline: 4px dashed darkorange;\r\n}\r\n\r\n::v-deep .v-dialog__content {\r\n /* align-self: flex-start; */\r\n height: 100vh !important;\r\n}\r\n\r\n::v-deep #inspire > div.v-dialog__content.v-dialog__content--active {\r\n height: 100vh !important;\r\n}\r\n\r\n::v-deep #inspire > div.v-overlay {\r\n max-height: 100vh !important;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LandingStreamfield.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LandingStreamfield.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LandingStreamfield.vue?vue&type=template&id=526606e4&scoped=true&\"\nimport script from \"./LandingStreamfield.vue?vue&type=script&lang=js&\"\nexport * from \"./LandingStreamfield.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LandingStreamfield.vue?vue&type=style&index=0&id=526606e4&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"526606e4\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div>\r\n <div v-if=\"currentPage !== undefined && error === undefined\">\r\n <div :key=\"currentPage.id\">\r\n <EngageWalkthrough\r\n v-if=\"currentPage.meta.type === 'engage_virtualrooms.WalkthroughRoom'\"\r\n :pageData=\"currentPage\"\r\n :pageChildren=\"currentChildren\"\r\n :accessibilityStream=\"accessibilityStream\"\r\n @showLanding=\"showLanding(currentPage.id, $event)\"\r\n @closeAccessibility=\"accessibilityStream = false\"\r\n />\r\n <EngagementRoom\r\n v-if=\"currentPage.meta.type === 'engage_virtualrooms.VirtualRoomPage'\"\r\n :pageData=\"currentPage\"\r\n :pageChildren=\"currentChildren\"\r\n :accessibilityStream=\"accessibilityStream\"\r\n @showLanding=\"showLanding(currentPage.id, $event)\"\r\n @closeAccessibility=\"accessibilityStream = false\"\r\n />\r\n <Page\r\n v-if=\"currentPage.meta.type === 'wagtailcore.Page'\"\r\n :pageData=\"currentPage\"\r\n :pageChildren=\"currentChildren\"\r\n />\r\n <WebPageLegacy\r\n v-if=\"currentPage.meta.type === 'engage_pages.WebPageLegacy'\"\r\n :pageData=\"currentPage\"\r\n :pageChildren=\"currentChildren\"\r\n />\r\n <WebPage\r\n v-if=\"currentPage.meta.type === 'engage_pages.WebPage'\"\r\n :pageData=\"currentPage\"\r\n :pageChildren=\"currentChildren\"\r\n />\r\n <MapPage\r\n v-if=\"currentPage.meta.type === 'engage_maps.MapPage'\"\r\n :pageData=\"currentPage\"\r\n :pageChildren=\"currentChildren\"\r\n />\r\n <MapVirtualTourPage\r\n v-if=\"currentPage.meta.type === 'engage_maps.MapVirtualTourPage'\"\r\n :pageData=\"currentPage\"\r\n :pageChildren=\"currentChildren\"\r\n />\r\n </div>\r\n <LandingStreamfield\r\n :pageType=\"typeOfPage\"\r\n ref=\"landing\"\r\n :data=\"currentPage\"\r\n :key=\"currentPage.id\"\r\n v-if=\"showStreamfield\"\r\n @closed=\"landingClosed\"\r\n >\r\n </LandingStreamfield>\r\n </div>\r\n <div v-else-if=\"error !== undefined\">\r\n <Error404 v-if=\"error.response.status === 404\"></Error404>\r\n </div>\r\n <LoadingScreen v-show=\"loading\" />\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport Vue from \"vue\";\r\n\r\nimport Page from \"./wagtail/Page.vue\";\r\nimport EngagementRoom from \"./wagtail/EngagementRoom.vue\";\r\nimport WebPageLegacy from \"./wagtail/WebPageLegacy.vue\";\r\nimport EngageWalkthrough from \"./wagtail/EngageWalkthrough.vue\";\r\nimport MapPage from \"./wagtail/MapPage.vue\";\r\nimport WebPage from \"./wagtail/WebPage.vue\";\r\nimport Error404 from \"./wagtail/Error404.vue\";\r\nimport MapVirtualTourPage from \"./wagtail/MapVirtualTourPage.vue\";\r\n\r\nimport LoadingScreen from \"../components/loadingScreen/LoadingScreen.vue\";\r\nimport LandingStreamfield from \"../components/misc/LandingStreamfield.vue\";\r\n\r\nexport default {\r\n name: \"WagtailPage\",\r\n data: () => ({\r\n dialog: true,\r\n error: undefined,\r\n loading: false,\r\n accessibilityStream: false,\r\n landingStreamfieldsClosed: [],\r\n }),\r\n components: {\r\n Page,\r\n EngagementRoom,\r\n WebPageLegacy,\r\n MapPage,\r\n WebPage,\r\n Error404,\r\n LoadingScreen,\r\n LandingStreamfield,\r\n MapVirtualTourPage,\r\n EngageWalkthrough,\r\n },\r\n mounted() {\r\n // Load the page data for this page\r\n this.loadPage(this.$route.path);\r\n console.log(\r\n this.$store.state.wagtail.currentPage,\r\n this.showStreamfield,\r\n \"current page data\"\r\n );\r\n },\r\n computed: {\r\n currentPath() {\r\n return this.$route.path;\r\n },\r\n currentPage() {\r\n return this.$store.state.wagtail.currentPage;\r\n },\r\n currentPopup() {\r\n return this.$store.state.wagtail.currentPopup;\r\n },\r\n currentChildren() {\r\n return this.$store.state.wagtail.currentChildren;\r\n },\r\n showStreamfield() {\r\n if (\r\n this.currentPage &&\r\n this.currentPage.landing_streamfield !== undefined &&\r\n this.currentPage.landing_streamfield.length > 0\r\n )\r\n if (!this.landingStreamfieldsClosed.includes(this.currentPage.id))\r\n if (\r\n localStorage.getItem(\"accessibilityModeState\") == \"false\" ||\r\n this.accessibilityStream\r\n )\r\n // If there is actually streamfield data\r\n // And if this streamfield hasn't been closed before\r\n return true; // Show it\r\n return false;\r\n },\r\n typeOfPage() {\r\n if (\r\n this.$store.state.wagtail.currentPage.meta.type == \"engage_maps.MapPage\"\r\n ) {\r\n return \"map\";\r\n } else if (\r\n this.$store.state.wagtail.currentPage.meta.type ==\r\n \"engage_virtualrooms.VirtualRoomPage\"\r\n ) {\r\n return \"room\";\r\n } else return \"page\";\r\n },\r\n },\r\n watch: {\r\n currentPath(newPath) {\r\n // If the path changes, we want to load new page data from the API\r\n console.log(\"Wagtail page path changed: \", newPath);\r\n if (\r\n this.currentPage.meta.type !== \"engage_virtualrooms.WalkthroughRoom\"\r\n ) {\r\n this.loadPage(newPath);\r\n }\r\n // brings back scrollbars\r\n var bodyElement = document.querySelector(\"body\");\r\n var htmlElement = document.querySelector(\"html\");\r\n bodyElement.classList.remove(\"body-scrollhide\");\r\n htmlElement.classList.remove(\"html-scrollhide\");\r\n bodyElement.classList.remove(\"body-scrollhider\");\r\n bodyElement.classList.remove(\"body-scrollshow\");\r\n // console.log(this.currentPage.meta.type, \"wagtail page path changed\");\r\n },\r\n },\r\n methods: {\r\n showLanding(pageId, custom) {\r\n this.landingStreamfieldsClosed = this.landingStreamfieldsClosed.filter(\r\n function (item) {\r\n return item !== pageId;\r\n }\r\n );\r\n\r\n if (custom === \"read-welcome\") {\r\n this.accessibilityStream = true;\r\n }\r\n },\r\n landingClosed() {\r\n this.accessibilityStream && (this.accessibilityStream = false);\r\n this.landingStreamfieldsClosed.push(this.currentPage.id);\r\n console.log(\"Closed: \", this.landingStreamfieldsClosed);\r\n let html = document.querySelector(\"html\");\r\n\r\n if (\r\n this.$store.state.wagtail.currentPage.meta.type == \"engage_maps.MapPage\"\r\n ) {\r\n // html.style.overflowY = 'scroll'\r\n html.style.overflowX = \"hidden\";\r\n } else if (\r\n this.$store.state.wagtail.currentPage.meta.type ==\r\n \"engage_virtualrooms.VirtualRoomPage\"\r\n ) {\r\n html.style.overflowY = \"hidden\";\r\n html.style.overflowX = \"hidden\";\r\n } else {\r\n html.style.overflowY = \"auto\";\r\n html.style.overflowX = \"hidden\";\r\n }\r\n },\r\n updatePageTitle(title) {\r\n Vue.nextTick(() => {\r\n document.title = title || \"Engage\";\r\n });\r\n },\r\n loadPage(path) {\r\n this.error = undefined;\r\n let self = this;\r\n\r\n if (this.currentPage !== undefined && this.currentPage !== null) {\r\n let targetPath = path;\r\n let currentPath = new URL(this.currentPage.meta.html_url).pathname;\r\n\r\n // Skip loading if we're just trying to load the current page\r\n if (targetPath === currentPath) {\r\n self.updatePageTitle(this.currentPage.title);\r\n return;\r\n }\r\n \r\n // If current page or popup is a virtual room, Iterate children and if we find that we're\r\n // requesting a child we skip dispatching a load as we already have the room loaded.\r\n\r\n if (this.currentPage.meta.type === \"engage_virtualrooms.VirtualRoomPage\") {\r\n\r\n if (this.currentPage.child_content !== undefined && this.currentPage.child_content !== null) {\r\n console.log(\"Checking child_content\")\r\n for (let child of this.currentPage.child_content) {\r\n let childPath = new URL(child.html_url).pathname;\r\n\r\n if (childPath === targetPath) {\r\n let loggedIn = self.$store.state.auth.status.loggedIn;\r\n\r\n if (!child.restricted || loggedIn) {\r\n self.updatePageTitle(child.title);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n if (this.currentPage.panorama_child_content !== undefined && this.currentPage.panorama_child_content !== null) {\r\n console.log(\"Checking panorama_child_content\")\r\n\r\n for (let panoramaChild of this.currentPage.panorama_child_content) {\r\n let panoramaChildPath = new URL(panoramaChild.html_url).pathname;\r\n \r\n if (panoramaChildPath === targetPath) {\r\n let loggedIn = self.$store.state.auth.status.loggedIn;\r\n\r\n if (!panoramaChild.restricted || loggedIn) {\r\n self.updatePageTitle(panoramaChild.title);\r\n return; \r\n }\r\n }\r\n }\r\n } \r\n\r\n \r\n }\r\n\r\n if (this.currentPopup && this.currentPopup.meta.type ===\"engage_virtualrooms.PanoramaRoomPopup\") {\r\n\r\n if (this.currentPopup.child_content !== undefined && this.currentPopup.child_content !== null) {\r\n for (let child of this.currentPopup.child_content) {\r\n let childPath = new URL(child.html_url).pathname;\r\n\r\n if (childPath === targetPath) {\r\n let loggedIn = self.$store.state.auth.status.loggedIn;\r\n\r\n if (!child.restricted || loggedIn) {\r\n self.updatePageTitle(child.title);\r\n return; \r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.currentPopup.panorama_child_content !== undefined && this.currentPopup.panorama_child_content !== null) {\r\n for (let panoramaChild of this.currentPopup.panorama_child_content) {\r\n let panoramaChildPath = new URL(panoramaChild.html_url).pathname;\r\n\r\n if (panoramaChildPath === targetPath) {\r\n let loggedIn = self.$store.state.auth.status.loggedIn;\r\n\r\n if (!panoramaChild.restricted || loggedIn) {\r\n self.updatePageTitle(panoramaChild.title);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n }\r\n\r\n \r\n\r\n // If the current page type is a Engage Walkthrough Room, don't make a request to get page\r\n if (this.currentPage.meta.type === \"engage_virtualrooms.EngageWalkthrough\") return;\r\n \r\n }\r\n\r\n // Trigger the loading screen\r\n this.loading = true;\r\n\r\n this.$store.dispatch(\"wagtail/getPage\", path).then(\r\n (response) => {\r\n self.loading = false;\r\n // If we encounter a redirect page, we push a new URL to the rounter\r\n if (response.meta.type === \"engage_pages.RedirectPage\") {\r\n if (response.target_page !== undefined) {\r\n var path = new URL(response.target_page).pathname;\r\n self.$router.push(path);\r\n }\r\n } else if (response.meta.type === \"engage_pages.GlobalRedirectPage\") {\r\n if (response.target_page !== undefined) {\r\n //if engage_page meta type is GlobalRedirectPage use the location.href func instead to do a hard redirect to an external URL\r\n var path = response.target_page;\r\n window.location.href = response.target_page;\r\n }\r\n }\r\n\r\n self.updatePageTitle(response.title);\r\n },\r\n (error) => {\r\n self.loading = false;\r\n\r\n if (\r\n error.response.status === 404 &&\r\n self.$store.state.auth.status.loggedIn\r\n ) {\r\n self.error = error;\r\n } else {\r\n self.error = undefined;\r\n self.$router.push(\"/login?redirect=\" + window.location.pathname);\r\n }\r\n }\r\n );\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped></style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WagtailPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WagtailPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WagtailPage.vue?vue&type=template&id=8a777b5c&scoped=true&\"\nimport script from \"./WagtailPage.vue?vue&type=script&lang=js&\"\nexport * from \"./WagtailPage.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8a777b5c\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\r\nimport VueRouter from 'vue-router'\r\n\r\n// import InteractiveMap from '../views/InteractiveMap.vue'\r\n// import EngagementRoom from '../views/EngagementRoom.vue'\r\n// import Documents from '../views/Documents.vue'\r\n// import Gallery from '../views/Gallery.vue'\r\n// import Faq from '../views/Faq.vue'\r\n// import Contact from '../views/Contact.vue'\r\nimport Login from '../views/Login.vue'\r\nimport Logout from '../views/Logout.vue'\r\n// import Profile from '../views/Profile.vue'\r\nimport WagtailPage from '../views/WagtailPage.vue'\r\n\r\nimport store from '../store'\r\n\r\nVue.use(VueRouter)\r\n\r\nconst routes = [\r\n // { name: 'Home', path: '/', redirect: '/interactive-map', meta: { label: 'Home', icon: 'mdi-login', needsLogin: true, hideOnLogin: false } },\r\n // { name: 'Interactive Map', path: '/interactive-map', component: InteractiveMap, meta: { label: 'Interactive Map', icon: 'mdi-login', needsLogin: true, hideOnLogin: false } },\r\n // { name: 'Engagement Room', path: '/engagement-room', component: EngagementRoom, meta: { label: 'Engagement Room', icon: 'mdi-login', needsLogin: true, hideOnLogin: false } },\r\n // { name: 'Documents', path: '/documents', component: Documents, meta: { label: 'Documents', icon: 'mdi-login', needsLogin: true, hideOnLogin: false } },\r\n // { name: 'Gallery', path: '/gallery', component: Gallery, meta: { label: 'Gallery', icon: 'mdi-login', needsLogin: true, hideOnLogin: false } },\r\n // { name: 'FAQ', path: '/faq', component: Faq, meta: { label: 'FAQ', icon: 'mdi-login', needsLogin: true, hideOnLogin: false } },\r\n // { name: 'Contact', path: '/contact', component: Contact, meta: { label: 'Contact', icon: 'mdi-login', needsLogin: true, hideOnLogin: false } },\r\n { name: 'Login', path: '/login', component: Login, meta: { label: 'Login', icon: 'mdi-login', needsLogin: false, hideOnLogin: false } },\r\n { name: 'Logout', path: '/logout', component: Logout, meta: { label: 'Logout', icon: 'mdi-login', needsLogin: false, hideOnLogin: false } },\r\n // { name: 'Profile', path: '/Profile', component: Profile, meta: { label: 'Profile', icon: 'mdi-login', needsLogin: true, hideOnLogin: false } },\r\n { name: 'WagtailPage', path: '/:catchAll(.*)', component: WagtailPage, meta: { label: 'WagtailPage', icon: 'mdi-login', needsLogin: false, hideOnLogin: false } },\r\n]\r\n\r\nconst router = new VueRouter({\r\n mode: 'history',\r\n routes // short for `routes: routes`\r\n})\r\n\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n \r\n const authRequired = to.meta.needsLogin;\r\n const loggedIn = store.state.auth.status.loggedIn;\r\n\r\n // trying to access a restricted page + not logged in\r\n // redirect to login page\r\n if (authRequired && !loggedIn) {\r\n next('/login');\r\n } else {\r\n next();\r\n }\r\n});\r\n\r\n// router.afterEach((to, from) => {\r\n// });\r\n\r\nexport default router; \r\n","import Vue from \"vue\";\r\nimport VueMeta from \"vue-meta\";\r\nimport App from \"./App.vue\";\r\nimport vuetify from \"./plugins/vuetify\";\r\nimport store from \"./store\";\r\nimport router from \"./router\";\r\n// import VueAnalytics from 'vue-ua'\r\nimport VueGtag from \"vue-gtag\";\r\n//import focus looping tool\r\nimport VueFocusLoop from \"@vue-a11y/focus-loop\";\r\n\r\nimport { TiptapVuetifyPlugin } from \"tiptap-vuetify\";\r\n// don't forget to import CSS styles\r\nimport \"tiptap-vuetify/dist/main.css\";\r\n\r\n// Vuetify's CSS styles\r\nimport \"../public/css/global-style.css\";\r\nimport \"../public/css/custom.css\"\r\n\r\nVue.config.productionTip = false;\r\n\r\nVue.use(VueGtag, {\r\n config: {\r\n id: process.env.VUE_APP_GA_ID,\r\n params: {\r\n send_page_view: false,\r\n },\r\n },\r\n});\r\n\r\nVue.use(VueMeta, TiptapVuetifyPlugin, {\r\n // the next line is important! You need to provide the Vuetify Object to this place.\r\n vuetify, // same as \"vuetify: vuetify\"\r\n // optional, default to 'md' (default vuetify icons before v2.0.0)\r\n iconsGroup: \"mdi\",\r\n});\r\n\r\n// Import our generic global components\r\nVue.component(\"LightboxGallery\", () => import(\"./components/lightbox/LightboxGallery.vue\"));\r\nVue.component(\"StreamfieldBlock\", () => import(\"./components/blocks/streamfieldBlock.vue\"));\r\nVue.component(\"WebPageLegacy\", () => import(\"./views/wagtail/WebPageLegacy.vue\"));\r\n\r\n\r\nVue.use(VueFocusLoop);\r\n\r\nnew Vue({\r\n vuetify,\r\n router: router,\r\n store: store,\r\n render: (h) => h(App),\r\n}).$mount(\"#app\");\r\n\r\nnew Vue({\r\n created() {\r\n const html = document.documentElement; // returns the html tag\r\n html.setAttribute(\"lang\", \"en\");\r\n },\r\n});\r\n\r\nif(process.env.NODE_ENV === 'production') {\r\n\r\n  console.log = () => {};\r\n \r\n }","export default function apiUrl() {\r\n return process.env.VUE_APP_BACKEND_URL\r\n}\r\n","\r\n// https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb#:~:text=Converting%20hex%20to%20RGB\r\nexport const hexToRgb = (hex) => {\r\n return hex.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i\r\n ,(m, r, g, b) => '#' + r + r + g + g + b + b)\r\n .substring(1).match(/.{2}/g)\r\n .map(x => parseInt(x, 16))\r\n}\r\n\r\n//https://github.com/scottcorgan/contrast/blob/master/index.js\r\nexport const isDark = (hex) => {\r\n const rgb = hexToRgb(hex)\r\n var color = Math.round(((parseInt(rgb[0]) * 299) + (parseInt(rgb[1]) * 587) + (parseInt(rgb[2]) * 114)) /1000);\r\n return (color <= 180) ? true : false;\r\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"43\":\"806359b5\",\"372\":\"2aa7cd84\",\"643\":\"7bea4911\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"43\":\"8417eaf0\",\"643\":\"84c11ba1\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"map-prototype:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"43\":1,\"643\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkmap_prototype\"] = self[\"webpackChunkmap_prototype\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(405); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["hover","staticClass","class","attrs","on","_c","_vm","staticRenderFns","render","name","props","component","this","_self","transformed","_b","tag","$props","computed","parseHtml","el","root","link","routerlink","div","image","embed","h2","h3","h4","p","li","strong","template","block","type","value","linkColour","file","width","height","link_url","title","thumbnail","subtitle","headerTitle","model_type","_e","expression","model","callback","key","directives","group_item_type","scopedSlots","domProps","_l","locations","listItemClick","activeListItemId","components","StreamfieldBlock","data","radiogroupValue","checkboxGroupValue","checked","selectedItem","showStream","activeCheckboxes","activelocation","mounted","console","beforeCreate","require","methods","updateStore","updateStoreCheckbox","checkboxClick","zoom","zoomLevel","location","lng","lat","tilt_offset","heading","handleCheckboxChange","id","created","filter","map","hotspotGroupSelectedLocation","layerOptions","watch","handler","deep","beforeDestroy","layersID","layersData","selectLocation","item","currentPage","resetLocation","layerOptionsData","Object","invertedLayerOptionsData","content","ParagraphBlock","_v","_s","text","downloadFile","window","url","track","tickLabels","sliderValue","where","labels","groupValue","i","nice_name","rawName","groupData","active","selectedLayers","layers","visibleLayerIndex","prev","newCheckboxValues","JSON","card","colsBreakpoint","$event","ctrlKey","openGallery","showGallery","closeGallery","icon","caption","accessibility_text","startIndex","srcSize","log","minCardHeight","CardGalleryBlockCard","contentData","divWidth","downloadDocument","panel","htmlRawCode","button","getPageLink","resetCurrentPopup","getCustomCssClass","staticStyle","style","minWidth","grid_width","minimum_tile_width","grid_gap","tile_buttons","index","backgroundImage","backgroundSize","background","cursor","display","image_only_tile","margin","alignItems","justifyContent","backgroundColor","fontSize","fontWeight","page_icon","color","marginRight","showLightbox","openLightbox","closeLightbox","TileButtonBlock","startLocation","entrance","stopLocation","exit","paddingBottom","paddingTop","marginTop","journeyPlannerChildrenType","freeze","LOCATION","JOURNEY","branchingVideoType","ENTRANCE","EXIT","findMatchingJourney","vue","journeyKeyPair","journey","updateMapWithJourney","LightboxGallery","enableJourney","toggle","entrances","exits","stops","branchingVideos","video","video2D","activeJourneyLayer","activeJourneyLayerID","branchingVideoContent","branchingVideo2DContent","showBranchingVideos","disabled","accessibilityMode","hasSelectedLocation","resetJourney","stopLocations","videoAccessibility","poi","video2DAccessibility","newVideos","journeyMatch","journeyVideos","journeyVideos2D","videos","handleReset","showJourney","reset","selectedPrecinct","precinct","handlePrecinctSelection","PrecinctBlock","JourneySelector","AlertBlock","HeadingBlock","ImageBlock","QuoteBlock","DocumentBlock","ColoredNotificationBlock","VideoBlock","ImageLinkBlock","LayerFilterSliderBlock","LayerRadioGroupBlock","CardGalleryBlock","EmbeddedHtmlBlock","TwoColumnBlock","ThreeColumnBlock","FourColumnBlock","ContainerBlock","FullWidthHeaderBlock","PrimaryLeftColumnBlock","PrimaryRightColumnBlock","AccordianBlock","OneColumnBlock","ButtonLinkRowBlock","TileButtonGridBlock","SelectLocation","SelectHotspotGroup","ResetMapBlock","isColumnBlock","$emit","canDownload","videoToggle","dialog","currentFocusIndex","activeTrapLB","computedValueFromChild","FocusLoop","self","updateLightboxStatus","registerLightbox","deregisterLightbox","handleComputedPropertyChange","experienceJourney","videoToggleStore","hasBack","isVideo","accessibleTextAvailable","hasAccessibleVideoAvailable","hasBeforeAfter","isTopLightbox","currentLightboxButtonID","targetElement","hasAccessibleText","accessibilityTextFlag","ariaDescription","accessibilityText","isVimeoVideo","_t","hasCaption","captionText","isMobile","dataFromQuestionLB","download","fn","$$v","multi","accessibilityVideoFlag","refInFor","LightboxContentLayout","ref","accessibilityLabel","windowWidth","isTablet","isLaptop","videoWidth","videoElement","textFlag","undefined","pdf","downloadLink","size","openWindow","pageData","WebPageLegacy","dispatch","then","pageTitle","sm","xl","WebPage","EngagementRoom","md","lg","cols","vimeo_video","items","select","search","loading","toggle_exclusive","loaded","LoadingOverlay","maxHeight","renderComponent","afterImage","VueCompareImage","beforeImage","accessibleSliderValue","Marzipano","videoAccessibilityFile","projection","checkVideoHasEnded","contentLoaded","testFunc","View360","src","minHeight","maxWidth","overflowY","padding","objectFit","overflow","top","lightboxContent","length","lightboxReady","tileUrl","autoRotate","sas_key","min_yaw","max_yaw","panoLoaded","currentChildren","child","position_data","yaw","pitch","rotX","rotY","rotZ","scene","getChildTitle","menu_icon","clickable","transparent_background","lightboxActive","clickChild","currentPanoChildren","showInstructions","panorama","lightboxData","lastYaw","lastPitch","lastFov","useLastLocation","instructionsShown","consoleYaw","consolePitch","formYaw","formPitch","currentActiveHotspot","currentActiveAccessibilityMenuItem","isMouseControl","isMoving","movementSpeed","accessibilityModalFlag","accessibilityFlag","activeTrap","lightbox2Ready","MarzipanoRectHotspot","PanoramaLoading","PanoramaInstructions","onFocus","currentUILocation","getLightboxData","fov","transitionDuration","panoramas","checkZoomToChild","pagePath","currPath","childPath","anotherChildPath","destinationViewParameters","elements","isRootPage","currentPath","islightboxActive","arrowKeyNavigation","choices","choice","choiceContent","answerBlock","resetAnswer","questionBlock","extQuestionBlock","LightboxImageCard","LightboxVideoCard","LightboxVideo360Card","answerValue","flushAnswer","currentVideoIndex","currentVideo","setNextVideo","isVideoSet","nativeOn","isPlaying","showVolume","muted","progress","required","default","downloadable","playIcon","pauseIcon","stopIcon","refreshIcon","downloadIcon","volumeHighIcon","volumeMuteIcon","sound","audioLoaded","progressInterval","backgroundAudioId","playerVolume","currentTime","duration","volume","onload","onplay","onpause","onend","mute","playPause","startProgressUpdates","stopProgressUpdates","clearInterval","seek","formatTime","VuetifyAudio","urlPath","fullLink","showLightboxButtons","showDelimiters","accessibleText","accessibleBeforeAfter","accessibleVideo","goToOptions","offset","easing","LightboxAudio","LightboxBase","LightboxDocumentCard","LightboxWagtailPage","LightboxWagtailPageStruct","LightboxIframeCard","LightboxBeforeAfterCard","LightboxPanoramaCard","LightboxBiographyCard","LightboxBranchingVideo360Card","LightboxCustomPanoramaCard","QuestionsLightbox","LightboxBranchingVideoCard","LightboxExternalLinkCard","LightboxInternalLinkCard","currentItem","isBeforeAfter","showButtons","currOpacity","html","passive","testtest","handleHideLightboxButtons","handleShowLightboxButtons","updateIndex","next","onResize","handleDataFromChild","emitBack","downloadItem","Axios","responseType","URL","catch","getMimetype","jpg","png","accessibilityTextTrigger","accessibilityVideoTrigger","accessibilityBeforeAfterTrigger","accessibilityModeFlag","TOGGLE_HOME_NAVIGATION_DRAWER","transparent","pathname","depth","darkBackground","siteLogo","siteStructure","navBarColor","accessibilityModeActive","_m","showTooltip","hasMoved","hasClicked","scenesLoading","rectConfigEnabled","configuratorChanged","keys","config","flexDirection","zIndex","flexGrow","borderRadius","whiteSpace","wordBreak","drawMode","widthSlider","heightSlider","transformMultiplier","rotXSlider","rotYSlider","rotZSlider","rotationIncrement","showConfig","startMouseX","startMouseY","leftAlt","leftCtrl","firstPos","secondPos","showPosition","document","plusRotationValue","minusRotationValue","handleSliderChange","handleConfigChange","handleShowConfig","handleShowPosition","handleKeyUp","handleMouseDown","handleMouseMove","handleMouseWheel","rotation","handleClick","x","y","changeData","position","firstClick","rotx","roty","keyboardConfig","transformIncrement","MarzipanoRectConfigurator","stage","progressive","Promise","levels","initialViewParameters","typeOf","minYaw","maxYaw","sasKey","viewer","scenes","ready","activeScene","autoRotateScene","yawSpeed","targetPitch","targetFov","onRenderComplete","lookToConsole","initScene","source","geometry","Math","limiter","view","urlPrefix","cubeMapPreviewUrl","pinFirstLevel","showBubble","hotspotSizeString","opacity","isCentered","marzipanoScene","container","chatHeight","ConcentricCircles","perspective","getPerspectiveTransform","radius","extraTransforms","updateHotspot","clicked","mouseDown","mouseMove","viewChanged","cardStyles","styles","hasThumbnail","elHeight","ariaLabel","xRotation","yRotation","zRotation","hotspotSize","thumbnail_scale","hotspotWidth","hotspotHeight","validIcon","String","mdiRotateOrbit","message","secondaryLogo","closeAccessibilityLightbox","menuItem","hasAudio","volumeOn","audioFile","showLanding","lightbox2Active","backgroundAudio","backgroundAudioPlaying","MarzipanoBubbleHotspot","PageShortcutBlock","PageHeaderCard","autoplay","loop","handleBackgroundAudio","welcomeOpened","getAriaLabel","welcomeClosed","displayInstructions","setTimeout","shortcutClicked","firstFocusableElement","lookTo","accesibilityFlag","localStorage","accessibilityFlagChecker","accessibilityStream","res","pageChildren","showTitle","showHeader","hasAccessibleModal","accesibilityModal","$store","preventDefault","$vuetify","state","wagtail","siteSettings","secondary_logo","drawer","noHeader","customFont","TOGGLE_DRAWER","logOut","navStyle","updateThemeFromApiResponse","favicon","response","error","currentUser","appBarClass","isLoggedIn","Vue","Vuetify","breakpoint","thresholds","theme","themes","light","primary","secondary","accent","info","success","warning","icons","iconfont","ACCESS_KEY","REFRESH_KEY","AuthService","constructor","that","axiosApiInstance","axios","interceptors","request","use","async","headers","authHeader","reject","originalRequest","status","_retry","store","href","refresh","access","getItem","Authorization","login","user","apiUrl","username","password","setItem","loginMicrosoft","code","logout","removeItem","refreshToken","register","email","initialState","loggedIn","auth","namespaced","actions","commit","resolve","mutations","loginSuccess","loginFailure","registerSuccess","registerFailure","MapService","getComments","mapPageId","params","get","getPage","getEsriTokens","savePage","patch","mapComments","currentPopup","esriTokens","newComment","activeTool","showLegend","layerFilter","sceneid","webSceneId","accessibilityMarkerZoom","renderLocation","selectedLocation","resetMap","resetRenderLayer","backupPrecinct","rightSidebarZoomLevel","scrollZoom","groupLocation","placeComment","screenpoint","getPopup","setPageTitle","addKeyStat","removeKeyStat","setVideoToggle","setExperienceJourney","setScrollZoom","setRightSidebarZoomLevel","setGroupLocation","setPrecinct","setBackupPrecinct","setResetMap","setResetJourney","setResetRenderLayer","setJourney","setResetLocation","setSelectedLocation","setRenderLocation","setHotspotGroupSelectedLocation","getCommentsSuccess","getCommentsFailure","addComment","saveComment","push","cancelComment","getEsriTokenSuccess","getEsriTokenFailure","getPageSuccess","getPageFailure","getPopupSuccess","getPopupFailure","key_stats","pop","setMapTool","setLayerFilter","setLayerOptions","payload","WagtailService","getSiteSettings","getSiteStructure","getPageByUrl","getPageById","getPageChildren","rootPage","setLandingStreamfield","pageViewed","stickyItem","minHotspotSize","maxHotspotSize","VisibleHotspotGroups","mapPageLightboxReady","getPageLayers","comment","sentiment","getRootPage","meta","parent","context","page_id","getStickyItem","setAccessibiltyModeFlag","setLandingStreamfieldFlag","setViewedPageFlag","updateMinHotspotSize","newSize","updateMaxHotspotSize","setCurrentPopup","updateMapLayerOptions","newValue","setVisibleHotspotGroups","newGroups","addVisibleHotspotGroup","newGroup","removeVisibleHotspotGroup","groupToRemove","group","resetVisibleHotspotGroups","setMinHotspotSizes","setMaxHotspotSizes","getSiteSettingsSuccess","getSiteSettingsFailure","getSiteStructureSuccess","getSiteStructureFailure","getPageChildrenSuccess","getPageChildrenFailure","getStickySuccess","getStickyError","forEach","existingKey","newDataKey","hasOwnProperty","setAccessibiltyMode","setViewedPage","getters","getLayerOptions","getMaxHotspotSize","getMinHotspotSize","getVisibleHotspotGroups","toolbar","isHomeNavigationDrawerOpen","open","lightbox","lightboxObjects","pushLightbox","object","popLightbox","splice","Vuex","modules","tokens","sitePage","count","activeToolData","mapTool","mapZoom","mapCenter","currentMarker","currentComment","markers","debugNoMarkers","debugNoLayers","setSitePage","increment","setTool","setToolData","setLegend","setCategory","selectedCategory","categoryData","addMarker","selectMarker","selectComment","setPage","setLayerVisible","visible","setTokens","primaryIsDark","handleLogin","handleLoginMicrosoft","LoadingScreen","primaryColor","showStreamfield","typeOfPage","landingClosed","startingPanorama","activeSceneView","handleScenes","parsedPanoramaContent","invisible","walkthroughLoading","childInstances","activeSceneIndex","selectedChild","walkthroughLoaded","something","startPanoramaId","_panoramaChildren","hotspot","hotpostUrl","accessibilityModalFlag2","markerClicked","sidebarLightbox","next_map","gotoPage","indexOf","shiftKey","mapLightbox","precinct_select","closeRightSidebar","Streamfield","back","childPages","getPrimaryColour","primary_colour_override","pages","immediate","getMenuUrl","getSecondaryColour","getBorderStyle","logger","updateSiblings","returnNext","prevSibling","_k","keyCode","altKey","metaKey","nextMarker","prevMarker","legend_opacity","show_legend","basemap_widget","cameraTilt","minZoom","maxZoom","bottomLeftpoint","topRightpoint","disableMapRotation","portalItemId","portalItemType","renderLayer","renderView2d","mapReady","mapMoved","mapZoomed","children","showMarker","showMarkers","min_marker_zoom","currZoomLevel","max_marker_zoom","secondaryColor","$refs","hotspotGroup","thumbnail_image","currStickyItem","backgroundStyle","renderView","imageHotspots","pointerEvents","showCircle","hotspotData","clearLoading","RenderView2d","isMounted","doubleClick","mouseWheel","mouseWheelToggle","dragStart","drag","keyDown","isWheelScrolled","scrollTimeout","renderReady","provide","loadModules","css","WebMap","MapView","WebScene","SceneView","IdentityManager","Search","Expand","Legend","BasemapGallery","watchUtils","RotationVariable","token","server","portalItem","basemap","ground","center","rotationEnabled","xmin","ymin","xmax","ymax","clearTimeout","buttonEnabled","evt","expanded","returnToStation","zoomToCenter","goTo","tilt","zoomToPoints","points","zoomToLocation","target","options","event","angle","speedFactor","zoomToRenderLocation","renderTilt","renderZoom","renderHeading","renderDuration","applyFilters","layerView","applyOptions","layer","layerVisibility","legendOpacity","filterJson","markerPosition","showImagePreview","imagePreviewPosition","onMouseLeavePopup","mapHotspotFocusOut","screenXY","markerVisibility","chosenPrimaryColor","groupVisibility","longitude","latitude","screenY","screenX","visibleHotspotGroups","onMouseEnterPopup","configureHotspotGroups","checkGroupVisibility","updatedScreenXY","nextFocus","prevFocus","mapHotspotFocus","stickyItemData","stickyPosition","clickSticky","cardPosition","indexPriority","accessibilityZoom","accessToken","mapStyle","popupCoordinates","mapMinZoom","mapMaxZoom","showPopup","popupText","accessibilityModal","counter_flag","previousFocusItem","markerZoom","markerVisible","zoomMarkerFlag","transformedObject","MapArc","MapMarkerArcHtml","Loading","MapStickyCard","currentVisibileMarkerGroups","styleSheet","pageUpdated","markerUpdated","zoomTo","Number","pageSelected","markerData","markerSelected","zoomToMarkers","element","pointArray","previousZoomLevel","clearRenderView2d","closeMapLightbox","Map","RightSidebar","Sidebar","MapLightbox","focused","tab_counter","map_flag","popupFlag","sidebar_flag","sidebarcontent","mapcontent","previousMenuItem","groupLocationData","bodyElement","htmlElement","sessionStorage","openMapLightbox","metaInfo","loginUrl","currentMedia","tourIndex","showMap","largeMap","handleMapMoved","setTourIndex","showGeotaggedImage","page","file_size","mapClass","panoClass","isFirstPano","isLastPano","tourLength","isCurrent","zoomToCurrentMarker","displayLanding","landingActive","isPageViewed","element_btn","landingStreamfieldsClosed","Page","MapPage","Error404","LandingStreamfield","MapVirtualTourPage","EngageWalkthrough","updatePageTitle","loadPage","VueRouter","routes","path","Login","label","needsLogin","hideOnLogin","Logout","WagtailPage","router","mode","beforeEach","to","from","authRequired","VueGtag","process","send_page_view","VueMeta","TiptapVuetifyPlugin","vuetify","iconsGroup","VueFocusLoop","h","App","$mount","documentElement","setAttribute","hexToRgb","hex","replace","m","r","g","b","substring","match","parseInt","isDark","rgb","round","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","amdD","Error","amdO","deferred","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","every","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","all","reduce","promises","u","miniCssF","globalThis","Function","obj","prop","prototype","inProgress","dataWebpackPrefix","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","onScriptComplete","onerror","doneFns","parentNode","removeChild","bind","head","appendChild","Symbol","toStringTag","createStylesheet","fullhref","oldTag","linkTag","rel","onLinkComplete","errorType","realHref","err","insertBefore","nextSibling","findStylesheet","existingLinkTags","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","promise","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}