{"version":3,"file":"js/application-29def22860c44bee147d.js","mappings":"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","sources":["webpack://gunma_pref_ja/./app/javascript/packs/application.js","webpack://gunma_pref_ja/./app/javascript/sprinkles/components/TopAreaMapApp/_Carousel.js","webpack://gunma_pref_ja/./app/javascript/sprinkles/components/TopAreaMapApp/_ImagemapArea.js","webpack://gunma_pref_ja/./app/javascript/sprinkles/components/TopAreaMapApp/_PartialImage.js","webpack://gunma_pref_ja/./app/javascript/sprinkles/components/TopAreaMapApp/_ImagemapResizer.js","webpack://gunma_pref_ja/./app/javascript/sprinkles/components/TopAreaMapApp/TopAreaMapApp.js","webpack://gunma_pref_ja/./app/javascript/sprinkles/top.js"],"sourcesContent":["// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n\nimport Rails from '@rails/ujs';\n// import * as ActiveStorage from '@rails/activestorage';\n// import '../channels';\nimport 'controllers';\n// import '../sprinkles';\nimport '../sprinkles/top';\nimport '../sprinkles/base';\n\nRails.start();\n// ActiveStorage.start();\n","import Swiper from 'swiper/bundle';\n\nclass Carousel {\n constructor({ app, elm, nextElm, prevElm }) {\n this.app = app;\n this.elm = elm;\n this.nextElm = nextElm;\n this.prevElm = prevElm;\n this.swiper = new Swiper(this.elm, {\n slidesPerView: 1,\n spaceBetween: 0,\n loop: false,\n navigation: {\n nextEl: this.nextElm,\n prevEl: this.prevElm,\n },\n });\n\n this.nextElm.addEventListener('click', () => {\n this.handleNavClick();\n });\n this.prevElm.addEventListener('click', () => {\n this.handleNavClick();\n });\n }\n\n handleNavClick() {\n const newAreaId = this.swiper.slides[this.swiper.activeIndex].dataset.areaId;\n this.app.state.areaId = newAreaId;\n this.app.render();\n }\n\n render() {\n Array.from(this.swiper.slides).forEach((slide, index) => {\n const isActiveSlide = slide.dataset.areaId === this.app.state.areaId;\n if (isActiveSlide) {\n this.swiper.slideTo(index);\n slide.classList.add(this.app.activeClassName);\n }\n if (!isActiveSlide) {\n slide.classList.remove(this.app.activeClassName);\n }\n });\n }\n}\n\nexport default Carousel;\n","class ImagemapArea {\n constructor({ elm, app, scrollLocationTarget, scrollLocationTargetOffset }) {\n this.elm = elm;\n this.app = app;\n this.scrollLocationTarget = scrollLocationTarget;\n this.scrollLocationTargetOffset = scrollLocationTargetOffset;\n this.id = this.elm.dataset.areaId;\n\n this.elm.addEventListener('click', (e) => {\n e.preventDefault();\n this.app.state.areaId = this.id;\n this.app.render();\n\n if (this.app.state.isSpLayout) {\n const { x, y } = this.scrollLocationTarget.getBoundingClientRect();\n scrollBy(x, y + this.scrollLocationTargetOffset);\n }\n return false;\n });\n }\n\n render() {\n const isActiveArea = this.app.state.areaId === this.id;\n if (isActiveArea) this.elm.classList.add(this.app.activeClassName);\n if (!isActiveArea) this.elm.classList.remove(this.app.activeClassName);\n }\n}\n\nexport default ImagemapArea;\n","class PartialImage {\n constructor({ elm, app }) {\n this.elm = elm;\n this.app = app;\n this.id = this.elm.dataset.areaId;\n }\n\n render() {\n const isActiveImage = this.app.state.areaId === this.id;\n if (isActiveImage) {\n this.elm.style.opacity = 1;\n this.elm.classList.add(this.app.activeClassName);\n }\n if (!isActiveImage) {\n this.elm.style.opacity = 0;\n this.elm.classList.remove(this.app.activeClassName);\n }\n }\n}\n\nexport default PartialImage;\n","// windowのリサイズ時に適切なイメージマップの座標を計算するスクリプト\n\nclass ImagemapResizer {\n constructor({ imageMapElm, baseImageElm }) {\n this.map = imageMapElm;\n this.baseImg = baseImageElm;\n this.originW = Number(this.map.dataset.originW);\n this.originH = Number(this.map.dataset.originH);\n this.areas = this.map.querySelectorAll('area');\n\n this.areaCoordsArrs = [];\n this.areas.forEach((area) => {\n const coords = area.coords\n .replace(/ /g, '')\n .split(',')\n .map((n) => Number(n));\n this.areaCoordsArrs.push(coords);\n });\n\n this.init();\n }\n\n init() {\n // 初回レンダリング\n this.baseImg.onload = () => {\n this.render();\n };\n }\n\n render() {\n const w = this.baseImg.getBoundingClientRect().width;\n const h = this.baseImg.getBoundingClientRect().height;\n const ratioW = w / this.originW;\n const ratioH = h / this.originH;\n\n this.areas.forEach((area, index) => {\n const areaNode = area;\n areaNode.coords = this.areaCoordsArrs[index]\n .map((n, i) => {\n if (i % 2 === 0) return Math.floor(n * ratioW);\n return Math.floor(n * ratioH);\n })\n .toString();\n });\n }\n}\n\nexport default ImagemapResizer;\n","// TopAreaMapApp\n//\n// トップページにあるエリアイラスト & カードカルーセルのパーツ\n\nimport Carousel from './_Carousel';\nimport ImagemapArea from './_ImagemapArea';\nimport PartialImage from './_PartialImage';\nimport ImagemapResizer from './_ImagemapResizer';\n\nexport default class TopAreaMapApp {\n defaultProps = {\n appElm: document.querySelector('[data-role=\"top-areamap-app\"]'),\n areaId: null,\n isSpLayout: null,\n bp: 576, // Default Bootstrap Small Size\n activeClassName: 'is-active',\n };\n\n constructor(props = {}) {\n // Prepare\n\n // 必要なDOMが存在しない場合、スクリプトを実行させない\n this.appElm = props.appElm ?? this.defaultProps.appElm;\n this.swiperElm = this.appElm.querySelector('[data-role=\"top-areamap-app-swiper\"]');\n this.swiperNextNavElm = this.swiperElm.querySelector('[data-role=\"top-areamap-app-swiper-next\"]');\n this.swiperPrevNavElm = this.swiperElm.querySelector('[data-role=\"top-areamap-app-swiper-prev\"]');\n this.mapElm = this.appElm.querySelector('[data-role=\"top-areamap-app-map\"]');\n this.areaElms = this.mapElm.querySelectorAll('area');\n this.baseImageElm = this.appElm.querySelector('[data-role=\"top-areamap-app-base-map-img\"]');\n this.partialImageElms = this.appElm.querySelectorAll('[data-role=\"top-areamap-app-partial-img\"]');\n const isElmsExist =\n this.appElm &&\n this.swiperElm &&\n this.swiperNextNavElm &&\n this.swiperPrevNavElm &&\n this.mapElm &&\n this.areaElms &&\n this.baseImageElm &&\n this.partialImageElms;\n if (!isElmsExist) throw new Error('[Top Area Map App : Error] 必要なDOM要素が足りません');\n\n // Setting\n\n this.app = this;\n this.activeClassName = props.activeClassName ?? this.defaultProps.activeClassName;\n this.bp = props.bp ?? this.defaultProps.bp;\n this.mapClickScrollTarget = props.mapClickScrollTarget ?? this.appElm;\n this.mapClickScrollTargetOffset = props.mapClickScrollTargetOffset ?? 0;\n\n this.app.state = {\n areaId: props.currentAreaId ?? this.defaultProps.areaId,\n };\n\n // Create sub instances\n\n this.carousel = new Carousel({\n app: this,\n elm: this.swiperElm,\n nextElm: this.swiperNextNavElm,\n prevElm: this.swiperPrevNavElm,\n });\n\n this.imagemapAreas = [];\n this.areaElms.forEach((elm) => {\n this.imagemapAreas.push(\n new ImagemapArea({\n app: this.app,\n elm,\n scrollLocationTarget: this.mapClickScrollTarget,\n scrollLocationTargetOffset: this.mapClickScrollTargetOffset,\n })\n );\n });\n\n this.partialImages = [];\n this.partialImageElms.forEach((elm) => {\n this.partialImages.push(new PartialImage({ app: this.app, elm }));\n });\n\n this.imagemapResizer = new ImagemapResizer({\n imageMapElm: this.mapElm,\n baseImageElm: this.baseImageElm,\n });\n\n // events\n\n window.addEventListener('resize', () => {\n this.state.isSpLayout = window.innerWidth < this.bp;\n this.imagemapResizer.render();\n });\n\n // initial\n\n this.init();\n this.imagemapResizer.init();\n }\n\n init() {\n // 1. アクティブなエリアが決まっていない場合は、最初のエリアをアクティブ扱いにする\n if (this.state.areaId === null) this.state.areaId = this.imagemapAreas[0].id;\n\n // 2. SPサイズのwindowかどうかを判定\n this.state.isSpLayout = window.innerWidth < this.bp;\n\n // 3. 全てのデザイン要素の状態アップデート\n this.render();\n }\n\n // 全てのサブインスタンスを更新\n render() {\n this.imagemapAreas.forEach((imagemapArea) => {\n imagemapArea.render();\n });\n\n this.partialImages.forEach((partialImage) => {\n partialImage.render();\n });\n\n this.carousel.render();\n }\n}\n","// eslint-disable-next-line import/no-extraneous-dependencies\nimport $ from 'jquery';\nimport Swiper from 'swiper/bundle';\n\nimport TopAreaMapApp from './components/TopAreaMapApp/TopAreaMapApp';\n\n$(() => {\n if ($('#user_recommend_spot').length) {\n $.ajax({\n url: '/user_recommend_spot',\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', $('meta[name=\"csrf-token\"]').attr('content'));\n },\n type: 'GET',\n timeout: 5000,\n });\n }\n});\n\n// MV swiper\nif (document.querySelector(\"[data-role='top-mv-swiper']\") !== null) {\n let topMvSwiper = new Swiper(\"[data-role='top-mv-swiper']\", {\n slidesPerView: 1,\n spaceBetween: 0,\n loop: true,\n effect: 'fade',\n fadeEffect: {\n crossFade: true,\n },\n autoplay: {\n delay: 5000,\n disableOnInteraction: false,\n },\n speed: 1500,\n pagination: {\n el: \"[data-role='top-mv-swiper-pagination']\",\n clickable: true,\n },\n });\n}\n\n// 特集swiper\nconst topFeatureSwipers = document.querySelectorAll('.top-feature-swiper-container');\ntopFeatureSwipers.forEach((elm) => {\n const slides = elm.querySelectorAll('.top-feature-swiper-slide');\n const slideCount = slides.length;\n const navigation = elm.parentNode.querySelector('.top-feature-swiper-navigation');\n\n // スマホでの最小スライド数\n const minSlideCountMobile = 2;\n // タブレット以上での最小スライド数\n const minSlideCountTablet = 5;\n\n if (\n (window.innerWidth < 768 && slideCount >= minSlideCountMobile) ||\n (window.innerWidth >= 768 && slideCount >= minSlideCountTablet)\n ) {\n new Swiper(elm, {\n slidesPerView: 1,\n loop: true,\n speed: 1000,\n breakpoints: {\n 768: {\n slidesPerView: 4,\n spaceBetween: 16,\n },\n },\n navigation: {\n nextEl: navigation.querySelector('.top-feature-swiper-btn--type_next'),\n prevEl: navigation.querySelector('.top-feature-swiper-btn--type_prev'),\n },\n });\n } else {\n // Swiperが発動されていない場合、ナビゲーションを非表示にする\n navigation.style.display = 'none';\n // Swiperが発動していない場合、custom-swiper-containerにnon-activeクラスを追加\n elm.classList.add('non-active');\n }\n});\n\n// 動画swiper\nif (document.querySelector(\"[data-role='top-movie-swiper']\") !== null) {\n let topMovieSwiper = new Swiper(\"[data-role='top-movie-swiper']\", {\n slidesPerView: 3,\n spaceBetween: 16,\n loop: true,\n speed: 500,\n navigation: {\n nextEl: \"[data-role='top-movie-swiper-next']\",\n prevEl: \"[data-role='top-movie-swiper-prev']\",\n },\n breakpoints: {\n 768: {\n slidesPerView: 4,\n spaceBetween: 24,\n },\n },\n });\n}\n\n// 季節のおすすめswiper\nconst topSeasonSwiperElms = document.querySelectorAll(\"[data-role='top-season-swiper']\");\nif (topSeasonSwiperElms.length) {\n topSeasonSwiperElms.forEach((elm) => {\n let topSeasonSwiper = new Swiper(elm, {\n slidesPerView: 1.4,\n spaceBetween: 16,\n loop: true,\n autoplay: {\n delay: 5000,\n disableOnInteraction: false,\n },\n speed: 1500,\n centeredSlides: true,\n navigation: {\n nextEl: elm.querySelector(\"[data-role='top-season-swiper-next']\"),\n prevEl: elm.querySelector(\"[data-role='top-season-swiper-prev']\"),\n },\n breakpoints: {\n 768: {\n slidesPerView: 2.5,\n spaceBetween: 24,\n centeredSlides: false,\n },\n },\n });\n });\n}\n\n// モデルコースswiper\nif (document.querySelector(\"[data-role='top-course-swiper']\") !== null) {\n let topFeatureSwiper = new Swiper(\"[data-role='top-course-swiper']\", {\n slidesPerView: 1.2,\n spaceBetween: 12,\n loop: true,\n centeredSlides: true,\n autoplay: {\n delay: 5000,\n disableOnInteraction: false,\n },\n speed: 1500,\n navigation: {\n nextEl: \"[data-role='top-course-swiper-next']\",\n prevEl: \"[data-role='top-course-swiper-prev']\",\n },\n breakpoints: {\n 576: {\n slidesPerView: 2,\n spaceBetween: 24,\n centeredSlides: false,\n },\n 768: {\n slidesPerView: 3,\n spaceBetween: 24,\n centeredSlides: false,\n },\n 1012: {\n slidesPerView: 4,\n spaceBetween: 24,\n centeredSlides: false,\n },\n },\n });\n}\n\n// モデルコースswiper\nif (document.querySelector(\"[data-role='top-more-swiper']\") !== null) {\n let topFeatureSwiper = new Swiper(\"[data-role='top-more-swiper']\", {\n slidesPerView: 1,\n spaceBetween: 12,\n loop: true,\n centeredSlides: true,\n autoplay: {\n delay: 5000,\n disableOnInteraction: false,\n },\n speed: 1500,\n navigation: {\n nextEl: \"[data-role='top-more-swiper-next']\",\n prevEl: \"[data-role='top-more-swiper-prev']\",\n },\n breakpoints: {\n 768: {\n slidesPerView: 3,\n spaceBetween: 24,\n },\n },\n });\n}\n\n// エリアマップ\nconst areaMapAppElm = document.querySelector('[data-role=\"top-areamap-app\"]');\nif (areaMapAppElm !== null) {\n // # 実行サンプル\n //\n // ## オプション一覧\n //\n // ※ 全て省略可能。デフォルト値は定義スクリプトを確認すること\n //\n // - appElm => 全体をラップするhtml要素\n // - areaId => 初期状態に選択状態にしたいエリアのID名\n // - bp => UIが1カラム縦積み(スマホレイアウト)になる分岐点\n // - activeClassName => 選択中の、areaタグ, エリア画像, swiperアイテムに自動で付加されるクラス名\n //\n // ## 全てのオプションを指定した例\n //\n // new TopAreaMapApp({\n // appElm: document.querySelector('.my-areamap-app'),\n // areaId: 'kenou',\n // bp: 999,\n // activeClassName: 'my-active-class',\n // });\n new TopAreaMapApp({\n appElm: areaMapAppElm,\n bp: 768,\n mapClickScrollTarget: document.querySelector('.top-ma-sp-slide-position'),\n mapClickScrollTargetOffset: -80,\n });\n}\n\nfunction LazyLoadSns(src) {\n const scriptTag = document.createElement('script');\n scriptTag.src = src;\n scriptTag.async = true;\n\n document.body.appendChild(scriptTag);\n}\n\nfunction snsLazyLoad() {\n const facebookEmbed = document.getElementsByClassName('share-btn-list__item--facebook');\n const twitterEmbed = document.getElementsByClassName('share-btn-list__item--twitter');\n const lineEmbed = document.getElementsByClassName('share-btn-list__item--line');\n try {\n if (facebookEmbed.length !== 0) LazyLoadSns('https://connect.facebook.net/ja_JP/sdk.js#xfbml=1&version=v17.0');\n if (twitterEmbed.length !== 0) LazyLoadSns('https://platform.twitter.com/widgets.js');\n if (lineEmbed.length !== 0) LazyLoadSns('https://www.line-website.com/social-plugins/js/thirdparty/loader.min.js');\n } catch (error) {\n console.log(error);\n }\n}\nwindow.addEventListener('scroll', snsLazyLoad, { once: true });\n\n// topページのmovieエリア\nif (document.querySelector('#topMovieModal') !== null) {\n // サムネイルクリック時のモーダル内動画src指定\n Array.prototype.slice.call(document.querySelectorAll('.top-youtube-thumbnail'), 0).forEach((node) => {\n node.addEventListener('click', () => {\n const { url } = node.dataset;\n document.getElementById('topYoutubeMovie').src = url;\n });\n });\n // モーダル閉じた時のモーダル内動画src空に\n $('#topMovieModal').on('hide.bs.modal', () => {\n document.querySelector('#topYoutubeMovie').src = '';\n });\n}\n"],"names":["Rails","start","constructor","app","elm","nextElm","prevElm","this","swiper","Swiper","slidesPerView","spaceBetween","loop","navigation","nextEl","prevEl","addEventListener","handleNavClick","newAreaId","slides","activeIndex","dataset","areaId","state","render","Array","from","forEach","slide","index","isActiveSlide","slideTo","classList","add","activeClassName","remove","scrollLocationTarget","scrollLocationTargetOffset","id","e","preventDefault","isSpLayout","x","y","getBoundingClientRect","scrollBy","isActiveArea","isActiveImage","style","opacity","imageMapElm","baseImageElm","map","baseImg","originW","Number","originH","areas","querySelectorAll","areaCoordsArrs","area","coords","replace","split","n","push","init","onload","w","width","h","height","ratioW","ratioH","i","Math","floor","toString","TopAreaMapApp","defaultProps","appElm","document","querySelector","bp","props","swiperElm","swiperNextNavElm","swiperPrevNavElm","mapElm","areaElms","partialImageElms","Error","mapClickScrollTarget","mapClickScrollTargetOffset","currentAreaId","carousel","Carousel","imagemapAreas","ImagemapArea","partialImages","PartialImage","imagemapResizer","ImagemapResizer","window","innerWidth","imagemapArea","partialImage","$","length","url","beforeSend","xhr","setRequestHeader","attr","type","timeout","effect","fadeEffect","crossFade","autoplay","delay","disableOnInteraction","speed","pagination","el","clickable","slideCount","parentNode","breakpoints","display","topSeasonSwiperElms","centeredSlides","areaMapAppElm","LazyLoadSns","src","scriptTag","createElement","async","body","appendChild","facebookEmbed","getElementsByClassName","twitterEmbed","lineEmbed","error","console","log","once","prototype","slice","call","node","getElementById","on"],"sourceRoot":""}