{"version":3,"file":"js/application-3ed2ce75d1ed1b5a025b.js","mappings":"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","sources":["webpack://saitama_city_ja/./app/javascript/controllers/japan_concierge/ sync _controller\\.js$","webpack://saitama_city_ja/./app/javascript/controllers/ sync _controller\\.js$","webpack://saitama_city_ja/./app/javascript/controllers/japan_concierge/iframe_auth.js","webpack://saitama_city_ja/./app/javascript/controllers/japan_concierge/index.js","webpack://saitama_city_ja/./app/javascript/controllers/index.js","webpack://saitama_city_ja/./app/javascript/controllers/japan_concierge/auto_redirect_sns_controller.js","webpack://saitama_city_ja/./app/javascript/controllers/japan_concierge/export_mail_controller.js","webpack://saitama_city_ja/./app/javascript/controllers/japan_concierge/favorite_count_controller.js","webpack://saitama_city_ja/./app/javascript/controllers/japan_concierge/favorite_spot_button_controller.js","webpack://saitama_city_ja/./app/javascript/controllers/japan_concierge/iframe_token.js","webpack://saitama_city_ja/./app/javascript/controllers/japan_concierge/jorudan_publish_controller.js","webpack://saitama_city_ja/./app/javascript/controllers/japan_concierge/load_user_controller.js","webpack://saitama_city_ja/./app/javascript/controllers/japan_concierge/plan_spots_controller.js","webpack://saitama_city_ja/./app/javascript/sprinkles/components/Gmap2PointLinkCreateUI/SelectBtn.js","webpack://saitama_city_ja/./app/javascript/sprinkles/components/Gmap2PointLinkCreateUI/SelectInput.js","webpack://saitama_city_ja/./app/javascript/sprinkles/components/Gmap2PointLinkCreateUI/SelectBundler.js","webpack://saitama_city_ja/./app/javascript/sprinkles/components/Gmap2PointLinkCreateUI/Submit.js","webpack://saitama_city_ja/./app/javascript/sprinkles/components/Gmap2PointLinkCreateUI/App.js","webpack://saitama_city_ja/./app/javascript/sprinkles/access.js","webpack://saitama_city_ja/./app/javascript/sprinkles/article.js","webpack://saitama_city_ja/./app/javascript/sprinkles/event.js","webpack://saitama_city_ja/./app/javascript/sprinkles/course.js","webpack://saitama_city_ja/./app/javascript/sprinkles/AicUi/Form.js","webpack://saitama_city_ja/./app/javascript/sprinkles/AicUi/SubmitBtn.js","webpack://saitama_city_ja/./app/javascript/sprinkles/AicUi/StyleCard.js","webpack://saitama_city_ja/./app/javascript/sprinkles/AicUi/PrefPresetCard.js","webpack://saitama_city_ja/./app/javascript/sprinkles/AicUi/PrefSlider.js","webpack://saitama_city_ja/./app/javascript/sprinkles/AicUi/Loader.js","webpack://saitama_city_ja/./app/javascript/sprinkles/AicUi/App.js","webpack://saitama_city_ja/./app/javascript/sprinkles/concierge.js","webpack://saitama_city_ja/./app/javascript/sprinkles/module/SwiperFunctions.js","webpack://saitama_city_ja/./app/javascript/sprinkles/feature.js","webpack://saitama_city_ja/./app/javascript/sprinkles/material.js","webpack://saitama_city_ja/./app/javascript/sprinkles/photo.js","webpack://saitama_city_ja/./app/javascript/sprinkles/side_content.js","webpack://saitama_city_ja/./app/javascript/sprinkles/souvenir.js","webpack://saitama_city_ja/./app/javascript/sprinkles/spot.js","webpack://saitama_city_ja/./app/javascript/sprinkles/module/VideoModalFunctions.js","webpack://saitama_city_ja/./app/javascript/sprinkles/top.js","webpack://saitama_city_ja/./app/javascript/sprinkles/tab.js","webpack://saitama_city_ja/./app/javascript/sprinkles/module/ScrollFunctions.js","webpack://saitama_city_ja/./app/javascript/sprinkles/scroll.js","webpack://saitama_city_ja/./app/javascript/sprinkles/module/QuestionsFunctions.js","webpack://saitama_city_ja/./app/javascript/sprinkles/questions.js","webpack://saitama_city_ja/./app/javascript/sprinkles/modelCourse.js","webpack://saitama_city_ja/./app/javascript/sprinkles/components/activityInfoSwiper.js","webpack://saitama_city_ja/./app/javascript/sprinkles/components/nearbySpotsSwiper.js","webpack://saitama_city_ja/./app/javascript/sprinkles/components/sideRecommendSwiper.js","webpack://saitama_city_ja/./app/javascript/packs/application.js","webpack://saitama_city_ja/./app/javascript/sprinkles/module/CookieConsentFunctions.js","webpack://saitama_city_ja/./app/javascript/sprinkles/cookieConsent.js","webpack://saitama_city_ja/./app/javascript/sprinkles/module/module.js","webpack://saitama_city_ja/./app/javascript/sprinkles/floatButton.js","webpack://saitama_city_ja/./app/javascript/sprinkles/module/FloatButtonFunctions.js","webpack://saitama_city_ja/./app/javascript/sprinkles/module/HeaderFunctions.js","webpack://saitama_city_ja/./app/javascript/sprinkles/header.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","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';\nimport $ from 'jquery';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const outlineMapImages = document.querySelectorAll('.access__outlineMapImage img');\n const zoomBackground = document.querySelector('.access__outlineMapZoom');\n const zoomImg = document.querySelector('.access__outlineMapZoom img');\n\n // 地図の画像をクリックしたら拡大\n if (outlineMapImages && zoomBackground && zoomImg) {\n const upScale = (e) => {\n zoomBackground.style.display = 'flex';\n zoomImg.setAttribute('src', e.target.getAttribute('src'));\n zoomImg.classList.add('access__outlineMapZoom--scale');\n };\n\n outlineMapImages.forEach(function (image) {\n image.addEventListener('click', upScale);\n });\n\n const downScale = () => {\n zoomBackground.style.display = 'none';\n zoomImg.classList.remove('access__outlineMapZoom--scale');\n };\n zoomBackground.addEventListener('click', downScale);\n }\n});\n\n// ---------------------------------\n// routePage\n// ---------------------------------\nif (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 $('.js-accordion').on('click', function () {\n $(this).children('.js-accordion-arrow').toggleClass('is-active');\n $(this).toggleClass('is-active');\n $(this).next('.js-accordion-panel').slideToggle(300, 'linear');\n $(this).next('.js-accordion-panel').toggleClass('is-active');\n });\n });\n});\n","// eslint-disable-next-line import/no-extraneous-dependencies\nimport $ from 'jquery';\n\n$(() => {\n if (document.querySelector('.newsLayout__dateLink--active')) {\n const element = document.querySelector('.newsLayout__dateLink--active');\n $(`#year${element.dataset.year}`).removeClass('newsLayout__dateLists--none');\n }\n\n // 年が選択された場合、選択された年をアクティブ状態にしそれ以外の年を非アクティブにする\n // また、選択された年の最終月をアクティブにする\n $('li.newsLayout__dateList--year').on('click', (e) => {\n const targetElement = e.target;\n const closetElement = e.target.closest('.newsLayout__dateLists');\n closetElement.querySelectorAll('a.newsLayout__dateLink').forEach((element) => {\n if (element.dataset.year === e.target.dataset.year) {\n element.classList.add('newsLayout__dateLink--active');\n } else {\n element.classList.remove('newsLayout__dateLink--active');\n }\n });\n\n document.querySelectorAll('.newsLayout__dateLists--month').forEach((element) => {\n if (element.getAttribute('id') === `year${targetElement.dataset.year}`) {\n element.classList.remove('newsLayout__dateLists--none');\n } else {\n element.classList.add('newsLayout__dateLists--none');\n }\n });\n });\n\n // 月が選択された場合\n $('li.newsLayout__dateList--month').on('click', (e) => {\n const targetElement = e.target;\n const closetElement = e.target.closest('.newsLayout__dateLists--month');\n closetElement.querySelectorAll('a.newsLayout__dateLink').forEach((element) => {\n if (element.dataset.month === targetElement.dataset.month) {\n element.classList.add('newsLayout__dateLink--active');\n } else {\n element.classList.remove('newsLayout__dateLink--active');\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=\"event_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=\"event_area_id[all]\"]').prop('checked', true);\n }\n }\n\n function switchTagAllCheckbox() {\n // 全てのチェックを外す\n $('input[name=\"event_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=\"event_tag_id[all]\"]').prop('checked', true);\n }\n }\n\n if ($('#event_search').length) {\n // エリア全て選択時、エリアの状態も変更する\n $('input[name=\"event_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=\"event_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';\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","export default class Form {\n constructor({ elm, app }) {\n this.app = app;\n this.elm = elm;\n // this.hideClassName = this.node.dataset.hideClass;\n }\n}\n","import axios from 'axios';\nimport Rails from '@rails/ujs';\n\nexport default class SubmitBtn {\n constructor({ elm, app }) {\n this.elm = elm;\n this.app = app;\n\n this.elm.addEventListener('click', (e) => {\n e.preventDefault();\n\n // Google Tag Manager計測用\n this.app.setGTMParams();\n\n const requestURI = `${this.app.aicAPIBaseURI}?${this.app.getQueries()}`;\n\n // [note] まずリクエスト開始前にローディングぐるぐるパーツを表示します。\n this.app.loader.show();\n\n axios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest';\n axios.interceptors.request.use((config) => ({\n ...config,\n headers: { ...config.headers, 'X-CSRF-Token': Rails.csrfToken() },\n }));\n\n // [note] リクエストしています\n axios\n .get(requestURI)\n .then((res) => {\n // [note] 結果タグ(html)を表示に追加する\n const result = document.getElementById('aic_search_result');\n result.innerHTML = res.data;\n\n // 結果部分にスクロール\n this.app.aiRoutePlannerSubmitBtnScroller.scroll();\n\n // [note] ローディングダイアログを停止します。\n this.app.loader.hide();\n })\n .catch((err) => {\n console.log(err.response); // eslint-disable-line no-console\n // [note] ローディングダイアログを停止します。\n this.app.loader.hide();\n return null;\n });\n });\n }\n}\n","export default class StyleCard {\n constructor({ elm, app }) {\n this.elm = elm;\n this.app = app;\n this.elm.addEventListener('click', () => {\n this.app.styleCards.forEach((card) => {\n card.elm.classList.remove(this.app.activeClassName);\n });\n this.active();\n return false;\n });\n }\n\n active() {\n this.elm.classList.add(this.app.activeClassName);\n }\n\n inactive() {\n this.elm.classList.remove(this.app.activeClassName);\n }\n}\n","export default class PrefPresetCard {\n constructor({ elm, app }) {\n this.elm = elm;\n this.app = app;\n this.params = {\n pref1: this.elm.dataset.pref1,\n pref2: this.elm.dataset.pref2,\n pref3: this.elm.dataset.pref3,\n pref4: this.elm.dataset.pref4,\n pref5: this.elm.dataset.pref5,\n taste4: this.elm.dataset.taste4,\n };\n\n this.elm.addEventListener('click', () => {\n this.app.prefPresetCards.forEach((card) => {\n card.elm.classList.remove(this.app.activeClassName);\n });\n this.active();\n\n this.app.updatePrefSliders(this.params);\n return false;\n });\n }\n\n active() {\n this.elm.classList.add(this.app.activeClassName);\n }\n\n inactive() {\n this.elm.classList.remove(this.app.activeClassName);\n }\n}\n","export default class PrefSlider {\n constructor({ elm, app }) {\n this.elm = elm;\n this.app = app;\n this.target = this.elm.dataset.target;\n\n // slider操作時のcard選択を解除する記述\n // this.elm.addEventListener('change', () => {\n // this.app.inactivePrefPresetCards();\n // });\n }\n\n update(params) {\n Object.keys(params).forEach((key) => {\n if (this.target === key) this.elm.value = params[key];\n });\n }\n}\n","export default class Loader {\n constructor({ elm, app }) {\n this.app = app;\n this.elm = elm;\n this.store = app.store;\n this.hideClassName = this.elm.dataset.hideClass;\n }\n\n hide() {\n this.elm.classList.add(this.hideClassName);\n }\n\n show() {\n this.elm.classList.remove(this.hideClassName);\n }\n}\n","import Form from './Form';\nimport SubmitBtn from './SubmitBtn';\nimport StyleCard from './StyleCard';\nimport PrefPresetCard from './PrefPresetCard';\nimport PrefSlider from './PrefSlider';\nimport Loader from './Loader';\n\n// [note]\n// 他案件と比べ内部のパラメータの要件やUIなどがかなり変わってしまったので\n// 本案件のみに対応したコードとする。\n// なお、データ管理などは行わず、特にデータを送信するサブミット時はDOMの値を直接見にいく。\n\nexport default class Aic {\n constructor(opts = {}) {\n this.aicAPIBaseURI = opts.aicAPIBaseURI;\n this.apiKey = opts.apiKey;\n this.place = opts.place;\n this.activeClassName = 'is-selected';\n\n this.app = this;\n\n this.selector = {\n form: '[data-mp-role=\"aic-form\"]',\n styleCard: '[data-mp-role=\"aic-taste-bundler-btn\"]',\n prefPresetCard: '[data-mp-role=\"aic-pref-bundler-btn\"]',\n prefSlider: '[data-mp-role=\"aic-pref-slider\"]',\n submitBtn: '[data-mp-role=\"aic-submit-btn\"]',\n startSpotSelect: '[data-mp-role=\"aic-start-spot-select\"]',\n durationSelect: '[data-mp-role=\"aic-duration-select\"]',\n startTimeSelect: '[data-mp-role=\"aic-start-time-select\"]',\n daysSelect: '[data-mp-role=\"aic-days-select\"]',\n transportationSelect: '[data-mp-role=\"aic-transportation-select\"]',\n loader: '[data-mp-role=\"aic-loader\"]',\n };\n\n this.form = new Form({ elm: document.querySelector(this.selector.form), app: this.app });\n\n this.styleCards = [];\n document.querySelectorAll(this.selector.styleCard).forEach((card) => {\n this.styleCards.push(new StyleCard({ elm: card, app: this.app }));\n });\n\n this.prefPresetCards = [];\n document.querySelectorAll(this.selector.prefPresetCard).forEach((card) => {\n this.prefPresetCards.push(new PrefPresetCard({ elm: card, app: this.app }));\n });\n\n this.prefSliders = [];\n document.querySelectorAll(this.selector.prefSlider).forEach((slider) => {\n this.prefSliders.push(new PrefSlider({ elm: slider, app: this.app }));\n });\n\n this.submitBtn = new SubmitBtn({ elm: document.querySelector(this.selector.submitBtn), app: this.app });\n\n this.loader = new Loader({ elm: document.querySelector(this.selector.loader), app: this.app });\n\n this.init();\n\n // this.form.node.dataset.state = JSON.stringify(this.store.state);\n }\n\n init() {\n // 1つ目のカードを選択状態に\n this.styleCards.forEach((card, i) => {\n if (i === 0) card.active();\n if (i !== 0) card.inactive();\n });\n this.prefPresetCards.forEach((card, i) => {\n if (i === 0) card.active();\n if (i !== 0) card.inactive();\n });\n\n // プリセットカードの持つパラメータをtasteSliderにも反映\n const firstElm = this.prefPresetCards[0].elm;\n this.updatePrefSliders({\n pref1: firstElm.dataset.pref1,\n pref2: firstElm.dataset.pref2,\n pref3: firstElm.dataset.pref3,\n pref4: firstElm.dataset.pref4,\n pref5: firstElm.dataset.pref5,\n taste4: firstElm.dataset.taste4,\n });\n }\n\n getState() {\n const crStyleCard = document.querySelector(`${this.selector.styleCard}.${this.activeClassName}`);\n const crPrefPresetCard = document.querySelector(`${this.selector.prefPresetCard}.${this.activeClassName}`);\n const pref1Slider = document.querySelector(`${this.selector.prefSlider}[data-target=\"pref1\"]`);\n const pref2Slider = document.querySelector(`${this.selector.prefSlider}[data-target=\"pref2\"]`);\n const pref3Slider = document.querySelector(`${this.selector.prefSlider}[data-target=\"pref3\"]`);\n const pref4Slider = document.querySelector(`${this.selector.prefSlider}[data-target=\"pref4\"]`);\n const pref5Slider = document.querySelector(`${this.selector.prefSlider}[data-target=\"pref5\"]`);\n const taste4Slider = document.querySelector(`${this.selector.prefSlider}[data-target=\"taste4\"]`);\n\n return {\n start_spot_id: document.querySelector(this.selector.startSpotSelect).value,\n duration: document.querySelector(this.selector.durationSelect).value,\n start_time: document.querySelector(this.selector.startTimeSelect).value,\n days: document.querySelector(this.selector.daysSelect).value,\n transportation: document.querySelector(this.selector.transportationSelect).value,\n taste: {\n taste1: crStyleCard.dataset.taste1,\n taste2: crStyleCard.dataset.taste2,\n taste3: crStyleCard.dataset.taste3,\n taste4: taste4Slider.value,\n },\n pref: {\n pref1: pref1Slider.value,\n pref2: pref2Slider.value,\n pref3: pref3Slider.value,\n pref4: pref4Slider.value,\n pref5: pref5Slider.value,\n },\n };\n }\n\n getQueries() {\n const info = this.getState();\n\n let params = '';\n\n params += `apikey=${this.apiKey}`;\n params += `&place=${this.place}`;\n params += `&start_spot_id=${info.start_spot_id}`;\n params += `&duration=${info.duration}`;\n params += `&start_time=${info.start_time}`;\n params += `&days=${info.days}`;\n params += `&transportation=${info.transportation}`;\n params += `&taste=${info.taste.taste1},${info.taste.taste2},${info.taste.taste3},${info.taste.taste4}`;\n params += `&pref=${info.pref.pref1},${info.pref.pref2},${info.pref.pref3},${info.pref.pref4},${info.pref.pref5}`;\n\n return params;\n }\n\n setGTMParams() {\n this.form.elm.dataset.state = JSON.stringify(this.getState());\n }\n\n updatePrefSliders(params) {\n this.prefSliders.forEach((slider) => {\n slider.update(params);\n });\n }\n\n inactivePrefPresetCards() {\n this.prefPresetCards.forEach((cards) => {\n cards.inactive();\n });\n }\n\n aiRoutePlannerSubmitBtnScroller = {\n targetElmIdName: 'aic_search_result',\n yOffset: -200,\n animInterval: 15,\n stepCount: 1,\n stepNum: 20,\n scroll() {\n document.documentElement.scrollTop = 0;\n const targetElmYloc = document.getElementById(this.targetElmIdName).getBoundingClientRect().top;\n const distance = targetElmYloc + this.yOffset;\n window.scrollBy(0, distance);\n },\n };\n}\n","import AicUi from './AicUi/App';\n\nif (document.querySelector('[data-mp-role=\"aic-form\"]')) {\n // eslint-disable-next-line no-unused-vars\n const aicUi = new AicUi({\n aicAPIBaseURI: `/ai-concierge.js`,\n apiKey: 'dummy_key', // dummy\n place: 'saitama_city', // dummy\n });\n}\n","import Swiper from 'swiper/bundle';\n\n/**\n * Swiperのオプションを生成する関数。\n * カスタムオプションでデフォルトオプションを上書きする。\n *\n * @param {Object} customOptions - Swiperに適用するカスタムオプション。\n * @param {Object|null} newDefaultOptions - 新しいデフォルトオプション。指定されない場合は、内部で定義されたデフォルトオプションが使用される。\n * @returns {Object} - 結合されたSwiperオプション。\n */\nexport const swiperOptions = (customOptions = {}, newDefaultOptions = null) => {\n const defaultOptions = newDefaultOptions || {\n loop: true,\n autoplay: {\n delay: 5000,\n },\n speed: 3000,\n };\n\n return {\n ...defaultOptions,\n ...customOptions,\n autoplay: {\n ...defaultOptions.autoplay,\n ...customOptions.autoplay\n }\n };\n};\n\n/**\n * 特定の最大幅以下でのみSwiperインスタンスを初期化し、\n * ウィンドウのサイズが変更されたときに適切に応答する関数。\n *\n * @param {string | Element} container - Swiperインスタンスを初期化するコンテナのセレクタまたは要素。\n * @param {Object} options - Swiperインスタンスに適用するオプション。\n * @param {number} maxWidth - Swiperを初期化する最大の画面幅(ピクセル単位)。デフォルトは 768px。\n * @returns {Object} - Swiperインスタンスを破棄するための `destroy` メソッドを含むオブジェクト。\n */\nexport const initResponsiveSwiper = (container, options, maxWidth = 768) => {\n let swiper = null;\n\n const initSwiper = () => {\n if (window.innerWidth <= maxWidth) {\n return new Swiper(container, options);\n }\n return null;\n };\n\n const onResize = () => {\n if (swiper && window.innerWidth > maxWidth) {\n swiper.destroy(true, true);\n swiper = null;\n } else if (!swiper && window.innerWidth <= maxWidth) {\n swiper = initSwiper();\n }\n };\n\n swiper = initSwiper();\n window.addEventListener('resize', onResize);\n\n return {\n destroy: () => {\n if (swiper) {\n swiper.destroy(true, true);\n }\n window.removeEventListener('resize', onResize);\n },\n };\n};\n\n/**\n * ボタンのスタイルをSwiperのautoplay状態に基づいて更新する関数\n *\n * @param {boolean} isAutoplayRunning - Swiperのautoplayが実行中かどうかを示すブール値。\n * @param {HTMLElement} buttonElement - 停止ボタンの要素。\n */\nconst updateButtonState = (isAutoplayRunning, buttonElement) => {\n if (isAutoplayRunning) {\n buttonElement.classList.remove('u-snsButton--stop');\n buttonElement.classList.add('u-snsButton--start');\n } else {\n buttonElement.classList.remove('u-snsButton--start');\n buttonElement.classList.add('u-snsButton--stop');\n }\n};\n\n/**\n * Swiperのautoplayをトグルするイベントリスナーを設定する関数。\n * Swiperのautoplay状態に基づいて、指定されたボタンのスタイルを切り替える。\n *\n * @param {HTMLElement} buttonElement - クリックイベントを設定するボタン要素。\n * @param {Swiper} swiperInstance - 制御するSwiperインスタンス。\n */\nexport const toggleSwiperAutoplay = (buttonElement, swiperInstance) => {\n if (buttonElement) {\n // ボタンの初期状態を設定\n updateButtonState(swiperInstance.autoplay.running, buttonElement);\n\n // ボタンクリックイベントの設定\n buttonElement.addEventListener('click', function () {\n if (swiperInstance.autoplay.running) {\n swiperInstance.autoplay.stop();\n } else {\n swiperInstance.autoplay.start();\n }\n });\n\n // Swiperのautoplay状態変更イベントの設定\n swiperInstance.on('autoplayStart', () => updateButtonState(true, buttonElement));\n swiperInstance.on('autoplayStop', () => updateButtonState(false, buttonElement));\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';\nimport imageMapResizer from 'image-map-resizer';\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 function switchGenreAllCheckbox() {\n // 全てのチェックを外す\n $('input[name=\"feature_genre_id[all]\"]').prop('checked', false);\n // 全て手動でチェックされた場合、チェックボックスの「全て」にチェックをつける\n if ($('input[name=\"q[genres_id_in][]\"]:checked').length === $('input[name=\"q[genres_id_in][]\"]').length - 1) {\n $('input[name=\"feature_genre_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 $('input[name=\"feature_genre_id[all]\"]').click((e) => {\n $('input[name=\"q[genres_id_in][]\"]').prop('checked', e.target.checked);\n });\n\n // カテゴリー選択の場合、全ての選択状態を設定/解除を行う\n $('input[name=\"q[genres_id_in][]\"]').click(() => {\n switchGenreAllCheckbox();\n });\n }\n\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 // イベントハンドラの設定と削除\n const setupButtonEventListeners = (buttons, popup, contents) => {\n let resizeHandler = null;\n\n buttons.forEach((button) => {\n button.addEventListener('click', () => {\n const role = getActiveContentRole(button);\n toggleModalAndContents(popup, contents, role);\n setPopupPosition(popup, calculatePopupPosition(button));\n toggleActiveButton(buttons, button);\n\n if (resizeHandler) {\n window.removeEventListener('resize', resizeHandler);\n }\n resizeHandler = () => setPopupPosition(popup, calculatePopupPosition(button));\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 toggleCheckedState = (checkbox, label, areaId) => {\n const isChecked = checkbox.checked;\n const correspondingImage = document.getElementById(areaId);\n\n // チェックボックス、ラベル、画像の状態をトグル\n if (label) label.classList.toggle('checked', isChecked);\n if (correspondingImage) correspondingImage.classList.toggle('checked', isChecked);\n };\n\n // ページ読み込み時にチェックボックスの状態を設定\n document.querySelectorAll('.searchForm__areaCheckboxLabel .searchForm__areaMapCheckbox').forEach((checkbox) => {\n const label = checkbox.closest('.searchForm__areaCheckboxLabel');\n const areaId = label.getAttribute('data-area-id');\n toggleCheckedState(checkbox, label, areaId);\n });\n\n document.querySelectorAll('.searchForm__areaCheckboxLabel').forEach((label) => {\n label.addEventListener('click', () => {\n const checkbox = label.querySelector('.searchForm__areaMapCheckbox');\n const areaId = label.getAttribute('data-area-id');\n if (checkbox && areaId) {\n checkbox.checked = !checkbox.checked; // チェックボックスの状態をトグル\n toggleCheckedState(checkbox, label, areaId);\n }\n });\n });\n\n document.querySelectorAll('[data-role=\"area-map-image\"]').forEach((area) => {\n area.addEventListener('click', (e) => {\n e.preventDefault();\n const areaId = e.target.getAttribute('data-area-id');\n const correspondingCheckbox = document.querySelector(\n `.searchForm__areaCheckboxLabel--${areaId} .searchForm__areaMapCheckbox`\n );\n const correspondingLabel = document.querySelector(`.searchForm__areaCheckboxLabel--${areaId}`);\n if (correspondingCheckbox && correspondingLabel) {\n correspondingCheckbox.checked = !correspondingCheckbox.checked;\n toggleCheckedState(correspondingCheckbox, correspondingLabel, areaId);\n }\n });\n });\n\n imageMapResizer();\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 // すべての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 function switchGenreAllCheckbox() {\n // 全てのチェックを外す\n $('input[name=\"material_genre_id[all]\"]').prop('checked', false);\n // 全て手動でチェックされた場合、チェックボックスの「全て」にチェックをつける\n if ($('input[name=\"q[genres_id_in][]\"]:checked').length === $('input[name=\"q[genres_id_in][]\"]').length - 1) {\n $('input[name=\"material_genre_id[all]\"]').prop('checked', true);\n }\n }\n\n if ($('#material_search').length) {\n // カテゴリー全て選択時、カテゴリーの状態も変更する\n $('input[name=\"material_genre_id[all]\"]').click((e) => {\n $('input[name=\"q[genres_id_in][]\"]').prop('checked', e.target.checked);\n });\n\n // カテゴリー選択の場合、全ての選択状態を設定/解除を行う\n $('input[name=\"q[genres_id_in][]\"]').click(() => {\n switchGenreAllCheckbox();\n });\n }\n});\n\ndocument.addEventListener('DOMContentLoaded', () => {\n // サムネイル画像を取得\n const previewThumbnails = document.querySelectorAll('[data-role=\"preview-thumbnail\"]');\n\n // 各サムネイル画像にクリックイベントを設定\n previewThumbnails.forEach((thumbnail) => {\n thumbnail.addEventListener('click', () => {\n // ファイルの種類とURLを取得\n const fileType = thumbnail.getAttribute('data-file-type');\n const fileUrl = thumbnail.getAttribute('data-file-url');\n const modal = document.getElementById('preview-modal');\n const previewContent = document.getElementById('preview-content');\n\n // テンプレートを選択してコンテンツを生成\n let template;\n if (fileType === 'pdf') {\n template = document.getElementById('pdf-template').content.cloneNode(true);\n template.querySelector('iframe').src = fileUrl;\n } else if (fileType === 'image') {\n template = document.getElementById('image-template').content.cloneNode(true);\n template.querySelector('img').src = fileUrl;\n } else if (fileType === 'audio') {\n template = document.getElementById('audio-template').content.cloneNode(true);\n template.querySelector('source').src = fileUrl;\n } else if (fileType === 'video') {\n template = document.getElementById('video-template').content.cloneNode(true);\n template.querySelector('source').src = fileUrl;\n } else {\n template = document.createElement('div');\n template.textContent = 'Unsupported file type';\n }\n\n // プレビューコンテンツを設定してモーダルを表示\n previewContent.innerHTML = '';\n previewContent.appendChild(template);\n modal.style.display = \"block\";\n });\n });\n\n // プレビューを閉じる関数\n const closePreview = () => {\n const modal = document.getElementById('preview-modal');\n const previewContent = document.getElementById('preview-content');\n previewContent.innerHTML = '';\n modal.style.display = \"none\";\n }\n\n // モーダル外をクリックしたときに閉じる\n window.onclick = (event) => {\n const modal = document.getElementById('preview-modal');\n if (event.target == modal) {\n closePreview();\n }\n };\n\n // モーダルの閉じるボタンをクリックしたときに閉じる\n const closeModal = document.getElementById('close-modal');\n if (closeModal) {\n closeModal.addEventListener('click', closePreview);\n }\n});\n","// eslint-disable-next-line import/no-extraneous-dependencies\nimport $ from 'jquery';\n\n$(() => {\n function switchAreaAllCheckbox() {\n // 全てのチェックを外す\n $('input[name=\"photo_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=\"photo_area_id[all]\"]').prop('checked', true);\n }\n }\n\n function switchGenreAllCheckbox() {\n // 全てのチェックを外す\n $('input[name=\"photo_genre_id[all]\"]').prop('checked', false);\n // 全て手動でチェックされた場合、チェックボックスの「全て」にチェックをつける\n if ($('input[name=\"q[genres_id_in][]\"]:checked').length === $('input[name=\"q[genres_id_in][]\"]').length - 1) {\n $('input[name=\"photo_genre_id[all]\"]').prop('checked', true);\n }\n }\n\n if ($('#photo_search').length) {\n // エリア全て選択時、カテゴリーの状態も変更する\n $('input[name=\"photo_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=\"photo_genre_id[all]\"]').click((e) => {\n $('input[name=\"q[genres_id_in][]\"]').prop('checked', e.target.checked);\n });\n\n // カテゴリー選択の場合、全ての選択状態を設定/解除を行う\n $('input[name=\"q[genres_id_in][]\"]').click(() => {\n switchGenreAllCheckbox();\n });\n }\n\n // リストに追加するを押下した場合\n if ($('input[name=\"download_target\"]').length) {\n const targets = document.querySelectorAll(`input[type='checkbox'][name='download_target']`);\n\n targets.forEach((target) => {\n target.addEventListener('change', (e) => {\n const photoId = e.target.value;\n if (e.target.checked) {\n // 新規登録;\n $.ajax({\n url: `/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 $(`input[name=\"download_target\"][value=\"${photoId}\"]`).prop('checked', false);\n });\n } else {\n $.ajax({\n url: `/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 $(`input[name=\"download_target\"][value=\"${photoId}\"]`).prop('checked', false);\n });\n }\n });\n });\n }\n\n $('#photo_download').on('click', () => {\n $('input[type=\"checkbox\"][name=\"download_target\"]').prop('checked', false);\n });\n});\n","// eslint-disable-next-line import/no-extraneous-dependencies\nimport $ from 'jquery';\n\n$(() => {\n if ($('#side_content_ai_recommend_spot').length) {\n $.ajax({\n url: '/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 if ($('#side_content_ai_item_recommend_spot').length) {\n $.ajax({\n url: '/side_content_ai_item_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 if ($('#side_content_ai_item_recommend_event').length) {\n $.ajax({\n url: '/side_content_ai_item_recommend_event',\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';\n\n$(() => {\n // 各エリアのチェックボックスが選択された場合、全てのチェックをOff、\n // または全て手動でチェックされた場合は「全て」のチェックボックをOnにする\n function switchAreaAllCheckbox() {\n // 全てのチェックを外す\n $('input[name=\"souvenir_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=\"souvenir_area_id[all]\"]').prop('checked', true);\n }\n }\n\n function switchTagAllCheckbox() {\n // 全てのチェックを外す\n $('input[name=\"souvenir_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=\"souvenir_tag_id[all]\"]').prop('checked', true);\n }\n }\n\n function switchGenreAllCheckbox() {\n // 全てのチェックを外す\n $('input[name=\"souvenir_genre_id[all]\"]').prop('checked', false);\n // 全て手動でチェックされた場合、チェックボックスの「全て」にチェックをつける\n if ($('input[name=\"q[genres_id_in][]\"]:checked').length === $('input[name=\"q[genres_id_in][]\"]').length - 1) {\n $('input[name=\"souvenir_genre_id[all]\"]').prop('checked', true);\n }\n }\n\n if ($('#souvenir_search').length) {\n // エリア全て選択時、エリアの状態も変更する\n $('input[name=\"souvenir_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=\"souvenir_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 $('input[name=\"souvenir_genre_id[all]\"]').click((e) => {\n $('input[name=\"q[genres_id_in][]\"]').prop('checked', e.target.checked);\n });\n\n // カテゴリー選択の場合、全ての選択状態を設定/解除を行う\n $('input[name=\"q[genres_id_in][]\"]').click(() => {\n switchGenreAllCheckbox();\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=\"spot_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=\"spot_area_id[all]\"]').prop('checked', true);\n }\n }\n\n // 各カテゴリーのチェックボックスが選択された場合、全てのチェックをOff、\n // または全て手動でチェックされた場合は「全て」のチェックボックをOnにする\n function switchCategoryAllCheckbox() {\n // 全てのチェックを外す\n $('input[name=\"spot_category_id[all]\"]').prop('checked', false);\n // 全て手動でチェックされた場合、チェックボックスの「全て」にチェックをつける\n if (\n $('input[name=\"q[categories_id_in][]\"]:checked').length ===\n $('input[name=\"q[categories_id_in][]\"]').length - 1\n ) {\n $('input[name=\"spot_category_id[all]\"]').prop('checked', true);\n }\n }\n\n // 各タグのチェックボックスが選択された場合、全てのチェックをOff、\n // または全て手動でチェックされた場合は「全て」のチェックボックをOnにする\n function switchTagAllCheckbox() {\n // 全てのチェックを外す\n $('input[name=\"spot_tag_id[all]\"]').prop('checked', false);\n // 全て手動でチェックされた場合、チェックボックスの「全て」にチェックをつける\n if (\n $('input[name=\"q[tags_id_in][]\"]:checked').length ===\n $('input[name=\"q[tags_id_in][]\"]').length - 1\n ) {\n $('input[name=\"spot_tag_id[all]\"]').prop('checked', true);\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 // エリア全て選択時、エリアの状態も変更する\n $('input[name=\"spot_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=\"spot_category_id[all]\"]').click((e) => {\n $('input[name=\"q[categories_id_in][]\"]').prop('checked', e.target.checked);\n });\n\n // カテゴリー選択の場合、全ての選択状態を設定/解除を行う\n $('input[name=\"q[categories_id_in][]\"]').click(() => {\n switchCategoryAllCheckbox();\n });\n\n // タグ全て選択時、タグの状態も変更する\n $('input[name=\"spot_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","// 動画セクションのモーダル\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('topVideo__modal--active');\n document.body.style.overflow = 'hidden';\n};\n\n/**\n * モーダルを非表示にする純粋関数。\n * @param {Element} modal - 非表示にするモーダル要素。\n */\nconst hideModal = (modal) => {\n modal.classList.remove('topVideo__modal--active');\n document.body.style.overflow = '';\n modal.querySelector('.topVideo__iframe').src = '';\n};\n\n/**\n * Swiperのオートプレイを停止する副作用のある関数。\n * @param {Swiper} swiper - オートプレイを停止するSwiperインスタンス。\n */\nconst stopSwiperAutoplay = (swiper) => {\n if (swiper && swiper.autoplay) {\n swiper.autoplay.stop();\n }\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('.topVideo__modalCloseButton');\n closeButton.addEventListener('click', () => hideModalFunc(modal));\n\n const modalInner = modal.querySelector('.topVideo__modalInner');\n modalInner.addEventListener('click', (e) => e.stopPropagation());\n};\n\n/**\n * モーダル機能を初期化するメインロジック。\n * @param {NodeListOf} sliders - クリックイベントを設定するスライダー要素のリスト。\n * @param {NodeListOf} modals - モーダル要素のリスト。\n * @param {Swiper} swiper - Swiperインスタンス。\n */\nexport const initializeModalFunctionality = (sliders, modals, swiper) => {\n sliders.forEach((slider) => {\n slider.addEventListener('click', () => {\n const movieId = slider.getAttribute('data-movie-slide-id');\n stopSwiperAutoplay(swiper);\n\n const modal = findModalById(Array.from(modals), movieId);\n if (modal) {\n showModal(modal);\n setupClickHandlers(modal, hideModal);\n setIframeSrc(modal);\n }\n });\n });\n};\n","// eslint-disable-next-line import/no-extraneous-dependencies\nimport $ from 'jquery';\nimport Swiper from 'swiper/bundle';\nimport { swiperOptions, toggleSwiperAutoplay } from './module/SwiperFunctions';\nimport { initializeModalFunctionality } from './module/VideoModalFunctions';\n\n$(() => {\n if ($('#top_ai_recommend_spot').length) {\n $.ajax({\n url: '/top_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\ndocument.addEventListener('DOMContentLoaded', () => {\n // サムネイル\n const sliderThumbnail = new Swiper('.mainView__swiperThumbs', {\n slidesPerView: 3.5, // サムネイルの枚数\n spaceBetween: 5,\n });\n\n const mainViewSwiper = new Swiper(\n '.mainView__swiper',\n swiperOptions({\n slidesPerView: 1,\n navigation: {\n nextEl: '.mainView__swiperNextButton',\n prevEl: '.mainView__swiperPrevButton',\n },\n thumbs: {\n swiper: sliderThumbnail,\n },\n })\n );\n\n const mainViewSwiperStopButton = document.querySelector('.mainView__swiperStopButton');\n if (mainViewSwiperStopButton) {\n toggleSwiperAutoplay(mainViewSwiperStopButton, mainViewSwiper);\n }\n\n // 特集記事セクション\n const topFeatureArticlesSwiper = new Swiper(\n '.topFeature__articlesSwiper',\n swiperOptions({\n centeredSlides: true,\n slidesPerView: 1,\n spaceBetween: 32,\n navigation: {\n nextEl: '.topFeature__swiperNextButton',\n prevEl: '.topFeature__swiperPrevButton',\n },\n breakpoints: {\n 600: {\n slidesPerView: 1.5,\n },\n 1280: {\n slidesPerView: 2.5,\n },\n 1680: {\n slidesPerView: 2.75,\n },\n 1920: {\n slidesPerView: 3,\n },\n },\n })\n );\n\n const topFeatureSwiperStopButton = document.querySelector('.topFeature__swiperStopButton');\n toggleSwiperAutoplay(topFeatureSwiperStopButton, topFeatureArticlesSwiper);\n\n // あなたの旅の好みはどっちセクション\n const topLandmarkContentSwiperFirst = new Swiper(\n '.topLandmarkContent.topLandmarkContent--first .topLandmarkContent__swiper',\n swiperOptions({\n slidesPerView: 2,\n allowTouchMove: false,\n spaceBetween: 16,\n navigation: {\n nextEl: '.topLandmarkContent__swiperNextButton',\n prevEl: '.topLandmarkContent__swiperPrevButton',\n },\n breakpoints: {\n 424: {\n slidesPerView: 3,\n },\n 768: {\n slidesPerView: 3.5,\n spaceBetween: 24,\n },\n 1440: {\n slidesPerView: 4.5,\n },\n 1660: {\n slidesPerView: 5.5,\n },\n 1920: {\n slidesPerView: 6.5,\n },\n },\n })\n );\n\n const topLandmarkContentSwiperStopButtonFirst = document.querySelector(\n '.topLandmarkContent--first .topLandmarkContent__swiperStopButton'\n );\n toggleSwiperAutoplay(topLandmarkContentSwiperStopButtonFirst, topLandmarkContentSwiperFirst);\n\n const topLandmarkContentSwiperSecond = new Swiper(\n '.topLandmarkContent.topLandmarkContent--second .topLandmarkContent__swiper',\n swiperOptions({\n slidesPerView: 2,\n allowTouchMove: false,\n spaceBetween: 16,\n navigation: {\n nextEl: '.topLandmarkContent__swiperNextButton',\n prevEl: '.topLandmarkContent__swiperPrevButton',\n },\n breakpoints: {\n 424: {\n slidesPerView: 3,\n },\n 768: {\n spaceBetween: 24,\n slidesPerView: 3.5,\n },\n 1440: {\n slidesPerView: 4.5,\n },\n 1660: {\n slidesPerView: 5.5,\n },\n 1920: {\n slidesPerView: 6.5,\n },\n },\n })\n );\n\n const topLandmarkContentSwiperStopButtonSecond = document.querySelector(\n '.topLandmarkContent--second .topLandmarkContent__swiperStopButton'\n );\n toggleSwiperAutoplay(topLandmarkContentSwiperStopButtonSecond, topLandmarkContentSwiperSecond);\n\n // ランキングセクション\n const tabButtons = document.querySelectorAll('.topRanking__tabButton');\n const contentLists = document.querySelectorAll('.topRanking__content');\n\n if (tabButtons && contentLists) {\n const setActiveTab = (tabId) => {\n tabButtons.forEach((button) => {\n if (button.dataset.role === tabId) {\n button.classList.add('u-tabButton--active');\n } else {\n button.classList.remove('u-tabButton--active');\n }\n });\n\n contentLists.forEach((list) => {\n if (list.dataset.role === tabId) {\n list.classList.add('topRanking__content--active');\n } else {\n list.classList.remove('topRanking__content--active');\n }\n });\n };\n\n tabButtons.forEach((button) => {\n button.addEventListener('click', () => setActiveTab(button.dataset.role));\n });\n\n // 初期表示時に最初のタブをアクティブに\n if (tabButtons.length > 0) {\n setActiveTab(tabButtons[0].dataset.role);\n }\n }\n\n // videoセクションのswiper\n const topVideoSwiperElement = document.querySelector('.topVideo__swiper');\n let topVideoSwiper;\n if (topVideoSwiperElement) {\n topVideoSwiper = new Swiper(\n topVideoSwiperElement,\n swiperOptions({\n slidesPerView: 1,\n spaceBetween: 10,\n navigation: {\n nextEl: '.topVideo__swiperNextButton',\n prevEl: '.topVideo__swiperPrevButton',\n },\n freeMode: true,\n freeModeMomentum: true,\n freeModeMomentumRatio: 2,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 0.3,\n freeModeSticky: true,\n breakpoints: {\n 768: {\n slidesPerView: 2,\n spaceBetween: 24,\n },\n 1160: {\n slidesPerView: 3,\n spaceBetween: 32,\n },\n },\n })\n );\n\n const topVideoSwiperStopButton = document.querySelector('.topVideo__swiperStopButton');\n if (topVideoSwiperStopButton) {\n toggleSwiperAutoplay(topVideoSwiperStopButton, topVideoSwiper);\n }\n }\n\n // 動画セクションのモーダル\n const movieSliders = document.querySelectorAll('.topVideo__thumbnailButton');\n const movieModals = document.querySelectorAll('.topVideo__modal');\n initializeModalFunctionality(movieSliders, movieModals, topVideoSwiper);\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","/**\n * 特定の要素へスムーススクロールする関数\n * @param {Object} config - 構成設定オブジェクト\n */\nexport const setupSmoothScroll = ({ scrollToSelector, headerSelector }) => {\n const scrollToElements = document.querySelectorAll(scrollToSelector);\n scrollToElements.forEach(element => {\n element.addEventListener('click', event => {\n event.preventDefault();\n const targetId = element.getAttribute('href').substring(1);\n const targetElement = document.getElementById(targetId);\n const headerHeight = document.querySelector(headerSelector).offsetHeight;\n\n window.scrollTo({\n top: targetElement.offsetTop - headerHeight,\n behavior: 'smooth',\n });\n });\n });\n};\n\n/**\n * トップへ戻るボタンの表示をトグルする関数\n * @param {Object} config - 構成設定オブジェクト\n */\nexport const setupScrollTopButton = ({ scrollTopButtonSelector, activeClass }) => {\n const scrollTopButton = document.querySelector(scrollTopButtonSelector);\n if (scrollTopButton) {\n const toggleButtonVisibility = () => {\n if (window.scrollY > 70) {\n scrollTopButton.classList.add(activeClass);\n } else {\n scrollTopButton.classList.remove(activeClass);\n }\n };\n\n toggleButtonVisibility();\n window.addEventListener('scroll', toggleButtonVisibility);\n scrollTopButton.addEventListener('click', () => {\n window.scrollTo({ top: 0, behavior: 'smooth' });\n });\n }\n};\n","import { setupSmoothScroll, setupScrollTopButton } from './module/ScrollFunctions'\n\n// ページの設定オブジェクト\nconst config = {\n scrollToSelector: '[data-role=\"scroll-to-element\"]',\n headerSelector: '.header',\n scrollTopButtonSelector: '.u-scrollToTop',\n activeClass: 'active'\n};\n\ndocument.addEventListener('DOMContentLoaded', () => {\n // スムーススクロールの設定\n const smoothScrollConfig = {\n scrollToSelector: config.scrollToSelector,\n headerSelector: config.headerSelector\n };\n setupSmoothScroll(smoothScrollConfig);\n\n // トップへ戻るボタンの設定\n const scrollTopButtonConfig = {\n scrollTopButtonSelector: config.scrollTopButtonSelector,\n activeClass: config.activeClass\n };\n setupScrollTopButton(scrollTopButtonConfig);\n});\n","/**\n * 質問セクションのアコーディオン機能を設定する関数\n * @param {Object} config - 構成設定オブジェクト\n */\nexport const setupQuestionToggle = ({ questionSelector, answerActiveClass }) => {\n const questions = document.querySelectorAll(questionSelector);\n\n questions.forEach(question => {\n question.addEventListener('click', () => {\n const answer = question.nextElementSibling;\n\n // クラスがすでに存在するか確認して、max-heightを設定する\n if (answer.classList.contains(answerActiveClass)) {\n // クラスを削除し、高さを0にする\n answer.style.maxHeight = null;\n answer.classList.remove(answerActiveClass);\n } else {\n // クラスを追加し、実際の高さを設定する\n answer.style.maxHeight = answer.scrollHeight + \"px\";\n answer.classList.add(answerActiveClass);\n }\n });\n });\n};\n","import { setupQuestionToggle } from './module/QuestionsFunctions';\n\n// 設定オブジェクト\nconst config = {\n questionSelector: '.questions__question',\n answerActiveClass: 'questions__answer--active'\n};\n\n// DOMの読み込みが完了したら設定する\ndocument.addEventListener('DOMContentLoaded', () => {\n setupQuestionToggle(config);\n});\n","import Swiper from 'swiper/bundle';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n if (document.querySelector('.coursesShowRecommend__swiper')) {\n const souseShowRecommendSwiper = new Swiper('.coursesShowRecommend__swiper', {\n slidesPerView: 1,\n loop: true,\n autoplay: false,\n speed: 3000,\n disableOnInteraction: false,\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n });\n }\n});\n","import Swiper from 'swiper/bundle';\nimport { swiperOptions } from '../module/SwiperFunctions';\n\nif (document.querySelector(\"[data-role='activityInfoSwiper']\") !== null) {\n new Swiper(\"[data-role='activityInfoSwiper']\", swiperOptions({\n slidesPerView: 1,\n spaceBetween: 16,\n centeredSlides: true,\n navigation: {\n nextEl: '.u-swiperButton--next',\n prevEl: '.u-swiperButton--prev',\n },\n breakpoints: {\n 768: {\n slidesPerView: 1.7,\n },\n },\n pagination: {\n el: '.activityInfo__swiperPagination',\n clickable: true,\n },\n }));\n}\n","import Swiper from 'swiper/bundle';\nimport { swiperOptions } from '../module/SwiperFunctions';\n\nconst nearbySpotsSwiperElm = document.querySelectorAll('[data-role=\"nearbySpotsSwiper\"]');\nif (nearbySpotsSwiperElm.length) {\n nearbySpotsSwiperElm.forEach((elm) => {\n new Swiper(elm, swiperOptions({\n slidesPerView: 2,\n spaceBetween: 24,\n navigation: {\n nextEl: elm.querySelector('.u-swiperButton--next'),\n prevEl: elm.querySelector('.u-swiperButton--prev'),\n },\n breakpoints: {\n 768: {\n slidesPerView: 2.2,\n spaceBetween: 32,\n },\n },\n }));\n });\n}\n","import { initResponsiveSwiper, swiperOptions } from '../module/SwiperFunctions';\n\nconst sideRecommendSwiperOptions = swiperOptions({\n slidesPerView: 2,\n spaceBetween: 16,\n navigation: {\n nextEl: '.u-swiperButton--next',\n prevEl: '.u-swiperButton--prev',\n },\n});\n\nconst sideRecommendSwiperElements = document.querySelectorAll('[data-role=\"sideRecommendSwiper\"]');\nif (sideRecommendSwiperElements) {\n sideRecommendSwiperElements.forEach((element) => {\n initResponsiveSwiper(element, sideRecommendSwiperOptions)\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","/**\n * Cookie同意ポップアップの表示と同意処理を設定する関数\n * @param {Object} config - 構成設定オブジェクト\n */\nexport const setupCookieConsent = ({ consentPopupId, consentButtonId, consentKey, displayClass }) => {\n const consentPopup = document.getElementById(consentPopupId);\n const acceptButton = document.getElementById(consentButtonId);\n const consent = localStorage.getItem(consentKey);\n\n if (consent !== 'true') {\n // ローカルストレージに同意の記録がない場合、ポップアップを表示\n consentPopup.classList.add(displayClass);\n }\n\n acceptButton.addEventListener('click', () => {\n // 同意するをクリックした場合、ローカルストレージに同意を記録し、ポップアップを非表示にする\n localStorage.setItem(consentKey, 'true');\n consentPopup.classList.remove(displayClass);\n });\n};\n","import { setupCookieConsent } from './module/CookieConsentFunctions';\n\n// 設定オブジェクト\nconst config = {\n consentPopupId: 'cookie-consent-popup',\n consentButtonId: 'cookie-consent-button',\n consentKey: 'cookieConsent',\n displayClass: 'u-displayBlock'\n};\n\n// DOMの読み込みが完了したら設定する\ndocument.addEventListener('DOMContentLoaded', () => {\n setupCookieConsent(config);\n});\n","// ひらがなをカタカナに変換\nexport const toKatakana = (str) => {\n return str.replace(/[\\u3041-\\u3096]/g, (match) => {\n var chr = match.charCodeAt(0) + 0x60;\n return String.fromCharCode(chr);\n });\n};\n\n// カタカナをひらがなに変換\nexport const toHiragana = (str) => {\n return str.replace(/[\\u30a1-\\u30f6]/g, (match) => {\n var chr = match.charCodeAt(0) - 0x60;\n return String.fromCharCode(chr);\n });\n};\n","import {\n setupFloatingButtons,\n setupLanguageMenu,\n setupSearchMenu,\n setupLanguageSearch,\n} from './module/FloatButtonFunctions';\n\n// 設定オブジェクト\nconst config = {\n floatButtonsSelector: '.floatButtons',\n languageButtonSelector: '[data-role=\"float-Button-language\"]',\n languageMenuSelector: '[data-role=\"float-menu-language\"]',\n closeButtonSelector: '.floatMenu__closeButton',\n searchButtonSelector: '[data-role=\"float-Button-search\"]',\n searchMenuSelector: '[data-role=\"float-menu-search\"]',\n inputSelector: '.floatMenu__languageInput',\n listItemsSelector: '.floatMenu__contentsList',\n messageSelector: 'no-language-message',\n menuActiveClass: 'floatMenu--active',\n};\n\n// DOMの読み込みが完了したら設定する\ndocument.addEventListener('DOMContentLoaded', () => {\n // フローティングボタンの設定\n const floatingButtonsConfig = {\n floatButtonsSelector: config.floatButtonsSelector,\n };\n setupFloatingButtons(floatingButtonsConfig);\n\n // 言語メニューの設定\n const languageMenuConfig = {\n languageButtonSelector: config.languageButtonSelector,\n languageMenuSelector: config.languageMenuSelector,\n closeButtonSelector: config.closeButtonSelector,\n menuActiveClass: config.menuActiveClass,\n };\n setupLanguageMenu(languageMenuConfig);\n\n // 検索メニューの設定\n const searchMenuConfig = {\n searchButtonSelector: config.searchButtonSelector,\n searchMenuSelector: config.searchMenuSelector,\n closeButtonSelector: config.closeButtonSelector,\n menuActiveClass: config.menuActiveClass,\n };\n setupSearchMenu(searchMenuConfig);\n\n // 言語検索機能の設定\n const languageSearchConfig = {\n inputSelector: config.inputSelector,\n listItemsSelector: config.listItemsSelector,\n messageSelector: config.messageSelector,\n };\n setupLanguageSearch(languageSearchConfig);\n});\n","import { toKatakana } from './module';\n\n/**\n * フローティングボタンのスクロールに応じた表示切り替え\n * @param {Object} config - 構成設定オブジェクト\n */\nexport const setupFloatingButtons = ({ floatButtonsSelector }) => {\n const floatButtons = document.querySelector(floatButtonsSelector);\n let startPosition = 0;\n let windowPosition;\n\n window.addEventListener('scroll', () => {\n windowPosition = window.scrollY;\n if (windowPosition <= startPosition) {\n floatButtons.classList.add('floatButtons--active');\n } else {\n floatButtons.classList.remove('floatButtons--active');\n }\n startPosition = windowPosition;\n });\n};\n\n/**\n * 言語メニューの表示制御\n * @param {Object} config - 構成設定オブジェクト\n */\nexport const setupLanguageMenu = ({\n languageButtonSelector,\n languageMenuSelector,\n closeButtonSelector,\n menuActiveClass,\n}) => {\n const languageButton = document.querySelector(languageButtonSelector);\n const languageMenu = document.querySelector(languageMenuSelector);\n const languageCloseButton = languageMenu.querySelector(closeButtonSelector);\n\n languageButton.addEventListener('click', () => {\n languageMenu.classList.add(menuActiveClass);\n document.body.style.overflow = 'hidden';\n });\n languageCloseButton.addEventListener('click', () => {\n languageMenu.classList.remove(menuActiveClass);\n document.body.style.overflow = 'auto';\n });\n};\n\n/**\n * 検索メニューの表示制御\n * @param {Object} config - 構成設定オブジェクト\n */\nexport const setupSearchMenu = ({ searchButtonSelector, searchMenuSelector, closeButtonSelector, menuActiveClass }) => {\n const searchButton = document.querySelector(searchButtonSelector);\n const searchMenu = document.querySelector(searchMenuSelector);\n const searchCloseButton = searchMenu.querySelector(closeButtonSelector);\n\n searchButton.addEventListener('click', () => {\n searchMenu.classList.add(menuActiveClass);\n document.body.style.overflow = 'hidden';\n });\n searchCloseButton.addEventListener('click', () => {\n searchMenu.classList.remove(menuActiveClass);\n document.body.style.overflow = 'auto';\n });\n};\n\n/**\n * 言語検索機能の設定\n * @param {Object} config - 構成設定オブジェクト\n */\nexport const setupLanguageSearch = ({ inputSelector, listItemsSelector, messageSelector }) => {\n const languageInput = document.querySelector(inputSelector);\n const languageListItems = document.querySelectorAll(listItemsSelector);\n const noLanguageMessage = document.getElementById(messageSelector);\n\n languageInput.addEventListener('input', () => {\n const filter = toKatakana(languageInput.value.toUpperCase());\n let found = false;\n\n languageListItems.forEach((item) => {\n let txtValue = toKatakana(item.textContent.toUpperCase() || item.innerText.toUpperCase());\n if (txtValue.includes(filter)) {\n item.style.display = '';\n found = true;\n } else {\n item.style.display = 'none';\n }\n });\n\n noLanguageMessage.style.display = found ? 'none' : '';\n });\n};\n","/**\n * クラスの切り替えを行う関数\n * @param {Element} element - DOM要素\n * @param {string} className - 切り替えるクラス名\n * @param {boolean} condition - クラスを追加するかどうかの条件\n */\nexport const toggleClass = (element, className, condition) => {\n if (condition) {\n element.classList.add(className);\n } else {\n element.classList.remove(className);\n }\n};\n\n/**\n * ヘッダーの位置を観察し、特定のクラスをトグルする関数\n * @param {Object} config - 構成設定オブジェクト\n */\nexport const observeHeaderPosition = ({ headerSelector, sentinelSelector, fixedClass }) => {\n const header = document.querySelector(headerSelector);\n const sentinel = document.querySelector(sentinelSelector);\n\n // sentinel要素が存在しない場合は、処理を行わない\n if (!sentinel) {\n return;\n }\n\n const setInitialClass = () => {\n const sentinelPosition = sentinel.getBoundingClientRect().top + window.scrollY;\n toggleClass(header, fixedClass, window.scrollY > sentinelPosition);\n };\n\n setInitialClass();\n\n const observerOptions = {\n root: null,\n rootMargin: '0px',\n threshold: 1.0,\n };\n\n new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n toggleClass(header, fixedClass, !entry.isIntersecting);\n });\n }, observerOptions).observe(sentinel);\n};\n\n/**\n * ハンバーガーメニューのトグル機能を設定する関数\n * @param {Object} config - 構成設定オブジェクト\n */\nexport const setupMenuToggle = ({ headerSelector, openButtonSelector, activeClass }) => {\n const header = document.querySelector(headerSelector);\n const headerOpenButton = document.querySelector(openButtonSelector);\n\n if (header && headerOpenButton) {\n headerOpenButton.addEventListener('click', () => {\n header.classList.toggle(activeClass);\n document.body.style.overflow = header.classList.contains(activeClass) ? 'hidden' : '';\n });\n }\n};\n","import { observeHeaderPosition, setupMenuToggle } from './module/HeaderFunctions';\n\n// 設定オブジェクト\nconst config = {\n headerSelector: '.header',\n sentinelSelector: '[data-role=\"header-sentinel\"]',\n openButtonSelector: '.header__openButton',\n fixedClass: 'header--fixed',\n activeClass: 'header--active'\n};\n\n// DOMの読み込みが完了したらリスナーを設定\ndocument.addEventListener('DOMContentLoaded', () => {\n // observeHeaderPositionに必要な設定のみを抽出\n const observeConfig = {\n headerSelector: config.headerSelector,\n sentinelSelector: config.sentinelSelector,\n fixedClass: config.fixedClass\n };\n observeHeaderPosition(observeConfig);\n\n // setupMenuToggleに必要な設定のみを抽出\n const menuToggleConfig = {\n headerSelector: config.headerSelector, // ここは同じセレクタを使用\n openButtonSelector: config.openButtonSelector,\n activeClass: config.activeClass\n };\n setupMenuToggle(menuToggleConfig);\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","SelectBtn","constructor","node","store","inactiveSelectNodes","resetInputNodes","name","dataset","searchName","activeClassName","config","className","activeSelectBtn","state","SelectInput","SelectBundler","btns","querySelectorAll","selectorName","btn","forEach","push","bind","input","querySelector","btnsActiveClassName","inputActiveClassName","activeSelectInput","Submit","preventDefault","end","locale","submitBaseUrl","open","alert","msg","validError","Gmap2PointLinkCreateUI","appSelector","bundler","submit","mpBundleType","outlineMapImages","zoomBackground","zoomImg","upScale","style","display","setAttribute","target","getAttribute","image","downScale","$","on","children","toggleClass","next","slideToggle","year","removeClass","targetElement","closest","month","prop","checked","Form","elm","app","SubmitBtn","setGTMParams","requestURI","aicAPIBaseURI","getQueries","loader","show","axios","headers","request","use","csrfToken","then","res","getElementById","aiRoutePlannerSubmitBtnScroller","scroll","hide","catch","err","console","log","response","StyleCard","styleCards","card","active","inactive","PrefPresetCard","params","pref1","pref2","pref3","pref4","pref5","taste4","prefPresetCards","updatePrefSliders","PrefSlider","update","key","Loader","hideClassName","hideClass","Aic","opts","apiKey","place","selector","form","styleCard","prefPresetCard","prefSlider","submitBtn","startSpotSelect","durationSelect","startTimeSelect","daysSelect","transportationSelect","prefSliders","slider","init","i","firstElm","crStyleCard","pref1Slider","pref2Slider","pref3Slider","pref4Slider","pref5Slider","taste4Slider","start_spot_id","duration","start_time","days","transportation","taste","taste1","taste2","taste3","pref","info","JSON","stringify","inactivePrefPresetCards","cards","targetElmIdName","yOffset","animInterval","stepCount","stepNum","documentElement","scrollTop","distance","getBoundingClientRect","top","scrollBy","AicUi","swiperOptions","customOptions","newDefaultOptions","defaultOptions","loop","autoplay","delay","speed","initResponsiveSwiper","container","maxWidth","swiper","initSwiper","innerWidth","Swiper","onResize","destroy","updateButtonState","isAutoplayRunning","buttonElement","toggleSwiperAutoplay","swiperInstance","running","stop","calculatePopupPosition","margin","height","scrollY","setPopupPosition","popup","removeResizeHandler","setupButtonEventListeners","buttons","contents","resizeHandler","button","role","split","getActiveContentRole","toggleModalAndContents","content","toggle","toggleActiveButton","activeButton","closeButton","toggleCheckedState","checkbox","label","areaId","isChecked","correspondingImage","area","correspondingCheckbox","correspondingLabel","imageMapResizer","initializeAllThemeSwipers","swiperDataRole","paginationDataRole","swiperElements","paginationElements","swiperElement","index","paginationElement","slidesPerView","pagination","el","clickable","relatedArticleSwiperElement","navigation","nextEl","prevEl","breakpoints","spaceBetween","thumbnail","fileType","fileUrl","modal","previewContent","template","cloneNode","src","createElement","textContent","appendChild","closePreview","onclick","closeModal","photoId","attr","dataType","photo_id","timeout","fail","successGetPosition","coords","latitude","longitude","location","href","failGetPosition","error","PERMISSION_DENIED","POSITION_UNAVAILABLE","TIMEOUT","UNKNOWN_ERROR","enableHighAccuracy","maximumAge","navigator","geolocation","getCurrentPosition","hideModal","body","overflow","initializeModalFunctionality","sliders","modals","movieId","stopSwiperAutoplay","findModalById","find","Array","from","showModal","setupClickHandlers","hideModalFunc","stopPropagation","iframeElement","setIframeSrc","sliderThumbnail","mainViewSwiper","thumbs","mainViewSwiperStopButton","topFeatureArticlesSwiper","centeredSlides","topFeatureSwiperStopButton","topLandmarkContentSwiperFirst","allowTouchMove","topLandmarkContentSwiperStopButtonFirst","topLandmarkContentSwiperSecond","topLandmarkContentSwiperStopButtonSecond","tabButtons","contentLists","setActiveTab","tabId","list","topVideoSwiperElement","topVideoSwiper","freeMode","freeModeMomentum","freeModeMomentumRatio","freeModeMomentumBounce","freeModeMomentumBounceRatio","freeModeSticky","topVideoSwiperStopButton","movieSliders","movieModals","tabWrap","currentTarget","parents","tabBtn","tabContents","addClass","elmIndex","eq","setupSmoothScroll","scrollToSelector","headerSelector","targetId","substring","headerHeight","offsetHeight","scrollTo","offsetTop","behavior","setupScrollTopButton","scrollTopButtonSelector","activeClass","scrollTopButton","toggleButtonVisibility","questionSelector","answerActiveClass","setupQuestionToggle","question","answer","nextElementSibling","contains","maxHeight","scrollHeight","disableOnInteraction","nearbySpotsSwiperElm","sideRecommendSwiperOptions","sideRecommendSwiperElements","consentPopupId","consentButtonId","consentKey","displayClass","setupCookieConsent","consentPopup","acceptButton","toKatakana","str","replace","match","chr","charCodeAt","String","fromCharCode","setupFloatingButtons","floatButtonsSelector","floatButtons","windowPosition","startPosition","setupLanguageMenu","languageButtonSelector","languageMenuSelector","closeButtonSelector","menuActiveClass","languageButton","languageMenu","languageCloseButton","setupSearchMenu","searchButtonSelector","searchMenuSelector","searchButton","searchMenu","searchCloseButton","setupLanguageSearch","inputSelector","listItemsSelector","messageSelector","languageInput","languageListItems","noLanguageMessage","filter","toUpperCase","found","item","innerText","condition","observeHeaderPosition","sentinelSelector","fixedClass","header","sentinel","setInitialClass","sentinelPosition","IntersectionObserver","entries","entry","isIntersecting","root","rootMargin","threshold","observe","setupMenuToggle","openButtonSelector","headerOpenButton"],"sourceRoot":""}