{"version":3,"file":"js/panoramas/embed-3778f72ed77308a8d663.js","mappings":"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6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,MAAMhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,MAAMhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,MAAMhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM6X,EAAIG,GAAG,KAAKhY,EAAG,MAAM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WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,UAAY,WAChD,UAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,UAAY,WAAY,UAAY,WAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,UAAY,UAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,UAAY,WAChD,UAAY,WAAY,UAAY,WAAY,WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,UAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,WAAY,WAChD,UAAY,WAAY,WAAY,WAAY,WAChD,WAAY,UAAY,UAAY,WAAY,UAChD,WAAY,WAAY,WAAY,UAAY,WAChD,UAAY,WAAY,WAAY,WAAY,WAChD,SAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,UAAY,UAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,UAAY,WAAY,UAAY,WAChD,WAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,UAAY,WAAY,UAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,QAAY,UAAY,UAAY,WAAY,UAChD,WAAY,WAAY,WAAY,WAAY,WAChD,UAAY,SAAY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,UAAY,WAAY,UAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,WAAY,WAChD,SAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,SAAY,UAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,SAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,UAAY,UAAY,UAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,WAAY,UAAY,UAChD,WAAY,WAAY,WAAY,WAAY,UAChD,UAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,UAAY,WAAY,UAAY,UAAY,UAChD,WAAY,UAAY,WAAY,UAAY,WAChD,WAAY,SAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,UAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,WAAY,UAChD,WAAY,UAAY,UAAY,UAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,SAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,UAAY,WAChD,UAAY,UAAY,WAAY,WAAY,UAChD,WAAY,SAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,UAAY,UAAY,UAAY,WAAY,WAChD,WAAY,WAAY,UAAY,WAAY,UAChD,WAAY,WAAY,WAAY,WAAY,WAChD,UAAY,WAAY,WAAY,WAAY,WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,UAAY,WAAY,UAChD,UAAY,WAAY,UAAY,UAAY,UAChD,UAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,UAChD,WAAY,UAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,UAAY,WAAY,WAAY,UAChD,WAAY,UAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,SAAY,WAChD,UAAY,WAAY,WAAY,WAAY,WAChD,UAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,UAAY,WAAY,WAAY,UAChD,UAAY,WAAY,UAAY,WAAY,UAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,SAAY,WAAY,SAAY,WAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,UAAY,WAAY,WAAY,UAAY,UAChD,SAAY,WAAY,WAAY,WAAY,UAChD,UAAY,WAAY,WAAY,WAAY,WAChD,UAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,UAChD,WAAY,UAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,UAAY,WAChD,UAAY,UAAY,WAAY,WAAY,WAChD,UAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,UAAY,WAChD,UAAY,UAAY,UAAY,WAAY,UAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,QAChD,UAAY,UAAY,UAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,UAAY,WAAY,WAAY,UAAY,WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,UAAY,SAAY,WAChD,SAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,UAChD,WAAY,SAAY,SAAY,WAAY,WAChD,WAAY,WAAY,UAAY,UAAY,WAChD,UAAY,WAAY,WAAY,SAAY,WAChD,UAAY,WAAY,WAAY,WAAY,WAChD,UAAY,UAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,UAAY,WAChD,UAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,UAAY,SAAY,UAAY,WAChD,UAAY,WAAY,WAAY,UAAY,SAChD,UAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,SAAY,WAAY,WAChD,WAAY,WAAY,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","sources":["webpack:///./app/javascript/src/panoramas/store/themes/index.js","webpack:///./app/javascript/src/panoramas/store/themes/default.js","webpack:///./app/javascript/src/panoramas/store/themes/theme1.js","webpack:///./app/javascript/src/panoramas/store/state.js","webpack:///./app/javascript/src/panoramas/store/helpers.js","webpack:///./app/javascript/src/panoramas/store/getters.ts","webpack:///./app/javascript/src/panoramas/store/mutations.js","webpack:///./app/javascript/src/shared/event_subjects.ts","webpack:///./app/javascript/src/panoramas/store/analytics.js","webpack:///./app/javascript/src/panoramas/store/actions.js","webpack:///./app/javascript/src/panoramas/store/index.js","webpack:///./app/javascript/src/panoramas/components/loading.vue","webpack:///./app/javascript/src/panoramas/components/loading.vue?86ae","webpack:///./app/javascript/src/panoramas/components/loading.vue?e336","webpack:///./app/javascript/src/panoramas/components/loading.vue?7806","webpack:///./app/javascript/src/panoramas/components/error-message.vue","webpack:///./app/javascript/src/panoramas/components/error-message.vue?ba5b","webpack:///./app/javascript/src/panoramas/components/error-message.vue?795c","webpack:///./app/javascript/src/panoramas/components/error-message.vue?081a","webpack:///./app/javascript/src/panoramas/components/item/mixins/transition2d.js","webpack:///./app/javascript/src/panoramas/components/item/item-image.vue","webpack:///./app/javascript/src/panoramas/components/item/item-image.vue?e10c","webpack:///./app/javascript/src/panoramas/components/item/item-image.vue?760b","webpack:///./app/javascript/src/panoramas/components/item/item-image.vue?a731","webpack:///./app/javascript/src/panoramas/components/video-controls-bus.js","webpack:///./app/javascript/src/panoramas/components/item/mixins/video-player.ts","webpack:///./app/javascript/src/panoramas/components/item/video-overlay.vue","webpack:///./app/javascript/src/panoramas/components/item/video-overlay.vue?60dc","webpack:///./app/javascript/src/panoramas/components/item/video-overlay.vue?48db","webpack:///./app/javascript/src/panoramas/components/item/video-overlay.vue?d034","webpack:///./app/javascript/src/panoramas/components/item/item-video.vue","webpack:///./app/javascript/src/panoramas/components/item/item-video.vue?e639","webpack:///./app/javascript/src/panoramas/components/item/item-video.vue?ee7b","webpack:///./app/javascript/src/panoramas/components/item/item-video.vue?3cfd","webpack:///./app/javascript/src/panoramas/components/item/mixins/transition3d-base.js","webpack:///./app/javascript/src/panoramas/components/item/mixins/transition3d-fade.js","webpack:///./app/javascript/src/panoramas/components/item/mixins/transition3d-forward.js","webpack:///./app/javascript/src/panoramas/components/item/mixins/transition3d-null.js","webpack:///./app/javascript/src/panoramas/components/item/mixins/transition3d.js","webpack:///./app/javascript/src/panoramas/components/item/mixins/gesture.js","webpack:///./app/javascript/src/panoramas/components/item/texture-cache.ts","webpack:///./app/javascript/src/panoramas/components/item/item-base-object.ts","webpack:///./app/javascript/src/panoramas/components/item/item-celestial-sphere-image-object.ts","webpack:///./app/javascript/src/panoramas/components/item/item-celestial-sphere-image.vue","webpack:///./app/javascript/src/panoramas/components/item/item-celestial-sphere-image.vue?8a80","webpack:///./app/javascript/src/panoramas/components/item/item-celestial-sphere-image.vue?f448","webpack:///./app/javascript/src/panoramas/components/item/item-celestial-sphere-image.vue?f48d","webpack:///./app/javascript/src/panoramas/components/item/item-celestial-sphere-video-object.ts","webpack:///./app/javascript/src/panoramas/components/item/item-celestial-sphere-video.vue?e8bb","webpack:///./app/javascript/src/panoramas/components/item/item-celestial-sphere-video.vue","webpack:///./app/javascript/src/panoramas/components/item/item-celestial-sphere-video.vue?9bfa","webpack:///./app/javascript/src/panoramas/components/item/item-celestial-sphere-video.vue?4150","webpack:///./app/javascript/src/panoramas/components/item/item-fisheye-image-object.ts","webpack:///./app/javascript/src/panoramas/components/item/item-fisheye-image.vue","webpack:///./app/javascript/src/panoramas/components/item/item-fisheye-image.vue?9e33","webpack:///./app/javascript/src/panoramas/components/item/item-fisheye-image.vue?322e","webpack:///./app/javascript/src/panoramas/components/item/item-fisheye-image.vue?7bd6","webpack:///./app/javascript/src/panoramas/components/item/item-fisheye-video-object.ts","webpack:///./app/javascript/src/panoramas/components/item/item-fisheye-video.vue?711a","webpack:///./app/javascript/src/panoramas/components/item/item-fisheye-video.vue","webpack:///./app/javascript/src/panoramas/components/item/item-fisheye-video.vue?dc40","webpack:///./app/javascript/src/panoramas/components/item/item-fisheye-video.vue?81ac","webpack:///./app/javascript/src/panoramas/components/item/item-swing-image.vue?acc9","webpack:///./app/javascript/src/panoramas/components/item/item-swing-image.vue","webpack:///./app/javascript/src/panoramas/components/item/item-swing-image.vue?dce8","webpack:///./app/javascript/src/panoramas/components/item/item-swing-image.vue?124d","webpack:///./app/javascript/src/panoramas/components/item/item-empty.vue","webpack:///./app/javascript/src/panoramas/components/item/item-empty.vue?478a","webpack:///./app/javascript/src/panoramas/components/item/item-empty.vue?230d","webpack:///./app/javascript/src/panoramas/components/item/item-empty.vue?cd31","webpack:///./node_modules/three-stdlib/effects/StereoEffect.js","webpack:///./app/javascript/src/panoramas/components/item/vr-object.ts","webpack:///./app/javascript/src/panoramas/components/item/three-context.ts","webpack:///./app/javascript/src/panoramas/components/item/item-view.vue","webpack:///./app/javascript/src/panoramas/components/item/item-view.vue?a87d","webpack:///./app/javascript/src/panoramas/components/item/item-view.vue?8cd1","webpack:///./app/javascript/src/panoramas/components/item/item-view.vue?42cf","webpack:///./app/javascript/src/panoramas/components/ui/telop.vue?0ee0","webpack:///./app/javascript/src/panoramas/components/ui/telop.vue?7ba6","webpack:///./app/javascript/src/panoramas/components/ui/telop.vue","webpack:///./app/javascript/src/panoramas/components/ui/excuse-text.vue","webpack:///./app/javascript/src/panoramas/components/ui/excuse-text.vue?b607","webpack:///./app/javascript/src/panoramas/components/ui/excuse-text.vue?5627","webpack:///./app/javascript/src/panoramas/components/ui/excuse-text.vue?9949","webpack:///./app/javascript/src/panoramas/components/ui/scrollable.vue?41fb","webpack:///./app/javascript/src/panoramas/components/ui/scrollable.vue","webpack:///./app/javascript/src/panoramas/components/ui/scrollable.vue?044b","webpack:///./app/javascript/src/panoramas/components/ui/scrollable.vue?bf4c","webpack:///./app/javascript/src/panoramas/components/ui/point-thumbnails.vue","webpack:///./app/javascript/src/panoramas/components/ui/point-thumbnails.vue?63c1","webpack:///./app/javascript/src/panoramas/components/ui/point-thumbnails.vue?77e6","webpack:///./app/javascript/src/panoramas/components/ui/point-thumbnails.vue?85de","webpack:///./app/javascript/src/panoramas/components/ui/item-thumbnails.vue","webpack:///./app/javascript/src/panoramas/components/ui/item-thumbnails.vue?fc09","webpack:///./app/javascript/src/panoramas/components/ui/item-thumbnails.vue?6b83","webpack:///./app/javascript/src/panoramas/components/ui/item-thumbnails.vue?652c","webpack:///./app/javascript/src/panoramas/components/ui/button-icon.vue","webpack:///./app/javascript/src/panoramas/components/ui/button-icon.vue?da3d","webpack:///./app/javascript/src/panoramas/components/ui/button-icon.vue?60d5","webpack:///./app/javascript/src/panoramas/components/ui/button-icon.vue?636e","webpack:///./app/javascript/src/panoramas/components/ui/title-bar.vue?ded3","webpack:///./app/javascript/src/panoramas/components/ui/title-bar.vue","webpack:///./app/javascript/src/panoramas/components/ui/title-bar.vue?d250","webpack:///./app/javascript/src/panoramas/components/ui/title-bar.vue?a6ae","webpack:///./app/javascript/src/panoramas/components/ui/external-link.vue","webpack:///./app/javascript/src/panoramas/components/ui/external-link.vue?d337","webpack:///./app/javascript/src/panoramas/components/ui/external-link.vue?5bdc","webpack:///./app/javascript/src/panoramas/components/ui/external-link.vue?9f78","webpack:///./app/javascript/src/panoramas/components/ui/bottom-bar.vue","webpack:///./app/javascript/src/panoramas/components/ui/bottom-bar.vue?a7e6","webpack:///./app/javascript/src/panoramas/components/ui/bottom-bar.vue?678f","webpack:///./app/javascript/src/panoramas/components/ui/bottom-bar.vue?a471","webpack:///./app/javascript/src/panoramas/components/ui/slider.vue?c4be","webpack:///./app/javascript/src/panoramas/components/ui/slider.vue","webpack:///./app/javascript/src/panoramas/components/ui/slider.vue?87cb","webpack:///./app/javascript/src/panoramas/components/ui/slider.vue?d7a3","webpack:///./app/javascript/src/panoramas/components/ui/panorama-zoom.vue","webpack:///./app/javascript/src/panoramas/components/ui/panorama-zoom.vue?0a14","webpack:///./app/javascript/src/panoramas/components/ui/panorama-zoom.vue?0900","webpack:///./app/javascript/src/panoramas/components/ui/panorama-zoom.vue?f877","webpack:///./app/javascript/src/panoramas/components/ui/map-svg.vue?0d88","webpack:///./app/javascript/src/panoramas/components/ui/map-svg.vue","webpack:///./app/javascript/src/panoramas/components/ui/map-svg.vue?2464","webpack:///./app/javascript/src/panoramas/components/ui/map-svg.vue?6af3","webpack:///./app/javascript/src/panoramas/components/ui/map-small.vue?b63b","webpack:///./app/javascript/src/panoramas/components/ui/map-small.vue","webpack:///./app/javascript/src/panoramas/components/ui/map-small.vue?d619","webpack:///./app/javascript/src/panoramas/components/ui/map-large.vue","webpack:///./app/javascript/src/panoramas/components/ui/map-large.vue?9edf","webpack:///./app/javascript/src/panoramas/components/ui/map-large.vue?6011","webpack:///./app/javascript/src/panoramas/components/ui/map-large.vue?e6ca","webpack:///./app/javascript/src/panoramas/components/ui/map-view.vue","webpack:///./app/javascript/src/panoramas/components/ui/map-view.vue?15e0","webpack:///./app/javascript/src/panoramas/components/ui/map-view.vue?6b0d","webpack:///./app/javascript/src/panoramas/components/ui/map-view.vue?b69e","webpack:///./app/javascript/src/panoramas/components/ui/video-volume-slider.vue","webpack:///./app/javascript/src/panoramas/components/ui/video-volume-slider.vue?d731","webpack:///./app/javascript/src/panoramas/components/ui/video-volume-slider.vue?bd3e","webpack:///./app/javascript/src/panoramas/components/ui/video-volume-slider.vue?44f3","webpack:///./app/javascript/src/panoramas/components/ui/video-controls.vue","webpack:///./app/javascript/src/panoramas/components/ui/video-controls.vue?dcc1","webpack:///./app/javascript/src/panoramas/components/ui/video-controls.vue?49ab","webpack:///./app/javascript/src/panoramas/components/ui/video-controls.vue?8bfb","webpack:///./app/javascript/src/panoramas/components/ui/video-speed-menu.vue","webpack:///./app/javascript/src/panoramas/components/ui/video-speed-menu.vue?7ddd","webpack:///./app/javascript/src/panoramas/components/ui/video-speed-menu.vue?0c7e","webpack:///./app/javascript/src/panoramas/components/ui/video-speed-menu.vue?c62b","webpack:///./app/javascript/src/panoramas/components/ui/more-menu.vue?8eb6","webpack:///./app/javascript/src/panoramas/components/ui/more-menu.vue","webpack:///./app/javascript/src/panoramas/components/ui/more-menu.vue?a1fa","webpack:///./app/javascript/src/panoramas/components/ui/more-menu.vue?a6c7","webpack:///./app/javascript/src/panoramas/components/ui/info-modal.vue","webpack:///./app/javascript/src/panoramas/components/ui/info-modal.vue?94e4","webpack:///./app/javascript/src/panoramas/components/ui/info-modal.vue?6a9c","webpack:///./app/javascript/src/panoramas/components/ui/info-modal.vue?0a65","webpack:///./app/javascript/src/panoramas/components/ui/image-quality-modal.vue","webpack:///./app/javascript/src/panoramas/components/ui/image-quality-modal.vue?f6fb","webpack:///./app/javascript/src/panoramas/components/ui/image-quality-modal.vue?a9ad","webpack:///./app/javascript/src/panoramas/components/ui/image-quality-modal.vue?f080","webpack:///./app/javascript/src/panoramas/components/ui/airtag-image.vue?3dfc","webpack:///./app/javascript/src/panoramas/components/ui/airtag-image.vue","webpack:///./app/javascript/src/panoramas/components/ui/airtag-image.vue?3c41","webpack:///./app/javascript/src/panoramas/components/ui/airtag-image.vue?a388","webpack:///./app/javascript/src/panoramas/components/ui/airtag-movie.vue","webpack:///./app/javascript/src/panoramas/components/ui/airtag-movie.vue?0e05","webpack:///./app/javascript/src/panoramas/components/ui/airtag-movie.vue?a920","webpack:///./app/javascript/src/panoramas/components/ui/airtag-movie.vue?c348","webpack:///./app/javascript/src/panoramas/components/ui/airtag-information.vue","webpack:///./app/javascript/src/panoramas/components/ui/airtag-information.vue?e8af","webpack:///./app/javascript/src/panoramas/components/ui/airtag-information.vue?e27a","webpack:///./app/javascript/src/panoramas/components/ui/airtag-information.vue?0c55","webpack:///./app/javascript/src/panoramas/components/ui/overlay-message-modal.vue","webpack:///./app/javascript/src/panoramas/components/ui/overlay-message-modal.vue?434c","webpack:///./app/javascript/src/panoramas/components/ui/overlay-message-modal.vue?03b0","webpack:///./app/javascript/src/panoramas/components/ui/overlay-message-modal.vue?d60e","webpack:///./app/javascript/src/panoramas/components/ui/ui-full.vue","webpack:///./app/javascript/src/panoramas/components/ui/ui-full.vue?8081","webpack:///./app/javascript/src/panoramas/components/ui/ui-full.vue?f526","webpack:///./app/javascript/src/panoramas/components/ui/ui-full.vue?224a","webpack:///./app/javascript/src/panoramas/components/ui/ui-minimal.vue","webpack:///./app/javascript/src/panoramas/components/ui/ui-minimal.vue?6304","webpack:///./app/javascript/src/panoramas/components/ui/ui-minimal.vue?66cb","webpack:///./app/javascript/src/panoramas/components/ui/ui-minimal.vue?cb5c","webpack:///./app/javascript/src/panoramas/components/ui/ui-vr.vue?4474","webpack:///./app/javascript/src/panoramas/components/ui/ui-vr.vue","webpack:///./app/javascript/src/panoramas/components/ui/ui-vr.vue?430e","webpack:///./app/javascript/src/panoramas/components/ui/ui-vr.vue?9e92","webpack:///./app/javascript/src/panoramas/components/passcode.vue?a527","webpack:///./app/javascript/src/panoramas/components/passcode.vue","webpack:///./app/javascript/src/panoramas/components/passcode.vue?d561","webpack:///./app/javascript/src/panoramas/components/panorama.vue?e63c","webpack:///./app/javascript/src/panoramas/components/panorama.vue","webpack:///./app/javascript/src/panoramas/components/panorama.vue?91aa","webpack:///./app/javascript/src/panoramas/components/panorama.vue?74ed","webpack:///./app/javascript/src/panoramas/components/panorama.vue?b442","webpack:///./app/javascript/packs/panoramas/embed.scss?bdb9","webpack:///./app/javascript/packs/panoramas/embed.js","webpack:///./app/javascript/src/panoramas/store/settings.ts","webpack:///./app/javascript/src/places/maps/walkthroughs/helpers.js","webpack:///./node_modules/bcryptjs/dist/bcrypt.js","webpack:///./app/javascript/src/panoramas/utils/constants.ts","webpack:///./app/javascript/src/panoramas/components/error-message.vue?cc66","webpack:///./app/javascript/src/panoramas/components/item/item-celestial-sphere-image.vue?0851","webpack:///./app/javascript/src/panoramas/components/item/item-celestial-sphere-video.vue?199c","webpack:///./app/javascript/src/panoramas/components/item/item-empty.vue?663d","webpack:///./app/javascript/src/panoramas/components/item/item-fisheye-image.vue?1e6f","webpack:///./app/javascript/src/panoramas/components/item/item-fisheye-video.vue?5219","webpack:///./app/javascript/src/panoramas/components/item/item-image.vue?5c84","webpack:///./app/javascript/src/panoramas/components/item/item-swing-image.vue?98cb","webpack:///./app/javascript/src/panoramas/components/item/item-video.vue?5379","webpack:///./app/javascript/src/panoramas/components/item/item-view.vue?d734","webpack:///./app/javascript/src/panoramas/components/item/video-overlay.vue?70d4","webpack:///./app/javascript/src/panoramas/components/loading.vue?a1fd","webpack:///./app/javascript/src/panoramas/components/panorama.vue?6d83","webpack:///./app/javascript/src/panoramas/components/panorama.vue?b9a7","webpack:///./app/javascript/src/panoramas/components/ui/airtag-image.vue?51f0","webpack:///./app/javascript/src/panoramas/components/ui/airtag-information.vue?c757","webpack:///./app/javascript/src/panoramas/components/ui/airtag-movie.vue?a9e5","webpack:///./app/javascript/src/panoramas/components/ui/bottom-bar.vue?1a88","webpack:///./app/javascript/src/panoramas/components/ui/button-icon.vue?0eb9","webpack:///./app/javascript/src/panoramas/components/ui/excuse-text.vue?eee9","webpack:///./app/javascript/src/panoramas/components/ui/external-link.vue?5693","webpack:///./app/javascript/src/panoramas/components/ui/image-quality-modal.vue?a482","webpack:///./app/javascript/src/panoramas/components/ui/info-modal.vue?7cd2","webpack:///./app/javascript/src/panoramas/components/ui/item-thumbnails.vue?ade5","webpack:///./app/javascript/src/panoramas/components/ui/map-svg.vue?e81f","webpack:///./app/javascript/src/panoramas/components/ui/map-view.vue?e23a","webpack:///./app/javascript/src/panoramas/components/ui/overlay-message-modal.vue?4ee3","webpack:///./app/javascript/src/panoramas/components/ui/panorama-zoom.vue?79b2","webpack:///./app/javascript/src/panoramas/components/ui/point-thumbnails.vue?4245","webpack:///./app/javascript/src/panoramas/components/ui/scrollable.vue?2e4f","webpack:///./app/javascript/src/panoramas/components/ui/slider.vue?ad6d","webpack:///./app/javascript/src/panoramas/components/ui/telop.vue?e5ed","webpack:///./app/javascript/src/panoramas/components/ui/title-bar.vue?f864","webpack:///./app/javascript/src/panoramas/components/ui/ui-full.vue?f6e5","webpack:///./app/javascript/src/panoramas/components/ui/video-controls.vue?cfe0","webpack:///./app/javascript/src/panoramas/components/ui/video-speed-menu.vue?5f69","webpack:///./app/javascript/src/panoramas/components/ui/video-volume-slider.vue?cc7c","webpack:///./app/javascript/packs/panoramas/embed.scss","webpack:///./app/javascript/src/panoramas/components/VueFakeInput.vue?325f","webpack:///./app/javascript/src/panoramas/components/ui/map-large.vue?9488","webpack:///./app/javascript/src/panoramas/components/ui/more-menu.vue?a4de","webpack:///./app/javascript/src/panoramas/components/ui/ui-minimal.vue?27cf","webpack:///./app/javascript/src/panoramas/components/ui/ui-vr.vue?bb31","webpack:///./app/javascript/src/panoramas/components/VueFakeInput.vue","webpack:///./app/javascript/src/panoramas/components/VueFakeInput.vue?6615","webpack:///./app/javascript/src/panoramas/components/VueFakeInput.vue?61d1","webpack:///./app/javascript/src/panoramas/components/VueFakeInput.vue?e276"],"sourcesContent":["import defaultTheme from './default'\nimport theme1 from './theme1'\n\nexport default {\n defaultName: 'default',\n\n default: defaultTheme,\n theme1,\n}\n","export default {\n color1: \"#2AB7D9\",\n color2: \"#EEEEEE\",\n vrModeColor: \"#FFFFFF\",\n iconColor: \"#2AB7D9\",\n iconBackground: {\n defaultColor: null,\n activeColor: \"rgba(128, 128, 128, 0.2)\"\n },\n thumbnailBorder: {\n defaultColor: \"#CCC\",\n activeColor: \"#2AB7D9\"\n },\n icons: {\n back: require('@/images/icons/nurve/back.svg'),\n more: require('@/images/icons/nurve/more.svg'),\n info: require('@/images/icons/nurve/information.svg'),\n pointThumbnails: require('@/images/icons/nurve/point-thumbnails.svg'),\n itemThumbnails: require('@/images/icons/nurve/item-thumbnails.svg'),\n fullscreenOn: require('@/images/icons/nurve/fullscreen-on.svg'),\n fullscreenOff: require('@/images/icons/nurve/fullscreen-off.svg'),\n autoRotation: require('@/images/icons/nurve/auto-rotation.svg'),\n gyroRotation: require('@/images/icons/nurve/gyro-rotation.svg'),\n videoControls: require('@/images/icons/nurve/video-controls.svg'),\n vrEffect: require('@/images/icons/nurve/vr-effect.svg'),\n vrExit: require('@/images/icons/nurve/vr-exit.svg'),\n videoPlay: require('@/images/icons/nurve/video-play.svg'),\n videoPause: require('@/images/icons/nurve/video-pause.svg'),\n videoBwd5: require('@/images/icons/nurve/video-bwd-5.svg'),\n videoFwd5: require('@/images/icons/nurve/video-fwd-5.svg'),\n close: require('@/images/icons/nurve/close.svg'),\n minimize: require('@/images/icons/white/minimize.png'),\n controls: require('@/images/icons/white/controls.png'),\n controlsShow: require('@/images/icons/nurve/controls_show.svg'),\n controlsHide: require('@/images/icons/nurve/controls_hide.svg'),\n overlayVideoPlay: require('@/images/icons/nurve/video-play.svg'),\n volumeUp: require('@/images/icons/nurve/volume-up.svg'),\n volumeOff: require('@/images/icons/nurve/volume-off.svg'),\n }\n}\n","export default {\n color1: \"#2AD9B7\",\n color2: \"#EEEEEE\",\n vrModeColor: \"#FFFFFF\",\n iconColor: \"#2AD9B7\",\n iconBackground: {\n defaultColor: null,\n activeColor: \"rgba(128, 128, 128, 0.2)\"\n },\n thumbnailBorder: {\n defaultColor: \"#00ff00\",\n activeColor: \"#2AD9B7\"\n },\n icons: {\n back: require('@/images/icons/nurve/back.svg'),\n more: require('@/images/icons/nurve/more.svg'),\n info: require('@/images/icons/nurve/information.svg'),\n pointThumbnails: require('@/images/icons/nurve/point-thumbnails.svg'),\n itemThumbnails: require('@/images/icons/nurve/item-thumbnails.svg'),\n fullscreenOn: require('@/images/icons/nurve/fullscreen-on.svg'),\n fullscreenOff: require('@/images/icons/nurve/fullscreen-off.svg'),\n autoRotation: require('@/images/icons/nurve/auto-rotation.svg'),\n gyroRotation: require('@/images/icons/nurve/gyro-rotation.svg'),\n videoControls: require('@/images/icons/nurve/video-controls.svg'),\n vrEffect: require('@/images/icons/nurve/vr-effect.svg'),\n vrExit: require('@/images/icons/nurve/vr-exit.svg'),\n videoPlay: require('@/images/icons/nurve/video-play.svg'),\n videoPause: require('@/images/icons/nurve/video-pause.svg'),\n videoBwd5: require('@/images/icons/nurve/video-bwd-5.svg'),\n videoFwd5: require('@/images/icons/nurve/video-fwd-5.svg'),\n close: require('@/images/icons/nurve/close.svg'),\n minimize: require('@/images/icons/white/minimize.png'),\n controls: require('@/images/icons/white/controls.png'),\n controlsShow: require('@/images/icons/nurve/controls_show.svg'),\n controlsHide: require('@/images/icons/nurve/controls_hide.svg'),\n overlayVideoPlay: require('@/images/icons/nurve/video-play.svg')\n }\n}\n","import themes from './themes'\nimport bowser from 'bowser'\nimport Url from 'url-parse'\nimport { FOV_DEFAULT, FOV_MAX, FOV_MIN } from '../utils/constants'\n\n// クロスオリジンのVideoTextureサポート\nfunction isSupportCrossOriginVideoTexture() {\n // IEは未サポート\n if (bowser.msie) {\n return false\n }\n\n // mac safari 10以下は未サポート\n if (bowser.mac && bowser.safari && bowser.version) {\n return bowser.compareVersions([bowser.version, '11']) >= 0\n }\n\n // iOS 10以下は未サポート\n if (bowser.ios && bowser.osversion) {\n return bowser.compareVersions([bowser.osversion, '11']) >= 0\n }\n\n return true\n}\n\nexport default {\n // 設定\n settings: {},\n\n isMobile: bowser.ios || bowser.android,\n isSupportCrossOriginVideoTexture: isSupportCrossOriginVideoTexture(),\n\n // テーマ\n themes,\n currentTheme: new Url(window.location.href, true).query.theme || themes.defaultName,\n\n errorMessage: null,\n\n placeData: {},\n placeId: null,\n mapId: null,\n pointId: null,\n itemId: null,\n size: {\n width: 0,\n height: 0\n },\n fov: {\n max: FOV_MAX,\n min: FOV_MIN,\n value: FOV_DEFAULT,\n },\n cameraRotation: {\n x: 0,\n y: 0\n },\n imageQuality: 'middle',\n vrMode: false,\n deviceOrientationDetected: false,\n deviceMotionDenied: false,\n telopEnabled: true,\n autoRotation: true,\n autoRotationDirection: 1,\n ignoreAutoRotation: false,\n gyroRotation: false,\n eyeControlEnable: false,\n radarEnabled: false,\n videoPlaying: false,\n videoDuration: 0,\n videoStartTime: 0,\n videoCurrentTime: 0,\n videoSpeed: 1,\n videoRepeat: false,\n videoMuted: false,\n videoVolume: {\n max: 1,\n min: 0,\n value: 1\n },\n hlsAutomaticVideoLevel: false,\n hlsLevel: null,\n hlsLevels: [],\n itemContextHistory: [],\n panoramaZoomEnabled: false,\n pointThumbnailsActive: false,\n itemThumbnailsActive: false,\n videoControlsActive: false,\n videoSpeedMenuActive: false,\n videoAutoPlay: false,\n moreMenuActive: false,\n infoModalActive: false,\n imageQualityModalActive: false,\n airtagInformationActive: false,\n airtagInformation: {\n image_url: null,\n text: null,\n youtube_url: null\n },\n eyeTrackingState: {\n none: 'none',\n looking: 'looking',\n selected: 'selected'\n },\n lookAtItemObject: {\n itemObject: null,\n counter: 0,\n eyeTrackingState: 'none'\n },\n itemTransition: {\n name: null,\n cameraRotation: null,\n fov: null\n },\n loading: false,\n fullscreen: false,\n fullscreenExecuted: false,\n locationHashParams: {},\n}\n","import * as THREE from 'three'\nimport BowserAccessor from '~/use_case_supports/states/bowser_accessor'\n\nexport const getAttributeValue = (place, attributeName) => {\n return place?.attributes?.find(attr => attr.name == attributeName)?.value\n}\n\nexport const itemImage = (item, quality) => {\n if (!item) {\n return null\n }\n\n // iPadはHLSでの再生ができない場合があるようなのでHLSのurlは返さないようにする(暫定対応)\n if ('image_file_path_hls' in item && !BowserAccessor.checkIpad()) {\n return item['image_file_path_hls']\n }\n\n if (quality === 'original') {\n return item['image_file_path']\n } else {\n return item[`image_file_path_${quality}`]\n }\n}\n\nexport const isVideoType = item => {\n const videoTypes = ['video', 'celestial_sphere_video', 'fisheye_250_video']\n return item && videoTypes.includes(item.type)\n}\n\nexport const isImageType = item => {\n const imageTypes = ['image', 'celestial_sphere_image', 'fisheye_250_image']\n return item && imageTypes.includes(item.type)\n}\n\nexport const clampRotation = (value, min, max) => {\n value = THREE.MathUtils.euclideanModulo(value, 360)\n min = THREE.MathUtils.euclideanModulo(min, 360)\n max = THREE.MathUtils.euclideanModulo(max, 360)\n if (min === max) {\n return value\n }\n if (min > max) {\n max += 360\n }\n if (min > value) {\n value += 360\n }\n if (min <= value && value <= max) {\n return THREE.MathUtils.euclideanModulo(value, 360)\n }\n const minDiff = diffRotation(min, value)\n const maxDiff = diffRotation(max, value)\n return THREE.MathUtils.euclideanModulo(minDiff < maxDiff ? min : max, 360)\n}\n\nconst diffRotation = (a, b) => {\n const d = THREE.MathUtils.euclideanModulo(Math.abs(a - b), 360)\n return d < 180 ? d : 360 - d\n}\n\nexport const optimizeRotation = (fromRotation, toRotation) => {\n if (Math.abs(toRotation - fromRotation) > 180) {\n if (toRotation > fromRotation) {\n return toRotation - 360\n } else {\n return toRotation + 360\n }\n }\n return toRotation\n}\n\n// 垂直視野角 -> 水平視野角\nexport const toHorizontalFov = (fovV, aspect) => {\n return THREE.MathUtils.radToDeg(2 * Math.atan(Math.tan(THREE.MathUtils.degToRad(fovV) / 2) * aspect))\n}\n\n// 水平視野角 -> 垂直視野角\nexport const toVerticalFov = (fovH, aspect) => {\n return THREE.MathUtils.radToDeg(2 * Math.atan(Math.tan(THREE.MathUtils.degToRad(fovH) / 2) / aspect))\n}\n","import * as THREE from 'three'\nimport clone from 'clone'\n\nimport {\n itemImage,\n getAttributeValue,\n isImageType,\n isVideoType,\n toHorizontalFov\n} from './helpers'\nimport themes from \"./themes\";\nimport { ItemComponentInfo } from '~/panoramas/utils/types'\nimport { FOV_DEFAULT } from '~/panoramas/utils/constants'\n\ntype ThumbnailList = 'Points' | 'Items' | null\n\nexport default {\n initialItemContext (state, getters) {\n const firstPiont = getters.getPointById(state.settings.firstPointId)\n\n const map = state.placeData.maps[0]\n const point = firstPiont || map.points[0]\n const item = point.items[point.items.length - 1]\n return {\n mapId: map.id,\n pointId: point.id,\n itemId: item.id\n }\n },\n\n allMaps (state) {\n return (state.placeData?.maps ?? []).filter(\n m => m.points.length > 0 // 撮影点の存在しない間取りはボタンの生成をスキップする\n )\n },\n\n allPoints (state, getters) {\n const points = []\n getters.allMaps.forEach(map => points.push(...map.points))\n return points\n },\n\n allItems (state, getters) {\n const items = []\n getters.allPoints.forEach(point => items.push(...point.items))\n return items\n },\n\n getMapById: (state, getters) => mapId => {\n return getters.allMaps.find(map => map.id === mapId)\n },\n\n getPointById: (state, getters) => pointId => {\n return getters.allPoints.find(point => point.id === pointId)\n },\n\n getItemById: (state, getters) => itemId => {\n return getters.allItems.find(item => item.id === itemId)\n },\n\n currentMap (state, getters) {\n return getters.getMapById(state.mapId)\n },\n\n currentPoint (state, getters) {\n return getters.getPointById(state.pointId)\n },\n\n currentItem (state, getters) {\n return getters.getItemById(state.itemId)\n },\n\n pointsOfCurrentMap (state, getters) {\n return getters.currentMap ? getters.currentMap.points : []\n },\n\n itemsOfCurrentPoint (state, getters) {\n if (getters.currentPoint) {\n return getters.currentPoint.items.filter(item => item.primary)\n }\n return []\n },\n\n panoramaName (state, getters) {\n return state.placeData?.panorama_name ?? ''\n },\n\n pointName (state, getters) {\n return getters.currentPoint?.name?.trim() ?? ''\n },\n\n currentItemContext (state) {\n return {\n mapId: state.mapId,\n pointId: state.pointId,\n itemId: state.itemId,\n videoStartTime: state.videoCurrentTime,\n cameraRotation: { ...state.cameraRotation },\n fov: state.fov.value\n }\n },\n\n lastItemContext (state) {\n if (state.itemContextHistory.length > 0) {\n return state.itemContextHistory[state.itemContextHistory.length - 1]\n }\n return null\n },\n\n itemComponentInfo (state, getters): ItemComponentInfo {\n return {\n id: state.itemId,\n key: `${state.itemId}-${state.imageQuality}`,\n type: getters.currentItem?.type,\n img: itemImage(getters.currentItem, state.imageQuality),\n pointRotation: getters.pointDirection,\n movablePoints: getters.movablePoints,\n airtags: getters.airtags,\n tripodCoverUrl: state.placeData?.tripod_cover,\n tripodCoverScale: getters.currentPoint?.tripod_cover_scale,\n masking: getters.currentItem?.meta_data?.common?.masking,\n cameraSpeed: getters.cameraSpeed,\n cameraPan: getters.cameraPan,\n nextPointId: getters.currentItem?.meta_data?.common?.next_point_id,\n fisheye250FocalLength: getters.currentItem?.meta_data?.fisheye_250_image?.focal_length,\n videoAutoPlay: state.videoAutoPlay\n }\n },\n\n verticalFov (state) {\n return state.fov.value\n },\n\n horizontalFov (state, getters) {\n const aspect = state.size.width / state.size.height\n return toHorizontalFov(getters.verticalFov, aspect)\n },\n\n cameraRotationRange (state, getters) {\n const viewableArea = getters.currentItem?.meta_data?.common?.viewable_area\n if (viewableArea) {\n const rotation = getters.pointDirection - getters.mapDirection\n const xMin = viewableArea.x_angle_min + getters.verticalFov / 2\n const xMax = viewableArea.x_angle_max - getters.verticalFov / 2\n const yMin = viewableArea.y_angle_min + rotation + getters.horizontalFov / 2\n const yMax = viewableArea.y_angle_max + rotation - getters.horizontalFov / 2\n return { xMin, xMax, yMin, yMax, rotation }\n }\n },\n\n cameraSpeed (state, getters) {\n return getters.currentItem?.meta_data?.common?.camera?.speed ?? 2\n },\n\n cameraPan (state, getters) {\n return getters.currentItem?.meta_data?.common?.camera?.pan ?? 'right'\n },\n\n movablePoints (state, getters) {\n if(!state.settings.drawWalkThrough){\n return []\n }\n\n const pointIds = getters.currentItem?.allow_items?.map(allow_item => allow_item.point_id) ?? []\n return pointIds.map(pointId => getters.getPointById(pointId))\n },\n\n airtags (state, getters) {\n // vuexの警告発生を避けるため clone する。\n const airtags = clone(getters.currentItem?.meta_data?.common?.tags ?? [])\n airtags.forEach((airtag, i) => airtag.index = i)\n return airtags\n },\n\n backButtonVisible (state, getters) {\n return getters.lastItemContext !== null\n },\n\n title (state, getters) {\n return [getters.pointName, getters.panoramaName].filter(Boolean).join(' | ')\n },\n\n mapViewVisible (state, getters) {\n return Boolean(getters.mapImageUrl)\n },\n\n mapImageUrl (state, getters) {\n return getters.currentMap?.image_file_path\n },\n\n mapPoints (state, getters) {\n return getters.pointsOfCurrentMap.map(point => {\n return {\n mapId: state.mapId,\n pointId: point.id,\n itemId: point.items[0].id,\n type: point.items[0].type,\n x: point.x,\n y: point.y,\n visible: point.x !== -1 && point.y !== -1,\n active: point.id === state.pointId\n }\n })\n },\n\n mapLines (state, getters) {\n const lines = {}\n getters.pointsOfCurrentMap.forEach(point => {\n const allowItems = point.items[0].allow_items\n allowItems.forEach(allowItem => {\n const line = [point.id, allowItem.point_id].sort()\n lines[line.join('-')] = line\n })\n })\n return Object.values(lines)\n },\n\n isRadarVisible (state, getters) {\n if (!state.settings.drawRadar) {\n return false\n }\n if (!state.radarEnabled) {\n return false\n }\n if (getters.currentMap.direction == null || getters.pointDirection == null) {\n return false\n }\n return true\n },\n\n pointThumbnails (state, getters) {\n // パノラマ下部の「撮影場所の移動」サムネイル一覧では、全ての間取りに紐付いた撮影点を表示する\n return getters.allPoints.map(point => {\n const item = point.items[0]\n return {\n mapId: state.mapId,\n pointId: point.id,\n itemId: item.id,\n imageUrl: item.image_file_path_thumb,\n caption: point.name,\n active: point.id === state.pointId\n }\n })\n },\n\n itemThumbnails (state, getters) {\n return getters.itemsOfCurrentPoint.map(item => {\n return {\n mapId: state.mapId,\n pointId: state.pointId,\n itemId: item.id,\n imageUrl: item.image_file_path_thumb,\n caption: item.scene_name,\n active: item.id === state.itemId\n }\n })\n },\n\n displayingThumbnailList (state, getters): ThumbnailList {\n // 表示上はアイテムサムネイルが優先される。撮影点リストはそのあと。\n /*\n \"シーン切り替えデフォルトオープン設定\"はオン?\n ├─Yes:最初に表示される撮影点に複数シーンある?\n │ ├─Yes:シーン切り替えメニューを開く\n │ └─No:\"撮影点切り替えデフォルトオープン設定\"はオン?\n │ ├─Yes:撮影点切り替えメニューを開く\n │ └─No:何も開かない\n └─No:\"撮影点切り替えデフォルトオープン設定\"はオン?\n ├─Yes:撮影点切り替えメニューを開く\n └─No:何も開かない\n */\n if (state.itemThumbnailsActive && getters.itemThumbnailsVisible) { return 'Items' }\n if (state.pointThumbnailsActive) { return 'Points' }\n\n return null\n },\n\n itemThumbnailsVisible (state, getters) {\n return getters.itemThumbnails.length > 1\n },\n\n autoRotationVisible (state, getters) {\n const autoRotateTypes = [\n 'celestial_sphere_image',\n 'fisheye_250_image',\n 'fisheye_180_image',\n 'chipping_fisheye_image',\n 'swing_image'\n ]\n return autoRotateTypes.includes(getters.currentItem?.type)\n },\n\n autoRotationOn (state, getters) {\n return getters.autoRotationVisible && state.autoRotation && !state.vrMode\n },\n\n gyroRotationOn (state, getters) {\n return state.gyroRotation\n },\n\n videoControlVisible (state, getters) {\n return isVideoType(getters.currentItem)\n },\n\n isVideoHls (state, getters) {\n return state.hlsLevel !== null\n },\n\n parentPlaceTelopText (state) {\n return getAttributeValue(state.placeData.parent, 'telop')\n },\n\n itemTelopText (state, getters) {\n return getters.currentItem?.meta_data?.common?.telop?.text\n },\n\n itemTelopSpeed (state, getters) {\n // scroll (0: 停止, 1: 遅い, 2: 普通, 3: 早い)\n let scroll = getters.currentItem?.meta_data?.common?.telop?.scroll\n if (scroll === null || scroll === undefined) {\n scroll = 2\n }\n return scroll * 50\n },\n\n itemBrightness (state, getters) {\n const brightness = parseFloat(getters.currentItem?.meta_data?.common?.brightness ?? 0)\n return 1 + brightness\n },\n\n externalLink (state) {\n let name = getAttributeValue(state.placeData, 'link_name')\n let url = getAttributeValue(state.placeData, 'link_url')\n\n if (!name || !url) {\n name = getAttributeValue(state.placeData.parent, 'link_name')\n url = getAttributeValue(state.placeData.parent, 'link_url')\n }\n\n if (name && url) {\n return { name, url }\n }\n },\n\n excuseText (state, getters) {\n if (state.settings.hideAnnotation) {\n return '';\n }\n switch (getters.processingType) {\n case 'item_removal_home_staging':\n return '※リフォームイメージにCGの家具、調度品等を配置したイメージです。';\n case 'home_staging':\n return '※現況の物件画像にCGにより家具が設置してあります。<br>実際には家具は設置されておりません。';\n case 'item_removal':\n return '※CGによるリフォームイメージです。リフォームには別途費用が発生いたします。 <br>実際のお部屋は家具等が配置されており、キズや汚れ等がある場合がございます。';\n case 'renovation':\n return '※CGによるリノベーションイメージです。実際のお部屋は家具等が配置されており、キズや汚れ等がある場合がございます。'\n default:\n if (getters.isVideoFallback) {\n return 'このブラウザでは360°動画の再生はサポートされていません。'\n }\n return '';\n }\n },\n\n processingType(state, getters) {\n if (!state.itemId) {\n return '';\n }\n const tags = getters.currentItem?.meta_data?.common?.processing_tags ?? []\n const homeStagingTagged = tags.includes('home_staging');\n const itemRemovalTagged = tags.includes('item_removal');\n const renovationTagged = tags.includes('renovation');\n if (homeStagingTagged && itemRemovalTagged) {\n return 'item_removal_home_staging';\n }\n if (homeStagingTagged) {\n return 'home_staging';\n }\n if (itemRemovalTagged) {\n return 'item_removal';\n }\n if (renovationTagged) {\n return 'renovation';\n }\n return '';\n },\n\n isVideoFallback (state, getters) {\n if (!state.isSupportCrossOriginVideoTexture) {\n const video360types = ['celestial_sphere_video', 'fisheye_250_video']\n return video360types.includes(getters.currentItem.type)\n }\n return false\n },\n\n keepMovementDirection: (state, getters) => pointId => {\n const point = getters.getPointById(pointId)\n return point?.meta_data?.common?.camera?.keep_movement_direction\n },\n\n initialCameraRotation: (state, getters) => (pointId, itemId) => {\n const point = getters.getPointById(pointId)\n const xAngle = point?.meta_data?.common?.camera?.x_angle ?? 0\n const yAngle = point?.meta_data?.common?.camera?.y_angle ?? 0\n const pointDirection = point?.direction ?? 0\n\n const item = getters.getItemById(itemId)\n const rotation = isImageType(item) ? (360 - pointDirection) : 0\n\n const x = THREE.MathUtils.clamp(-xAngle, -90, 90)\n const y = THREE.MathUtils.euclideanModulo(yAngle - rotation, 360)\n return { x, y }\n },\n\n initialCameraFov: (state, getters) => itemId => {\n const item = getters.getItemById(itemId)\n return item?.meta_data?.common?.camera?.fov ?? FOV_DEFAULT\n },\n\n mapDirection (state, getters) {\n return getters.currentMap?.direction ?? 0\n },\n\n pointDirection (state, getters) {\n return getters.currentPoint?.direction ?? 0\n },\n\n canForward: (state, getters) => (pointId) => {\n const allowItems = getters.currentPoint?.items[0]?.allow_items ?? []\n return allowItems.findIndex(allowItem => allowItem.point_id == pointId) !== -1\n },\n\n vectorToPoint: (state, getters) => (pointId) => {\n const mapAspect = getters.currentMap.aspect_ratio\n const p1 = getters.currentPoint\n const p2 = getters.getPointById(pointId)\n const v1 = new THREE.Vector2(p1.x * mapAspect, p1.y)\n const v2 = new THREE.Vector2(p2.x * mapAspect, p2.y)\n return v2.sub(v1)\n },\n\n directionToPoint: (state, getters) => (pointId) => {\n const v = getters.vectorToPoint(pointId)\n const angle = THREE.MathUtils.radToDeg(v.angle())\n return THREE.MathUtils.euclideanModulo(angle + 90, 360)\n },\n\n panoramaZoomBottom (state) {\n const offset = 44 + 8 // bottom-bar + margin\n const thumbnailsHeight = state.pointThumbnailsActive || state.itemThumbnailsActive ? 96 : 0\n return offset + thumbnailsHeight\n },\n\n panoramaZoomActive (state, getters) {\n return state.panoramaZoomEnabled && state.size.height >= getters.panoramaZoomBottom + 200\n },\n\n panoramaGyroRotationAvailable (state) {\n if (state.settings.gyroRotationEnable) {\n return state.deviceOrientationDetected || state.isMobile\n }\n return false\n },\n\n vrModeAvailable (state) {\n if (state.settings.vreffectEnable) {\n return state.deviceOrientationDetected || state.isMobile\n }\n return false\n },\n\n // テーマ\n theme (state) {\n if (state.themes[state.currentTheme]) {\n return state.themes[state.currentTheme]\n }\n\n return state.themes[state.themes.defaultName]\n },\n\n panoramaThumbUrl (state) {\n return state.placeData?.panorama_thumb_url\n },\n}\n","import * as THREE from 'three'\n\nexport default {\n setSettings (state, settings) {\n state.settings = settings\n\n state.imageQuality = settings.imageQuality\n state.autoRotation = settings.autoRotation\n state.videoRepeat = settings.videoRepeat\n state.pointThumbnailsActive = settings.menuOpen\n state.itemThumbnailsActive = settings.itemThumbsOpen\n state.eyeControlEnable = settings.eyeControlEnable\n },\n setErrorMessage (state, errorMessage) {\n state.errorMessage = errorMessage\n },\n setPlaceData (state, placeData) {\n // PlaceChild#mapsにPlaceParent#mapsをくっつける\n placeData.maps = (placeData?.maps ?? []).concat(placeData?.parent.maps ?? [])\n\n placeData.maps = placeData.maps.map(map => {\n map.points = map.points.map(point => {\n const firstItem = point.items[0]\n const pointDirection = firstItem.direction ?? 0\n\n point.direction = pointDirection\n point.items = point.items.map(item => {\n item.direction = pointDirection - (item.direction ?? 0)\n return item\n })\n return point\n })\n return map\n })\n\n state.placeData = placeData\n state.placeId = placeData?.id\n },\n setItemContext (state, { mapId, pointId, itemId, imageQuality, videoStartTime, transition, cameraRotation, fov, videoForceAutoPlay = false } = {}) {\n if (mapId) {\n state.mapId = mapId\n }\n if (pointId) {\n state.pointId = pointId\n }\n if (itemId) {\n state.itemId = itemId\n }\n if (imageQuality) {\n state.imageQuality = imageQuality\n }\n state.autoRotationDirection = 1\n state.videoCurrentTime = 0\n state.videoStartTime = videoStartTime || 0\n state.videoAutoPlay = state.settings.videoPlaybackAutomatically || videoForceAutoPlay\n state.itemTransition.name = transition\n state.itemTransition.cameraRotation = cameraRotation\n state.itemTransition.fov = fov\n },\n appendItemContextHistory (state, itemContextHistory) {\n state.itemContextHistory.push(itemContextHistory)\n },\n removeLastItemContext (state) {\n state.itemContextHistory.pop()\n },\n setSize (state, { width, height }) {\n state.size.width = width\n state.size.height = height\n },\n setFov (state, value) {\n state.fov.value = Math.max(state.fov.min, Math.min(state.fov.max, value))\n },\n setCameraRotation (state, { x, y }) {\n x = THREE.MathUtils.euclideanModulo(x + 180, 360) - 180\n state.cameraRotation.x = THREE.MathUtils.clamp(x, -90, 90)\n state.cameraRotation.y = THREE.MathUtils.euclideanModulo(y, 360)\n },\n setPanoramaZoomEnabled (state, enabled) {\n state.panoramaZoomEnabled = enabled\n },\n togglePointThumbnails (state) {\n state.itemThumbnailsActive = false\n state.pointThumbnailsActive = !state.pointThumbnailsActive\n },\n toggleItemThumbnails (state) {\n state.pointThumbnailsActive = false\n state.itemThumbnailsActive = !state.itemThumbnailsActive\n },\n hideItemThumbnails (state) {\n // 撮影点一覧画面からPointの切り替えを行ったときに、アイテムリスト表示がピョコッと出ることを防ぐ\n state.itemThumbnailsActive = false\n },\n toggleVideoControls (state) {\n state.videoControlsActive = !state.videoControlsActive\n state.videoSpeedMenuActive = false\n },\n toggleVideoSpeedMenu (state) {\n state.videoSpeedMenuActive = !state.videoSpeedMenuActive\n },\n setVideoMuted (state, muted) {\n state.videoMuted = muted\n },\n setVideoVolume (state, value) {\n state.videoVolume.value = value\n },\n toggleMoreMenu (state) {\n state.moreMenuActive = !state.moreMenuActive\n },\n toggleInfoModal (state) {\n state.infoModalActive = !state.infoModalActive\n },\n toggleImageQualityModal (state) {\n state.imageQualityModalActive = !state.imageQualityModalActive\n if (state.imageQualityModalActive) {\n state.moreMenuActive = false\n }\n },\n toggleAirtagInformation (state) {\n state.airtagInformationActive = !state.airtagInformationActive\n },\n setVideoDuration (state, duration) {\n state.videoDuration = duration\n },\n setVideoCurrentTime (state, currentTime) {\n state.videoCurrentTime = currentTime\n },\n setVideoPlaying (state, playing) {\n state.videoPlaying = playing\n },\n setVideoSpeed (state, speed) {\n state.videoSpeed = speed\n },\n setTelopEnabled (state, enabled) {\n state.telopEnabled = enabled\n },\n setAutoRotation (state, autoRotation) {\n state.autoRotation = autoRotation\n },\n invertAutoRotationDirection (state) {\n state.autoRotationDirection = - state.autoRotationDirection\n },\n setIgnoreAutoRotation (state, ignoreAutoRotation) {\n state.ignoreAutoRotation = ignoreAutoRotation\n },\n setGyroRotation (state, gyroRotation) {\n state.gyroRotation = gyroRotation\n },\n setRadarEnabled (state, enabled) {\n state.radarEnabled = enabled\n },\n setAirtagInformation (state, { image_url, text, youtube_url }) {\n state.airtagInformation.image_url = image_url\n state.airtagInformation.text = text\n state.airtagInformation.youtube_url = youtube_url\n },\n setLookingAtItemObject (state, { itemObject }) {\n ++state.lookAtItemObject.counter\n state.lookAtItemObject.itemObject = itemObject\n state.lookAtItemObject.eyeTrackingState = state.eyeTrackingState.looking\n },\n setStopLookingAtItemObject (state) {\n state.lookAtItemObject.counter = 0\n state.lookAtItemObject.itemObject = null\n state.lookAtItemObject.eyeTrackingState = state.eyeTrackingState.none\n },\n setSelectedItemObject (state) {\n state.lookAtItemObject.eyeTrackingState = state.eyeTrackingState.selected\n },\n setLoading (state, loading) {\n state.loading = loading\n },\n setVrMode (state, vrMode) {\n state.vrMode = vrMode\n window.logger.sendEvent('vrMode', vrMode, state.placeId, state.mapId, state.pointId, state.itemId)\n },\n setImageQuality (state, imageQuality) {\n state.settings.imageQuality = imageQuality\n },\n setDeviceOrientationDetected (state) {\n state.deviceOrientationDetected = true\n },\n setDeviceMotionDenied (state) {\n state.deviceMotionDenied = true\n },\n setHlsAutomaticVideoLevel (state, hlsAutomaticVideoLevel) {\n state.hlsAutomaticVideoLevel = hlsAutomaticVideoLevel\n },\n setHlsLevel (state, level) {\n state.hlsLevel = level\n },\n setHlsLevels (state, levels) {\n state.hlsLevels = levels\n },\n setFullscreen (state, fullscreen) {\n state.fullscreen = fullscreen\n },\n setFullscreenExecuted(state, fullscreenExecuted) {\n state.fullscreenExecuted = fullscreenExecuted\n },\n setLocationHashParams (state, locationHashParams) {\n state.locationHashParams = locationHashParams\n },\n}\n","import { AirTagData } from '~/vr_controls/viewer_type'\nimport * as Rx from 'rxjs'\n\nexport type PointChangedEvent = {\n placeId: number\n pointId: number\n itemId: number\n state: 'PLAYING' | 'PAUSED'\n seekPositionMillisec: number\n pointIndex: number\n}\n\nexport type ItemChangedEvent = {\n isSceneOnly: boolean\n placeId: number\n pointId: number\n itemId: number\n}\n\nexport type ItemShownEvent = {\n placeId: number\n pointId: number\n itemId: number\n}\n\nexport type VideoStateUpdateEvent = {\n state: string\n seekPositionMillisec: number\n speed: number\n}\n\nexport default class EventSubjects {\n _changePointSubject: Rx.Subject<PointChangedEvent>\n _itemShownSubject: Rx.Subject<ItemShownEvent>\n _screenClickSubject: Rx.Subject<any>\n _fovChangedByUserSubject: Rx.Subject<number>\n _airTagClickSubject: Rx.Subject<AirTagData>\n\n constructor() {\n this._changePointSubject = new Rx.Subject()\n this._itemShownSubject = new Rx.Subject()\n this._screenClickSubject = new Rx.Subject()\n this._fovChangedByUserSubject = new Rx.Subject()\n this._airTagClickSubject = new Rx.Subject()\n }\n\n onPointChangeAsObservable(): Rx.Observable<PointChangedEvent> {\n return this._changePointSubject\n }\n\n notifyPointChanged(e: PointChangedEvent) {\n this._changePointSubject.next(e)\n }\n\n onFovChangedByUserAsObservable(): Rx.Observable<number> {\n return this._fovChangedByUserSubject\n }\n\n notifyFovChangedByUser(fov: number) {\n this._fovChangedByUserSubject.next(fov)\n }\n\n onAirTagClickAsObservable(): Rx.Observable<AirTagData> {\n return this._airTagClickSubject\n }\n\n notifyAirTagClick(data: AirTagData) {\n this._airTagClickSubject.next(data)\n }\n\n onItemShownAsObservable(): Rx.Observable<ItemShownEvent> {\n return this._itemShownSubject\n }\n\n notifyItemShown(e: ItemShownEvent) {\n this._itemShownSubject.next(e)\n }\n}\n","import EventSubjects from '~/shared/event_subjects'\n\nclass Analytics {\n constructor () {\n this.eventSubjects = new EventSubjects()\n if (window.AnalyticsNamespace) {\n window.AnalyticsNamespace.attachPanoramaEvents(this.eventSubjects)\n }\n\n // for debug\n this.eventSubjects.onItemShownAsObservable().subscribe(e => console.log('onItemShown', e))\n this.eventSubjects.onPointChangeAsObservable().subscribe(e => console.log('onPointChange', e))\n this.eventSubjects.onAirTagClickAsObservable().subscribe(e => console.log('onAirTagClick', e))\n this.eventSubjects.onFovChangedByUserAsObservable().subscribe(e => console.log('onFovChangedByUserAsObservable', e))\n }\n\n notifyItemShown (state) {\n this.eventSubjects.notifyItemShown({\n placeId: state.placeId,\n pointId: state.pointId,\n itemId: state.itemId\n })\n }\n\n notifyPointChanged (state) {\n this.eventSubjects.notifyPointChanged({\n placeId: state.placeId,\n pointId: state.pointId,\n itemId: state.itemId,\n seekPositionMillisec: state.videoStartTime * 1000,\n pointIndex: -1\n })\n }\n\n notifyAirTagClick (airtag) {\n this.eventSubjects.notifyAirTagClick({\n phi: airtag.phi,\n theta: airtag.theta,\n type: airtag.type,\n index: airtag.index\n })\n }\n\n notifyFovChangedByUser (fov) {\n this.eventSubjects.notifyFovChangedByUser(fov)\n }\n}\n\nexport default new Analytics()\n","import TWEEN from '@tweenjs/tween.js'\n\nimport { isImageType, clampRotation, optimizeRotation } from './helpers'\nimport analytics from './analytics'\n\nlet rotateCameraTween = null\n\nexport default {\n async loadPanorama ({ state, getters, commit, dispatch }, panoramaDataUrl) {\n try {\n commit('setLoading', true)\n const response = await Nurve.$http.get(panoramaDataUrl)\n commit('setPlaceData', response.data)\n commit('setLoading', false)\n\n } catch (err) {\n commit('setErrorMessage', 'データが取得できませんでした。')\n console.log(err)\n }\n },\n\n async showInitialItem ({ state, getters, commit, dispatch }) {\n const { mapId, pointId, itemId } = getters.initialItemContext\n commit('setItemContext', { mapId: mapId })\n commit('setItemContext', {\n ...getters.initialItemContext,\n cameraRotation: getters.initialCameraRotation(pointId, itemId),\n fov: getters.initialCameraFov(itemId)\n })\n analytics.notifyItemShown(state)\n },\n\n requestPermissionDeviceMotion({ state, commit }) {\n if (typeof DeviceMotionEvent === 'undefined' || typeof DeviceOrientationEvent === 'undefined') {\n commit('setDeviceMotionDenied')\n return\n }\n if (\n DeviceMotionEvent &&\n DeviceMotionEvent.requestPermission &&\n typeof DeviceMotionEvent.requestPermission === 'function'\n ) {\n DeviceMotionEvent.requestPermission().then(permission => {\n if (permission == 'denied') commit('setDeviceMotionDenied')\n })\n }\n if (\n DeviceOrientationEvent &&\n DeviceOrientationEvent.requestPermission &&\n typeof DeviceOrientationEvent.requestPermission === 'function'\n ) {\n DeviceOrientationEvent.requestPermission().then(permission => {\n if (permission == 'denied') commit('setDeviceMotionDenied')\n })\n }\n },\n\n rotateCamera ({ state, commit }, { duration, x, y }) {\n return new Promise((resolve, reject) => {\n // 前回のアニメーションををkill\n if (rotateCameraTween) {\n rotateCameraTween.stop()\n }\n\n const rotation = {\n x: state.cameraRotation.x,\n y: state.cameraRotation.y\n }\n\n rotateCameraTween = new TWEEN.Tween(rotation)\n .to({x, y: optimizeRotation(rotation.y, y) }, duration * 1000)\n .easing(TWEEN.Easing.Quadratic.Out)\n .onUpdate(() => commit('setCameraRotation', rotation))\n .onComplete(resolve)\n .start()\n\n // duration + 0.1 秒でresolveされていなければkillされたとみなしてrejectする\n setTimeout(reject, (duration + 0.1) * 1000)\n })\n },\n\n changeCameraRotation({ state, commit, dispatch }, { x, y }) {\n commit('setCameraRotation', { x, y })\n dispatch('clampCameraRotation')\n },\n\n async changePointWithoutForwardProcess({ state, getters, dispatch }, { pointId }) {\n if (getters.currentPoint.id === pointId) { return }\n const point = getters.getPointById(pointId)\n const mapId = getters.allMaps.find(m => m.points.find(p => p.id == pointId)).id\n const items = point.items\n const itemId = items[items.length - 1].id\n dispatch('changePointFade', { mapId, pointId, itemId })\n dispatch('sendEvent', { event: 'changePoint', overrideIds: { pointId, itemId } })\n },\n\n async changePoint({ state, getters, dispatch }, { pointId, videoForceAutoPlay = false } = {}) {\n if (getters.currentPoint.id === pointId) { return }\n\n const point = getters.getPointById(pointId)\n const mapId = getters.allMaps.find(m => m.points.find(p => p.id == pointId)).id\n const items = point.items\n const itemId = items[0].id\n if (getters.canForward(pointId) && !state.gyroRotation) {\n dispatch('changePointForward', { mapId, pointId, itemId, videoForceAutoPlay })\n } else {\n dispatch('changePointFade', { mapId, pointId, itemId, videoForceAutoPlay })\n }\n dispatch('sendEvent', { event: 'changePoint', overrideIds: { pointId: pointId, itemId: itemId } })\n },\n\n changePointForward({ state, getters, commit, dispatch }, { mapId, pointId, itemId, videoForceAutoPlay = false } = {}) {\n const currentItemContext = getters.currentItemContext\n let cameraRotation = null\n let fov = null\n if (!getters.keepMovementDirection(pointId)) {\n cameraRotation = getters.initialCameraRotation(pointId, itemId)\n fov = getters.initialCameraFov(itemId)\n }\n const direction = getters.directionToPoint(pointId)\n dispatch('rotateCamera', { duration: 0.5, x: 0, y: direction }).then(() => {\n commit('appendItemContextHistory', currentItemContext)\n commit('setItemContext', { mapId, pointId, itemId, transition: 'forward', cameraRotation, fov, videoForceAutoPlay })\n analytics.notifyPointChanged(state)\n }).catch(() => {})\n },\n\n changePointFade({ state, getters, commit }, { mapId, pointId, itemId, videoForceAutoPlay = false } = {}) {\n const currentItemContext = getters.currentItemContext\n const cameraRotation = getters.initialCameraRotation(pointId, itemId)\n const fov = getters.initialCameraFov(itemId)\n commit('appendItemContextHistory', currentItemContext)\n commit('setItemContext', { mapId, pointId, itemId, transition: 'fade', cameraRotation, fov, videoForceAutoPlay })\n analytics.notifyPointChanged(state)\n },\n\n async changeItem({ state, getters, commit, dispatch }, { pointId, itemId }) {\n if (getters.currentItem.id !== itemId) {\n commit('setItemContext', { pointId, itemId, fov: getters.initialCameraFov(itemId) })\n dispatch('sendEvent', { event: 'changeItem', overrideIds: { pointId: pointId, itemId: itemId } })\n }\n },\n\n async changeImageQuality({ state, getters, commit, dispatch }) {\n const itemContext = getters.currentItemContext\n commit('setItemContext', { ...itemContext, imageQuality: state.settings.imageQuality })\n dispatch('sendEvent', { event: 'changeImageQuality', value: state.settings.imageQuality })\n },\n\n backPrevPoint({ state, getters, commit }) {\n if (getters.lastItemContext) {\n const itemContext = getters.lastItemContext\n commit('removeLastItemContext')\n commit('setItemContext', { ...itemContext, transition: 'fade' })\n analytics.notifyPointChanged(state)\n }\n },\n\n changeFov({ state, commit, dispatch }, fov) {\n const oldFov = state.fov.value\n commit('setFov', fov)\n if (oldFov !== state.fov.value) {\n dispatch('clampCameraRotation')\n analytics.notifyFovChangedByUser(state.fov.value)\n }\n },\n\n changeFovWithAnimation({ state, commit, dispatch }, { fov, duration }) {\n return new Promise(resolve => {\n const obj = { fov: state.fov.value }\n\n new TWEEN.Tween(obj)\n .to({ fov }, duration * 1000)\n .easing(TWEEN.Easing.Quadratic.Out)\n .onUpdate(() => {\n commit('setFov', obj.fov)\n dispatch('clampCameraRotation')\n })\n .onComplete(resolve)\n .start()\n })\n },\n\n onAirtagClick({ state, getters, commit, dispatch }, { airtag }) {\n analytics.notifyAirTagClick(airtag)\n if (airtag.type == 'point') {\n dispatch('changePoint', { pointId: airtag.point_id })\n }\n if (airtag.type == 'info') {\n commit('setAirtagInformation', airtag.information)\n commit('toggleAirtagInformation')\n }\n },\n\n onStopLookAtItemObject ({ state, commit }) {\n commit('setStopLookingAtItemObject')\n },\n\n onLookAtArrowPoint({ state, getters, commit, dispatch }, { arrowPoint }) {\n commit('setLookingAtItemObject', arrowPoint)\n if (state.lookAtItemObject.counter<60) return\n commit('setSelectedItemObject')\n dispatch('changePointWithoutForwardProcess', { pointId: arrowPoint.id })\n },\n\n onLookAtAirtag({ state, getters, commit, dispatch }, { airtag }) {\n if (airtag.type == 'info') return\n commit('setLookingAtItemObject', airtag)\n if (state.lookAtItemObject.counter<60) return\n if (airtag.type == 'point') {\n commit('setSelectedItemObject')\n dispatch('changePointWithoutForwardProcess', { pointId: airtag.point_id })\n }\n if (airtag.type == 'info') {\n }\n },\n\n clampCameraRotation({ state, getters, commit }) {\n const range = getters.cameraRotationRange\n if (range) {\n let { x, y } = state.cameraRotation\n x = clampRotation(x, range.xMin, range.xMax)\n y = clampRotation(y, range.yMin, range.yMax)\n commit('setCameraRotation', { x, y })\n }\n },\n\n sendEvent({ state }, { event, value, overrideIds }) {\n window.logger.sendEvent(event, value,\n (overrideIds && overrideIds.placeId) || state.placeId,\n (overrideIds && overrideIds.mapId) || state.mapId,\n (overrideIds && overrideIds.pointId) || state.pointId,\n (overrideIds && overrideIds.itemId) || state.itemId\n )\n }\n}\n","import state from './state'\nimport getters from './getters'\nimport mutations from './mutations'\nimport actions from './actions'\n\nexport default {\n namespaced: true,\n\n state,\n getters,\n mutations,\n actions\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.loading)?_c('div',{staticClass:\"loading\"},[_c('div',{staticClass:\"spin\"})]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=style&index=0&id=26d2eb91&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=style&index=0&id=26d2eb91&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./loading.vue?vue&type=template&id=26d2eb91&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=26d2eb91&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"26d2eb91\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.errorMessage)?_c('div',{staticClass:\"error\"},[_c('div',{staticClass:\"error-message\"},[_vm._v(\" \"+_vm._s(_vm.errorMessage)+\" \")])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./error-message.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./error-message.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./error-message.vue?vue&type=style&index=0&id=20a45214&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./error-message.vue?vue&type=style&index=0&id=20a45214&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./error-message.vue?vue&type=template&id=20a45214&scoped=true&\"\nimport script from \"./error-message.vue?vue&type=script&lang=js&\"\nexport * from \"./error-message.vue?vue&type=script&lang=js&\"\nimport style0 from \"./error-message.vue?vue&type=style&index=0&id=20a45214&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20a45214\",\n null\n \n)\n\nexport default component.exports","import { mapMutations } from 'vuex'\nimport TWEEN from '@tweenjs/tween.js'\n\nexport default {\n methods: {\n ...mapMutations('panorama', [\n 'setPanoramaZoomEnabled',\n 'setRadarEnabled',\n 'setIgnoreAutoRotation',\n ]),\n\n dispose () {\n },\n\n beforeEnter (el) {\n el.style.opacity = 0\n this.setIgnoreAutoRotation(true)\n },\n\n enter (el, done) {\n new TWEEN.Tween(el.style)\n .to({ opacity: 1 }, 1000)\n .easing(TWEEN.Easing.Exponential.In)\n .onUpdate(data => el.opacity = data.opacity)\n .onComplete(done)\n .start()\n },\n\n afterEnter (el) {\n this.setIgnoreAutoRotation(false)\n },\n\n beforeLeave (el) {\n },\n\n leave (el, done) {\n new TWEEN.Tween(el.style)\n .to({ opacity: 0 }, 1000)\n .easing(TWEEN.Easing.Exponential.Out)\n .onUpdate(data => el.opacity = data.opacity)\n .onComplete(done)\n .start()\n },\n\n afterLeave (el) {\n this.dispose()\n }\n },\n created () {\n this.setPanoramaZoomEnabled(false)\n this.setRadarEnabled(false)\n }\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',{attrs:{\"appear\":\"\",\"css\":false},on:{\"before-enter\":_vm.beforeEnter,\"enter\":_vm.enter,\"after-enter\":_vm.afterEnter,\"before-leave\":_vm.beforeLeave,\"leave\":_vm.leave,\"after-leave\":_vm.afterLeave}},[_c('div',{directives:[{name:\"hammer\",rawName:\"v-hammer:tap\",value:(_vm.onTap),expression:\"onTap\",arg:\"tap\"}],staticClass:\"item-image\",style:(_vm.style)})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-image.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-image.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-image.vue?vue&type=style&index=0&id=60ec44ea&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-image.vue?vue&type=style&index=0&id=60ec44ea&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./item-image.vue?vue&type=template&id=60ec44ea&scoped=true&\"\nimport script from \"./item-image.vue?vue&type=script&lang=js&\"\nexport * from \"./item-image.vue?vue&type=script&lang=js&\"\nimport style0 from \"./item-image.vue?vue&type=style&index=0&id=60ec44ea&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"60ec44ea\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\n\n// FIXME: vuex化するべき。\nconst videoControlsBus = new Vue()\nexport default videoControlsBus\n","import { mapState, mapGetters, mapMutations, mapActions } from 'vuex'\nimport * as THREE from 'three'\nimport screenfull from 'screenfull'\n\nimport videoControlsBus from '../../video-controls-bus'\nimport ReactiveVideoElement from '~/use_case_supports/presenters/video/reactive_video_element'\nimport CompositeDisposable from '~/shared/disposables/composite_disposable'\n\nconst waitMetadata = (reactiveVideo, video) => {\n return new Promise((resolve, reject) => {\n const disposables = new CompositeDisposable()\n disposables.addSubscription(\n reactiveVideo.metadataReadyProperty.asObservable.subscribe((ready) => {\n if (ready) {\n resolve()\n disposables.dispose()\n }\n })\n )\n disposables.addSubscription(\n reactiveVideo.onErrorAsObservable().subscribe((error) => {\n reject(error)\n disposables.dispose()\n })\n )\n if (reactiveVideo.videoElement.error) {\n reject(reactiveVideo.videoElement.error)\n disposables.dispose()\n }\n })\n}\n\nexport default {\n data() {\n return {\n overlayVideoPlayButton: false,\n overlayVideoReplayButton: false,\n changeVideoVolumeTimer: null,\n reactiveVideo: null,\n disposables: null,\n }\n },\n\n computed: {\n ...mapState('panorama', [\n 'settings',\n 'videoStartTime',\n 'videoCurrentTime',\n 'videoDuration',\n 'videoSpeed',\n 'videoRepeat',\n 'vrMode',\n 'videoMuted',\n 'videoVolume',\n 'videoAutoPlay',\n ]),\n ...mapGetters('panorama', ['itemComponentInfo']),\n },\n\n methods: {\n initVideoEvent() {\n this.disposables.addSubscription(\n this.reactiveVideo.onPlayingAsObservable().subscribe(() => {\n this.setVideoPlaying(true)\n this.overlayVideoPlayButton = false\n this.overlayVideoReplayButton = false\n })\n )\n this.disposables.addSubscription(\n this.reactiveVideo.onErrorAsObservable().subscribe((e) => {\n console.log(e)\n })\n )\n this.disposables.addSubscription(\n this.reactiveVideo.onEndedAsObservable().subscribe(() => {\n if (this.videoRepeat || this.vrMode) {\n // 動画のリプレイ画面とVRモードメニュ画面が被ってしまうため、\n // VRモード時では動画はループ再生させ、リプレイ画面が表示するのを防ぐ\n this.playVideo()\n } else {\n const pointId = this.itemComponentInfo.nextPointId\n if (pointId) {\n this.changePoint({ pointId, videoForceAutoPlay: true })\n } else {\n this.setVideoPlaying(false)\n this.overlayVideoReplayButton = true\n\n // 次に再生する動画が無いため最小化\n if (screenfull.isEnabled) {\n // Fullscreen APIが有効な場合\n screenfull.exit()\n } else {\n // Fullscreen APIを使用できない場合、ブラウザサイズで最小化をiframeの親に要求\n window.parent?.postMessage(\n JSON.stringify({\n action: 'nurve-fullscreen-off',\n by: this.locationHashParams['target'] ?? 0,\n }),\n '*'\n )\n this.setFullscreen(!this.fullscreen)\n\n // iframeのサイズが変わるため、念の為のresize発火\n setTimeout(() => {\n window.dispatchEvent(new Event('resize'))\n }, 500)\n }\n }\n }\n })\n )\n this.disposables.addSubscription(\n this.reactiveVideo.onPauseAsObservable().subscribe(() => {\n this.setVideoPlaying(false)\n })\n )\n this.disposables.addSubscription(\n this.reactiveVideo.onTimeupdateAsObservable().subscribe(() => {\n this.setVideoCurrentTime(this.video.currentTime)\n })\n )\n this.disposables.addSubscription(\n this.reactiveVideo.onRatechangeAsObservable().subscribe(() => {\n this.setVideoSpeed(this.video.playbackRate)\n })\n )\n this.disposables.addSubscription(\n this.reactiveVideo.onWaitingAsObservable().subscribe(() => {\n this.setLoading(true)\n })\n )\n this.disposables.addSubscription(\n this.reactiveVideo.onCanplayAsObservable().subscribe(() => {\n this.setLoading(false)\n\n // 再生可能になったタイミングで自動再生を行う\n if (this.itemComponentInfo.videoAutoPlay) {\n this.playVideo()\n }\n })\n )\n this.disposables.addSubscription(\n this.reactiveVideo.onSeekingAsObservable().subscribe(() => {\n this.setLoading(true)\n // 1フレームずらす実装があるので整数値で判定する\n if (parseInt(this.video.currentTime) !== parseInt(this.videoStartTime)) {\n this.overlayVideoPlayButton = false\n }\n this.overlayVideoReplayButton = this.video.ended\n })\n )\n this.disposables.addSubscription(\n this.reactiveVideo.onSeekedAsObservable().subscribe(() => {\n this.setLoading(false)\n })\n )\n },\n\n playVideo() {\n this.video.muted = this.videoMuted\n\n this.video.play().catch((err) => {\n if (err.name === 'NotAllowedError' && this.itemComponentInfo.videoAutoPlay) {\n this.muteVideo()\n this.video.play()\n } else {\n // TODO エラー処理\n console.log(err)\n }\n })\n\n this.sendEvent({ event: 'videoPlay', value: this.video.muted })\n },\n\n pauseVideo() {\n this.video.pause()\n this.sendEvent({ event: 'videoPaused', value: this.video.currentTime })\n },\n\n skipVideo(seconds) {\n const time = this.video.currentTime + seconds\n this.video.currentTime = THREE.MathUtils.clamp(time, 0, this.video.duration)\n },\n\n changeVideoSpeed(speed) {\n this.video.playbackRate = speed\n this.setVideoSpeed(speed)\n },\n\n muteVideo() {\n this.video.muted = true\n this.setVideoMuted(true)\n this.sendEvent({ event: 'videoMuted' })\n },\n\n unmuteVideo() {\n this.video.muted = false\n this.setVideoMuted(false)\n this.sendEvent({ event: 'videoUnmuted' })\n },\n\n async startVideoLoading() {\n try {\n await waitMetadata(this.reactiveVideo, this.video)\n this.video.currentTime = this.videoStartTime\n this.video.playbackRate = this.videoSpeed\n await this.waitInitialCanplayEvent()\n } catch (err) {\n console.log(err)\n // 無限に呼び出されるかもしれないので sleep を入れる\n await new Promise((resolve) => setTimeout(resolve, 1000))\n this.video.load()\n await this.startVideoLoading()\n }\n },\n\n async waitInitialCanplayEvent() {\n const disposables = new CompositeDisposable()\n return new Promise((resolve, reject) => {\n disposables.addSubscription(\n this.reactiveVideo.onCanplayAsObservable().subscribe(() => {\n disposables.dispose()\n resolve(null)\n })\n )\n disposables.addSubscription(\n this.reactiveVideo.onErrorAsObservable().subscribe((e) => {\n disposables.dispose()\n reject(e)\n })\n )\n })\n },\n\n changeVideoVolume(volume) {\n if (volume === 0) {\n this.muteVideo()\n } else if (this.videoMuted) {\n this.unmuteVideo()\n }\n\n this.video.volume = volume\n this.setVideoVolume(volume)\n\n // ボリューム変更を送信(そのままだと大量に送信されてしまうため遅延実行)\n clearTimeout(this.changeVideoVolumeTimer)\n this.changeVideoVolumeTimer = setTimeout(() => {\n this.sendEvent({ event: 'changeVideoVolume', value: volume })\n }, 1000)\n },\n\n ...mapMutations('panorama', [\n 'setVideoPlaying',\n 'setVideoCurrentTime',\n 'setVideoSpeed',\n 'setVideoMuted',\n 'setVideoVolume',\n 'setLoading'\n ]),\n ...mapActions('panorama', ['changePoint', 'sendEvent']),\n },\n\n async mounted() {\n this.disposables = new CompositeDisposable()\n this.reactiveVideo = this.disposables.add(new ReactiveVideoElement(this.video))\n this.overlayVideoPlayButton = !this.videoAutoPlay\n\n this.setVideoPlaying(false)\n videoControlsBus.$on('play-video', this.playVideo)\n videoControlsBus.$on('pause-video', this.pauseVideo)\n videoControlsBus.$on('skip-video', this.skipVideo)\n videoControlsBus.$on('change-video-speed', this.changeVideoSpeed)\n videoControlsBus.$on('mute-video', this.muteVideo)\n videoControlsBus.$on('unmute-video', this.unmuteVideo)\n videoControlsBus.$on('change-video-volume', this.changeVideoVolume)\n\n this.$el.querySelector('.video').appendChild(this.video)\n this.initVideoEvent()\n\n await this.startVideoLoading()\n },\n\n beforeDestroy() {\n videoControlsBus.$off('play-video', this.playVideo)\n videoControlsBus.$off('pause-video', this.pauseVideo)\n videoControlsBus.$off('skip-video', this.skipVideo)\n videoControlsBus.$off('change-video-speed', this.changeVideoSpeed)\n videoControlsBus.$off('mute-video', this.muteVideo)\n videoControlsBus.$off('unmute-video', this.unmuteVideo)\n videoControlsBus.$off('change-video-volume', this.changeVideoVolume)\n this.reactiveVideo?.dispose()\n\n this.pauseVideo()\n this.setLoading(false)\n },\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.overlayVideoPlayButton || _vm.overlayVideoReplayButton),expression:\"overlayVideoPlayButton || overlayVideoReplayButton\"}],staticClass:\"overlay\",style:(_vm.overlayStyle),on:{\"click\":function($event){return _vm.$emit('playVideo')}}},[(_vm.overlayVideoPlayButton)?_c('div',{staticClass:\"play-video-button\"},[_c('img',{staticClass:\"play-video\",attrs:{\"src\":_vm.theme.icons.overlayVideoPlay}}),_c('div',[_vm._v(\"再生する\")])]):_vm._e(),(_vm.overlayVideoReplayButton)?_c('div',{staticClass:\"replay-video-button\"},[_c('img',{staticClass:\"play-video\",attrs:{\"src\":_vm.theme.icons.overlayVideoPlay}}),_c('div',[_vm._v(\"もう一度再生する\")])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./video-overlay.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./video-overlay.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./video-overlay.vue?vue&type=style&index=0&id=948ad12a&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./video-overlay.vue?vue&type=style&index=0&id=948ad12a&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./video-overlay.vue?vue&type=template&id=948ad12a&scoped=true&\"\nimport script from \"./video-overlay.vue?vue&type=script&lang=js&\"\nexport * from \"./video-overlay.vue?vue&type=script&lang=js&\"\nimport style0 from \"./video-overlay.vue?vue&type=style&index=0&id=948ad12a&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"948ad12a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',{attrs:{\"appear\":\"\",\"css\":false},on:{\"before-enter\":_vm.beforeEnter,\"enter\":_vm.enter,\"after-enter\":_vm.afterEnter,\"before-leave\":_vm.beforeLeave,\"leave\":_vm.leave,\"after-leave\":_vm.afterLeave}},[_c('div',{directives:[{name:\"hammer\",rawName:\"v-hammer:tap\",value:(_vm.onTap),expression:\"onTap\",arg:\"tap\"}],staticClass:\"item-video\"},[_c('div',{staticClass:\"video\",style:(_vm.style)}),_c('video-overlay',{attrs:{\"overlay-video-play-button\":_vm.overlayVideoPlayButton,\"overlay-video-replay-button\":_vm.overlayVideoReplayButton},on:{\"playVideo\":_vm.playVideo}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-video.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-video.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-video.vue?vue&type=style&index=0&id=7fc66301&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-video.vue?vue&type=style&index=0&id=7fc66301&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./item-video.vue?vue&type=template&id=7fc66301&scoped=true&\"\nimport script from \"./item-video.vue?vue&type=script&lang=js&\"\nexport * from \"./item-video.vue?vue&type=script&lang=js&\"\nimport style0 from \"./item-video.vue?vue&type=style&index=0&id=7fc66301&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7fc66301\",\n null\n \n)\n\nexport default component.exports","export default class {\n constructor (store, itemObject, itemTransition) {\n this.store = store\n this.itemObject = itemObject\n this.itemTransition = itemTransition\n }\n\n get panoramaFovMax() {\n return this.store.state.panorama.fov.max\n }\n\n get cameraRotation() {\n return this.store.state.panorama.cameraRotation\n }\n\n afterLeave() {\n this.itemObject.dispose()\n }\n}\n","import TWEEN from '@tweenjs/tween.js'\nimport delay from 'delay'\n\nimport TweenPromisify from '~/shared/tween-promisify'\nimport Transition3dBase from './transition3d-base'\n\nexport default class extends Transition3dBase {\n constructor (store, itemObject, itemTransition) {\n super(store, itemObject, itemTransition)\n }\n\n beforeEnter () {\n this.itemObject.opacity = 0\n this.itemObject.showAirTagsAndMoveTags(false)\n\n this.store.commit('panorama/setRadarEnabled', false)\n }\n\n enter () {\n // フェードイン\n const tween = new TWEEN.Tween(this.itemObject)\n .to({ opacity: 1 }, 1000)\n .easing(TWEEN.Easing.Exponential.In)\n .start()\n const tweenPromise = TweenPromisify(tween)\n\n // 暗くなっている間にカメラを回転する\n const timeoutPromise = new Promise(async resolve => {\n await delay(500)\n\n if (this.itemTransition.cameraRotation) {\n this.store.commit('panorama/setCameraRotation', this.itemTransition.cameraRotation)\n }\n if (this.itemTransition.fov) {\n this.store.commit('panorama/setFov', this.itemTransition.fov)\n } else {\n this.store.commit('panorama/setFov', this.panoramaFovMax)\n }\n\n resolve()\n })\n\n return Promise.all([tweenPromise, timeoutPromise])\n }\n\n afterEnter () {\n this.store.commit('panorama/setRadarEnabled', true)\n\n this.itemObject.showAirTagsAndMoveTags(true)\n }\n\n leave () {\n // フェードアウト\n const tween = new TWEEN.Tween(this.itemObject)\n .to({ opacity: 0 }, 1000)\n .easing(TWEEN.Easing.Exponential.Out)\n .start()\n return TweenPromisify(tween)\n }\n}\n","import * as THREE from 'three'\nimport TWEEN from '@tweenjs/tween.js'\n\nimport TweenPromisify from '~/shared/tween-promisify'\nimport Transition3dBase from './transition3d-base'\n\nexport default class extends Transition3dBase {\n constructor (store, itemObject, itemTransition) {\n super(store, itemObject, itemTransition)\n\n this.duration = 1\n }\n\n beforeEnter () {\n this.itemObject.opacity = 0\n this.itemObject.showAirTagsAndMoveTags(false)\n\n // カメラの前方に出現する\n const y = THREE.MathUtils.degToRad(this.cameraRotation.y)\n const pos = new THREE.Vector3(0, 0, -20).applyEuler(new THREE.Euler(0, -y, 0))\n this.itemObject.inner.position.copy(pos)\n }\n\n enter () {\n // 原点へ移動する\n const tween1 = new TWEEN.Tween(this.itemObject.inner.position)\n .to({ x: 0, y: 0, z: 0 }, this.duration * 1000)\n .easing(TWEEN.Easing.Quadratic.Out)\n const promise1 = TweenPromisify(tween1)\n\n const tween2 = new TWEEN.Tween(this.itemObject)\n .to({ opacity: 1 }, this.duration * 1000)\n .easing(TWEEN.Easing.Quadratic.Out)\n const promise2 = TweenPromisify(tween2)\n\n return Promise.all([promise1, promise2])\n }\n\n afterEnter () {\n const duration = 0.5\n if (this.itemTransition.cameraRotation) {\n const rotation = { ...this.itemTransition.cameraRotation, duration }\n this.store.dispatch('panorama/rotateCamera', rotation).catch(() => {})\n }\n if (this.itemTransition.fov) {\n const fov = { fov: this.itemTransition.fov, duration }\n this.store.dispatch('panorama/changeFovWithAnimation', fov).catch(() => {})\n } else {\n const fov = { fov: this.panoramaFovMax, duration }\n this.store.dispatch('panorama/changeFovWithAnimation', fov).catch(() => {})\n }\n\n this.itemObject.showAirTagsAndMoveTags(true)\n }\n\n leave () {\n // カメラの後方へ移動する\n const y = THREE.MathUtils.degToRad(this.cameraRotation.y)\n const pos = new THREE.Vector3(0, 0, 20).applyEuler(new THREE.Euler(0, -y, 0))\n\n const tween1 = new TWEEN.Tween(this.itemObject.inner.position)\n .to({ x: pos.x, y: pos.y, z: pos.z }, this.duration * 1000)\n .easing(TWEEN.Easing.Quadratic.Out)\n const promise1 = TweenPromisify(tween1)\n\n const tween2 = new TWEEN.Tween(this.itemObject)\n .to({ opacity: 0 }, this.duration * 1000)\n .easing(TWEEN.Easing.Quadratic.Out)\n const promise2 = TweenPromisify(tween2)\n\n return Promise.all([promise1, promise2])\n }\n}\n","import Transition3dBase from './transition3d-base'\n\nexport default class extends Transition3dBase {\n constructor (store, itemObject, itemTransition) {\n super(store, itemObject, itemTransition)\n }\n\n beforeEnter () {\n this.itemObject.showAirTagsAndMoveTags(false)\n }\n\n enter () {\n return Promise.resolve()\n }\n\n afterEnter () {\n if (this.itemTransition.cameraRotation) {\n this.store.commit('panorama/setCameraRotation', this.itemTransition.cameraRotation)\n }\n if (this.itemTransition.fov) {\n this.store.commit('panorama/setFov', this.itemTransition.fov)\n } else {\n this.store.commit('panorama/setFov', this.panoramaFovMax)\n }\n\n this.itemObject.showAirTagsAndMoveTags(true)\n }\n\n beforeLeave () {}\n\n leave () {\n return Promise.resolve()\n }\n}\n","import { mapState, mapMutations } from 'vuex'\n\nimport Transition3dFade from './transition3d-fade'\nimport Transition3dForward from './transition3d-forward'\nimport Transition3dNull from './transition3d-null'\n\nexport default {\n computed: {\n ...mapState('panorama', [\n 'itemTransition'\n ])\n },\n\n methods: {\n ...mapMutations('panorama', [\n 'setRadarEnabled',\n 'setIgnoreAutoRotation',\n ]),\n\n dispose () {},\n\n createTransition () {\n switch (this.itemTransition.name) {\n case 'fade': return new Transition3dFade(this.$store, this.object, this.itemTransition)\n case 'forward': return new Transition3dForward(this.$store, this.object, this.itemTransition)\n default: return new Transition3dNull(this.$store, this.object, this.itemTransition)\n }\n },\n\n beforeEnter (el) {\n this.setIgnoreAutoRotation(true)\n\n this.$_transition = this.createTransition()\n this.$_transition.beforeEnter()\n },\n\n enter (el, done) {\n this.$_transition.enter().then(done)\n },\n\n afterEnter (el) {\n this.setIgnoreAutoRotation(false)\n this.$_transition.afterEnter()\n this.$_transition = null\n },\n\n beforeLeave (el) {\n this.$_transition = this.createTransition()\n },\n\n leave (el, done) {\n this.$_transition.leave().then(done)\n },\n\n afterLeave (el) {\n this.$_transition.afterLeave()\n this.$_transition = null\n this.dispose()\n }\n },\n\n created () {\n this.setRadarEnabled(true)\n }\n}\n","import { mapState, mapMutations, mapActions } from 'vuex'\n\nexport default {\n computed: {\n ...mapState('panorama', [\n 'fov',\n 'cameraRotation',\n 'gyroRotation'\n ])\n },\n\n methods: {\n ...mapMutations('panorama', [\n 'setPanoramaZoomEnabled',\n 'setAutoRotation'\n ]),\n ...mapActions('panorama', [\n 'changePoint',\n 'onAirtagClick',\n 'changeFov',\n 'changeCameraRotation',\n 'sendEvent'\n ]),\n\n $_onTap (e) {\n if (e.target !== this.$el) {\n return\n }\n const raycaster = this.threeContext.createRaycaster(e.center.x, e.center.y)\n\n const moveTag = this.object.findMoveTagOnRay(raycaster)\n if (moveTag) {\n this.changePoint({ pointId: moveTag.point.id })\n return\n }\n\n const airTag = this.object.findAirTagOnRay(raycaster)\n if (airTag) {\n this.onAirtagClick({ airtag: airTag })\n return\n }\n\n this.$emit('tap', e)\n },\n\n // パン\n $_onPanStart () {\n // ジャイロ操作モードではカメラ視点操作はジャイロで行うため、パン機能は使わない\n if (this.gyroRotation) return\n this.setAutoRotation(false)\n this.$_panX = this.cameraRotation.x\n this.$_panY = this.cameraRotation.y\n },\n\n $_onPan (e) {\n // ジャイロ操作モードではカメラ視点操作はジャイロで行うため、パン機能は使わない\n if (this.$_panX !== null && this.$_panY !== null && !this.gyroRotation) {\n const x = this.$_panX + e.deltaY / 5\n const y = this.$_panY - e.deltaX / 5\n this.changeCameraRotation({ x, y })\n }\n },\n\n $_onPanEnd () {\n this.sendEvent({ event: 'changeCameraRotation', value: { x: this.$_panX, y: this.$_panY } })\n this.$_panX = this.$_panY = null\n },\n\n // ピンチ\n $_onPinchStart () {\n this.setAutoRotation(false)\n this.$_fov = this.fov.value\n },\n\n $_onPinch (e) {\n if (this.$_fov !== null) {\n this.changeFov(this.$_fov / e.scale)\n }\n },\n\n $_onPinchEnd () {\n this.$_fov = null\n },\n\n // ホイール\n $_onWheel (e) {\n e.preventDefault()\n\n // deltaYとwheelDeltaYは正負逆なので注意\n // IEに合わすため、deltaYを基準とした\n let deltaY = Math.sign(e.deltaY || (- e.wheelDeltaY) || e.wheelDelta || e.detail) * 2\n this.changeFov(this.fov.value + deltaY)\n }\n },\n\n mounted () {\n this.setPanoramaZoomEnabled(true)\n\n // ホイール(ズーム)\n this.$listen(this.$el, 'wheel', this.$_onWheel, false)\n }\n}\n","import * as THREE from 'three'\n\nimport MediumElementFactory from '~/shared/medium_element_factory'\n\nconst cache = {}\n\nexport const getImageTexture = (src) => {\n let texture = cache[src]\n if (!texture) {\n texture = new THREE.TextureLoader().load(src)\n texture.minFilter = THREE.LinearFilter\n texture.magFilter = THREE.LinearFilter\n cache[src] = texture\n }\n return texture\n}\n\nexport const getVideoTexture = (src) => {\n let texture = cache[src]\n if (!texture) {\n const video = MediumElementFactory.createVideo(src)\n\n texture = new THREE.VideoTexture(video)\n texture.minFilter = THREE.LinearFilter\n texture.magFilter = THREE.LinearFilter\n texture.format = THREE.RGBAFormat\n\n cache[src] = texture\n }\n\n return texture\n}\n","import * as THREE from 'three'\nimport TWEEN from '@tweenjs/tween.js'\n\nimport { getImageTexture } from './texture-cache'\nimport Tag from '~/setup/models/tag'\nimport { ItemComponentInfo, MaskingData } from '~/panoramas/utils/types'\n\nexport default class {\n static ARROW_SIZE = 5\n static ARROW_DIST_MIN = 10\n static ARROW_DIST_MAX = 70\n\n constructor(store, item: ItemComponentInfo) {\n this.store = store\n this._opacity = 1\n\n // 内部グループ (画像、動画、三脚隠し、マスキング、エアタグ)\n // TODO: おそらくもう不要。\n this.inner = new THREE.Group()\n\n this.mesh = this.createMesh(item)\n this.inner.add(this.mesh)\n\n // エアタグ\n this.airTags = []\n\n // 矢印・ガイド\n this.moveTags = []\n this.addAirAndMoveTags(item)\n\n // 三脚隠し\n if (item.tripodCoverUrl && item.tripodCoverScale > 0) {\n this.tripodCoverMesh = this.createTripodCover(item.tripodCoverUrl, item.tripodCoverScale)\n this.inner.add(this.tripodCoverMesh)\n }\n\n // マスキング\n if (item.masking) {\n this.maskingMesh = this.createMaskingMesh(item.masking)\n this.inner.add(this.maskingMesh)\n }\n\n // モードの設定\n this.switchVrMode()\n\n // VRモードの切替の監視\n this.store.watch(() => this.store.state.panorama.vrMode, () => this.switchVrMode())\n }\n\n addAirAndMoveTags (item: ItemComponentInfo) {\n // ポイントタグの移動先pointが存在しない場合があるので、それを取り除く。\n item.airtags.filter(airtag => {\n // FIXME: もう少しきれいに書けないか?\n return airtag.type == 'info' || this.store.getters['panorama/getPointById'](airtag.point_id)\n }).forEach(airtag => {\n const tag = this.createAirtagObject(airtag)\n this.airTags.push(tag)\n\n this.mesh.add(tag.threeObject)\n })\n this.updateShowByTimeAirtags(0)\n\n // 矢印\n item.movablePoints.forEach(nextPoint => {\n const tag = this.createMoveTagObject(nextPoint)\n this.moveTags.push(tag)\n\n this.inner.add(tag.threeObject)\n })\n\n // 矢印の点滅\n const color1 = new THREE.Color(0xffffff)\n const color2 = new THREE.Color(0x2ab7d9)\n this.colorTween = new TWEEN.Tween(color1)\n .to({ r: color2.r, g: color2.g, b: color2.b }, 1000)\n .easing(TWEEN.Easing.Exponential.In)\n .repeat(Infinity)\n .yoyo(true)\n .onUpdate(data => this.updateMoveTagsColor(data))\n .start()\n }\n\n get vrMode() {\n return this.store.state.panorama.vrMode\n }\n\n dispose () {\n // 三脚隠し\n if (this.tripodCoverMesh) {\n this.tripodCoverMesh.material.dispose()\n this.tripodCoverMesh.geometry.dispose()\n }\n\n // マスキング\n if (this.maskingMesh) {\n this.maskingMesh.material.dispose()\n this.maskingMesh.geometry.dispose()\n }\n\n // エアタグ\n this.airTags.forEach(tag => tag.dispose())\n\n // 矢印\n this.moveTags.forEach(tag => tag.dispose())\n this.colorTween.stop()\n }\n\n createTripodCover (tripodCoverUrl, tripodCoverScale) {\n const coverDistance = 50\n const scale = tripodCoverScale / 100\n const geometry = new THREE.PlaneGeometry(40, 40)\n const texture = getImageTexture(tripodCoverUrl)\n const material = new THREE.MeshBasicMaterial({\n color: 0xffffff,\n map: texture,\n transparent: true\n })\n const tripodCoverMesh = new THREE.Mesh(geometry, material)\n tripodCoverMesh.position.y = -coverDistance\n tripodCoverMesh.rotation.x = - Math.PI / 2\n tripodCoverMesh.renderOrder = 1\n tripodCoverMesh.scale.set(scale, scale, 1)\n return tripodCoverMesh\n }\n\n createMaskingMesh (masking: MaskingData) {\n const geometry = new THREE.CircleGeometry(173, 64)\n const material = new THREE.MeshBasicMaterial({\n side: THREE.DoubleSide,\n color: 0x000000,\n transparent: true\n })\n const maskingMesh = new THREE.Mesh(geometry, material)\n const phi = THREE.MathUtils.degToRad(masking.phi)\n const theta = THREE.MathUtils.degToRad(-masking.theta + 180)\n maskingMesh.position.setFromSpherical(new THREE.Spherical(100, phi, theta))\n maskingMesh.lookAt(0, 0, 0)\n maskingMesh.renderOrder = 1\n return maskingMesh\n }\n\n createAirtagObject (airtag) {\n airtag.theta = airtag.theta + 180\n\n if (airtag.type == 'point') {\n const targetPoint = this.store.getters['panorama/getPointById'](airtag.point_id)\n airtag.label = targetPoint.name\n }\n\n return Tag.create(airtag)\n }\n\n createMoveTagObject(nextPoint) {\n const v = this.store.getters['panorama/vectorToPoint'](nextPoint.id)\n const pos = v.clone().setLength(this.constructor.ARROW_DIST_MIN).add(v.multiplyScalar(this.constructor.ARROW_DIST_MAX - this.constructor.ARROW_DIST_MIN))\n const phi = Math.atan2(pos.length(), -5)\n const theta = Math.atan2(-pos.y, pos.x) + Math.PI/2\n const position = new THREE.Vector3().setFromSphericalCoords(25, phi, theta)\n\n // タグ\n return Tag.create({\n type: 'move',\n label: nextPoint.name,\n pos: position,\n deg: 0,\n callback: () => onClick(nextPoint),\n arrowSize: this.constructor.ARROW_SIZE,\n point: nextPoint,\n forPanorama: true\n })\n }\n\n updateShowByTimeAirtags (time) {\n this.airTags.forEach(tag => tag.showByTime(time))\n }\n\n switchVrMode () {\n this.showAirTagsAndMoveTags(true)\n }\n\n showAirTagsAndMoveTags(visible) {\n const allTags = this.airTags.concat(this.moveTags)\n\n allTags.forEach(tag => {\n tag.object.visible = visible && tag.getVisibilityByContext(this.store.state.panorama)\n\n // 動画の場合、最初のフレームでの表示設定を反映\n tag.showByTime(0)\n })\n }\n\n findAirTagOnRay(raycaster) {\n return this.airTags.find(tag => tag.onRay(raycaster))\n }\n\n updateMoveTagsColor (color) {\n this.moveTags.forEach(tag => tag.setColor(color))\n }\n\n findMoveTagOnRay(raycaster) {\n const selectedTag = this.moveTags.find(tag => tag.onRay(raycaster))\n this.moveTags.forEach(tag => tag == selectedTag ? tag.hoverOn() : tag.hoverOff())\n\n return selectedTag\n }\n\n get opacity() {\n return this._opacity\n }\n\n set opacity (opacity) {\n this._opacity = opacity\n this.updateOpacity()\n }\n\n updateOpacity () {\n if (this.tripodCoverMesh) {\n this.tripodCoverMesh.material.opacity = this.opacity\n }\n if (this.maskingMesh) {\n this.maskingMesh.material.opacity = this.opacity\n }\n }\n}\n","import * as THREE from 'three'\nimport ItemBaseObject from './item-base-object'\nimport ShaderMaterial from '~/shared/shader-material'\nimport { getImageTexture } from './texture-cache'\nimport { ItemComponentInfo } from '~/panoramas/utils/types'\n\nexport default class extends ItemBaseObject {\n createMesh (item: ItemComponentInfo) {\n const texture = getImageTexture(item.img)\n const material = new ShaderMaterial(texture, THREE.BackSide)\n material.userData.texture = texture\n\n const geometry = new THREE.SphereGeometry(150, 64, 32, Math.PI / 2)\n const mesh = new THREE.Mesh(geometry, material)\n mesh.scale.x = -1\n mesh.rotation.y = THREE.MathUtils.degToRad(360 - item.pointRotation)\n\n return mesh\n }\n\n dispose () {\n super.dispose()\n\n this.mesh.material.dispose()\n this.mesh.material.userData.texture.dispose()\n\n this.mesh.geometry.dispose()\n }\n\n updateOpacity() {\n super.updateOpacity()\n this.mesh.material.opacity = this.opacity\n }\n\n setBrightness(brightness) {\n this.mesh.material.brightness = brightness\n }\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',{attrs:{\"appear\":\"\",\"css\":false},on:{\"before-enter\":_vm.beforeEnter,\"enter\":_vm.enter,\"after-enter\":_vm.afterEnter,\"before-leave\":_vm.beforeLeave,\"leave\":_vm.leave,\"after-leave\":_vm.afterLeave}},[_c('div',{directives:[{name:\"hammer\",rawName:\"v-hammer:tap\",value:(_vm.$_onTap),expression:\"$_onTap\",arg:\"tap\"},{name:\"hammer\",rawName:\"v-hammer:panstart\",value:(_vm.$_onPanStart),expression:\"$_onPanStart\",arg:\"panstart\"},{name:\"hammer\",rawName:\"v-hammer:pan\",value:(_vm.$_onPan),expression:\"$_onPan\",arg:\"pan\"},{name:\"hammer\",rawName:\"v-hammer:panend\",value:(_vm.$_onPanEnd),expression:\"$_onPanEnd\",arg:\"panend\"},{name:\"hammer\",rawName:\"v-hammer:pinchstart\",value:(_vm.$_onPinchStart),expression:\"$_onPinchStart\",arg:\"pinchstart\"},{name:\"hammer\",rawName:\"v-hammer:pinch\",value:(_vm.$_onPinch),expression:\"$_onPinch\",arg:\"pinch\"},{name:\"hammer\",rawName:\"v-hammer:pinchend\",value:(_vm.$_onPinchEnd),expression:\"$_onPinchEnd\",arg:\"pinchend\"}],staticClass:\"wrap\",domProps:{\"hammerOptions\":{pan: { direction: 'all', threshold: 5 }, pinch: { enable: true }}}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-celestial-sphere-image.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-celestial-sphere-image.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-celestial-sphere-image.vue?vue&type=style&index=0&id=9cee9d6e&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-celestial-sphere-image.vue?vue&type=style&index=0&id=9cee9d6e&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./item-celestial-sphere-image.vue?vue&type=template&id=9cee9d6e&scoped=true&\"\nimport script from \"./item-celestial-sphere-image.vue?vue&type=script&lang=js&\"\nexport * from \"./item-celestial-sphere-image.vue?vue&type=script&lang=js&\"\nimport style0 from \"./item-celestial-sphere-image.vue?vue&type=style&index=0&id=9cee9d6e&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9cee9d6e\",\n null\n \n)\n\nexport default component.exports","import * as THREE from 'three'\nimport ItemBaseObject from './item-base-object'\nimport ShaderMaterial from '~/shared/shader-material'\nimport { getVideoTexture } from './texture-cache'\nimport { ItemComponentInfo } from '~/panoramas/utils/types'\n\nexport default class extends ItemBaseObject {\n createMesh (item: ItemComponentInfo) {\n const texture = getVideoTexture(item.img)\n this.video = texture.source.data\n\n const material = new ShaderMaterial(texture, THREE.BackSide)\n material.userData.texture = texture\n\n const geometry = new THREE.SphereGeometry(150, 64, 32, Math.PI / 2)\n const mesh = new THREE.Mesh(geometry, material)\n mesh.scale.x = -1\n\n return mesh\n }\n\n dispose () {\n super.dispose()\n\n this.mesh.material.dispose()\n this.mesh.material.userData.texture.dispose()\n\n this.mesh.geometry.dispose()\n }\n\n updateOpacity () {\n super.updateOpacity()\n this.mesh.material.opacity = this.opacity\n }\n\n setBrightness(brightness) {\n this.mesh.material.brightness = brightness\n }\n}\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-celestial-sphere-video.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-celestial-sphere-video.vue?vue&type=script&lang=js&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',{attrs:{\"appear\":\"\",\"css\":false},on:{\"before-enter\":_vm.beforeEnter,\"enter\":_vm.enter,\"after-enter\":_vm.afterEnter,\"before-leave\":_vm.beforeLeave,\"leave\":_vm.leave,\"after-leave\":_vm.afterLeave}},[_c('div',{directives:[{name:\"hammer\",rawName:\"v-hammer:tap\",value:(_vm.$_onTap),expression:\"$_onTap\",arg:\"tap\"},{name:\"hammer\",rawName:\"v-hammer:panstart\",value:(_vm.$_onPanStart),expression:\"$_onPanStart\",arg:\"panstart\"},{name:\"hammer\",rawName:\"v-hammer:pan\",value:(_vm.$_onPan),expression:\"$_onPan\",arg:\"pan\"},{name:\"hammer\",rawName:\"v-hammer:panend\",value:(_vm.$_onPanEnd),expression:\"$_onPanEnd\",arg:\"panend\"},{name:\"hammer\",rawName:\"v-hammer:pinchstart\",value:(_vm.$_onPinchStart),expression:\"$_onPinchStart\",arg:\"pinchstart\"},{name:\"hammer\",rawName:\"v-hammer:pinch\",value:(_vm.$_onPinch),expression:\"$_onPinch\",arg:\"pinch\"},{name:\"hammer\",rawName:\"v-hammer:pinchend\",value:(_vm.$_onPinchEnd),expression:\"$_onPinchEnd\",arg:\"pinchend\"}],staticClass:\"item-celestial-sphere-video\",domProps:{\"hammerOptions\":{pan: { direction: 'all', threshold: 5 }, pinch: { enable: true }}}},[_c('div',{staticClass:\"video\"}),_c('video-overlay',{attrs:{\"overlay-video-play-button\":_vm.overlayVideoPlayButton,\"overlay-video-replay-button\":_vm.overlayVideoReplayButton},on:{\"playVideo\":_vm.playVideo}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-celestial-sphere-video.vue?vue&type=style&index=0&id=0e81a9ba&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-celestial-sphere-video.vue?vue&type=style&index=0&id=0e81a9ba&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./item-celestial-sphere-video.vue?vue&type=template&id=0e81a9ba&scoped=true&\"\nimport script from \"./item-celestial-sphere-video.vue?vue&type=script&lang=js&\"\nexport * from \"./item-celestial-sphere-video.vue?vue&type=script&lang=js&\"\nimport style0 from \"./item-celestial-sphere-video.vue?vue&type=style&index=0&id=0e81a9ba&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0e81a9ba\",\n null\n \n)\n\nexport default component.exports","import * as THREE from 'three'\nimport ItemBaseObject from './item-base-object'\nimport ShaderMaterial from '~/shared/shader-material'\nimport { createFisheyeGeometory } from '~/shared/global_functions'\nimport { getImageTexture } from './texture-cache'\nimport { ItemComponentInfo } from '~/panoramas/utils/types'\n\nexport default class extends ItemBaseObject {\n createMesh (item: ItemComponentInfo) {\n const texture = getImageTexture(item.img)\n const material = new ShaderMaterial(texture, THREE.BackSide)\n material.userData.texture = texture\n\n const geometry = this.createGeometry(item)\n const mesh = new THREE.Mesh(geometry, material)\n mesh.scale.z = -1\n mesh.rotation.y = THREE.MathUtils.degToRad(360 - item.pointRotation)\n\n return mesh\n }\n\n createGeometry (item) {\n // 250度魚眼画像\n if (item.type === 'fisheye_250_image') {\n if (item.fisheye250FocalLength === '3.6') {\n return createFisheyeGeometory(250, 1000, 100, new THREE.Vector2(0.62, 0.93))\n } else {\n return createFisheyeGeometory(250, 1000, 100, new THREE.Vector2(0.53, 0.78))\n }\n }\n\n // ATBB 180度魚眼\n if (item.type === 'fisheye_180_image') {\n return createFisheyeGeometory(180, 1000, 100, new THREE.Vector2(0.93, 0.93))\n }\n\n // ATBB 欠け魚眼\n if (item.type === 'chipping_fisheye_image') {\n return createFisheyeGeometory(180, 1000, 100, new THREE.Vector2(1.3, 1.3))\n }\n }\n\n dispose () {\n super.dispose()\n\n this.mesh.material.dispose()\n this.mesh.material.userData.texture.dispose()\n\n this.mesh.geometry.dispose()\n }\n\n updateOpacity() {\n super.updateOpacity()\n this.mesh.material.opacity = this.opacity\n }\n\n setBrightness(brightness) {\n this.mesh.material.brightness = brightness\n }\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',{attrs:{\"appear\":\"\",\"css\":false},on:{\"before-enter\":_vm.beforeEnter,\"enter\":_vm.enter,\"after-enter\":_vm.afterEnter,\"before-leave\":_vm.beforeLeave,\"leave\":_vm.leave,\"after-leave\":_vm.afterLeave}},[_c('div',{directives:[{name:\"hammer\",rawName:\"v-hammer:tap\",value:(_vm.$_onTap),expression:\"$_onTap\",arg:\"tap\"},{name:\"hammer\",rawName:\"v-hammer:panstart\",value:(_vm.$_onPanStart),expression:\"$_onPanStart\",arg:\"panstart\"},{name:\"hammer\",rawName:\"v-hammer:pan\",value:(_vm.$_onPan),expression:\"$_onPan\",arg:\"pan\"},{name:\"hammer\",rawName:\"v-hammer:panend\",value:(_vm.$_onPanEnd),expression:\"$_onPanEnd\",arg:\"panend\"},{name:\"hammer\",rawName:\"v-hammer:pinchstart\",value:(_vm.$_onPinchStart),expression:\"$_onPinchStart\",arg:\"pinchstart\"},{name:\"hammer\",rawName:\"v-hammer:pinch\",value:(_vm.$_onPinch),expression:\"$_onPinch\",arg:\"pinch\"},{name:\"hammer\",rawName:\"v-hammer:pinchend\",value:(_vm.$_onPinchEnd),expression:\"$_onPinchEnd\",arg:\"pinchend\"}],staticClass:\"wrap\",domProps:{\"hammerOptions\":{pan: { direction: 'all', threshold: 5 }, pinch: { enable: true }}}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-fisheye-image.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-fisheye-image.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-fisheye-image.vue?vue&type=style&index=0&id=aed56588&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-fisheye-image.vue?vue&type=style&index=0&id=aed56588&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./item-fisheye-image.vue?vue&type=template&id=aed56588&scoped=true&\"\nimport script from \"./item-fisheye-image.vue?vue&type=script&lang=js&\"\nexport * from \"./item-fisheye-image.vue?vue&type=script&lang=js&\"\nimport style0 from \"./item-fisheye-image.vue?vue&type=style&index=0&id=aed56588&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"aed56588\",\n null\n \n)\n\nexport default component.exports","import * as THREE from 'three'\nimport ItemBaseObject from './item-base-object'\nimport ShaderMaterial from '~/shared/shader-material'\nimport { createFisheyeGeometory } from '~/shared/global_functions'\nimport { getVideoTexture } from './texture-cache'\nimport { ItemComponentInfo } from '~/panoramas/utils/types'\n\nexport default class extends ItemBaseObject {\n createMesh (item: ItemComponentInfo) {\n const texture = getVideoTexture(item.img)\n this.video = texture.source.data\n\n const material = new ShaderMaterial(texture, THREE.BackSide)\n material.userData.texture = texture\n\n const uvScale = new THREE.Vector2(0.523, 0.93)\n const geometry = createFisheyeGeometory(250, 100, 100, uvScale)\n const mesh = new THREE.Mesh(geometry, material)\n mesh.scale.z = -1\n\n return mesh\n }\n\n dispose () {\n super.dispose()\n\n this.mesh.material.dispose()\n this.mesh.material.userData.texture.dispose()\n\n this.mesh.geometry.dispose()\n }\n\n updateOpacity () {\n super.updateOpacity()\n this.mesh.material.opacity = this.opacity\n }\n\n setBrightness(brightness) {\n this.mesh.material.brightness = brightness\n }\n}\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-fisheye-video.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-fisheye-video.vue?vue&type=script&lang=js&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',{attrs:{\"appear\":\"\",\"css\":false},on:{\"before-enter\":_vm.beforeEnter,\"enter\":_vm.enter,\"after-enter\":_vm.afterEnter,\"before-leave\":_vm.beforeLeave,\"leave\":_vm.leave,\"after-leave\":_vm.afterLeave}},[_c('div',{directives:[{name:\"hammer\",rawName:\"v-hammer:tap\",value:(_vm.$_onTap),expression:\"$_onTap\",arg:\"tap\"},{name:\"hammer\",rawName:\"v-hammer:panstart\",value:(_vm.$_onPanStart),expression:\"$_onPanStart\",arg:\"panstart\"},{name:\"hammer\",rawName:\"v-hammer:pan\",value:(_vm.$_onPan),expression:\"$_onPan\",arg:\"pan\"},{name:\"hammer\",rawName:\"v-hammer:panend\",value:(_vm.$_onPanEnd),expression:\"$_onPanEnd\",arg:\"panend\"},{name:\"hammer\",rawName:\"v-hammer:pinchstart\",value:(_vm.$_onPinchStart),expression:\"$_onPinchStart\",arg:\"pinchstart\"},{name:\"hammer\",rawName:\"v-hammer:pinch\",value:(_vm.$_onPinch),expression:\"$_onPinch\",arg:\"pinch\"},{name:\"hammer\",rawName:\"v-hammer:pinchend\",value:(_vm.$_onPinchEnd),expression:\"$_onPinchEnd\",arg:\"pinchend\"}],staticClass:\"item-celestial-sphere-video\",domProps:{\"hammerOptions\":{pan: { direction: 'all', threshold: 5 }, pinch: { enable: true }}}},[_c('div',{staticClass:\"video\"}),_c('video-overlay',{attrs:{\"overlay-video-play-button\":_vm.overlayVideoPlayButton,\"overlay-video-replay-button\":_vm.overlayVideoReplayButton},on:{\"playVideo\":_vm.playVideo}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-fisheye-video.vue?vue&type=style&index=0&id=118beda8&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-fisheye-video.vue?vue&type=style&index=0&id=118beda8&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./item-fisheye-video.vue?vue&type=template&id=118beda8&scoped=true&\"\nimport script from \"./item-fisheye-video.vue?vue&type=script&lang=js&\"\nexport * from \"./item-fisheye-video.vue?vue&type=script&lang=js&\"\nimport style0 from \"./item-fisheye-video.vue?vue&type=style&index=0&id=118beda8&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"118beda8\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-swing-image.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-swing-image.vue?vue&type=script&lang=js&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',{attrs:{\"appear\":\"\",\"css\":false},on:{\"before-enter\":_vm.beforeEnter,\"enter\":_vm.enter,\"after-enter\":_vm.afterEnter,\"before-leave\":_vm.beforeLeave,\"leave\":_vm.leave,\"after-leave\":_vm.afterLeave}},[_c('div',{directives:[{name:\"hammer\",rawName:\"v-hammer:tap\",value:(_vm.onTap),expression:\"onTap\",arg:\"tap\"},{name:\"hammer\",rawName:\"v-hammer:pan\",value:(_vm.onPan),expression:\"onPan\",arg:\"pan\"},{name:\"hammer\",rawName:\"v-hammer:panstart\",value:(_vm.onPanStart),expression:\"onPanStart\",arg:\"panstart\"}],staticClass:\"item-swing-image\",domProps:{\"hammerOptions\":{pan: { direction: 'all', threshold: 0 }}}},[_c('img',{ref:\"image\",style:(_vm.imageStyle),attrs:{\"src\":_vm.itemComponentInfo.img},on:{\"load\":_vm.onLoad,\"copy\":function($event){return _vm.onCopy($event)}}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-swing-image.vue?vue&type=style&index=0&id=069feb4b&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-swing-image.vue?vue&type=style&index=0&id=069feb4b&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./item-swing-image.vue?vue&type=template&id=069feb4b&scoped=true&\"\nimport script from \"./item-swing-image.vue?vue&type=script&lang=js&\"\nexport * from \"./item-swing-image.vue?vue&type=script&lang=js&\"\nimport style0 from \"./item-swing-image.vue?vue&type=style&index=0&id=069feb4b&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"069feb4b\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"hammer\",rawName:\"v-hammer:tap\",value:(_vm.onTap),expression:\"onTap\",arg:\"tap\"}],attrs:{\"id\":\"item-empty\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-empty.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-empty.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-empty.vue?vue&type=style&index=0&id=bc6da550&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-empty.vue?vue&type=style&index=0&id=bc6da550&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./item-empty.vue?vue&type=template&id=bc6da550&scoped=true&\"\nimport script from \"./item-empty.vue?vue&type=script&lang=js&\"\nexport * from \"./item-empty.vue?vue&type=script&lang=js&\"\nimport style0 from \"./item-empty.vue?vue&type=style&index=0&id=bc6da550&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bc6da550\",\n null\n \n)\n\nexport default component.exports","import { StereoCamera, Vector2 } from 'three';\n\nconst StereoEffect = function (renderer) {\n const _stereo = new StereoCamera();\n\n _stereo.aspect = 0.5;\n const size = new Vector2();\n\n this.setEyeSeparation = eyeSep => {\n _stereo.eyeSep = eyeSep;\n };\n\n this.setSize = (width, height) => {\n renderer.setSize(width, height);\n };\n\n this.render = (scene, camera) => {\n scene.updateMatrixWorld();\n if (camera.parent === null) camera.updateMatrixWorld();\n\n _stereo.update(camera);\n\n renderer.getSize(size);\n if (renderer.autoClear) renderer.clear();\n renderer.setScissorTest(true);\n renderer.setScissor(0, 0, size.width / 2, size.height);\n renderer.setViewport(0, 0, size.width / 2, size.height);\n renderer.render(scene, _stereo.cameraL);\n renderer.setScissor(size.width / 2, 0, size.width / 2, size.height);\n renderer.setViewport(size.width / 2, 0, size.width / 2, size.height);\n renderer.render(scene, _stereo.cameraR);\n renderer.setScissorTest(false);\n };\n};\n\nexport { StereoEffect };\n","import * as THREE from 'three'\n\nexport default class {\n RING_IN_RADIUS: number\n RING_OUT_RADIUS: number\n RING_T_SEG: number\n RING_P_SEG: number\n targetEye: THREE.Group\n direction: THREE.Group\n selectBar: THREE.Group\n parent: THREE.Group | null\n\n constructor(store) {\n this.store = store\n\n // 選択バーの大きさ\n this.RING_IN_RADIUS = 4.5\n this.RING_OUT_RADIUS = 5.5\n this.RING_T_SEG = 32\n this.RING_P_SEG = 1\n\n // 十字カーソル\n this.targetEye = this.createTargeEye()\n // 最初は非表示設定\n this.targetEye.visible = false\n\n // TODO:選択バーの設定についた以下の変更予定\n // 現:選択バーの位置をArrowMesh、エアタグポイントに選択する度に位置を計算\n // 変更:各オブジェクトを選択する度に子オブジェクトととする\n // エアタグに使用しているSpriteでは子オブジェクトにしても上手くいかないので、\n // エアタグの位置計算にObject3Dのダミーオブジェクトを設定する予定\n\n // 選択バー方角調整用\n this.direction = new THREE.Group()\n\n // 選択バー\n this.selectBar = this.createSelectBar()\n this.direction.add(this.selectBar)\n\n this.parent = null\n }\n\n dispose(): void {\n this.selectBar.children.forEach(mesh => {\n if (mesh.geometry) mesh.geometry.dispose()\n if (mesh.material) mesh.material.dispose()\n })\n this.targetEye.children.forEach(object => {\n if (object.geometry) object.geometry.dispose()\n if (object.material) object.material.dispose()\n })\n }\n\n private createTargeEye(): THREE.Group {\n const material = new THREE.LineBasicMaterial({ color: 0x2ab7d9 })\n\n const geometry1 = new THREE.BufferGeometry().setFromPoints([\n new THREE.Vector3( -0.5, 0, -5 ),\n new THREE.Vector3( 0.5, 0, -5 )\n ])\n const line1 = new THREE.Line( geometry1, material )\n\n const geometry2 = new THREE.BufferGeometry().setFromPoints([\n new THREE.Vector3( 0, 0.5, -5 ),\n new THREE.Vector3( 0,-0.5, -5 )\n ])\n const line2 = new THREE.Line( geometry2, material )\n\n const targetEye = new THREE.Group()\n targetEye.add(line1)\n targetEye.add(line2)\n return targetEye\n }\n\n private createSelectBar(): THREE.Group {\n const geometry = new THREE.BufferGeometry()\n const material = new THREE.MeshBasicMaterial({ color: 0xfefefe, side: THREE.DoubleSide })\n const selectBar = new THREE.Group()\n selectBar.add(new THREE.Mesh(geometry, material))\n return selectBar\n }\n\n private setPositionSelectBar(pos: THREE.Vector3): void {\n this.selectBar.position.set(pos.x, pos.y, pos.z)\n }\n\n setPositionSelectBarWithArrow(point: THREE.Vector3): void {\n // ArrowMeshの位置を計算(item-base-objectのcreateArrowMeshと同じ)\n const ARROW_SIZE = 5\n const ARROW_DIST_MIN = 10\n const ARROW_DIST_MAX = 70\n const pt = this.store.getters['panorama/vectorToPoint'](point.id)\n const pos = pt.clone().setLength(ARROW_DIST_MIN).add(pt.multiplyScalar(ARROW_DIST_MAX - ARROW_DIST_MIN))\n this.setPositionSelectBar(new THREE.Vector3(pos.x, -5, pos.y))\n this.direction.rotation.y = 0\n }\n\n setPositionSelectBarWithAirtag(airtagSprite: THREE.Sprite): void {\n const pos = airtagSprite.position.clone().normalize().multiplyScalar(28)\n this.setPositionSelectBar(pos)\n this.direction.rotation.y = this.parent.inner.rotation.y\n }\n\n countSelectBar(count: number): void {\n this.selectBar.children.forEach(mesh => {\n if (mesh.geometry) mesh.geometry.dispose()\n const rate = count > 59 ? 0 : count/55\n const geometry = new THREE.RingGeometry(this.RING_IN_RADIUS, this.RING_OUT_RADIUS, this.RING_T_SEG, this.RING_P_SEG, 0, Math.PI*2*rate)\n geometry.rotateY(this.direction.rotation.y)\n geometry.rotateX(Math.PI)\n mesh.geometry = geometry\n })\n }\n\n lookAtCamera(quat: THREE.Quaternion): void {\n // カメラの方向になるように表示\n this.targetEye.setRotationFromQuaternion(quat)\n this.selectBar.setRotationFromQuaternion(quat)\n }\n\n setVisible(visible: boolean): void {\n this.targetEye.visible = visible\n this.selectBar.visible = visible\n }\n\n setParent(parent: null | THREE.Object3D): void {\n if (this.parent) parent.remove(this.direction)\n parent.add(this.direction)\n this.parent = parent\n }\n}\n","import * as THREE from 'three'\nimport { DeviceOrientationControls } from 'three-stdlib/controls/DeviceOrientationControls'\nimport { StereoEffect } from 'three-stdlib/effects/StereoEffect'\n\nimport VrObject from './vr-object'\nimport {\n normalizeDegree,\n normalizeDegree180,\n} from '../../../places/maps/walkthroughs/helpers'\n\nexport default class {\n constructor(store) {\n this.store = store\n this.scene = new THREE.Scene()\n\n this.vrObject = new VrObject(this.store)\n this.scene.add(this.vrObject.targetEye)\n\n this.camera = new THREE.PerspectiveCamera()\n this.camera.rotation.order = 'YXZ'\n this.renderer = new THREE.WebGLRenderer({ antialias: true })\n this.canvas = this.renderer.domElement\n\n this.effect = new StereoEffect(this.renderer)\n this.controlObject = new THREE.Object3D()\n this.controls = new DeviceOrientationControls(this.controlObject)\n this.resetDeviceOrientation()\n\n this.updateSize()\n this.updateFov()\n this.updateCameraRotation()\n\n this.store.watch(\n () => this.store.state.panorama.gyroRotation,\n () => this.resetDeviceOrientation()\n )\n this.store.watch(\n () => this.store.state.panorama.vrMode,\n () => this.switchVrMode()\n )\n this.store.watch(\n () => this.store.state.panorama.size,\n () => this.updateSize(),\n { deep: true }\n )\n this.store.watch(\n () => this.store.state.panorama.fov,\n () => this.updateFov(),\n { deep: true }\n )\n this.store.watch(\n () => this.store.state.panorama.cameraRotation,\n () => this.updateCameraRotation(),\n { deep: true }\n )\n\n this.update()\n }\n\n get gyroRotation() {\n return this.store.state.panorama.gyroRotation\n }\n\n get vrMode() {\n return this.store.state.panorama.vrMode\n }\n\n get autoRotationDirection(){\n return this.store.state.panorama.autoRotationDirection\n }\n\n get cameraRotation() {\n return this.store.state.panorama.cameraRotation\n }\n\n get lookAtItemObject() {\n return this.store.state.panorama.lookAtItemObject\n }\n\n get eyeControlEnable() {\n return this.store.state.panorama.eyeControlEnable\n }\n\n get eyeTrackingState() {\n return this.store.state.panorama.eyeTrackingState\n }\n\n get ignoreAutoRotation() {\n return this.store.state.panorama.ignoreAutoRotation\n }\n\n get panoramaSize() {\n return this.store.state.panorama.size\n }\n\n get panoramaFov() {\n return this.store.state.panorama.fov.value\n }\n\n updateSize() {\n const { width, height } = this.panoramaSize\n this.canvas.width = width\n this.canvas.height = height\n\n this.renderer.setSize(width, height)\n this.renderer.setPixelRatio(window.devicePixelRatio)\n this.effect.setSize(width, height)\n\n const aspect = width / height\n this.camera.aspect = aspect\n this.camera.updateProjectionMatrix()\n }\n\n updateFov() {\n this.camera.fov = this.panoramaFov\n this.camera.updateProjectionMatrix()\n }\n\n updateCameraRotation() {\n this.camera.rotation.x = THREE.MathUtils.degToRad(this.cameraRotation.x)\n this.camera.rotation.y = THREE.MathUtils.degToRad(-this.cameraRotation.y)\n this.camera.updateProjectionMatrix()\n if (this.eyeControlEnable) {\n // 常にカメラ方向に向くように十字カーソルと選択バーにカメラの回転情報を渡す\n this.vrObject.lookAtCamera(this.camera.quaternion.normalize())\n }\n }\n\n detectIntersection () {\n // 選択は処理しない\n if (this.lookAtItemObject.eyeTrackingState == this.eyeTrackingState.selectd ) {\n return\n }\n\n const raycaster = new THREE.Raycaster()\n raycaster.setFromCamera(new THREE.Vector2(0, 0), this.camera)\n\n let isDetect = false\n // raycasterと表示されている矢印およびエアタグの各オブジェクトの交差を検出\n this.scene.children.forEach(itemObject => {\n if (!itemObject.findMoveTagOnRay && !itemObject.findAirTagOnRay) return\n\n // 矢印との交差\n const moveTag = itemObject.findMoveTagOnRay(raycaster)\n if (moveTag) {\n const point = moveTag.point\n if (this.lookAtItemObject.itemObject && point != this.lookAtItemObject.itemObject) {\n return\n }\n isDetect = true\n if (this.lookAtItemObject.counter < 1) {\n this.vrObject.setPositionSelectBarWithArrow(point)\n }\n this.vrObject.countSelectBar(this.lookAtItemObject.counter)\n this.store.dispatch('panorama/onLookAtArrowPoint', { arrowPoint: point })\n return\n }\n\n // エアタグとの交差\n const airTag = itemObject.findAirTagOnRay(raycaster)\n if (airTag) {\n if (this.lookAtItemObject.itemObject && airTag != this.lookAtItemObject.itemObject) {\n return\n }\n\n // ポイントタグのみ検知し、情報タグは検知しない\n // TODO: 将来、情報タグも検知する\n if (airTag.type == 'point') {\n isDetect = true\n if (this.lookAtItemObject.counter < 1) {\n this.vrObject.setPositionSelectBarWithAirtag(airTag.threeObject)\n }\n this.vrObject.countSelectBar(this.lookAtItemObject.counter)\n }\n this.store.dispatch('panorama/onLookAtAirtag', { airtag: airTag })\n return\n }\n })\n\n if (!isDetect && this.lookAtItemObject.counter > 0) {\n this.vrObject.countSelectBar(0)\n this.store.dispatch('panorama/onStopLookAtItemObject')\n }\n }\n\n resetDeviceOrientation() {\n // ジャイロの利用許可後に DeviceOrientationControls 内のイベントリスナを再登録するため、reconnect する。\n this.controls.disconnect()\n this.controls.connect()\n\n // 現在のジャイロの角度を取得するため、更新する\n this.controls.update()\n this.deltaY = THREE.MathUtils.degToRad(-this.cameraRotation.y) - this.controlObject.rotation.y\n }\n\n switchVrMode() {\n this.resetDeviceOrientation()\n this.updateSize()\n // 視線コントール\n this.vrObject.setVisible(this.vrMode && this.eyeControlEnable)\n }\n\n update() {\n if (this.vrMode) {\n this.updateVrMode()\n } else {\n this.updateNonVrMode()\n }\n requestAnimationFrame(this.update.bind(this))\n }\n\n updateVrMode() {\n if (!this.ignoreAutoRotation) {\n this.controls.update()\n const x = THREE.MathUtils.radToDeg(this.controlObject.rotation.x)\n const y = THREE.MathUtils.radToDeg(-(this.controlObject.rotation.y + this.deltaY))\n this.store.dispatch('panorama/changeCameraRotation', { x, y })\n }\n this.effect.render(this.scene, this.camera)\n if (this.eyeControlEnable) {\n // 交差検知:視線と交差するオブジェクトを検知する\n this.detectIntersection()\n }\n }\n\n updateNonVrMode() {\n if (this.gyroRotation) {\n this.controls.update()\n const x = THREE.MathUtils.radToDeg(this.controlObject.rotation.x)\n const y = THREE.MathUtils.radToDeg(-(this.controlObject.rotation.y + this.deltaY))\n this.store.dispatch('panorama/changeCameraRotation', { x, y })\n } else if (\n this.store.getters['panorama/autoRotationOn'] &&\n !this.ignoreAutoRotation\n ) {\n let rotationSpeedX = 0\n let rotationSpeedY = 0\n const speed = this.store.getters['panorama/cameraSpeed']\n switch (this.store.getters['panorama/cameraPan']) {\n case 'up':\n rotationSpeedX = speed\n break\n case 'down':\n rotationSpeedX = -speed\n break\n case 'left':\n rotationSpeedY = -speed\n break\n case 'right':\n rotationSpeedY = speed\n break\n }\n\n const FPS = 60\n const factor = (3 / FPS) * this.autoRotationDirection\n const x = this.cameraRotation.x + rotationSpeedX * factor\n const y = this.cameraRotation.y + rotationSpeedY * factor\n\n const range = this.store.getters['panorama/cameraRotationRange']\n if (range) {\n const pan = this.store.getters['panorama/cameraPan']\n const rotation =\n this.store.getters['panorama/pointDirection'] -\n this.store.getters['panorama/mapDirection']\n if (pan == 'left' || pan == 'right') {\n const cy = normalizeDegree180(y - range.rotation)\n if (\n cy < range.yMin - range.rotation ||\n cy > range.yMax - range.rotation\n ) {\n this.store.commit('panorama/invertAutoRotationDirection')\n }\n } else if (pan == 'up' || pan == 'down') {\n if (x < range.xMin || x > range.xMax) {\n this.store.commit('panorama/invertAutoRotationDirection')\n }\n }\n } else if (x < -90 || x > 90) {\n this.store.commit('panorama/invertAutoRotationDirection')\n }\n this.store.dispatch('panorama/changeCameraRotation', { x, y })\n }\n this.renderer.render(this.scene, this.camera)\n }\n\n addItemObject(itemObject) {\n this.scene.add(itemObject)\n this.vrObject.setParent(itemObject)\n }\n\n removeItemObject(itemObject) {\n this.scene.remove(itemObject)\n this.store.dispatch('panorama/onStopLookAtItemObject')\n this.vrObject.countSelectBar(0)\n }\n\n createRaycaster(x, y) {\n const { width, height } = this.panoramaSize\n x = (x / width) * 2 - 1\n y = -(y / height) * 2 + 1\n const vector = new THREE.Vector2(x, y)\n\n const raycaster = new THREE.Raycaster()\n raycaster.setFromCamera(vector, this.camera)\n return raycaster\n }\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"item-view\"}},[_c('div',{style:(_vm.enableCssFilter ? _vm.style : ''),attrs:{\"id\":\"renderer\"}}),(_vm.itemComponentInfo.id)?_c(_vm.itemComponent,{key:_vm.itemComponentInfo.key,tag:\"component\",attrs:{\"three-context\":_vm.threeContext},on:{\"tap\":function($event){return _vm.$emit('tap', $event)}}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-view.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-view.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-view.vue?vue&type=style&index=0&id=6af92e8c&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-view.vue?vue&type=style&index=0&id=6af92e8c&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./item-view.vue?vue&type=template&id=6af92e8c&scoped=true&\"\nimport script from \"./item-view.vue?vue&type=script&lang=js&\"\nexport * from \"./item-view.vue?vue&type=script&lang=js&\"\nimport style0 from \"./item-view.vue?vue&type=style&index=0&id=6af92e8c&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6af92e8c\",\n null\n \n)\n\nexport default component.exports","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./telop.vue?vue&type=style&index=0&id=d3a937a2&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./telop.vue?vue&type=style&index=0&id=d3a937a2&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./telop.vue?vue&type=template&id=d3a937a2&scoped=true&\"\nimport script from \"./telop.vue?vue&type=script&lang=js&\"\nexport * from \"./telop.vue?vue&type=script&lang=js&\"\nimport style0 from \"./telop.vue?vue&type=style&index=0&id=d3a937a2&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d3a937a2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"telop\"},[_c('div',{staticClass:\"text\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.excuseText)?_c('div',{staticClass:\"excuse-text\",domProps:{\"innerHTML\":_vm._s(_vm.excuseText)}}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./excuse-text.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./excuse-text.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./excuse-text.vue?vue&type=style&index=0&id=5e49ba12&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./excuse-text.vue?vue&type=style&index=0&id=5e49ba12&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./excuse-text.vue?vue&type=template&id=5e49ba12&scoped=true&\"\nimport script from \"./excuse-text.vue?vue&type=script&lang=js&\"\nexport * from \"./excuse-text.vue?vue&type=script&lang=js&\"\nimport style0 from \"./excuse-text.vue?vue&type=style&index=0&id=5e49ba12&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5e49ba12\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./scrollable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./scrollable.vue?vue&type=script&lang=js&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"scrollable\",on:{\"scroll\":_vm.onScroll}},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./scrollable.vue?vue&type=style&index=0&id=664e9c2e&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./scrollable.vue?vue&type=style&index=0&id=664e9c2e&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./scrollable.vue?vue&type=template&id=664e9c2e&scoped=true&\"\nimport script from \"./scrollable.vue?vue&type=script&lang=js&\"\nexport * from \"./scrollable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./scrollable.vue?vue&type=style&index=0&id=664e9c2e&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"664e9c2e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',[_c('div',{staticClass:\"point-thumbnails\"},[_c('div',[_c('div',{staticClass:\"title\"},[_vm._v(\"撮影場所の移動\")])]),_c('scrollable',{ref:\"scrollable\",staticClass:\"thumbnails\",on:{\"update:isLeftScrollable\":function($event){_vm.isLeftScrollable = $event},\"update:isRightScrollable\":function($event){_vm.isRightScrollable = $event}}},_vm._l((_vm.pointThumbnails),function(thumbnail){return _c('div',{key:thumbnail.pointId,staticClass:\"thumbnail\"},[_c('div',{staticClass:\"image\",class:{ active: thumbnail.active },style:({ borderColor: _vm.thumbnailBorderColor(thumbnail) }),on:{\"click\":function($event){_vm.hideItemThumbnails(); _vm.changePoint({ pointId: thumbnail.pointId })}}},[_c('img',{staticStyle:{\"pointer-events\":\"none\"},attrs:{\"src\":thumbnail.imageUrl},on:{\"copy\":function($event){return _vm.onCopy($event)}}})]),_c('div',{staticClass:\"caption\"},[_vm._v(_vm._s(thumbnail.caption))])])}),0),_c('transition-group',{attrs:{\"name\":\"fade\"}},[(_vm.isLeftScrollable)?_c('div',{key:\"left\",staticClass:\"scroll-left\",on:{\"click\":_vm.onScrollLeft}},[_vm._v(\"<\")]):_vm._e(),(_vm.isRightScrollable)?_c('div',{key:\"right\",staticClass:\"scroll-right\",on:{\"click\":_vm.onScrollRight}},[_vm._v(\">\")]):_vm._e()])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./point-thumbnails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./point-thumbnails.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./point-thumbnails.vue?vue&type=style&index=0&id=3f18314c&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./point-thumbnails.vue?vue&type=style&index=0&id=3f18314c&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./point-thumbnails.vue?vue&type=template&id=3f18314c&scoped=true&\"\nimport script from \"./point-thumbnails.vue?vue&type=script&lang=js&\"\nexport * from \"./point-thumbnails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./point-thumbnails.vue?vue&type=style&index=0&id=3f18314c&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3f18314c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',[_c('div',{staticClass:\"item-thumbnails\"},[_c('div',[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.pointName)+\"のシーンを選択\")])]),_c('scrollable',{ref:\"scrollable\",staticClass:\"thumbnails\",on:{\"update:isLeftScrollable\":function($event){_vm.isLeftScrollable = $event},\"update:isRightScrollable\":function($event){_vm.isRightScrollable = $event}}},_vm._l((_vm.itemThumbnails),function(thumbnail){return _c('div',{key:thumbnail.itemId,staticClass:\"thumbnail\"},[_c('div',{staticClass:\"image\",class:{ active: thumbnail.active },style:({ borderColor: _vm.thumbnailBorderColor(thumbnail) }),on:{\"click\":function($event){return _vm.changeItem({ pointId: thumbnail.pointId, itemId: thumbnail.itemId })}}},[_c('img',{staticStyle:{\"pointer-events\":\"none\"},attrs:{\"src\":thumbnail.imageUrl},on:{\"copy\":function($event){return _vm.onCopy($event)}}})]),_c('div',{staticClass:\"caption\"},[_vm._v(_vm._s(thumbnail.caption))])])}),0),_c('transition-group',{attrs:{\"name\":\"fade\"}},[(_vm.isLeftScrollable)?_c('div',{key:\"left\",staticClass:\"scroll-left\",on:{\"click\":_vm.onScrollLeft}},[_vm._v(\"<\")]):_vm._e(),(_vm.isRightScrollable)?_c('div',{key:\"right\",staticClass:\"scroll-right\",on:{\"click\":_vm.onScrollRight}},[_vm._v(\">\")]):_vm._e()])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-thumbnails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-thumbnails.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-thumbnails.vue?vue&type=style&index=0&id=5a31c192&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./item-thumbnails.vue?vue&type=style&index=0&id=5a31c192&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./item-thumbnails.vue?vue&type=template&id=5a31c192&scoped=true&\"\nimport script from \"./item-thumbnails.vue?vue&type=script&lang=js&\"\nexport * from \"./item-thumbnails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./item-thumbnails.vue?vue&type=style&index=0&id=5a31c192&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5a31c192\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"button\",on:{\"click\":function($event){return _vm.$emit('click')}}},[_c('div',{staticClass:\"icon\",style:(_vm.iconStyle)},[_c('svg-colored-icon',{attrs:{\"src\":_vm.icon,\"color\":_vm.theme.iconColor}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./button-icon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./button-icon.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./button-icon.vue?vue&type=style&index=0&id=0f763ef4&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./button-icon.vue?vue&type=style&index=0&id=0f763ef4&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./button-icon.vue?vue&type=template&id=0f763ef4&scoped=true&\"\nimport script from \"./button-icon.vue?vue&type=script&lang=js&\"\nexport * from \"./button-icon.vue?vue&type=script&lang=js&\"\nimport style0 from \"./button-icon.vue?vue&type=style&index=0&id=0f763ef4&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0f763ef4\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./title-bar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./title-bar.vue?vue&type=script&lang=js&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"title-bar\",style:({ backgroundColor: _vm.theme.color2 })},[(_vm.backButtonVisible)?_c('button-icon',{staticClass:\"button-left\",attrs:{\"icon\":_vm.theme.icons.back},on:{\"click\":_vm.backPrevPoint}}):_vm._e(),_c('h1',{style:({ color: _vm.theme.color1 })},[_vm._v(_vm._s(_vm.title))]),[(_vm.settings.imageQualityModal)?_c('button-icon',{staticClass:\"button-right\",attrs:{\"icon\":_vm.theme.icons.more},on:{\"click\":_vm.toggleMoreMenu}}):_vm._e(),(false)?_c('button-icon',{staticClass:\"button-right\",attrs:{\"icon\":_vm.theme.icons.info},on:{\"click\":_vm.toggleInfoModal}}):_vm._e()]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./title-bar.vue?vue&type=style&index=0&id=17f57eb4&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./title-bar.vue?vue&type=style&index=0&id=17f57eb4&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./title-bar.vue?vue&type=template&id=17f57eb4&scoped=true&\"\nimport script from \"./title-bar.vue?vue&type=script&lang=js&\"\nexport * from \"./title-bar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./title-bar.vue?vue&type=style&index=0&id=17f57eb4&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17f57eb4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.externalLink)?_c('a',{staticClass:\"external-link\",attrs:{\"href\":_vm.externalLink.url,\"target\":\"_blank\"}},[_c('div',[_vm._v(_vm._s(_vm.externalLink.name))])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./external-link.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./external-link.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./external-link.vue?vue&type=style&index=0&id=78152270&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./external-link.vue?vue&type=style&index=0&id=78152270&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./external-link.vue?vue&type=template&id=78152270&scoped=true&\"\nimport script from \"./external-link.vue?vue&type=script&lang=js&\"\nexport * from \"./external-link.vue?vue&type=script&lang=js&\"\nimport style0 from \"./external-link.vue?vue&type=style&index=0&id=78152270&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"78152270\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"bottom-bar\",style:({ backgroundColor: _vm.theme.color2 })},[_c('button-icon',{staticClass:\"button-left\",attrs:{\"icon\":_vm.theme.icons.pointThumbnails,\"active\":_vm.displayingThumbnailList == 'Points'},on:{\"click\":_vm.togglePointThumbnails}}),(_vm.itemThumbnailsVisible)?_c('button-icon',{staticClass:\"button-left\",attrs:{\"icon\":_vm.theme.icons.itemThumbnails,\"active\":_vm.displayingThumbnailList == 'Items'},on:{\"click\":_vm.toggleItemThumbnails}}):_vm._e(),_c('external-link'),_c('button-icon',{staticClass:\"button-right\",attrs:{\"icon\":_vm.theme.icons.controlsHide},on:{\"click\":function($event){return _vm.$parent.$emit('hideControls')}}}),(_vm.fullscreenEnabled)?[(!_vm.fullscreen)?_c('button-icon',{staticClass:\"button-right\",attrs:{\"icon\":_vm.theme.icons.fullscreenOn},on:{\"click\":_vm.toggleFullscreen}}):_vm._e(),(_vm.fullscreen)?_c('button-icon',{staticClass:\"button-right\",attrs:{\"icon\":_vm.theme.icons.fullscreenOff},on:{\"click\":_vm.toggleFullscreen}}):_vm._e()]:(_vm.parentExists && _vm.locationHashParams['panoramasjs'])?[_c('button-icon',{staticClass:\"button-right\",attrs:{\"icon\":_vm.fullscreen ? _vm.theme.icons.fullscreenOff : _vm.theme.icons.fullscreenOn},on:{\"click\":_vm.toggleMaximize}})]:_vm._e(),(_vm.vrModeAvailable)?_c('button-icon',{staticClass:\"button-right\",attrs:{\"icon\":_vm.theme.icons.vrEffect},on:{\"click\":_vm.startVrMode}}):_vm._e(),(_vm.panoramaGyroRotationAvailable)?_c('button-icon',{staticClass:\"button-right\",attrs:{\"icon\":_vm.theme.icons.gyroRotation,\"active\":_vm.gyroRotationOn},on:{\"click\":_vm.startGyroMode}}):_vm._e(),(_vm.autoRotationVisible)?_c('button-icon',{staticClass:\"button-right\",attrs:{\"icon\":_vm.theme.icons.autoRotation,\"active\":_vm.autoRotationOn,\"disabled\":_vm.gyroRotationOn},on:{\"click\":function($event){_vm.gyroRotationOn ? null : _vm.setAutoRotation(!_vm.autoRotationOn)}}}):_vm._e(),(_vm.videoControlVisible)?_c('button-icon',{staticClass:\"button-right\",attrs:{\"icon\":_vm.theme.icons.videoControls},on:{\"click\":_vm.toggleVideoControls}}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./bottom-bar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./bottom-bar.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./bottom-bar.vue?vue&type=style&index=0&id=09e6a96c&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./bottom-bar.vue?vue&type=style&index=0&id=09e6a96c&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./bottom-bar.vue?vue&type=template&id=09e6a96c&scoped=true&\"\nimport script from \"./bottom-bar.vue?vue&type=script&lang=js&\"\nexport * from \"./bottom-bar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./bottom-bar.vue?vue&type=style&index=0&id=09e6a96c&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"09e6a96c\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./slider.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./slider.vue?vue&type=script&lang=js&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"slider\",class:_vm.vertical ? 'vertical' : 'horizontal'},[_c('div',{staticClass:\"track-outer\"},[_c('div',{ref:\"track\",staticClass:\"track\"},[_c('div',{directives:[{name:\"hammer\",rawName:\"v-hammer:pan\",value:(_vm.onPan),expression:\"onPan\",arg:\"pan\"},{name:\"hammer\",rawName:\"v-hammer:panstart\",value:(_vm.onPanStart),expression:\"onPanStart\",arg:\"panstart\"}],staticClass:\"thumb\",style:(_vm.thumbStyle),domProps:{\"hammerOptions\":{pan: { direction: 'all', threshold: 0 }}}})])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./slider.vue?vue&type=style&index=0&id=5bf7fa6a&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./slider.vue?vue&type=style&index=0&id=5bf7fa6a&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./slider.vue?vue&type=template&id=5bf7fa6a&scoped=true&\"\nimport script from \"./slider.vue?vue&type=script&lang=js&\"\nexport * from \"./slider.vue?vue&type=script&lang=js&\"\nimport style0 from \"./slider.vue?vue&type=style&index=0&id=5bf7fa6a&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bf7fa6a\",\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-zoom\",style:({ bottom: _vm.panoramaZoomBottom + 'px' })},[_c('div',{staticClass:\"label\"},[_vm._v(\"﹢\")]),_c('slider',{attrs:{\"vertical\":true,\"min\":_vm.fov.min,\"max\":_vm.fov.max},model:{value:(_vm.fovValue),callback:function ($$v) {_vm.fovValue=$$v},expression:\"fovValue\"}}),_c('div',{staticClass:\"label\"},[_vm._v(\"﹣\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./panorama-zoom.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./panorama-zoom.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./panorama-zoom.vue?vue&type=style&index=0&id=dd6e6d88&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./panorama-zoom.vue?vue&type=style&index=0&id=dd6e6d88&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./panorama-zoom.vue?vue&type=template&id=dd6e6d88&scoped=true&\"\nimport script from \"./panorama-zoom.vue?vue&type=script&lang=js&\"\nexport * from \"./panorama-zoom.vue?vue&type=script&lang=js&\"\nimport style0 from \"./panorama-zoom.vue?vue&type=style&index=0&id=dd6e6d88&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dd6e6d88\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map-svg.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map-svg.vue?vue&type=script&lang=js&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('svg',{directives:[{name:\"hammer\",rawName:\"v-hammer:tap\",value:(_vm.onTap),expression:\"onTap\",arg:\"tap\"},{name:\"hammer\",rawName:\"v-hammer:pan\",value:(_vm.onPan),expression:\"onPan\",arg:\"pan\"}],attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":`0 0 ${_vm.size} ${_vm.size}`},domProps:{\"hammerOptions\":{pan: { threshold: 0 }}},on:{\"wheel\":function($event){$event.preventDefault();return _vm.onWheel.apply(null, arguments)}}},[_c('g',{attrs:{\"opacity\":_vm.opacity}},[_c('rect',{attrs:{\"width\":_vm.size,\"height\":_vm.size,\"fill\":\"#ccc\"}}),_c('image',{attrs:{\"x\":_vm.imageX,\"y\":_vm.imageY,\"width\":_vm.imageWidth,\"height\":_vm.imageHeight,\"xlink:href\":_vm.mapImageUrl}})]),(_vm.isRadarVisible)?_c('path',{attrs:{\"d\":_vm.raderShape,\"fill\":\"red\",\"opacity\":\"0.3\"}}):_vm._e(),(_vm.showWalkThrough)?[_vm._l((_vm.mapLines),function(line){return (_vm.settings.drawLine)?_c('line',{key:line.join('-'),attrs:{\"x1\":_vm.pointX(_vm.pointById(line[0])),\"y1\":_vm.pointY(_vm.pointById(line[0])),\"x2\":_vm.pointX(_vm.pointById(line[1])),\"y2\":_vm.pointY(_vm.pointById(line[1])),\"stroke-width\":1.5 * _vm.zoomScale,\"stroke-dasharray\":`${1 * _vm.zoomScale}, ${3 * _vm.zoomScale}`}}):_vm._e()}),_vm._l((_vm.mapPoints),function(point){return _c('circle',{key:point.pointId,attrs:{\"cx\":_vm.pointX(point),\"cy\":_vm.pointY(point),\"r\":3 * _vm.zoomScale,\"fill\":\"#f5f5f5\",\"stroke\":\"#2AB7D9\",\"stroke-width\":1.5 * _vm.zoomScale}})}),_vm._l((_vm.mapPoints),function(point){return (!point.active)?_c('circle',{key:`clickable-${point.pointId}`,attrs:{\"cx\":_vm.pointX(point),\"cy\":_vm.pointY(point),\"r\":9 * _vm.zoomScale,\"fill-opacity\":0},on:{\"click\":function($event){return _vm.changePoint({ pointId: point.pointId })}}}):_vm._e()})]:_vm._e(),(_vm.currentPosition.visible)?_c('circle',{attrs:{\"cx\":_vm.pointX(_vm.currentPosition),\"cy\":_vm.pointY(_vm.currentPosition),\"r\":3 * _vm.zoomScale,\"fill\":\"#FF7373\",\"stroke\":\"#FF7373\",\"stroke-width\":1.5 * _vm.zoomScale}}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map-svg.vue?vue&type=style&index=0&id=586eea86&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map-svg.vue?vue&type=style&index=0&id=586eea86&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./map-svg.vue?vue&type=template&id=586eea86&scoped=true&\"\nimport script from \"./map-svg.vue?vue&type=script&lang=js&\"\nexport * from \"./map-svg.vue?vue&type=script&lang=js&\"\nimport style0 from \"./map-svg.vue?vue&type=style&index=0&id=586eea86&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"586eea86\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map-small.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map-small.vue?vue&type=script&lang=js&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"map-small\"},[_c('map-svg',{attrs:{\"size\":60,\"opacity\":0.5,\"showWalkThrough\":false},on:{\"tap\":function($event){return _vm.$emit('small', false)}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./map-small.vue?vue&type=template&id=cae0c530&\"\nimport script from \"./map-small.vue?vue&type=script&lang=js&\"\nexport * from \"./map-small.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/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:\"map-large\"},[_c('map-svg',{ref:\"mapSvg\",attrs:{\"size\":180,\"opacity\":1,\"showWalkThrough\":true},on:{\"zoom\":_vm.onZoom}}),(_vm.allMaps.length > 1)?_c('div',{staticClass:\"map-name\"},_vm._l((_vm.allMaps),function(map,i){return _c('button',{class:_vm.currentMap.id === map.id ? 'active' : null,on:{\"click\":function($event){return _vm.changePoint({ pointId: map.points[0].id })}}},[_vm._v(\" \"+_vm._s(map.name || (i + 1))+\" \")])}),0):_vm._e(),_c('div',{staticClass:\"bottom-bar\"},[_c('div',{staticClass:\"map-zoom\"},[_c('div',{staticClass:\"label\"},[_vm._v(\"﹣\")]),_c('slider',{attrs:{\"min\":1,\"max\":5},model:{value:(_vm.zoomScale),callback:function ($$v) {_vm.zoomScale=$$v},expression:\"zoomScale\"}}),_c('div',{staticClass:\"label\"},[_vm._v(\"﹢\")])],1),_c('div',{staticClass:\"minimize\",on:{\"click\":function($event){return _vm.$emit('small', true)}}},[_c('img',{attrs:{\"src\":_vm.theme.icons.minimize}})])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map-large.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map-large.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map-large.vue?vue&type=style&index=0&id=42a450c7&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map-large.vue?vue&type=style&index=0&id=42a450c7&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./map-large.vue?vue&type=template&id=42a450c7&scoped=true&\"\nimport script from \"./map-large.vue?vue&type=script&lang=js&\"\nexport * from \"./map-large.vue?vue&type=script&lang=js&\"\nimport style0 from \"./map-large.vue?vue&type=style&index=0&id=42a450c7&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"42a450c7\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.mapImageUrl)?_c('transition',[_c('keep-alive',[(_vm.small)?_c('map-small',{staticClass:\"map-view\",on:{\"small\":function($event){_vm.small = $event}}}):_vm._e(),(!_vm.small)?_c('map-large',{staticClass:\"map-view\",on:{\"small\":function($event){_vm.small = $event}}}):_vm._e()],1)],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map-view.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map-view.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map-view.vue?vue&type=style&index=0&id=6a80d33b&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map-view.vue?vue&type=style&index=0&id=6a80d33b&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./map-view.vue?vue&type=template&id=6a80d33b&scoped=true&\"\nimport script from \"./map-view.vue?vue&type=script&lang=js&\"\nexport * from \"./map-view.vue?vue&type=script&lang=js&\"\nimport style0 from \"./map-view.vue?vue&type=style&index=0&id=6a80d33b&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6a80d33b\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"video-volume-slider\"},[_c('div',{staticClass:\"slider-wrapper\"},[_c('div',{staticClass:\"label\"},[_vm._v(\"﹢\")]),_c('slider',{attrs:{\"vertical\":true,\"min\":_vm.videoVolume.min,\"max\":_vm.videoVolume.max},model:{value:(_vm.videoVolumeValue),callback:function ($$v) {_vm.videoVolumeValue=$$v},expression:\"videoVolumeValue\"}}),_c('div',{staticClass:\"label\"},[_vm._v(\"﹣\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./video-volume-slider.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./video-volume-slider.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./video-volume-slider.vue?vue&type=style&index=0&id=21a75756&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./video-volume-slider.vue?vue&type=style&index=0&id=21a75756&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./video-volume-slider.vue?vue&type=template&id=21a75756&scoped=true&\"\nimport script from \"./video-volume-slider.vue?vue&type=script&lang=js&\"\nexport * from \"./video-volume-slider.vue?vue&type=script&lang=js&\"\nimport style0 from \"./video-volume-slider.vue?vue&type=style&index=0&id=21a75756&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"21a75756\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',[_c('div',{staticClass:\"video-panel\",style:({ backgroundColor: _vm.theme.color2 }),on:{\"toushstart\":_vm.touch,\"touchmove\":_vm.touch,\"touchend\":_vm.touch,\"mousedown\":_vm.touch,\"mousemove\":_vm.touch,\"mouseup\":_vm.touch}},[(!_vm.videoPlaying)?_c('button-icon',{staticClass:\"button-left\",attrs:{\"icon\":_vm.theme.icons.videoPlay},on:{\"click\":function($event){return _vm.playVideo()}}}):_vm._e(),(_vm.videoPlaying)?_c('button-icon',{staticClass:\"button-left\",attrs:{\"icon\":_vm.theme.icons.videoPause},on:{\"click\":function($event){return _vm.pauseVideo()}}}):_vm._e(),_c('button-icon',{staticClass:\"button-left\",attrs:{\"icon\":_vm.theme.icons.videoBwd5},on:{\"click\":function($event){return _vm.skipVideo(-5)}}}),_c('button-icon',{staticClass:\"button-left\",attrs:{\"icon\":_vm.theme.icons.videoFwd5},on:{\"click\":function($event){return _vm.skipVideo(5)}}}),_c('button-icon',{staticClass:\"button-right close\",attrs:{\"icon\":_vm.theme.icons.close},on:{\"click\":_vm.toggleVideoControls}}),_c('div',{staticClass:\"button button-right speed\",style:({ color: _vm.theme.color1 }),on:{\"click\":_vm.toggleVideoSpeedMenu}},[_vm._v(\" ×\"+_vm._s(_vm.videoSpeed)+\" \")]),_c('div',{staticClass:\"button-right volume\",on:{\"mouseover\":_vm.mouseOverVolume,\"mouseleave\":_vm.mouseLeaveVolume}},[_c('button-icon',{attrs:{\"icon\":_vm.videoMuted ? _vm.theme.icons.volumeOff : _vm.theme.icons.volumeUp},on:{\"click\":_vm.toggleMute}}),(_vm.videoVolumeSlideActive)?_c('video-volume-slider'):_vm._e()],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./video-controls.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./video-controls.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./video-controls.vue?vue&type=style&index=0&id=11b72186&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./video-controls.vue?vue&type=style&index=0&id=11b72186&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./video-controls.vue?vue&type=template&id=11b72186&scoped=true&\"\nimport script from \"./video-controls.vue?vue&type=script&lang=js&\"\nexport * from \"./video-controls.vue?vue&type=script&lang=js&\"\nimport style0 from \"./video-controls.vue?vue&type=style&index=0&id=11b72186&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"11b72186\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',[_c('div',{staticClass:\"backdrop\",on:{\"touchstart\":function($event){if($event.target !== $event.currentTarget)return null;$event.preventDefault();$event.stopPropagation();return _vm.toggleVideoSpeedMenu.apply(null, arguments)},\"mousedown\":function($event){if($event.target !== $event.currentTarget)return null;$event.preventDefault();$event.stopPropagation();return _vm.toggleVideoSpeedMenu.apply(null, arguments)}}},[_c('div',{staticClass:\"menu\",style:({ height: `${36 * _vm.speeds.length}px`})},_vm._l((_vm.speeds),function(speed){return _c('div',{key:speed,staticClass:\"menu-item\",on:{\"click\":function($event){return _vm.selectMenuItem(speed)}}},[_c('span',[_vm._v(\"×\"+_vm._s(speed))])])}),0)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./video-speed-menu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./video-speed-menu.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./video-speed-menu.vue?vue&type=style&index=0&id=4f5d6a68&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./video-speed-menu.vue?vue&type=style&index=0&id=4f5d6a68&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./video-speed-menu.vue?vue&type=template&id=4f5d6a68&scoped=true&\"\nimport script from \"./video-speed-menu.vue?vue&type=script&lang=js&\"\nexport * from \"./video-speed-menu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./video-speed-menu.vue?vue&type=style&index=0&id=4f5d6a68&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4f5d6a68\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./more-menu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./more-menu.vue?vue&type=script&lang=js&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',[_c('div',{staticClass:\"backdrop\",on:{\"touchstart\":function($event){if($event.target !== $event.currentTarget)return null;$event.preventDefault();$event.stopPropagation();return _vm.toggleMoreMenu.apply(null, arguments)},\"mousedown\":function($event){if($event.target !== $event.currentTarget)return null;$event.preventDefault();$event.stopPropagation();return _vm.toggleMoreMenu.apply(null, arguments)}}},[_c('div',{staticClass:\"menu\"},[(!_vm.isVideoHls)?_c('div',{staticClass:\"menu-item\",on:{\"click\":_vm.showImageQualityModal}},[_c('span',[_vm._v(\"画質設定\")])]):_vm._e(),(_vm.isVideoHls)?_c('div',{staticClass:\"menu-item\"},[_c('span',[_vm._v(\"画質\")]),_vm._l((_vm.hlsLevels),function(label,index){return _c('div',{key:index},[_c('label',[_c('input',{attrs:{\"type\":\"radio\"},domProps:{\"checked\":_vm.hlsLevel == index},on:{\"click\":function($event){return _vm.changeLevel(index)}}}),_vm._v(\" \"+_vm._s(_vm.LEVELS[label]))])])}),_c('div',[_c('label',[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.hlsAutomaticVideoLevel},on:{\"click\":_vm.toggleHlsAutomaticVideoLevel}}),_vm._v(\" 自動\")])])],2):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./more-menu.vue?vue&type=style&index=0&id=5e116b40&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./more-menu.vue?vue&type=style&index=0&id=5e116b40&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./more-menu.vue?vue&type=template&id=5e116b40&scoped=true&\"\nimport script from \"./more-menu.vue?vue&type=script&lang=js&\"\nexport * from \"./more-menu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./more-menu.vue?vue&type=style&index=0&id=5e116b40&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5e116b40\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',[_c('div',{staticClass:\"backdrop\",on:{\"touchstart\":function($event){if($event.target !== $event.currentTarget)return null;$event.preventDefault();$event.stopPropagation();return _vm.toggleInfoModal.apply(null, arguments)},\"mousedown\":function($event){if($event.target !== $event.currentTarget)return null;$event.preventDefault();$event.stopPropagation();return _vm.toggleInfoModal.apply(null, arguments)}}},[_c('div',{staticClass:\"info-modal\"},[_c('div',{staticClass:\"header\"},[_c('span',[_vm._v(\"物件情報\")]),_c('div',{staticClass:\"close\",on:{\"click\":_vm.toggleInfoModal}},[_vm._v(\"×\")])]),_c('div',{staticClass:\"content-wrapper\"},[_c('div',{staticClass:\"content\"},[_vm._v(\" 住所とか賃料とかいろいろ \"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・ \"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・ \"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・ \"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・\"),_c('br'),_vm._v(\"・ \")])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./info-modal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./info-modal.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./info-modal.vue?vue&type=style&index=0&id=187ee332&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./info-modal.vue?vue&type=style&index=0&id=187ee332&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./info-modal.vue?vue&type=template&id=187ee332&scoped=true&\"\nimport script from \"./info-modal.vue?vue&type=script&lang=js&\"\nexport * from \"./info-modal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./info-modal.vue?vue&type=style&index=0&id=187ee332&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"187ee332\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',[_c('div',{staticClass:\"backdrop\",on:{\"touchstart\":function($event){if($event.target !== $event.currentTarget)return null;$event.preventDefault();$event.stopPropagation();return _vm.toggleImageQualityModal.apply(null, arguments)},\"mousedown\":function($event){if($event.target !== $event.currentTarget)return null;$event.preventDefault();$event.stopPropagation();return _vm.toggleImageQualityModal.apply(null, arguments)}}},[_c('div',{staticClass:\"image-quality-modal\"},[_c('div',{staticClass:\"header\"},[_c('span',[_vm._v(\"画質設定\")]),_c('div',{staticClass:\"close\",on:{\"click\":_vm.toggleImageQualityModal}},[_vm._v(\"×\")])]),_c('div',{staticClass:\"content-wrapper\"},[_c('div',{staticClass:\"content\"},[_c('label',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.imageQuality),expression:\"imageQuality\"}],attrs:{\"type\":\"radio\",\"value\":\"low\"},domProps:{\"checked\":_vm._q(_vm.imageQuality,\"low\")},on:{\"change\":function($event){_vm.imageQuality=\"low\"}}}),_vm._v(\"低\")]),_c('br'),_c('label',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.imageQuality),expression:\"imageQuality\"}],attrs:{\"type\":\"radio\",\"value\":\"middle\"},domProps:{\"checked\":_vm._q(_vm.imageQuality,\"middle\")},on:{\"change\":function($event){_vm.imageQuality=\"middle\"}}}),_vm._v(\"中\")]),_c('br'),_c('label',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.imageQuality),expression:\"imageQuality\"}],attrs:{\"type\":\"radio\",\"value\":\"high\"},domProps:{\"checked\":_vm._q(_vm.imageQuality,\"high\")},on:{\"change\":function($event){_vm.imageQuality=\"high\"}}}),_vm._v(\"高\")]),_c('br'),_c('label',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.imageQuality),expression:\"imageQuality\"}],attrs:{\"type\":\"radio\",\"value\":\"original\"},domProps:{\"checked\":_vm._q(_vm.imageQuality,\"original\")},on:{\"change\":function($event){_vm.imageQuality=\"original\"}}}),_vm._v(\"オリジナル\")])])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./image-quality-modal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./image-quality-modal.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./image-quality-modal.vue?vue&type=style&index=0&id=668599b8&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./image-quality-modal.vue?vue&type=style&index=0&id=668599b8&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./image-quality-modal.vue?vue&type=template&id=668599b8&scoped=true&\"\nimport script from \"./image-quality-modal.vue?vue&type=script&lang=js&\"\nexport * from \"./image-quality-modal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./image-quality-modal.vue?vue&type=style&index=0&id=668599b8&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"668599b8\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./airtag-image.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./airtag-image.vue?vue&type=script&lang=js&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"information-image-box\"},[_c('img',{directives:[{name:\"hammer\",rawName:\"v-hammer:panstart\",value:(_vm.onPanStart),expression:\"onPanStart\",arg:\"panstart\"},{name:\"hammer\",rawName:\"v-hammer:pan\",value:(_vm.onPan),expression:\"onPan\",arg:\"pan\"},{name:\"hammer\",rawName:\"v-hammer:panend\",value:(_vm.onPanEnd),expression:\"onPanEnd\",arg:\"panend\"},{name:\"hammer\",rawName:\"v-hammer:pinchstart\",value:(_vm.onPinchStart),expression:\"onPinchStart\",arg:\"pinchstart\"},{name:\"hammer\",rawName:\"v-hammer:pinch\",value:(_vm.onPinch),expression:\"onPinch\",arg:\"pinch\"},{name:\"hammer\",rawName:\"v-hammer:pinchend\",value:(_vm.onPinchEnd),expression:\"onPinchEnd\",arg:\"pinchend\"}],ref:\"image\",staticClass:\"information-image\",style:(_vm.infoImgStyle),attrs:{\"src\":_vm.url},domProps:{\"hammerOptions\":{pan: { direction: 'all', threshold: 5 }, pinch: { enable: true }}},on:{\"load\":_vm.loadedImage,\"error\":_vm.loadFailed,\"wheel\":_vm.onWheel}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./airtag-image.vue?vue&type=style&index=0&id=5662c760&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./airtag-image.vue?vue&type=style&index=0&id=5662c760&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./airtag-image.vue?vue&type=template&id=5662c760&scoped=true&\"\nimport script from \"./airtag-image.vue?vue&type=script&lang=js&\"\nexport * from \"./airtag-image.vue?vue&type=script&lang=js&\"\nimport style0 from \"./airtag-image.vue?vue&type=style&index=0&id=5662c760&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5662c760\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"aspect-ratio\"},[_c('iframe',{staticClass:\"youtube-frame\",attrs:{\"src\":_setup.src,\"frameborder\":\"0\",\"width\":\"640\",\"height\":\"360\",\"allow\":\"accelerometer; autoplay; mute; encrypted-media; gyroscope; picture-in-picture\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./airtag-movie.vue?vue&type=script&setup=true&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./airtag-movie.vue?vue&type=script&setup=true&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./airtag-movie.vue?vue&type=style&index=0&id=6082c957&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./airtag-movie.vue?vue&type=style&index=0&id=6082c957&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./airtag-movie.vue?vue&type=template&id=6082c957&scoped=true&\"\nimport script from \"./airtag-movie.vue?vue&type=script&setup=true&lang=js&\"\nexport * from \"./airtag-movie.vue?vue&type=script&setup=true&lang=js&\"\nimport style0 from \"./airtag-movie.vue?vue&type=style&index=0&id=6082c957&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6082c957\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isImageLoaded),expression:\"isImageLoaded\"},{name:\"hammer\",rawName:\"v-hammer:tap\",value:(_vm.onTap),expression:\"onTap\",arg:\"tap\"}],staticClass:\"backdrop\"},[_c('div',{attrs:{\"slot\":\"top-right\"},slot:\"top-right\"},[_c('button',{staticClass:\"airtag-information-close\",style:({'left':_vm.btnCloseX, 'top':_vm.btnCloseY}),attrs:{\"type\":\"button\"},on:{\"click\":_vm.onClose}})]),_c('div',{ref:\"modal\",staticClass:\"airtag-modal\"},[(_vm.airtagInformation.image_url || _vm.airtagInformation.text)?_c('div',{staticClass:\"information-box\"},[_c('div',{staticClass:\"content\"},[(_vm.airtagInformation.image_url)?_c('airtag-image',{attrs:{\"url\":_vm.airtagInformation.image_url},on:{\"resizedImage\":_vm.onImageLoaded,\"loadFailed\":_vm.onImageloadFailed}}):_vm._e(),(_vm.airtagInformation.text)?_c('div',{staticClass:\"information-text\",domProps:{\"innerHTML\":_vm._s(_vm.airtagInformationText)}}):_vm._e()],1)]):_vm._e(),(_vm.airtagInformation.youtube_url)?_c('airtag-movie',{staticClass:\"information-youtube\",attrs:{\"url\":_vm.airtagInformation.youtube_url}}):_vm._e()],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./airtag-information.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./airtag-information.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./airtag-information.vue?vue&type=style&index=0&id=3fed03a1&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./airtag-information.vue?vue&type=style&index=0&id=3fed03a1&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./airtag-information.vue?vue&type=template&id=3fed03a1&scoped=true&\"\nimport script from \"./airtag-information.vue?vue&type=script&lang=js&\"\nexport * from \"./airtag-information.vue?vue&type=script&lang=js&\"\nimport style0 from \"./airtag-information.vue?vue&type=style&index=0&id=3fed03a1&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3fed03a1\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.enable)?_c('div',{staticClass:\"overlay-message-modal\"},[(!_vm.showModal)?_c('button',{staticClass:\"overlay-button\",on:{\"click\":function($event){$event.preventDefault();_vm.showModal = true}}},[_c('img',{attrs:{\"src\":require(\"@/images/panoramas/items/renovation_modal_button.png\")}})]):_vm._e(),(_vm.showModal)?_c('div',{staticClass:\"message-modal\",on:{\"click\":function($event){$event.stopPropagation();_vm.showModal = false}}},[_c('div',{staticClass:\"message-modal-header\"},[_c('button',{staticClass:\"button button-close\",on:{\"click\":function($event){$event.preventDefault();_vm.showModal = false}}},[_vm._v(\" ✕ \")])]),_c('div',{staticClass:\"message-modal-content\"},[_c('div',{staticStyle:{\"padding-bottom\":\"12px\"},domProps:{\"innerHTML\":_vm._s(_vm.overlayModalData.content)}}),_c('div',{staticStyle:{\"text-align\":\"center\"}},[(_vm.overlayModalData.external_url)?_c('a',{staticClass:\"button\",attrs:{\"href\":_vm.overlayModalData.external_url,\"target\":\"_blank\"},domProps:{\"innerHTML\":_vm._s(_vm.overlayModalData.external_label)},on:{\"click\":function($event){$event.stopPropagation();}}}):_vm._e()])])]):_vm._e()]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./overlay-message-modal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./overlay-message-modal.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./overlay-message-modal.vue?vue&type=style&index=0&id=ddf031da&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./overlay-message-modal.vue?vue&type=style&index=0&id=ddf031da&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./overlay-message-modal.vue?vue&type=template&id=ddf031da&scoped=true&\"\nimport script from \"./overlay-message-modal.vue?vue&type=script&lang=js&\"\nexport * from \"./overlay-message-modal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./overlay-message-modal.vue?vue&type=style&index=0&id=ddf031da&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ddf031da\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"ui-full\",staticStyle:{\"user-select\":\"none\"},attrs:{\"onselectstart\":\"return false\"}},[(_vm.telopEnabled)?_c('div',{staticClass:\"telop-wrapper\"},[(_vm.parentPlaceTelopText)?_c('telop',[_vm._v(_vm._s(_vm.parentPlaceTelopText))]):_vm._e(),(_vm.itemTelopText)?_c('telop',{attrs:{\"speed\":_vm.itemTelopSpeed}},[_vm._v(_vm._s(_vm.itemTelopText))]):_vm._e()],1):_vm._e(),_c('keep-alive',[(_vm.displayingThumbnailList == 'Items')?_c('item-thumbnails'):_vm._e(),(_vm.displayingThumbnailList == 'Points')?_c('point-thumbnails'):_vm._e()],1),_c('title-bar'),_c('bottom-bar'),(_vm.panoramaZoomActive)?_c('panorama-zoom'):_vm._e(),_c('map-view',{style:(_vm.mapViewStyle)}),_c('div',{staticClass:\"panorama-header\",style:(_vm.panoramaHeaderStyle)},[_c('excuse-text'),_c('overlay-message-modal')],1),(_vm.videoControlsActive)?_c('video-controls'):_vm._e(),(_vm.videoSpeedMenuActive)?_c('video-speed-menu'):_vm._e(),(_vm.moreMenuActive)?_c('more-menu'):_vm._e(),(_vm.infoModalActive)?_c('info-modal'):_vm._e(),(_vm.imageQualityModalActive)?_c('image-quality-modal'):_vm._e(),(_vm.airtagInformationActive)?_c('airtag-information'):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ui-full.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ui-full.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ui-full.vue?vue&type=style&index=0&id=2f316488&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ui-full.vue?vue&type=style&index=0&id=2f316488&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ui-full.vue?vue&type=template&id=2f316488&scoped=true&\"\nimport script from \"./ui-full.vue?vue&type=script&lang=js&\"\nexport * from \"./ui-full.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ui-full.vue?vue&type=style&index=0&id=2f316488&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2f316488\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"ui-minimal\"},[(_vm.telopEnabled)?_c('div',{staticClass:\"telop-wrapper\"},[(_vm.parentPlaceTelopText)?_c('telop',[_vm._v(_vm._s(_vm.parentPlaceTelopText))]):_vm._e(),(_vm.itemTelopText)?_c('telop',{attrs:{\"speed\":_vm.itemTelopSpeed}},[_vm._v(_vm._s(_vm.itemTelopText))]):_vm._e()],1):_vm._e(),_c('excuse-text',{style:(_vm.excuseTextStyle)}),_c('div',{staticClass:\"ui-minimal-icons-area\",on:{\"click\":function($event){return _vm.$emit('showControls')}}},[(!_vm.settings.hideControls && _vm.fullscreenEnabled)?_c('div',{staticClass:\"icon-frame\",on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleFullscreen.apply(null, arguments)}}},[_c('div',{staticClass:\"icon\"},[_c('svg-colored-icon',{attrs:{\"src\":_vm.fullscreen ? _vm.theme.icons.fullscreenOff : _vm.theme.icons.fullscreenOn,\"color\":_vm.theme.vrModeColor}})],1)]):_vm._e(),(!_vm.settings.hideControls)?_c('div',{staticClass:\"icon-frame\",on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('showControls')}}},[_c('div',{staticClass:\"icon\"},[_c('svg-colored-icon',{attrs:{\"src\":_vm.theme.icons.controlsShow,\"color\":_vm.theme.vrModeColor}})],1)]):_vm._e()]),(_vm.airtagInformationActive)?_c('airtag-information'):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ui-minimal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ui-minimal.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ui-minimal.vue?vue&type=style&index=0&id=4c7a8569&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ui-minimal.vue?vue&type=style&index=0&id=4c7a8569&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ui-minimal.vue?vue&type=template&id=4c7a8569&scoped=true&\"\nimport script from \"./ui-minimal.vue?vue&type=script&lang=js&\"\nexport * from \"./ui-minimal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ui-minimal.vue?vue&type=style&index=0&id=4c7a8569&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c7a8569\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ui-vr.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ui-vr.vue?vue&type=script&lang=js&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"ui-vr\"},[_c('excuse-text'),_c('div',{staticClass:\"ui-vr-menu\",style:(_vm.vrMenuStyle),on:{\"click\":_vm.toggoleMenu}},[(_vm.isMenu)?[_c('div',{staticClass:\"button-exit-vr-frame\",on:{\"click\":function($event){return _vm.setVrMode(false)}}},[_c('div',{staticClass:\"button-exit-vr\"},[_c('svg-colored-icon',{staticClass:\"button-right\",attrs:{\"src\":_vm.theme.icons.vrExit,\"color\":_vm.theme.vrModeColor}})],1),_c('div',{staticClass:\"button-exit-vr-text\"},[_vm._v(\" VRモードを終了します \")])]),(_vm.fullscreenEnabled)?[_c('div',{staticClass:\"toggle-fullscreen-frame\",on:{\"click\":_vm.toggleFullscreen}},[_c('div',{staticClass:\"toggle-fullscreen\"},[(!_vm.fullscreen)?_c('svg-colored-icon',{attrs:{\"src\":_vm.theme.icons.fullscreenOn,\"color\":_vm.theme.vrModeColor}}):_c('svg-colored-icon',{attrs:{\"src\":_vm.theme.icons.fullscreenOff,\"color\":_vm.theme.vrModeColor}})],1)])]:_vm._e()]:_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ui-vr.vue?vue&type=style&index=0&id=677d92be&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ui-vr.vue?vue&type=style&index=0&id=677d92be&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ui-vr.vue?vue&type=template&id=677d92be&scoped=true&\"\nimport script from \"./ui-vr.vue?vue&type=script&lang=js&\"\nexport * from \"./ui-vr.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ui-vr.vue?vue&type=style&index=0&id=677d92be&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"677d92be\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./passcode.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./passcode.vue?vue&type=script&lang=js&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"active\"},[_c('div',{staticClass:\"message\"},[_vm._v(\" パスコードの入力後、自動的にパノラマが表示されます。 \"),_c('div',[_c('vue-fake-input',{attrs:{\"length\":6,\"allow-paste\":true,\"only-number\":true,\"inputColor\":_vm.inputColor},on:{\"input\":function($event){return _vm.check()}},model:{value:(_vm.passcode),callback:function ($$v) {_vm.passcode=$$v},expression:\"passcode\"}}),(_vm.error)?_c('div',[_vm._v(\" パスコードが正しくありません。 \")]):_vm._e()],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./passcode.vue?vue&type=template&id=3185305f&\"\nimport script from \"./passcode.vue?vue&type=script&lang=js&\"\nexport * from \"./passcode.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/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","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./panorama.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./panorama.vue?vue&type=script&lang=js&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"panorama\"}},[_c('item-view',{on:{\"tap\":function($event){_vm.showControls = !_vm.showControls}}}),_c('loading'),(_vm.hasDeviceMotionOptInFeature)?_c('div',{staticClass:\"motion-permission-overlay\"},[_c('div',{staticClass:\"motion-permission-modal-wrapper\"},[_vm._m(0),_c('button',{staticClass:\"button\",style:({ backgroundColor: _vm.theme.color1 }),on:{\"click\":_vm.requestMotionPermission}},[_vm._v(\" OK \")])])]):_vm._e(),(_vm.ready)?_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.uiComponent == 'full')?_c('ui-full',{attrs:{\"id\":\"ui\"},on:{\"hideControls\":function($event){_vm.showControls = false}}}):_vm._e(),(_vm.uiComponent == 'minimal')?_c('ui-minimal',{attrs:{\"id\":\"ui\"},on:{\"showControls\":function($event){_vm.showControls = true}}}):_vm._e(),(_vm.uiComponent == 'vr')?_c('ui-vr',{attrs:{\"id\":\"ui\"}}):_vm._e()],1):_vm._e(),((_vm.vrMode || _vm.gyroRotation) && _vm.deviceMotionDenied)?_c('div',{staticClass:\"motion-denied-message-overlay\",style:([_vm.uiComponent == 'minimal' || _vm.uiComponent == 'vr' ? { top: '0px' } : { top: '45px'}])},[_vm._m(1)]):_vm._e(),_c('error-message'),(_vm.waitPasscode)?_c('passcode',{attrs:{\"id\":\"passcode-lock\",\"hashed\":_vm.settings.passCodeHash},on:{\"done\":_vm.showPanorama}}):_vm._e()],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"message-text\"},[_vm._v(\" 次の画面で許可ボタンを\"),_c('br'),_vm._v(\"押すと端末の向いている\"),_c('br'),_vm._v(\"方向が見えます。 \")])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"overlay-text\"},[_vm._v(\" 「動作と方向へのアクセス」が有効になっておりませんので、\"),_c('br'),_vm._v(\" 使用できません。ブラウザを再起動してください。 \")])\n}]\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./panorama.vue?vue&type=style&index=0&id=517153b0&prod&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./panorama.vue?vue&type=style&index=0&id=517153b0&prod&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./panorama.vue?vue&type=style&index=1&id=517153b0&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-2.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./panorama.vue?vue&type=style&index=1&id=517153b0&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./panorama.vue?vue&type=template&id=517153b0&scoped=true&\"\nimport script from \"./panorama.vue?vue&type=script&lang=js&\"\nexport * from \"./panorama.vue?vue&type=script&lang=js&\"\nimport style0 from \"./panorama.vue?vue&type=style&index=0&id=517153b0&prod&lang=css&\"\nimport style1 from \"./panorama.vue?vue&type=style&index=1&id=517153b0&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"517153b0\",\n null\n \n)\n\nexport default component.exports","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!./embed.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!./embed.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import '~/setup/steps/styles'\nimport '~/setup/steps/expose'\nimport '~/setup/steps/logging'\nimport '~/setup/steps/error-handling'\nimport '~/setup/steps/request-client'\n\nimport DocumentReady from 'document-ready-promise'\nimport Vue from 'vue'\n\n// 本番環境以外ではVue devtoolsを有効\nVue.config.devtools = (process.env.RAILS_ENV ?? 'production') !== 'production'\n\nimport VueAddEventListener from 'vue-add-event-listener'\nVue.use(VueAddEventListener)\n\nimport { VueHammer } from 'vue2-hammer'\nVue.use(VueHammer)\n\nimport Vuex from 'vuex'\nVue.use(Vuex)\n\nconst store = new Vuex.Store({\n strict: process.env.NODE_ENV !== 'production'\n})\nNurve.$store = store\n\nimport contexts_module from '~/setup/store/contexts'\nstore.registerModule('contexts', contexts_module)\n\nimport panorama_module from '~/panoramas/store'\nstore.registerModule('panorama', panorama_module)\n\nimport createLogger from '~/common/logger/logger-factory'\nwindow.logger = createLogger()\n\nimport RootComponent from '~/panoramas/components/panorama'\nimport createPanoramaSettings from '~/panoramas/store/settings'\n\nimport './embed.scss'\n\nPromise.all([DocumentReady(), store.dispatch('contexts/fetch')]).then(() => {\n const settings = createPanoramaSettings(store.state.contexts.url, gon.panoramaParams)\n store.commit('panorama/setSettings', settings)\n\n // loadingを削除\n document.querySelector('#c')?.classList?.remove('loading')\n\n new Vue({\n el: '#c',\n store: store,\n render: h => h(RootComponent, {\n props: {\n atbbUserId: settings.atbbUserId || '',\n pathPanorama: settings.pathPanorama,\n viewMode: settings.viewMode\n }\n })\n })\n})","import { boolean } from 'boolean'\n\nfunction initialImageQuality(quality, defaultValue) {\n const valid_qualities = ['low', 'middle', 'high', 'highest', 'original']\n\n return valid_qualities.includes(quality) ? quality : defaultValue\n}\n\nexport default (url, params) => {\n return {\n fullscreenEnable: boolean(params.fullscreen_enable),\n vreffectEnable: boolean(params.vreffect_enable),\n gyroRotationEnable: boolean(params.gyro_rotation_enable),\n eyeControlEnable: boolean(params.eye_control_enable),\n menuOpen: boolean(params.menu_open),\n itemThumbsOpen: boolean(params.item_thumbs_open),\n drawLine: boolean(params.draw_line),\n drawRadar: boolean(params.draw_radar),\n drawWalkThrough: boolean(params.draw_walkthrough),\n autoRotation: boolean(params.auto_rotation),\n videoRepeat: boolean(params.video_repeat),\n imageQuality: initialImageQuality(url.query.quality || url.query.q || params.image_quality, 'high'),\n imageQualityModal: boolean(params.image_quality_modal),\n hideControls: boolean(url.query.hide_controls, false),\n hideAnnotation: boolean(url.query.hide_annotation, false),\n firstPointId: parseInt(url.query.point_id) || null,\n\n // VRモードで実行するURLパラメータはvr_mode=trueとview_mode=vrである\n startVrMode: url.query.vr_mode || url.query.view_mode === 'vr',\n\n // ジャイロモードで実行するURLパラメータはview_mode=gyroである\n startGyroMode: url.query.view_mode === 'gyro',\n\n pathPanorama: params.path_panorama,\n atbbUserId: params.atbb_user_id,\n passCodeHash: params.pass_code_hash,\n videoPlaybackAutomatically: params.video_playback_automatically\n }\n}\n","import * as THREE from 'three'\n\nconst createTemporaryPosition = index => {\n const POINTS_PER_ROW = 10\n const MAX_ROW_COUNTS = 3\n const REGION_HEIGHT_FOR_POSITIONLESS = 0.3\n\n const col = index % POINTS_PER_ROW\n const row = Math.floor(index / POINTS_PER_ROW)\n\n const x = (col + 1) / (POINTS_PER_ROW + 1)\n const y = (row + 1) * REGION_HEIGHT_FOR_POSITIONLESS / (MAX_ROW_COUNTS + 1)\n\n return { x: x, y: y }\n}\n\nexport const convertPoints = (points, mapDirection) => {\n let temporary_position_count = 0\n return points.map(point => {\n let position = { x: point.x, y: point.y }\n if (position.x == -1 && position.y == -1) {\n position = createTemporaryPosition(temporary_position_count++)\n }\n\n point.direction = (point.items[0]?.direction || 0)\n return {\n ...point,\n items: point.items.map(i => convertItem(i, point.direction)),\n viewPosition: position,\n sight_direction: point.direction,\n sight_updown: 0\n }\n })\n}\n\nconst convertItem = (item, pointDirection) => {\n item.direction = normalizeDegree(item.direction - pointDirection)\n return item\n}\n\nexport const convertLines = (lines) => {\n return lines.map(line => {\n return { point1Id: line.point1_id, point2Id: line.point2_id }\n })\n}\n\nexport const normalizeDegree = value => {\n return THREE.MathUtils.euclideanModulo(value, 360)\n}\n\nexport const normalizeDegree180 = value => {\n return normalizeDegree(value + 180) - 180\n}\n","/*\r\n Copyright (c) 2012 Nevins Bartolomeo <nevins.bartolomeo@gmail.com>\r\n Copyright (c) 2012 Shane Girish <shaneGirish@gmail.com>\r\n Copyright (c) 2014 Daniel Wirtz <dcode@dcode.io>\r\n\r\n Redistribution and use in source and binary forms, with or without\r\n modification, are permitted provided that the following conditions\r\n are met:\r\n 1. Redistributions of source code must retain the above copyright\r\n notice, this list of conditions and the following disclaimer.\r\n 2. Redistributions in binary form must reproduce the above copyright\r\n notice, this list of conditions and the following disclaimer in the\r\n documentation and/or other materials provided with the distribution.\r\n 3. The name of the author may not be used to endorse or promote products\r\n derived from this software without specific prior written permission.\r\n\r\n THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\r\n IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\r\n OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\r\n IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\r\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\r\n NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\r\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n */\r\n\r\n/**\r\n * @license bcrypt.js (c) 2013 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/bcrypt.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"bcrypt\"] = factory();\r\n\r\n}(this, function() {\r\n \"use strict\";\r\n\r\n /**\r\n * bcrypt namespace.\r\n * @type {Object.<string,*>}\r\n */\r\n var bcrypt = {};\r\n\r\n /**\r\n * The random implementation to use as a fallback.\r\n * @type {?function(number):!Array.<number>}\r\n * @inner\r\n */\r\n var randomFallback = null;\r\n\r\n /**\r\n * Generates cryptographically secure random bytes.\r\n * @function\r\n * @param {number} len Bytes length\r\n * @returns {!Array.<number>} Random bytes\r\n * @throws {Error} If no random implementation is available\r\n * @inner\r\n */\r\n function random(len) {\r\n /* node */ if (typeof module !== 'undefined' && module && module['exports'])\r\n try {\r\n return require(\"crypto\")['randomBytes'](len);\r\n } catch (e) {}\r\n /* WCA */ try {\r\n var a; (self['crypto']||self['msCrypto'])['getRandomValues'](a = new Uint32Array(len));\r\n return Array.prototype.slice.call(a);\r\n } catch (e) {}\r\n /* fallback */ if (!randomFallback)\r\n throw Error(\"Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative\");\r\n return randomFallback(len);\r\n }\r\n\r\n // Test if any secure randomness source is available\r\n var randomAvailable = false;\r\n try {\r\n random(1);\r\n randomAvailable = true;\r\n } catch (e) {}\r\n\r\n // Default fallback, if any\r\n randomFallback = null;\r\n /**\r\n * Sets the pseudo random number generator to use as a fallback if neither node's `crypto` module nor the Web Crypto\r\n * API is available. Please note: It is highly important that the PRNG used is cryptographically secure and that it\r\n * is seeded properly!\r\n * @param {?function(number):!Array.<number>} random Function taking the number of bytes to generate as its\r\n * sole argument, returning the corresponding array of cryptographically secure random byte values.\r\n * @see http://nodejs.org/api/crypto.html\r\n * @see http://www.w3.org/TR/WebCryptoAPI/\r\n */\r\n bcrypt.setRandomFallback = function(random) {\r\n randomFallback = random;\r\n };\r\n\r\n /**\r\n * Synchronously generates a salt.\r\n * @param {number=} rounds Number of rounds to use, defaults to 10 if omitted\r\n * @param {number=} seed_length Not supported.\r\n * @returns {string} Resulting salt\r\n * @throws {Error} If a random fallback is required but not set\r\n * @expose\r\n */\r\n bcrypt.genSaltSync = function(rounds, seed_length) {\r\n rounds = rounds || GENSALT_DEFAULT_LOG2_ROUNDS;\r\n if (typeof rounds !== 'number')\r\n throw Error(\"Illegal arguments: \"+(typeof rounds)+\", \"+(typeof seed_length));\r\n if (rounds < 4)\r\n rounds = 4;\r\n else if (rounds > 31)\r\n rounds = 31;\r\n var salt = [];\r\n salt.push(\"$2a$\");\r\n if (rounds < 10)\r\n salt.push(\"0\");\r\n salt.push(rounds.toString());\r\n salt.push('$');\r\n salt.push(base64_encode(random(BCRYPT_SALT_LEN), BCRYPT_SALT_LEN)); // May throw\r\n return salt.join('');\r\n };\r\n\r\n /**\r\n * Asynchronously generates a salt.\r\n * @param {(number|function(Error, string=))=} rounds Number of rounds to use, defaults to 10 if omitted\r\n * @param {(number|function(Error, string=))=} seed_length Not supported.\r\n * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting salt\r\n * @returns {!Promise} If `callback` has been omitted\r\n * @throws {Error} If `callback` is present but not a function\r\n * @expose\r\n */\r\n bcrypt.genSalt = function(rounds, seed_length, callback) {\r\n if (typeof seed_length === 'function')\r\n callback = seed_length,\r\n seed_length = undefined; // Not supported.\r\n if (typeof rounds === 'function')\r\n callback = rounds,\r\n rounds = undefined;\r\n if (typeof rounds === 'undefined')\r\n rounds = GENSALT_DEFAULT_LOG2_ROUNDS;\r\n else if (typeof rounds !== 'number')\r\n throw Error(\"illegal arguments: \"+(typeof rounds));\r\n\r\n function _async(callback) {\r\n nextTick(function() { // Pretty thin, but salting is fast enough\r\n try {\r\n callback(null, bcrypt.genSaltSync(rounds));\r\n } catch (err) {\r\n callback(err);\r\n }\r\n });\r\n }\r\n\r\n if (callback) {\r\n if (typeof callback !== 'function')\r\n throw Error(\"Illegal callback: \"+typeof(callback));\r\n _async(callback);\r\n } else\r\n return new Promise(function(resolve, reject) {\r\n _async(function(err, res) {\r\n if (err) {\r\n reject(err);\r\n return;\r\n }\r\n resolve(res);\r\n });\r\n });\r\n };\r\n\r\n /**\r\n * Synchronously generates a hash for the given string.\r\n * @param {string} s String to hash\r\n * @param {(number|string)=} salt Salt length to generate or salt to use, default to 10\r\n * @returns {string} Resulting hash\r\n * @expose\r\n */\r\n bcrypt.hashSync = function(s, salt) {\r\n if (typeof salt === 'undefined')\r\n salt = GENSALT_DEFAULT_LOG2_ROUNDS;\r\n if (typeof salt === 'number')\r\n salt = bcrypt.genSaltSync(salt);\r\n if (typeof s !== 'string' || typeof salt !== 'string')\r\n throw Error(\"Illegal arguments: \"+(typeof s)+', '+(typeof salt));\r\n return _hash(s, salt);\r\n };\r\n\r\n /**\r\n * Asynchronously generates a hash for the given string.\r\n * @param {string} s String to hash\r\n * @param {number|string} salt Salt length to generate or salt to use\r\n * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting hash\r\n * @param {function(number)=} progressCallback Callback successively called with the percentage of rounds completed\r\n * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.\r\n * @returns {!Promise} If `callback` has been omitted\r\n * @throws {Error} If `callback` is present but not a function\r\n * @expose\r\n */\r\n bcrypt.hash = function(s, salt, callback, progressCallback) {\r\n\r\n function _async(callback) {\r\n if (typeof s === 'string' && typeof salt === 'number')\r\n bcrypt.genSalt(salt, function(err, salt) {\r\n _hash(s, salt, callback, progressCallback);\r\n });\r\n else if (typeof s === 'string' && typeof salt === 'string')\r\n _hash(s, salt, callback, progressCallback);\r\n else\r\n nextTick(callback.bind(this, Error(\"Illegal arguments: \"+(typeof s)+', '+(typeof salt))));\r\n }\r\n\r\n if (callback) {\r\n if (typeof callback !== 'function')\r\n throw Error(\"Illegal callback: \"+typeof(callback));\r\n _async(callback);\r\n } else\r\n return new Promise(function(resolve, reject) {\r\n _async(function(err, res) {\r\n if (err) {\r\n reject(err);\r\n return;\r\n }\r\n resolve(res);\r\n });\r\n });\r\n };\r\n\r\n /**\r\n * Compares two strings of the same length in constant time.\r\n * @param {string} known Must be of the correct length\r\n * @param {string} unknown Must be the same length as `known`\r\n * @returns {boolean}\r\n * @inner\r\n */\r\n function safeStringCompare(known, unknown) {\r\n var right = 0,\r\n wrong = 0;\r\n for (var i=0, k=known.length; i<k; ++i) {\r\n if (known.charCodeAt(i) === unknown.charCodeAt(i))\r\n ++right;\r\n else\r\n ++wrong;\r\n }\r\n // Prevent removal of unused variables (never true, actually)\r\n if (right < 0)\r\n return false;\r\n return wrong === 0;\r\n }\r\n\r\n /**\r\n * Synchronously tests a string against a hash.\r\n * @param {string} s String to compare\r\n * @param {string} hash Hash to test against\r\n * @returns {boolean} true if matching, otherwise false\r\n * @throws {Error} If an argument is illegal\r\n * @expose\r\n */\r\n bcrypt.compareSync = function(s, hash) {\r\n if (typeof s !== \"string\" || typeof hash !== \"string\")\r\n throw Error(\"Illegal arguments: \"+(typeof s)+', '+(typeof hash));\r\n if (hash.length !== 60)\r\n return false;\r\n return safeStringCompare(bcrypt.hashSync(s, hash.substr(0, hash.length-31)), hash);\r\n };\r\n\r\n /**\r\n * Asynchronously compares the given data against the given hash.\r\n * @param {string} s Data to compare\r\n * @param {string} hash Data to be compared to\r\n * @param {function(Error, boolean)=} callback Callback receiving the error, if any, otherwise the result\r\n * @param {function(number)=} progressCallback Callback successively called with the percentage of rounds completed\r\n * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.\r\n * @returns {!Promise} If `callback` has been omitted\r\n * @throws {Error} If `callback` is present but not a function\r\n * @expose\r\n */\r\n bcrypt.compare = function(s, hash, callback, progressCallback) {\r\n\r\n function _async(callback) {\r\n if (typeof s !== \"string\" || typeof hash !== \"string\") {\r\n nextTick(callback.bind(this, Error(\"Illegal arguments: \"+(typeof s)+', '+(typeof hash))));\r\n return;\r\n }\r\n if (hash.length !== 60) {\r\n nextTick(callback.bind(this, null, false));\r\n return;\r\n }\r\n bcrypt.hash(s, hash.substr(0, 29), function(err, comp) {\r\n if (err)\r\n callback(err);\r\n else\r\n callback(null, safeStringCompare(comp, hash));\r\n }, progressCallback);\r\n }\r\n\r\n if (callback) {\r\n if (typeof callback !== 'function')\r\n throw Error(\"Illegal callback: \"+typeof(callback));\r\n _async(callback);\r\n } else\r\n return new Promise(function(resolve, reject) {\r\n _async(function(err, res) {\r\n if (err) {\r\n reject(err);\r\n return;\r\n }\r\n resolve(res);\r\n });\r\n });\r\n };\r\n\r\n /**\r\n * Gets the number of rounds used to encrypt the specified hash.\r\n * @param {string} hash Hash to extract the used number of rounds from\r\n * @returns {number} Number of rounds used\r\n * @throws {Error} If `hash` is not a string\r\n * @expose\r\n */\r\n bcrypt.getRounds = function(hash) {\r\n if (typeof hash !== \"string\")\r\n throw Error(\"Illegal arguments: \"+(typeof hash));\r\n return parseInt(hash.split(\"$\")[2], 10);\r\n };\r\n\r\n /**\r\n * Gets the salt portion from a hash. Does not validate the hash.\r\n * @param {string} hash Hash to extract the salt from\r\n * @returns {string} Extracted salt part\r\n * @throws {Error} If `hash` is not a string or otherwise invalid\r\n * @expose\r\n */\r\n bcrypt.getSalt = function(hash) {\r\n if (typeof hash !== 'string')\r\n throw Error(\"Illegal arguments: \"+(typeof hash));\r\n if (hash.length !== 60)\r\n throw Error(\"Illegal hash length: \"+hash.length+\" != 60\");\r\n return hash.substring(0, 29);\r\n };\r\n\r\n /**\r\n * Continues with the callback on the next tick.\r\n * @function\r\n * @param {function(...[*])} callback Callback to execute\r\n * @inner\r\n */\r\n var nextTick = typeof process !== 'undefined' && process && typeof process.nextTick === 'function'\r\n ? (typeof setImmediate === 'function' ? setImmediate : process.nextTick)\r\n : setTimeout;\r\n\r\n /**\r\n * Converts a JavaScript string to UTF8 bytes.\r\n * @param {string} str String\r\n * @returns {!Array.<number>} UTF8 bytes\r\n * @inner\r\n */\r\n function stringToBytes(str) {\r\n var out = [],\r\n i = 0;\r\n utfx.encodeUTF16toUTF8(function() {\r\n if (i >= str.length) return null;\r\n return str.charCodeAt(i++);\r\n }, function(b) {\r\n out.push(b);\r\n });\r\n return out;\r\n }\r\n\r\n // A base64 implementation for the bcrypt algorithm. This is partly non-standard.\r\n\r\n /**\r\n * bcrypt's own non-standard base64 dictionary.\r\n * @type {!Array.<string>}\r\n * @const\r\n * @inner\r\n **/\r\n var BASE64_CODE = \"./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\".split('');\r\n\r\n /**\r\n * @type {!Array.<number>}\r\n * @const\r\n * @inner\r\n **/\r\n var BASE64_INDEX = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,\r\n 1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1,\r\n -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\r\n 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, -1, -1, -1, -1, 28, 29, 30,\r\n 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\r\n 48, 49, 50, 51, 52, 53, -1, -1, -1, -1, -1];\r\n\r\n /**\r\n * @type {!function(...number):string}\r\n * @inner\r\n */\r\n var stringFromCharCode = String.fromCharCode;\r\n\r\n /**\r\n * Encodes a byte array to base64 with up to len bytes of input.\r\n * @param {!Array.<number>} b Byte array\r\n * @param {number} len Maximum input length\r\n * @returns {string}\r\n * @inner\r\n */\r\n function base64_encode(b, len) {\r\n var off = 0,\r\n rs = [],\r\n c1, c2;\r\n if (len <= 0 || len > b.length)\r\n throw Error(\"Illegal len: \"+len);\r\n while (off < len) {\r\n c1 = b[off++] & 0xff;\r\n rs.push(BASE64_CODE[(c1 >> 2) & 0x3f]);\r\n c1 = (c1 & 0x03) << 4;\r\n if (off >= len) {\r\n rs.push(BASE64_CODE[c1 & 0x3f]);\r\n break;\r\n }\r\n c2 = b[off++] & 0xff;\r\n c1 |= (c2 >> 4) & 0x0f;\r\n rs.push(BASE64_CODE[c1 & 0x3f]);\r\n c1 = (c2 & 0x0f) << 2;\r\n if (off >= len) {\r\n rs.push(BASE64_CODE[c1 & 0x3f]);\r\n break;\r\n }\r\n c2 = b[off++] & 0xff;\r\n c1 |= (c2 >> 6) & 0x03;\r\n rs.push(BASE64_CODE[c1 & 0x3f]);\r\n rs.push(BASE64_CODE[c2 & 0x3f]);\r\n }\r\n return rs.join('');\r\n }\r\n\r\n /**\r\n * Decodes a base64 encoded string to up to len bytes of output.\r\n * @param {string} s String to decode\r\n * @param {number} len Maximum output length\r\n * @returns {!Array.<number>}\r\n * @inner\r\n */\r\n function base64_decode(s, len) {\r\n var off = 0,\r\n slen = s.length,\r\n olen = 0,\r\n rs = [],\r\n c1, c2, c3, c4, o, code;\r\n if (len <= 0)\r\n throw Error(\"Illegal len: \"+len);\r\n while (off < slen - 1 && olen < len) {\r\n code = s.charCodeAt(off++);\r\n c1 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\r\n code = s.charCodeAt(off++);\r\n c2 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\r\n if (c1 == -1 || c2 == -1)\r\n break;\r\n o = (c1 << 2) >>> 0;\r\n o |= (c2 & 0x30) >> 4;\r\n rs.push(stringFromCharCode(o));\r\n if (++olen >= len || off >= slen)\r\n break;\r\n code = s.charCodeAt(off++);\r\n c3 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\r\n if (c3 == -1)\r\n break;\r\n o = ((c2 & 0x0f) << 4) >>> 0;\r\n o |= (c3 & 0x3c) >> 2;\r\n rs.push(stringFromCharCode(o));\r\n if (++olen >= len || off >= slen)\r\n break;\r\n code = s.charCodeAt(off++);\r\n c4 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\r\n o = ((c3 & 0x03) << 6) >>> 0;\r\n o |= c4;\r\n rs.push(stringFromCharCode(o));\r\n ++olen;\r\n }\r\n var res = [];\r\n for (off = 0; off<olen; off++)\r\n res.push(rs[off].charCodeAt(0));\r\n return res;\r\n }\r\n\r\n /**\r\n * utfx-embeddable (c) 2014 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/utfx for details\r\n */\r\n var utfx = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * utfx namespace.\r\n * @inner\r\n * @type {!Object.<string,*>}\r\n */\r\n var utfx = {};\r\n\r\n /**\r\n * Maximum valid code point.\r\n * @type {number}\r\n * @const\r\n */\r\n utfx.MAX_CODEPOINT = 0x10FFFF;\r\n\r\n /**\r\n * Encodes UTF8 code points to UTF8 bytes.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte\r\n */\r\n utfx.encodeUTF8 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src,\r\n src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp < 0x80)\r\n dst(cp&0x7F);\r\n else if (cp < 0x800)\r\n dst(((cp>>6)&0x1F)|0xC0),\r\n dst((cp&0x3F)|0x80);\r\n else if (cp < 0x10000)\r\n dst(((cp>>12)&0x0F)|0xE0),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n else\r\n dst(((cp>>18)&0x07)|0xF0),\r\n dst(((cp>>12)&0x3F)|0x80),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes UTF8 bytes to UTF8 code points.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the\r\n * remaining bytes.\r\n */\r\n utfx.decodeUTF8 = function(src, dst) {\r\n var a, b, c, d, fail = function(b) {\r\n b = b.slice(0, b.indexOf(null));\r\n var err = Error(b.toString());\r\n err.name = \"TruncatedError\";\r\n err['bytes'] = b;\r\n throw err;\r\n };\r\n while ((a = src()) !== null) {\r\n if ((a&0x80) === 0)\r\n dst(a);\r\n else if ((a&0xE0) === 0xC0)\r\n ((b = src()) === null) && fail([a, b]),\r\n dst(((a&0x1F)<<6) | (b&0x3F));\r\n else if ((a&0xF0) === 0xE0)\r\n ((b=src()) === null || (c=src()) === null) && fail([a, b, c]),\r\n dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F));\r\n else if ((a&0xF8) === 0xF0)\r\n ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]),\r\n dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F));\r\n else throw RangeError(\"Illegal starting byte: \"+a);\r\n }\r\n };\r\n\r\n /**\r\n * Converts UTF16 characters to UTF8 code points.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each converted code\r\n * point.\r\n */\r\n utfx.UTF16toUTF8 = function(src, dst) {\r\n var c1, c2 = null;\r\n while (true) {\r\n if ((c1 = c2 !== null ? c2 : src()) === null)\r\n break;\r\n if (c1 >= 0xD800 && c1 <= 0xDFFF) {\r\n if ((c2 = src()) !== null) {\r\n if (c2 >= 0xDC00 && c2 <= 0xDFFF) {\r\n dst((c1-0xD800)*0x400+c2-0xDC00+0x10000);\r\n c2 = null; continue;\r\n }\r\n }\r\n }\r\n dst(c1);\r\n }\r\n if (c2 !== null) dst(c2);\r\n };\r\n\r\n /**\r\n * Converts UTF8 code points to UTF16 characters.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a code point is out of range\r\n */\r\n utfx.UTF8toUTF16 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src, src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp <= 0xFFFF)\r\n dst(cp);\r\n else\r\n cp -= 0x10000,\r\n dst((cp>>10)+0xD800),\r\n dst((cp%0x400)+0xDC00);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Converts and encodes UTF16 characters to UTF8 bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null`\r\n * if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n */\r\n utfx.encodeUTF16toUTF8 = function(src, dst) {\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n utfx.encodeUTF8(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Decodes and converts UTF8 bytes to UTF16 characters.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes.\r\n */\r\n utfx.decodeUTF8toUTF16 = function(src, dst) {\r\n utfx.decodeUTF8(src, function(cp) {\r\n utfx.UTF8toUTF16(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an UTF8 code point.\r\n * @param {number} cp UTF8 code point\r\n * @returns {number} Byte length\r\n */\r\n utfx.calculateCodePoint = function(cp) {\r\n return (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes required to store UTF8 code points.\r\n * @param {(!function():number|null)} src Code points source as a function returning the next code point respectively\r\n * `null` if there are no more code points left.\r\n * @returns {number} The number of UTF8 bytes required\r\n */\r\n utfx.calculateUTF8 = function(src) {\r\n var cp, l=0;\r\n while ((cp = src()) !== null)\r\n l += utfx.calculateCodePoint(cp);\r\n return l;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes.\r\n * @param {(!function():number|null)} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @returns {!Array.<number>} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1.\r\n */\r\n utfx.calculateUTF16asUTF8 = function(src) {\r\n var n=0, l=0;\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n ++n; l += utfx.calculateCodePoint(cp);\r\n });\r\n return [n,l];\r\n };\r\n\r\n return utfx;\r\n }();\r\n\r\n Date.now = Date.now || function() { return +new Date; };\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var BCRYPT_SALT_LEN = 16;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var GENSALT_DEFAULT_LOG2_ROUNDS = 10;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var BLOWFISH_NUM_ROUNDS = 16;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var MAX_EXECUTION_TIME = 100;\r\n\r\n /**\r\n * @type {Array.<number>}\r\n * @const\r\n * @inner\r\n */\r\n var P_ORIG = [\r\n 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822,\r\n 0x299f31d0, 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377,\r\n 0xbe5466cf, 0x34e90c6c, 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5,\r\n 0xb5470917, 0x9216d5d9, 0x8979fb1b\r\n ];\r\n\r\n /**\r\n * @type {Array.<number>}\r\n * @const\r\n * @inner\r\n */\r\n var S_ORIG = [\r\n 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed,\r\n 0x6a267e96, 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7,\r\n 0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69, 0xa458fea3,\r\n 0xf4933d7e, 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,\r\n 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, 0xc5d1b023,\r\n 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e,\r\n 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda,\r\n 0x55605c60, 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,\r\n 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, 0xa15486af,\r\n 0x7c72e993, 0xb3ee1411, 0x636fbc2a, 0x2ba9c55d, 0x741831f6,\r\n 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, 0x7a325381,\r\n 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,\r\n 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d,\r\n 0xe98575b1, 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5,\r\n 0x0f6d6ff3, 0x83f44239, 0x2e0b4482, 0xa4842004, 0x69c8f04a,\r\n 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,\r\n 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, 0x6eef0b6c,\r\n 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176,\r\n 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3,\r\n 0x3b8b5ebe, 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,\r\n 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, 0x37d0d724,\r\n 0xd00a1248, 0xdb0fead3, 0x49f1c09b, 0x075372c9, 0x80991b7b,\r\n 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b, 0x976ce0bd,\r\n 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,\r\n 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f,\r\n 0x9b30952c, 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd,\r\n 0x660f2807, 0x192e4bb3, 0xc0cba857, 0x45c8740f, 0xd20b5f39,\r\n 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,\r\n 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, 0x3c7516df,\r\n 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760,\r\n 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e,\r\n 0xdf1769db, 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,\r\n 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98,\r\n 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, 0x9a53e479, 0xb6f84565,\r\n 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341,\r\n 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,\r\n 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0,\r\n 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64,\r\n 0x8888b812, 0x900df01c, 0x4fad5ea0, 0x688fc31c, 0xd1cff191,\r\n 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,\r\n 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, 0xb4a84fe0,\r\n 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705,\r\n 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5,\r\n 0xfb9d35cf, 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,\r\n 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, 0x2464369b,\r\n 0xf009b91e, 0x5563911d, 0x59dfa6aa, 0x78c14389, 0xd95a537f,\r\n 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9, 0x11c81968,\r\n 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,\r\n 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5,\r\n 0x571be91f, 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6,\r\n 0xff34052e, 0xc5855664, 0x53b02d5d, 0xa99f8fa1, 0x08ba4799,\r\n 0x6e85076a, 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,\r\n 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, 0xecaa8c71,\r\n 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29,\r\n 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, 0x6b8fe4d6,\r\n 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,\r\n 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f,\r\n 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286,\r\n 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec,\r\n 0x5716f2b8, 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,\r\n 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, 0xd19113f9,\r\n 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc,\r\n 0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e,\r\n 0xa4751e41, 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,\r\n 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, 0x2cb81290,\r\n 0x24977c79, 0x5679b072, 0xbcaf89af, 0xde9a771f, 0xd9930810,\r\n 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6,\r\n 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,\r\n 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847,\r\n 0x3215d908, 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451,\r\n 0x50940002, 0x133ae4dd, 0x71dff89e, 0x10314e55, 0x81ac77d6,\r\n 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,\r\n 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570,\r\n 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa,\r\n 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978,\r\n 0x9c10b36a, 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,\r\n 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, 0x5223a708,\r\n 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883,\r\n 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, 0x65582185,\r\n 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,\r\n 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830,\r\n 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239,\r\n 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7, 0x9cab5cab,\r\n 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,\r\n 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, 0x9b540b19,\r\n 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77,\r\n 0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1,\r\n 0x7858ba99, 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,\r\n 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef,\r\n 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, 0x5d4a14d9, 0xe864b7e3,\r\n 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15,\r\n 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,\r\n 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2,\r\n 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492,\r\n 0x47848a0b, 0x5692b285, 0x095bbf00, 0xad19489d, 0x1462b174,\r\n 0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,\r\n 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759,\r\n 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e,\r\n 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc,\r\n 0x800bcadc, 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,\r\n 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, 0xc5c43465,\r\n 0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a,\r\n 0xe6e39f2b, 0xdb83adf7, 0xe93d5a68, 0x948140f7, 0xf64c261c,\r\n 0x94692934, 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,\r\n 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, 0x1e39f62e,\r\n 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af,\r\n 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0,\r\n 0x31cb8504, 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,\r\n 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, 0x68dc1462,\r\n 0xd7486900, 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c,\r\n 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, 0xce78a399,\r\n 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,\r\n 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74,\r\n 0xdd5b4332, 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397,\r\n 0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7,\r\n 0xd096954b, 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,\r\n 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, 0xfdf8e802,\r\n 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22,\r\n 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4,\r\n 0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,\r\n 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2,\r\n 0x02e1329e, 0xaf664fd1, 0xcad18115, 0x6b2395e0, 0x333e92e1,\r\n 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, 0xde720c8c,\r\n 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,\r\n 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341,\r\n 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8,\r\n 0x991be14c, 0xdb6e6b0d, 0xc67b5510, 0x6d672c37, 0x2765d43b,\r\n 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,\r\n 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, 0xbb132f88,\r\n 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979,\r\n 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc,\r\n 0x782ef11c, 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,\r\n 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, 0x44421659,\r\n 0x0a121386, 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f,\r\n 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, 0x60787bf8,\r\n 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,\r\n 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be,\r\n 0xbde8ae24, 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2,\r\n 0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255,\r\n 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,\r\n 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, 0xb90bace1,\r\n 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09,\r\n 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025,\r\n 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,\r\n 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01,\r\n 0xa70683fa, 0xa002b5c4, 0x0de6d027, 0x9af88c27, 0x773f8641,\r\n 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, 0x006058aa,\r\n 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,\r\n 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409,\r\n 0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9,\r\n 0x1ac15bb4, 0xd39eb8fc, 0xed545578, 0x08fca5b5, 0xd83d7cd3,\r\n 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,\r\n 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, 0xd79a3234,\r\n 0x92638212, 0x670efa8e, 0x406000e0, 0x3a39ce37, 0xd3faf5cf,\r\n 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, 0xd3822740,\r\n 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,\r\n 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f,\r\n 0xbc946e79, 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d,\r\n 0xd5730a1d, 0x4cd04dc6, 0x2939bbdb, 0xa9ba4650, 0xac9526e8,\r\n 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,\r\n 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, 0x83c061ba,\r\n 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1,\r\n 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69,\r\n 0x77fa0a59, 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,\r\n 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a,\r\n 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, 0x1f9f25cf, 0xadf2b89b,\r\n 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6, 0x47b0acfd,\r\n 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,\r\n 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4,\r\n 0x88f46dba, 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2,\r\n 0x97271aec, 0xa93a072a, 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb,\r\n 0x26dcf319, 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,\r\n 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, 0x4de81751,\r\n 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,\r\n 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369,\r\n 0x6413e680, 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,\r\n 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd,\r\n 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, 0xdda26a7e, 0x3a59ff45,\r\n 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, 0x8d6612ae,\r\n 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,\r\n 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08,\r\n 0x4eb4e2cc, 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d,\r\n 0x06b89fb4, 0xce6ea048, 0x6f3f3b82, 0x3520ab82, 0x011a1d4b,\r\n 0x277227f8, 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,\r\n 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, 0xe01cc87e,\r\n 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a,\r\n 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c,\r\n 0xe0b12b4f, 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,\r\n 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, 0xfae59361,\r\n 0xceb69ceb, 0xc2a86459, 0x12baa8d1, 0xb6c1075e, 0xe3056a0c,\r\n 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be,\r\n 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,\r\n 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d,\r\n 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891,\r\n 0xce6279cf, 0xcd3e7e6f, 0x1618b166, 0xfd2c1d05, 0x848fd2c5,\r\n 0xf6fb2299, 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,\r\n 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, 0xde966292,\r\n 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a,\r\n 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2,\r\n 0x35bdd2f6, 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,\r\n 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, 0xba38209c,\r\n 0xf746ce76, 0x77afa1c5, 0x20756060, 0x85cbfe4e, 0x8ae88dd8,\r\n 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, 0x01c36ae4,\r\n 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,\r\n 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6\r\n ];\r\n\r\n /**\r\n * @type {Array.<number>}\r\n * @const\r\n * @inner\r\n */\r\n var C_ORIG = [\r\n 0x4f727068, 0x65616e42, 0x65686f6c, 0x64657253, 0x63727944,\r\n 0x6f756274\r\n ];\r\n\r\n /**\r\n * @param {Array.<number>} lr\r\n * @param {number} off\r\n * @param {Array.<number>} P\r\n * @param {Array.<number>} S\r\n * @returns {Array.<number>}\r\n * @inner\r\n */\r\n function _encipher(lr, off, P, S) { // This is our bottleneck: 1714/1905 ticks / 90% - see profile.txt\r\n var n,\r\n l = lr[off],\r\n r = lr[off + 1];\r\n\r\n l ^= P[0];\r\n\r\n /*\r\n for (var i=0, k=BLOWFISH_NUM_ROUNDS-2; i<=k;)\r\n // Feistel substitution on left word\r\n n = S[l >>> 24],\r\n n += S[0x100 | ((l >> 16) & 0xff)],\r\n n ^= S[0x200 | ((l >> 8) & 0xff)],\r\n n += S[0x300 | (l & 0xff)],\r\n r ^= n ^ P[++i],\r\n // Feistel substitution on right word\r\n n = S[r >>> 24],\r\n n += S[0x100 | ((r >> 16) & 0xff)],\r\n n ^= S[0x200 | ((r >> 8) & 0xff)],\r\n n += S[0x300 | (r & 0xff)],\r\n l ^= n ^ P[++i];\r\n */\r\n\r\n //The following is an unrolled version of the above loop.\r\n //Iteration 0\r\n n = S[l >>> 24];\r\n n += S[0x100 | ((l >> 16) & 0xff)];\r\n n ^= S[0x200 | ((l >> 8) & 0xff)];\r\n n += S[0x300 | (l & 0xff)];\r\n r ^= n ^ P[1];\r\n n = S[r >>> 24];\r\n n += S[0x100 | ((r >> 16) & 0xff)];\r\n n ^= S[0x200 | ((r >> 8) & 0xff)];\r\n n += S[0x300 | (r & 0xff)];\r\n l ^= n ^ P[2];\r\n //Iteration 1\r\n n = S[l >>> 24];\r\n n += S[0x100 | ((l >> 16) & 0xff)];\r\n n ^= S[0x200 | ((l >> 8) & 0xff)];\r\n n += S[0x300 | (l & 0xff)];\r\n r ^= n ^ P[3];\r\n n = S[r >>> 24];\r\n n += S[0x100 | ((r >> 16) & 0xff)];\r\n n ^= S[0x200 | ((r >> 8) & 0xff)];\r\n n += S[0x300 | (r & 0xff)];\r\n l ^= n ^ P[4];\r\n //Iteration 2\r\n n = S[l >>> 24];\r\n n += S[0x100 | ((l >> 16) & 0xff)];\r\n n ^= S[0x200 | ((l >> 8) & 0xff)];\r\n n += S[0x300 | (l & 0xff)];\r\n r ^= n ^ P[5];\r\n n = S[r >>> 24];\r\n n += S[0x100 | ((r >> 16) & 0xff)];\r\n n ^= S[0x200 | ((r >> 8) & 0xff)];\r\n n += S[0x300 | (r & 0xff)];\r\n l ^= n ^ P[6];\r\n //Iteration 3\r\n n = S[l >>> 24];\r\n n += S[0x100 | ((l >> 16) & 0xff)];\r\n n ^= S[0x200 | ((l >> 8) & 0xff)];\r\n n += S[0x300 | (l & 0xff)];\r\n r ^= n ^ P[7];\r\n n = S[r >>> 24];\r\n n += S[0x100 | ((r >> 16) & 0xff)];\r\n n ^= S[0x200 | ((r >> 8) & 0xff)];\r\n n += S[0x300 | (r & 0xff)];\r\n l ^= n ^ P[8];\r\n //Iteration 4\r\n n = S[l >>> 24];\r\n n += S[0x100 | ((l >> 16) & 0xff)];\r\n n ^= S[0x200 | ((l >> 8) & 0xff)];\r\n n += S[0x300 | (l & 0xff)];\r\n r ^= n ^ P[9];\r\n n = S[r >>> 24];\r\n n += S[0x100 | ((r >> 16) & 0xff)];\r\n n ^= S[0x200 | ((r >> 8) & 0xff)];\r\n n += S[0x300 | (r & 0xff)];\r\n l ^= n ^ P[10];\r\n //Iteration 5\r\n n = S[l >>> 24];\r\n n += S[0x100 | ((l >> 16) & 0xff)];\r\n n ^= S[0x200 | ((l >> 8) & 0xff)];\r\n n += S[0x300 | (l & 0xff)];\r\n r ^= n ^ P[11];\r\n n = S[r >>> 24];\r\n n += S[0x100 | ((r >> 16) & 0xff)];\r\n n ^= S[0x200 | ((r >> 8) & 0xff)];\r\n n += S[0x300 | (r & 0xff)];\r\n l ^= n ^ P[12];\r\n //Iteration 6\r\n n = S[l >>> 24];\r\n n += S[0x100 | ((l >> 16) & 0xff)];\r\n n ^= S[0x200 | ((l >> 8) & 0xff)];\r\n n += S[0x300 | (l & 0xff)];\r\n r ^= n ^ P[13];\r\n n = S[r >>> 24];\r\n n += S[0x100 | ((r >> 16) & 0xff)];\r\n n ^= S[0x200 | ((r >> 8) & 0xff)];\r\n n += S[0x300 | (r & 0xff)];\r\n l ^= n ^ P[14];\r\n //Iteration 7\r\n n = S[l >>> 24];\r\n n += S[0x100 | ((l >> 16) & 0xff)];\r\n n ^= S[0x200 | ((l >> 8) & 0xff)];\r\n n += S[0x300 | (l & 0xff)];\r\n r ^= n ^ P[15];\r\n n = S[r >>> 24];\r\n n += S[0x100 | ((r >> 16) & 0xff)];\r\n n ^= S[0x200 | ((r >> 8) & 0xff)];\r\n n += S[0x300 | (r & 0xff)];\r\n l ^= n ^ P[16];\r\n\r\n lr[off] = r ^ P[BLOWFISH_NUM_ROUNDS + 1];\r\n lr[off + 1] = l;\r\n return lr;\r\n }\r\n\r\n /**\r\n * @param {Array.<number>} data\r\n * @param {number} offp\r\n * @returns {{key: number, offp: number}}\r\n * @inner\r\n */\r\n function _streamtoword(data, offp) {\r\n for (var i = 0, word = 0; i < 4; ++i)\r\n word = (word << 8) | (data[offp] & 0xff),\r\n offp = (offp + 1) % data.length;\r\n return { key: word, offp: offp };\r\n }\r\n\r\n /**\r\n * @param {Array.<number>} key\r\n * @param {Array.<number>} P\r\n * @param {Array.<number>} S\r\n * @inner\r\n */\r\n function _key(key, P, S) {\r\n var offset = 0,\r\n lr = [0, 0],\r\n plen = P.length,\r\n slen = S.length,\r\n sw;\r\n for (var i = 0; i < plen; i++)\r\n sw = _streamtoword(key, offset),\r\n offset = sw.offp,\r\n P[i] = P[i] ^ sw.key;\r\n for (i = 0; i < plen; i += 2)\r\n lr = _encipher(lr, 0, P, S),\r\n P[i] = lr[0],\r\n P[i + 1] = lr[1];\r\n for (i = 0; i < slen; i += 2)\r\n lr = _encipher(lr, 0, P, S),\r\n S[i] = lr[0],\r\n S[i + 1] = lr[1];\r\n }\r\n\r\n /**\r\n * Expensive key schedule Blowfish.\r\n * @param {Array.<number>} data\r\n * @param {Array.<number>} key\r\n * @param {Array.<number>} P\r\n * @param {Array.<number>} S\r\n * @inner\r\n */\r\n function _ekskey(data, key, P, S) {\r\n var offp = 0,\r\n lr = [0, 0],\r\n plen = P.length,\r\n slen = S.length,\r\n sw;\r\n for (var i = 0; i < plen; i++)\r\n sw = _streamtoword(key, offp),\r\n offp = sw.offp,\r\n P[i] = P[i] ^ sw.key;\r\n offp = 0;\r\n for (i = 0; i < plen; i += 2)\r\n sw = _streamtoword(data, offp),\r\n offp = sw.offp,\r\n lr[0] ^= sw.key,\r\n sw = _streamtoword(data, offp),\r\n offp = sw.offp,\r\n lr[1] ^= sw.key,\r\n lr = _encipher(lr, 0, P, S),\r\n P[i] = lr[0],\r\n P[i + 1] = lr[1];\r\n for (i = 0; i < slen; i += 2)\r\n sw = _streamtoword(data, offp),\r\n offp = sw.offp,\r\n lr[0] ^= sw.key,\r\n sw = _streamtoword(data, offp),\r\n offp = sw.offp,\r\n lr[1] ^= sw.key,\r\n lr = _encipher(lr, 0, P, S),\r\n S[i] = lr[0],\r\n S[i + 1] = lr[1];\r\n }\r\n\r\n /**\r\n * Internaly crypts a string.\r\n * @param {Array.<number>} b Bytes to crypt\r\n * @param {Array.<number>} salt Salt bytes to use\r\n * @param {number} rounds Number of rounds\r\n * @param {function(Error, Array.<number>=)=} callback Callback receiving the error, if any, and the resulting bytes. If\r\n * omitted, the operation will be performed synchronously.\r\n * @param {function(number)=} progressCallback Callback called with the current progress\r\n * @returns {!Array.<number>|undefined} Resulting bytes if callback has been omitted, otherwise `undefined`\r\n * @inner\r\n */\r\n function _crypt(b, salt, rounds, callback, progressCallback) {\r\n var cdata = C_ORIG.slice(),\r\n clen = cdata.length,\r\n err;\r\n\r\n // Validate\r\n if (rounds < 4 || rounds > 31) {\r\n err = Error(\"Illegal number of rounds (4-31): \"+rounds);\r\n if (callback) {\r\n nextTick(callback.bind(this, err));\r\n return;\r\n } else\r\n throw err;\r\n }\r\n if (salt.length !== BCRYPT_SALT_LEN) {\r\n err =Error(\"Illegal salt length: \"+salt.length+\" != \"+BCRYPT_SALT_LEN);\r\n if (callback) {\r\n nextTick(callback.bind(this, err));\r\n return;\r\n } else\r\n throw err;\r\n }\r\n rounds = (1 << rounds) >>> 0;\r\n\r\n var P, S, i = 0, j;\r\n\r\n //Use typed arrays when available - huge speedup!\r\n if (Int32Array) {\r\n P = new Int32Array(P_ORIG);\r\n S = new Int32Array(S_ORIG);\r\n } else {\r\n P = P_ORIG.slice();\r\n S = S_ORIG.slice();\r\n }\r\n\r\n _ekskey(salt, b, P, S);\r\n\r\n /**\r\n * Calcualtes the next round.\r\n * @returns {Array.<number>|undefined} Resulting array if callback has been omitted, otherwise `undefined`\r\n * @inner\r\n */\r\n function next() {\r\n if (progressCallback)\r\n progressCallback(i / rounds);\r\n if (i < rounds) {\r\n var start = Date.now();\r\n for (; i < rounds;) {\r\n i = i + 1;\r\n _key(b, P, S);\r\n _key(salt, P, S);\r\n if (Date.now() - start > MAX_EXECUTION_TIME)\r\n break;\r\n }\r\n } else {\r\n for (i = 0; i < 64; i++)\r\n for (j = 0; j < (clen >> 1); j++)\r\n _encipher(cdata, j << 1, P, S);\r\n var ret = [];\r\n for (i = 0; i < clen; i++)\r\n ret.push(((cdata[i] >> 24) & 0xff) >>> 0),\r\n ret.push(((cdata[i] >> 16) & 0xff) >>> 0),\r\n ret.push(((cdata[i] >> 8) & 0xff) >>> 0),\r\n ret.push((cdata[i] & 0xff) >>> 0);\r\n if (callback) {\r\n callback(null, ret);\r\n return;\r\n } else\r\n return ret;\r\n }\r\n if (callback)\r\n nextTick(next);\r\n }\r\n\r\n // Async\r\n if (typeof callback !== 'undefined') {\r\n next();\r\n\r\n // Sync\r\n } else {\r\n var res;\r\n while (true)\r\n if (typeof(res = next()) !== 'undefined')\r\n return res || [];\r\n }\r\n }\r\n\r\n /**\r\n * Internally hashes a string.\r\n * @param {string} s String to hash\r\n * @param {?string} salt Salt to use, actually never null\r\n * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting hash. If omitted,\r\n * hashing is perormed synchronously.\r\n * @param {function(number)=} progressCallback Callback called with the current progress\r\n * @returns {string|undefined} Resulting hash if callback has been omitted, otherwise `undefined`\r\n * @inner\r\n */\r\n function _hash(s, salt, callback, progressCallback) {\r\n var err;\r\n if (typeof s !== 'string' || typeof salt !== 'string') {\r\n err = Error(\"Invalid string / salt: Not a string\");\r\n if (callback) {\r\n nextTick(callback.bind(this, err));\r\n return;\r\n }\r\n else\r\n throw err;\r\n }\r\n\r\n // Validate the salt\r\n var minor, offset;\r\n if (salt.charAt(0) !== '$' || salt.charAt(1) !== '2') {\r\n err = Error(\"Invalid salt version: \"+salt.substring(0,2));\r\n if (callback) {\r\n nextTick(callback.bind(this, err));\r\n return;\r\n }\r\n else\r\n throw err;\r\n }\r\n if (salt.charAt(2) === '$')\r\n minor = String.fromCharCode(0),\r\n offset = 3;\r\n else {\r\n minor = salt.charAt(2);\r\n if ((minor !== 'a' && minor !== 'b' && minor !== 'y') || salt.charAt(3) !== '$') {\r\n err = Error(\"Invalid salt revision: \"+salt.substring(2,4));\r\n if (callback) {\r\n nextTick(callback.bind(this, err));\r\n return;\r\n } else\r\n throw err;\r\n }\r\n offset = 4;\r\n }\r\n\r\n // Extract number of rounds\r\n if (salt.charAt(offset + 2) > '$') {\r\n err = Error(\"Missing salt rounds\");\r\n if (callback) {\r\n nextTick(callback.bind(this, err));\r\n return;\r\n } else\r\n throw err;\r\n }\r\n var r1 = parseInt(salt.substring(offset, offset + 1), 10) * 10,\r\n r2 = parseInt(salt.substring(offset + 1, offset + 2), 10),\r\n rounds = r1 + r2,\r\n real_salt = salt.substring(offset + 3, offset + 25);\r\n s += minor >= 'a' ? \"\\x00\" : \"\";\r\n\r\n var passwordb = stringToBytes(s),\r\n saltb = base64_decode(real_salt, BCRYPT_SALT_LEN);\r\n\r\n /**\r\n * Finishes hashing.\r\n * @param {Array.<number>} bytes Byte array\r\n * @returns {string}\r\n * @inner\r\n */\r\n function finish(bytes) {\r\n var res = [];\r\n res.push(\"$2\");\r\n if (minor >= 'a')\r\n res.push(minor);\r\n res.push(\"$\");\r\n if (rounds < 10)\r\n res.push(\"0\");\r\n res.push(rounds.toString());\r\n res.push(\"$\");\r\n res.push(base64_encode(saltb, saltb.length));\r\n res.push(base64_encode(bytes, C_ORIG.length * 4 - 1));\r\n return res.join('');\r\n }\r\n\r\n // Sync\r\n if (typeof callback == 'undefined')\r\n return finish(_crypt(passwordb, saltb, rounds));\r\n\r\n // Async\r\n else {\r\n _crypt(passwordb, saltb, rounds, function(err, bytes) {\r\n if (err)\r\n callback(err, null);\r\n else\r\n callback(null, finish(bytes));\r\n }, progressCallback);\r\n }\r\n }\r\n\r\n /**\r\n * Encodes a byte array to base64 with up to len bytes of input, using the custom bcrypt alphabet.\r\n * @function\r\n * @param {!Array.<number>} b Byte array\r\n * @param {number} len Maximum input length\r\n * @returns {string}\r\n * @expose\r\n */\r\n bcrypt.encodeBase64 = base64_encode;\r\n\r\n /**\r\n * Decodes a base64 encoded string to up to len bytes of output, using the custom bcrypt alphabet.\r\n * @function\r\n * @param {string} s String to decode\r\n * @param {number} len Maximum output length\r\n * @returns {!Array.<number>}\r\n * @expose\r\n */\r\n bcrypt.decodeBase64 = base64_decode;\r\n\r\n return bcrypt;\r\n}));\r\n","const FOV_DEFAULT = 90\nconst FOV_MAX = 130\nconst FOV_MIN = 20\n\nexport { FOV_DEFAULT, FOV_MIN, FOV_MAX }\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.error[data-v-20a45214] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: #000;\\n}\\n.error-message[data-v-20a45214] {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n color: #fff;\\n text-align: center;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/error-message.vue\"],\"names\":[],\"mappings\":\";AAqBA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,sBAAA;AACA;AACA;EACA,kBAAA;EACA,QAAA;EACA,SAAA;EACA,gCAAA;EACA,WAAA;EACA,kBAAA;AACA\",\"sourcesContent\":[\"<template>\\n <div class=\\\"error\\\" v-if=\\\"errorMessage\\\">\\n <div class=\\\"error-message\\\">\\n {{ errorMessage }}\\n </div>\\n </div>\\n</template>\\n\\n<script>\\nimport { mapState } from 'vuex'\\n\\nexport default {\\n computed: {\\n ...mapState('panorama', [\\n 'errorMessage'\\n ])\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.error {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: #000;\\n}\\n.error-message {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n color: #fff;\\n text-align: center;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.wrap[data-v-9cee9d6e] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/item/item-celestial-sphere-image.vue\"],\"names\":[],\"mappings\":\";AAkFA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<template>\\n <transition appear\\n @before-enter=\\\"beforeEnter\\\"\\n @enter=\\\"enter\\\"\\n @after-enter=\\\"afterEnter\\\"\\n @before-leave=\\\"beforeLeave\\\"\\n @leave=\\\"leave\\\"\\n @after-leave=\\\"afterLeave\\\"\\n :css=\\\"false\\\"\\n >\\n <div class=\\\"wrap\\\"\\n v-hammer:tap=\\\"$_onTap\\\"\\n v-hammer:panstart=\\\"$_onPanStart\\\"\\n v-hammer:pan=\\\"$_onPan\\\"\\n v-hammer:panend=\\\"$_onPanEnd\\\"\\n v-hammer:pinchstart=\\\"$_onPinchStart\\\"\\n v-hammer:pinch=\\\"$_onPinch\\\"\\n v-hammer:pinchend=\\\"$_onPinchEnd\\\"\\n :hammer-options.prop=\\\"{pan: { direction: 'all', threshold: 5 }, pinch: { enable: true }}\\\"\\n >\\n </div>\\n </transition>\\n</template>\\n\\n<script>\\nimport * as THREE from 'three'\\nimport { mapState, mapGetters, mapMutations } from 'vuex'\\n\\nimport transition3d from './mixins/transition3d'\\nimport gesture from './mixins/gesture'\\n\\nimport ItemCelestialSphereImageObject from './item-celestial-sphere-image-object'\\n\\nexport default {\\n mixins: [ transition3d, gesture ],\\n\\n props: ['threeContext'],\\n\\n data() {\\n return {\\n object: null\\n }\\n },\\n\\n computed: {\\n ...mapState('panorama', [\\n 'airtagInformationActive'\\n ]),\\n ...mapGetters('panorama', [\\n 'itemComponentInfo',\\n 'itemBrightness'\\n ])\\n },\\n\\n watch: {\\n airtagInformationActive () {\\n this.setIgnoreAutoRotation(this.airtagInformationActive)\\n }\\n },\\n\\n methods: {\\n ...mapMutations('panorama', [\\n 'setIgnoreAutoRotation',\\n ]),\\n\\n // transition3d(-base) から呼び出す。\\n dispose () {\\n this.threeContext.removeItemObject(this.object.inner)\\n this.object.dispose()\\n }\\n },\\n\\n created () {\\n this.object = new ItemCelestialSphereImageObject(this.$store, this.itemComponentInfo)\\n this.object.setBrightness(this.itemBrightness)\\n\\n this.threeContext.addItemObject(this.object.inner)\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.wrap {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.item-celestial-sphere-video[data-v-0e81a9ba] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n}\\n.video[data-v-0e81a9ba] {\\n position: fixed;\\n top: 100%;\\n left: 100%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/item/item-celestial-sphere-video.vue\"],\"names\":[],\"mappings\":\";AA2GA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;AACA;AACA;EACA,eAAA;EACA,SAAA;EACA,UAAA;AACA\",\"sourcesContent\":[\"<template>\\n <transition appear\\n @before-enter=\\\"beforeEnter\\\"\\n @enter=\\\"enter\\\"\\n @after-enter=\\\"afterEnter\\\"\\n @before-leave=\\\"beforeLeave\\\"\\n @leave=\\\"leave\\\"\\n @after-leave=\\\"afterLeave\\\"\\n :css=\\\"false\\\"\\n >\\n <div class=\\\"item-celestial-sphere-video\\\"\\n v-hammer:tap=\\\"$_onTap\\\"\\n v-hammer:panstart=\\\"$_onPanStart\\\"\\n v-hammer:pan=\\\"$_onPan\\\"\\n v-hammer:panend=\\\"$_onPanEnd\\\"\\n v-hammer:pinchstart=\\\"$_onPinchStart\\\"\\n v-hammer:pinch=\\\"$_onPinch\\\"\\n v-hammer:pinchend=\\\"$_onPinchEnd\\\"\\n :hammer-options.prop=\\\"{pan: { direction: 'all', threshold: 5 }, pinch: { enable: true }}\\\"\\n >\\n <div class=\\\"video\\\" />\\n <video-overlay\\n :overlay-video-play-button=\\\"overlayVideoPlayButton\\\"\\n :overlay-video-replay-button=\\\"overlayVideoReplayButton\\\"\\n @playVideo=\\\"playVideo\\\"\\n />\\n </div>\\n </transition>\\n</template>\\n\\n<script>\\nimport { mapState, mapGetters } from 'vuex'\\n\\nimport transition3d from './mixins/transition3d'\\nimport gesture from './mixins/gesture'\\nimport videoPlayer from './mixins/video-player'\\n\\nimport VideoOverlay from './video-overlay'\\n\\nimport ItemCelestialSphereVideoObject from './item-celestial-sphere-video-object'\\n\\nexport default {\\n mixins: [ transition3d, gesture, videoPlayer ],\\n components: { VideoOverlay },\\n\\n props: ['threeContext'],\\n\\n data () {\\n return {\\n object: null,\\n restoreVideoPlaying: false\\n }\\n },\\n\\n computed: {\\n video: {\\n cache: false,\\n get() {\\n return this.object.video\\n }\\n },\\n ...mapState('panorama', [\\n 'airtagInformationActive',\\n 'videoPlaying',\\n 'videoCurrentTime'\\n ]),\\n ...mapGetters('panorama', [\\n 'itemComponentInfo',\\n 'itemBrightness'\\n ])\\n },\\n\\n watch: {\\n airtagInformationActive () {\\n if (this.airtagInformationActive) {\\n this.restoreVideoPlaying = this.videoPlaying\\n this.pauseVideo()\\n } else {\\n if (this.restoreVideoPlaying) {\\n this.playVideo()\\n }\\n }\\n },\\n\\n videoCurrentTime () {\\n this.object.updateShowByTimeAirtags(this.videoCurrentTime)\\n }\\n },\\n\\n methods: {\\n // transition3d(-base) から呼び出す。\\n dispose () {\\n this.threeContext.removeItemObject(this.object.inner)\\n this.object.dispose()\\n }\\n },\\n\\n created () {\\n this.object = new ItemCelestialSphereVideoObject(this.$store, this.itemComponentInfo)\\n this.object.setBrightness(this.itemBrightness)\\n\\n this.threeContext.addItemObject(this.object.inner)\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.item-celestial-sphere-video {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n}\\n.video {\\n position: fixed;\\n top: 100%;\\n left: 100%;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n#item-empty[data-v-bc6da550] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: #000;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/item/item-empty.vue\"],\"names\":[],\"mappings\":\";AAyBA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,sBAAA;AACA\",\"sourcesContent\":[\"<template>\\n <div id=\\\"item-empty\\\" v-hammer:tap=\\\"onTap\\\" />\\n</template>\\n\\n<script>\\nimport { mapMutations } from 'vuex'\\n\\nexport default {\\n methods: {\\n onTap(e) {\\n this.$emit('tap', e)\\n },\\n\\n ...mapMutations('panorama', [\\n 'setPanoramaZoomEnabled',\\n ])\\n },\\n\\n mounted () {\\n this.setPanoramaZoomEnabled(false)\\n }\\n}\\n</script>\\n\\n<style scoped>\\n#item-empty {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: #000;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.wrap[data-v-aed56588] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/item/item-fisheye-image.vue\"],\"names\":[],\"mappings\":\";AAgFA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<template>\\n <transition appear\\n @before-enter=\\\"beforeEnter\\\"\\n @enter=\\\"enter\\\"\\n @after-enter=\\\"afterEnter\\\"\\n @before-leave=\\\"beforeLeave\\\"\\n @leave=\\\"leave\\\"\\n @after-leave=\\\"afterLeave\\\"\\n :css=\\\"false\\\"\\n >\\n <div class=\\\"wrap\\\"\\n v-hammer:tap=\\\"$_onTap\\\"\\n v-hammer:panstart=\\\"$_onPanStart\\\"\\n v-hammer:pan=\\\"$_onPan\\\"\\n v-hammer:panend=\\\"$_onPanEnd\\\"\\n v-hammer:pinchstart=\\\"$_onPinchStart\\\"\\n v-hammer:pinch=\\\"$_onPinch\\\"\\n v-hammer:pinchend=\\\"$_onPinchEnd\\\"\\n :hammer-options.prop=\\\"{pan: { direction: 'all', threshold: 5 }, pinch: { enable: true }}\\\"\\n >\\n </div>\\n </transition>\\n</template>\\n\\n<script>\\nimport { mapState, mapGetters, mapMutations } from 'vuex'\\n\\nimport transition3d from './mixins/transition3d'\\nimport gesture from './mixins/gesture'\\n\\nimport ItemFisheyeImageObject from './item-fisheye-image-object'\\n\\nexport default {\\n mixins: [ transition3d, gesture ],\\n\\n props: ['threeContext'],\\n\\n data() {\\n return {\\n object: null\\n }\\n },\\n\\n computed: {\\n ...mapState('panorama', [\\n 'airtagInformationActive'\\n ]),\\n ...mapGetters('panorama', [\\n 'itemComponentInfo',\\n 'itemBrightness'\\n ])\\n },\\n\\n watch: {\\n airtagInformationActive () {\\n this.setIgnoreAutoRotation(this.airtagInformationActive)\\n }\\n },\\n\\n methods: {\\n ...mapMutations('panorama', [\\n 'setIgnoreAutoRotation',\\n ]),\\n\\n // transition3d(-base) から呼び出す。\\n dispose () {\\n this.threeContext.removeItemObject(this.object.inner)\\n this.object.dispose()\\n }\\n },\\n\\n created () {\\n this.object = new ItemFisheyeImageObject(this.$store, this.itemComponentInfo)\\n this.object.setBrightness(this.itemBrightness)\\n this.threeContext.addItemObject(this.object.inner)\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.wrap {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.item-celestial-sphere-video[data-v-118beda8] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n}\\n.video[data-v-118beda8] {\\n position: fixed;\\n top: 100%;\\n left: 100%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/item/item-fisheye-video.vue\"],\"names\":[],\"mappings\":\";AA4GA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;AACA;AACA;EACA,eAAA;EACA,SAAA;EACA,UAAA;AACA\",\"sourcesContent\":[\"<template>\\n <transition appear\\n @before-enter=\\\"beforeEnter\\\"\\n @enter=\\\"enter\\\"\\n @after-enter=\\\"afterEnter\\\"\\n @before-leave=\\\"beforeLeave\\\"\\n @leave=\\\"leave\\\"\\n @after-leave=\\\"afterLeave\\\"\\n :css=\\\"false\\\"\\n >\\n <div class=\\\"item-celestial-sphere-video\\\"\\n v-hammer:tap=\\\"$_onTap\\\"\\n v-hammer:panstart=\\\"$_onPanStart\\\"\\n v-hammer:pan=\\\"$_onPan\\\"\\n v-hammer:panend=\\\"$_onPanEnd\\\"\\n v-hammer:pinchstart=\\\"$_onPinchStart\\\"\\n v-hammer:pinch=\\\"$_onPinch\\\"\\n v-hammer:pinchend=\\\"$_onPinchEnd\\\"\\n :hammer-options.prop=\\\"{pan: { direction: 'all', threshold: 5 }, pinch: { enable: true }}\\\"\\n >\\n <div class=\\\"video\\\" />\\n <video-overlay\\n :overlay-video-play-button=\\\"overlayVideoPlayButton\\\"\\n :overlay-video-replay-button=\\\"overlayVideoReplayButton\\\"\\n @playVideo=\\\"playVideo\\\"\\n />\\n </div>\\n </transition>\\n</template>\\n\\n<script>\\nimport { mapState, mapGetters } from 'vuex'\\n\\nimport transition3d from './mixins/transition3d'\\nimport gesture from './mixins/gesture'\\nimport videoPlayer from './mixins/video-player'\\n\\nimport VideoOverlay from './video-overlay'\\n\\nimport ItemFisheyeVideoObject from './item-fisheye-video-object'\\n\\nexport default {\\n mixins: [ transition3d, gesture, videoPlayer ],\\n components: { VideoOverlay },\\n\\n props: ['threeContext'],\\n\\n data () {\\n return {\\n object: null,\\n restoreVideoPlaying: false\\n }\\n },\\n\\n computed: {\\n video: {\\n cache: false,\\n get() {\\n return this.object.video\\n }\\n },\\n\\n ...mapState('panorama', [\\n 'airtagInformationActive',\\n 'videoPlaying',\\n 'videoCurrentTime'\\n ]),\\n ...mapGetters('panorama', [\\n 'itemComponentInfo',\\n 'itemBrightness'\\n ])\\n },\\n\\n watch: {\\n airtagInformationActive () {\\n if (this.airtagInformationActive) {\\n this.restoreVideoPlaying = this.videoPlaying\\n this.pauseVideo()\\n } else {\\n if (this.restoreVideoPlaying) {\\n this.playVideo()\\n }\\n }\\n },\\n\\n videoCurrentTime () {\\n this.object.updateShowByTimeAirtags(this.videoCurrentTime)\\n }\\n },\\n\\n methods: {\\n // transition3d(-base) から呼び出す。\\n dispose () {\\n this.threeContext.removeItemObject(this.object.inner)\\n this.object.dispose()\\n }\\n },\\n\\n created () {\\n this.object = new ItemFisheyeVideoObject(this.$store, this.itemComponentInfo)\\n this.object.setBrightness(this.itemBrightness)\\n\\n this.threeContext.addItemObject(this.object.inner)\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.item-celestial-sphere-video {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n}\\n.video {\\n position: fixed;\\n top: 100%;\\n left: 100%;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.item-image[data-v-60ec44ea] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: #000;\\n background-size: contain;\\n background-repeat: no-repeat;\\n background-position: center center;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/item/item-image.vue\"],\"names\":[],\"mappings\":\";AA6CA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,sBAAA;EACA,wBAAA;EACA,4BAAA;EACA,kCAAA;AACA\",\"sourcesContent\":[\"<template>\\n <transition appear\\n @before-enter=\\\"beforeEnter\\\"\\n @enter=\\\"enter\\\"\\n @after-enter=\\\"afterEnter\\\"\\n @before-leave=\\\"beforeLeave\\\"\\n @leave=\\\"leave\\\"\\n @after-leave=\\\"afterLeave\\\"\\n :css=\\\"false\\\"\\n >\\n <div class=\\\"item-image\\\" :style=\\\"style\\\" v-hammer:tap=\\\"onTap\\\" />\\n </transition>\\n</template>\\n\\n<script>\\nimport { mapGetters } from 'vuex'\\n\\nimport transition2d from './mixins/transition2d'\\n\\nexport default {\\n mixins: [ transition2d ],\\n\\n computed: {\\n ...mapGetters('panorama', [\\n 'itemComponentInfo',\\n 'itemBrightness'\\n ]),\\n style () {\\n return {\\n 'background-image': `url(\\\"${this.itemComponentInfo.img}\\\")`,\\n 'filter': `brightness(${this.itemBrightness})`\\n }\\n }\\n },\\n\\n methods: {\\n onTap(e) {\\n console.log('onTap')\\n this.$emit('tap', e)\\n }\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.item-image {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: #000;\\n background-size: contain;\\n background-repeat: no-repeat;\\n background-position: center center;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.item-swing-image[data-v-069feb4b] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: #000;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/item/item-swing-image.vue\"],\"names\":[],\"mappings\":\";AAuLA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,sBAAA;AACA\",\"sourcesContent\":[\"<template>\\n <transition appear\\n @before-enter=\\\"beforeEnter\\\"\\n @enter=\\\"enter\\\"\\n @after-enter=\\\"afterEnter\\\"\\n @before-leave=\\\"beforeLeave\\\"\\n @leave=\\\"leave\\\"\\n @after-leave=\\\"afterLeave\\\"\\n :css=\\\"false\\\"\\n >\\n <div class=\\\"item-swing-image\\\"\\n v-hammer:tap=\\\"onTap\\\" v-hammer:pan=\\\"onPan\\\" v-hammer:panstart=\\\"onPanStart\\\"\\n :hammer-options.prop=\\\"{pan: { direction: 'all', threshold: 0 }}\\\"\\n >\\n <img \\n ref=\\\"image\\\"\\n :src=\\\"itemComponentInfo.img\\\"\\n :style=\\\"imageStyle\\\"\\n @load=\\\"onLoad\\\"\\n @copy=\\\"onCopy($event)\\\"\\n />\\n </div>\\n </transition>\\n</template>\\n\\n<script>\\nimport { mapState, mapGetters, mapMutations } from 'vuex'\\nimport * as THREE from 'three'\\n\\nimport transition2d from './mixins/transition2d'\\n\\nexport default {\\n mixins: [ transition2d ],\\n\\n data () {\\n return {\\n horizontal: true,\\n imageBoxWidth: 0,\\n imageBoxHeight: 0,\\n imageWidth: 0,\\n imageHeight: 0,\\n offsetX: 0,\\n offsetY: 0,\\n speedX: 0,\\n speedY: 0,\\n autoSwing: true\\n }\\n },\\n\\n computed: {\\n ...mapState('panorama', [\\n 'autoRotation'\\n ]),\\n ...mapGetters('panorama', [\\n 'itemComponentInfo',\\n 'itemBrightness'\\n ]),\\n imageStyle () {\\n const transform = `translate(${this.offsetX}px, ${this.offsetY}px)`\\n const filter = `brightness(${this.itemBrightness})`\\n const pointerEvents = 'none'\\n if (this.horizontal) {\\n return { height: '100%', transform, filter, pointerEvents}\\n } else {\\n return { width: '100%', transform, filter, pointerEvents}\\n }\\n },\\n diffWidth () {\\n return this.imageBoxWidth - this.imageWidth\\n },\\n minOffsetX () {\\n return this.diffWidth >= 0 ? this.diffWidth / 2 : this.diffWidth\\n },\\n maxOffsetX () {\\n return this.diffWidth >= 0 ? this.diffWidth / 2 : 0\\n },\\n diffHeight () {\\n return this.imageBoxHeight - this.imageHeight\\n },\\n minOffsetY () {\\n return this.diffHeight >= 0 ? this.diffHeight / 2 : this.diffHeight\\n },\\n maxOffsetY () {\\n return this.diffHeight >= 0 ? this.diffHeight / 2 : 0\\n },\\n },\\n methods: {\\n ...mapMutations('panorama', [\\n 'setAutoRotation'\\n ]),\\n onLoad () {\\n this.horizontal = (this.$refs.image.naturalWidth >= this.$refs.image.naturalHeight)\\n this.$nextTick(() => {\\n this.updateSize()\\n if (this.horizontal) {\\n this.offsetX = this.diffWidth / 2\\n } else {\\n this.offsetY = this.diffHeight / 2\\n }\\n this.animate()\\n })\\n },\\n animate () {\\n if (this.$refs.image) {\\n this.updateSize()\\n if (this.autoRotation) {\\n this.updateOffset()\\n }\\n requestAnimationFrame(this.animate.bind(this))\\n }\\n },\\n updateSize () {\\n this.imageBoxWidth = this.$el.clientWidth\\n this.imageBoxHeight = this.$el.clientHeight\\n if (this.$refs.image) {\\n this.imageWidth = this.$refs.image.width\\n this.imageHeight = this.$refs.image.height\\n\\n // FIXME: diffWidth, diffHeight の計算はここでやるべきでは?\\n }\\n },\\n updateOffset () {\\n this.offsetX -= this.speedX\\n if (this.offsetX < this.minOffsetX || this.offsetX > this.maxOffsetX) {\\n this.speedX *= -1\\n }\\n this.offsetY -= this.speedY\\n if (this.offsetY < this.minOffsetY || this.offsetY > this.maxOffsetY) {\\n this.speedY *= -1\\n }\\n\\n this.offsetX = THREE.MathUtils.clamp(this.offsetX, this.minOffsetX, this.maxOffsetX)\\n this.offsetY = THREE.MathUtils.clamp(this.offsetY, this.minOffsetY, this.maxOffsetY)\\n },\\n\\n onTap(e) {\\n this.$emit('tap', e)\\n },\\n\\n onPanStart(e) {\\n this.setAutoRotation(false)\\n },\\n\\n onPan(e) {\\n this.offsetX += e.velocityX * 20\\n this.offsetY += e.velocityY * 20\\n\\n this.offsetX = THREE.MathUtils.clamp(this.offsetX, this.minOffsetX, this.maxOffsetX)\\n this.offsetY = THREE.MathUtils.clamp(this.offsetY, this.minOffsetY, this.maxOffsetY)\\n },\\n\\n onCopy(event) {\\n event.preventDefault()\\n },\\n },\\n\\n mounted () {\\n const speed = this.itemComponentInfo.cameraSpeed\\n switch (this.itemComponentInfo.cameraPan) {\\n case 'up': this.speedY = -speed; break\\n case 'down': this.speedY = speed; break\\n case 'left': this.speedX = -speed; break\\n case 'right': this.speedX = speed; break\\n }\\n\\n // 画像がドラッグできないようにする。\\n // FIXME: なんかダサい。他の方法ない?\\n this.$refs.image.addEventListener('dragstart', (e) => e.preventDefault())\\n }\\n}\\n</script>\\n\\n<style scoped>\\n .item-swing-image {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: #000;\\n }\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.item-video[data-v-7fc66301] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: #000;\\n}\\n.video[data-v-7fc66301], .video[data-v-7fc66301] video {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n pointer-events: none;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/item/item-video.vue\"],\"names\":[],\"mappings\":\";AAgEA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,sBAAA;AACA;AACA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,oBAAA;AACA\",\"sourcesContent\":[\"<template>\\n <transition appear\\n @before-enter=\\\"beforeEnter\\\"\\n @enter=\\\"enter\\\"\\n @after-enter=\\\"afterEnter\\\"\\n @before-leave=\\\"beforeLeave\\\"\\n @leave=\\\"leave\\\"\\n @after-leave=\\\"afterLeave\\\"\\n :css=\\\"false\\\"\\n >\\n <div class=\\\"item-video\\\" v-hammer:tap=\\\"onTap\\\">\\n <div class=\\\"video\\\" :style=\\\"style\\\" />\\n <video-overlay\\n :overlay-video-play-button=\\\"overlayVideoPlayButton\\\"\\n :overlay-video-replay-button=\\\"overlayVideoReplayButton\\\"\\n @playVideo=\\\"playVideo\\\"\\n />\\n </div>\\n </transition>\\n</template>\\n\\n<script>\\nimport { mapGetters } from 'vuex'\\n\\nimport transition2d from './mixins/transition2d'\\nimport videoPlayer from './mixins/video-player'\\n\\nimport VideoOverlay from './video-overlay'\\nimport MediumElementFactory from '~/shared/medium_element_factory'\\n\\nexport default {\\n mixins: [ transition2d, videoPlayer ],\\n components: { VideoOverlay },\\n\\n computed: {\\n video() {\\n const item = this.itemComponentInfo\\n return MediumElementFactory.createVideo(item.img)\\n },\\n\\n style () {\\n return {\\n 'filter': `brightness(${this.itemBrightness})`\\n }\\n },\\n\\n ...mapGetters('panorama', [\\n 'itemBrightness'\\n ]),\\n },\\n\\n methods: {\\n onTap(e) {\\n console.log('onTap')\\n if (e.target !== this.$el) {\\n return\\n }\\n this.$emit('tap', e)\\n }\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.item-video {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: #000;\\n}\\n.video, .video :deep(video) {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n pointer-events: none;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n#item-view[data-v-6af92e8c] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/item/item-view.vue\"],\"names\":[],\"mappings\":\";AA+FA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<template>\\n <div id=\\\"item-view\\\">\\n <div id=\\\"renderer\\\" :style=\\\"enableCssFilter ? style : ''\\\" />\\n <component\\n :is=\\\"itemComponent\\\"\\n :key=\\\"itemComponentInfo.key\\\"\\n :three-context=\\\"threeContext\\\"\\n @tap=\\\"$emit('tap', $event)\\\"\\n v-if=\\\"itemComponentInfo.id\\\"\\n />\\n </div>\\n</template>\\n\\n<script>\\nimport { mapGetters, mapMutations } from 'vuex'\\nimport ItemImage from './item-image'\\nimport ItemVideo from './item-video'\\nimport ItemCelestialSphereImage from './item-celestial-sphere-image'\\nimport ItemCelestialSphereVideo from './item-celestial-sphere-video'\\nimport ItemFisheyeImage from './item-fisheye-image'\\nimport ItemFisheyeVideo from './item-fisheye-video'\\nimport ItemSwingImage from './item-swing-image'\\nimport ItemEmpty from './item-empty'\\n\\nimport ThreeContext from './three-context'\\n\\nexport default {\\n components: {\\n ItemImage,\\n ItemVideo,\\n ItemCelestialSphereImage,\\n ItemCelestialSphereVideo,\\n ItemFisheyeImage,\\n ItemFisheyeVideo,\\n ItemSwingImage,\\n ItemEmpty\\n },\\n\\n data() {\\n return {\\n threeContext: new ThreeContext(this.$store)\\n }\\n },\\n\\n computed: {\\n ...mapGetters('panorama', [\\n 'itemComponentInfo',\\n 'isVideoFallback',\\n 'itemBrightness'\\n ]),\\n\\n itemComponent () {\\n if (this.isVideoFallback) {\\n return 'item-video'\\n }\\n switch (this.itemComponentInfo.type) {\\n case 'image': return 'item-image'\\n case 'video': return 'item-video'\\n case 'celestial_sphere_image': return 'item-celestial-sphere-image'\\n case 'celestial_sphere_video': return 'item-celestial-sphere-video'\\n case 'fisheye_250_image': return 'item-fisheye-image'\\n case 'fisheye_180_image': return 'item-fisheye-image'\\n case 'chipping_fisheye_image': return 'item-fisheye-image'\\n case 'fisheye_250_video': return 'item-fisheye-video'\\n case 'swing_image': return 'item-swing-image'\\n default: return 'item-empty'\\n }\\n },\\n\\n enableCssFilter () {\\n switch (this.itemComponentInfo.type) {\\n case 'celestial_sphere_image':\\n case 'celestial_sphere_video':\\n case 'fisheye_250_image':\\n case 'fisheye_180_image':\\n case 'chipping_fisheye_image':\\n case 'fisheye_250_video':\\n return false\\n default:\\n return true\\n }\\n },\\n\\n style () {\\n return { 'filter': `brightness(${this.itemBrightness})` }\\n }\\n },\\n\\n mounted () {\\n this.$el.querySelector('#renderer').appendChild(this.threeContext.canvas)\\n }\\n}\\n</script>\\n\\n<style scoped>\\n#item-view {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.overlay[data-v-948ad12a] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(255, 255, 255, 0.5);\\n background-position: center;\\n background-repeat: no-repeat;\\n background-size: cover;\\n}\\n.play-video-button[data-v-948ad12a], .replay-video-button[data-v-948ad12a] {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n color: #666;\\n text-align: center;\\n}\\nimg.play-video[data-v-948ad12a] {\\n width: 60px;\\n height: 60px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/item/video-overlay.vue\"],\"names\":[],\"mappings\":\";AAwCA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,0CAAA;EACA,2BAAA;EACA,4BAAA;EACA,sBAAA;AACA;AACA;EACA,kBAAA;EACA,QAAA;EACA,SAAA;EACA,gCAAA;EACA,WAAA;EACA,kBAAA;AACA;AACA;EACA,WAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<template>\\n <div class=\\\"overlay\\\"\\n @click=\\\"$emit('playVideo')\\\"\\n v-show=\\\"overlayVideoPlayButton || overlayVideoReplayButton\\\"\\n :style=\\\"overlayStyle\\\"\\n >\\n <div class=\\\"play-video-button\\\" v-if=\\\"overlayVideoPlayButton\\\">\\n <img class=\\\"play-video\\\" :src=\\\"theme.icons.overlayVideoPlay\\\">\\n <div>再生する</div>\\n </div>\\n <div class=\\\"replay-video-button\\\" v-if=\\\"overlayVideoReplayButton\\\">\\n <img class=\\\"play-video\\\" :src=\\\"theme.icons.overlayVideoPlay\\\">\\n <div>もう一度再生する</div>\\n </div>\\n </div>\\n</template>\\n\\n<script>\\nimport { mapGetters } from 'vuex'\\n\\nexport default {\\n props: [ 'overlayVideoPlayButton', 'overlayVideoReplayButton' ],\\n\\n computed: {\\n overlayStyle () {\\n if (! this.panoramaThumbUrl) return {}\\n\\n return {\\n 'background-image': `url(${this?.panoramaThumbUrl ?? ''})`,\\n }\\n },\\n ...mapGetters('panorama', [\\n 'theme',\\n 'panoramaThumbUrl',\\n ])\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.overlay {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(255, 255, 255, 0.5);\\n background-position: center;\\n background-repeat: no-repeat;\\n background-size: cover;\\n}\\n.play-video-button, .replay-video-button {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n color: #666;\\n text-align: center;\\n}\\nimg.play-video {\\n width: 60px;\\n height: 60px;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.loading[data-v-26d2eb91] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.2);\\n pointer-events: none;\\n}\\n.spin[data-v-26d2eb91] {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n width: 80px;\\n height: 80px;\\n margin-top: -40px;\\n margin-left: -40px;\\n border: 3px solid #fff;\\n border-right-color: transparent;\\n border-radius: 50%;\\n animation: spin-26d2eb91 1s linear infinite;\\n}\\n@keyframes spin-26d2eb91 {\\n0% {\\n transform: rotate(0deg);\\n opacity: 0.2;\\n}\\n50% {\\n transform: rotate(180deg);\\n opacity: 1;\\n}\\n100% {\\n transform: rotate(360deg);\\n opacity: 0.2;\\n}\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/loading.vue\"],\"names\":[],\"mappings\":\";AAmBA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,oCAAA;EACA,oBAAA;AACA;AACA;EACA,kBAAA;EACA,QAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;EACA,kBAAA;EACA,sBAAA;EACA,+BAAA;EACA,kBAAA;EACA,2CAAA;AACA;AACA;AACA;IACA,uBAAA;IACA,YAAA;AACA;AACA;IACA,yBAAA;IACA,UAAA;AACA;AACA;IACA,yBAAA;IACA,YAAA;AACA;AACA\",\"sourcesContent\":[\"<template>\\n <div class=\\\"loading\\\" v-if=\\\"loading\\\">\\n <div class=\\\"spin\\\" />\\n </div>\\n</template>\\n\\n<script>\\nimport { mapState } from 'vuex'\\n\\nexport default {\\n computed: {\\n ...mapState('panorama', [\\n 'loading'\\n ])\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.loading {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.2);\\n pointer-events: none;\\n}\\n.spin {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n width: 80px;\\n height: 80px;\\n margin-top: -40px;\\n margin-left: -40px;\\n border: 3px solid #fff;\\n border-right-color: transparent;\\n border-radius: 50%;\\n animation: spin 1s linear infinite;\\n}\\n@keyframes spin {\\n 0% {\\n transform: rotate(0deg);\\n opacity: 0.2;\\n }\\n 50% {\\n transform: rotate(180deg);\\n opacity: 1;\\n }\\n 100% {\\n transform: rotate(360deg);\\n opacity: 0.2;\\n }\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\nbody {\\n /* disable pull-to-refresh */\\n overscroll-behavior: none;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/panorama.vue\"],\"names\":[],\"mappings\":\";AA6UA;EACA,4BAAA;EACA,yBAAA;AACA\",\"sourcesContent\":[\"<template>\\n <div id=\\\"panorama\\\">\\n <item-view @tap=\\\"showControls = !showControls\\\" />\\n\\n <loading />\\n\\n <div\\n v-if=\\\"hasDeviceMotionOptInFeature\\\"\\n class=\\\"motion-permission-overlay\\\" >\\n <div class=\\\"motion-permission-modal-wrapper\\\">\\n <div class=\\\"message-text\\\">\\n 次の画面で許可ボタンを<br>押すと端末の向いている<br>方向が見えます。\\n </div>\\n <button\\n class=\\\"button\\\"\\n :style=\\\"{ backgroundColor: theme.color1 }\\\"\\n @click=\\\"requestMotionPermission\\\" >\\n OK\\n </button>\\n </div>\\n </div>\\n\\n <transition name=\\\"fade\\\" v-if=\\\"ready\\\">\\n <ui-full v-if=\\\"uiComponent == 'full'\\\" @hideControls=\\\"showControls = false\\\" id=\\\"ui\\\" />\\n <ui-minimal v-if=\\\"uiComponent == 'minimal'\\\" @showControls=\\\"showControls = true\\\" id=\\\"ui\\\" />\\n <ui-vr v-if=\\\"uiComponent == 'vr'\\\" id=\\\"ui\\\" />\\n </transition>\\n\\n <div\\n v-if=\\\"(vrMode || gyroRotation) && deviceMotionDenied\\\"\\n :style=\\\"[uiComponent == 'minimal' || uiComponent == 'vr' ? { top: '0px' } : { top: '45px'}]\\\"\\n class=\\\"motion-denied-message-overlay\\\" >\\n <div class=\\\"overlay-text\\\">\\n 「動作と方向へのアクセス」が有効になっておりませんので、<br>\\n 使用できません。ブラウザを再起動してください。\\n </div>\\n </div>\\n\\n <error-message />\\n\\n <passcode id=\\\"passcode-lock\\\" :hashed=\\\"settings.passCodeHash\\\" @done=\\\"showPanorama\\\" v-if=\\\"waitPasscode\\\" />\\n </div>\\n</template>\\n\\n<script>\\nimport { mapState, mapMutations, mapGetters, mapActions } from 'vuex'\\nimport TWEEN from '@tweenjs/tween.js'\\n\\nimport Loading from './loading.vue'\\nimport ErrorMessage from './error-message.vue'\\nimport ItemView from './item/item-view.vue'\\nimport UiFull from './ui/ui-full.vue'\\nimport UiMinimal from './ui/ui-minimal.vue'\\nimport UiVr from './ui/ui-vr.vue'\\nimport Passcode from './passcode.vue'\\n\\nimport AtbbHelper from '~/helpers/atbb'\\n\\nexport default {\\n components: { Loading, ErrorMessage, ItemView, UiFull, UiMinimal, UiVr, Passcode },\\n props: ['viewMode', 'atbbUserId', 'pathPanorama'],\\n data () {\\n return {\\n waitPasscode: false,\\n ready: false,\\n motionPermitted: false,\\n showControls: true\\n }\\n },\\n computed: {\\n hasDeviceMotionOptInFeature() {\\n return !this.motionPermitted && (\\n // TODO: this.viewModeは使われていない可能性あり、未使用の場合は削除\\n this.viewMode === \\\"vr\\\" || this.viewMode === \\\"gyro\\\" ||\\n this.settings.startVrMode || this.settings.startGyroMode\\n ) && (\\n (\\n window.DeviceMotionEvent &&\\n window.DeviceMotionEvent.requestPermission &&\\n typeof window.DeviceMotionEvent.requestPermission === 'function'\\n ) || (\\n window.DeviceOrientationEvent &&\\n window.DeviceOrientationEvent.requestPermission &&\\n typeof window.DeviceOrientationEvent.requestPermission === 'function'\\n )\\n )\\n },\\n ...mapState('panorama', [\\n 'settings',\\n 'loading',\\n 'vrMode',\\n 'gyroRotation',\\n 'deviceMotionDenied'\\n ]),\\n ...mapGetters('panorama', [\\n 'theme'\\n ]),\\n uiComponent() {\\n if (this.vrMode) {\\n return 'vr'\\n }\\n if (this.settings.hideControls) {\\n return 'minimal'\\n }\\n return this.showControls ? 'full' : 'minimal'\\n }\\n },\\n methods: {\\n ...mapMutations('panorama', [\\n 'setSize',\\n 'setDeviceOrientationDetected',\\n 'setErrorMessage',\\n 'setTelopEnabled',\\n 'setGyroRotation',\\n 'setVrMode'\\n ]),\\n ...mapActions('panorama', [\\n 'loadPanorama',\\n 'showInitialItem',\\n 'requestPermissionDeviceMotion',\\n 'sendEvent'\\n ]),\\n async requestMotionPermission() {\\n this.motionPermitted = true\\n await this.requestPermissionDeviceMotion()\\n\\n // VRモードを自動開始\\n if (this.settings.startVrMode) {\\n this.setVrMode(true)\\n }\\n // ジャイロモードを自動開始\\n if (this.settings.startGyroMode) {\\n this.setGyroRotation(true)\\n }\\n },\\n onResize () {\\n this.setSize({\\n width: this.$el.clientWidth,\\n height: this.$el.clientHeight\\n })\\n },\\n onDeviceOrientaion (e) {\\n if (e.alpha !== null && e.beta !== null && e.gamma !== null) {\\n this.motionPermitted = true;\\n // DeviceOrientationを検出\\n this.setDeviceOrientationDetected()\\n window.removeEventListener('deviceorientation', this.onDeviceOrientaion, false)\\n\\n // 初回時にモーションセンサーの許可画面が出た場合、許可ボタンを押すまで待機するため、\\n // VRモード、ジャイロモードが上書きされるため、各モードの切替えはパラメータが入っている場合のみ行う\\n // 現仕様ではパラメータにVRモード、ジャイロモード両方入っている場合、ジャイロモードが優先される\\n // VRモードを自動開始\\n if (this.settings.startVrMode) {\\n this.setVrMode(true)\\n }\\n // ジャイロモードを自動開始\\n if (this.settings.startGyroMode) {\\n this.setGyroRotation(true)\\n }\\n }\\n },\\n checkPasscode() {\\n if(this.passcode.length < 6){\\n this.passcodeError = false\\n return;\\n }\\n\\n bcrypt.compare(this.passcode, this.settings.passCodeHash).then((result) => {\\n if(!result){\\n this.passcodeError = true\\n return;\\n }\\n\\n this.showPanorama();\\n });\\n },\\n async showPanorama () {\\n this.waitPasscode = false\\n\\n await this.loadPanorama(this.pathPanorama)\\n // パノラマデータの読み込みに失敗した場合はそこで打ち切る。\\n // 暫定対応。ちゃんとpromiseベースの処理に書き直す。\\n if (this.$store.state.panorama.loading) {\\n return\\n }\\n await this.showInitialItem()\\n\\n if(this.viewMode == \\\"vr\\\") {\\n this.setVrMode(true)\\n }\\n this.ready = true\\n this.sendEvent({ event: 'mounted' })\\n\\n const loop = (currentTime) => {\\n TWEEN.update(currentTime)\\n return requestAnimationFrame(loop)\\n }\\n const frameHandler = loop()\\n }\\n },\\n\\n async mounted () {\\n this.onResize()\\n window.addEventListener('resize', this.onResize, false)\\n window.addEventListener('deviceorientation', this.onDeviceOrientaion, false)\\n\\n if (!this.$store.state.contexts.modernizr.webgl) {\\n this.setErrorMessage('このブラウザはパノラマ表示をサポートしていません。')\\n return\\n }\\n\\n let uri = this.$store.state.contexts.url\\n const atbb_helper = new AtbbHelper(uri)\\n if (this.atbbUserId) {\\n if (!atbb_helper.isAccesible(this.atbbUserId)) {\\n this.setErrorMessage('データが取得できませんでした。')\\n return\\n }\\n if (atbb_helper.isSecondaryAd()) {\\n this.setTelopEnabled(false)\\n }\\n }\\n\\n if (this.settings.passCodeHash) {\\n this.waitPasscode = true\\n return\\n }\\n\\n this.showPanorama()\\n },\\n beforeDestroy () {\\n window.removeEventListener('resize', this.onResize, false)\\n window.removeEventListener('deviceorientation', this.onDeviceOrientaion, false)\\n }\\n}\\n</script>\\n\\n<style>\\n body {\\n /* disable pull-to-refresh */\\n overscroll-behavior: none;\\n }\\n</style>\\n\\n<style scoped>\\n #panorama {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n background-color: #000;\\n overflow: hidden;\\n }\\n #panorama :deep(*) {\\n font-family: sans-serif;\\n box-sizing: border-box;\\n }\\n #ui {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n overflow: hidden;\\n }\\n .fade-enter-active, .fade-leave-active {\\n transition: opacity .5s;\\n }\\n .fade-enter, .fade-leave-to {\\n opacity: 0;\\n }\\n .motion-denied-message-overlay {\\n position: absolute;\\n background-color: rgba(0, 0, 0, 0.8);\\n width: 100%;\\n height: 50px;\\n top:45px;\\n z-index: 0;\\n display: flex;\\n }\\n .motion-denied-message-overlay > .overlay-text {\\n margin: auto;\\n text-align: center;\\n color: white;\\n font-size: 11px;\\n line-height: 12px;\\n }\\n .motion-permission-overlay {\\n background-color: rgba(0, 0, 0, 0.5);\\n width: 100%;\\n height: 100%;\\n z-index: 9999;\\n position: absolute;\\n display: flex;\\n }\\n .motion-permission-overlay > .overlay-text {\\n margin: auto;\\n text-align: center;\\n color: white;\\n font-size: 2vh;\\n }\\n .motion-permission-modal-wrapper {\\n position: absolute;\\n background-color: white;\\n border-radius: 8px;\\n padding: 5px;\\n width: 280px;\\n height: 140px;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n }\\n .motion-permission-modal-wrapper > .message-text {\\n padding: 15px;\\n margin: auto;\\n text-align: center;\\n color: black;\\n font-size: 20px;\\n line-height: 24px;\\n }\\n .motion-permission-modal-wrapper button {\\n position: absolute;\\n width: 40%;\\n height: 35px;\\n bottom: 10px;\\n left: 50%;\\n font-size: 16px;\\n color: white;\\n font-weight: bold;\\n border-radius: 8px;\\n transform: translateX(-50%);\\n }\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n#panorama[data-v-517153b0] {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n background-color: #000;\\n overflow: hidden;\\n}\\n#panorama[data-v-517153b0] * {\\n font-family: sans-serif;\\n box-sizing: border-box;\\n}\\n#ui[data-v-517153b0] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n overflow: hidden;\\n}\\n.fade-enter-active[data-v-517153b0], .fade-leave-active[data-v-517153b0] {\\n transition: opacity .5s;\\n}\\n.fade-enter[data-v-517153b0], .fade-leave-to[data-v-517153b0] {\\n opacity: 0;\\n}\\n.motion-denied-message-overlay[data-v-517153b0] {\\n position: absolute;\\n background-color: rgba(0, 0, 0, 0.8);\\n width: 100%;\\n height: 50px;\\n top:45px;\\n z-index: 0;\\n display: flex;\\n}\\n.motion-denied-message-overlay > .overlay-text[data-v-517153b0] {\\n margin: auto;\\n text-align: center;\\n color: white;\\n font-size: 11px;\\n line-height: 12px;\\n}\\n.motion-permission-overlay[data-v-517153b0] {\\n background-color: rgba(0, 0, 0, 0.5);\\n width: 100%;\\n height: 100%;\\n z-index: 9999;\\n position: absolute;\\n display: flex;\\n}\\n.motion-permission-overlay > .overlay-text[data-v-517153b0] {\\n margin: auto;\\n text-align: center;\\n color: white;\\n font-size: 2vh;\\n}\\n.motion-permission-modal-wrapper[data-v-517153b0] {\\n position: absolute;\\n background-color: white;\\n border-radius: 8px;\\n padding: 5px;\\n width: 280px;\\n height: 140px;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n}\\n.motion-permission-modal-wrapper > .message-text[data-v-517153b0] {\\n padding: 15px;\\n margin: auto;\\n text-align: center;\\n color: black;\\n font-size: 20px;\\n line-height: 24px;\\n}\\n.motion-permission-modal-wrapper button[data-v-517153b0] {\\n position: absolute;\\n width: 40%;\\n height: 35px;\\n bottom: 10px;\\n left: 50%;\\n font-size: 16px;\\n color: white;\\n font-weight: bold;\\n border-radius: 8px;\\n transform: translateX(-50%);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/panorama.vue\"],\"names\":[],\"mappings\":\";AA6UA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,sBAAA;EACA,gBAAA;AACA;AACA;EACA,uBAAA;EACA,sBAAA;AACA;AACA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,gBAAA;AACA;AACA;EACA,uBAAA;AACA;AACA;EACA,UAAA;AACA;AACA;EACA,kBAAA;EACA,oCAAA;EACA,WAAA;EACA,YAAA;EACA,QAAA;EACA,UAAA;EACA,aAAA;AACA;AACA;EACA,YAAA;EACA,kBAAA;EACA,YAAA;EACA,eAAA;EACA,iBAAA;AACA;AACA;EACA,oCAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,aAAA;AACA;AACA;EACA,YAAA;EACA,kBAAA;EACA,YAAA;EACA,cAAA;AACA;AACA;EACA,kBAAA;EACA,uBAAA;EACA,kBAAA;EACA,YAAA;EACA,YAAA;EACA,aAAA;EACA,QAAA;EACA,SAAA;EACA,gCAAA;AACA;AACA;EACA,aAAA;EACA,YAAA;EACA,kBAAA;EACA,YAAA;EACA,eAAA;EACA,iBAAA;AACA;AACA;EACA,kBAAA;EACA,UAAA;EACA,YAAA;EACA,YAAA;EACA,SAAA;EACA,eAAA;EACA,YAAA;EACA,iBAAA;EACA,kBAAA;EACA,2BAAA;AACA\",\"sourcesContent\":[\"<template>\\n <div id=\\\"panorama\\\">\\n <item-view @tap=\\\"showControls = !showControls\\\" />\\n\\n <loading />\\n\\n <div\\n v-if=\\\"hasDeviceMotionOptInFeature\\\"\\n class=\\\"motion-permission-overlay\\\" >\\n <div class=\\\"motion-permission-modal-wrapper\\\">\\n <div class=\\\"message-text\\\">\\n 次の画面で許可ボタンを<br>押すと端末の向いている<br>方向が見えます。\\n </div>\\n <button\\n class=\\\"button\\\"\\n :style=\\\"{ backgroundColor: theme.color1 }\\\"\\n @click=\\\"requestMotionPermission\\\" >\\n OK\\n </button>\\n </div>\\n </div>\\n\\n <transition name=\\\"fade\\\" v-if=\\\"ready\\\">\\n <ui-full v-if=\\\"uiComponent == 'full'\\\" @hideControls=\\\"showControls = false\\\" id=\\\"ui\\\" />\\n <ui-minimal v-if=\\\"uiComponent == 'minimal'\\\" @showControls=\\\"showControls = true\\\" id=\\\"ui\\\" />\\n <ui-vr v-if=\\\"uiComponent == 'vr'\\\" id=\\\"ui\\\" />\\n </transition>\\n\\n <div\\n v-if=\\\"(vrMode || gyroRotation) && deviceMotionDenied\\\"\\n :style=\\\"[uiComponent == 'minimal' || uiComponent == 'vr' ? { top: '0px' } : { top: '45px'}]\\\"\\n class=\\\"motion-denied-message-overlay\\\" >\\n <div class=\\\"overlay-text\\\">\\n 「動作と方向へのアクセス」が有効になっておりませんので、<br>\\n 使用できません。ブラウザを再起動してください。\\n </div>\\n </div>\\n\\n <error-message />\\n\\n <passcode id=\\\"passcode-lock\\\" :hashed=\\\"settings.passCodeHash\\\" @done=\\\"showPanorama\\\" v-if=\\\"waitPasscode\\\" />\\n </div>\\n</template>\\n\\n<script>\\nimport { mapState, mapMutations, mapGetters, mapActions } from 'vuex'\\nimport TWEEN from '@tweenjs/tween.js'\\n\\nimport Loading from './loading.vue'\\nimport ErrorMessage from './error-message.vue'\\nimport ItemView from './item/item-view.vue'\\nimport UiFull from './ui/ui-full.vue'\\nimport UiMinimal from './ui/ui-minimal.vue'\\nimport UiVr from './ui/ui-vr.vue'\\nimport Passcode from './passcode.vue'\\n\\nimport AtbbHelper from '~/helpers/atbb'\\n\\nexport default {\\n components: { Loading, ErrorMessage, ItemView, UiFull, UiMinimal, UiVr, Passcode },\\n props: ['viewMode', 'atbbUserId', 'pathPanorama'],\\n data () {\\n return {\\n waitPasscode: false,\\n ready: false,\\n motionPermitted: false,\\n showControls: true\\n }\\n },\\n computed: {\\n hasDeviceMotionOptInFeature() {\\n return !this.motionPermitted && (\\n // TODO: this.viewModeは使われていない可能性あり、未使用の場合は削除\\n this.viewMode === \\\"vr\\\" || this.viewMode === \\\"gyro\\\" ||\\n this.settings.startVrMode || this.settings.startGyroMode\\n ) && (\\n (\\n window.DeviceMotionEvent &&\\n window.DeviceMotionEvent.requestPermission &&\\n typeof window.DeviceMotionEvent.requestPermission === 'function'\\n ) || (\\n window.DeviceOrientationEvent &&\\n window.DeviceOrientationEvent.requestPermission &&\\n typeof window.DeviceOrientationEvent.requestPermission === 'function'\\n )\\n )\\n },\\n ...mapState('panorama', [\\n 'settings',\\n 'loading',\\n 'vrMode',\\n 'gyroRotation',\\n 'deviceMotionDenied'\\n ]),\\n ...mapGetters('panorama', [\\n 'theme'\\n ]),\\n uiComponent() {\\n if (this.vrMode) {\\n return 'vr'\\n }\\n if (this.settings.hideControls) {\\n return 'minimal'\\n }\\n return this.showControls ? 'full' : 'minimal'\\n }\\n },\\n methods: {\\n ...mapMutations('panorama', [\\n 'setSize',\\n 'setDeviceOrientationDetected',\\n 'setErrorMessage',\\n 'setTelopEnabled',\\n 'setGyroRotation',\\n 'setVrMode'\\n ]),\\n ...mapActions('panorama', [\\n 'loadPanorama',\\n 'showInitialItem',\\n 'requestPermissionDeviceMotion',\\n 'sendEvent'\\n ]),\\n async requestMotionPermission() {\\n this.motionPermitted = true\\n await this.requestPermissionDeviceMotion()\\n\\n // VRモードを自動開始\\n if (this.settings.startVrMode) {\\n this.setVrMode(true)\\n }\\n // ジャイロモードを自動開始\\n if (this.settings.startGyroMode) {\\n this.setGyroRotation(true)\\n }\\n },\\n onResize () {\\n this.setSize({\\n width: this.$el.clientWidth,\\n height: this.$el.clientHeight\\n })\\n },\\n onDeviceOrientaion (e) {\\n if (e.alpha !== null && e.beta !== null && e.gamma !== null) {\\n this.motionPermitted = true;\\n // DeviceOrientationを検出\\n this.setDeviceOrientationDetected()\\n window.removeEventListener('deviceorientation', this.onDeviceOrientaion, false)\\n\\n // 初回時にモーションセンサーの許可画面が出た場合、許可ボタンを押すまで待機するため、\\n // VRモード、ジャイロモードが上書きされるため、各モードの切替えはパラメータが入っている場合のみ行う\\n // 現仕様ではパラメータにVRモード、ジャイロモード両方入っている場合、ジャイロモードが優先される\\n // VRモードを自動開始\\n if (this.settings.startVrMode) {\\n this.setVrMode(true)\\n }\\n // ジャイロモードを自動開始\\n if (this.settings.startGyroMode) {\\n this.setGyroRotation(true)\\n }\\n }\\n },\\n checkPasscode() {\\n if(this.passcode.length < 6){\\n this.passcodeError = false\\n return;\\n }\\n\\n bcrypt.compare(this.passcode, this.settings.passCodeHash).then((result) => {\\n if(!result){\\n this.passcodeError = true\\n return;\\n }\\n\\n this.showPanorama();\\n });\\n },\\n async showPanorama () {\\n this.waitPasscode = false\\n\\n await this.loadPanorama(this.pathPanorama)\\n // パノラマデータの読み込みに失敗した場合はそこで打ち切る。\\n // 暫定対応。ちゃんとpromiseベースの処理に書き直す。\\n if (this.$store.state.panorama.loading) {\\n return\\n }\\n await this.showInitialItem()\\n\\n if(this.viewMode == \\\"vr\\\") {\\n this.setVrMode(true)\\n }\\n this.ready = true\\n this.sendEvent({ event: 'mounted' })\\n\\n const loop = (currentTime) => {\\n TWEEN.update(currentTime)\\n return requestAnimationFrame(loop)\\n }\\n const frameHandler = loop()\\n }\\n },\\n\\n async mounted () {\\n this.onResize()\\n window.addEventListener('resize', this.onResize, false)\\n window.addEventListener('deviceorientation', this.onDeviceOrientaion, false)\\n\\n if (!this.$store.state.contexts.modernizr.webgl) {\\n this.setErrorMessage('このブラウザはパノラマ表示をサポートしていません。')\\n return\\n }\\n\\n let uri = this.$store.state.contexts.url\\n const atbb_helper = new AtbbHelper(uri)\\n if (this.atbbUserId) {\\n if (!atbb_helper.isAccesible(this.atbbUserId)) {\\n this.setErrorMessage('データが取得できませんでした。')\\n return\\n }\\n if (atbb_helper.isSecondaryAd()) {\\n this.setTelopEnabled(false)\\n }\\n }\\n\\n if (this.settings.passCodeHash) {\\n this.waitPasscode = true\\n return\\n }\\n\\n this.showPanorama()\\n },\\n beforeDestroy () {\\n window.removeEventListener('resize', this.onResize, false)\\n window.removeEventListener('deviceorientation', this.onDeviceOrientaion, false)\\n }\\n}\\n</script>\\n\\n<style>\\n body {\\n /* disable pull-to-refresh */\\n overscroll-behavior: none;\\n }\\n</style>\\n\\n<style scoped>\\n #panorama {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n background-color: #000;\\n overflow: hidden;\\n }\\n #panorama :deep(*) {\\n font-family: sans-serif;\\n box-sizing: border-box;\\n }\\n #ui {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n overflow: hidden;\\n }\\n .fade-enter-active, .fade-leave-active {\\n transition: opacity .5s;\\n }\\n .fade-enter, .fade-leave-to {\\n opacity: 0;\\n }\\n .motion-denied-message-overlay {\\n position: absolute;\\n background-color: rgba(0, 0, 0, 0.8);\\n width: 100%;\\n height: 50px;\\n top:45px;\\n z-index: 0;\\n display: flex;\\n }\\n .motion-denied-message-overlay > .overlay-text {\\n margin: auto;\\n text-align: center;\\n color: white;\\n font-size: 11px;\\n line-height: 12px;\\n }\\n .motion-permission-overlay {\\n background-color: rgba(0, 0, 0, 0.5);\\n width: 100%;\\n height: 100%;\\n z-index: 9999;\\n position: absolute;\\n display: flex;\\n }\\n .motion-permission-overlay > .overlay-text {\\n margin: auto;\\n text-align: center;\\n color: white;\\n font-size: 2vh;\\n }\\n .motion-permission-modal-wrapper {\\n position: absolute;\\n background-color: white;\\n border-radius: 8px;\\n padding: 5px;\\n width: 280px;\\n height: 140px;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n }\\n .motion-permission-modal-wrapper > .message-text {\\n padding: 15px;\\n margin: auto;\\n text-align: center;\\n color: black;\\n font-size: 20px;\\n line-height: 24px;\\n }\\n .motion-permission-modal-wrapper button {\\n position: absolute;\\n width: 40%;\\n height: 35px;\\n bottom: 10px;\\n left: 50%;\\n font-size: 16px;\\n color: white;\\n font-weight: bold;\\n border-radius: 8px;\\n transform: translateX(-50%);\\n }\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.information-image-box[data-v-5662c760] {\\n width: 100%;\\n max-height: 300px;\\n background-color: #fff;\\n margin: 0 auto;\\n text-align: center;\\n overflow: hidden;\\n}\\n[data-v-5662c760]::-webkit-scrollbar {\\n display: none\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/airtag-image.vue\"],\"names\":[],\"mappings\":\";AAyIA;EACA,WAAA;EACA,iBAAA;EACA,sBAAA;EACA,cAAA;EACA,kBAAA;EACA,gBAAA;AACA;AAEA;EACA;AACA\",\"sourcesContent\":[\"<template>\\n <div class='information-image-box'>\\n <img class='information-image'\\n :src='url'\\n :style='infoImgStyle'\\n ref=\\\"image\\\"\\n @load='loadedImage'\\n @error='loadFailed'\\n @wheel='onWheel'\\n\\n v-hammer:panstart='onPanStart'\\n v-hammer:pan='onPan'\\n v-hammer:panend='onPanEnd'\\n\\n v-hammer:pinchstart='onPinchStart'\\n v-hammer:pinch='onPinch'\\n v-hammer:pinchend='onPinchEnd'\\n\\n :hammer-options.prop=\\\"{pan: { direction: 'all', threshold: 5 }, pinch: { enable: true }}\\\"\\n >\\n </div>\\n</template>\\n\\n<script>\\nexport default {\\n props: ['url'],\\n\\n data() {\\n return {\\n dummyImage: null,\\n prevPosX: 0,\\n prevPosY: 0,\\n scale: 1,\\n transX: 0,\\n transY: 0,\\n isPinchEnd: false\\n }\\n },\\n\\n computed: {\\n infoImgStyle() {\\n return {\\n position: 'relative',\\n maxWidth: '90%',\\n maxHeight: '300px',\\n transform: `scale(${ this.scale }, ${ this.scale }) translate(${this.transX}px, ${this.transY}px)`\\n }\\n },\\n },\\n\\n methods: {\\n loadedImage() {\\n this.$nextTick(() => {\\n this.$emit('resizedImage')\\n })\\n },\\n\\n loadFailed() {\\n this.$emit('loadFailed')\\n },\\n\\n setScale(scale) {\\n this.scale = Math.max(scale, 1)\\n this.$emit('resizedImage')\\n },\\n\\n updateImageTransform() {\\n // 最大移動幅\\n const maxTransX = this.$refs.image.width / 2 * (1 - 1/this.scale)\\n const maxTransY = this.$refs.image.height / 2 * (1 - 1/this.scale)\\n if (-maxTransX > this.transX) this.transX = -maxTransX\\n else if (maxTransX < this.transX) this.transX = maxTransX\\n if (-maxTransY > this.transY) this.transY = -maxTransY\\n else if (maxTransY < this.transY) this.transY = maxTransY\\n },\\n\\n onPanStart(e) {\\n this.prevPosX = 0\\n this.prevPosY = 0\\n },\\n\\n onPan(e) {\\n // Pinchの終了時、onPanイベントを拾うため\\n if (this.isPinchEnd) {\\n this.isPinchEnd = false\\n return\\n }\\n this.transX -= (this.prevPosX - e.deltaX) / this.scale\\n this.transY -= (this.prevPosY - e.deltaY) / this.scale\\n\\n this.updateImageTransform()\\n\\n this.prevPosX = e.deltaX\\n this.prevPosY = e.deltaY\\n },\\n\\n onPanEnd(e) {\\n this.prevPosX = 0\\n this.prevPosY = 0\\n },\\n\\n onPinchStart(e) {\\n this.currentImgWidth = this.$refs.image.width * this.scale\\n },\\n\\n onPinch(e) {\\n this.setScale(this.currentImgWidth * e.scale / this.$refs.image.width)\\n this.updateImageTransform()\\n // スクロールに影響しないようにする\\n e.srcEvent.preventDefault()\\n },\\n\\n onPinchEnd(e) {\\n this.currentImgWidth = null\\n // 終了時、onPanイベントを拾うため\\n this.isPinchEnd = true\\n // スクロールに影響しないようにする\\n e.srcEvent.preventDefault()\\n },\\n\\n onWheel(e) {\\n const deltaY = Math.sign(e.wheelDeltaY || e.wheelDelta || -e.deltaY || e.detail) * 0.1\\n this.setScale(this.scale + deltaY)\\n this.updateImageTransform()\\n e.preventDefault()\\n }\\n },\\n\\n mounted() {\\n // ドラッグフィードバック画像用に空画像を読み込む\\n this.dummyImage = new Image()\\n this.dummyImage.src = require('@/images/empty.png')\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.information-image-box {\\n width: 100%;\\n max-height: 300px;\\n background-color: #fff;\\n margin: 0 auto;\\n text-align: center;\\n overflow: hidden;\\n}\\n\\n::-webkit-scrollbar {\\n display: none\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.backdrop[data-v-3fed03a1] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.5);\\n pointer-events: auto;\\n}\\n.airtag-modal[data-v-3fed03a1] {\\n position: absolute;\\n width: 70%;\\n max-width: 450px;\\n min-height: 70px;\\n max-height: 70%;\\n top: 50%;\\n left: 50%;\\n padding: 0;\\n transform: translate(-50%, -50%);\\n background-color: #fcfcfc;\\n box-shadow: 0 0 4px 4px rgba(0, 0, 0, 0.2);\\n overflow: auto;\\n}\\n.information-box[data-v-3fed03a1] {\\n padding: 15px;\\n}\\n.airtag-information-close[data-v-3fed03a1] {\\n background-color: #000;\\n border-radius: 50%;\\n border: 2px solid #ccc;\\n margin: 0px;\\n padding: 0px;\\n display: inline-block;\\n width: 31px;\\n height: 31px;\\n cursor: pointer;\\n position: absolute;\\n font-size: 15px;\\n line-height: 15px;\\n z-index: 100;\\n}\\n.airtag-information-close[data-v-3fed03a1]:before {\\n content: \\\"X\\\";\\n color: #fff;\\n font-weight: bold;\\n text-align: center;\\n}\\n.information-text[data-v-3fed03a1] {\\n display: flex;\\n padding: 5px;\\n background-color: #fff;\\n justify-content: space-between;\\n white-space: pre-line;\\n text-align: justify;\\n text-justify: inter-ideograph;\\n flex-direction: column;\\n}\\n.v-enter-active[data-v-3fed03a1],.v-leave-active[data-v-3fed03a1] {\\n transition: opacity 0.2s;\\n}\\n.v-enter[data-v-3fed03a1],.v-leave-to[data-v-3fed03a1] {\\n opacity: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/airtag-information.vue\"],\"names\":[],\"mappings\":\";AA+GA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,oCAAA;EACA,oBAAA;AACA;AAEA;EACA,kBAAA;EACA,UAAA;EACA,gBAAA;EACA,gBAAA;EACA,eAAA;EACA,QAAA;EACA,SAAA;EACA,UAAA;EACA,gCAAA;EACA,yBAAA;EACA,0CAAA;EACA,cAAA;AACA;AAEA;EACA,aAAA;AACA;AAEA;EACA,sBAAA;EACA,kBAAA;EACA,sBAAA;EACA,WAAA;EACA,YAAA;EACA,qBAAA;EACA,WAAA;EACA,YAAA;EACA,eAAA;EACA,kBAAA;EACA,eAAA;EACA,iBAAA;EACA,YAAA;AACA;AAEA;EACA,YAAA;EACA,WAAA;EACA,iBAAA;EACA,kBAAA;AACA;AAEA;EACA,aAAA;EACA,YAAA;EACA,sBAAA;EACA,8BAAA;EACA,qBAAA;EACA,mBAAA;EACA,6BAAA;EACA,sBAAA;AACA;AAEA;EACA,wBAAA;AACA;AAEA;EACA,UAAA;AACA\",\"sourcesContent\":[\"<template>\\n <transition>\\n <div class=\\\"backdrop\\\" v-show=\\\"isImageLoaded\\\" v-hammer:tap=\\\"onTap\\\">\\n <div slot=\\\"top-right\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"airtag-information-close\\\"\\n :style=\\\"{'left':btnCloseX, 'top':btnCloseY}\\\"\\n @click=\\\"onClose\\\">\\n </button>\\n </div>\\n <div class=\\\"airtag-modal\\\" ref=\\\"modal\\\">\\n <div\\n class=\\\"information-box\\\"\\n v-if=\\\"airtagInformation.image_url || airtagInformation.text\\\">\\n <div class=\\\"content\\\">\\n <airtag-image v-if=\\\"airtagInformation.image_url\\\" :url=\\\"airtagInformation.image_url\\\" @resizedImage=\\\"onImageLoaded\\\" @loadFailed=\\\"onImageloadFailed\\\" />\\n <div class=\\\"information-text\\\" v-if=\\\"airtagInformation.text\\\" v-html=\\\"airtagInformationText\\\" />\\n </div>\\n </div>\\n\\n <airtag-movie class=\\\"information-youtube\\\" v-if=\\\"airtagInformation.youtube_url\\\" :url=\\\"airtagInformation.youtube_url\\\" />\\n </div>\\n </div>\\n </transition>\\n</template>\\n\\n<script>\\nimport { mapState, mapMutations } from \\\"vuex\\\"\\n\\nimport AirtagImage from \\\"./airtag-image\\\"\\nimport AirtagMovie from \\\"./airtag-movie\\\"\\n\\nexport default {\\n components: { AirtagMovie, AirtagImage },\\n\\n data() {\\n return {\\n imgElem: null,\\n isActive: false,\\n imgMinWidth: null,\\n imgMinHeight: null,\\n btnCloseX: null,\\n btnCloseY: null,\\n isImageLoaded: false,\\n }\\n },\\n\\n computed: {\\n airtagInformationText() {\\n return this.replaceUrlToLink(this.airtagInformation.text)\\n },\\n ...mapState(\\\"panorama\\\", [\\\"airtagInformation\\\"])\\n },\\n\\n methods: {\\n ...mapMutations(\\\"panorama\\\", [\\\"toggleAirtagInformation\\\"]),\\n\\n updateBtnCloseLocate() {\\n let modalElemRect = this.$refs.modal.getBoundingClientRect()\\n this.btnCloseX = (modalElemRect.right - 15) + 'px'\\n this.btnCloseY = (modalElemRect.top - 15) + 'px'\\n },\\n onTap(e) {\\n if (e.target === this.$el) {\\n this.toggleAirtagInformation()\\n }\\n },\\n onClose() {\\n this.toggleAirtagInformation()\\n },\\n onImageLoaded() {\\n this.imageLoadFinished()\\n },\\n onImageloadFailed() {\\n this.imageLoadFinished()\\n },\\n imageLoadFinished() {\\n this.isImageLoaded = true\\n this.$nextTick(() => {\\n this.updateBtnCloseLocate()\\n })\\n },\\n replaceUrlToLink(text) {\\n return text.replace(/https?:\\\\/\\\\/[\\\\w\\\\/:%#\\\\$&\\\\?\\\\(\\\\)~\\\\.=\\\\+\\\\-]+/g, match => `<a href=\\\"${match}\\\" target=\\\"_blank\\\">${match}</a>`)\\n }\\n },\\n\\n mounted() {\\n // 画面の拡大縮小(縦横変更)時、閉じるボタンを再配置\\n this.$listen(window, 'resize', this.updateBtnCloseLocate, false)\\n\\n // iOSのSafariでのピンチアウトによる画面拡大を禁止\\n this.$listen(this.$el, 'touchmove', e => {\\n if (e.touches.length > 1) {\\n e.preventDefault()\\n }\\n }, false)\\n\\n if (!this.airtagInformation.image_url) {\\n this.isImageLoaded = true\\n }\\n\\n this.$nextTick(() => {\\n this.updateBtnCloseLocate()\\n })\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.backdrop {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.5);\\n pointer-events: auto;\\n}\\n\\n.airtag-modal {\\n position: absolute;\\n width: 70%;\\n max-width: 450px;\\n min-height: 70px;\\n max-height: 70%;\\n top: 50%;\\n left: 50%;\\n padding: 0;\\n transform: translate(-50%, -50%);\\n background-color: #fcfcfc;\\n box-shadow: 0 0 4px 4px rgba(0, 0, 0, 0.2);\\n overflow: auto;\\n}\\n\\n.information-box {\\n padding: 15px;\\n}\\n\\n.airtag-information-close {\\n background-color: #000;\\n border-radius: 50%;\\n border: 2px solid #ccc;\\n margin: 0px;\\n padding: 0px;\\n display: inline-block;\\n width: 31px;\\n height: 31px;\\n cursor: pointer;\\n position: absolute;\\n font-size: 15px;\\n line-height: 15px;\\n z-index: 100;\\n}\\n\\n.airtag-information-close:before {\\n content: \\\"X\\\";\\n color: #fff;\\n font-weight: bold;\\n text-align: center;\\n}\\n\\n.information-text {\\n display: flex;\\n padding: 5px;\\n background-color: #fff;\\n justify-content: space-between;\\n white-space: pre-line;\\n text-align: justify;\\n text-justify: inter-ideograph;\\n flex-direction: column;\\n}\\n\\n.v-enter-active,.v-leave-active {\\n transition: opacity 0.2s;\\n}\\n\\n.v-enter,.v-leave-to {\\n opacity: 0;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.aspect-ratio[data-v-6082c957] {\\n position: relative;\\n width: 100%;\\n height: 0;\\n padding-bottom: 56.25%;\\n}\\n.youtube-frame[data-v-6082c957] {\\n position: absolute;\\n top: 0;\\n right: 0;\\n width: 100%;\\n height: 100%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/airtag-movie.vue\"],\"names\":[],\"mappings\":\";AAwCA;EACA,kBAAA;EACA,WAAA;EACA,SAAA;EACA,sBAAA;AACA;AAEA;EACA,kBAAA;EACA,MAAA;EACA,QAAA;EACA,WAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<template>\\n <div class=\\\"aspect-ratio\\\">\\n <iframe\\n class=\\\"youtube-frame\\\"\\n :src=\\\"src\\\"\\n frameborder=\\\"0\\\"\\n width=\\\"640\\\"\\n height=\\\"360\\\"\\n allow=\\\"accelerometer; autoplay; mute; encrypted-media; gyroscope; picture-in-picture\\\"\\n />\\n </div>\\n</template>\\n\\n<script setup>\\nimport { toRefs, computed } from 'vue'\\n\\nimport getVideoId from 'get-video-id'\\nimport qs from 'qs'\\n\\nconst props = defineProps(['url'])\\nconst { url } = toRefs(props)\\n\\nconst videoId = computed(() => getVideoId(url.value).id)\\nconst src = computed(() => {\\n const options = {\\n iv_load_policy: 3,\\n autoplay: 1,\\n controls: 1,\\n disablekb: 1,\\n mute: 1,\\n showinfo: 0,\\n modestbranding: 1,\\n loop: 1,\\n playlist: videoId.value\\n }\\n return `https://www.youtube-nocookie.com/embed/${videoId.value}?` + qs.stringify(options)\\n})\\n</script>\\n\\n<style scoped>\\n.aspect-ratio {\\n position: relative;\\n width: 100%;\\n height: 0;\\n padding-bottom: 56.25%;\\n}\\n\\n.youtube-frame {\\n position: absolute;\\n top: 0;\\n right: 0;\\n width: 100%;\\n height: 100%;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.bottom-bar[data-v-09e6a96c] {\\n position: absolute;\\n height: 44px;\\n left: 0px;\\n right: 0px;\\n bottom: 0;\\n background-color: #2AB7D9;\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.1);\\n pointer-events: auto;\\n}\\n.external-link[data-v-09e6a96c] {\\n float: right;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/bottom-bar.vue\"],\"names\":[],\"mappings\":\";AAkPA;EACA,kBAAA;EACA,YAAA;EACA,SAAA;EACA,UAAA;EACA,SAAA;EACA,yBAAA;EACA,0CAAA;EACA,oBAAA;AACA;AACA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<template>\\n <div class=\\\"bottom-bar\\\" :style=\\\"{ backgroundColor: theme.color2 }\\\">\\n <!-- ポイントサムネイル -->\\n <button-icon class=\\\"button-left\\\"\\n :icon=\\\"theme.icons.pointThumbnails\\\"\\n :active=\\\"displayingThumbnailList == 'Points'\\\"\\n @click=\\\"togglePointThumbnails\\\"\\n />\\n\\n <!-- アイテムサムネイル -->\\n <button-icon class=\\\"button-left\\\"\\n :icon=\\\"theme.icons.itemThumbnails\\\"\\n :active=\\\"displayingThumbnailList == 'Items'\\\"\\n @click=\\\"toggleItemThumbnails\\\"\\n v-if=\\\"itemThumbnailsVisible\\\"\\n />\\n\\n <!-- 外部リンク -->\\n <external-link />\\n\\n <!-- ツールバー非表示 -->\\n <button-icon class=\\\"button-right\\\"\\n :icon=\\\"theme.icons.controlsHide\\\"\\n @click=\\\"$parent.$emit('hideControls')\\\"\\n />\\n\\n <!-- フルスクリーン -->\\n <template v-if=\\\"fullscreenEnabled\\\">\\n <button-icon class=\\\"button-right\\\"\\n :icon=\\\"theme.icons.fullscreenOn\\\"\\n @click=\\\"toggleFullscreen\\\"\\n v-if=\\\"!fullscreen\\\"\\n />\\n <button-icon class=\\\"button-right\\\"\\n :icon=\\\"theme.icons.fullscreenOff\\\"\\n @click=\\\"toggleFullscreen\\\"\\n v-if=\\\"fullscreen\\\"\\n />\\n </template>\\n\\n <template v-else-if=\\\"parentExists && locationHashParams['panoramasjs']\\\">\\n <button-icon class=\\\"button-right\\\"\\n :icon=\\\"fullscreen ? theme.icons.fullscreenOff : theme.icons.fullscreenOn\\\"\\n @click=\\\"toggleMaximize\\\"\\n />\\n </template>\\n\\n <!-- VR -->\\n <button-icon class=\\\"button-right\\\"\\n :icon=\\\"theme.icons.vrEffect\\\"\\n @click=\\\"startVrMode\\\"\\n v-if=\\\"vrModeAvailable\\\"\\n />\\n\\n <!-- パノラマジャイロ -->\\n <button-icon class=\\\"button-right\\\"\\n :icon=\\\"theme.icons.gyroRotation\\\"\\n :active=\\\"gyroRotationOn\\\"\\n @click=\\\"startGyroMode\\\"\\n v-if=\\\"panoramaGyroRotationAvailable\\\"\\n />\\n\\n <!-- 自動回転 -->\\n <button-icon class=\\\"button-right\\\"\\n :icon=\\\"theme.icons.autoRotation\\\"\\n :active=\\\"autoRotationOn\\\"\\n :disabled=\\\"gyroRotationOn\\\"\\n @click=\\\"gyroRotationOn ? null : setAutoRotation(!autoRotationOn)\\\"\\n v-if=\\\"autoRotationVisible\\\"\\n />\\n\\n <!-- 動画コントロール -->\\n <button-icon class=\\\"button-right\\\"\\n :icon=\\\"theme.icons.videoControls\\\"\\n @click=\\\"toggleVideoControls\\\"\\n v-if=\\\"videoControlVisible\\\"\\n />\\n </div>\\n</template>\\n\\n<script>\\nimport screenfull from 'screenfull'\\nimport { mapState, mapGetters, mapMutations, mapActions } from 'vuex'\\n\\nimport ButtonIcon from './button-icon.vue'\\nimport ExternalLink from './external-link.vue'\\n\\nexport default {\\n components: { ButtonIcon, ExternalLink },\\n data () {\\n return {\\n isTopWindow: false,\\n fullscreenEnabled: false,\\n parentExists: false,\\n }\\n },\\n computed: {\\n ...mapState('panorama', [\\n 'pointId',\\n 'settings',\\n 'videoControlsActive',\\n 'vrMode',\\n 'fullscreen',\\n 'locationHashParams',\\n ]),\\n ...mapGetters('panorama', [\\n 'itemThumbnailsVisible',\\n 'autoRotationVisible',\\n 'autoRotationOn',\\n 'gyroRotationOn',\\n 'videoControlVisible',\\n 'vrModeAvailable',\\n 'panoramaGyroRotationAvailable',\\n 'theme',\\n 'displayingThumbnailList'\\n ])\\n },\\n watch: {\\n videoControlVisible () {\\n if (this.videoControlVisible) {\\n if (!this.videoControlsActive) {\\n this.toggleVideoControls()\\n }\\n } else {\\n if (this.videoControlsActive) {\\n this.toggleVideoControls()\\n }\\n }\\n }\\n },\\n methods: {\\n ...mapMutations('panorama', [\\n 'togglePointThumbnails',\\n 'toggleItemThumbnails',\\n 'toggleVideoControls',\\n 'setAutoRotation',\\n 'setFullscreen',\\n 'setGyroRotation',\\n 'setLocationHashParams',\\n 'setVrMode'\\n ]),\\n ...mapActions('panorama', ['requestPermissionDeviceMotion']),\\n\\n // Fullscreen APIが使用可能な場合\\n toggleFullscreen () {\\n if (this.fullscreen) {\\n screenfull.exit()\\n } else {\\n screenfull.request(document.querySelector('#panorama'))\\n }\\n },\\n\\n onFullscreenChange (e) {\\n this.setFullscreen(screenfull.isFullscreen)\\n },\\n\\n // Fullscreen APIを使用できない場合(ブラウザサイズで最大化を試みる)\\n toggleMaximize (e) {\\n window.parent?.postMessage(JSON.stringify({\\n action: `nurve-fullscreen-${this.fullscreen ? 'off' : 'on'}`,\\n by: this.locationHashParams['target'] ?? 0,\\n }), '*')\\n this.setFullscreen(!this.fullscreen)\\n\\n // iframeのサイズが変わるため、念の為のresize発火\\n setTimeout(() => {\\n window.dispatchEvent(new Event('resize'))\\n }, 500)\\n },\\n\\n async startVrMode (e) {\\n if (!this.isTopWindow) {\\n // 最上位のwindowで開き直してVRモードを自動開始する\\n // view_mode=vrの時もVRモードとして実行する\\n const url = new URL(window.location)\\n url.searchParams.set('point_id', this.pointId)\\n url.searchParams.set('vr_mode', true)\\n window.open(url, '_top')\\n return\\n }\\n\\n if (!this.fullscreen && this.fullscreenEnabled) {\\n screenfull.request(document.querySelector('#panorama'))\\n }\\n\\n await this.requestPermissionDeviceMotion()\\n // VRモード開始\\n this.setVrMode(true)\\n },\\n\\n async startGyroMode () {\\n if (this.gyroRotationOn){\\n this.setGyroRotation(false)\\n return\\n }\\n if (!this.isTopWindow) {\\n // 最上位のwindowで開き直してジャイロモードを自動開始する\\n // gyro_mode=vrの時もVRモードとして実行する\\n const url = new URL(window.location)\\n url.searchParams.set('point_id', this.pointId)\\n url.searchParams.set('view_mode', 'gyro')\\n window.open(url, '_top')\\n return\\n }\\n\\n await this.requestPermissionDeviceMotion()\\n // ジャイロモード開始\\n this.setGyroRotation(true)\\n },\\n\\n locationHashParser () {\\n const params = {}\\n location.hash.substring(1).split('&').forEach((p) => {\\n const [k, v] = p.split('=')\\n params[k] = v\\n })\\n this.setLocationHashParams(params)\\n },\\n },\\n\\n mounted () {\\n this.setFullscreen(screenfull.isFullscreen)\\n this.isTopWindow = (window === window.top)\\n this.fullscreenEnabled = this.settings.fullscreenEnable && screenfull.isEnabled\\n this.parentExists = window.parent?.postMessage\\n\\n if(screenfull.isEnabled) {\\n screenfull.on('change', this.onFullscreenChange)\\n }\\n\\n this.locationHashParser()\\n },\\n\\n beforeDestroy () {\\n if(screenfull.isEnabled) {\\n screenfull.off('change', this.onFullscreenChange)\\n }\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.bottom-bar {\\n position: absolute;\\n height: 44px;\\n left: 0px;\\n right: 0px;\\n bottom: 0;\\n background-color: #2AB7D9;\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.1);\\n pointer-events: auto;\\n}\\n.external-link {\\n float: right;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.button[data-v-0f763ef4] {\\n position: relative;\\n width: 44px;\\n height: 44px;\\n cursor: pointer;\\n}\\n.button .icon[data-v-0f763ef4] {\\n position: absolute;\\n width: 40px;\\n height: 40px;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n border-radius: 50%;\\n transition: all 0.2s;\\n}\\n.button .icon img[data-v-0f763ef4] {\\n position: absolute;\\n width: 30px;\\n height: 30px;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n}\\n.button .icon object[data-v-0f763ef4] {\\n pointer-events: none;\\n position: absolute;\\n width: 30px;\\n height: 30px;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n}\\n.button-left[data-v-0f763ef4] {\\n float: left;\\n}\\n.button-right[data-v-0f763ef4] {\\n float: right;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/button-icon.vue\"],\"names\":[],\"mappings\":\";AAgCA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,eAAA;AACA;AAEA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,QAAA;EACA,SAAA;EACA,gCAAA;EACA,kBAAA;EACA,oBAAA;AACA;AAEA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,QAAA;EACA,SAAA;EACA,gCAAA;AACA;AAEA;EACA,oBAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,QAAA;EACA,SAAA;EACA,gCAAA;AACA;AAEA;EACA,WAAA;AACA;AAEA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<template>\\n <div class=\\\"button\\\" @click=\\\"$emit('click')\\\">\\n <div class=\\\"icon\\\" :style=\\\"iconStyle\\\">\\n <svg-colored-icon :src=\\\"icon\\\" :color=\\\"theme.iconColor\\\" />\\n </div>\\n </div>\\n</template>\\n\\n<script>\\nimport SvgColoredIcon from '~/components/svg-colored-icon'\\n\\nimport { mapGetters } from 'vuex'\\n\\nexport default {\\n components: { SvgColoredIcon },\\n\\n props: [ 'icon', 'active', 'disabled' ],\\n\\n computed: {\\n ...mapGetters('panorama', ['theme']),\\n\\n iconStyle() {\\n return {\\n backgroundColor: this.active ? this.theme.iconBackground.activeColor : this.theme.iconBackground.defaultColor,\\n opacity: this.disabled ? 0.2 : 1\\n }\\n }\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.button {\\n position: relative;\\n width: 44px;\\n height: 44px;\\n cursor: pointer;\\n}\\n\\n.button .icon {\\n position: absolute;\\n width: 40px;\\n height: 40px;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n border-radius: 50%;\\n transition: all 0.2s;\\n}\\n\\n.button .icon img {\\n position: absolute;\\n width: 30px;\\n height: 30px;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n}\\n\\n.button .icon object {\\n pointer-events: none;\\n position: absolute;\\n width: 30px;\\n height: 30px;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n}\\n\\n.button-left {\\n float: left;\\n}\\n\\n.button-right {\\n float: right;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.excuse-text[data-v-5e49ba12] {\\n min-width: min(330px, calc(100% - 76px));\\n flex: 1 1;\\n transition: all 0.2s;\\n padding: 8px;\\n line-height: 1.5;\\n text-align: right;\\n letter-spacing: 3px;\\n font-size: 10px;\\n color: rgba(255, 255, 255, 0.8);\\n text-shadow: 0 0 3px #000, 0 0 3px #000, 0 0 3px #000, 0 0 3px #000,\\n 4px 0 10px #000, -4px 0 10px #000, 0 2px 10px #000, 0 -2px 10px #000,\\n 4px 0 10px #000, -4px 0 10px #000, 0 2px 10px #000, 0 -2px 10px #000,\\n 4px 0 15px #000, -4px 0 15px #000, 0 2px 15px #000, 0 -2px 15px #000;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/excuse-text.vue\"],\"names\":[],\"mappings\":\";AAmBA;EACA,wCAAA;EACA,SAAA;EACA,oBAAA;EACA,YAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;EACA,eAAA;EACA,+BAAA;EACA;;;wEAGA;AACA\",\"sourcesContent\":[\"<template>\\n <div\\n class=\\\"excuse-text\\\"\\n v-html=\\\"excuseText\\\"\\n v-if=\\\"excuseText\\\">\\n </div>\\n</template>\\n\\n<script>\\nimport { mapGetters } from 'vuex'\\n\\nexport default {\\n computed: {\\n ...mapGetters('panorama', ['excuseText'])\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.excuse-text {\\n min-width: min(330px, calc(100% - 76px));\\n flex: 1;\\n transition: all 0.2s;\\n padding: 8px;\\n line-height: 1.5;\\n text-align: right;\\n letter-spacing: 3px;\\n font-size: 10px;\\n color: rgba(255, 255, 255, 0.8);\\n text-shadow: 0 0 3px #000, 0 0 3px #000, 0 0 3px #000, 0 0 3px #000,\\n 4px 0 10px #000, -4px 0 10px #000, 0 2px 10px #000, 0 -2px 10px #000,\\n 4px 0 10px #000, -4px 0 10px #000, 0 2px 10px #000, 0 -2px 10px #000,\\n 4px 0 15px #000, -4px 0 15px #000, 0 2px 15px #000, 0 -2px 15px #000;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.external-link[data-v-78152270] {\\n display: block;\\n height: 44px;\\n padding: 4px;\\n text-decoration: none;\\n pointer-events: auto;\\n}\\n.external-link div[data-v-78152270] {\\n height: 36px;\\n padding: 6px;\\n font-size: 12px;\\n border-radius: 4px;\\n color: #fff;\\n background-color: #55c6e1;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/external-link.vue\"],\"names\":[],\"mappings\":\";AAkBA;EACA,cAAA;EACA,YAAA;EACA,YAAA;EACA,qBAAA;EACA,oBAAA;AACA;AACA;EACA,YAAA;EACA,YAAA;EACA,eAAA;EACA,kBAAA;EACA,WAAA;EACA,yBAAA;AACA\",\"sourcesContent\":[\"<template>\\n <a class=\\\"external-link\\\" :href=\\\"externalLink.url\\\" target=\\\"_blank\\\" v-if=\\\"externalLink\\\">\\n <div>{{ externalLink.name }}</div>\\n </a>\\n</template>\\n\\n<script>\\nimport { mapGetters } from 'vuex'\\nexport default {\\n computed: {\\n ...mapGetters('panorama', [\\n 'externalLink'\\n ])\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.external-link {\\n display: block;\\n height: 44px;\\n padding: 4px;\\n text-decoration: none;\\n pointer-events: auto;\\n}\\n.external-link div {\\n height: 36px;\\n padding: 6px;\\n font-size: 12px;\\n border-radius: 4px;\\n color: #fff;\\n background-color: #55c6e1;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.backdrop[data-v-668599b8] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.5);\\n pointer-events: auto;\\n}\\n.image-quality-modal[data-v-668599b8] {\\n position: absolute;\\n height: 188px;\\n width: 152px;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n background-color: #fff;\\n box-shadow: 0 0 4px 4px rgba(0, 0, 0, 0.2);\\n}\\n.header[data-v-668599b8] {\\n border-bottom: solid 1px #ccc;\\n height: 44px;\\n line-height: 44px;\\n font-size: 20px;\\n text-align: center;\\n color: #666;\\n}\\n.close[data-v-668599b8] {\\n position: absolute;\\n top: 0;\\n right: 0;\\n width: 44px;\\n height: 44px;\\n font-weight: bold;\\n}\\n.content-wrapper[data-v-668599b8] {\\n height: calc(100% - 44px);\\n overflow: hidden;\\n}\\n.content[data-v-668599b8] {\\n color: #666;\\n}\\nlabel[data-v-668599b8] {\\n padding-left: 20px;\\n line-height: 36px;\\n}\\n.v-enter-active[data-v-668599b8], .v-leave-active[data-v-668599b8] {\\n transition: opacity .2s;\\n}\\n.v-enter[data-v-668599b8], .v-leave-to[data-v-668599b8] {\\n opacity: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/image-quality-modal.vue\"],\"names\":[],\"mappings\":\";AAwDA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,oCAAA;EACA,oBAAA;AACA;AACA;EACA,kBAAA;EACA,aAAA;EACA,YAAA;EACA,QAAA;EACA,SAAA;EACA,gCAAA;EACA,sBAAA;EACA,0CAAA;AACA;AACA;EACA,6BAAA;EACA,YAAA;EACA,iBAAA;EACA,eAAA;EACA,kBAAA;EACA,WAAA;AACA;AACA;EACA,kBAAA;EACA,MAAA;EACA,QAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;AACA;AACA;EACA,yBAAA;EACA,gBAAA;AACA;AACA;EACA,WAAA;AACA;AACA;EACA,kBAAA;EACA,iBAAA;AACA;AACA;EACA,uBAAA;AACA;AACA;EACA,UAAA;AACA\",\"sourcesContent\":[\"<template>\\n <transition>\\n <div class=\\\"backdrop\\\"\\n @touchstart.self.prevent.stop=\\\"toggleImageQualityModal\\\"\\n @mousedown.self.prevent.stop=\\\"toggleImageQualityModal\\\"\\n >\\n <div class=\\\"image-quality-modal\\\">\\n <div class=\\\"header\\\">\\n <span>画質設定</span>\\n <div class=\\\"close\\\" @click=\\\"toggleImageQualityModal\\\">×</div>\\n </div>\\n <div class=\\\"content-wrapper\\\">\\n <div class=\\\"content\\\">\\n <label><input type=\\\"radio\\\" value=\\\"low\\\" v-model=\\\"imageQuality\\\">低</label><br>\\n <label><input type=\\\"radio\\\" value=\\\"middle\\\" v-model=\\\"imageQuality\\\">中</label><br>\\n <label><input type=\\\"radio\\\" value=\\\"high\\\" v-model=\\\"imageQuality\\\">高</label><br>\\n <label><input type=\\\"radio\\\" value=\\\"original\\\" v-model=\\\"imageQuality\\\">オリジナル</label>\\n </div>\\n </div>\\n </div>\\n </div>\\n </transition>\\n</template>\\n\\n<script>\\nimport { mapState, mapMutations, mapActions } from 'vuex'\\n\\nexport default {\\n computed: {\\n ...mapState('panorama', [\\n 'settings'\\n ]),\\n imageQuality: {\\n get () { return this.settings.imageQuality },\\n set (value) { this.setImageQuality(value) }\\n }\\n },\\n watch: {\\n imageQuality () {\\n this.toggleImageQualityModal()\\n this.changeImageQuality()\\n }\\n },\\n methods: {\\n ...mapMutations('panorama', [\\n 'toggleImageQualityModal',\\n 'setImageQuality'\\n ]),\\n ...mapActions('panorama', [\\n 'changeImageQuality'\\n ])\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.backdrop {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.5);\\n pointer-events: auto;\\n}\\n.image-quality-modal {\\n position: absolute;\\n height: 188px;\\n width: 152px;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n background-color: #fff;\\n box-shadow: 0 0 4px 4px rgba(0, 0, 0, 0.2);\\n}\\n.header {\\n border-bottom: solid 1px #ccc;\\n height: 44px;\\n line-height: 44px;\\n font-size: 20px;\\n text-align: center;\\n color: #666;\\n}\\n.close {\\n position: absolute;\\n top: 0;\\n right: 0;\\n width: 44px;\\n height: 44px;\\n font-weight: bold;\\n}\\n.content-wrapper {\\n height: calc(100% - 44px);\\n overflow: hidden;\\n}\\n.content {\\n color: #666;\\n}\\nlabel {\\n padding-left: 20px;\\n line-height: 36px;\\n}\\n.v-enter-active, .v-leave-active {\\n transition: opacity .2s;\\n}\\n.v-enter, .v-leave-to {\\n opacity: 0;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.backdrop[data-v-187ee332] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.5);\\n pointer-events: auto;\\n}\\n.info-modal[data-v-187ee332] {\\n position: absolute;\\n max-height: 400px;\\n max-width: 600px;\\n height: calc(100% - 40px);\\n width: calc(100% - 40px);\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n background-color: #fff;\\n box-shadow: 0 0 4px 4px rgba(0, 0, 0, 0.2);\\n}\\n.header[data-v-187ee332] {\\n border-bottom: solid 1px #ccc;\\n height: 44px;\\n line-height: 44px;\\n font-size: 20px;\\n text-align: center;\\n color: #666;\\n}\\n.close[data-v-187ee332] {\\n position: absolute;\\n top: 0;\\n right: 0;\\n width: 44px;\\n height: 44px;\\n font-weight: bold;\\n}\\n.content-wrapper[data-v-187ee332] {\\n padding: 10px;\\n height: calc(100% - 44px);\\n overflow: scroll;\\n}\\n.content[data-v-187ee332] {\\n color: #666;\\n}\\n.v-enter-active[data-v-187ee332], .v-leave-active[data-v-187ee332] {\\n transition: opacity .2s;\\n}\\n.v-enter[data-v-187ee332], .v-leave-to[data-v-187ee332] {\\n opacity: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/info-modal.vue\"],\"names\":[],\"mappings\":\";AAsCA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,oCAAA;EACA,oBAAA;AACA;AACA;EACA,kBAAA;EACA,iBAAA;EACA,gBAAA;EACA,yBAAA;EACA,wBAAA;EACA,QAAA;EACA,SAAA;EACA,gCAAA;EACA,sBAAA;EACA,0CAAA;AACA;AACA;EACA,6BAAA;EACA,YAAA;EACA,iBAAA;EACA,eAAA;EACA,kBAAA;EACA,WAAA;AACA;AACA;EACA,kBAAA;EACA,MAAA;EACA,QAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;AACA;AACA;EACA,aAAA;EACA,yBAAA;EACA,gBAAA;AACA;AACA;EACA,WAAA;AACA;AACA;EACA,uBAAA;AACA;AACA;EACA,UAAA;AACA\",\"sourcesContent\":[\"<template>\\n <transition>\\n <div class=\\\"backdrop\\\"\\n @touchstart.self.prevent.stop=\\\"toggleInfoModal\\\"\\n @mousedown.self.prevent.stop=\\\"toggleInfoModal\\\"\\n >\\n <div class=\\\"info-modal\\\">\\n <div class=\\\"header\\\">\\n <span>物件情報</span>\\n <div class=\\\"close\\\" @click=\\\"toggleInfoModal\\\">×</div>\\n </div>\\n <div class=\\\"content-wrapper\\\">\\n <div class=\\\"content\\\">\\n 住所とか賃料とかいろいろ\\n <br>・<br>・<br>・<br>・<br>・<br>・<br>・<br>・<br>・<br>・<br>・\\n <br>・<br>・<br>・<br>・<br>・<br>・<br>・<br>・<br>・<br>・<br>・\\n <br>・<br>・<br>・<br>・<br>・<br>・<br>・<br>・<br>・<br>・<br>・\\n <br>・<br>・<br>・<br>・<br>・<br>・<br>・<br>・<br>・<br>・<br>・\\n </div>\\n </div>\\n </div>\\n </div>\\n </transition>\\n</template>\\n\\n<script>\\nimport { mapMutations } from 'vuex'\\n\\nexport default {\\n methods: {\\n ...mapMutations('panorama', [\\n 'toggleInfoModal'\\n ])\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.backdrop {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.5);\\n pointer-events: auto;\\n}\\n.info-modal {\\n position: absolute;\\n max-height: 400px;\\n max-width: 600px;\\n height: calc(100% - 40px);\\n width: calc(100% - 40px);\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n background-color: #fff;\\n box-shadow: 0 0 4px 4px rgba(0, 0, 0, 0.2);\\n}\\n.header {\\n border-bottom: solid 1px #ccc;\\n height: 44px;\\n line-height: 44px;\\n font-size: 20px;\\n text-align: center;\\n color: #666;\\n}\\n.close {\\n position: absolute;\\n top: 0;\\n right: 0;\\n width: 44px;\\n height: 44px;\\n font-weight: bold;\\n}\\n.content-wrapper {\\n padding: 10px;\\n height: calc(100% - 44px);\\n overflow: scroll;\\n}\\n.content {\\n color: #666;\\n}\\n.v-enter-active, .v-leave-active {\\n transition: opacity .2s;\\n}\\n.v-enter, .v-leave-to {\\n opacity: 0;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.item-thumbnails[data-v-5a31c192] {\\n position: absolute;\\n height: 96px;\\n left: 0px;\\n right: 0px;\\n bottom: 44px; /* ツールバー */\\n overflow: hidden;\\n pointer-events: auto;\\n background-color: rgba(0, 0, 0, 0.1);\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.2);\\n}\\n.title[data-v-5a31c192] {\\n color: #fff;\\n font-size: 14px;\\n line-height: 20px;\\n height: 20px;\\n margin-top: 2px;\\n margin-left: 10px;\\n}\\n.thumbnails[data-v-5a31c192] {\\n margin: 5px 0;\\n white-space: nowrap;\\n}\\n.thumbnail[data-v-5a31c192] {\\n display: inline-block;\\n vertical-align: top;\\n margin: 0 2px;\\n background-color: transparent;\\n}\\n.thumbnail[data-v-5a31c192]:first-child {\\n margin-left: 10px;\\n}\\n.thumbnail[data-v-5a31c192]:last-child {\\n margin-right: 10px;\\n}\\n.image[data-v-5a31c192] {\\n position: relative;\\n width: calc(90px + 4px);\\n height: calc(45px + 4px);\\n background-color: rgba(0,0,0,0.2);\\n border: solid 2px #ccc;\\n}\\n.image.active[data-v-5a31c192] {\\n border: solid 2px #2AB7D9;\\n}\\n.image img[data-v-5a31c192] {\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n max-width: 100%;\\n max-height: 100%;\\n}\\n.caption[data-v-5a31c192] {\\n height: 18px;\\n line-height: 18px;\\n font-size: 12px;\\n text-align: center;\\n color: #fff;\\n}\\n.scroll-left[data-v-5a31c192], .scroll-right[data-v-5a31c192] {\\n position: absolute;\\n top: 27px;\\n height: 49px;\\n width: 30px;\\n padding: 8px 4px;\\n font-size: 20px;\\n font-weight: bold;\\n color: #fff;\\n}\\n.scroll-left[data-v-5a31c192] {\\n left: 0;\\n text-align: left;\\n background: linear-gradient(to right, rgba(0, 0, 0, 0.3), transparent);\\n}\\n.scroll-right[data-v-5a31c192] {\\n right: 0;\\n text-align: right;\\n background: linear-gradient(to left, rgba(0, 0, 0, 0.3), transparent);\\n}\\n.v-enter-active[data-v-5a31c192], .v-leave-active[data-v-5a31c192] {\\n transition: height .2s;\\n}\\n.v-enter[data-v-5a31c192], .v-leave-to[data-v-5a31c192] {\\n height: 0;\\n}\\n.fade-enter-active[data-v-5a31c192], .fade-leave-active[data-v-5a31c192] {\\n transition: opacity .2s;\\n}\\n.fade-enter[data-v-5a31c192], .fade-leave-to[data-v-5a31c192] {\\n opacity: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/item-thumbnails.vue\"],\"names\":[],\"mappings\":\";AA+EA;EACA,kBAAA;EACA,YAAA;EACA,SAAA;EACA,UAAA;EACA,YAAA,EAAA,UAAA;EACA,gBAAA;EACA,oBAAA;EACA,oCAAA;EACA,0CAAA;AACA;AACA;EACA,WAAA;EACA,eAAA;EACA,iBAAA;EACA,YAAA;EACA,eAAA;EACA,iBAAA;AACA;AACA;EACA,aAAA;EACA,mBAAA;AACA;AACA;EACA,qBAAA;EACA,mBAAA;EACA,aAAA;EACA,6BAAA;AACA;AACA;EACA,iBAAA;AACA;AACA;EACA,kBAAA;AACA;AACA;EACA,kBAAA;EACA,uBAAA;EACA,wBAAA;EACA,iCAAA;EACA,sBAAA;AACA;AACA;EACA,yBAAA;AACA;AACA;EACA,kBAAA;EACA,SAAA;EACA,QAAA;EACA,gCAAA;EACA,eAAA;EACA,gBAAA;AACA;AACA;EACA,YAAA;EACA,iBAAA;EACA,eAAA;EACA,kBAAA;EACA,WAAA;AACA;AACA;EACA,kBAAA;EACA,SAAA;EACA,YAAA;EACA,WAAA;EACA,gBAAA;EACA,eAAA;EACA,iBAAA;EACA,WAAA;AACA;AACA;EACA,OAAA;EACA,gBAAA;EACA,sEAAA;AACA;AACA;EACA,QAAA;EACA,iBAAA;EACA,qEAAA;AACA;AACA;EACA,sBAAA;AACA;AACA;EACA,SAAA;AACA;AACA;EACA,uBAAA;AACA;AACA;EACA,UAAA;AACA\",\"sourcesContent\":[\"<template>\\n <transition>\\n <div class=\\\"item-thumbnails\\\">\\n <div>\\n <div class=\\\"title\\\">{{ pointName }}のシーンを選択</div>\\n </div>\\n <scrollable class=\\\"thumbnails\\\" ref=\\\"scrollable\\\"\\n @update:isLeftScrollable=\\\"isLeftScrollable = $event\\\"\\n @update:isRightScrollable=\\\"isRightScrollable = $event\\\"\\n >\\n <div class=\\\"thumbnail\\\" v-for=\\\"thumbnail in itemThumbnails\\\" :key=\\\"thumbnail.itemId\\\">\\n <div class=\\\"image\\\"\\n :class=\\\"{ active: thumbnail.active }\\\"\\n :style=\\\"{ borderColor: thumbnailBorderColor(thumbnail) }\\\"\\n @click=\\\"changeItem({ pointId: thumbnail.pointId, itemId: thumbnail.itemId })\\\"\\n >\\n <img \\n :src=\\\"thumbnail.imageUrl\\\"\\n style=\\\"pointer-events: none;\\\"\\n @copy=\\\"onCopy($event)\\\"\\n >\\n </div>\\n <div class=\\\"caption\\\">{{ thumbnail.caption }}</div>\\n </div>\\n </scrollable>\\n <transition-group name=\\\"fade\\\">\\n <div class=\\\"scroll-left\\\" @click=\\\"onScrollLeft\\\" v-if=\\\"isLeftScrollable\\\" key=\\\"left\\\"><</div>\\n <div class=\\\"scroll-right\\\" @click=\\\"onScrollRight\\\" v-if=\\\"isRightScrollable\\\" key=\\\"right\\\">></div>\\n </transition-group>\\n </div>\\n </transition>\\n</template>\\n\\n<script>\\nimport { mapGetters, mapActions } from 'vuex'\\nimport Scrollable from './scrollable.vue'\\n\\nexport default {\\n components: { Scrollable },\\n data () {\\n return {\\n isLeftScrollable: false,\\n isRightScrollable: false\\n }\\n },\\n computed: {\\n ...mapGetters('panorama', [\\n 'pointName',\\n 'itemThumbnails',\\n 'theme'\\n ])\\n },\\n methods: {\\n ...mapActions('panorama', [\\n 'changeItem'\\n ]),\\n thumbnailBorderColor (thumbnal) {\\n return thumbnal.active ? this.theme.thumbnailBorder.activeColor : this.theme.thumbnailBorder.defaultColor\\n },\\n onScrollLeft () {\\n this.$refs.scrollable.scroll(-1)\\n },\\n onScrollRight () {\\n this.$refs.scrollable.scroll(1)\\n },\\n onCopy (event) {\\n event.preventDefault()\\n },\\n },\\n activated () {\\n this.$el.querySelector('.thumbnails').scrollLeft = this.scrollLeft\\n },\\n deactivated () {\\n this.scrollLeft = this.$el.querySelector('.thumbnails').scrollLeft\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.item-thumbnails {\\n position: absolute;\\n height: 96px;\\n left: 0px;\\n right: 0px;\\n bottom: 44px; /* ツールバー */\\n overflow: hidden;\\n pointer-events: auto;\\n background-color: rgba(0, 0, 0, 0.1);\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.2);\\n}\\n.title {\\n color: #fff;\\n font-size: 14px;\\n line-height: 20px;\\n height: 20px;\\n margin-top: 2px;\\n margin-left: 10px;\\n}\\n.thumbnails {\\n margin: 5px 0;\\n white-space: nowrap;\\n}\\n.thumbnail {\\n display: inline-block;\\n vertical-align: top;\\n margin: 0 2px;\\n background-color: transparent;\\n}\\n.thumbnail:first-child {\\n margin-left: 10px;\\n}\\n.thumbnail:last-child {\\n margin-right: 10px;\\n}\\n.image {\\n position: relative;\\n width: calc(90px + 4px);\\n height: calc(45px + 4px);\\n background-color: rgba(0,0,0,0.2);\\n border: solid 2px #ccc;\\n}\\n.image.active {\\n border: solid 2px #2AB7D9;\\n}\\n.image img {\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n max-width: 100%;\\n max-height: 100%;\\n}\\n.caption {\\n height: 18px;\\n line-height: 18px;\\n font-size: 12px;\\n text-align: center;\\n color: #fff;\\n}\\n.scroll-left, .scroll-right {\\n position: absolute;\\n top: 27px;\\n height: 49px;\\n width: 30px;\\n padding: 8px 4px;\\n font-size: 20px;\\n font-weight: bold;\\n color: #fff;\\n}\\n.scroll-left {\\n left: 0;\\n text-align: left;\\n background: linear-gradient(to right, rgba(0, 0, 0, 0.3), transparent);\\n}\\n.scroll-right {\\n right: 0;\\n text-align: right;\\n background: linear-gradient(to left, rgba(0, 0, 0, 0.3), transparent);\\n}\\n.v-enter-active, .v-leave-active {\\n transition: height .2s;\\n}\\n.v-enter, .v-leave-to {\\n height: 0;\\n}\\n.fade-enter-active, .fade-leave-active {\\n transition: opacity .2s;\\n}\\n.fade-enter, .fade-leave-to {\\n opacity: 0;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\nsvg[data-v-586eea86] {\\n display: block;\\n pointer-events: auto;\\n}\\nsvg line[data-v-586eea86] {\\n stroke: rgba(42, 183, 217, 0.8);\\n stroke-linecap: round;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/map-svg.vue\"],\"names\":[],\"mappings\":\";AA4QA;EACA,cAAA;EACA,oBAAA;AACA;AACA;EACA,+BAAA;EACA,qBAAA;AACA\",\"sourcesContent\":[\"<template>\\n <svg xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n :width=\\\"size\\\"\\n :height=\\\"size\\\"\\n :viewBox=\\\"`0 0 ${size} ${size}`\\\"\\n @wheel.prevent=\\\"onWheel\\\"\\n v-hammer:tap=\\\"onTap\\\"\\n v-hammer:pan=\\\"onPan\\\"\\n :hammer-options.prop=\\\"{pan: { threshold: 0 }}\\\"\\n >\\n <g :opacity=\\\"opacity\\\">\\n <rect :width=\\\"size\\\" :height=\\\"size\\\" fill=\\\"#ccc\\\" />\\n <image\\n :x=\\\"imageX\\\"\\n :y=\\\"imageY\\\"\\n :width=\\\"imageWidth\\\"\\n :height=\\\"imageHeight\\\"\\n :xlink:href=\\\"mapImageUrl\\\"\\n />\\n </g>\\n\\n <path :d=\\\"raderShape\\\" fill=\\\"red\\\" opacity=\\\"0.3\\\" v-if=\\\"isRadarVisible\\\" />\\n\\n <template v-if=\\\"showWalkThrough\\\">\\n <line v-for=\\\"line in mapLines\\\"\\n :key=\\\"line.join('-')\\\"\\n :x1=\\\"pointX(pointById(line[0]))\\\"\\n :y1=\\\"pointY(pointById(line[0]))\\\"\\n :x2=\\\"pointX(pointById(line[1]))\\\"\\n :y2=\\\"pointY(pointById(line[1]))\\\"\\n :stroke-width=\\\"1.5 * zoomScale\\\"\\n :stroke-dasharray=\\\"`${1 * zoomScale}, ${3 * zoomScale}`\\\"\\n v-if=\\\"settings.drawLine\\\"\\n />\\n <circle v-for=\\\"point in mapPoints\\\"\\n :key=\\\"point.pointId\\\"\\n :cx=\\\"pointX(point)\\\"\\n :cy=\\\"pointY(point)\\\"\\n :r=\\\"3 * zoomScale\\\"\\n fill=\\\"#f5f5f5\\\"\\n stroke=\\\"#2AB7D9\\\"\\n :stroke-width=\\\"1.5 * zoomScale\\\"\\n />\\n <circle v-for=\\\"point in mapPoints\\\" v-if=\\\"!point.active\\\"\\n :key=\\\"`clickable-${point.pointId}`\\\"\\n :cx=\\\"pointX(point)\\\"\\n :cy=\\\"pointY(point)\\\"\\n :r=\\\"9 * zoomScale\\\"\\n :fill-opacity=\\\"0\\\"\\n @click=\\\"changePoint({ pointId: point.pointId })\\\"\\n />\\n </template>\\n\\n <circle\\n :cx=\\\"pointX(currentPosition)\\\"\\n :cy=\\\"pointY(currentPosition)\\\"\\n :r=\\\"3 * zoomScale\\\"\\n fill=\\\"#FF7373\\\"\\n stroke=\\\"#FF7373\\\"\\n :stroke-width=\\\"1.5 * zoomScale\\\"\\n v-if=\\\"currentPosition.visible\\\"\\n />\\n </svg>\\n</template>\\n\\n<script>\\nimport { mapState, mapGetters, mapActions } from 'vuex'\\n\\nimport * as THREE from 'three'\\nimport TWEEN from '@tweenjs/tween.js'\\n\\nexport default {\\n props: [ 'opacity', 'size', 'showWalkThrough' ],\\n\\n data () {\\n return {\\n currentPosition: {\\n x: -1,\\n y: -1,\\n visible: false\\n },\\n\\n originalWidth: 1,\\n originalHeight: 1,\\n\\n zoomScale: 1,\\n\\n panOffset: {\\n x: 0,\\n y: 0\\n }\\n }\\n },\\n\\n computed: {\\n normalization () {\\n const longSide = Math.max(this.originalWidth , this.originalHeight)\\n return longSide ? this.size / longSide : 0\\n },\\n\\n imageWidth () {\\n return this.originalWidth * this.normalization * this.zoomScale\\n },\\n\\n imageHeight () {\\n return this.originalHeight * this.normalization * this.zoomScale\\n },\\n\\n imageX () {\\n return (this.size - this.imageWidth) / 2 + this.panOffset.x\\n },\\n\\n imageY () {\\n return (this.size - this.imageHeight) / 2 + this.panOffset.y\\n },\\n\\n currentPoint () {\\n return this.mapPoints.find(point => point.active)\\n },\\n\\n raderShape () {\\n const x = this.pointX(this.currentPosition)\\n const y = this.pointY(this.currentPosition)\\n const r = this.size * this.zoomScale * 0.4\\n const dir = this.cameraRotation.y - 90\\n return this.createRaderShape(x, y, r, dir, this.fov.value)\\n },\\n\\n ...mapState('panorama', [\\n 'settings',\\n 'cameraRotation',\\n 'fov'\\n ]),\\n\\n ...mapGetters('panorama', [\\n 'mapImageUrl',\\n 'mapPoints',\\n 'mapLines',\\n 'isRadarVisible'\\n ]),\\n },\\n\\n watch: {\\n mapImageUrl () {\\n this.updateImageSize()\\n },\\n\\n currentPoint: {\\n handler () {\\n if (this.currentPosition.visible && this.currentPoint.visible) {\\n new TWEEN.Tween(this.currentPosition)\\n .to({ x: this.currentPoint.x, y: this.currentPoint.y }, 500)\\n .easing(TWEEN.Easing.Quadratic.InOut)\\n .start()\\n\\n } else {\\n this.currentPosition.x = this.currentPoint.x\\n this.currentPosition.y = this.currentPoint.y\\n this.currentPosition.visible = this.currentPoint.visible\\n }\\n },\\n deep: true\\n }\\n },\\n\\n methods: {\\n async updateImageSize() {\\n const image = await this.getImage(this.mapImageUrl)\\n this.originalWidth = image.naturalWidth\\n this.originalHeight = image.naturalHeight\\n },\\n\\n getImage (url) {\\n return new Promise((resolve, reject) => {\\n const image = new Image()\\n image.onload = () => resolve(image)\\n image.onerror = () => reject(image)\\n image.src = url\\n })\\n },\\n\\n createRaderShape (cx, cy, r, dir, fov) {\\n const x1 = Math.cos(THREE.MathUtils.degToRad(dir - fov / 2)) * r\\n const y1 = Math.sin(THREE.MathUtils.degToRad(dir - fov / 2)) * r\\n const x2 = Math.cos(THREE.MathUtils.degToRad(dir + fov / 2)) * r\\n const y2 = Math.sin(THREE.MathUtils.degToRad(dir + fov / 2)) * r\\n const dx = x2 - x1\\n const dy = y2 - y1\\n return `M ${cx} ${cy} l ${x1} ${y1} a ${r} ${r} 0 0 1 ${dx} ${dy} z`\\n },\\n\\n onTap () {\\n this.$emit('tap')\\n },\\n\\n onWheel (e) {\\n if (!this.showWalkThrough) return\\n\\n const delta = Math.sign(e.wheelDeltaY || e.wheelDelta || e.deltaY || e.detail) / 5\\n this.zoom(this.zoomScale + delta, e.offsetX / this.size, e.offsetY / this.size)\\n },\\n\\n zoom (zoomScale, viewFocalCurrentPointX, viewFocalCurrentPointY) {\\n zoomScale = THREE.MathUtils.clamp(zoomScale, 1, 5)\\n if (this.zoomScale !== zoomScale) {\\n const imageFocalCurrentPointX = (viewFocalCurrentPointX * this.size - this.imageX) / this.imageWidth\\n const imageFocalCurrentPointY = (viewFocalCurrentPointY * this.size - this.imageY) / this.imageHeight\\n this.zoomScale = zoomScale\\n this.panTo(imageFocalCurrentPointX, imageFocalCurrentPointY, viewFocalCurrentPointX, viewFocalCurrentPointY)\\n this.$emit('zoom', this.zoomScale)\\n }\\n },\\n\\n panTo (imageFocalCurrentPointX, imageFocalCurrentPointY, viewFocalCurrentPointX, viewFocalCurrentPointY) {\\n const dx = viewFocalCurrentPointX * this.size - (imageFocalCurrentPointX * this.imageWidth + this.imageX)\\n const dy = viewFocalCurrentPointY * this.size - (imageFocalCurrentPointY * this.imageHeight + this.imageY)\\n this.pan(this.panOffset.x + dx, this.panOffset.y + dy)\\n },\\n\\n onPan(e) {\\n if (!this.showWalkThrough) return\\n\\n this.pan(this.panOffset.x + e.velocityX * 10, this.panOffset.y + e.velocityY * 10)\\n },\\n\\n pan (x, y) {\\n this.panOffset.x = x\\n this.panOffset.y = y\\n this.restrictPan()\\n },\\n\\n restrictPan () {\\n const xGap = Math.max((this.imageWidth - this.size) / 2, 0)\\n const yGap = Math.max((this.imageHeight - this.size) / 2, 0)\\n this.panOffset.x = THREE.MathUtils.clamp(this.panOffset.x, -xGap, xGap)\\n this.panOffset.y = THREE.MathUtils.clamp(this.panOffset.y, -yGap, yGap)\\n },\\n\\n pointById (pointId) {\\n return this.mapPoints.find(point => point.pointId == pointId)\\n },\\n\\n pointX (point) {\\n return point.x * this.imageWidth + this.imageX\\n },\\n\\n pointY (point) {\\n return point.y * this.imageHeight + this.imageY\\n },\\n\\n ...mapActions('panorama', [\\n 'changePoint'\\n ])\\n },\\n\\n created () {\\n this.currentPosition.x = this.currentPoint.x\\n this.currentPosition.y = this.currentPoint.y\\n this.currentPosition.visible = this.currentPoint.visible\\n },\\n\\n mounted () {\\n this.updateImageSize()\\n }\\n}\\n</script>\\n\\n<style scoped>\\nsvg {\\n display: block;\\n pointer-events: auto;\\n}\\nsvg line {\\n stroke: rgba(42, 183, 217, 0.8);\\n stroke-linecap: round;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.map-view[data-v-6a80d33b] {\\n position: absolute;\\n margin: 8px;\\n font-size: 0;\\n pointer-events: auto;\\n cursor: pointer;\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.2);\\n transition: all 0.2s;\\n}\\n.v-enter-active[data-v-6a80d33b], .v-leave-active[data-v-6a80d33b] {\\n transition: all .2s;\\n}\\n.v-enter[data-v-6a80d33b], .v-leave-to[data-v-6a80d33b] {\\n opacity: 0;\\n}\\n.map-large.v-enter[data-v-6a80d33b], .map-large.v-leave-to[data-v-6a80d33b] {\\n width: 60px;\\n height: 60px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/map-view.vue\"],\"names\":[],\"mappings\":\";AA8BA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,oBAAA;EACA,eAAA;EACA,0CAAA;EACA,oBAAA;AACA;AACA;EACA,mBAAA;AACA;AACA;EACA,UAAA;AACA;AACA;EACA,WAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<template>\\n <transition v-if=\\\"mapImageUrl\\\">\\n <keep-alive>\\n <map-small class=\\\"map-view\\\" @small=\\\"small = $event\\\" v-if=\\\"small\\\" />\\n <map-large class=\\\"map-view\\\" @small=\\\"small = $event\\\" v-if=\\\"!small\\\" />\\n </keep-alive>\\n </transition>\\n</template>\\n\\n<script>\\nimport { mapGetters } from 'vuex'\\nimport MapSmall from './map-small.vue'\\nimport MapLarge from './map-large.vue'\\n\\nexport default {\\n components: { MapSmall, MapLarge },\\n data () {\\n return {\\n small: true\\n }\\n },\\n computed: {\\n ...mapGetters('panorama', [\\n 'mapImageUrl'\\n ])\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.map-view {\\n position: absolute;\\n margin: 8px;\\n font-size: 0;\\n pointer-events: auto;\\n cursor: pointer;\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.2);\\n transition: all 0.2s;\\n}\\n.v-enter-active, .v-leave-active {\\n transition: all .2s;\\n}\\n.v-enter, .v-leave-to {\\n opacity: 0;\\n}\\n.map-large.v-enter, .map-large.v-leave-to {\\n width: 60px;\\n height: 60px;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.button[data-v-ddf031da] {\\n /* aタグのリセット */\\n text-decoration: none;\\n\\n /* buttonタグのリセット */\\n font-size: 1em;\\n line-height: 1.5em;\\n border-style: solid;\\n\\n /* 外見 */\\n text-align: center;\\n background-color: #2ad0d9;\\n color: white;\\n padding: 4px 24px;\\n border-radius: 4px;\\n border-color: #14aec8;\\n border-width: 1px;\\n}\\n.overlay-message-modal[data-v-ddf031da] {\\n width: 275px\\n}\\n.overlay-button[data-v-ddf031da] {\\n background-color: transparent;\\n border: rgba(0, 0, 0, 0);\\n padding: 0;\\n\\n /* クリッカバブル */\\n pointer-events: auto;\\n cursor: pointer;\\n margin: 16px 12px 0 0;\\n}\\n.overlay-button img[data-v-ddf031da] {\\n width: 100%;\\n}\\n.message-modal[data-v-ddf031da] {\\n /* 配置 */\\n position: fixed;\\n top: 50%;\\n left: 50%;\\n transform: translateY(-50%) translateX(-50%);\\n -webkit-transform: translateY(-50%) translateX(-50%);\\n margin: auto;\\n width: min(100%, 400px);\\n /* ヘッダー(44px) + フッター(44px) + 上下余白(16px) = 104px */\\n max-height: calc(100% - 104px);\\n\\n /* クリッカバブル */\\n pointer-events: auto;\\n\\n /* 外見 */\\n background-color: rgba(255, 255, 255, 0.8);\\n padding: 8px;\\n border-radius: 4px;\\n display: flex;\\n flex-direction: column;\\n}\\n.message-modal-header[data-v-ddf031da] {\\n text-align: right;\\n}\\n.button-close[data-v-ddf031da] {\\n padding: 2px;\\n border: none;\\n border-radius: 50%;\\n font-size: 1em;\\n line-height: 1em;\\n width: calc(1em + 2px * 2);\\n height: calc(1em + 2px * 2);\\n}\\n.message-modal-content[data-v-ddf031da] {\\n padding: 4px 16px;\\n overflow: auto;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/overlay-message-modal.vue\"],\"names\":[],\"mappings\":\";AA6DA;EACA,aAAA;EACA,qBAAA;;EAEA,kBAAA;EACA,cAAA;EACA,kBAAA;EACA,mBAAA;;EAEA,OAAA;EACA,kBAAA;EACA,yBAAA;EACA,YAAA;EACA,iBAAA;EACA,kBAAA;EACA,qBAAA;EACA,iBAAA;AACA;AACA;EACA;AACA;AACA;EACA,6BAAA;EACA,wBAAA;EACA,UAAA;;EAEA,YAAA;EACA,oBAAA;EACA,eAAA;EACA,qBAAA;AACA;AACA;EACA,WAAA;AACA;AACA;EACA,OAAA;EACA,eAAA;EACA,QAAA;EACA,SAAA;EACA,4CAAA;EACA,oDAAA;EACA,YAAA;EACA,uBAAA;EACA,iDAAA;EACA,8BAAA;;EAEA,YAAA;EACA,oBAAA;;EAEA,OAAA;EACA,0CAAA;EACA,YAAA;EACA,kBAAA;EACA,aAAA;EACA,sBAAA;AACA;AACA;EACA,iBAAA;AACA;AACA;EACA,YAAA;EACA,YAAA;EACA,kBAAA;EACA,cAAA;EACA,gBAAA;EACA,0BAAA;EACA,2BAAA;AACA;AACA;EACA,iBAAA;EACA,cAAA;AACA\",\"sourcesContent\":[\"<template>\\n <div class=\\\"overlay-message-modal\\\" v-if=\\\"enable\\\">\\n <button\\n class=\\\"overlay-button\\\"\\n v-if=\\\"!showModal\\\"\\n @click.prevent=\\\"showModal = true\\\">\\n <img src=\\\"@/images/panoramas/items/renovation_modal_button.png\\\" />\\n </button>\\n <div\\n class=\\\"message-modal\\\"\\n v-if=\\\"showModal\\\"\\n @click.stop=\\\"showModal = false\\\">\\n <div class=\\\"message-modal-header\\\">\\n <button\\n class=\\\"button button-close\\\"\\n @click.prevent=\\\"showModal = false\\\">\\n ✕\\n </button>\\n </div>\\n <div class=\\\"message-modal-content\\\">\\n <div style=\\\"padding-bottom: 12px;\\\" v-html=\\\"overlayModalData.content\\\"></div>\\n <div style=\\\"text-align: center;\\\">\\n <a\\n v-if=\\\"overlayModalData.external_url\\\"\\n :href=\\\"overlayModalData.external_url\\\"\\n v-html=\\\"overlayModalData.external_label\\\"\\n class=\\\"button\\\"\\n target=\\\"_blank\\\"\\n @click.stop>\\n </a>\\n </div>\\n </div>\\n </div>\\n </div>\\n</template>\\n\\n<script>\\nimport { mapGetters } from 'vuex'\\n\\nexport default {\\n data() {\\n return { showModal: false }\\n },\\n computed: {\\n ...mapGetters('panorama', [\\n 'currentItem'\\n ]),\\n enable() {\\n return this.overlayModalData && this.overlayModalData.enable\\n },\\n overlayModalData() {\\n return this.currentItem &&\\n this.currentItem.meta_data &&\\n this.currentItem.meta_data.common &&\\n this.currentItem.meta_data.common.overlay_modal\\n }\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.button {\\n /* aタグのリセット */\\n text-decoration: none;\\n\\n /* buttonタグのリセット */\\n font-size: 1em;\\n line-height: 1.5em;\\n border-style: solid;\\n\\n /* 外見 */\\n text-align: center;\\n background-color: #2ad0d9;\\n color: white;\\n padding: 4px 24px;\\n border-radius: 4px;\\n border-color: #14aec8;\\n border-width: 1px;\\n}\\n.overlay-message-modal {\\n width: 275px\\n}\\n.overlay-button {\\n background-color: transparent;\\n border: rgba(0, 0, 0, 0);\\n padding: 0;\\n\\n /* クリッカバブル */\\n pointer-events: auto;\\n cursor: pointer;\\n margin: 16px 12px 0 0;\\n}\\n.overlay-button img {\\n width: 100%;\\n}\\n.message-modal {\\n /* 配置 */\\n position: fixed;\\n top: 50%;\\n left: 50%;\\n transform: translateY(-50%) translateX(-50%);\\n -webkit-transform: translateY(-50%) translateX(-50%);\\n margin: auto;\\n width: min(100%, 400px);\\n /* ヘッダー(44px) + フッター(44px) + 上下余白(16px) = 104px */\\n max-height: calc(100% - 104px);\\n\\n /* クリッカバブル */\\n pointer-events: auto;\\n\\n /* 外見 */\\n background-color: rgba(255, 255, 255, 0.8);\\n padding: 8px;\\n border-radius: 4px;\\n display: flex;\\n flex-direction: column;\\n}\\n.message-modal-header {\\n text-align: right;\\n}\\n.button-close {\\n padding: 2px;\\n border: none;\\n border-radius: 50%;\\n font-size: 1em;\\n line-height: 1em;\\n width: calc(1em + 2px * 2);\\n height: calc(1em + 2px * 2);\\n}\\n.message-modal-content {\\n padding: 4px 16px;\\n overflow: auto;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.panorama-zoom[data-v-dd6e6d88] {\\n position: absolute;\\n right: 8px;\\n transition: all 0.2s;\\n background-color: rgba(0, 0, 0, 0.1);\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.2);\\n border-radius: 4px;\\n pointer-events: auto;\\n}\\n.label[data-v-dd6e6d88] {\\n color: rgba(255, 255, 255, 0.5);\\n font-family: monospace;\\n font-size: 14px;\\n line-height: 20px;\\n text-align: center;\\n}\\n.slider[data-v-dd6e6d88] {\\n width: 30px;\\n height: 50px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/panorama-zoom.vue\"],\"names\":[],\"mappings\":\";AAmCA;EACA,kBAAA;EACA,UAAA;EACA,oBAAA;EACA,oCAAA;EACA,0CAAA;EACA,kBAAA;EACA,oBAAA;AACA;AACA;EACA,+BAAA;EACA,sBAAA;EACA,eAAA;EACA,iBAAA;EACA,kBAAA;AACA;AACA;EACA,WAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<template>\\n <div class=\\\"panorama-zoom\\\" :style=\\\"{ bottom: panoramaZoomBottom + 'px' }\\\">\\n <div class=\\\"label\\\">﹢</div>\\n <slider :vertical=\\\"true\\\" :min=\\\"fov.min\\\" :max=\\\"fov.max\\\" v-model=\\\"fovValue\\\" />\\n <div class=\\\"label\\\">﹣</div>\\n </div>\\n</template>\\n\\n<script>\\nimport { mapState, mapGetters, mapActions } from 'vuex'\\nimport Slider from './slider.vue'\\n\\nexport default {\\n components: { Slider },\\n computed: {\\n ...mapState('panorama', [\\n 'fov'\\n ]),\\n ...mapGetters('panorama', [\\n 'panoramaZoomBottom'\\n ]),\\n fovValue: {\\n get () { return this.fov.value },\\n set (value) { this.changeFov(value) }\\n }\\n },\\n methods: {\\n ...mapActions('panorama', [\\n 'changeFov'\\n ])\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.panorama-zoom {\\n position: absolute;\\n right: 8px;\\n transition: all 0.2s;\\n background-color: rgba(0, 0, 0, 0.1);\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.2);\\n border-radius: 4px;\\n pointer-events: auto;\\n}\\n.label {\\n color: rgba(255, 255, 255, 0.5);\\n font-family: monospace;\\n font-size: 14px;\\n line-height: 20px;\\n text-align: center;\\n}\\n.slider {\\n width: 30px;\\n height: 50px;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.point-thumbnails[data-v-3f18314c] {\\n position: absolute;\\n width: 100%;\\n height: 96px;\\n bottom: 44px; /* ツールバー */\\n background-color: rgba(0, 0, 0, 0.1);\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.2);\\n overflow: hidden;\\n pointer-events: auto;\\n}\\n.title[data-v-3f18314c] {\\n color: #fff;\\n font-size: 14px;\\n line-height: 20px;\\n height: 20px;\\n margin-top: 2px;\\n margin-left: 10px;\\n}\\n.thumbnails[data-v-3f18314c] {\\n margin: 5px 0;\\n white-space: nowrap;\\n}\\n.thumbnail[data-v-3f18314c] {\\n display: inline-block;\\n vertical-align: top;\\n margin: 0 2px;\\n background-color: transparent;\\n}\\n.thumbnail[data-v-3f18314c]:first-child {\\n margin-left: 10px;\\n}\\n.thumbnail[data-v-3f18314c]:last-child {\\n margin-right: 10px;\\n}\\n.image[data-v-3f18314c] {\\n position: relative;\\n width: calc(90px + 4px);\\n height: calc(45px + 4px);\\n background-color: rgba(0,0,0,0.2);\\n border: solid 2px #ccc;\\n}\\n.image img[data-v-3f18314c] {\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n max-width: 100%;\\n max-height: 100%;\\n}\\n.caption[data-v-3f18314c] {\\n height: 18px;\\n line-height: 18px;\\n font-size: 12px;\\n text-align: center;\\n color: #fff;\\n width: calc(90px + 4px);\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n.scroll-left[data-v-3f18314c], .scroll-right[data-v-3f18314c] {\\n position: absolute;\\n top: 27px;\\n height: 49px;\\n width: 30px;\\n padding: 8px 4px;\\n font-size: 20px;\\n font-weight: bold;\\n color: #fff;\\n}\\n.scroll-left[data-v-3f18314c] {\\n left: 0;\\n text-align: left;\\n background: linear-gradient(to right, rgba(0, 0, 0, 0.3), transparent);\\n}\\n.scroll-right[data-v-3f18314c] {\\n right: 0;\\n text-align: right;\\n background: linear-gradient(to left, rgba(0, 0, 0, 0.3), transparent);\\n}\\n.v-enter-active[data-v-3f18314c], .v-leave-active[data-v-3f18314c] {\\n transition: height .2s;\\n}\\n.v-enter[data-v-3f18314c], .v-leave-to[data-v-3f18314c] {\\n height: 0;\\n}\\n.fade-enter-active[data-v-3f18314c], .fade-leave-active[data-v-3f18314c] {\\n transition: opacity .2s;\\n}\\n.fade-enter[data-v-3f18314c], .fade-leave-to[data-v-3f18314c] {\\n opacity: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/point-thumbnails.vue\"],\"names\":[],\"mappings\":\";AA2EA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,YAAA,EAAA,UAAA;EACA,oCAAA;EACA,0CAAA;EACA,gBAAA;EACA,oBAAA;AACA;AACA;EACA,WAAA;EACA,eAAA;EACA,iBAAA;EACA,YAAA;EACA,eAAA;EACA,iBAAA;AACA;AACA;EACA,aAAA;EACA,mBAAA;AACA;AACA;EACA,qBAAA;EACA,mBAAA;EACA,aAAA;EACA,6BAAA;AACA;AACA;EACA,iBAAA;AACA;AACA;EACA,kBAAA;AACA;AACA;EACA,kBAAA;EACA,uBAAA;EACA,wBAAA;EACA,iCAAA;EACA,sBAAA;AACA;AACA;EACA,kBAAA;EACA,SAAA;EACA,QAAA;EACA,gCAAA;EACA,eAAA;EACA,gBAAA;AACA;AACA;EACA,YAAA;EACA,iBAAA;EACA,eAAA;EACA,kBAAA;EACA,WAAA;EACA,uBAAA;EACA,gBAAA;EACA,uBAAA;AACA;AACA;EACA,kBAAA;EACA,SAAA;EACA,YAAA;EACA,WAAA;EACA,gBAAA;EACA,eAAA;EACA,iBAAA;EACA,WAAA;AACA;AACA;EACA,OAAA;EACA,gBAAA;EACA,sEAAA;AACA;AACA;EACA,QAAA;EACA,iBAAA;EACA,qEAAA;AACA;AACA;EACA,sBAAA;AACA;AACA;EACA,SAAA;AACA;AACA;EACA,uBAAA;AACA;AACA;EACA,UAAA;AACA\",\"sourcesContent\":[\"<template>\\n <transition>\\n <div class=\\\"point-thumbnails\\\">\\n <div>\\n <div class=\\\"title\\\">撮影場所の移動</div>\\n </div>\\n <scrollable class=\\\"thumbnails\\\" ref=\\\"scrollable\\\"\\n @update:isLeftScrollable=\\\"isLeftScrollable = $event\\\"\\n @update:isRightScrollable=\\\"isRightScrollable = $event\\\"\\n >\\n <div class=\\\"thumbnail\\\" v-for=\\\"thumbnail in pointThumbnails\\\" :key=\\\"thumbnail.pointId\\\">\\n <div class=\\\"image\\\"\\n :class=\\\"{ active: thumbnail.active }\\\"\\n :style=\\\"{ borderColor: thumbnailBorderColor(thumbnail) }\\\"\\n @click=\\\"hideItemThumbnails(); changePoint({ pointId: thumbnail.pointId })\\\"\\n >\\n <img \\n :src=\\\"thumbnail.imageUrl\\\"\\n style=\\\"pointer-events: none;\\\"\\n @copy=\\\"onCopy($event)\\\"\\n >\\n </div>\\n <div class=\\\"caption\\\">{{ thumbnail.caption }}</div>\\n </div>\\n </scrollable>\\n <transition-group name=\\\"fade\\\">\\n <div class=\\\"scroll-left\\\" @click=\\\"onScrollLeft\\\" v-if=\\\"isLeftScrollable\\\" key=\\\"left\\\"><</div>\\n <div class=\\\"scroll-right\\\" @click=\\\"onScrollRight\\\" v-if=\\\"isRightScrollable\\\" key=\\\"right\\\">></div>\\n </transition-group>\\n </div>\\n </transition>\\n</template>\\n\\n<script>\\nimport { mapGetters, mapActions, mapMutations } from 'vuex'\\nimport Scrollable from './scrollable.vue'\\n\\nexport default {\\n components: { Scrollable },\\n data () {\\n return {\\n isLeftScrollable: false,\\n isRightScrollable: false\\n }\\n },\\n computed: {\\n ...mapGetters('panorama', [\\n 'pointThumbnails',\\n 'theme'\\n ])\\n },\\n methods: {\\n ...mapActions('panorama', [\\n 'changePoint'\\n ]),\\n ...mapMutations('panorama', [\\n 'hideItemThumbnails' // 撮影点一覧を触ってPointを切り替えたのに、突然表示がアイテムリストに切り替わってしまうのを防ぐ\\n ]),\\n thumbnailBorderColor (thumbnal) {\\n return thumbnal.active ? this.theme.thumbnailBorder.activeColor : this.theme.thumbnailBorder.defaultColor\\n },\\n onScrollLeft () {\\n this.$refs.scrollable.scroll(-1)\\n },\\n onScrollRight () {\\n this.$refs.scrollable.scroll(1)\\n },\\n onCopy (event) {\\n event.preventDefault()\\n },\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.point-thumbnails {\\n position: absolute;\\n width: 100%;\\n height: 96px;\\n bottom: 44px; /* ツールバー */\\n background-color: rgba(0, 0, 0, 0.1);\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.2);\\n overflow: hidden;\\n pointer-events: auto;\\n}\\n.title {\\n color: #fff;\\n font-size: 14px;\\n line-height: 20px;\\n height: 20px;\\n margin-top: 2px;\\n margin-left: 10px;\\n}\\n.thumbnails {\\n margin: 5px 0;\\n white-space: nowrap;\\n}\\n.thumbnail {\\n display: inline-block;\\n vertical-align: top;\\n margin: 0 2px;\\n background-color: transparent;\\n}\\n.thumbnail:first-child {\\n margin-left: 10px;\\n}\\n.thumbnail:last-child {\\n margin-right: 10px;\\n}\\n.image {\\n position: relative;\\n width: calc(90px + 4px);\\n height: calc(45px + 4px);\\n background-color: rgba(0,0,0,0.2);\\n border: solid 2px #ccc;\\n}\\n.image img {\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n max-width: 100%;\\n max-height: 100%;\\n}\\n.caption {\\n height: 18px;\\n line-height: 18px;\\n font-size: 12px;\\n text-align: center;\\n color: #fff;\\n width: calc(90px + 4px);\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n.scroll-left, .scroll-right {\\n position: absolute;\\n top: 27px;\\n height: 49px;\\n width: 30px;\\n padding: 8px 4px;\\n font-size: 20px;\\n font-weight: bold;\\n color: #fff;\\n}\\n.scroll-left {\\n left: 0;\\n text-align: left;\\n background: linear-gradient(to right, rgba(0, 0, 0, 0.3), transparent);\\n}\\n.scroll-right {\\n right: 0;\\n text-align: right;\\n background: linear-gradient(to left, rgba(0, 0, 0, 0.3), transparent);\\n}\\n.v-enter-active, .v-leave-active {\\n transition: height .2s;\\n}\\n.v-enter, .v-leave-to {\\n height: 0;\\n}\\n.fade-enter-active, .fade-leave-active {\\n transition: opacity .2s;\\n}\\n.fade-enter, .fade-leave-to {\\n opacity: 0;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.scrollable[data-v-664e9c2e] {\\n overflow-x: scroll;\\n overflow-y: hidden;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/scrollable.vue\"],\"names\":[],\"mappings\":\";AA4EA;EACA,kBAAA;EACA,kBAAA;AACA\",\"sourcesContent\":[\"<template>\\n <div class=\\\"scrollable\\\" @scroll=\\\"onScroll\\\">\\n <slot></slot>\\n </div>\\n</template>\\n\\n<script>\\nimport TWEEN from '@tweenjs/tween.js'\\n\\nexport default {\\n data () {\\n return {\\n clientWidth: 0,\\n scrollWidth: 0,\\n scrollLeft: 0\\n }\\n },\\n\\n computed: {\\n maxScrollLeft () {\\n return this.scrollWidth - this.clientWidth\\n },\\n isLeftScrollable () {\\n return this.scrollLeft > 0\\n },\\n isRightScrollable () {\\n return this.scrollLeft < this.maxScrollLeft\\n }\\n },\\n\\n watch: {\\n isLeftScrollable () {\\n this.$emit('update:isLeftScrollable', this.isLeftScrollable)\\n },\\n isRightScrollable () {\\n this.$emit('update:isRightScrollable', this.isRightScrollable)\\n },\\n '$screen.width'() {\\n this.updateWidth()\\n }\\n },\\n\\n methods: {\\n updateWidth () {\\n this.scrollWidth = this.$el.scrollWidth\\n this.clientWidth = this.$el.clientWidth\\n },\\n onScroll () {\\n this.scrollLeft = this.$el.scrollLeft\\n },\\n scroll (page) {\\n const newScrollLeft = Math.max(0, Math.min(this.maxScrollLeft, this.$el.scrollLeft + page * this.clientWidth))\\n\\n new TWEEN.Tween(this.$el)\\n .to({ scrollLeft: newScrollLeft }, 200)\\n .easing(TWEEN.Easing.Quadratic.Out)\\n .start()\\n }\\n },\\n\\n mounted() {\\n this.updateWidth()\\n },\\n\\n activated () {\\n this.updateWidth()\\n this.$el.scrollLeft = this.scrollLeft\\n },\\n\\n deactivated () {\\n this.scrollLeft = this.$el.scrollLeft\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.scrollable {\\n overflow-x: scroll;\\n overflow-y: hidden;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.slider[data-v-5bf7fa6a] {\\n position: relative;\\n}\\n.track-outer[data-v-5bf7fa6a], .track[data-v-5bf7fa6a] {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n}\\n.track-outer[data-v-5bf7fa6a] {\\n background-color: rgba(255, 255, 255, 0.5);\\n border-radius: 2px;\\n}\\n.horizontal .track-outer[data-v-5bf7fa6a] {\\n width: 100%;\\n height: 4px;\\n}\\n.horizontal .track[data-v-5bf7fa6a] {\\n width: calc(100% - 16px);\\n height: 100%;\\n}\\n.vertical .track-outer[data-v-5bf7fa6a] {\\n width: 4px;\\n height: 100%;\\n}\\n.vertical .track[data-v-5bf7fa6a] {\\n width: 100%;\\n height: calc(100% - 16px);\\n}\\n.thumb[data-v-5bf7fa6a] {\\n position: absolute;\\n width: 44px;\\n height: 44px;\\n}\\n.horizontal .thumb[data-v-5bf7fa6a] {\\n transform: translate(-22px, -20px);\\n}\\n.vertical .thumb[data-v-5bf7fa6a] {\\n transform: translate(-20px, -22px);\\n}\\n.thumb[data-v-5bf7fa6a]:before {\\n content: \\\"\\\";\\n background-color: #fff;\\n width: 16px;\\n height: 16px;\\n border-radius: 50%;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/slider.vue\"],\"names\":[],\"mappings\":\";AA+CA;EACA,kBAAA;AACA;AACA;EACA,kBAAA;EACA,QAAA;EACA,SAAA;EACA,gCAAA;AACA;AACA;EACA,0CAAA;EACA,kBAAA;AACA;AACA;EACA,WAAA;EACA,WAAA;AACA;AACA;EACA,wBAAA;EACA,YAAA;AACA;AACA;EACA,UAAA;EACA,YAAA;AACA;AACA;EACA,WAAA;EACA,yBAAA;AACA;AAEA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;AACA;AACA;EACA,kCAAA;AACA;AACA;EACA,kCAAA;AACA;AACA;EACA,WAAA;EACA,sBAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,kBAAA;EACA,QAAA;EACA,SAAA;EACA,gCAAA;AACA\",\"sourcesContent\":[\"<template>\\n <div class=\\\"slider\\\" :class=\\\"vertical ? 'vertical' : 'horizontal'\\\">\\n <div class=\\\"track-outer\\\">\\n <div class=\\\"track\\\" ref=\\\"track\\\">\\n <div class=\\\"thumb\\\" :style=\\\"thumbStyle\\\" v-hammer:pan=\\\"onPan\\\" v-hammer:panstart=\\\"onPanStart\\\" :hammer-options.prop=\\\"{pan: { direction: 'all', threshold: 0 }}\\\" />\\n </div>\\n </div>\\n </div>\\n</template>\\n\\n<script>\\nexport default {\\n props: [ 'value', 'min', 'max', 'vertical' ],\\n\\n data() {\\n return {\\n oldValue: null,\\n trackLength: null\\n }\\n },\\n\\n computed: {\\n thumbStyle () {\\n const pos = (this.value - this.min) / (this.max - this.min) * 100\\n return this.vertical ? { top: pos + '%' } : { left: pos + '%' }\\n }\\n },\\n\\n methods: {\\n updateValue (value) {\\n this.$emit('input', Math.max(this.min, Math.min(this.max, value)))\\n },\\n\\n onPanStart(e) {\\n this.oldValue = this.value\\n this.trackLength = this.vertical ? this.$refs.track.clientHeight : this.$refs.track.clientWidth\\n },\\n\\n onPan(e) {\\n const delta = (this.vertical ? e.velocityY : e.velocityX) * 20\\n this.updateValue(delta / this.trackLength * (this.max - this.min) + this.value)\\n }\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.slider {\\n position: relative;\\n}\\n.track-outer, .track {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n}\\n.track-outer {\\n background-color: rgba(255, 255, 255, 0.5);\\n border-radius: 2px;\\n}\\n.horizontal .track-outer {\\n width: 100%;\\n height: 4px;\\n}\\n.horizontal .track {\\n width: calc(100% - 16px);\\n height: 100%;\\n}\\n.vertical .track-outer {\\n width: 4px;\\n height: 100%;\\n}\\n.vertical .track {\\n width: 100%;\\n height: calc(100% - 16px);\\n}\\n\\n.thumb {\\n position: absolute;\\n width: 44px;\\n height: 44px;\\n}\\n.horizontal .thumb {\\n transform: translate(-22px, -20px);\\n}\\n.vertical .thumb {\\n transform: translate(-20px, -22px);\\n}\\n.thumb:before {\\n content: \\\"\\\";\\n background-color: #fff;\\n width: 16px;\\n height: 16px;\\n border-radius: 50%;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.telop[data-v-d3a937a2] {\\n height: 24px;\\n line-height: 24px;\\n font-size: 14px;\\n overflow: hidden;\\n pointer-events: auto;\\n}\\n.text[data-v-d3a937a2] {\\n position: absolute;\\n white-space: nowrap;\\n color: #fff;\\n padding-left: 100%;\\n\\n animation: marquee-d3a937a2 30s linear infinite;\\n}\\n@keyframes marquee-d3a937a2 {\\nfrom { transform: translate(0%);\\n}\\n100%,to { transform: translate(-100%);\\n}\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/telop.vue\"],\"names\":[],\"mappings\":\";AAoBA;EACA,YAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,oBAAA;AACA;AAEA;EACA,kBAAA;EACA,mBAAA;EACA,WAAA;EACA,kBAAA;;EAEA,+CAAA;AACA;AAEA;AACA,UAAA,wBAAA;AAAA;AACA,UAAA,2BAAA;AAAA;AACA\",\"sourcesContent\":[\"<template>\\n <div class=\\\"telop\\\">\\n <div class=\\\"text\\\">\\n <slot></slot>\\n </div>\\n </div>\\n</template>\\n\\n<script>\\nexport default {\\n props: [ 'speed' ],\\n\\n data () {\\n return {\\n }\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.telop {\\n height: 24px;\\n line-height: 24px;\\n font-size: 14px;\\n overflow: hidden;\\n pointer-events: auto;\\n}\\n\\n.text {\\n position: absolute;\\n white-space: nowrap;\\n color: #fff;\\n padding-left: 100%;\\n\\n animation: marquee 30s linear infinite;\\n}\\n\\n@keyframes marquee {\\n from { transform: translate(0%); }\\n 100%,to { transform: translate(-100%); }\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.title-bar[data-v-17f57eb4] {\\n position: absolute;\\n top: 0;\\n height: 44px;\\n left: 0px;\\n right: 0px;\\n background-color: #2AB7D9;\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.1);\\n pointer-events: auto;\\n}\\nh1[data-v-17f57eb4] {\\n position: absolute;\\n left: 44px;\\n right: 44px; /* 88px */\\n margin: 0;\\n padding: 0;\\n font-size: 16px;\\n line-height: 44px;\\n color: #fff;\\n white-space: nowrap;\\n font-weight: normal;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/title-bar.vue\"],\"names\":[],\"mappings\":\";AAsDA;EACA,kBAAA;EACA,MAAA;EACA,YAAA;EACA,SAAA;EACA,UAAA;EACA,yBAAA;EACA,0CAAA;EACA,oBAAA;AACA;AAEA;EACA,kBAAA;EACA,UAAA;EACA,WAAA,EAAA,SAAA;EACA,SAAA;EACA,UAAA;EACA,eAAA;EACA,iBAAA;EACA,WAAA;EACA,mBAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;AACA\",\"sourcesContent\":[\"<template>\\n <div class=\\\"title-bar\\\" :style=\\\"{ backgroundColor: theme.color2 }\\\">\\n <button-icon class=\\\"button-left\\\"\\n :icon=\\\"theme.icons.back\\\"\\n @click=\\\"backPrevPoint\\\"\\n v-if=\\\"backButtonVisible\\\"\\n />\\n\\n <h1 :style=\\\"{ color: theme.color1 }\\\">{{ title }}</h1>\\n\\n <template>\\n <button-icon class=\\\"button-right\\\"\\n :icon=\\\"theme.icons.more\\\"\\n @click=\\\"toggleMoreMenu\\\"\\n v-if=\\\"settings.imageQualityModal\\\"\\n />\\n <button-icon class=\\\"button-right\\\"\\n :icon=\\\"theme.icons.info\\\"\\n @click=\\\"toggleInfoModal\\\"\\n v-if=\\\"false\\\"\\n />\\n </template>\\n </div>\\n</template>\\n\\n<script>\\nimport { mapState, mapGetters, mapMutations, mapActions } from 'vuex'\\nimport ButtonIcon from './button-icon.vue'\\n\\nexport default {\\n components: { ButtonIcon },\\n computed: {\\n ...mapState('panorama', [\\n 'settings'\\n ]),\\n ...mapGetters('panorama', [\\n 'backButtonVisible',\\n 'title',\\n 'theme'\\n ])\\n },\\n methods: {\\n ...mapMutations('panorama', [\\n 'toggleMoreMenu',\\n 'toggleInfoModal'\\n ]),\\n ...mapActions('panorama', [\\n 'backPrevPoint'\\n ])\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.title-bar {\\n position: absolute;\\n top: 0;\\n height: 44px;\\n left: 0px;\\n right: 0px;\\n background-color: #2AB7D9;\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.1);\\n pointer-events: auto;\\n}\\n\\nh1 {\\n position: absolute;\\n left: 44px;\\n right: 44px; /* 88px */\\n margin: 0;\\n padding: 0;\\n font-size: 16px;\\n line-height: 44px;\\n color: #fff;\\n white-space: nowrap;\\n font-weight: normal;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.ui-full[data-v-2f316488] {\\n pointer-events: none;\\n}\\n.telop-wrapper[data-v-2f316488] {\\n position: absolute;\\n top: 44px;\\n width: 100%;\\n background-color: rgba(0, 0, 0, 0.1);\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.2);\\n}\\n.panorama-header[data-v-2f316488] {\\n position: absolute;\\n right: 0;\\n width: calc(100% - 76px);\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: flex-end;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/ui-full.vue\"],\"names\":[],\"mappings\":\";AAoHA;EACA,oBAAA;AACA;AACA;EACA,kBAAA;EACA,SAAA;EACA,WAAA;EACA,oCAAA;EACA,0CAAA;AACA;AACA;EACA,kBAAA;EACA,QAAA;EACA,wBAAA;EACA,aAAA;EACA,eAAA;EACA,yBAAA;AACA\",\"sourcesContent\":[\"<template>\\n <div class=\\\"ui-full\\\" onselectstart=\\\"return false\\\" style=\\\"user-select:none;\\\">\\n <div class=\\\"telop-wrapper\\\" v-if=\\\"telopEnabled\\\">\\n <telop v-if=\\\"parentPlaceTelopText\\\">{{ parentPlaceTelopText }}</telop>\\n <telop :speed=\\\"itemTelopSpeed\\\" v-if=\\\"itemTelopText\\\">{{ itemTelopText }}</telop>\\n </div>\\n\\n <keep-alive>\\n <item-thumbnails v-if=\\\"displayingThumbnailList == 'Items'\\\" />\\n <point-thumbnails v-if=\\\"displayingThumbnailList == 'Points'\\\" />\\n </keep-alive>\\n\\n <title-bar />\\n <bottom-bar />\\n\\n <panorama-zoom v-if=\\\"panoramaZoomActive\\\" />\\n\\n <map-view :style=\\\"mapViewStyle\\\" />\\n <div class=\\\"panorama-header\\\" :style=\\\"panoramaHeaderStyle\\\">\\n <excuse-text />\\n <overlay-message-modal />\\n </div>\\n\\n <video-controls v-if=\\\"videoControlsActive\\\" />\\n <video-speed-menu v-if=\\\"videoSpeedMenuActive\\\" />\\n\\n <more-menu v-if=\\\"moreMenuActive\\\" />\\n <info-modal v-if=\\\"infoModalActive\\\" />\\n <image-quality-modal v-if=\\\"imageQualityModalActive\\\" />\\n <airtag-information v-if=\\\"airtagInformationActive\\\" />\\n </div>\\n</template>\\n\\n<script>\\nimport { mapState, mapGetters } from 'vuex'\\n\\nimport Telop from './telop.vue'\\nimport ExcuseText from './excuse-text.vue'\\nimport PointThumbnails from './point-thumbnails.vue'\\nimport ItemThumbnails from './item-thumbnails.vue'\\nimport TitleBar from './title-bar.vue'\\nimport BottomBar from './bottom-bar.vue'\\nimport PanoramaZoom from './panorama-zoom.vue'\\nimport MapView from './map-view.vue'\\nimport VideoControls from './video-controls.vue'\\nimport VideoSpeedMenu from './video-speed-menu.vue'\\nimport MoreMenu from './more-menu.vue'\\nimport InfoModal from './info-modal.vue'\\nimport ImageQualityModal from './image-quality-modal.vue'\\nimport AirtagInformation from './airtag-information.vue'\\nimport OverlayMessageModal from './overlay-message-modal'\\n\\nexport default {\\n components: {\\n Telop, ExcuseText,\\n PointThumbnails, ItemThumbnails,\\n TitleBar, BottomBar,\\n PanoramaZoom, MapView,\\n VideoControls, VideoSpeedMenu,\\n MoreMenu, InfoModal, ImageQualityModal,\\n AirtagInformation, OverlayMessageModal\\n },\\n data() {\\n return {\\n defaultOverlayButtonTop: 60,\\n overlayButtonTop: 0\\n }\\n },\\n computed: {\\n ...mapState('panorama', [\\n 'telopEnabled',\\n 'videoControlsActive',\\n 'videoSpeedMenuActive',\\n 'moreMenuActive',\\n 'infoModalActive',\\n 'imageQualityModalActive',\\n 'airtagInformationActive'\\n ]),\\n ...mapGetters('panorama', [\\n 'parentPlaceTelopText',\\n 'itemTelopText',\\n 'itemTelopSpeed',\\n 'panoramaZoomActive',\\n 'displayingThumbnailList',\\n 'currentItem'\\n ]),\\n telopHeight () {\\n let height = 0\\n if (this.itemTelopText) {\\n height += 24\\n }\\n if (this.parentPlaceTelopText) {\\n height += 24\\n }\\n return height\\n },\\n mapViewStyle () {\\n const top = 44 + this.telopHeight\\n return { top: `${top}px` }\\n },\\n panoramaHeaderStyle () {\\n const top = 44 + this.telopHeight\\n return { top: `${top}px` }\\n },\\n showOverlayModal() {\\n return this.currentItem &&\\n this.currentItem.meta_data &&\\n this.currentItem.meta_data.common &&\\n this.currentItem.meta_data.common.overlay_modal &&\\n this.currentItem.meta_data.common.overlay_modal.enable\\n }\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.ui-full {\\n pointer-events: none;\\n}\\n.telop-wrapper {\\n position: absolute;\\n top: 44px;\\n width: 100%;\\n background-color: rgba(0, 0, 0, 0.1);\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.2);\\n}\\n.panorama-header {\\n position: absolute;\\n right: 0;\\n width: calc(100% - 76px);\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: flex-end;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.video-panel[data-v-11b72186] {\\n position: absolute;\\n height: 44px;\\n left: 0;\\n right: 0px;\\n bottom: 0;\\n background-color: #2AB7D9;\\n pointer-events: auto;\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.1);\\n}\\n.button[data-v-11b72186] {\\n position: relative;\\n width: 44px;\\n height: 44px;\\n cursor: pointer;\\n}\\n.button img[data-v-11b72186] {\\n width: 30px;\\n height: 30px;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n}\\n.button-left[data-v-11b72186] {\\n float: left;\\n}\\n.button-right[data-v-11b72186] {\\n float: right;\\n}\\n.close[data-v-11b72186] {\\n border-left: 1px solid #fff;\\n float: right;\\n}\\n.speed[data-v-11b72186] {\\n float: right;\\n color: #fff;\\n font-size: 14px;\\n vertical-align: middle;\\n line-height: 44px;\\n height: 44px;\\n width: 60px;\\n text-align: center;\\n}\\n.volume[data-v-11b72186] {\\n position: relative;\\n}\\n.v-enter-active[data-v-11b72186], .v-leave-active[data-v-11b72186] {\\n transition: height .2s;\\n}\\n.v-enter[data-v-11b72186], .v-leave-to[data-v-11b72186] {\\n height: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/video-controls.vue\"],\"names\":[],\"mappings\":\";AAuJA;EACA,kBAAA;EACA,YAAA;EACA,OAAA;EACA,UAAA;EACA,SAAA;EACA,yBAAA;EACA,oBAAA;EACA,0CAAA;AACA;AACA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,eAAA;AACA;AACA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,QAAA;EACA,SAAA;EACA,gCAAA;AACA;AACA;EACA,WAAA;AACA;AACA;EACA,YAAA;AACA;AACA;EACA,2BAAA;EACA,YAAA;AACA;AACA;EACA,YAAA;EACA,WAAA;EACA,eAAA;EACA,sBAAA;EACA,iBAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;AACA;AACA;EACA,kBAAA;AACA;AACA;EACA,sBAAA;AACA;AACA;EACA,SAAA;AACA\",\"sourcesContent\":[\"<template>\\n <transition>\\n <div class=\\\"video-panel\\\"\\n :style=\\\"{ backgroundColor: theme.color2 }\\\"\\n @toushstart=\\\"touch\\\"\\n @touchmove=\\\"touch\\\"\\n @touchend=\\\"touch\\\"\\n @mousedown=\\\"touch\\\"\\n @mousemove=\\\"touch\\\"\\n @mouseup=\\\"touch\\\"\\n >\\n <button-icon class=\\\"button-left\\\"\\n :icon=\\\"theme.icons.videoPlay\\\"\\n @click=\\\"playVideo()\\\"\\n v-if=\\\"!videoPlaying\\\"\\n />\\n <button-icon class=\\\"button-left\\\"\\n :icon=\\\"theme.icons.videoPause\\\"\\n @click=\\\"pauseVideo()\\\"\\n v-if=\\\"videoPlaying\\\"\\n />\\n <button-icon class=\\\"button-left\\\"\\n :icon=\\\"theme.icons.videoBwd5\\\"\\n @click=\\\"skipVideo(-5)\\\"\\n />\\n <button-icon class=\\\"button-left\\\"\\n :icon=\\\"theme.icons.videoFwd5\\\"\\n @click=\\\"skipVideo(5)\\\"\\n />\\n <button-icon class=\\\"button-right close\\\"\\n :icon=\\\"theme.icons.close\\\"\\n @click=\\\"toggleVideoControls\\\"\\n />\\n <div class=\\\"button button-right speed\\\" :style=\\\"{ color: theme.color1 }\\\" @click=\\\"toggleVideoSpeedMenu\\\">\\n ×{{ videoSpeed }}\\n </div>\\n <div class=\\\"button-right volume\\\" @mouseover=\\\"mouseOverVolume\\\" @mouseleave=\\\"mouseLeaveVolume\\\">\\n <button-icon\\n :icon=\\\"videoMuted ? theme.icons.volumeOff : theme.icons.volumeUp\\\"\\n @click=\\\"toggleMute\\\"\\n />\\n <video-volume-slider v-if=\\\"videoVolumeSlideActive\\\" />\\n </div>\\n </div>\\n </transition>\\n</template>\\n\\n<script>\\nimport { mapState, mapGetters, mapMutations } from 'vuex'\\nimport screenfull from 'screenfull'\\n\\nimport videoControlsBus from '../video-controls-bus'\\nimport ButtonIcon from './button-icon'\\nimport VideoVolumeSlider from './video-volume-slider'\\n\\nexport default {\\n components: { ButtonIcon, VideoVolumeSlider },\\n data () {\\n return {\\n videoVolumeSlideActive: false\\n }\\n },\\n computed: {\\n ...mapState('panorama', [\\n 'fullscreen',\\n 'locationHashParams',\\n 'videoPlaying',\\n 'videoSpeed',\\n 'videoControlsActive',\\n 'videoMuted'\\n ]),\\n ...mapGetters('panorama', [\\n 'theme'\\n ]),\\n },\\n methods: {\\n ...mapMutations('panorama', [\\n 'setFullscreen',\\n 'setVideoPlaying',\\n 'toggleVideoControls',\\n 'toggleVideoSpeedMenu'\\n ]),\\n playVideo () {\\n videoControlsBus.$emit('play-video')\\n\\n // 親がいない(iframeではない)場合と既に最大化した後はスキップ\\n if (window.parent == window || Nurve.$store.state.panorama.fullscreenExecuted) return\\n\\n Nurve.$store.commit('panorama/setFullscreenExecuted', true)\\n if (screenfull.isEnabled) {\\n // Fullscreen APIが有効な場合\\n screenfull.request(document.querySelector('#panorama'))\\n } else {\\n // Fullscreen APIを使用できない場合、ブラウザサイズで最大化をiframeの親に要求\\n window.parent?.postMessage(JSON.stringify({\\n action: `nurve-fullscreen-${this.fullscreen ? 'off' : 'on'}`,\\n by: this.locationHashParams['target'] ?? 0,\\n }), '*')\\n this.setFullscreen(!this.fullscreen)\\n\\n // iframeのサイズが変わるため、念の為のresize発火\\n setTimeout(() => {\\n window.dispatchEvent(new Event('resize'))\\n }, 500)\\n }\\n },\\n pauseVideo () {\\n videoControlsBus.$emit('pause-video')\\n },\\n skipVideo (seconds) {\\n videoControlsBus.$emit('skip-video', seconds)\\n },\\n touch () {\\n this.lastActiveTime = new Date().getTime()\\n },\\n checkDeactive () {\\n if (new Date().getTime() - this.lastActiveTime > 5000) {\\n this.toggleVideoControls()\\n }\\n },\\n toggleMute() {\\n if (this.videoMuted) {\\n videoControlsBus.$emit('unmute-video')\\n } else {\\n videoControlsBus.$emit('mute-video')\\n }\\n },\\n mute () {\\n videoControlsBus.$emit('mute-video')\\n },\\n unmute () {\\n videoControlsBus.$emit('unmute-video')\\n },\\n mouseOverVolume () {\\n this.videoVolumeSlideActive = true\\n },\\n mouseLeaveVolume () {\\n this.videoVolumeSlideActive = false\\n }\\n },\\n mounted () {\\n this.lastActiveTime = new Date().getTime()\\n this.intervalId = setInterval(this.checkDeactive, 100)\\n },\\n beforeDestroy () {\\n clearInterval(this.intervalId)\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.video-panel {\\n position: absolute;\\n height: 44px;\\n left: 0;\\n right: 0px;\\n bottom: 0;\\n background-color: #2AB7D9;\\n pointer-events: auto;\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.1);\\n}\\n.button {\\n position: relative;\\n width: 44px;\\n height: 44px;\\n cursor: pointer;\\n}\\n.button img {\\n width: 30px;\\n height: 30px;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n}\\n.button-left {\\n float: left;\\n}\\n.button-right {\\n float: right;\\n}\\n.close {\\n border-left: 1px solid #fff;\\n float: right;\\n}\\n.speed {\\n float: right;\\n color: #fff;\\n font-size: 14px;\\n vertical-align: middle;\\n line-height: 44px;\\n height: 44px;\\n width: 60px;\\n text-align: center;\\n}\\n.volume {\\n position: relative;\\n}\\n.v-enter-active, .v-leave-active {\\n transition: height .2s;\\n}\\n.v-enter, .v-leave-to {\\n height: 0;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.backdrop[data-v-4f5d6a68] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n pointer-events: auto;\\n}\\n.menu[data-v-4f5d6a68] {\\n position: absolute;\\n width: 100px;\\n right: 8px;\\n bottom: calc(44px + 8px);\\n background-color: #fff;\\n box-shadow: 0 0 4px 4px rgba(0, 0, 0, 0.2);\\n overflow: hidden;\\n pointer-events: auto;\\n}\\n.menu-item[data-v-4f5d6a68] {\\n height: 36px;\\n padding: 8px 16px;\\n font-size: 14px;\\n color: #666;\\n border-bottom: 1px solid #ccc;\\n}\\n.v-enter-active[data-v-4f5d6a68], .v-enter-active .menu[data-v-4f5d6a68], .v-leave-active[data-v-4f5d6a68], .v-leave-active .menu[data-v-4f5d6a68] {\\n transition: opacity .2s;\\n}\\n.v-enter .menu[data-v-4f5d6a68], .v-leave-to .menu[data-v-4f5d6a68] {\\n opacity: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/video-speed-menu.vue\"],\"names\":[],\"mappings\":\";AAsCA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,oBAAA;AACA;AACA;EACA,kBAAA;EACA,YAAA;EACA,UAAA;EACA,wBAAA;EACA,sBAAA;EACA,0CAAA;EACA,gBAAA;EACA,oBAAA;AACA;AACA;EACA,YAAA;EACA,iBAAA;EACA,eAAA;EACA,WAAA;EACA,6BAAA;AACA;AACA;EACA,uBAAA;AACA;AACA;EACA,UAAA;AACA\",\"sourcesContent\":[\"<template>\\n <transition>\\n <div class=\\\"backdrop\\\"\\n @touchstart.self.prevent.stop=\\\"toggleVideoSpeedMenu\\\"\\n @mousedown.self.prevent.stop=\\\"toggleVideoSpeedMenu\\\"\\n >\\n <div class=\\\"menu\\\" :style=\\\"{ height: `${36 * speeds.length}px`}\\\" >\\n <div class=\\\"menu-item\\\" v-for=\\\"speed in speeds\\\" @click=\\\"selectMenuItem(speed)\\\" :key=\\\"speed\\\" >\\n <span>×{{ speed }}</span>\\n </div>\\n </div>\\n </div>\\n </transition>\\n</template>\\n\\n<script>\\nimport { mapMutations } from 'vuex'\\nimport videoControlsBus from '../video-controls-bus'\\n\\nexport default {\\n data () {\\n return {\\n speeds: [2, 1, 0.75, 0.5, 0.25]\\n }\\n },\\n methods: {\\n ...mapMutations('panorama', [\\n 'toggleVideoSpeedMenu',\\n ]),\\n selectMenuItem (speed) {\\n videoControlsBus.$emit('change-video-speed', speed)\\n this.toggleVideoSpeedMenu()\\n }\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.backdrop {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n pointer-events: auto;\\n}\\n.menu {\\n position: absolute;\\n width: 100px;\\n right: 8px;\\n bottom: calc(44px + 8px);\\n background-color: #fff;\\n box-shadow: 0 0 4px 4px rgba(0, 0, 0, 0.2);\\n overflow: hidden;\\n pointer-events: auto;\\n}\\n.menu-item {\\n height: 36px;\\n padding: 8px 16px;\\n font-size: 14px;\\n color: #666;\\n border-bottom: 1px solid #ccc;\\n}\\n.v-enter-active, .v-enter-active .menu, .v-leave-active, .v-leave-active .menu {\\n transition: opacity .2s;\\n}\\n.v-enter .menu, .v-leave-to .menu {\\n opacity: 0;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.video-volume-slider[data-v-21a75756] {\\n position: absolute;\\n bottom: 44px;\\n width: 44px;\\n display: flex;\\n justify-content: center;\\n}\\n.slider-wrapper[data-v-21a75756] {\\n background-color: rgba(0, 0, 0, 0.1);\\n box-shadow: 0 0 2px 2px rgb(0 0 0 / 20%);\\n border-radius: 4px;\\n margin-bottom: 8px;\\n width: 30px;\\n}\\n.label[data-v-21a75756] {\\n color: rgba(255, 255, 255, 0.5);\\n font-size: 14px;\\n line-height: 20px;\\n text-align: center;\\n}\\n.slider[data-v-21a75756] {\\n height: 50px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/video-volume-slider.vue\"],\"names\":[],\"mappings\":\";AAsCA;EACA,kBAAA;EACA,YAAA;EACA,WAAA;EACA,aAAA;EACA,uBAAA;AACA;AACA;EACA,oCAAA;EACA,wCAAA;EACA,kBAAA;EACA,kBAAA;EACA,WAAA;AACA;AACA;EACA,+BAAA;EACA,eAAA;EACA,iBAAA;EACA,kBAAA;AACA;AACA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<template>\\n <div class=\\\"video-volume-slider\\\">\\n <div class=\\\"slider-wrapper\\\">\\n <div class=\\\"label\\\">﹢</div>\\n <slider :vertical=\\\"true\\\" :min=\\\"videoVolume.min\\\" :max=\\\"videoVolume.max\\\" v-model=\\\"videoVolumeValue\\\" />\\n <div class=\\\"label\\\">﹣</div>\\n </div>\\n </div>\\n</template>\\n\\n<script>\\nimport { mapState } from 'vuex'\\n\\nimport videoControlsBus from '../video-controls-bus'\\nimport Slider from './slider'\\n\\nexport default {\\n components: { Slider },\\n computed: {\\n ...mapState('panorama', [\\n 'videoMuted',\\n 'videoVolume'\\n ]),\\n videoVolumeValue: {\\n get () {\\n let value = this.videoVolume.value\\n\\n if (this.videoMuted) value = 0\\n\\n return this.videoVolume.max - value\\n },\\n set (volume) { videoControlsBus.$emit('change-video-volume', this.videoVolume.max - volume) }\\n }\\n }\\n}\\n</script>\\n\\n<style scoped>\\n.video-volume-slider {\\n position: absolute;\\n bottom: 44px;\\n width: 44px;\\n display: flex;\\n justify-content: center;\\n}\\n.slider-wrapper {\\n background-color: rgba(0, 0, 0, 0.1);\\n box-shadow: 0 0 2px 2px rgb(0 0 0 / 20%);\\n border-radius: 4px;\\n margin-bottom: 8px;\\n width: 30px;\\n}\\n.label {\\n color: rgba(255, 255, 255, 0.5);\\n font-size: 14px;\\n line-height: 20px;\\n text-align: center;\\n}\\n.slider {\\n height: 50px;\\n}\\n</style>\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,menu,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,main,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}*[hidden]{display:none}body{line-height:1}menu,ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:\\\"\\\";content:none}table{border-collapse:collapse;border-spacing:0}html,body{height:100%;font-size:16px;line-height:24px;font-family:Meiryo,\\\"メイリオ\\\",\\\"MS PGothic\\\",Osaka,Arial,sans-serif;background:#eee;color:#000}a{color:#55c6e1;text-decoration:underline}a:visited{color:#55c6e1}a:focus{color:#55c6e1}a:hover{color:#a3e0ef}a:active{color:#a3e0ef}a,a:hover{transition-duration:.5s}a:hover,a:visited{text-decoration:none}a img{border:none}select{color:#333;border:2px solid #55c6e1;height:28px;background-color:#fff;box-sizing:content-box;vertical-align:top;margin-top:5px}@keyframes spin{0%{transform:rotate(0deg);opacity:.2}50%{transform:rotate(180deg);opacity:1}100%{transform:rotate(360deg);opacity:.2}}#loading{box-sizing:border-box;position:absolute;display:inline-block;width:100%;height:100%}#loading.active{background-color:rgba(0,0,0,.5);z-index:9999}#loading.active.black{background-color:#000}#loading.active::before{box-sizing:border-box;animation:spin 1s linear infinite;position:absolute;content:\\\"\\\";width:80px;height:80px;border-radius:50%;border:3px solid #fff;border-right-color:rgba(0,0,0,0);top:50%;left:50%;margin-top:-40px;margin-left:-40px}.loading{box-sizing:border-box;position:relative;display:inline-block}.loading.active{background-color:rgba(0,0,0,.5);z-index:9997}.loading.active.black{background-color:#000}.loading.active::before{box-sizing:border-box;animation:spin 1s linear infinite;position:absolute;content:\\\"\\\";width:80px;height:80px;border-radius:50%;border:3px solid #fff;border-right-color:rgba(0,0,0,0);top:50%;left:50%;margin-top:-40px;margin-left:-40px}.imageloading{box-sizing:border-box;position:relative;display:inline-block}.imageloading.active{background-color:rgba(0,0,0,.5);z-index:9996}.imageloading.active.black{background-color:#000}.imageloading.active::before{box-sizing:border-box;animation:spin 1s linear infinite;position:absolute;content:\\\"\\\";width:30px;height:30px;border-radius:50%;border:3px solid #fff;border-right-color:rgba(0,0,0,0);top:50%;left:50%;margin-top:-15px;margin-left:-15px}#error{box-sizing:border-box;position:absolute;width:100%;height:100%;display:none}#error.active{display:block;background-color:#000;z-index:9999}#error.active .message{box-sizing:border-box;position:absolute;top:50%;left:0;width:100%;height:50px;line-height:50px;margin-top:-25px;text-align:center;color:#fff}#passcode-lock{box-sizing:border-box;position:absolute;width:100%;height:100%;display:none}#passcode-lock.active{display:block;background-color:#000;z-index:9999}#passcode-lock.active .message{box-sizing:border-box;position:absolute;top:50%;left:0;width:100%;height:50px;line-height:50px;margin-top:-25px;text-align:center;color:#fff}#overlay{box-sizing:border-box;user-select:none;position:absolute;display:none;width:100%;height:100%;background-color:rgba(0,0,0,.5);z-index:9998;cursor:pointer}#popup{box-sizing:border-box;position:absolute;cursor:default}#popup img{width:100%;height:100%;vertical-align:bottom}#popup .close{box-sizing:border-box;border-radius:50%;border:2px solid #f5f5f5;background-color:#333;position:absolute;width:35px;height:35px;top:-15px;right:-15px;cursor:pointer}#popup .close::before,#popup .close::after{box-sizing:border-box;content:\\\"\\\";position:absolute;width:20px;height:20px}#popup .close::before{top:-1px;left:12px;border-left:2px solid #f5f5f5;transform:rotate(-45deg)}#popup .close::after{top:-1px;left:-1px;border-right:2px solid #f5f5f5;transform:rotate(45deg)}#c{box-sizing:border-box;height:100%;width:100%;overflow:hidden;position:relative}#header{box-sizing:border-box;position:absolute;width:inherit;height:40px;line-height:32px;overflow:hidden;top:0;left:0;padding:5px 10px;background-color:#eee;color:#000;font-size:16px;z-index:500}#panorama{box-sizing:border-box;position:absolute;width:inherit;height:inherit;overflow:hidden;left:0;z-index:100}#panorama canvas{cursor:move}#panorama .arrow-guide{box-sizing:border-box;border-radius:50px;position:absolute;background-color:rgba(255,255,255,.7);white-space:nowrap;cursor:pointer;display:none;color:#000;z-index:101;border-radius:50px;padding:clamp(4.8px,.96vw,.96vh) clamp(6px,1.2vw,1.2vh);font-size:clamp(12px,2.4vw,2.4vh);line-height:clamp(12px,2.4vw,2.4vh)}#excuse-text{position:absolute;width:65%;line-height:1.5;top:8px;right:8px;letter-spacing:3px;color:rgba(255,255,255,.8);font-size:18px;z-index:101;text-align:right;text-shadow:0 0 3px #000,0 0 3px #000,0 0 3px #000,0 0 3px #000,4px 0 10px #000,-4px 0 10px #000,0 2px 10px #000,0 -2px 10px #000,4px 0 10px #000,-4px 0 10px #000,0 2px 10px #000,0 -2px 10px #000,4px 0 15px #000,-4px 0 15px #000,0 2px 15px #000,0 -2px 15px #000;display:none}#play-video{display:none;position:absolute;top:0;left:0;right:0;bottom:0;color:#666;background-color:rgba(255,255,255,.8)}#play-video div{position:absolute;width:300px;top:50%;left:50%;transform:translate(-50%, -50%);text-align:center;line-height:24px}#play-video div img{width:60px}#back-room{position:absolute;top:40px;left:40px;size:30px;z-index:500;display:none}#back-room img{cursor:pointer;width:60px;height:60px}#information-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:none;z-index:300}#information{background-color:#fff;padding:10px;position:absolute;max-width:400px;width:70%;min-height:70px;max-height:70%;top:50%;left:50%;transform:translate(-50%, -50%);overflow:auto}#information img{max-width:100%;max-height:320px}#information .information-text{white-space:pre-wrap}#information-close{position:absolute;border:2px solid #ccc;border-radius:50%;background-color:#000;color:#fff;width:30px;height:30px;transform:translate(-50%, -50%)}.scene{box-sizing:border-box;position:absolute;width:inherit;height:100%;overflow:hidden;top:0;left:0;z-index:100}.arrow-css3d{cursor:pointer}#floorplans{box-sizing:border-box;background-color:#eee;color:#000;position:absolute;bottom:0px;left:7px;width:300px;height:290px;padding:5px 5px;overflow:hidden;z-index:600}#floorplan-item_wrap{user-select:none;box-sizing:border-box;position:relative;width:100%;height:100%;overflow:hidden;cursor:move}#floorplan-item{position:absolute;top:0;left:0;width:290px;height:250px}#floorplan-item img{position:absolute;top:0;left:0;z-index:601}#floorplan-item .floorplan-point{box-sizing:border-box;border-radius:50%;border:2px solid #2ab7d9;background-color:#f5f5f5;position:absolute;z-index:604;width:20px;height:20px}#floorplan-item .floorplan-point.hover{cursor:pointer;background-color:#2ab7d9}#floorplan-item .floorplan-point.active{border:2px solid #ff7373;background-color:#ff7373}#floorplan-item .floorplan-point.active::before{box-sizing:border-box;border-radius:50%;position:absolute;content:\\\"\\\";top:-8px;left:-8px;width:30px;height:30px;background-color:rgba(255,115,115,.3)}#floorplan-item .floorplan-point.active:hover{cursor:default}#floorplan-lines,#floorplan-radar{position:absolute;top:0;left:0}#floorplan-lines{z-index:602}#floorplan-lines line{stroke:rgba(42,183,217,.8);stroke-width:1.5;stroke-dasharray:1,3;stroke-linecap:round}#floorplan-radar{z-index:603}#floorplan-radar path{fill:rgba(255,115,115,.3)}#floorplan-footer{box-sizing:border-box;position:absolute;bottom:-15px;left:0px;width:100%;height:15px;background-color:rgba(0,0,0,.5);z-index:610}#floorplan-pages{box-sizing:border-box;position:absolute;top:-25px;left:3px;width:auto;height:15px;padding:0px 5px;font-size:14px}#floorplan-pages .floorplan-page{box-sizing:border-box;border-radius:50%;position:relative;display:inline-block;margin:0 5px;background-color:#ccc;width:11px;height:11px;top:-3px}#floorplan-pages .floorplan-page:hover,#floorplan-pages .floorplan-page.active{background-color:#2ab7d9}#floorplan-pages .floorplan-page:hover{cursor:pointer}#floorplan-pages .floorplan-page.active:hover{cursor:default}#floorplan-zoom_wrap{box-sizing:border-box;position:absolute;top:-70px;right:10px;width:30px;height:60px}#floorplan-zoom-out,#floorplan-zoom-in{box-sizing:border-box;position:absolute;width:30px;height:30px;background-color:rgba(0,0,0,.5)}#floorplan-zoom-out::before,#floorplan-zoom-out::after,#floorplan-zoom-in::before,#floorplan-zoom-in::after{box-sizing:border-box;position:absolute;content:\\\"\\\";width:10px;height:10px}#floorplan-zoom-out.enabled::before,#floorplan-zoom-in.enabled::before{border-top:1px solid #f5f5f5}#floorplan-zoom-out.enabled::after,#floorplan-zoom-in.enabled::after{border-left:1px solid #f5f5f5}#floorplan-zoom-out.enabled:hover,#floorplan-zoom-in.enabled:hover{cursor:pointer}#floorplan-zoom-out.enabled:hover::before,#floorplan-zoom-in.enabled:hover::before{border-top:1px solid #2ab7d9}#floorplan-zoom-out.enabled:hover::after,#floorplan-zoom-in.enabled:hover::after{border-left:1px solid #2ab7d9}#floorplan-zoom-out{border-radius:0 0 2px 2px;top:30px}#floorplan-zoom-out::before{border-top:1px solid #5c5c5c;top:15px;left:10px}#floorplan-zoom-out.enabled::after{border-left:0}#floorplan-zoom-out.enabled:hover::after{border-left:0}#floorplan-zoom-in{border-radius:2px 2px 0 0;top:0px;border-bottom:1px solid rgba(245,245,245,.5)}#floorplan-zoom-in::before{border-top:1px solid #5c5c5c;width:11px;top:14px;left:9px}#floorplan-zoom-in::after{height:11px;border-left:1px solid #5c5c5c;top:9px;left:14px}#floorplan-control{box-sizing:border-box;cursor:pointer;position:absolute;top:5px;right:5px;width:23px;height:22px;z-index:620}#floorplan-control::before{position:absolute;top:7px;right:5px;border-width:8px 6px;border-style:solid;border-color:#2ab7d9 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);content:\\\"\\\"}#floorplan-control.hide::before{top:-1px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #2ab7d9 rgba(0,0,0,0)}#footer-controls{box-sizing:border-box;position:absolute;bottom:0px;left:0px;width:100%;height:141px;background-color:#eee;border-top:1px solid #ccc;cursor:default;z-index:300}#control-menu{user-select:none;box-sizing:border-box;border-radius:3px 3px 0 0;cursor:pointer;position:absolute;top:-31px;right:5px;width:135px;height:32px;line-height:32px;padding:0 13px;border:1px solid #ccc;border-bottom:none;background-color:#eee;color:#2ab7d9;font-size:14px;text-align:center;z-index:301}#control-menu:after{position:absolute;top:11px;right:13px;border-color:#2ab7d9 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);border-width:8px 6px;border-style:solid;content:\\\"\\\"}#control-menu.hide:after{top:3px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #2ab7d9 rgba(0,0,0,0)}#thumbnails{box-sizing:border-box;position:absolute;right:0;bottom:40px;width:calc(100% - 310px);height:100px;background-color:#eee;color:#000;font-size:11px;z-index:400}#thumbnail-items_wrap{user-select:none;box-sizing:border-box;position:absolute;left:20px;width:calc(100% - 40px);height:100px;overflow:hidden}#thumbnail-items{box-sizing:border-box;position:absolute;top:0;left:0;height:100px;padding:10px 0;white-space:nowrap}#thumbnail-items .thumbnail-item{box-sizing:border-box;display:inline-block;width:90px;margin:0 6px;cursor:pointer;vertical-align:top}#thumbnail-items .thumbnail-item-active{overflow:visible !important;background-color:#fff;padding:5px;display:inline;z-index:10;opacity:.9}#thumbnail-items .thumbnail-item:first-child{margin-left:0px}#thumbnail-items .thumbnail-item .thumbnail-image_wrap:hover{transition-duration:.3s;border:3px solid #2ab7d9}#thumbnail-items .thumbnail-item.active{cursor:default}#thumbnail-items .thumbnail-item.active .thumbnail-image_wrap{border:3px solid #2ab7d9}#thumbnail-items .thumbnail-item .thumbnail-image_wrap{box-sizing:border-box;transition-duration:.3s;position:relative;width:90px;height:54px;margin-bottom:2px;background-color:#000;border:3px solid #eee;overflow:hidden}#thumbnail-items .thumbnail-item .thumbnail-image_wrap .thumbnail-image{box-sizing:border-box;max-width:120%;max-height:120%;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}#thumbnail-items .thumbnail-item .thumbnail-title{box-sizing:border-box;width:90px;overflow:hidden;text-align:center;text-overflow:ellipsis}#thumbnail-prev,#thumbnail-next{box-sizing:border-box;position:absolute;top:0;width:20px;height:100px}#thumbnail-prev::before,#thumbnail-next::before{top:32px}#thumbnail-prev::after,#thumbnail-next::after{top:39px}#thumbnail-prev::before,#thumbnail-prev::after,#thumbnail-next::before,#thumbnail-next::after{box-sizing:border-box;position:absolute;content:\\\"\\\";width:10px;height:0px;border-top:2px solid #ace3f0}#thumbnail-prev.enabled,#thumbnail-next.enabled{cursor:pointer}#thumbnail-prev.enabled::before,#thumbnail-prev.enabled::after,#thumbnail-next.enabled::before,#thumbnail-next.enabled::after{border-top:2px solid #2ab7d9}#thumbnail-prev.enabled:hover::before,#thumbnail-prev.enabled:hover::after,#thumbnail-next.enabled:hover::before,#thumbnail-next.enabled:hover::after{border-top:2px solid #1f94b1}#thumbnail-prev{left:0}#thumbnail-prev::before{left:4.5px;transform:rotate(-45deg)}#thumbnail-prev::after{left:4.5px;transform:rotate(45deg)}#thumbnail-next{right:0}#thumbnail-next::before{left:2.5px;transform:rotate(45deg)}#thumbnail-next::after{left:2.5px;transform:rotate(-45deg)}#thumbnails #thumbnail-close{box-sizing:border-box;display:none}#footer{box-sizing:border-box;position:absolute;left:0;bottom:0;width:100%;height:40px;background-color:#eee;z-index:500}#controls{user-select:none;box-sizing:border-box;position:absolute;height:inherit;right:0px;font-size:0px}#control-scene{box-sizing:border-box;width:150px;height:inherit;cursor:pointer;text-align:center;display:inline-block;line-height:52px;font-size:16px}#control-scene:hover{background-color:#d5d5d5}#control-scene img{height:19px}#control-vreffect{box-sizing:border-box;width:48px;height:inherit;cursor:pointer;text-align:center;display:none;line-height:52px;font-size:16px}#control-vreffect:hover{background-color:#d5d5d5}#control-vreffect img{height:19px}#control-video{box-sizing:border-box;width:48px;height:inherit;cursor:pointer;text-align:center;display:inline-block;line-height:52px;font-size:16px}#control-video:hover{background-color:#d5d5d5}#control-video img{height:19px}#control-video-rewind{box-sizing:border-box;width:48px;height:inherit;cursor:pointer;text-align:center;display:inline-block;line-height:52px;font-size:16px}#control-video-rewind:hover{background-color:#d5d5d5}#control-video-rewind img{height:19px}#control-video-forward{box-sizing:border-box;width:48px;height:inherit;cursor:pointer;text-align:center;display:inline-block;line-height:52px;font-size:16px}#control-video-forward:hover{background-color:#d5d5d5}#control-video-forward img{height:19px}#control-video-speed{box-sizing:border-box;width:48px;height:inherit;cursor:pointer;text-align:center;display:inline-block;line-height:52px;font-size:16px}#control-video-speed:hover{background-color:#d5d5d5}#control-video-speed span{color:#2ab7d9;font-size:.8em;position:relative;top:-4px}#control-rotation{box-sizing:border-box;width:48px;height:inherit;cursor:pointer;text-align:center;display:inline-block;line-height:52px;font-size:16px}#control-rotation:hover{background-color:#d5d5d5}#control-rotation img{height:19px}#control-floorplans{box-sizing:border-box;width:48px;height:inherit;cursor:pointer;text-align:center;display:inline-block;line-height:52px;font-size:16px}#control-floorplans:hover{background-color:#d5d5d5}#control-floorplans img{height:19px}#control-floorplans.hide img{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);opacity:.5}#control-fullscreen{box-sizing:border-box;width:48px;height:inherit;cursor:pointer;text-align:center;display:inline-block;line-height:52px;font-size:16px}#control-fullscreen:hover{background-color:#d5d5d5}#control-fullscreen img{height:19px}#control-help{box-sizing:border-box;width:48px;height:inherit;cursor:pointer;text-align:center;display:inline-block;line-height:52px;font-size:16px}#control-help:hover{background-color:#d5d5d5}#control-help img{height:19px}#control-scene-switcher-panel.close{transform:translate3d(96px, 0, 0)}#control-scene-switcher-panel.open{transform:translate3d(0, 0, 0)}#control-scene-switcher-panel{transition:all .2s}#control-scene-switcher-panel{position:absolute;top:-340px;right:0;width:96px;display:none}#control-scene-switcher-panel .toggle-button{position:absolute;height:88px;line-height:88px;font-size:10px;color:#fff;left:-42px;padding:0 16px;background-color:rgba(0,0,0,.5);text-decoration:none;border-top-left-radius:16px;border-bottom-left-radius:16px}#control-scene-switcher-panel #control-scene-switcher-title{background-color:rgba(0,0,0,.5);color:#fff;font-size:10px;text-align:center}#control-scene-switcher-panel #control-scene-switcher{background-color:rgba(0,0,0,.7);position:relative;height:64px;opacity:.7;overflow-y:scroll}#control-scene-switcher-panel #control-scene-switcher img{width:100%;height:auto}#control-scene-switcher-panel #control-scene-switcher .scene-name-label{position:relative;top:-48px;color:#fff;line-height:1.2;font-size:10px;padding:4px;text-align:center;box-sizing:border-box;text-shadow:1px 1px 1px #000,-1px -1px 1px #000}#control-zoom_wrap{box-sizing:border-box;position:absolute;top:-220px;right:5px;width:30px;height:60px}#control-zoom-out,#control-zoom-in{box-sizing:border-box;position:absolute;width:30px;height:30px;background-color:rgba(0,0,0,.5)}#control-zoom-out::before,#control-zoom-out::after,#control-zoom-in::before,#control-zoom-in::after{box-sizing:border-box;position:absolute;content:\\\"\\\";width:10px;height:10px}#control-zoom-out.enabled::before,#control-zoom-in.enabled::before{border-top:1px solid #f5f5f5}#control-zoom-out.enabled::after,#control-zoom-in.enabled::after{border-left:1px solid #f5f5f5}#control-zoom-out.enabled:hover,#control-zoom-in.enabled:hover{cursor:pointer}#control-zoom-out.enabled:hover::before,#control-zoom-in.enabled:hover::before{border-top:1px solid #2ab7d9}#control-zoom-out.enabled:hover::after,#control-zoom-in.enabled:hover::after{border-left:1px solid #2ab7d9}#control-zoom-out{border-radius:0 0 2px 2px;top:30px}#control-zoom-out::before{border-top:1px solid #5c5c5c;top:15px;left:10px}#control-zoom-out.enabled::after{border-left:0}#control-zoom-out.enabled:hover::after{border-left:0}#control-zoom-in{border-radius:2px 2px 0 0;top:0px;border-bottom:1px solid rgba(245,245,245,.5)}#control-zoom-in::before{border-top:1px solid #5c5c5c;width:11px;top:14px;left:9px}#control-zoom-in::after{height:11px;border-left:1px solid #5c5c5c;top:9px;left:14px}#links{box-sizing:border-box;border-radius:3px;position:absolute;height:30px;top:5px;right:5px;background-color:#2ab7d9;font-size:75%;color:#fff;padding:3px 10px 3px 10px;display:none;overflow:hidden;z-index:510}#links.active{display:block}#links.active a{color:#fff;text-decoration:none}#links.active a:visited{color:#fff}#links.active a:focus{color:#fff}#links.active a:hover{color:#fff}#links.active a:active{color:#fff}.without-map #thumbnails{width:100%}#vrModeStartButton{position:absolute;top:0;left:0;width:100vw;height:100vh;line-height:100vh;text-align:center;color:#fff;background-color:rgba(0,0,0,.75);z-index:1000}.sp #floorplans{width:200px;height:190px}.sp #thumbnails{width:calc(100% - 210px)}.sp.without-map #thumbnails{width:100%}.sp #control-vreffect{display:inline-block}.sp.portrait #floorplans{width:100%;height:130px;left:0;bottom:50px}.sp.portrait #floorplan-control{display:none}.sp.portrait #footer-controls{padding-top:270px}.sp.portrait #footer-controls #control-menu{left:50%;transform:translateX(-50%)}.sp.portrait #control-scene-switcher-panel{top:-460px}.sp.portrait #control-zoom_wrap{top:-340px}.sp.portrait #thumbnails{width:100%}.sp.portrait.without-map #footer-controls{padding-top:0}.sp.portrait.without-map #control-zoom_wrap{top:-198px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/packs/panoramas/embed.scss\",\"webpack://./node_modules/reset-css/reset.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";\\n\\n@import 'reset-css/reset';\\n\\n/**\\n * 間取り図\\n */\\n/**\\n * サムネイル\\n */\\n/**\\n * 共通\\n */\\nhtml, body {\\n height: 100%;\\n font-size: 16px;\\n line-height: 24px;\\n font-family: Meiryo, \\\"メイリオ\\\", \\\"MS PGothic\\\", Osaka, Arial, sans-serif;\\n background: #EEEEEE;\\n color: #000;\\n}\\n\\na {\\n color: #55c6e1;\\n text-decoration: underline;\\n}\\na:visited {\\n color: #55c6e1;\\n}\\na:focus {\\n color: #55c6e1;\\n}\\na:hover {\\n color: #a3e0ef;\\n}\\na:active {\\n color: #a3e0ef;\\n}\\na, a:hover {\\n transition-duration: 0.5s;\\n}\\na:hover, a:visited {\\n text-decoration: none;\\n}\\na img {\\n border: none;\\n}\\n\\nselect {\\n color: #333;\\n border: 2px solid #55c6e1;\\n height: 28px;\\n background-color: white;\\n box-sizing: content-box;\\n vertical-align: top;\\n margin-top: 5px;\\n}\\n\\n/**\\n * ローディング\\n */\\n@keyframes spin {\\n 0% {\\n transform: rotate(0deg);\\n opacity: 0.2;\\n }\\n 50% {\\n transform: rotate(180deg);\\n opacity: 1;\\n }\\n 100% {\\n transform: rotate(360deg);\\n opacity: 0.2;\\n }\\n}\\n#loading {\\n box-sizing: border-box;\\n position: absolute;\\n display: inline-block;\\n width: 100%;\\n height: 100%;\\n}\\n\\n#loading.active {\\n background-color: rgba(0, 0, 0, 0.5);\\n z-index: 9999;\\n}\\n\\n#loading.active.black {\\n background-color: black;\\n}\\n\\n#loading.active::before {\\n box-sizing: border-box;\\n animation: spin 1s linear infinite;\\n position: absolute;\\n content: \\\"\\\";\\n width: 80px;\\n height: 80px;\\n border-radius: 50%;\\n border: 3px solid #fff;\\n border-right-color: transparent;\\n top: 50%;\\n left: 50%;\\n margin-top: -40px;\\n margin-left: -40px;\\n}\\n\\n.loading {\\n box-sizing: border-box;\\n position: relative;\\n display: inline-block;\\n}\\n.loading.active {\\n background-color: rgba(0, 0, 0, 0.5);\\n z-index: 9997;\\n}\\n.loading.active.black {\\n background-color: black;\\n}\\n.loading.active::before {\\n box-sizing: border-box;\\n animation: spin 1s linear infinite;\\n position: absolute;\\n content: \\\"\\\";\\n width: 80px;\\n height: 80px;\\n border-radius: 50%;\\n border: 3px solid #fff;\\n border-right-color: transparent;\\n top: 50%;\\n left: 50%;\\n margin-top: -40px;\\n margin-left: -40px;\\n}\\n\\n.imageloading {\\n box-sizing: border-box;\\n position: relative;\\n display: inline-block;\\n}\\n.imageloading.active {\\n background-color: rgba(0, 0, 0, 0.5);\\n z-index: 9996;\\n}\\n.imageloading.active.black {\\n background-color: black;\\n}\\n.imageloading.active::before {\\n box-sizing: border-box;\\n animation: spin 1s linear infinite;\\n position: absolute;\\n content: \\\"\\\";\\n width: 30px;\\n height: 30px;\\n border-radius: 50%;\\n border: 3px solid #fff;\\n border-right-color: transparent;\\n top: 50%;\\n left: 50%;\\n margin-top: -15px;\\n margin-left: -15px;\\n}\\n\\n#error {\\n box-sizing: border-box;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n display: none;\\n}\\n\\n#error.active {\\n display: block;\\n background-color: #000;\\n z-index: 9999;\\n}\\n\\n#error.active .message {\\n box-sizing: border-box;\\n position: absolute;\\n top: 50%;\\n left: 0;\\n width: 100%;\\n height: 50px;\\n line-height: 50px;\\n margin-top: -25px;\\n text-align: center;\\n color: #fff;\\n}\\n\\n#passcode-lock {\\n box-sizing: border-box;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n display: none;\\n}\\n\\n#passcode-lock.active {\\n display: block;\\n background-color: #000;\\n z-index: 9999;\\n}\\n\\n#passcode-lock.active .message {\\n box-sizing: border-box;\\n position: absolute;\\n top: 50%;\\n left: 0;\\n width: 100%;\\n height: 50px;\\n line-height: 50px;\\n margin-top: -25px;\\n text-align: center;\\n color: #fff;\\n}\\n\\n/**\\n * オーバーレイ\\n */\\n#overlay {\\n box-sizing: border-box;\\n user-select: none;\\n position: absolute;\\n display: none;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.5);\\n z-index: 9998;\\n cursor: pointer;\\n}\\n\\n#popup {\\n box-sizing: border-box;\\n position: absolute;\\n cursor: default;\\n}\\n\\n#popup img {\\n width: 100%;\\n height: 100%;\\n vertical-align: bottom;\\n}\\n\\n#popup .close {\\n box-sizing: border-box;\\n border-radius: 50%;\\n border: 2px solid #f5f5f5;\\n background-color: #333333;\\n position: absolute;\\n width: 35px;\\n height: 35px;\\n top: -15px;\\n right: -15px;\\n cursor: pointer;\\n}\\n\\n#popup .close::before, #popup .close::after {\\n box-sizing: border-box;\\n content: \\\"\\\";\\n position: absolute;\\n width: 20px;\\n height: 20px;\\n}\\n\\n#popup .close::before {\\n top: -1px;\\n left: 12px;\\n border-left: 2px solid #f5f5f5;\\n transform: rotate(-45deg);\\n}\\n\\n#popup .close::after {\\n top: -1px;\\n left: -1px;\\n border-right: 2px solid #f5f5f5;\\n transform: rotate(45deg);\\n}\\n\\n/**\\n * body wrapper\\n */\\n#c {\\n box-sizing: border-box;\\n height: 100%;\\n width: 100%;\\n overflow: hidden;\\n position: relative;\\n}\\n\\n/**\\n * ヘッダー\\n */\\n#header {\\n box-sizing: border-box;\\n position: absolute;\\n width: inherit;\\n height: 40px;\\n line-height: 32px;\\n overflow: hidden;\\n top: 0;\\n left: 0;\\n padding: 5px 10px;\\n background-color: #EEEEEE;\\n color: #000;\\n font-size: 16px;\\n z-index: 500;\\n}\\n\\n/**\\n * ビューワー\\n */\\n#panorama {\\n box-sizing: border-box;\\n position: absolute;\\n width: inherit;\\n height: inherit;\\n overflow: hidden;\\n left: 0;\\n z-index: 100;\\n}\\n\\n#panorama canvas {\\n cursor: move;\\n}\\n\\n#panorama .arrow-guide {\\n box-sizing: border-box;\\n border-radius: 50px;\\n position: absolute;\\n background-color: rgba(255, 255, 255, 0.7);\\n white-space: nowrap;\\n cursor: pointer;\\n display: none;\\n color: #000;\\n z-index: 101;\\n\\n /* textToCanvasLabel() と見た目を合わせる */\\n border-radius: 50px;\\n padding: clamp(4.8px, 0.96vw, 0.96vh) clamp(6px, 1.2vw, 1.2vh) ;\\n font-size: clamp(12px, 2.4vw, 2.4vh);\\n line-height: clamp(12px, 2.4vw, 2.4vh);\\n}\\n\\n#excuse-text {\\n position: absolute;\\n width: 65%;\\n line-height: 1.5;\\n top: 8px;\\n right: 8px;\\n letter-spacing: 3px;\\n color: rgba(255, 255, 255, 0.8);\\n font-size: 18px;\\n z-index: 101;\\n text-align: right;\\n text-shadow: 0 0 3px #000, 0 0 3px #000, 0 0 3px #000, 0 0 3px #000,\\n 4px 0 10px #000, -4px 0 10px #000, 0 2px 10px #000, 0 -2px 10px #000,\\n 4px 0 10px #000, -4px 0 10px #000, 0 2px 10px #000, 0 -2px 10px #000,\\n 4px 0 15px #000, -4px 0 15px #000, 0 2px 15px #000, 0 -2px 15px #000;\\n display: none;\\n}\\n\\n#play-video {\\n display: none;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n color: #666;\\n background-color: rgba(255, 255, 255, 0.8);\\n div {\\n position: absolute;\\n width: 300px;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n text-align: center;\\n line-height: 24px;\\n img {\\n width: 60px;\\n }\\n }\\n}\\n\\n#back-room {\\n position: absolute;\\n top: 40px;\\n left: 40px;\\n size: 30px;\\n z-index: 500;\\n display:none;\\n img {\\n cursor: pointer;\\n width: 60px;\\n height: 60px;\\n }\\n}\\n\\n#information-overlay {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background-color: rgba(0, 0, 0, 0.5);\\n display: none;\\n z-index: 300;\\n}\\n\\n#information {\\n background-color: #fff;\\n padding: 10px;\\n position: absolute;\\n max-width: 400px;\\n width: 70%;\\n min-height: 70px;\\n max-height: 70%;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n overflow: auto;\\n img {\\n max-width: 100%;\\n max-height: 320px;\\n }\\n .information-text {\\n white-space: pre-wrap;\\n }\\n}\\n\\n#information-close {\\n position: absolute;\\n border: 2px solid #ccc;\\n border-radius: 50%;\\n background-color: #000;\\n color: #fff;\\n width: 30px;\\n height: 30px;\\n transform: translate(-50%, -50%);\\n}\\n\\n.scene {\\n box-sizing: border-box;\\n position: absolute;\\n width: inherit;\\n height: 100%;\\n overflow: hidden;\\n top: 0;\\n left: 0;\\n z-index: 100;\\n}\\n\\n.arrow-css3d {\\n cursor: pointer;\\n}\\n\\n/**\\n * フロアー\\n */\\n#floorplans {\\n box-sizing: border-box;\\n background-color: #EEEEEE;\\n color: #000;\\n position: absolute;\\n bottom: 0px;\\n left: 7px;\\n width: 300px;\\n height: 290px;\\n padding: 5px 5px;\\n overflow: hidden;\\n z-index: 600;\\n}\\n\\n#floorplan-item_wrap {\\n user-select: none;\\n box-sizing: border-box;\\n position: relative;\\n width: 100%;\\n height: 100%;\\n overflow: hidden;\\n cursor: move;\\n}\\n\\n#floorplan-item {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 290px;\\n height: 250px;\\n}\\n\\n#floorplan-item img {\\n position: absolute;\\n top: 0;\\n left: 0;\\n z-index: 601;\\n}\\n\\n#floorplan-item .floorplan-point {\\n box-sizing: border-box;\\n border-radius: 50%;\\n border: 2px solid #2AB7D9;\\n background-color: #f5f5f5;\\n position: absolute;\\n z-index: 604;\\n width: 20px;\\n height: 20px;\\n}\\n\\n#floorplan-item .floorplan-point.hover {\\n cursor: pointer;\\n background-color: #2AB7D9;\\n}\\n\\n#floorplan-item .floorplan-point.active {\\n border: 2px solid #FF7373;\\n background-color: #FF7373;\\n}\\n\\n#floorplan-item .floorplan-point.active::before {\\n box-sizing: border-box;\\n border-radius: 50%;\\n position: absolute;\\n content: \\\"\\\";\\n top: -8px;\\n left: -8px;\\n width: 30px;\\n height: 30px;\\n background-color: rgba(255, 115, 115, 0.3);\\n}\\n\\n#floorplan-item .floorplan-point.active:hover {\\n cursor: default;\\n}\\n\\n#floorplan-lines, #floorplan-radar {\\n position: absolute;\\n top: 0;\\n left: 0;\\n}\\n\\n#floorplan-lines {\\n z-index: 602;\\n}\\n\\n#floorplan-lines line {\\n stroke: rgba(42, 183, 217, 0.8);\\n stroke-width: 1.5;\\n stroke-dasharray: 1, 3;\\n stroke-linecap: round;\\n}\\n\\n#floorplan-radar {\\n z-index: 603;\\n}\\n\\n#floorplan-radar path {\\n fill: rgba(255, 115, 115, 0.3);\\n}\\n\\n#floorplan-footer {\\n box-sizing: border-box;\\n position: absolute;\\n bottom: -15px;\\n left: 0px;\\n width: 100%;\\n height: 15px;\\n background-color: rgba(0, 0, 0, 0.5);\\n z-index: 610;\\n}\\n\\n#floorplan-pages {\\n box-sizing: border-box;\\n position: absolute;\\n top: -25px;\\n left: 3px;\\n width: auto;\\n height: 15px;\\n padding: 0px 5px;\\n font-size: 14px;\\n}\\n\\n#floorplan-pages .floorplan-page {\\n box-sizing: border-box;\\n border-radius: 50%;\\n position: relative;\\n display: inline-block;\\n margin: 0 5px;\\n background-color: #CCCCCC;\\n width: 11px;\\n height: 11px;\\n top: -3px;\\n}\\n\\n#floorplan-pages .floorplan-page:hover, #floorplan-pages .floorplan-page.active {\\n background-color: #2AB7D9;\\n}\\n\\n#floorplan-pages .floorplan-page:hover {\\n cursor: pointer;\\n}\\n\\n#floorplan-pages .floorplan-page.active:hover {\\n cursor: default;\\n}\\n\\n#floorplan-zoom_wrap {\\n box-sizing: border-box;\\n position: absolute;\\n top: -70px;\\n right: 10px;\\n width: 30px;\\n height: 60px;\\n}\\n\\n#floorplan-zoom-out, #floorplan-zoom-in {\\n box-sizing: border-box;\\n position: absolute;\\n width: 30px;\\n height: 30px;\\n background-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n#floorplan-zoom-out::before, #floorplan-zoom-out::after, #floorplan-zoom-in::before, #floorplan-zoom-in::after {\\n box-sizing: border-box;\\n position: absolute;\\n content: \\\"\\\";\\n width: 10px;\\n height: 10px;\\n}\\n\\n#floorplan-zoom-out.enabled::before, #floorplan-zoom-in.enabled::before {\\n border-top: 1px solid #f5f5f5;\\n}\\n\\n#floorplan-zoom-out.enabled::after, #floorplan-zoom-in.enabled::after {\\n border-left: 1px solid #f5f5f5;\\n}\\n\\n#floorplan-zoom-out.enabled:hover, #floorplan-zoom-in.enabled:hover {\\n cursor: pointer;\\n}\\n\\n#floorplan-zoom-out.enabled:hover::before, #floorplan-zoom-in.enabled:hover::before {\\n border-top: 1px solid #2AB7D9;\\n}\\n\\n#floorplan-zoom-out.enabled:hover::after, #floorplan-zoom-in.enabled:hover::after {\\n border-left: 1px solid #2AB7D9;\\n}\\n\\n#floorplan-zoom-out {\\n border-radius: 0 0 2px 2px;\\n top: 30px;\\n}\\n\\n#floorplan-zoom-out::before {\\n border-top: 1px solid #5c5c5c;\\n top: 15px;\\n left: 10px;\\n}\\n\\n#floorplan-zoom-out.enabled::after {\\n border-left: 0;\\n}\\n\\n#floorplan-zoom-out.enabled:hover::after {\\n border-left: 0;\\n}\\n\\n#floorplan-zoom-in {\\n border-radius: 2px 2px 0 0;\\n top: 0px;\\n border-bottom: 1px solid rgba(245, 245, 245, 0.5);\\n}\\n\\n#floorplan-zoom-in::before {\\n border-top: 1px solid #5c5c5c;\\n width: 11px;\\n top: 14px;\\n left: 9px;\\n}\\n\\n#floorplan-zoom-in::after {\\n height: 11px;\\n border-left: 1px solid #5c5c5c;\\n top: 9px;\\n left: 14px;\\n}\\n\\n#floorplan-control {\\n box-sizing: border-box;\\n cursor: pointer;\\n position: absolute;\\n top: 5px;\\n right: 5px;\\n width: 23px;\\n height: 22px;\\n z-index: 620;\\n}\\n\\n#floorplan-control::before {\\n position: absolute;\\n top: 7px;\\n right: 5px;\\n border-width: 8px 6px;\\n border-style: solid;\\n border-color: #2AB7D9 transparent transparent transparent;\\n content: \\\"\\\";\\n}\\n\\n#floorplan-control.hide::before {\\n top: -1px;\\n border-color: transparent transparent #2AB7D9 transparent;\\n}\\n\\n/**\\n * フッターコンテンツ\\n */\\n#footer-controls {\\n box-sizing: border-box;\\n position: absolute;\\n bottom: 0px;\\n left: 0px;\\n width: 100%;\\n height: 141px;\\n background-color: #EEEEEE;\\n border-top: 1px solid #CCCCCC;\\n cursor: default;\\n z-index: 300;\\n}\\n\\n#control-menu {\\n user-select: none;\\n box-sizing: border-box;\\n border-radius: 3px 3px 0 0;\\n cursor: pointer;\\n position: absolute;\\n top: -31px;\\n right: 5px;\\n width: 135px;\\n height: 32px;\\n line-height: 32px;\\n padding: 0 13px;\\n border: 1px solid #CCCCCC;\\n border-bottom: none;\\n background-color: #EEEEEE;\\n color: #2AB7D9;\\n font-size: 14px;\\n text-align: center;\\n z-index: 301;\\n}\\n\\n#control-menu:after {\\n position: absolute;\\n top: 11px;\\n right: 13px;\\n border-color: #2AB7D9 transparent transparent transparent;\\n border-width: 8px 6px;\\n border-style: solid;\\n content: \\\"\\\";\\n}\\n\\n#control-menu.hide:after {\\n top: 3px;\\n border-color: transparent transparent #2AB7D9 transparent;\\n}\\n\\n/**\\n * サムネイル\\n */\\n#thumbnails {\\n box-sizing: border-box;\\n position: absolute;\\n right: 0;\\n bottom: 40px;\\n width: calc(100% - 310px);\\n height: 100px;\\n background-color: #EEEEEE;\\n color: #000;\\n font-size: 11px;\\n z-index: 400;\\n}\\n\\n#thumbnail-items_wrap {\\n user-select: none;\\n box-sizing: border-box;\\n position: absolute;\\n left: 20px;\\n width: calc(100% - 40px);\\n height: 100px;\\n overflow: hidden;\\n}\\n\\n#thumbnail-items {\\n box-sizing: border-box;\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100px;\\n padding: 10px 0;\\n white-space: nowrap;\\n}\\n\\n#thumbnail-items .thumbnail-item {\\n box-sizing: border-box;\\n display: inline-block;\\n width: 90px;\\n margin: 0 6px;\\n cursor: pointer;\\n vertical-align: top;\\n}\\n\\n#thumbnail-items .thumbnail-item-active {\\n overflow: visible !important;\\n background-color: white;\\n padding: 5px;\\n display: inline;\\n z-index: 10;\\n opacity: 0.9;\\n}\\n\\n#thumbnail-items .thumbnail-item:first-child {\\n margin-left: 0px;\\n}\\n\\n#thumbnail-items .thumbnail-item .thumbnail-image_wrap:hover {\\n transition-duration: 0.3s;\\n border: 3px solid #2AB7D9;\\n}\\n\\n#thumbnail-items .thumbnail-item.active {\\n cursor: default;\\n}\\n\\n#thumbnail-items .thumbnail-item.active .thumbnail-image_wrap {\\n border: 3px solid #2AB7D9;\\n}\\n\\n#thumbnail-items .thumbnail-item .thumbnail-image_wrap {\\n box-sizing: border-box;\\n transition-duration: 0.3s;\\n position: relative;\\n width: 90px;\\n height: 54px;\\n margin-bottom: 2px;\\n background-color: black;\\n border: 3px solid #EEEEEE;\\n overflow: hidden;\\n}\\n\\n#thumbnail-items .thumbnail-item .thumbnail-image_wrap .thumbnail-image {\\n box-sizing: border-box;\\n max-width: 120%;\\n max-height: 120%;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n}\\n\\n#thumbnail-items .thumbnail-item .thumbnail-title {\\n box-sizing: border-box;\\n width: 90px;\\n overflow: hidden;\\n text-align: center;\\n text-overflow: ellipsis;\\n}\\n\\n#thumbnail-prev, #thumbnail-next {\\n box-sizing: border-box;\\n position: absolute;\\n top: 0;\\n width: 20px;\\n height: 100px;\\n}\\n\\n#thumbnail-prev::before, #thumbnail-next::before {\\n top: 32px;\\n}\\n\\n#thumbnail-prev::after, #thumbnail-next::after {\\n top: 39px;\\n}\\n\\n#thumbnail-prev::before, #thumbnail-prev::after, #thumbnail-next::before, #thumbnail-next::after {\\n box-sizing: border-box;\\n position: absolute;\\n content: \\\"\\\";\\n width: 10px;\\n height: 0px;\\n border-top: 2px solid #ace3f0;\\n}\\n\\n#thumbnail-prev.enabled, #thumbnail-next.enabled {\\n cursor: pointer;\\n}\\n\\n#thumbnail-prev.enabled::before, #thumbnail-prev.enabled::after, #thumbnail-next.enabled::before, #thumbnail-next.enabled::after {\\n border-top: 2px solid #2AB7D9;\\n}\\n\\n#thumbnail-prev.enabled:hover::before, #thumbnail-prev.enabled:hover::after, #thumbnail-next.enabled:hover::before, #thumbnail-next.enabled:hover::after {\\n border-top: 2px solid #1f94b1;\\n}\\n\\n#thumbnail-prev {\\n left: 0;\\n}\\n\\n#thumbnail-prev::before {\\n left: 4.5px;\\n transform: rotate(-45deg);\\n}\\n\\n#thumbnail-prev::after {\\n left: 4.5px;\\n transform: rotate(45deg);\\n}\\n\\n#thumbnail-next {\\n right: 0;\\n}\\n\\n#thumbnail-next::before {\\n left: 2.5px;\\n transform: rotate(45deg);\\n}\\n\\n#thumbnail-next::after {\\n left: 2.5px;\\n transform: rotate(-45deg);\\n}\\n\\n#thumbnails #thumbnail-close {\\n box-sizing: border-box;\\n display: none;\\n}\\n\\n/**\\n * フッター\\n */\\n#footer {\\n box-sizing: border-box;\\n position: absolute;\\n left: 0;\\n bottom: 0;\\n width: 100%;\\n height: 40px;\\n background-color: #EEEEEE;\\n z-index: 500;\\n}\\n#controls {\\n user-select: none;\\n box-sizing: border-box;\\n position: absolute;\\n height: inherit;\\n right: 0px;\\n font-size: 0px;\\n}\\n\\n#control-scene {\\n box-sizing: border-box;\\n width: 150px;\\n height: inherit;\\n cursor: pointer;\\n text-align: center;\\n display: inline-block;\\n line-height: 52px;\\n font-size: 16px;\\n}\\n\\n#control-scene:hover {\\n background-color: #d5d5d5;\\n}\\n\\n#control-scene img {\\n height: 19px;\\n}\\n\\n#control-vreffect {\\n box-sizing: border-box;\\n width: 48px;\\n height: inherit;\\n cursor: pointer;\\n text-align: center;\\n display: none;\\n line-height: 52px;\\n font-size: 16px;\\n}\\n\\n#control-vreffect:hover {\\n background-color: #d5d5d5;\\n}\\n\\n#control-vreffect img {\\n height: 19px;\\n}\\n\\n#control-video {\\n box-sizing: border-box;\\n width: 48px;\\n height: inherit;\\n cursor: pointer;\\n text-align: center;\\n display: inline-block;\\n line-height: 52px;\\n font-size: 16px;\\n}\\n\\n#control-video:hover {\\n background-color: #d5d5d5;\\n}\\n\\n#control-video img {\\n height: 19px;\\n}\\n\\n#control-video-rewind {\\n box-sizing: border-box;\\n width: 48px;\\n height: inherit;\\n cursor: pointer;\\n text-align: center;\\n display: inline-block;\\n line-height: 52px;\\n font-size: 16px;\\n}\\n\\n#control-video-rewind:hover {\\n background-color: #d5d5d5;\\n}\\n\\n#control-video-rewind img {\\n height: 19px;\\n}\\n\\n#control-video-forward {\\n box-sizing: border-box;\\n width: 48px;\\n height: inherit;\\n cursor: pointer;\\n text-align: center;\\n display: inline-block;\\n line-height: 52px;\\n font-size: 16px;\\n}\\n\\n#control-video-forward:hover {\\n background-color: #d5d5d5;\\n}\\n\\n#control-video-forward img {\\n height: 19px;\\n}\\n\\n#control-video-speed {\\n box-sizing: border-box;\\n width: 48px;\\n height: inherit;\\n cursor: pointer;\\n text-align: center;\\n display: inline-block;\\n line-height: 52px;\\n font-size: 16px;\\n}\\n\\n#control-video-speed:hover {\\n background-color: #d5d5d5;\\n}\\n\\n#control-video-speed span {\\n color: #2AB7D9;\\n font-size: 0.8em;\\n position: relative;\\n top: -4px;\\n}\\n\\n#control-rotation {\\n box-sizing: border-box;\\n width: 48px;\\n height: inherit;\\n cursor: pointer;\\n text-align: center;\\n display: inline-block;\\n line-height: 52px;\\n font-size: 16px;\\n}\\n\\n#control-rotation:hover {\\n background-color: #d5d5d5;\\n}\\n\\n#control-rotation img {\\n height: 19px;\\n}\\n\\n#control-floorplans {\\n box-sizing: border-box;\\n width: 48px;\\n height: inherit;\\n cursor: pointer;\\n text-align: center;\\n display: inline-block;\\n line-height: 52px;\\n font-size: 16px;\\n}\\n\\n#control-floorplans:hover {\\n background-color: #d5d5d5;\\n}\\n\\n#control-floorplans img {\\n height: 19px;\\n}\\n\\n#control-floorplans.hide img {\\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);\\n opacity: 0.5;\\n}\\n\\n#control-fullscreen {\\n box-sizing: border-box;\\n width: 48px;\\n height: inherit;\\n cursor: pointer;\\n text-align: center;\\n display: inline-block;\\n line-height: 52px;\\n font-size: 16px;\\n}\\n\\n#control-fullscreen:hover {\\n background-color: #d5d5d5;\\n}\\n\\n#control-fullscreen img {\\n height: 19px;\\n}\\n\\n#control-help {\\n box-sizing: border-box;\\n width: 48px;\\n height: inherit;\\n cursor: pointer;\\n text-align: center;\\n display: inline-block;\\n line-height: 52px;\\n font-size: 16px;\\n}\\n\\n#control-help:hover {\\n background-color: #d5d5d5;\\n}\\n\\n#control-help img {\\n height: 19px;\\n}\\n\\n$scene-switcher-width: 96px;\\n$scene-switcher-height: 88px;\\n$scene-switcher-toggle-padding: 16px;\\n\\n#control-scene-switcher-panel.close {\\n transform: translate3d($scene-switcher-width, 0, 0);\\n}\\n\\n#control-scene-switcher-panel.open {\\n transform: translate3d(0, 0, 0);\\n}\\n\\n#control-scene-switcher-panel {\\n transition: all .2s;\\n}\\n\\n#control-scene-switcher-panel {\\n position: absolute;\\n top: -340px;\\n right: 0;\\n width: $scene-switcher-width;\\n display: none;\\n\\n .toggle-button {\\n position: absolute;\\n height: $scene-switcher-height;\\n line-height: $scene-switcher-height;\\n font-size: 10px;\\n color: white;\\n left: -(2 * $scene-switcher-toggle-padding + 10);\\n padding: 0 $scene-switcher-toggle-padding;\\n background-color: rgba(0, 0, 0, 0.5);\\n text-decoration: none;\\n border-top-left-radius: 16px;\\n border-bottom-left-radius: 16px;\\n }\\n\\n #control-scene-switcher-title {\\n background-color: rgba(0, 0, 0, 0.5);\\n color: white;\\n font-size: 10px;\\n text-align: center;\\n }\\n\\n #control-scene-switcher {\\n background-color: rgba(0, 0, 0, 0.7);\\n position: relative;\\n height: 64px;\\n opacity: 0.7;\\n overflow-y: scroll;\\n img {\\n width: 100%;\\n height: auto;\\n }\\n .scene-name-label {\\n position: relative;\\n top: -48px;\\n color: white;\\n line-height: 1.2;\\n font-size: 10px;\\n padding: 4px;\\n text-align: center;\\n box-sizing: border-box;\\n text-shadow: 1px 1px 1px #000, -1px -1px 1px #000;\\n }\\n }\\n}\\n\\n#control-zoom_wrap {\\n box-sizing: border-box;\\n position: absolute;\\n top: -220px;\\n right: 5px;\\n width: 30px;\\n height: 60px;\\n}\\n\\n#control-zoom-out, #control-zoom-in {\\n box-sizing: border-box;\\n position: absolute;\\n width: 30px;\\n height: 30px;\\n background-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n#control-zoom-out::before, #control-zoom-out::after, #control-zoom-in::before, #control-zoom-in::after {\\n box-sizing: border-box;\\n position: absolute;\\n content: \\\"\\\";\\n width: 10px;\\n height: 10px;\\n}\\n\\n#control-zoom-out.enabled::before, #control-zoom-in.enabled::before {\\n border-top: 1px solid #f5f5f5;\\n}\\n\\n#control-zoom-out.enabled::after, #control-zoom-in.enabled::after {\\n border-left: 1px solid #f5f5f5;\\n}\\n\\n#control-zoom-out.enabled:hover, #control-zoom-in.enabled:hover {\\n cursor: pointer;\\n}\\n\\n#control-zoom-out.enabled:hover::before, #control-zoom-in.enabled:hover::before {\\n border-top: 1px solid #2AB7D9;\\n}\\n\\n#control-zoom-out.enabled:hover::after, #control-zoom-in.enabled:hover::after {\\n border-left: 1px solid #2AB7D9;\\n}\\n\\n#control-zoom-out {\\n border-radius: 0 0 2px 2px;\\n top: 30px;\\n}\\n\\n#control-zoom-out::before {\\n border-top: 1px solid #5c5c5c;\\n top: 15px;\\n left: 10px;\\n}\\n\\n#control-zoom-out.enabled::after {\\n border-left: 0;\\n}\\n\\n#control-zoom-out.enabled:hover::after {\\n border-left: 0;\\n}\\n\\n#control-zoom-in {\\n border-radius: 2px 2px 0 0;\\n top: 0px;\\n border-bottom: 1px solid rgba(245, 245, 245, 0.5);\\n}\\n\\n#control-zoom-in::before {\\n border-top: 1px solid #5c5c5c;\\n width: 11px;\\n top: 14px;\\n left: 9px;\\n}\\n\\n#control-zoom-in::after {\\n height: 11px;\\n border-left: 1px solid #5c5c5c;\\n top: 9px;\\n left: 14px;\\n}\\n\\n/**\\n * 外部リンク\\n */\\n#links {\\n box-sizing: border-box;\\n border-radius: 3px;\\n position: absolute;\\n height: 30px;\\n top: 5px;\\n right: 5px;\\n background-color: #2AB7D9;\\n font-size: 75%;\\n color: #fff;\\n padding: 3px 10px 3px 10px;\\n display: none;\\n overflow: hidden;\\n z-index: 510;\\n}\\n\\n#links.active {\\n display: block;\\n}\\n\\n#links.active a {\\n color: #fff;\\n text-decoration: none;\\n}\\n\\n#links.active a:visited {\\n color: #fff;\\n}\\n\\n#links.active a:focus {\\n color: #fff;\\n}\\n\\n#links.active a:hover {\\n color: #fff;\\n}\\n\\n#links.active a:active {\\n color: #fff;\\n}\\n\\n.without-map {\\n #thumbnails {\\n width: 100%;\\n }\\n}\\n\\n#vrModeStartButton {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100vw;\\n height: 100vh;\\n line-height: 100vh;\\n text-align: center;\\n color: white;\\n background-color: rgba(0, 0, 0, 0.75);\\n z-index: 1000;\\n}\\n\\n.sp {\\n #floorplans {\\n width: 200px;\\n height: 190px;\\n }\\n #thumbnails {\\n width: calc(100% - 210px);\\n }\\n &.without-map #thumbnails {\\n width: 100%;\\n }\\n #control-vreffect {\\n display: inline-block;\\n }\\n}\\n.sp.portrait {\\n #floorplans {\\n width: 100%;\\n height: 130px;\\n left: 0;\\n bottom: 50px;\\n }\\n #floorplan-control {\\n display: none;\\n }\\n #footer-controls {\\n padding-top: 270px;\\n }\\n #footer-controls #control-menu {\\n left: 50%;\\n transform: translateX(-50%);\\n }\\n #control-scene-switcher-panel {\\n top: -460px;\\n }\\n #control-zoom_wrap {\\n top: -340px;\\n }\\n #thumbnails {\\n width: 100%;\\n }\\n}\\n.sp.portrait.without-map {\\n #footer-controls {\\n padding-top: 0;\\n }\\n #control-zoom_wrap {\\n top: -198px;\\n }\\n}\\n\",\"/* http://meyerweb.com/eric/tools/css/reset/\\n v5.0.1 | 20191019\\n License: none (public domain)\\n*/\\n\\nhtml, body, div, span, applet, object, iframe,\\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\\na, abbr, acronym, address, big, cite, code,\\ndel, dfn, em, img, ins, kbd, q, s, samp,\\nsmall, strike, strong, sub, sup, tt, var,\\nb, u, i, center,\\ndl, dt, dd, menu, ol, ul, li,\\nfieldset, form, label, legend,\\ntable, caption, tbody, tfoot, thead, tr, th, td,\\narticle, aside, canvas, details, embed,\\nfigure, figcaption, footer, header, hgroup,\\nmain, menu, nav, output, ruby, section, summary,\\ntime, mark, audio, video {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tborder: 0;\\n\\tfont-size: 100%;\\n\\tfont: inherit;\\n\\tvertical-align: baseline;\\n}\\n/* HTML5 display-role reset for older browsers */\\narticle, aside, details, figcaption, figure,\\nfooter, header, hgroup, main, menu, nav, section {\\n\\tdisplay: block;\\n}\\n/* HTML5 hidden-attribute fix for newer browsers */\\n*[hidden] {\\n display: none;\\n}\\nbody {\\n\\tline-height: 1;\\n}\\nmenu, ol, ul {\\n\\tlist-style: none;\\n}\\nblockquote, q {\\n\\tquotes: none;\\n}\\nblockquote:before, blockquote:after,\\nq:before, q:after {\\n\\tcontent: '';\\n\\tcontent: none;\\n}\\ntable {\\n\\tborder-collapse: collapse;\\n\\tborder-spacing: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".fk-input-container[data-v-32c17cb5]{display:inline-block}.fk-input-container input[data-v-32c17cb5]{border:none;margin-left:10px;text-align:center}.fk-input-container input[data-v-32c17cb5]:first-child{margin-left:0}.fk-input-container input[data-v-32c17cb5]:focus{outline:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/VueFakeInput.vue\"],\"names\":[],\"mappings\":\"AACA,qCACE,oBAAA,CAEA,2CACE,WAAA,CACA,gBAAA,CACA,iBAAA,CAEA,uDAAA,aAAA,CACA,iDAAA,YAAA\",\"sourcesContent\":[\"\\n.fk-input-container {\\n display: inline-block;\\n\\n input {\\n border: none;\\n margin-left: 10px;\\n text-align: center;\\n\\n &:first-child { margin-left: 0; }\\n &:focus { outline: none; }\\n }\\n\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".map-large[data-v-42a450c7]{overflow:hidden;width:180px;font-size:0}.map-name[data-v-42a450c7]{background-color:#2ab7d9;font-size:12px;line-height:18px;color:#fff;text-align:center}.map-name button[data-v-42a450c7]{border-width:1px;border-radius:3px;border-style:solid;margin-left:1px;border-color:#fff;background-color:#2ab7d9;color:#fff}.map-name button.active[data-v-42a450c7]{border-color:#2ab7d9;background-color:#fff;color:#2ab7d9}.bottom-bar[data-v-42a450c7]{position:relative;background-color:#2ab7d9;width:100%;height:30px}.map-zoom[data-v-42a450c7]{width:calc(100% - 30px);font-size:0}.slider[data-v-42a450c7],.label[data-v-42a450c7]{display:inline-block;vertical-align:middle}.slider[data-v-42a450c7]{width:calc(100% - 40px);height:30px}.label[data-v-42a450c7]{width:20px;height:30px;line-height:30px;font-size:14px;text-align:center;color:rgba(255,255,255,.5)}.minimize[data-v-42a450c7]{position:absolute;box-sizing:border-box;right:-7px;bottom:-7px;width:44px;height:44px}.minimize img[data-v-42a450c7]{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:30px;height:30px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/map-large.vue\"],\"names\":[],\"mappings\":\"AACA,4BACE,eAAA,CACA,WAAA,CACA,WAAA,CAEF,2BACE,wBAAA,CACA,cAAA,CACA,gBAAA,CACA,UAAA,CACA,iBAAA,CACA,kCACE,gBAAA,CACA,iBAAA,CACA,kBAAA,CACA,eAAA,CACA,iBAAA,CACA,wBAAA,CACA,UAAA,CAEF,yCACE,oBAAA,CACA,qBAAA,CACA,aAAA,CAGJ,6BACE,iBAAA,CACA,wBAAA,CACA,UAAA,CACA,WAAA,CAEF,2BACE,uBAAA,CACA,WAAA,CAEF,iDACE,oBAAA,CACA,qBAAA,CAEF,yBACE,uBAAA,CACA,WAAA,CAEF,wBACE,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,iBAAA,CACA,0BAAA,CAEF,2BACE,iBAAA,CACA,qBAAA,CACA,UAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CAEF,+BACE,iBAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CACA,UAAA,CACA,WAAA\",\"sourcesContent\":[\"\\n.map-large {\\n overflow: hidden;\\n width: 180px;\\n font-size: 0;\\n}\\n.map-name {\\n background-color: #2AB7D9;\\n font-size: 12px;\\n line-height: 18px;\\n color: white;\\n text-align: center;\\n button {\\n border-width: 1px;\\n border-radius: 3px;\\n border-style: solid;\\n margin-left: 1px;\\n border-color: white;\\n background-color: #2AB7D9;\\n color: white;\\n }\\n button.active {\\n border-color: #2AB7D9;\\n background-color: white;\\n color: #2AB7D9;\\n }\\n}\\n.bottom-bar {\\n position: relative;\\n background-color: #2AB7D9;\\n width: 100%;\\n height: 30px;\\n}\\n.map-zoom {\\n width: calc(100% - 30px);\\n font-size: 0;\\n}\\n.slider, .label {\\n display: inline-block;\\n vertical-align: middle;\\n}\\n.slider {\\n width: calc(100% - 40px);\\n height: 30px;\\n}\\n.label {\\n width: 20px;\\n height: 30px;\\n line-height: 30px;\\n font-size: 14px;\\n text-align: center;\\n color: rgba(255, 255, 255, 0.5);\\n}\\n.minimize {\\n position: absolute;\\n box-sizing: border-box;\\n right: -7px;\\n bottom: -7px;\\n width: 44px;\\n height: 44px;\\n}\\n.minimize img {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n width: 30px;\\n height: 30px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".backdrop[data-v-5e116b40]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:auto}.menu[data-v-5e116b40]{position:absolute;width:100px;right:8px;top:52px;background-color:#fff;box-shadow:0 0 4px 4px rgba(0,0,0,.2);overflow:hidden;pointer-events:auto}.menu-item[data-v-5e116b40]{padding:8px 16px;font-size:14px;color:#666;border-bottom:1px solid #ccc;cursor:pointer}.menu-item.disabled[data-v-5e116b40]{color:#ccc;cursor:not-allowed}.menu-item[data-v-5e116b40]:last-child{border-bottom:none}.v-enter-active[data-v-5e116b40],.v-enter-active .menu[data-v-5e116b40],.v-leave-active[data-v-5e116b40],.v-leave-active .menu[data-v-5e116b40]{transition:opacity .2s}.v-enter .menu[data-v-5e116b40],.v-leave-to .menu[data-v-5e116b40]{opacity:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/more-menu.vue\"],\"names\":[],\"mappings\":\"AACA,2BACE,iBAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CACA,mBAAA,CAGF,uBACE,iBAAA,CACA,WAAA,CACA,SAAA,CACA,QAAA,CACA,qBAAA,CACA,qCAAA,CACA,eAAA,CACA,mBAAA,CAGF,4BACE,gBAAA,CACA,cAAA,CACA,UAAA,CACA,4BAAA,CACA,cAAA,CAEA,qCACE,UAAA,CACA,kBAAA,CAIJ,uCACE,kBAAA,CAGF,gJACE,sBAAA,CAGF,mEACE,SAAA\",\"sourcesContent\":[\"\\n.backdrop {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n pointer-events: auto;\\n}\\n\\n.menu {\\n position: absolute;\\n width: 100px;\\n right: 8px;\\n top: calc(44px + 8px);\\n background-color: #fff;\\n box-shadow: 0 0 4px 4px rgba(0, 0, 0, 0.2);\\n overflow: hidden;\\n pointer-events: auto;\\n}\\n\\n.menu-item {\\n padding: 8px 16px;\\n font-size: 14px;\\n color: #666;\\n border-bottom: 1px solid #ccc;\\n cursor: pointer;\\n\\n &.disabled {\\n color: #ccc;\\n cursor: not-allowed;\\n }\\n}\\n\\n.menu-item:last-child {\\n border-bottom: none;\\n}\\n\\n.v-enter-active, .v-enter-active .menu, .v-leave-active, .v-leave-active .menu {\\n transition: opacity .2s;\\n}\\n\\n.v-enter .menu, .v-leave-to .menu {\\n opacity: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ui-minimal[data-v-4c7a8569]{pointer-events:none}.telop-wrapper[data-v-4c7a8569]{position:absolute;top:0px;width:100%;background-color:rgba(0,0,0,.1);box-shadow:0 0 2px 2px rgba(0,0,0,.2)}.ui-minimal-icons-area[data-v-4c7a8569]{position:absolute;pointer-events:auto;display:flex;justify-content:flex-end;height:44px;left:0px;bottom:0px;right:0px}.ui-minimal-icons-area .icon-frame[data-v-4c7a8569]{pointer-events:auto;position:relative;width:42px;height:42px;margin:0px 1px;background-color:rgba(0,0,0,.2);border-radius:50%}.ui-minimal-icons-area .icon-frame .icon[data-v-4c7a8569]{pointer-events:none;position:absolute;top:50%;left:50%;width:85%;height:85%;transform:translate(-50%, -50%)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/ui-minimal.vue\"],\"names\":[],\"mappings\":\"AACA,6BACE,mBAAA,CAGF,gCACE,iBAAA,CACA,OAAA,CACA,UAAA,CACA,+BAAA,CACA,qCAAA,CAGF,wCACE,iBAAA,CACA,mBAAA,CACA,YAAA,CACA,wBAAA,CACA,WAAA,CACA,QAAA,CACA,UAAA,CACA,SAAA,CAEA,oDACE,mBAAA,CACA,iBAAA,CACA,UAAA,CACA,WAAA,CACA,cAAA,CACA,+BAAA,CACA,iBAAA,CAEA,0DACE,mBAAA,CACA,iBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,UAAA,CACA,+BAAA\",\"sourcesContent\":[\"\\n.ui-minimal {\\n pointer-events: none;\\n}\\n\\n.telop-wrapper {\\n position: absolute;\\n top: 0px;\\n width: 100%;\\n background-color: rgba(0, 0, 0, 0.1);\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.2);\\n}\\n\\n.ui-minimal-icons-area {\\n position: absolute;\\n pointer-events: auto;\\n display: flex;\\n justify-content: flex-end;\\n height: 44px;\\n left: 0px;\\n bottom: 0px;\\n right: 0px;\\n\\n .icon-frame {\\n pointer-events: auto;\\n position: relative;\\n width: 42px;\\n height: 42px;\\n margin: 0px 1px;\\n background-color: rgba(0, 0, 0, 0.2);\\n border-radius: 50%;\\n\\n .icon {\\n pointer-events: none;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n width: 85%;\\n height: 85%;\\n transform: translate(-50%, -50%);\\n }\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".button-exit-vr-frame[data-v-677d92be]{position:absolute;top:50%;left:50%;width:90px;height:90px;transform:translate(-50%, -50%);border-radius:15px;background-color:rgba(0,0,0,.6);z-index:100}.button-exit-vr-frame .button-exit-vr[data-v-677d92be]{position:absolute;top:35%;left:50%;width:50%;height:50%;transform:translate(-50%, -50%)}.button-exit-vr-frame .button-exit-vr-text[data-v-677d92be]{position:absolute;top:65%;left:50%;width:80%;transform:translate(-50%, 0);font-size:11px;line-height:12px;color:#fff;text-align:center}.toggle-fullscreen-frame[data-v-677d92be]{position:absolute;bottom:5px;right:5px;padding:0px;width:40px;height:40px;border-radius:20px;background-color:rgba(10,10,10,.6);z-index:100}.toggle-fullscreen-frame .toggle-fullscreen[data-v-677d92be]{pointer-events:none;position:absolute;top:50%;left:50%;width:80%;height:80%;transform:translate(-50%, -50%)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./app/javascript/src/panoramas/components/ui/ui-vr.vue\"],\"names\":[],\"mappings\":\"AACA,uCACE,iBAAA,CACA,OAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CACA,+BAAA,CACA,kBAAA,CACA,+BAAA,CACA,WAAA,CAEA,uDACE,iBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,UAAA,CACA,+BAAA,CAGF,4DACE,iBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,4BAAA,CACA,cAAA,CACA,gBAAA,CACA,UAAA,CACA,iBAAA,CAIJ,0CACE,iBAAA,CACA,UAAA,CACA,SAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,kBAAA,CACA,kCAAA,CACA,WAAA,CAEA,6DACE,mBAAA,CACA,iBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,UAAA,CACA,+BAAA\",\"sourcesContent\":[\"\\n.button-exit-vr-frame {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n width: 90px;\\n height: 90px;\\n transform: translate(-50%, -50%);\\n border-radius: 15px;\\n background-color: rgba(0, 0, 0, 0.6);\\n z-index: 100;\\n\\n .button-exit-vr {\\n position: absolute;\\n top: 35%;\\n left: 50%;\\n width: 50%;\\n height: 50%;\\n transform: translate(-50%, -50%);\\n }\\n\\n .button-exit-vr-text {\\n position: absolute;\\n top: 65%;\\n left: 50%;\\n width: 80%;\\n transform: translate(-50%, 0);\\n font-size: 11px;\\n line-height: 12px;\\n color: #FFFFFF;\\n text-align: center;\\n }\\n}\\n\\n.toggle-fullscreen-frame {\\n position: absolute;\\n bottom: 5px;\\n right: 5px;\\n padding: 0px;\\n width: 40px;\\n height: 40px;\\n border-radius: 20px;\\n background-color: rgba(10, 10, 10, 0.6);\\n z-index: 100;\\n\\n .toggle-fullscreen {\\n pointer-events: none;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n width: 80%;\\n height: 80%;\\n transform: translate(-50%, -50%);\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"fk-input-container\"},_vm._l((_vm.length),function(input,index){return _c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputValues[index]),expression:\"inputValues[index]\"}],key:index,ref:_vm.generateInputId(index),refInFor:true,style:({\n fontSize: _vm.fkFontSize,\n borderBottom: _vm.fkInputColor(index),\n color: _vm.fontColor,\n width: _vm.fkWidth,\n }),attrs:{\"id\":_vm.generateInputId(index),\"type\":\"tel\",\"maxlength\":\"1\",\"contenteditable\":\"true\"},domProps:{\"value\":(_vm.inputValues[index])},on:{\"keydown\":_vm.handleKeydown,\"keyup\":function($event){return _vm.handleInputFocus(index)},\"paste\":function($event){$event.preventDefault();return _vm.handlePastedValues.apply(null, arguments)},\"input\":[function($event){if($event.target.composing)return;_vm.$set(_vm.inputValues, index, $event.target.value)},function($event){return _vm.returnFullString()}]}})}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VueFakeInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-5.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VueFakeInput.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VueFakeInput.vue?vue&type=style&index=0&id=32c17cb5&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VueFakeInput.vue?vue&type=style&index=0&id=32c17cb5&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VueFakeInput.vue?vue&type=template&id=32c17cb5&scoped=true&\"\nimport script from \"./VueFakeInput.vue?vue&type=script&lang=js&\"\nexport * from \"./VueFakeInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VueFakeInput.vue?vue&type=style&index=0&id=32c17cb5&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"32c17cb5\",\n null\n \n)\n\nexport default component.exports"],"names":["defaultName","default","color1","color2","vrModeColor","iconColor","iconBackground","defaultColor","activeColor","thumbnailBorder","icons","back","require","more","info","pointThumbnails","itemThumbnails","fullscreenOn","fullscreenOff","autoRotation","gyroRotation","videoControls","vrEffect","vrExit","videoPlay","videoPause","videoBwd5","videoFwd5","close","minimize","controls","controlsShow","controlsHide","overlayVideoPlay","volumeUp","volumeOff","theme1","settings","isMobile","bowser","isSupportCrossOriginVideoTexture","themes","currentTheme","Url","window","location","href","query","theme","errorMessage","placeData","placeId","mapId","pointId","itemId","size","width","height","fov","max","FOV_MAX","min","FOV_MIN","value","FOV_DEFAULT","cameraRotation","x","y","imageQuality","vrMode","deviceOrientationDetected","deviceMotionDenied","telopEnabled","autoRotationDirection","ignoreAutoRotation","eyeControlEnable","radarEnabled","videoPlaying","videoDuration","videoStartTime","videoCurrentTime","videoSpeed","videoRepeat","videoMuted","videoVolume","hlsAutomaticVideoLevel","hlsLevel","hlsLevels","itemContextHistory","panoramaZoomEnabled","pointThumbnailsActive","itemThumbnailsActive","videoControlsActive","videoSpeedMenuActive","videoAutoPlay","moreMenuActive","infoModalActive","imageQualityModalActive","airtagInformationActive","airtagInformation","image_url","text","youtube_url","eyeTrackingState","none","looking","selected","lookAtItemObject","itemObject","counter","itemTransition","name","loading","fullscreen","fullscreenExecuted","locationHashParams","getAttributeValue","place","attributeName","_a","_b","attributes","find","attr","clampRotation","THREE","euclideanModulo","minDiff","diffRotation","maxDiff","a","b","d","Math","abs","initialItemContext","state","getters","firstPiont","getPointById","firstPointId","map","maps","point","points","item","items","length","id","allMaps","filter","m","allPoints","forEach","push","apply","_toConsumableArray","allItems","getMapById","getItemById","currentMap","currentPoint","currentItem","pointsOfCurrentMap","itemsOfCurrentPoint","primary","panoramaName","panorama_name","pointName","_c","trim","currentItemContext","__spreadValues","lastItemContext","itemComponentInfo","_d","_e","_f","_g","_h","_i","_j","_k","_l","quality","key","concat","type","img","BowserAccessor","checkIpad","pointRotation","pointDirection","movablePoints","airtags","tripodCoverUrl","tripod_cover","tripodCoverScale","tripod_cover_scale","masking","meta_data","common","cameraSpeed","cameraPan","nextPointId","next_point_id","fisheye250FocalLength","fisheye_250_image","focal_length","verticalFov","horizontalFov","aspect","fovV","radToDeg","atan","tan","degToRad","toHorizontalFov","cameraRotationRange","viewableArea","viewable_area","rotation","mapDirection","xMin","x_angle_min","xMax","x_angle_max","yMin","y_angle_min","yMax","y_angle_max","camera","speed","pan","drawWalkThrough","allow_items","allow_item","point_id","clone","tags","airtag","i","index","backButtonVisible","title","Boolean","join","mapViewVisible","mapImageUrl","image_file_path","mapPoints","visible","active","mapLines","lines","allowItem","line","sort","Object","values","isRadarVisible","drawRadar","direction","imageUrl","image_file_path_thumb","caption","scene_name","displayingThumbnailList","itemThumbnailsVisible","autoRotationVisible","includes","autoRotationOn","gyroRotationOn","videoControlVisible","isVideoHls","parentPlaceTelopText","parent","itemTelopText","telop","itemTelopSpeed","scroll","itemBrightness","parseFloat","brightness","externalLink","url","excuseText","hideAnnotation","processingType","isVideoFallback","processing_tags","homeStagingTagged","itemRemovalTagged","renovationTagged","keepMovementDirection","keep_movement_direction","initialCameraRotation","xAngle","x_angle","yAngle","y_angle","clamp","initialCameraFov","canForward","findIndex","vectorToPoint","mapAspect","aspect_ratio","p1","p2","v1","sub","directionToPoint","v","angle","panoramaZoomBottom","panoramaZoomActive","panoramaGyroRotationAvailable","gyroRotationEnable","vrModeAvailable","vreffectEnable","panoramaThumbUrl","panorama_thumb_url","setSettings","menuOpen","itemThumbsOpen","setErrorMessage","setPlaceData","_a2","_a3","setItemContext","_ref","arguments","undefined","transition","_ref$videoForceAutoPl","videoForceAutoPlay","videoPlaybackAutomatically","appendItemContextHistory","removeLastItemContext","pop","setSize","_ref2","setFov","setCameraRotation","_ref3","setPanoramaZoomEnabled","enabled","togglePointThumbnails","toggleItemThumbnails","hideItemThumbnails","toggleVideoControls","toggleVideoSpeedMenu","setVideoMuted","muted","setVideoVolume","toggleMoreMenu","toggleInfoModal","toggleImageQualityModal","toggleAirtagInformation","setVideoDuration","duration","setVideoCurrentTime","currentTime","setVideoPlaying","playing","setVideoSpeed","setTelopEnabled","setAutoRotation","invertAutoRotationDirection","setIgnoreAutoRotation","setGyroRotation","setRadarEnabled","setAirtagInformation","_ref4","setLookingAtItemObject","_ref5","setStopLookingAtItemObject","setSelectedItemObject","setLoading","setVrMode","logger","sendEvent","setImageQuality","setDeviceOrientationDetected","setDeviceMotionDenied","setHlsAutomaticVideoLevel","setHlsLevel","level","setHlsLevels","levels","setFullscreen","setFullscreenExecuted","setLocationHashParams","EventSubjects","_classCallCheck","this","_changePointSubject","Rx","_itemShownSubject","_screenClickSubject","_fovChangedByUserSubject","_airTagClickSubject","e","next","data","Analytics","eventSubjects","AnalyticsNamespace","attachPanoramaEvents","onItemShownAsObservable","subscribe","console","log","onPointChangeAsObservable","onAirTagClickAsObservable","onFovChangedByUserAsObservable","notifyItemShown","notifyPointChanged","seekPositionMillisec","pointIndex","notifyAirTagClick","phi","theta","notifyFovChangedByUser","rotateCameraTween","loadPanorama","_0","_1","__async","panoramaDataUrl","commit","dispatch","_regeneratorRuntime","mark","_callee","response","wrap","_context","prev","Nurve","$http","get","sent","t0","stop","showInitialItem","_callee2","_getters$initialItemC","_context2","__spreadProps","analytics","requestPermissionDeviceMotion","DeviceMotionEvent","DeviceOrientationEvent","requestPermission","then","permission","rotateCamera","Promise","resolve","reject","fromRotation","toRotation","TWEEN","to","easing","Quadratic","Out","onUpdate","onComplete","start","setTimeout","changeCameraRotation","_ref6","_ref7","changePointWithoutForwardProcess","_ref8","_ref9","_callee3","_context3","abrupt","p","event","overrideIds","changePoint","_ref10","_ref11","_ref11$videoForceAuto","_callee4","_context4","changePointForward","_ref12","_ref13","_ref13$videoForceAuto","catch","changePointFade","_ref14","_ref15","_ref15$videoForceAuto","changeItem","_ref16","_ref17","_callee5","_context5","changeImageQuality","_ref18","_callee6","itemContext","_context6","backPrevPoint","_ref19","changeFov","_ref20","oldFov","changeFovWithAnimation","_ref21","_ref22","obj","onAirtagClick","_ref23","_ref24","information","onStopLookAtItemObject","_ref25","onLookAtArrowPoint","_ref26","_ref27","arrowPoint","onLookAtAirtag","_ref28","_ref29","clampCameraRotation","_ref30","range","_state$cameraRotation","_ref31","_ref32","namespaced","mutations","actions","computed","mapState","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_self","staticClass","_v","_s","methods","mapMutations","dispose","beforeEnter","el","style","opacity","enter","done","Exponential","In","afterEnter","beforeLeave","leave","afterLeave","created","mixins","transition2d","mapGetters","onTap","$emit","attrs","on","directives","rawName","expression","arg","Vue","waitMetadata","reactiveVideo","video","disposables","CompositeDisposable","addSubscription","metadataReadyProperty","asObservable","ready","onErrorAsObservable","error","videoElement","overlayVideoPlayButton","overlayVideoReplayButton","changeVideoVolumeTimer","initVideoEvent","_this","onPlayingAsObservable","onEndedAsObservable","playVideo","screenfull","postMessage","JSON","stringify","action","by","dispatchEvent","Event","onPauseAsObservable","onTimeupdateAsObservable","onRatechangeAsObservable","playbackRate","onWaitingAsObservable","onCanplayAsObservable","onSeekingAsObservable","parseInt","ended","onSeekedAsObservable","_this2","play","err","muteVideo","pauseVideo","pause","skipVideo","seconds","time","changeVideoSpeed","unmuteVideo","startVideoLoading","waitInitialCanplayEvent","load","_this3","changeVideoVolume","volume","_this4","clearTimeout","mapActions","mounted","add","ReactiveVideoElement","videoControlsBus","$on","$el","querySelector","appendChild","beforeDestroy","$off","props","overlayStyle","$event","videoPlayer","components","VideoOverlay","MediumElementFactory","createVideo","target","_default","store","panorama","_Transition3dBase","_inherits","_super","call","showAirTagsAndMoveTags","tween","tweenPromise","TweenPromisify","timeoutPromise","delay","panoramaFovMax","all","Transition3dBase","pos","applyEuler","inner","position","copy","tween1","z","promise1","tween2","promise2","createTransition","Transition3dFade","$store","object","Transition3dForward","Transition3dNull","$_transition","$_onTap","raycaster","threeContext","createRaycaster","center","moveTag","findMoveTagOnRay","airTag","findAirTagOnRay","$_onPanStart","$_panX","$_panY","$_onPan","deltaY","deltaX","$_onPanEnd","$_onPinchStart","$_fov","$_onPinch","scale","$_onPinchEnd","$_onWheel","preventDefault","sign","wheelDeltaY","wheelDelta","detail","$listen","cache","getImageTexture","src","texture","minFilter","magFilter","getVideoTexture","format","item_base_object_default","_opacity","mesh","createMesh","airTags","moveTags","addAirAndMoveTags","tripodCoverMesh","createTripodCover","maskingMesh","createMaskingMesh","switchVrMode","watch","tag","createAirtagObject","threeObject","updateShowByTimeAirtags","nextPoint","createMoveTagObject","colorTween","r","g","repeat","Infinity","yoyo","updateMoveTagsColor","material","geometry","color","transparent","PI","renderOrder","set","side","setFromSpherical","lookAt","targetPoint","label","Tag","create","setLength","constructor","ARROW_DIST_MIN","multiplyScalar","ARROW_DIST_MAX","atan2","setFromSphericalCoords","deg","callback","onClick","arrowSize","ARROW_SIZE","forPanorama","showByTime","getVisibilityByContext","onRay","setColor","selectedTag","hoverOn","hoverOff","updateOpacity","_ItemBaseObject","ShaderMaterial","userData","_get","_getPrototypeOf","prototype","ItemBaseObject","transition3d","gesture","removeItemObject","ItemCelestialSphereImageObject","setBrightness","addItemObject","domProps","threshold","pinch","enable","source","restoreVideoPlaying","ItemCelestialSphereVideoObject","createGeometry","createFisheyeGeometory","ItemFisheyeImageObject","uvScale","ItemFisheyeVideoObject","horizontal","imageBoxWidth","imageBoxHeight","imageWidth","imageHeight","offsetX","offsetY","speedX","speedY","autoSwing","imageStyle","transform","pointerEvents","diffWidth","minOffsetX","maxOffsetX","diffHeight","minOffsetY","maxOffsetY","onLoad","$refs","image","naturalWidth","naturalHeight","$nextTick","updateSize","animate","updateOffset","requestAnimationFrame","bind","clientWidth","clientHeight","onPanStart","onPan","velocityX","velocityY","onCopy","addEventListener","ref","StereoEffect","renderer","_stereo","StereoCamera","Vector2","setEyeSeparation","eyeSep","render","scene","updateMatrixWorld","update","getSize","autoClear","clear","setScissorTest","setScissor","setViewport","cameraL","cameraR","RING_IN_RADIUS","RING_OUT_RADIUS","RING_T_SEG","RING_P_SEG","targetEye","createTargeEye","selectBar","createSelectBar","children","geometry1","setFromPoints","line1","geometry2","line2","pt","setPositionSelectBar","airtagSprite","normalize","count","rate","rotateY","rotateX","quat","setRotationFromQuaternion","remove","vrObject","VrObject","order","antialias","canvas","domElement","effect","controlObject","DeviceOrientationControls","resetDeviceOrientation","updateFov","updateCameraRotation","deep","_this$panoramaSize","panoramaSize","setPixelRatio","devicePixelRatio","updateProjectionMatrix","panoramaFov","lookAtCamera","quaternion","selectd","setFromCamera","isDetect","setPositionSelectBarWithArrow","countSelectBar","setPositionSelectBarWithAirtag","disconnect","connect","setVisible","updateVrMode","updateNonVrMode","detectIntersection","rotationSpeedX","rotationSpeedY","factor","cy","normalizeDegree180","setParent","_this$panoramaSize2","vector","ItemImage","ItemVideo","ItemCelestialSphereImage","ItemCelestialSphereVideo","ItemFisheyeImage","ItemFisheyeVideo","ItemSwingImage","ItemEmpty","ThreeContext","itemComponent","enableCssFilter","_t","scrollWidth","scrollLeft","maxScrollLeft","isLeftScrollable","isRightScrollable","updateWidth","onScroll","page","newScrollLeft","activated","deactivated","Scrollable","thumbnailBorderColor","thumbnal","onScrollLeft","scrollable","onScrollRight","thumbnail","class","borderColor","staticStyle","SvgColoredIcon","iconStyle","backgroundColor","disabled","icon","ButtonIcon","imageQualityModal","ExternalLink","isTopWindow","fullscreenEnabled","parentExists","toggleFullscreen","document","onFullscreenChange","toggleMaximize","startVrMode","URL","searchParams","open","startGyroMode","locationHashParser","params","hash","substring","split","_p$split2","k","top","fullscreenEnable","$parent","oldValue","trackLength","thumbStyle","vertical","left","updateValue","track","delta","Slider","fovValue","bottom","model","$$v","currentPosition","originalWidth","originalHeight","zoomScale","panOffset","normalization","longSide","imageX","imageY","raderShape","pointX","pointY","dir","createRaderShape","updateImageSize","handler","InOut","getImage","Image","onload","onerror","cx","x1","cos","y1","sin","dx","dy","onWheel","showWalkThrough","zoom","viewFocalCurrentPointX","viewFocalCurrentPointY","imageFocalCurrentPointX","imageFocalCurrentPointY","panTo","restrictPan","xGap","yGap","pointById","drawLine","MapSvg","mapSvg","onZoom","MapSmall","MapLarge","small","videoVolumeValue","VideoVolumeSlider","videoVolumeSlideActive","touch","lastActiveTime","Date","getTime","checkDeactive","toggleMute","mute","unmute","mouseOverVolume","mouseLeaveVolume","intervalId","setInterval","clearInterval","speeds","selectMenuItem","currentTarget","stopPropagation","LEVELS","showImageQualityModal","toggleHlsAutomaticVideoLevel","changeLevel","_q","dummyImage","prevPosX","prevPosY","transX","transY","isPinchEnd","infoImgStyle","maxWidth","maxHeight","loadedImage","loadFailed","setScale","updateImageTransform","maxTransX","maxTransY","onPanEnd","onPinchStart","currentImgWidth","onPinch","srcEvent","onPinchEnd","__name","setup","__props","toRefs","videoId","getVideoId","iv_load_policy","autoplay","disablekb","showinfo","modestbranding","loop","playlist","qs","__sfc","_setupProxy","AirtagMovie","AirtagImage","imgElem","isActive","imgMinWidth","imgMinHeight","btnCloseX","btnCloseY","isImageLoaded","airtagInformationText","replaceUrlToLink","updateBtnCloseLocate","modalElemRect","modal","getBoundingClientRect","right","onClose","onImageLoaded","imageLoadFinished","onImageloadFailed","replace","match","touches","slot","showModal","overlayModalData","overlay_modal","content","external_url","external_label","Telop","ExcuseText","PointThumbnails","ItemThumbnails","TitleBar","BottomBar","PanoramaZoom","MapView","VideoControls","VideoSpeedMenu","MoreMenu","InfoModal","ImageQualityModal","AirtagInformation","OverlayMessageModal","defaultOverlayButtonTop","overlayButtonTop","telopHeight","mapViewStyle","panoramaHeaderStyle","showOverlayModal","excuseTextStyle","hideControls","isMenu","timeId","vrMenuStyle","fullscreenElement","exitFullscreen","requestFullscreen","toggoleMenu","CustomEvent","removeEventListener","VueFakeInput","passcode","inputColor","check","bcrypt","hashed","result","Loading","ErrorMessage","ItemView","UiFull","UiMinimal","UiVr","Passcode","waitPasscode","motionPermitted","showControls","hasDeviceMotionOptInFeature","viewMode","uiComponent","requestMotionPermission","onResize","onDeviceOrientaion","alpha","beta","gamma","checkPasscode","passcodeError","compare","passCodeHash","showPanorama","pathPanorama","uri","atbb_helper","contexts","modernizr","webgl","AtbbHelper","atbbUserId","isAccesible","isSecondaryAd","_m","config","devtools","process","env","RAILS_ENV","use","VueAddEventListener","VueHammer","Vuex","strict","registerModule","contexts_module","panorama_module","createLogger","DocumentReady","gon","panoramaParams","boolean","fullscreen_enable","vreffect_enable","gyro_rotation_enable","eye_control_enable","menu_open","item_thumbs_open","draw_line","draw_radar","draw_walkthrough","auto_rotation","video_repeat","q","image_quality","image_quality_modal","hide_controls","hide_annotation","vr_mode","view_mode","path_panorama","atbb_user_id","pass_code_hash","video_playback_automatically","classList","h","RootComponent","convertPoints","temporary_position_count","floor","convertItem","viewPosition","sight_direction","sight_updown","normalizeDegree","convertLines","point1Id","point1_id","point2Id","point2_id","randomFallback","random","len","module","self","Uint32Array","Array","slice","Error","safeStringCompare","known","unknown","wrong","charCodeAt","setRandomFallback","random2","genSaltSync","rounds","seed_length","GENSALT_DEFAULT_LOG2_ROUNDS","_typeof","salt","toString","base64_encode","BCRYPT_SALT_LEN","genSalt","_async","callback2","nextTick","res","hashSync","s","_hash","progressCallback","salt2","compareSync","substr","comp","getRounds","getSalt","setImmediate","BASE64_CODE","BASE64_INDEX","stringFromCharCode","String","fromCharCode","c1","c2","off","rs","base64_decode","c3","o","code","slen","olen","utfx2","utfx","dst","cp","c","fail","b2","indexOf","RangeError","UTF16toUTF8","encodeUTF8","decodeUTF8","UTF8toUTF16","l","calculateCodePoint","n","now","BLOWFISH_NUM_ROUNDS","MAX_EXECUTION_TIME","P_ORIG","S_ORIG","C_ORIG","_encipher","lr","P","S","_streamtoword","offp","word","_key","sw","offset","plen","_crypt","cdata","clen","j","ret","Int32Array","_ekskey","minor","charAt","str","out","real_salt","passwordb","encodeUTF16toUTF8","saltb","finish","bytes","err2","encodeBase64","decodeBase64","___CSS_LOADER_EXPORT___","Number","required","fontSize","fontColor","allowPaste","onlyNumber","inputValues","fkFontSize","fkWidth","handleKeydown","charCode","keyCode","generateInputId","fkInputColor","handleInputFocus","_slicedToArray","focus","handlePastedValues","pastedValue","clipboardData","getData","splitValues","canPaste","RegExp","test","updateInputValue","returnFullString","$set","component","input","refInFor","borderBottom","composing"],"sourceRoot":""}