{"version":3,"file":"js/application-037e9e7359d5f3d66a9a.js","mappings":"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","sources":["webpack://kyoto_kankou/./app/javascript/controllers/japan_concierge/ sync _controller\\.js$","webpack://kyoto_kankou/./app/javascript/controllers/ sync _controller\\.js$","webpack://kyoto_kankou/./app/javascript/controllers/japan_concierge/iframe_auth.js","webpack://kyoto_kankou/./app/javascript/controllers/japan_concierge/index.js","webpack://kyoto_kankou/./app/javascript/controllers/index.js","webpack://kyoto_kankou/./app/javascript/controllers/japan_concierge/auto_redirect_sns_controller.js","webpack://kyoto_kankou/./app/javascript/controllers/japan_concierge/export_mail_controller.js","webpack://kyoto_kankou/./app/javascript/controllers/japan_concierge/favorite_count_controller.js","webpack://kyoto_kankou/./app/javascript/controllers/japan_concierge/favorite_spot_button_controller.js","webpack://kyoto_kankou/./app/javascript/controllers/japan_concierge/iframe_token.js","webpack://kyoto_kankou/./app/javascript/controllers/japan_concierge/jorudan_publish_controller.js","webpack://kyoto_kankou/./app/javascript/controllers/japan_concierge/load_user_controller.js","webpack://kyoto_kankou/./app/javascript/controllers/japan_concierge/plan_spots_controller.js","webpack://kyoto_kankou/./app/javascript/sprinkles/area.js","webpack://kyoto_kankou/./app/javascript/sprinkles/search_form.js","webpack://kyoto_kankou/./app/javascript/sprinkles/course.js","webpack://kyoto_kankou/./app/javascript/sprinkles/feature.js","webpack://kyoto_kankou/./app/javascript/sprinkles/photo.js","webpack://kyoto_kankou/./app/javascript/sprinkles/side_contents.js","webpack://kyoto_kankou/./app/javascript/sprinkles/spot.js","webpack://kyoto_kankou/./app/javascript/sprinkles/searchForm.js","webpack://kyoto_kankou/./app/javascript/sprinkles/recommends.js","webpack://kyoto_kankou/./app/javascript/sprinkles/components/Gmap2PointLinkCreateUI/SelectBtn.js","webpack://kyoto_kankou/./app/javascript/sprinkles/components/Gmap2PointLinkCreateUI/SelectInput.js","webpack://kyoto_kankou/./app/javascript/sprinkles/components/Gmap2PointLinkCreateUI/SelectBundler.js","webpack://kyoto_kankou/./app/javascript/sprinkles/components/Gmap2PointLinkCreateUI/Submit.js","webpack://kyoto_kankou/./app/javascript/sprinkles/components/Gmap2PointLinkCreateUI/App.js","webpack://kyoto_kankou/./app/javascript/sprinkles/access.js","webpack://kyoto_kankou/./app/javascript/sprinkles/module/VideoModalFunctions.js","webpack://kyoto_kankou/./app/javascript/sprinkles/movie.js","webpack://kyoto_kankou/./app/javascript/sprinkles/tab.js","webpack://kyoto_kankou/./app/javascript/sprinkles/modelCourse.js","webpack://kyoto_kankou/./app/javascript/packs/application.js","webpack://kyoto_kankou/./app/javascript/sprinkles/booking.js","webpack://kyoto_kankou/./app/javascript/sprinkles/river.js"],"sourcesContent":["var map = {\n\t\"./auto_redirect_sns_controller.js\": 9427,\n\t\"./export_mail_controller.js\": 5973,\n\t\"./favorite_count_controller.js\": 3701,\n\t\"./favorite_spot_button_controller.js\": 4226,\n\t\"./jorudan_publish_controller.js\": 9549,\n\t\"./load_user_controller.js\": 7941,\n\t\"./plan_spots_controller.js\": 6318,\n\t\"controllers/japan_concierge/auto_redirect_sns_controller.js\": 9427,\n\t\"controllers/japan_concierge/export_mail_controller.js\": 5973,\n\t\"controllers/japan_concierge/favorite_count_controller.js\": 3701,\n\t\"controllers/japan_concierge/favorite_spot_button_controller.js\": 4226,\n\t\"controllers/japan_concierge/jorudan_publish_controller.js\": 9549,\n\t\"controllers/japan_concierge/load_user_controller.js\": 7941,\n\t\"controllers/japan_concierge/plan_spots_controller.js\": 6318\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 4811;","var map = {\n\t\"./japan_concierge/auto_redirect_sns_controller.js\": 9427,\n\t\"./japan_concierge/export_mail_controller.js\": 5973,\n\t\"./japan_concierge/favorite_count_controller.js\": 3701,\n\t\"./japan_concierge/favorite_spot_button_controller.js\": 4226,\n\t\"./japan_concierge/jorudan_publish_controller.js\": 9549,\n\t\"./japan_concierge/load_user_controller.js\": 7941,\n\t\"./japan_concierge/plan_spots_controller.js\": 6318,\n\t\"controllers/japan_concierge/auto_redirect_sns_controller.js\": 9427,\n\t\"controllers/japan_concierge/export_mail_controller.js\": 5973,\n\t\"controllers/japan_concierge/favorite_count_controller.js\": 3701,\n\t\"controllers/japan_concierge/favorite_spot_button_controller.js\": 4226,\n\t\"controllers/japan_concierge/jorudan_publish_controller.js\": 9549,\n\t\"controllers/japan_concierge/load_user_controller.js\": 7941,\n\t\"controllers/japan_concierge/plan_spots_controller.js\": 6318\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 7074;","import { getToken } from './iframe_token';\n\ndocument.addEventListener('ajax:beforeSend', ({ detail: [xhr] }) => {\n const token = getToken();\n\n if (token) {\n xhr.setRequestHeader('USER-TOKEN', token);\n }\n});\n\ndocument.addEventListener('turbolinks:request-start', ({ data: { xhr } }) => {\n const token = getToken();\n\n if (token) {\n xhr.setRequestHeader('USER-TOKEN', token);\n }\n});\n","import './iframe_auth';\nimport { definitionsFromContext } from '@hotwired/stimulus-webpack-helpers';\nimport planConfigureStore from '../../japan_concierge/active_plan/store';\nimport exportConfigureStore from '../../japan_concierge/export/store';\nimport { setClientHeight, setIframeTop } from '../../japan_concierge/slices/modalSlice';\n\n// eslint-disable-next-line no-undef\nconst context = require.context('controllers/japan_concierge', true, /_controller\\.js$/);\nexport default definitionsFromContext(context);\n\nwindow.iFrameResizer = {\n onMessage(message) {\n if (message.clientHeight) {\n planConfigureStore.dispatch(setClientHeight(message.clientHeight));\n exportConfigureStore.dispatch(setClientHeight(message.clientHeight));\n }\n if (message.iframeRect) {\n planConfigureStore.dispatch(setIframeTop(message.iframeRect));\n exportConfigureStore.dispatch(setIframeTop(message.iframeRect));\n }\n },\n};\n","// Load all the controllers within this directory and all subdirectories.\n// Controller files must be named *_controller.js.\n\nimport { Application } from '@hotwired/stimulus';\nimport { definitionsFromContext } from '@hotwired/stimulus-webpack-helpers';\nimport controllers from './japan_concierge';\nimport planConfigureStore from '../japan_concierge/active_plan/store';\n\nconst application = Application.start();\nconst context = require.context('controllers', true, /_controller\\.js$/);\napplication.planStore = planConfigureStore;\napplication.load(definitionsFromContext(context));\napplication.load(controllers);\n","import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n static targets = ['submitButton'];\n\n connect() {\n // 自動的にSNSログイン画面へ遷移させる為にformボタンのclickイベントを発火させる\n this.submitButtonTarget.click();\n }\n}\n","import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n static targets = ['message'];\n\n message(event) {\n const [message] = event.detail;\n\n this.messageTarget.innerHTML = message;\n }\n}\n","import { Controller } from '@hotwired/stimulus';\nimport Rails from '@rails/ujs';\n\nconst UPDATE_EVENT = 'favorite-spot-updated';\nconst REQUEST_EVENT = 'favorite-spot-requested';\nexport const RECEIVE_EVENT = 'all-favorite-spots';\n\nexport function sendFavoriteSpotUpdated() {\n const event = new CustomEvent(UPDATE_EVENT);\n document.dispatchEvent(event);\n}\n\nexport function requestFavoriteSpots() {\n const event = new CustomEvent(REQUEST_EVENT);\n document.dispatchEvent(event);\n}\n\nexport default class extends Controller {\n connect() {\n this.getAll();\n document.addEventListener(UPDATE_EVENT, this.getAll, false);\n document.addEventListener(REQUEST_EVENT, this.sendAll, false);\n }\n\n disconnect() {\n document.removeEventListener(UPDATE_EVENT, this.getAll, false);\n document.removeEventListener(REQUEST_EVENT, this.sendAll, false);\n }\n\n getAll = () => {\n Rails.ajax({\n url: this.path,\n type: 'GET',\n beforeSend: (xhr, options) => {\n // Set user token for iframe case.\n Rails.fire(this.element, 'ajax:beforeSend', [xhr, options]);\n return true;\n },\n success: (ids) => {\n this.ids = ids;\n this.element.innerHTML = ids.length;\n this.sendAll();\n },\n });\n };\n\n sendAll = () => {\n const event = new CustomEvent(RECEIVE_EVENT, { detail: this.ids || [] });\n document.dispatchEvent(event);\n };\n\n get path() {\n return this.data.get('path');\n }\n}\n","import { Controller } from '@hotwired/stimulus';\nimport { requestFavoriteSpots, sendFavoriteSpotUpdated, RECEIVE_EVENT } from './favorite_count_controller';\n\nexport default class extends Controller {\n static targets = ['add', 'remove'];\n\n connect() {\n document.addEventListener(RECEIVE_EVENT, this.setState, false);\n requestFavoriteSpots();\n }\n\n disconnect() {\n document.removeEventListener(RECEIVE_EVENT, this.setState, false);\n }\n\n setState = ({ detail: ids }) => {\n if (ids.includes(this.id)) {\n this.addTarget.classList.add('d-none');\n this.removeTarget.classList.remove('d-none');\n } else {\n this.addTarget.classList.remove('d-none');\n this.removeTarget.classList.add('d-none');\n }\n };\n\n added() {\n this.addTarget.classList.add('d-none');\n this.removeTarget.classList.remove('d-none');\n sendFavoriteSpotUpdated();\n }\n\n removed() {\n this.addTarget.classList.remove('d-none');\n this.removeTarget.classList.add('d-none');\n sendFavoriteSpotUpdated();\n }\n\n get id() {\n return parseInt(this.data.get('id'), 10);\n }\n}\n","const TOKEN_IDENTIFIER = 'iframe-user-token';\n\nexport function getToken() {\n return localStorage.getItem(TOKEN_IDENTIFIER);\n}\n\nexport function setToken(token) {\n localStorage.setItem(TOKEN_IDENTIFIER, token);\n}\n","import { Controller } from '@hotwired/stimulus';\n\n// Jorudan VisitのTrip Blender連携が有効な場合にのみエクスポートページに表示されるボタン押下時に、\n// エクスポートプランをTrip Blenderのモデルコースとして公開するための情報を親フレームに送信する。\n\nexport default class extends Controller {\n static targets = ['courseInfo'];\n\n click() {\n this.postCourseInfoMessageToJorudan();\n }\n\n postCourseInfoMessageToJorudan() {\n // eslint-disable-next-line no-undef\n const receiverOrigin = process.env.JORUDAN_POST_MESSAGE_HOST || '*';\n window.parent.postMessage(\n {\n action: 'PostCourse',\n message: this.courseInfo,\n },\n receiverOrigin\n );\n }\n\n get courseInfo() {\n return this.courseInfoTarget.value;\n }\n}\n","import { Controller } from '@hotwired/stimulus';\nimport { setToken } from './iframe_token';\n\nexport default class extends Controller {\n connect() {\n window.addEventListener('message', this.tokenEvent, false);\n }\n\n disconnect() {\n window.removeEventListener('message', this.tokenEvent, false);\n }\n\n tokenEvent = (event) => {\n if (event.data.type === 'userToken') {\n setToken(event.data.token);\n window.Turbolinks.clearCache();\n window.Turbolinks.visit(this.loadUrl, { action: 'replace' });\n }\n };\n\n get loadUrl() {\n return this.data.get('url');\n }\n}\n","import { Controller } from '@hotwired/stimulus';\nimport { Sortable } from 'sortablejs';\nimport { sortToApi } from '../../japan_concierge/slices/planSpotSlice';\nimport { deleteTransit } from '../../japan_concierge/slices/transitSlice';\n\nexport default class extends Controller {\n connect() {\n Sortable.create(this.element, {\n handle: '.sort-handle',\n onEnd: ({ newIndex, oldIndex }) => {\n if (newIndex !== oldIndex) {\n // react+reduxへ処理を委託\n const planSpotIds = this.application.planStore.getState().planSpot.ids;\n const planSpotEntities = this.application.planStore.getState().planSpot.entities;\n const swapSourcePlanSpot = planSpotEntities[planSpotIds[oldIndex]];\n const swapTargetPlanSpot = planSpotEntities[planSpotIds[newIndex]];\n\n // planSpotが更新された場合、再レンダリングが走り、非同期で移動情報取得が行われるため正しいデータを削除してしまう可能性がある\n // 移動したplanSpotの移動情報を削除し、再取得する\n this.application.planStore.dispatch(deleteTransit(swapSourcePlanSpot.id));\n this.application.planStore.dispatch(deleteTransit(swapTargetPlanSpot.id));\n\n this.application.planStore.dispatch(sortToApi({ id: swapSourcePlanSpot.id, position: newIndex }));\n }\n },\n });\n }\n}\n","// eslint-disable-next-line import/no-extraneous-dependencies\nimport $ from 'jquery';\nimport Swiper from 'swiper/bundle';\nimport { swiperOptions } from './module/SwiperFunctions';\n\nconst areaButtonEelements = document.querySelectorAll('[name=\"area\"]');\nif (areaButtonEelements.length) {\n areaButtonEelements.forEach((element) => {\n element.addEventListener('click', (event) => {\n if (document.getElementById('area_modal').children.length > 0) {\n document.getElementById('area_modal').children[0].remove();\n }\n\n $.ajax({\n url: `/areas/${event.target.dataset.areaId}/detail`,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', $('meta[name=\"csrf-token\"]').attr('content'));\n },\n type: 'GET',\n timeout: 3000,\n });\n });\n });\n}\n\n// show area\n\ndocument.addEventListener('DOMContentLoaded', function () {\n const buttons = document.querySelectorAll('.u-simpleToggleButton');\n const displayArea = document.getElementById('area-event-contents-display');\n\n const showEventContent = (eventType) => {\n const templateContent = document.getElementById(`${eventType}Events`).content;\n displayArea.innerHTML = ''; // コンテンツエリアをクリア\n displayArea.appendChild(templateContent.cloneNode(true)); // テンプレートの内容をコピーして追加\n };\n\n const toggleActiveClass = (button) => {\n buttons.forEach((btn) => btn.classList.remove('u-simpleToggleButton--active'));\n button.classList.add('u-simpleToggleButton--active');\n };\n\n const setupButtonClickEvents = () => {\n buttons.forEach((button) => {\n button.addEventListener('click', function () {\n const eventType = this.getAttribute('data-event');\n showEventContent(eventType);\n toggleActiveClass(this);\n });\n });\n };\n\n const setupInitialDisplay = () => {\n if (buttons.length > 0) {\n const initialButton = buttons[0];\n const initialEventType = initialButton.getAttribute('data-event');\n showEventContent(initialEventType);\n toggleActiveClass(initialButton);\n }\n };\n\n setupButtonClickEvents();\n setupInitialDisplay();\n\n // supplement swiper\n\n new Swiper(\n '.showArea__supplementSwiper',\n swiperOptions({\n slidesPerView: 1,\n spaceBetween: 16,\n centeredSlides: true,\n navigation: {\n nextEl: '.showArea__supplementSwiper .u-articleSwiperButton--next',\n prevEl: '.showArea__supplementSwiper .u-articleSwiperButton--prev',\n },\n breakpoints: {\n 768: {\n slidesPerView: 1,\n },\n },\n pagination: {\n el: '.showArea__supplementSwiperPagination',\n bulletClass: 'showArea__supplementSwiperPaginationBullet',\n bulletActiveClass: 'showArea__supplementSwiperPaginationBullet--active',\n clickable: true,\n },\n })\n );\n\n new Swiper(\n '.showArea__supplementSpotSwiper',\n swiperOptions({\n spaceBetween: 20,\n slidesPerView: 'auto',\n breakpoints: {\n 768: {\n spaceBetween: 32,\n },\n },\n navigation: {\n nextEl: '.showArticle__connectionSpotSwiperButtonNext--gourmet',\n prevEl: '.showArticle__connectionSpotSwiperButtonPrev--gourmet',\n },\n })\n );\n\n const areaButtons = document.querySelectorAll('.showArea__featuresAreaButton');\n const areaModal = document.getElementById('area_modal');\n if(areaButtons.length) {\n areaButtons.forEach((button) => {\n button.addEventListener('click', () => {\n areaModal.classList.toggle('active');\n });\n });\n }\n\n if(areaModal) {\n areaModal.addEventListener('click', (e) => {\n if (e.target.classList[0] === 'areaModal') {\n areaModal.classList.toggle('active');\n }\n });\n }\n\n if(areaModal) {\n const callback = () => {\n const areaModalCloseButton = document.querySelector('.areaModal__closeButton');\n if (areaModalCloseButton) {\n areaModalCloseButton.addEventListener('click', () => {\n areaModal.classList.remove('active');\n });\n }\n };\n \n const observer = new MutationObserver(callback);\n \n const config = {\n attributes: true, // 属性の変更を監視\n childList: true, // 子要素の追加または削除を監視\n subtree: true, // 子孫要素も監視対象に含む\n };\n \n observer.observe(areaModal, config);\n }\n\n});\n","// eslint-disable-next-line import/no-extraneous-dependencies\nimport $ from 'jquery';\n\nfunction switchTagAllCheckbox() {\n // 全てのチェックを外す\n $('input[name=\"tag_id[all]\"]').prop('checked', false);\n // 全て手動でチェックされた場合、チェックボックスの「全て」にチェックをつける\n if ($('input[name=\"q[tags_id_in][]\"]:checked').length === $('input[name=\"q[tags_id_in][]\"]').length - 1) {\n $('input[name=\"tag_id[all]\"]').prop('checked', true);\n }\n\n if ($('input[name=\"parent_tag[]\"]').length) {\n if ($('input[name=\"parent_tag[]\"]:checked').length === $('input[name=\"parent_tag[]\"]').length) {\n $('input[name=\"tag_id[all]\"]').prop('checked', true);\n }\n }\n}\n\n$(() => {\n if ($('#tag_id_all')) {\n // イベント、ニュースのカテゴリー全て選択時、カテゴリーの状態も変更する\n // 来年度制作分の特集、モデルコースもここに含まれる予定\n $('input[name=\"tag_id[all]\"]').click((e) => {\n $('input[name=\"q[tags_id_in][]\"]').prop('checked', e.target.checked);\n $('input[name=\"parent_tag[]\"').prop('checked', e.target.checked);\n });\n\n // カテゴリー選択の場合、全ての選択状態を設定/解除を行う\n $('input[name=\"q[tags_id_in][]\"]').click(() => {\n switchTagAllCheckbox();\n });\n\n // イベントの場合、カテゴリー大分類が画面に表示されているが、イベントとカテゴリー(大分類)は紐付けを行なっていない為、\n // カテゴリー(小分類)をdisplay: noneにて非表示にしている。表示しているカテゴリー(大分類)をクリックした際に、紐づくカテゴリー(小分類)\n // をchecked: trueに設定することでカテゴリー(大分類)を検索しているようにしている。検索に利用しているのはあくまでカテゴリー(小分類)\n if ($('input[name=\"parent_tag[]\"]').length) {\n $('input[name=\"parent_tag[]\"]').on('click', (e) => {\n $(`.tag_${e.target.value}`).prop('checked', e.target.checked);\n switchTagAllCheckbox();\n });\n }\n }\n});\n","// eslint-disable-next-line import/no-extraneous-dependencies\nimport $ from 'jquery';\n\n$(() => {\n // 各エリアのチェックボックスが選択された場合、全てのチェックをOff、\n // または全て手動でチェックされた場合は「全て」のチェックボックをOnにする\n function switchAreaAllCheckbox() {\n // 全てのチェックを外す\n $('input[name=\"course_area_id[all]\"]').prop('checked', false);\n // 全て手動でチェックされた場合、チェックボックスの「全て」にチェックをつける\n if ($('input[name=\"q[areas_id_in][]\"]:checked').length === $('input[name=\"q[areas_id_in][]\"]').length - 1) {\n $('input[name=\"course_area_id[all]\"]').prop('checked', true);\n }\n }\n\n function switchTagAllCheckbox() {\n // 全てのチェックを外す\n $('input[name=\"course_tag_id[all]\"]').prop('checked', false);\n // 全て手動でチェックされた場合、チェックボックスの「全て」にチェックをつける\n if ($('input[name=\"q[tags_id_in][]\"]:checked').length === $('input[name=\"q[tags_id_in][]\"]').length - 1) {\n $('input[name=\"course_tag_id[all]\"]').prop('checked', true);\n }\n }\n\n if ($('#course_search').length) {\n // エリア全て選択時、エリアの状態も変更する\n $('input[name=\"course_area_id[all]\"]').click((e) => {\n $('input[name=\"q[areas_id_in][]\"]').prop('checked', e.target.checked);\n });\n\n // エリア選択の場合、全ての選択状態を設定/解除を行う\n $('input[name=\"q[areas_id_in][]\"]').click(() => {\n switchAreaAllCheckbox();\n });\n\n // カテゴリー全て選択時、カテゴリーの状態も変更する\n $('input[name=\"course_tag_id[all]\"]').click((e) => {\n $('input[name=\"q[tags_id_in][]\"]').prop('checked', e.target.checked);\n });\n\n // カテゴリー選択の場合、全ての選択状態を設定/解除を行う\n $('input[name=\"q[tags_id_in][]\"]').click(() => {\n switchTagAllCheckbox();\n });\n }\n});\n","// eslint-disable-next-line import/no-extraneous-dependencies\nimport $ from 'jquery';\nimport Swiper from 'swiper/bundle';\nimport { swiperOptions, initResponsiveSwiper } from './module/SwiperFunctions';\n\n$(() => {\n // 各エリアのチェックボックスが選択された場合、全てのチェックをOff、\n // または全て手動でチェックされた場合は「全て」のチェックボックをOnにする\n function switchAreaAllCheckbox() {\n // 全てのチェックを外す\n $('input[name=\"feature_area_id[all]\"]').prop('checked', false);\n // 全て手動でチェックされた場合、チェックボックスの「全て」にチェックをつける\n if ($('input[name=\"q[areas_id_in][]\"]:checked').length === $('input[name=\"q[areas_id_in][]\"]').length - 1) {\n $('input[name=\"feature_area_id[all]\"]').prop('checked', true);\n }\n }\n\n function switchTagAllCheckbox() {\n // 全てのチェックを外す\n $('input[name=\"feature_tag_id[all]\"]').prop('checked', false);\n // 全て手動でチェックされた場合、チェックボックスの「全て」にチェックをつける\n if ($('input[name=\"q[tags_id_in][]\"]:checked').length === $('input[name=\"q[tags_id_in][]\"]').length - 1) {\n $('input[name=\"feature_tag_id[all]\"]').prop('checked', true);\n }\n }\n\n if ($('#feature_search').length) {\n // エリア全て選択時、エリアの状態も変更する\n $('input[name=\"feature_area_id[all]\"]').click((e) => {\n $('input[name=\"q[areas_id_in][]\"]').prop('checked', e.target.checked);\n });\n\n // エリア選択の場合、全ての選択状態を設定/解除を行う\n $('input[name=\"q[areas_id_in][]\"]').click(() => {\n switchAreaAllCheckbox();\n });\n\n // カテゴリー全て選択時、カテゴリーの状態も変更する\n $('input[name=\"feature_tag_id[all]\"]').click((e) => {\n $('input[name=\"q[tags_id_in][]\"]').prop('checked', e.target.checked);\n });\n\n // カテゴリー選択の場合、全ての選択状態を設定/解除を行う\n $('input[name=\"q[tags_id_in][]\"]').click(() => {\n switchTagAllCheckbox();\n });\n }\n\n // /features/[:id]\n const initializeAllThemeSwipers = (swiperDataRole, paginationDataRole) => {\n const swiperElements = document.querySelectorAll(`[data-role=\"${swiperDataRole}\"]`);\n const paginationElements = document.querySelectorAll(`[data-role=\"${paginationDataRole}\"]`);\n\n swiperElements.forEach((swiperElement, index) => {\n const paginationElement = paginationElements[index];\n if (!swiperElement || !paginationElement) return;\n\n new Swiper(\n swiperElement,\n swiperOptions({\n slidesPerView: 1,\n pagination: {\n el: paginationElement,\n clickable: true,\n },\n })\n );\n });\n };\n\n // feature/:idのmv\n if (document.querySelector('[data-role=\"show-feature-swiper\"]')) {\n new Swiper(\n '[data-role=\"show-feature-swiper\"]',\n swiperOptions({\n slidesPerView: 1,\n spaceBetween: 16,\n centeredSlides: true,\n navigation: {\n nextEl: '.showArticle__mainViewSwiperContainer .u-articleSwiperButton--next',\n prevEl: '.showArticle__mainViewSwiperContainer .u-articleSwiperButton--prev',\n },\n pagination: {\n el: '.showArticle__mainViewPagination',\n bulletClass: 'showArticle__swiperPaginationBullet',\n bulletActiveClass: 'showArticle__swiperPaginationBullet--active',\n clickable: true,\n },\n })\n );\n }\n\n // すべてのSwipersを初期化する\n initializeAllThemeSwipers('single-post-swiper', 'single-post-swiper-pagination');\n // initializeAllThemeSwipers('single-theme-swiper', 'single-theme-swiper-pagination');\n\n // 関連スポットのsp用スライダー\n const relatedArticleSwiperElement = document.querySelectorAll('[data-role=\"related-article-swiper\"]');\n\n if (relatedArticleSwiperElement.length > 0) {\n relatedArticleSwiperElement.forEach((swiperElement) => {\n const options = swiperOptions({\n slidesPerView: 1,\n navigation: {\n nextEl: '.u-swiperButton--next',\n prevEl: '.u-swiperButton--prev',\n },\n breakpoints: {\n 424: {\n slidesPerView: 2,\n spaceBetween: 32,\n },\n },\n });\n\n initResponsiveSwiper(swiperElement, options);\n });\n }\n});\n","// eslint-disable-next-line import/no-extraneous-dependencies\nimport $ from 'jquery';\n\n$(() => {\n // リストに追加するを押下した場合\n if ($('button[name=\"photo_add_list\"]').length) {\n $('button[name=\"photo_add_list\"]').on('click', (e) => {\n const photoId = e.target.id.replace('add_list_', '');\n $(`#add_list_${photoId}`).addClass('d-none');\n $(`#remove_list_${photoId}`).removeClass('d-none');\n\n // 新規登録;\n $.ajax({\n url: `/hq/photo_dl_selections`,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', $('meta[name=\"csrf-token\"]').attr('content'));\n },\n type: 'POST',\n dataType: 'json',\n data: { photo_id: photoId },\n timeout: 3000,\n }).fail(function fail() {\n $(`#add_list_${photoId}`).removeClass('d-none');\n $(`#remove_list_${photoId}`).addClass('d-none');\n });\n });\n }\n\n // リストに追加済を押下した場合\n $('button[name=\"photo_remove_list\"]').on('click', (e) => {\n const photoId = e.target.id.replace('remove_list_', '');\n $(`#add_list_${photoId}`).removeClass('d-none');\n $(`#remove_list_${photoId}`).addClass('d-none');\n\n $.ajax({\n url: `/hq/photo_dl_selections/${photoId}`,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', $('meta[name=\"csrf-token\"]').attr('content'));\n },\n type: 'DELETE',\n dataType: 'json',\n timeout: 3000,\n }).fail(function fail() {\n $(`#add_list_${photoId}`).removeClass('d-none');\n $(`#remove_list_${photoId}`).addClass('d-none');\n });\n });\n\n function isActivationBulkDownload() {\n // 利用規約チェックボックス\n // On: ダウンロードボタンを活性化\n // Off: ダウンロードボタンを非活性\n return $('#photo_terms_of_use').prop('checked');\n }\n\n function setBulkDownloadDisabled() {\n $('#bulk_download').prop('disabled', !isActivationBulkDownload());\n }\n\n // 利用規約のチェックボックスを変更された場合\n $('#photo_terms_of_use').change(() => {\n setBulkDownloadDisabled();\n });\n});\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const photoModalDisplay = document.getElementById('photo-modal');\n\n if (photoModalDisplay) {\n const descriptionButtons = document.querySelectorAll('[data-photo-modal-button-id]');\n const modalContents = document.querySelectorAll('[data-photo-modal-content-id]');\n\n descriptionButtons.forEach((button) => {\n button.addEventListener('click', () => {\n const id = button.getAttribute('data-photo-modal-button-id');\n\n const targetModalTemplate = Array.from(modalContents).find((modal) => {\n return modal.getAttribute('data-photo-modal-content-id') === id;\n });\n\n const modalContent = targetModalTemplate.content;\n\n const clone = document.importNode(modalContent, true);\n\n photoModalDisplay.innerHTML = '';\n photoModalDisplay.appendChild(clone);\n\n photoModalDisplay.classList.add('active');\n\n const closeButton = photoModalDisplay.querySelector('[data-action=\"close\"]');\n if (closeButton) {\n closeButton.addEventListener('click', () => {\n photoModalDisplay.classList.remove('active');\n photoModalDisplay.innerHTML = '';\n });\n }\n });\n });\n }\n});\n","// eslint-disable-next-line import/no-extraneous-dependencies\nimport $ from 'jquery';\n\n$(() => {\n const sideContentRecommend = document.querySelector('.side-contents--recommend');\n if (sideContentRecommend) {\n $.ajax({\n url: `/recommends?type=user&id=side_content_item_recommend&data_type=${sideContentRecommend.dataset.type}`,\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 const sideContentAiRecommend = document.querySelector('.side-contents--ai');\n if (sideContentAiRecommend) {\n $.ajax({\n url: '/recommends?type=ai&id=side_content_ai_recommend',\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","// eslint-disable-next-line import/no-extraneous-dependencies\nimport $ from 'jquery';\nimport Swiper from 'swiper/bundle';\nimport { swiperOptions } from './module/SwiperFunctions';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n // spot/:idのmv\n if (document.querySelector('[data-role=\"show-article-swiper\"]')) {\n new Swiper(\n '[data-role=\"show-article-swiper\"]',\n swiperOptions({\n slidesPerView: 1,\n spaceBetween: 16,\n centeredSlides: true,\n navigation: {\n nextEl: '.showArticle__mainViewSwiper .u-articleSwiperButton--next',\n prevEl: '.showArticle__mainViewSwiper .u-articleSwiperButton--prev',\n },\n breakpoints: {\n 768: {\n slidesPerView: 1.7,\n },\n },\n pagination: {\n el: '.showArticle__mainViewPagination',\n bulletClass: 'showArticle__swiperPaginationBullet',\n bulletActiveClass: 'showArticle__swiperPaginationBullet--active',\n clickable: true,\n },\n })\n );\n }\n\n // spot/:idの関連記事のswiper\n // 共通のswiperオプション\n const connectionSpotSwiperOptions = {\n spaceBetween: 20,\n slidesPerView: 'auto',\n breakpoints: {\n 768: {\n spaceBetween: 32,\n },\n },\n };\n\n // 近くの観光スポット\n if (document.querySelector('.showArticle__connectionSpotSwiper--tourism')) {\n new Swiper(\n '.showArticle__connectionSpotSwiper--tourism',\n swiperOptions({\n navigation: {\n nextEl: '.showArticle__connectionSpotSwiperButtonNext--tourism',\n prevEl: '.showArticle__connectionSpotSwiperButtonPrev--tourism',\n },\n ...connectionSpotSwiperOptions,\n })\n );\n }\n\n // 近くのグルメスポット\n if (document.querySelector('.showArticle__connectionSpotSwiper--gourmet')) {\n new Swiper(\n '.showArticle__connectionSpotSwiper--gourmet',\n swiperOptions({\n navigation: {\n nextEl: '.showArticle__connectionSpotSwiperButtonNext--gourmet',\n prevEl: '.showArticle__connectionSpotSwiperButtonPrev--gourmet',\n },\n ...connectionSpotSwiperOptions,\n })\n );\n }\n\n // 近くの宿泊施設\n if (document.querySelector('.showArticle__connectionSpotSwiper--hotel')) {\n new Swiper(\n '.showArticle__connectionSpotSwiper--hotel',\n swiperOptions({\n navigation: {\n nextEl: '.showArticle__connectionSpotSwiperButtonNext--hotel',\n prevEl: '.showArticle__connectionSpotSwiperButtonPrev--hotel',\n },\n ...connectionSpotSwiperOptions,\n })\n );\n }\n\n if (document.querySelector('#one_page_print')) {\n document.querySelector('#one_page_print').addEventListener(\n 'click',\n () => {\n document.querySelector('#spot_image_print').style.display = 'none';\n document.querySelector('#spot_images').style.display = '';\n document.querySelectorAll('[name=\"spot_image_data\"]').forEach((el) => {\n el.style.breakAfter = 'page';\n });\n },\n { once: true }\n );\n\n document.querySelector('#multi_page_print').addEventListener(\n 'click',\n () => {\n document.querySelector('#spot_image_print').style.display = 'none';\n document.querySelector('#spot_images').style.display = '';\n document.querySelectorAll('[name=\"spot_image_data\"]').forEach((el) => {\n el.style.breakInside = 'avoid-page';\n });\n },\n { once: true }\n );\n }\n});\n\n$(() => {\n // 現在地取得成功時のみサーバに処理を送信する\n function successGetPosition(position) {\n const url = $('#sort_distance').attr('href');\n $('#sort_distance').attr('href', `${url}&lat=${position.coords.latitude}&lng=${position.coords.longitude}`);\n window.location.href = `${url}&lat=${position.coords.latitude}&lng=${position.coords.longitude}`;\n }\n\n function failGetPosition(error) {\n // eslint-disable-next-line default-case\n switch (error.code) {\n case error.PERMISSION_DENIED:\n // eslint-disable-next-line no-alert\n alert('位置情報の取得が許可されませんでした');\n break;\n case error.POSITION_UNAVAILABLE:\n // eslint-disable-next-line no-alert\n alert('電波状況などで位置情報が取得できませんでした');\n break;\n case error.TIMEOUT:\n // eslint-disable-next-line no-alert\n alert('位置情報の取得にてタイムアウトが発生しました');\n break;\n case error.UNKNOWN_ERROR:\n // eslint-disable-next-line no-alert\n alert('原因不明のエラーが発生しました');\n break;\n }\n }\n\n // 現在地に近いボタン押下時、現在地を取得する\n if ($('#sort_distance').length) {\n $('#sort_distance').click(() => {\n const options = {\n enableHighAccuracy: true,\n timeout: 5000,\n maximumAge: 0,\n };\n\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(successGetPosition, failGetPosition, options);\n } else {\n // eslint-disable-next-line no-alert\n alert('ご使用中のブラウザは現在地検索に対応されておりません');\n }\n return false;\n });\n }\n\n if ($('#spot_search').length) {\n $('input[name=\"parent_category_ids[]\"]').click((e) => {\n const parentElement = e.target.closest('div');\n parentElement.querySelectorAll('input[name=\"q[categories_id_in][]\"]').forEach((el) => {\n el.checked = e.target.checked;\n });\n });\n\n // タグ選択の場合、親の選択状態を設定/解除を行う\n $('input[name=\"q[categories_id_in][]\"]').click((e) => {\n const categoryId = e.target.dataset.categoryId;\n document.getElementById(`parent_category_id_${categoryId}`).checked = false;\n });\n\n $('input[name=\"category_ids[]\"]').click((e) => {\n const parentElement = e.target.closest('div');\n parentElement.querySelectorAll('input[name=\"q[sub_categories_id_in][]\"]').forEach((el) => {\n el.checked = e.target.checked;\n });\n });\n\n // タグ選択の場合、親の選択状態を設定/解除を行う\n $('input[name=\"q[sub_categories_id_in][]\"]').click((e) => {\n const categoryId = e.target.dataset.categoryId;\n document.getElementById(`category_id_${categoryId}`).checked = false;\n });\n }\n});\n","import imageMapResize from 'image-map-resizer';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n //////features\n ////search formの表示・非表示・popupの位置調整\n // 純粋関数: ポップアップの位置を計算\n const calculatePopupPosition = (buttonElement, margin = 10) => {\n const { height, top } = buttonElement.getBoundingClientRect();\n return height + top + margin + window.scrollY;\n };\n\n // DOM操作: ポップアップの位置を調整\n const setPopupPosition = (popup, position) => {\n popup.style.top = `${position}px`;\n };\n\n // 純粋関数: アクティブなコンテンツのロールを取得\n const getActiveContentRole = (button) => `search-form-popup-${button.dataset.role.split('-')[4]}`;\n\n // DOM操作: モーダルとコンテンツの表示切り替え\n const toggleModalAndContents = (popup, contents, role) => {\n popup.classList.add('searchForm__categoryPopUp--active');\n contents.forEach((content) => {\n content.classList.toggle('searchForm__categoryContents--active', content.dataset.role === role);\n });\n };\n\n // DOM操作: ボタンのアクティブ状態の切り替え\n const toggleActiveButton = (buttons, activeButton) => {\n buttons.forEach((btn) => btn.classList.toggle('u-searchFormCategoryButton--active', btn === activeButton));\n };\n\n const togglePopupVisibility = (popup, isVisible) => {\n if (isVisible) {\n popup.classList.add('searchForm__categoryPopUp--active');\n } else {\n popup.classList.remove('searchForm__categoryPopUp--active');\n }\n };\n\n const setupButtonEventListeners = (buttons, popup, contents) => {\n let resizeHandler = null;\n let activeButton = null;\n \n buttons.forEach((button) => {\n button.addEventListener('click', () => {\n const role = getActiveContentRole(button);\n const isActiveButtonClicked = button === activeButton;\n \n if (isActiveButtonClicked) {\n togglePopupVisibility(popup, false);\n toggleActiveButton(buttons, null);\n activeButton = null;\n } else {\n toggleModalAndContents(popup, contents, role);\n setPopupPosition(popup, calculatePopupPosition(button));\n toggleActiveButton(buttons, button);\n activeButton = button;\n \n togglePopupVisibility(popup, true);\n }\n \n if (resizeHandler) {\n window.removeEventListener('resize', resizeHandler);\n }\n resizeHandler = () => {\n // アクティブなボタンが存在する場合のみ位置を計算する\n if (activeButton !== null) {\n setPopupPosition(popup, calculatePopupPosition(activeButton));\n }\n };\n window.addEventListener('resize', resizeHandler);\n });\n });\n \n return () => {\n if (resizeHandler) {\n window.removeEventListener('resize', resizeHandler);\n }\n };\n };\n \n\n const removeResizeHandler = setupButtonEventListeners(\n document.querySelectorAll('.searchForm__categoryButton'),\n document.querySelector('.searchForm__categoryPopUp'),\n document.querySelectorAll('[data-role=\"search-form\"] .searchForm__categoryContents')\n );\n\n // クローズボタンイベント\n const closeButton = document.querySelector('.searchForm__categoryPopUpCloseButton');\n if (closeButton) {\n closeButton.addEventListener('click', () => {\n document.querySelector('.searchForm__categoryPopUp').classList.remove('searchForm__categoryPopUp--active');\n document\n .querySelectorAll('[data-role=\"search-form\"] .searchForm__categoryContents')\n .forEach((content) => content.classList.remove('searchForm__categoryContents--active'));\n document\n .querySelectorAll('.searchForm__categoryButton')\n .forEach((button) => button.classList.remove('u-searchFormCategoryButton--active'));\n removeResizeHandler();\n });\n }\n\n // search_formのエリア\n const toggleButtons = document.querySelectorAll('.searchForm__areaToggleButton');\n const checkboxes = document.querySelectorAll('.searchForm__areaMapCheckbox');\n\n function updateAreaMapImageClass(areaId) {\n const areaImage = document.getElementById(areaId);\n const parentCheckbox = document.querySelector(\n `.searchForm__areaCheckboxLabel--${areaId} .searchForm__areaMapCheckbox`\n );\n const childCheckboxes = document.querySelectorAll(`.searchForm__childCategoryArea [data-area-id=\"${areaId}\"]`);\n\n // 親または子のチェックボックスが一つでもチェックされているか確認する\n const isChecked = parentCheckbox.checked || Array.from(childCheckboxes).some((checkbox) => checkbox.checked);\n\n if (isChecked) {\n areaImage.classList.add('checked');\n } else {\n areaImage.classList.remove('checked');\n }\n }\n\n const handleCheckboxChange = (checkbox) => {\n const areaId = checkbox.dataset.areaId;\n updateAreaMapImageClass(areaId);\n }\n\n // チェックボックスの状態を監視する\n checkboxes.forEach((checkbox) => {\n // ロード時にチェックの状態に応じて処理をする\n handleCheckboxChange(checkbox)\n\n checkbox.addEventListener('change', () => {\n handleCheckboxChange(checkbox)\n });\n });\n\n // エリアボタンのクリックイベントを処理する\n toggleButtons.forEach((button) => {\n button.addEventListener('click', () => {\n const area = button.dataset.area;\n const isActive = button.classList.contains('searchForm__areaToggleButton--active');\n const parentCheckbox = document.querySelector(\n `.searchForm__areaCheckboxLabel--${area} .searchForm__areaMapCheckbox`\n );\n\n if (isActive) {\n button.classList.remove('searchForm__areaToggleButton--active');\n if (parentCheckbox) {\n parentCheckbox.checked = false;\n parentCheckbox.dispatchEvent(new Event('change')); // ここでchangeイベントを発火\n }\n } else {\n button.classList.add('searchForm__areaToggleButton--active');\n if (parentCheckbox) {\n parentCheckbox.checked = true;\n parentCheckbox.dispatchEvent(new Event('change')); // ここでchangeイベントを発火\n }\n }\n\n updateAreaMapImageClass(area);\n });\n });\n\n // areaタグにイベントリスナーを設定\n document.querySelectorAll('area').forEach((area) => {\n area.addEventListener('click', (event) => {\n event.preventDefault(); // デフォルトの動作を阻止\n const areaId = area.getAttribute('data-area-id');\n const toggleButton = document.querySelector(`.searchForm__areaToggleButton--${areaId}`);\n\n if (toggleButton) {\n toggleButton.click(); // 対応する.toggleButtonをプログラムによりクリックする\n }\n });\n });\n\n const parentCheckboxes = document.querySelectorAll('.searchForm__areaMapCheckbox--parent');\n\n // 親カテゴリのチェックボックスの状態に応じてトグルボタンの状態を更新する関数\n const updateToggleButtonState = () => {\n parentCheckboxes.forEach((checkbox) => {\n const areaId = checkbox.dataset.areaId;\n const toggleButton = document.querySelector(`.searchForm__areaToggleButton--${areaId}`);\n\n if (toggleButton) {\n if (checkbox.checked) {\n toggleButton.classList.add('searchForm__areaToggleButton--active');\n } else {\n toggleButton.classList.remove('searchForm__areaToggleButton--active');\n }\n }\n });\n };\n\n // 親カテゴリのチェックボックスの状態が変更されたときにトグルボタンの状態を更新する\n parentCheckboxes.forEach((checkbox) => {\n checkbox.addEventListener('change', updateToggleButtonState);\n });\n\n // ページ読み込み時にトグルボタンの初期状態を設定\n updateToggleButtonState();\n\n\n // 親カテゴリーのチェックボックスをすべて取得\n const parentAreas = document.querySelectorAll('.searchForm__areaMapCheckbox');\n if (parentAreas) {\n // 各親カテゴリーのチェックボックスにイベントリスナーを追加\n parentAreas.forEach((parentArea) => {\n parentArea.addEventListener('change', () => {\n const parentIndex = parentArea.getAttribute('data-parent-index'); // 親カテゴリーのインデックスを取得\n const isChecked = parentArea.checked; // 親カテゴリーのチェック状態を取得\n // 対応する子カテゴリーのチェックボックスを取得し、チェック状態を更新\n const childCheckboxes = document.querySelectorAll(`ul[data-child-for=\"${parentIndex}\"] .childCheckBox`);\n childCheckboxes.forEach((childCheckbox) => {\n childCheckbox.checked = isChecked;\n });\n });\n });\n }\n\n // 子カテゴリのチェックボックスをすべて取得\n const childCheckboxes = document.querySelectorAll('.childCheckBox');\n if (childCheckboxes) {\n childCheckboxes.forEach((childCheckbox) => {\n childCheckbox.addEventListener('change', () => {\n const parentIndex = childCheckbox.closest('ul').getAttribute('data-child-for'); // 子カテゴリーに対応する親カテゴリーのインデックスを取得\n const allSiblings = document.querySelectorAll(`ul[data-child-for=\"${parentIndex}\"] .childCheckBox`);\n const isCheckedAll = Array.from(allSiblings).every((checkbox) => checkbox.checked); // 全ての子カテゴリーがチェックされているか確認\n\n // 対応する親カテゴリーのチェックボックスを取得し、全てチェックされていればチェックを入れる\n const parentCheckbox = document.querySelector(`.searchForm__areaMapCheckbox[data-parent-index=\"${parentIndex}\"]`);\n if (isCheckedAll) {\n parentCheckbox.checked = true;\n } else {\n parentCheckbox.checked = false;\n }\n\n updateToggleButtonState()\n });\n });\n }\n\n imageMapResize();\n});\n","import { swiperOptions, initResponsiveSwiper } from './module/SwiperFunctions';\n\n// おすすめ記事共通設定\nconst recommendSwiperOptions = {\n slidesPerView: 'auto',\n spaceBetween: 16,\n};\n\n// ai\nconst aiRecommendSwiperOptions = swiperOptions({\n navigation: {\n nextEl: '#side_content_ai_recommend .recommends__swiperButtonNext',\n prevEl: '#side_content_ai_recommend .recommends__swiperButtonPrev',\n },\n ...recommendSwiperOptions,\n});\n\n// おすすめ\nconst itemRecommendSwiperOptions = swiperOptions({\n navigation: {\n nextEl: '#side_content_item_recommend .recommends__swiperButtonNext',\n prevEl: '#side_content_item_recommend .recommends__swiperButtonPrev',\n },\n ...recommendSwiperOptions,\n});\n\n/**\n * DOM要素がSwiperコンテナかどうかを判断する純粋関数。\n * Swiperコンテナは、Swiperスライドショーを実装するためのDOM要素です。\n *\n * @param {Element} node - 判定対象のDOM要素。\n * @returns {boolean} - 要素がSwiperコンテナであればtrue、そうでなければfalseを返します。\n */\nconst isSwiperContainer = (node) => node.nodeType === Node.ELEMENT_NODE && node.classList.contains('swiper');\n\n/**\n * NodeList内の各DOM要素に対して、SwiperコンテナであればSwiperを初期化する関数。\n * この関数は、DOMの変更を検知した際に追加された要素にSwiperを適用するために使用されます。\n *\n * @param {NodeList} nodeList - Swiperを検索および初期化する対象のDOM要素のリスト。\n * @param {Object} options - Swiper初期化時に適用するオプションのオブジェクト。\n */\nconst initRecommendSwiper = (nodeList, options) => {\n nodeList.forEach((node) => {\n if (isSwiperContainer(node)) {\n initResponsiveSwiper(node, options);\n }\n });\n};\n\n/**\n * MutationObserverによって検出されたDOMの変更(mutations)を処理し、\n * 追加されたノードにSwiperを適用する関数。\n *\n * @param {MutationRecord[]} mutations - DOMの変更を表すMutationRecordオブジェクトの配列。\n * @param {Object} swiperConfig - Swiper初期化に使用する設定オプション。\n */\nconst handleMutations = (mutations, swiperConfig) => {\n mutations.forEach((mutation) => {\n if (mutation.addedNodes.length > 0) {\n initRecommendSwiper(mutation.addedNodes, swiperConfig);\n }\n });\n};\n\n/**\n * 特定のDOM要素(target)内の子要素の変更を監視し、新たに追加された子要素に対して\n * Swiperを初期化するためのMutationObserverを設定する関数。\n *\n * @param {Element} target - 子要素の変更を監視するDOM要素。\n * @param {Object} swiperConfig - Swiper初期化に使用する設定オプション。\n */\nconst observeMutations = (target, swiperConfig) => {\n const observer = new MutationObserver((mutations) => handleMutations(mutations, swiperConfig));\n observer.observe(target, {\n childList: true,\n subtree: true,\n });\n};\n\ndocument.addEventListener('DOMContentLoaded', () => {\n // aiが選んだおすすめ記事\n const aiRecommendContainer = document.getElementById('side_content_ai_recommend');\n if (aiRecommendContainer) {\n observeMutations(aiRecommendContainer, aiRecommendSwiperOptions);\n }\n\n // このページをみている人はこのページも見ています\n const itemRecommendContainer = document.getElementById('side_content_item_recommend');\n if (itemRecommendContainer) {\n observeMutations(itemRecommendContainer, itemRecommendSwiperOptions);\n }\n});\n","export class SelectBtn {\n constructor({ node, store, type, inactiveSelectNodes, resetInputNodes }) {\n this.node = node;\n this.name = node.dataset.searchName;\n this.activeClassName = store.config.className.activeSelectBtn;\n\n this.node.addEventListener('click', () => {\n inactiveSelectNodes();\n resetInputNodes();\n\n this.node.classList.add(this.activeClassName);\n store.state[type] = this.name;\n });\n }\n}\n","export class SelectInput {\n constructor({ node, store, type, inactiveSelectNodes }) {\n this.node = node;\n this.store = store;\n this.activeClassName = store.config.className.activeSelectBtn;\n\n this.node.addEventListener('input', () => {\n inactiveSelectNodes();\n this.node.classList.add(this.activeClassName);\n store.state[type] = this.node.value;\n });\n }\n}\n","import { SelectBtn } from './SelectBtn';\nimport { SelectInput } from './SelectInput';\n\nexport class SelectBundler {\n constructor({ node, store, type }) {\n this.node = node;\n this.store = store;\n\n // SelectBtnとSelectInputの生成\n // 本クラスの関数で操作が必要なため、自身のメンバとして定義しておく\n\n this.btns = [];\n node\n .querySelectorAll(this.store.config.selectorName.btn)\n .forEach((node) => {\n this.btns.push(\n new SelectBtn({\n node,\n store: this.store,\n type,\n inactiveSelectNodes: this.inactiveSelectNodes.bind(this),\n resetInputNodes: this.resetInputNodes.bind(this),\n })\n );\n });\n\n this.input = new SelectInput({\n node: node.querySelector(this.store.config.selectorName.input),\n store: this.store,\n type,\n inactiveSelectNodes: this.inactiveSelectNodes.bind(this),\n });\n\n // Other\n\n this.btnsActiveClassName = this.store.config.className.activeSelectBtn;\n this.inputActiveClassName = this.store.config.className.activeSelectInput;\n }\n\n // 以下2つの関数はインスタンスをまたいでデザイン更新が必要な際に子コンポーネントから呼び出される関数\n\n inactiveSelectNodes() {\n this.btns.forEach((btn) => {\n btn.node.classList.remove(this.btnsActiveClassName);\n });\n this.input.node.classList.remove(this.inputActiveClassName);\n }\n\n resetInputNodes() {\n this.input.node.value = '';\n }\n}\n","export class Submit {\n constructor({ node, store }) {\n this.node = node;\n this.store = store;\n\n this.node.addEventListener('click', (e) => {\n e.preventDefault();\n const start = this.store.state.start;\n const end = this.store.state.end;\n const locale = this.store.config.locale;\n\n if (start && end) {\n const url = `${this.store.config.submitBaseUrl}${start}/${end}?hl=${locale}`;\n window.open(url, '_blank');\n } else {\n alert(this.store.config.msg.validError);\n }\n\n return false;\n });\n }\n}\n","import { SelectBundler } from './SelectBundler';\nimport { Submit } from './Submit';\n\n// - App\n// - SelectBundler x 2\n// - SelectBtn x n\n// - SelectInput\n// - Submit\n\nexport default class Gmap2PointLinkCreateUI {\n constructor({ appSelector, locale = 'ja' }) {\n // 操作に必要なDOMはthis.store.configにマッピングしておく\n this.store = {\n config: {\n locale,\n submitBaseUrl: 'https://www.google.co.jp/maps/dir/',\n selectorName: {\n bundler: '[data-mp-role=\"gmap-2point-link-create-ui-bundler\"]',\n btn: '[data-mp-role=\"gmap-2point-link-create-ui-btn\"]',\n input: '[data-mp-role=\"gmap-2point-link-create-ui-input\"]',\n submit: '[data-mp-role=\"gmap-2point-link-create-ui-submit\"]',\n },\n className: {\n activeSelectBtn: 'is_active',\n activeSelectInput: 'is_active',\n },\n msg: {\n validError: '出発地点と選択地点の両方を選択してください',\n },\n },\n state: {\n start: '',\n end: '',\n },\n };\n\n this.node = document.querySelector(appSelector);\n\n new Submit({\n node: this.node.querySelector(this.store.config.selectorName.submit),\n store: this.store,\n });\n\n this.node.querySelectorAll(this.store.config.selectorName.bundler).forEach((node) => {\n new SelectBundler({\n node,\n store: this.store,\n type: node.dataset.mpBundleType,\n });\n });\n }\n}\n","import Gmap2PointLinkCreateUI from './components/Gmap2PointLinkCreateUI/App';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const outlineMapImages = document.querySelectorAll('.access__mapImage img');\n const zoomBackground = document.querySelector('.access__outlineMapZoom');\n const zoomImg = document.querySelector('.access__outlineMapZoom img');\n const expansionButtons = document.querySelectorAll('.access__mapExpansionButton');\n\n // 拡大表示の背景をクリックしたら閉じる\n const downScale = () => {\n zoomBackground.style.display = 'none';\n zoomImg.classList.remove('access__outlineMapZoom--scale');\n };\n\n // ボタンのクリックイベントを設定\n if (expansionButtons) {\n expansionButtons.forEach((button, index) => {\n button.addEventListener('click', () => {\n if (outlineMapImages[index]) {\n // 対応する地図の画像を取得して拡大表示\n const imgSrc = outlineMapImages[index].getAttribute('src');\n zoomImg.setAttribute('src', imgSrc);\n zoomBackground.style.display = 'flex';\n zoomImg.classList.add('access__outlineMapZoom--scale');\n }\n });\n });\n }\n\n if (zoomBackground) {\n zoomBackground.addEventListener('click', downScale);\n }\n\n // ---------------------------------\n // routePage\n // ---------------------------------\n if (document.querySelector('.js-access-gmap-2point-link-create-ui')) {\n new Gmap2PointLinkCreateUI({\n appSelector: '.js-access-gmap-2point-link-create-ui',\n locale: document.querySelector('.js-access-gmap-2point-link-create-ui').dataset.locale,\n });\n }\n});\n","// 動画セクションのモーダル\n\n/**\n * 特定のIDを持つモーダルを検索する純粋関数。\n * @param {NodeListOf} modals - 検索対象のモーダル要素のリスト。\n * @param {string} id - 検索するモーダルのID。\n * @returns {Element|null} - 見つかったモーダル要素、またはnull。\n */\nconst findModalById = (modals, id) => modals.find((modal) => modal.getAttribute('data-movie-modal-id') === id);\n\n/**\n * モーダルを表示する純粋関数。\n * @param {Element} modal - 表示するモーダル要素。\n */\nconst showModal = (modal) => {\n modal.classList.add('movie__modal--active');\n document.body.style.overflow = 'hidden';\n};\n\n/**\n * モーダルを非表示にする純粋関数。\n * @param {Element} modal - 非表示にするモーダル要素。\n */\nconst hideModal = (modal) => {\n modal.classList.remove('movie__modal--active');\n document.body.style.overflow = '';\n modal.querySelector('.movie__iframe').src = '';\n};\n\n/**\n * iframeにソースURLを設定する関数。\n * @param {Element} modal - ソースURLを設定するモーダル要素。\n */\nconst setIframeSrc = (modal) => {\n const iframeElement = modal.querySelector('iframe');\n if (!iframeElement) return;\n\n const src = iframeElement.getAttribute('data-src');\n if (!src) return;\n\n iframeElement.setAttribute('src', src);\n};\n\n/**\n * モーダル内のクリックイベントハンドラを設定する副作用のある関数。\n * @param {Element} modal - イベントハンドラを設定するモーダル要素。\n * @param {function} hideModalFunc - モーダルを非表示にする関数。\n */\nconst setupClickHandlers = (modal, hideModalFunc) => {\n modal.addEventListener('click', () => hideModalFunc(modal));\n\n const closeButton = modal.querySelector('.movie__modalCloseButton');\n closeButton.addEventListener('click', () => hideModalFunc(modal));\n\n const modalInner = modal.querySelector('.movie__modalInner');\n modalInner.addEventListener('click', (e) => e.stopPropagation());\n};\n\n/**\n * モーダル機能を初期化するメインロジック。\n * @param {NodeListOf} thumbnails - クリックイベントを設定するサムネイル要素のリスト。\n * @param {NodeListOf} modals - モーダル要素のリスト。\n */\nexport const initializeModalFunctionality = (thumbnails, modals) => {\n thumbnails.forEach((thumbnail) => {\n thumbnail.addEventListener('click', () => {\n const movieId = thumbnail.getAttribute('data-movie-thumbnail-id');\n const modal = findModalById(Array.from(modals), movieId);\n\n if (modal) {\n showModal(modal);\n setupClickHandlers(modal, hideModal);\n setIframeSrc(modal);\n }\n });\n });\n};\n","import { initializeModalFunctionality } from \"./module/VideoModalFunctions\"\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const movieNodeList = document.querySelectorAll('[data-role=\"movie-thumbnail\"]')\n const movieModals = document.querySelectorAll('.movie__modal')\n initializeModalFunctionality(movieNodeList, movieModals)\n})\n","// eslint-disable-next-line import/no-extraneous-dependencies\nimport $ from 'jquery';\n\nif (document.querySelector('#tabCmn') !== null) {\n $(() => {\n $('.tabCmnMenu__item').on('click', (event) => {\n const tabWrap = $(event.currentTarget).parents('#tabCmn');\n const tabBtn = tabWrap.find('.tabCmnMenu__item');\n const tabContents = tabWrap.find('.tabCmnContents');\n tabBtn.removeClass('is-current');\n $(event.currentTarget).addClass('is-current');\n const elmIndex = tabBtn.index($(event.currentTarget));\n tabContents.removeClass('is-current');\n tabContents.eq(elmIndex).addClass('is-current');\n });\n });\n}\n","import Swiper from 'swiper/bundle';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n if (document.querySelector('.coursesShowRecommend__swiper')) {\n new Swiper('.coursesShowRecommend__swiper', {\n slidesPerView: 1,\n loop: true,\n autoplay: false,\n speed: 3000,\n disableOnInteraction: false,\n navigation: {\n nextEl: '.coursesShowRecommend__swiperNext',\n prevEl: '.coursesShowRecommend__swiperPrev',\n },\n });\n }\n});\n","// 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';\nimport '../sprinkles';\n\nRails.start();\n// ActiveStorage.start();\n","// bookingページ: たびくらフォームのサブミットの定義\nif (document.querySelector('[data-role=\"booking-form\"]') !== null) {\n document.querySelectorAll('[data-role=\"booking-filter-btn\"]').forEach((elm) => {\n const input = elm.querySelector('input');\n input.addEventListener('click', () => {\n if (elm.classList.contains('is-active')) {\n elm.classList.remove('is-active');\n } else {\n elm.classList.add('is-active');\n }\n });\n });\n\n document.querySelector('[data-role=\"booking-submit\"]').addEventListener('click', () => {\n // Formより参照した値を利用\n const url = document.bookingForm.action;\n const prefVal = document.bookingForm.pf.value;\n const numberOfPeopleVal = document.bookingForm.cp.value;\n const numberOfRoomVal = document.bookingForm.rn.value;\n const minBudgetVal = document.bookingForm.pn.value;\n const maxBudgetVal = document.bookingForm.px.value;\n const roomTypeVal = document.bookingForm.rt.value;\n const mealTypeVal = document.bookingForm.mc.value;\n const keywordsVal = document.bookingForm.kw.value;\n\n // Formから参照した値を加工し利用\n const dateVal = document.bookingForm.sd.value.replace(/-/g, '');\n const kodawariNodes = document.bookingForm.kd;\n const kodawariVals = [];\n Array.prototype.slice.call(kodawariNodes, 0).forEach((node) => {\n if (node.checked) kodawariVals.push(node.value);\n });\n\n const requestURL = `${url}?pf=${prefVal}&sd=${dateVal}&cp=${numberOfPeopleVal}&rn=${numberOfRoomVal}&pn=${minBudgetVal}&px=${maxBudgetVal}&rt=${roomTypeVal}&mc=${mealTypeVal}&kw=${keywordsVal}&kd=${kodawariVals}`;\n\n // debug\n // console.log(requestURL);\n\n window.location.href = requestURL;\n return false;\n });\n}\n","if (document.getElementById('river_article_more')) {\n document.getElementById('river_article_more').addEventListener(\n 'click',\n () => {\n document.querySelectorAll(\"li[name='river_article_li']\").forEach((el) => {\n el.classList.remove('d-none');\n });\n document.getElementById('river_article_more').classList.add('d-none');\n },\n { once: true }\n );\n}\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","document","addEventListener","detail","xhr","token","getToken","setRequestHeader","data","context","require","definitionsFromContext","window","iFrameResizer","onMessage","message","clientHeight","planConfigureStore","dispatch","setClientHeight","exportConfigureStore","iframeRect","setIframeTop","application","Application","start","planStore","load","controllers","Controller","static","connect","this","submitButtonTarget","click","event","messageTarget","innerHTML","UPDATE_EVENT","REQUEST_EVENT","RECEIVE_EVENT","sendFavoriteSpotUpdated","CustomEvent","dispatchEvent","requestFavoriteSpots","getAll","sendAll","disconnect","removeEventListener","Rails","ajax","url","path","type","beforeSend","options","fire","element","success","ids","length","get","setState","includes","addTarget","classList","add","removeTarget","remove","added","removed","parseInt","TOKEN_IDENTIFIER","localStorage","getItem","setToken","setItem","postCourseInfoMessageToJorudan","receiverOrigin","process","env","JORUDAN_POST_MESSAGE_HOST","parent","postMessage","action","courseInfo","courseInfoTarget","value","tokenEvent","Turbolinks","clearCache","visit","loadUrl","Sortable","create","handle","onEnd","newIndex","oldIndex","planSpotIds","getState","planSpot","planSpotEntities","entities","swapSourcePlanSpot","swapTargetPlanSpot","deleteTransit","sortToApi","position","areaButtonEelements","querySelectorAll","forEach","getElementById","children","$","target","dataset","areaId","attr","timeout","buttons","displayArea","showEventContent","eventType","templateContent","content","appendChild","cloneNode","toggleActiveClass","button","btn","getAttribute","setupInitialDisplay","initialButton","initialEventType","Swiper","swiperOptions","slidesPerView","spaceBetween","centeredSlides","navigation","nextEl","prevEl","breakpoints","pagination","el","bulletClass","bulletActiveClass","clickable","areaButtons","areaModal","toggle","config","attributes","childList","subtree","MutationObserver","callback","areaModalCloseButton","querySelector","observe","switchTagAllCheckbox","prop","checked","initializeAllThemeSwipers","swiperDataRole","paginationDataRole","swiperElements","paginationElements","swiperElement","index","paginationElement","relatedArticleSwiperElement","initResponsiveSwiper","setBulkDownloadDisabled","on","photoId","replace","addClass","removeClass","dataType","photo_id","fail","change","photoModalDisplay","descriptionButtons","modalContents","modalContent","Array","from","find","modal","clone","importNode","closeButton","sideContentRecommend","connectionSpotSwiperOptions","style","display","breakAfter","once","breakInside","successGetPosition","coords","latitude","longitude","location","href","failGetPosition","error","PERMISSION_DENIED","alert","POSITION_UNAVAILABLE","TIMEOUT","UNKNOWN_ERROR","enableHighAccuracy","maximumAge","navigator","geolocation","getCurrentPosition","closest","categoryId","calculatePopupPosition","buttonElement","margin","height","top","getBoundingClientRect","scrollY","setPopupPosition","popup","toggleActiveButton","activeButton","togglePopupVisibility","isVisible","removeResizeHandler","setupButtonEventListeners","contents","resizeHandler","role","split","getActiveContentRole","toggleModalAndContents","toggleButtons","checkboxes","updateAreaMapImageClass","areaImage","parentCheckbox","childCheckboxes","some","checkbox","handleCheckboxChange","area","isActive","contains","Event","preventDefault","toggleButton","parentCheckboxes","updateToggleButtonState","parentAreas","parentArea","parentIndex","isChecked","childCheckbox","allSiblings","isCheckedAll","every","imageMapResize","recommendSwiperOptions","aiRecommendSwiperOptions","itemRecommendSwiperOptions","initRecommendSwiper","nodeList","node","nodeType","Node","ELEMENT_NODE","isSwiperContainer","observeMutations","swiperConfig","observer","mutations","handleMutations","mutation","addedNodes","aiRecommendContainer","itemRecommendContainer","SelectBtn","constructor","store","inactiveSelectNodes","resetInputNodes","name","searchName","activeClassName","className","activeSelectBtn","state","SelectInput","SelectBundler","btns","selectorName","push","bind","input","btnsActiveClassName","inputActiveClassName","activeSelectInput","Submit","end","locale","submitBaseUrl","open","msg","validError","Gmap2PointLinkCreateUI","appSelector","bundler","submit","mpBundleType","outlineMapImages","zoomBackground","zoomImg","expansionButtons","downScale","imgSrc","setAttribute","hideModal","body","overflow","src","initializeModalFunctionality","thumbnails","modals","thumbnail","movieId","findModalById","showModal","setupClickHandlers","hideModalFunc","stopPropagation","iframeElement","setIframeSrc","movieNodeList","movieModals","tabWrap","currentTarget","parents","tabBtn","tabContents","elmIndex","eq","loop","autoplay","speed","disableOnInteraction","elm","bookingForm","prefVal","pf","numberOfPeopleVal","cp","numberOfRoomVal","rn","minBudgetVal","pn","maxBudgetVal","px","roomTypeVal","rt","mealTypeVal","mc","keywordsVal","kw","dateVal","sd","kodawariNodes","kd","kodawariVals","prototype","slice","call","requestURL"],"sourceRoot":""}