{"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        >&copy; {{ 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":""}