{ "version": 3, "sources": ["../../node_modules/smoothscroll-polyfill/dist/smoothscroll.js", "../../src/scripts/modules/prepare-global-navigation.ts", "../../src/scripts/modules/embed-movie.ts", "../../src/scripts/constants.ts", "../../node_modules/@googlemaps/js-api-loader/node_modules/fast-deep-equal/index.js", "../../node_modules/@googlemaps/js-api-loader/src/index.ts", "../../src/scripts/modules/direction-service.ts", "../../src/scripts/modules/embed-map.ts", "../../src/scripts/main.ts", "../../src/scripts/modules/gallery.ts"], "sourcesContent": ["/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n 'use strict';\n\n // polyfill\n function polyfill() {\n // aliases\n var w = window;\n var d = document;\n\n // return if scroll behavior is supported and polyfill is not forced\n if (\n 'scrollBehavior' in d.documentElement.style &&\n w.__forceSmoothScrollPolyfill__ !== true\n ) {\n return;\n }\n\n // globals\n var Element = w.HTMLElement || w.Element;\n var SCROLL_TIME = 468;\n\n // object gathering original scroll methods\n var original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element.prototype.scroll || scrollElement,\n scrollIntoView: Element.prototype.scrollIntoView\n };\n\n // define timing method\n var now =\n w.performance && w.performance.now\n ? w.performance.now.bind(w.performance)\n : Date.now;\n\n /**\n * indicates if a the current browser is made by Microsoft\n * @method isMicrosoftBrowser\n * @param {String} userAgent\n * @returns {Boolean}\n */\n function isMicrosoftBrowser(userAgent) {\n var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n }\n\n /*\n * IE has rounding bug rounding down clientHeight and clientWidth and\n * rounding up scrollHeight and scrollWidth causing false positives\n * on hasScrollableSpace\n */\n var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n /**\n * changes scroll position inside an element\n * @method scrollElement\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function scrollElement(x, y) {\n this.scrollLeft = x;\n this.scrollTop = y;\n }\n\n /**\n * returns result of applying ease math function to a number\n * @method ease\n * @param {Number} k\n * @returns {Number}\n */\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n /**\n * indicates if a smooth behavior should be applied\n * @method shouldBailOut\n * @param {Number|Object} firstArg\n * @returns {Boolean}\n */\n function shouldBailOut(firstArg) {\n if (\n firstArg === null ||\n typeof firstArg !== 'object' ||\n firstArg.behavior === undefined ||\n firstArg.behavior === 'auto' ||\n firstArg.behavior === 'instant'\n ) {\n // first argument is not an object/null\n // or behavior is auto, instant or undefined\n return true;\n }\n\n if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n // first argument is an object and behavior is smooth\n return false;\n }\n\n // throw error when behavior is not supported\n throw new TypeError(\n 'behavior member of ScrollOptions ' +\n firstArg.behavior +\n ' is not a valid value for enumeration ScrollBehavior.'\n );\n }\n\n /**\n * indicates if an element has scrollable space in the provided axis\n * @method hasScrollableSpace\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function hasScrollableSpace(el, axis) {\n if (axis === 'Y') {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n\n if (axis === 'X') {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n\n /**\n * indicates if an element has a scrollable overflow property in the axis\n * @method canOverflow\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function canOverflow(el, axis) {\n var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n return overflowValue === 'auto' || overflowValue === 'scroll';\n }\n\n /**\n * indicates if an element can be scrolled in either axis\n * @method isScrollable\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function isScrollable(el) {\n var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n return isScrollableY || isScrollableX;\n }\n\n /**\n * finds scrollable parent of an element\n * @method findScrollableParent\n * @param {Node} el\n * @returns {Node} el\n */\n function findScrollableParent(el) {\n while (el !== d.body && isScrollable(el) === false) {\n el = el.parentNode || el.host;\n }\n\n return el;\n }\n\n /**\n * self invoked function that, given a context, steps through scrolling\n * @method step\n * @param {Object} context\n * @returns {undefined}\n */\n function step(context) {\n var time = now();\n var value;\n var currentX;\n var currentY;\n var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n // avoid elapsed times higher than one\n elapsed = elapsed > 1 ? 1 : elapsed;\n\n // apply easing to elapsed time\n value = ease(elapsed);\n\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n\n context.method.call(context.scrollable, currentX, currentY);\n\n // scroll more if we have not reached our destination\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n\n /**\n * scrolls window or element with a smooth behavior\n * @method smoothScroll\n * @param {Object|Node} el\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function smoothScroll(el, x, y) {\n var scrollable;\n var startX;\n var startY;\n var method;\n var startTime = now();\n\n // define scroll context\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n }\n\n // scroll looping over a frame\n step({\n scrollable: scrollable,\n method: method,\n startTime: startTime,\n startX: startX,\n startY: startY,\n x: x,\n y: y\n });\n }\n\n // ORIGINAL METHODS OVERRIDES\n // w.scroll and w.scrollTo\n w.scroll = w.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object'\n ? arguments[0]\n : w.scrollX || w.pageXOffset,\n // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined\n ? arguments[1]\n : w.scrollY || w.pageYOffset\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : w.scrollX || w.pageXOffset,\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : w.scrollY || w.pageYOffset\n );\n };\n\n // w.scrollBy\n w.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object' ? arguments[0] : 0,\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined ? arguments[1] : 0\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n );\n };\n\n // Element.prototype.scroll and Element.prototype.scrollTo\n Element.prototype.scroll = Element.prototype.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n // if one number is passed, throw error to match Firefox implementation\n if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n throw new SyntaxError('Value could not be converted');\n }\n\n original.elementScroll.call(\n this,\n // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop\n );\n\n return;\n }\n\n var left = arguments[0].left;\n var top = arguments[0].top;\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n this,\n this,\n typeof left === 'undefined' ? this.scrollLeft : ~~left,\n typeof top === 'undefined' ? this.scrollTop : ~~top\n );\n };\n\n // Element.prototype.scrollBy\n Element.prototype.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(\n this,\n arguments[0].left !== undefined\n ? ~~arguments[0].left + this.scrollLeft\n : ~~arguments[0] + this.scrollLeft,\n arguments[0].top !== undefined\n ? ~~arguments[0].top + this.scrollTop\n : ~~arguments[1] + this.scrollTop\n );\n\n return;\n }\n\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n };\n\n // Element.prototype.scrollIntoView\n Element.prototype.scrollIntoView = function() {\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(\n this,\n arguments[0] === undefined ? true : arguments[0]\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n var scrollableParent = findScrollableParent(this);\n var parentRects = scrollableParent.getBoundingClientRect();\n var clientRects = this.getBoundingClientRect();\n\n if (scrollableParent !== d.body) {\n // reveal element inside parent\n smoothScroll.call(\n this,\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top\n );\n\n // reveal parent in viewport unless is fixed\n if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: 'smooth'\n });\n }\n } else {\n // reveal element in viewport\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: 'smooth'\n });\n }\n };\n }\n\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n // commonjs\n module.exports = { polyfill: polyfill };\n } else {\n // global\n polyfill();\n }\n\n}());\n", "const toggle = (container: Element) => {\n container.classList.toggle('-open');\n};\n\nconst close = (container: Element) => {\n container.classList.remove('-open');\n};\n\nexport const prepareGlobalNavigation = (el: Element): void => {\n if (!el) {\n return;\n }\n\n const trigger = el.querySelector('[data-global-navigation-trigger]');\n const links = el.querySelectorAll('.GlobalNavigationItem_link');\n const container = el.querySelector('[data-global-navigation-items]');\n\n if (!trigger || !container) {\n return;\n }\n\n trigger.addEventListener('click', () => {\n toggle(container);\n });\n\n Array.from(links).forEach((link) => {\n link.addEventListener('click', (event) => {\n const target = event.currentTarget as HTMLAnchorElement;\n const link = target.getAttribute('href') || '';\n if (!/^#.*/.test(link) && link !== '/') {\n close(container);\n return;\n }\n\n event.preventDefault();\n\n const targetElement =\n link != '/' ? document.querySelector(link) : document.body;\n if (targetElement) {\n targetElement.scrollIntoView({ block: 'start', behavior: 'smooth' });\n }\n close(container);\n });\n });\n};\n", "import { YoutubeOption } from '../constants';\nimport Player = YT.Player;\n\ninterface ExtendedWindow extends Window {\n onYouTubeIframeAPIReady(): void;\n}\ndeclare const window: ExtendedWindow;\n\nconst loadScript = (): Promise => {\n const scriptTag = document.createElement('script');\n scriptTag.src = 'https://www.youtube.com/iframe_api';\n const head = document.querySelector('head') as HTMLElement;\n head.append(scriptTag);\n\n return new Promise((resolve) => {\n window.onYouTubeIframeAPIReady = () => {\n resolve();\n };\n });\n};\n\nconst prepareOnResize = (player: Player, option: YoutubeOption) => {\n const size = getAdjustedSize(option);\n player.setSize(size.width, size.height);\n\n window.addEventListener('resize', () => {\n const adjustedSize = getAdjustedSize(option);\n player.setSize(adjustedSize.width, adjustedSize.height);\n });\n};\n\nconst getAdjustedSize = (\n option: YoutubeOption\n): { width: number; height: number } => {\n const width = window.innerWidth;\n const height = option.height * (width / option.width);\n return { width, height };\n};\n\nexport const embedMovie = async (\n wrapper: HTMLElement,\n container: HTMLElement,\n option: YoutubeOption\n): Promise => {\n await loadScript();\n const size = getAdjustedSize(option);\n wrapper.setAttribute('height', size.height.toString());\n wrapper.setAttribute('width', size.width.toString());\n\n const player = new YT.Player(container, {\n height: size.height,\n width: size.width,\n videoId: option.id,\n playerVars: {\n controls: 1,\n rel: 0,\n },\n events: {\n onReady: () => {\n player.mute();\n player.playVideo();\n prepareOnResize(player, option);\n setTimeout(() => {\n wrapper.classList.remove('-hide');\n }, 1000);\n },\n },\n });\n};\n", "export interface YoutubeOption {\n id: string;\n width: number;\n height: number;\n}\nexport const youtubeOption: YoutubeOption = {\n id: 'qHncetZg9to',\n width: 1680,\n height: 945,\n};\n\nexport const mapApiKey = 'AIzaSyBnSknIypEJiLjnJnmZksTL8falibNFkzE';\nexport const position = {\n lat: 35.664399,\n lng: 139.729877,\n};\nexport const defaultCenter = {\n lat: 35.66517899564566,\n lng: 139.729877,\n};\nexport const stationPositions = {\n roppongi7: { lat: 35.66462963519456, lng: 139.7310884422293 },\n roppongi4a: { lat: 35.66308142773969, lng: 139.73156482540358 },\n nogizaka3: { lat: 35.66724427667675, lng: 139.72717052284597 },\n};\n", "'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n", "/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at.\n *\n * Http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport isEqual from \"fast-deep-equal\";\n\n/**\n * @ignore\n */\ndeclare global {\n interface Window {\n __googleMapsCallback: (e: Event) => void;\n }\n}\n\nexport const DEFAULT_ID = \"__googleMapsScriptId\";\n\ntype Libraries = (\n | \"drawing\"\n | \"geometry\"\n | \"localContext\"\n | \"places\"\n | \"visualization\"\n)[];\n\n/**\n * The Google Maps JavaScript API\n * [documentation](https://developers.google.com/maps/documentation/javascript/tutorial)\n * is the authoritative source for [[LoaderOptions]].\n/**\n * Loader options\n */\nexport interface LoaderOptions {\n /**\n * See https://developers.google.com/maps/documentation/javascript/get-api-key.\n */\n apiKey: string;\n /**\n * @deprecated See https://developers.google.com/maps/premium/overview.\n */\n channel?: string;\n /**\n * @deprecated See https://developers.google.com/maps/premium/overview, use `apiKey` instead.\n */\n client?: string;\n /**\n * In your application you can specify release channels or version numbers:\n *\n * The weekly version is specified with `version=weekly`. This version is\n * updated once per week, and is the most current.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly'});\n * ```\n *\n * The quarterly version is specified with `version=quarterly`. This version\n * is updated once per quarter, and is the most predictable.\n *\n * ```\n * const loader = Loader({apiKey, version: 'quarterly'});\n * ```\n *\n * The version number is specified with `version=n.nn`. You can choose\n * `version=3.40`, `version=3.39`, or `version=3.38`. Version numbers are\n * updated once per quarter.\n *\n * ```\n * const loader = Loader({apiKey, version: '3.40'});\n * ```\n *\n * If you do not explicitly specify a version, you will receive the\n * weekly version by default.\n */\n version?: string;\n /**\n * The id of the script tag. Before adding a new script, the Loader will check for an existing one.\n */\n id?: string;\n /**\n * When loading the Maps JavaScript API via the URL you may optionally load\n * additional libraries through use of the libraries URL parameter. Libraries\n * are modules of code that provide additional functionality to the main Maps\n * JavaScript API but are not loaded unless you specifically request them.\n *\n * ```\n * const loader = Loader({\n * apiKey,\n * libraries: ['drawing', 'geometry', 'places', 'visualization'],\n * });\n * ```\n *\n * Set the [list of libraries](https://developers.google.com/maps/documentation/javascript/libraries) for more options.\n */\n libraries?: Libraries;\n /**\n * By default, the Maps JavaScript API uses the user's preferred language\n * setting as specified in the browser, when displaying textual information\n * such as the names for controls, copyright notices, driving directions and\n * labels on maps. In most cases, it's preferable to respect the browser\n * setting. However, if you want the Maps JavaScript API to ignore the\n * browser's language setting, you can force it to display information in a\n * particular language when loading the Maps JavaScript API code.\n *\n * For example, the following example localizes the language to Japan:\n *\n * ```\n * const loader = Loader({apiKey, language: 'ja', region: 'JP'});\n * ```\n *\n * See the [list of supported\n * languages](https://developers.google.com/maps/faq#languagesupport). Note\n * that new languages are added often, so this list may not be exhaustive.\n *\n */\n language?: string;\n /**\n * When you load the Maps JavaScript API from maps.googleapis.com it applies a\n * default bias for application behavior towards the United States. If you\n * want to alter your application to serve different map tiles or bias the\n * application (such as biasing geocoding results towards the region), you can\n * override this default behavior by adding a region parameter when loading\n * the Maps JavaScript API code.\n *\n * The region parameter accepts Unicode region subtag identifiers which\n * (generally) have a one-to-one mapping to country code Top-Level Domains\n * (ccTLDs). Most Unicode region identifiers are identical to ISO 3166-1\n * codes, with some notable exceptions. For example, Great Britain's ccTLD is\n * \"uk\" (corresponding to the domain .co.uk) while its region identifier is\n * \"GB.\"\n *\n * For example, the following example localizes the map to the United Kingdom:\n *\n * ```\n * const loader = Loader({apiKey, region: 'GB'});\n * ```\n */\n region?: string;\n /**\n * @deprecated Passing `mapIds` is no longer required in the script tag.\n */\n mapIds?: string[];\n /**\n * Use a custom url and path to load the Google Maps API script.\n */\n url?: string;\n /**\n * Use a cryptographic nonce attribute.\n */\n nonce?: string;\n /**\n * The number of script load retries.\n */\n retries?: number;\n}\n\n/**\n * [[Loader]] makes it easier to add Google Maps JavaScript API to your application\n * dynamically using\n * [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n * It works by dynamically creating and appending a script node to the the\n * document head and wrapping the callback function so as to return a promise.\n *\n * ```\n * const loader = new Loader({\n * apiKey: \"\",\n * version: \"weekly\",\n * libraries: [\"places\"]\n * });\n *\n * loader.load().then((google) => {\n * const map = new google.maps.Map(...)\n * })\n * ```\n */\nexport class Loader {\n /**\n * See [[LoaderOptions.version]]\n */\n public readonly version: string;\n /**\n * See [[LoaderOptions.apiKey]]\n */\n public readonly apiKey: string;\n /**\n * See [[LoaderOptions.channel]]\n */\n public readonly channel: string;\n /**\n * See [[LoaderOptions.client]]\n */\n public readonly client: string;\n /**\n * See [[LoaderOptions.id]]\n */\n public readonly id: string;\n /**\n * See [[LoaderOptions.libraries]]\n */\n public readonly libraries: Libraries;\n /**\n * See [[LoaderOptions.language]]\n */\n public readonly language: string;\n\n /**\n * See [[LoaderOptions.region]]\n */\n public readonly region: string;\n\n /**\n * See [[LoaderOptions.mapIds]]\n */\n public readonly mapIds: string[];\n\n /**\n * See [[LoaderOptions.nonce]]\n */\n public readonly nonce: string | null;\n\n /**\n * See [[LoaderOptions.retries]]\n */\n public readonly retries: number;\n\n /**\n * See [[LoaderOptions.url]]\n */\n public readonly url: string;\n\n private CALLBACK = \"__googleMapsCallback\";\n private callbacks: ((e: ErrorEvent) => void)[] = [];\n private done = false;\n private loading = false;\n private onerrorEvent: ErrorEvent;\n private static instance: Loader;\n private errors: ErrorEvent[] = [];\n\n /**\n * Creates an instance of Loader using [[LoaderOptions]]. No defaults are set\n * using this library, instead the defaults are set by the Google Maps\n * JavaScript API server.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});\n * ```\n */\n constructor({\n apiKey,\n channel,\n client,\n id = DEFAULT_ID,\n libraries = [],\n language,\n region,\n version,\n mapIds,\n nonce,\n retries = 3,\n url = \"https://maps.googleapis.com/maps/api/js\",\n }: LoaderOptions) {\n this.version = version;\n this.apiKey = apiKey;\n this.channel = channel;\n this.client = client;\n this.id = id || DEFAULT_ID; // Do not allow empty string\n this.libraries = libraries;\n this.language = language;\n this.region = region;\n this.mapIds = mapIds;\n this.nonce = nonce;\n this.retries = retries;\n this.url = url;\n\n if (Loader.instance) {\n if (!isEqual(this.options, Loader.instance.options)) {\n throw new Error(\n `Loader must not be called again with different options. ${JSON.stringify(\n this.options\n )} !== ${JSON.stringify(Loader.instance.options)}`\n );\n }\n\n return Loader.instance;\n }\n\n Loader.instance = this;\n }\n\n public get options(): LoaderOptions {\n return {\n version: this.version,\n apiKey: this.apiKey,\n channel: this.channel,\n client: this.client,\n id: this.id,\n libraries: this.libraries,\n language: this.language,\n region: this.region,\n mapIds: this.mapIds,\n nonce: this.nonce,\n url: this.url,\n };\n }\n\n private get failed(): boolean {\n return this.done && !this.loading && this.errors.length >= this.retries + 1;\n }\n\n /**\n * CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].\n *\n * @ignore\n */\n public createUrl(): string {\n let url = this.url;\n\n url += `?callback=${this.CALLBACK}`;\n\n if (this.apiKey) {\n url += `&key=${this.apiKey}`;\n }\n\n if (this.channel) {\n url += `&channel=${this.channel}`;\n }\n\n if (this.client) {\n url += `&client=${this.client}`;\n }\n\n if (this.libraries.length > 0) {\n url += `&libraries=${this.libraries.join(\",\")}`;\n }\n\n if (this.language) {\n url += `&language=${this.language}`;\n }\n\n if (this.region) {\n url += `®ion=${this.region}`;\n }\n\n if (this.version) {\n url += `&v=${this.version}`;\n }\n\n if (this.mapIds) {\n url += `&map_ids=${this.mapIds.join(\",\")}`;\n }\n\n return url;\n }\n\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n */\n public load(): Promise {\n return this.loadPromise();\n }\n\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n *\n * @ignore\n */\n public loadPromise(): Promise {\n return new Promise((resolve, reject) => {\n this.loadCallback((err: ErrorEvent) => {\n if (!err) {\n resolve(window.google);\n } else {\n reject(err.error);\n }\n });\n });\n }\n\n /**\n * Load the Google Maps JavaScript API script with a callback.\n */\n public loadCallback(fn: (e: ErrorEvent) => void): void {\n this.callbacks.push(fn);\n this.execute();\n }\n\n /**\n * Set the script on document.\n */\n private setScript(): void {\n if (document.getElementById(this.id)) {\n // TODO wrap onerror callback for cases where the script was loaded elsewhere\n this.callback();\n return;\n }\n\n const url = this.createUrl();\n const script = document.createElement(\"script\");\n script.id = this.id;\n script.type = \"text/javascript\";\n script.src = url;\n script.onerror = this.loadErrorCallback.bind(this);\n script.defer = true;\n script.async = true;\n\n if (this.nonce) {\n script.nonce = this.nonce;\n }\n\n document.head.appendChild(script);\n }\n\n public deleteScript(): void {\n const script = document.getElementById(this.id);\n if (script) {\n script.remove();\n }\n }\n\n /**\n * Reset the loader state.\n */\n private reset(): void {\n this.deleteScript();\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.onerrorEvent = null;\n }\n\n private resetIfRetryingFailed(): void {\n if (this.failed) {\n this.reset();\n }\n }\n\n private loadErrorCallback(e: ErrorEvent): void {\n this.errors.push(e);\n\n if (this.errors.length <= this.retries) {\n const delay = this.errors.length * 2 ** this.errors.length;\n\n console.log(\n `Failed to load Google Maps script, retrying in ${delay} ms.`\n );\n\n setTimeout(() => {\n this.deleteScript();\n this.setScript();\n }, delay);\n } else {\n this.onerrorEvent = e;\n this.callback();\n }\n }\n\n private setCallback(): void {\n window.__googleMapsCallback = this.callback.bind(this);\n }\n\n private callback(): void {\n this.done = true;\n this.loading = false;\n\n this.callbacks.forEach((cb) => {\n cb(this.onerrorEvent);\n });\n\n this.callbacks = [];\n }\n\n private execute(): void {\n this.resetIfRetryingFailed();\n\n if (this.done) {\n this.callback();\n } else {\n // short circuit and warn if google.maps is already loaded\n if (window.google && window.google.maps && window.google.maps.version) {\n console.warn(\n \"Google Maps already loaded outside @googlemaps/js-api-loader.\" +\n \"This may result in undesirable behavior as options and script parameters may not match.\"\n );\n this.callback();\n return;\n }\n\n if (this.loading) {\n // do nothing but wait\n } else {\n this.loading = true;\n this.setCallback();\n this.setScript();\n }\n }\n }\n}\n", "import { LatLng } from './lat-lng';\n\nexport class AppDirectionService {\n private readonly directionService: google.maps.DirectionsService;\n private readonly renderer: google.maps.DirectionsRenderer;\n\n constructor(map: google.maps.Map) {\n this.directionService = new google.maps.DirectionsService();\n this.renderer = new google.maps.DirectionsRenderer();\n this.renderer.setMap(map);\n this.renderer.setOptions({\n markerOptions: {\n visible: false,\n },\n polylineOptions: {\n strokeColor: '#bb9e00',\n strokeWeight: 5,\n strokeOpacity: 0.6,\n geodesic: true,\n },\n });\n }\n\n async drawRoute(src: LatLng, dest: LatLng): Promise {\n const route = await this.getRoute({\n origin: src,\n destination: dest,\n travelMode: google.maps.TravelMode.WALKING,\n });\n\n this.renderer.setDirections(route);\n }\n\n private getRoute(\n request: google.maps.DirectionsRequest\n ): Promise {\n return this.directionService.route(request);\n }\n}\n", "import { Loader } from '@googlemaps/js-api-loader';\nimport {\n defaultCenter,\n mapApiKey,\n position,\n stationPositions,\n} from '../constants';\nimport Marker = google.maps.Marker;\nimport { AppDirectionService } from './direction-service';\n\nconst loadApi = (): Promise => {\n const loader = new Loader({\n apiKey: mapApiKey,\n version: 'weekly',\n });\n\n return loader.load();\n};\n\nconst makeStationMarkers = (lang = 'jp'): Marker[] => {\n const isJp = lang === 'jp';\n\n return [\n new google.maps.Marker({\n position: stationPositions.roppongi7,\n title: isJp\n ? '\u90FD\u55B6\u5927\u6C5F\u6238\u7DDA \u516D\u672C\u6728 7\u51FA\u53E3'\n : 'Roppongi (Toei Oedo Line) Exit #7',\n icon: {\n url: isJp\n ? '/assets/images/ooedo_roppongi_exit7_jp.svg'\n : '/assets/images/ooedo_roppongi_exit7_en.svg',\n anchor: new google.maps.Point(0, 12),\n },\n }),\n\n new google.maps.Marker({\n position: stationPositions.roppongi4a,\n title: isJp\n ? '\u65E5\u6BD4\u8C37\u7DDA \u516D\u672C\u6728 4a\u51FA\u53E3'\n : 'Roppongi (Tokyo Metro Hibiya Line) Exit #4a',\n icon: {\n url: isJp\n ? '/assets/images/hibiya_roppongi_exit4a_jp.svg'\n : '/assets/images/hibiya_roppongi_exit4a_en.svg',\n anchor: new google.maps.Point(0, 12),\n },\n }),\n\n new google.maps.Marker({\n position: stationPositions.nogizaka3,\n title: isJp\n ? '\u5343\u4EE3\u7530\u7DDA \u4E43\u6728\u5742 3\u51FA\u53E3'\n : 'Nogizaka (Tokyo Metro Chiyoda Line) Exit #3',\n icon: {\n url: isJp\n ? '/assets/images/tiyoda_nogizaka_exit3_jp.svg'\n : '/assets/images/tiyoda_nogizaka_exit3_en.svg',\n anchor: new google.maps.Point(0, 12),\n },\n }),\n ];\n};\n\nexport const embedMap = async (\n container: HTMLElement,\n lang = 'jp'\n): Promise => {\n const google = await loadApi();\n const zoom = window.innerWidth > 600 ? 17 : 16;\n const map = new google.maps.Map(container, {\n center: defaultCenter,\n disableDefaultUI: true,\n zoom,\n mapId: '40b89c8dac7b7e51',\n keyboardShortcuts: false,\n });\n\n new google.maps.Marker({\n position: position,\n map,\n title: '\u73FE\u5728\u5730',\n icon: {\n url: '/assets/images/currentPosition.svg',\n anchor: new google.maps.Point(40, 57),\n },\n });\n\n const directionService = new AppDirectionService(map);\n\n const stations = makeStationMarkers(lang);\n stations.forEach((marker) => {\n marker.setMap(map);\n marker.addListener('click', async () => {\n const markerPosition = marker.getPosition();\n if (!markerPosition) {\n return;\n }\n await directionService.drawRoute(\n { lat: markerPosition.lat(), lng: markerPosition.lng() },\n position\n );\n });\n });\n\n map.addListener('zoom_changed', () => {\n const currentZoom = map.getZoom();\n if (currentZoom === undefined || currentZoom > 14) {\n stations.forEach((v) => v.setVisible(true));\n return;\n }\n\n stations.forEach((v) => v.setVisible(false));\n });\n};\n", "import { prepareGlobalNavigation } from './modules/prepare-global-navigation';\nimport { embedMovie } from './modules/embed-movie';\nimport { youtubeOption } from './constants';\nimport { embedMap } from './modules/embed-map';\nimport smoothscroll from 'smoothscroll-polyfill';\nimport { ImageGallery } from './modules/gallery';\n\n// kick off the polyfill!\nsmoothscroll.polyfill();\n\n// eslint-disable-next-line @typescript-eslint/no-misused-promises\nwindow.addEventListener('DOMContentLoaded', async () => {\n const globalNavi = document.querySelector('.GlobalNavigation');\n prepareGlobalNavigation(globalNavi as Element);\n\n const movieWrapper = document.querySelector('#Movie') as HTMLElement;\n const movieContainer = movieWrapper.querySelector(\n '#MovieContainer'\n ) as HTMLElement;\n await embedMovie(movieWrapper, movieContainer, youtubeOption);\n\n const mapContainer = document.querySelector('#MapContainer') as HTMLElement;\n const lang = /^\\/en*/.test(window.location.pathname) ? 'en' : 'jp';\n await embedMap(mapContainer, lang);\n\n const photoNode = document.querySelectorAll('[data-gallery-item]');\n const images = Array.from(photoNode).map((v) => {\n return {\n src: (v as HTMLElement).dataset.galleryImg as string,\n alt: '',\n };\n });\n\n const gallery = new ImageGallery(\n images,\n document.querySelector('.Gallery') as HTMLElement\n );\n\n Array.from(photoNode).forEach((el, idx) => {\n el.addEventListener('click', () => {\n gallery.show(idx + 1);\n });\n });\n});\n", "interface Image {\n src: string;\n caption?: string;\n}\n\nexport class ImageGallery {\n private currentNum = 1;\n private readonly el: HTMLElement;\n private defaultLeftPosition: string;\n constructor(private imageList: Image[], private container: HTMLElement) {\n this.defaultLeftPosition = `${(imageList.length + 1) * 100}%`;\n this.el = this.getEl();\n this.container.appendChild(this.el);\n this.prepareNav();\n this.render();\n\n this.el.style.left = this.defaultLeftPosition;\n this.el.style.opacity = '0';\n }\n\n show(index = 1): void {\n this.currentNum = index;\n this.render();\n\n this.el.style.left = '0';\n this.el.style.opacity = '1';\n }\n\n close(): void {\n this.currentNum = 1;\n this.el.style.opacity = '0';\n setTimeout(() => {\n this.el.style.left = this.defaultLeftPosition;\n }, 500);\n }\n\n private prepareNav(): void {\n const nextBtn = this.el.querySelector('#slideNext');\n if (nextBtn) {\n nextBtn.addEventListener('click', () => {\n this.next();\n });\n }\n\n const previousBtn = this.el.querySelector('#slidePrevious');\n if (previousBtn) {\n previousBtn.addEventListener('click', () => {\n this.previous();\n });\n }\n\n const closeBtn = this.el.querySelector('#slideClose');\n if (closeBtn) {\n closeBtn.addEventListener('click', () => {\n this.close();\n });\n }\n }\n\n private next(): void {\n this.currentNum =\n this.currentNum < this.imageList.length\n ? this.currentNum + 1\n : this.currentNum;\n\n this.render();\n }\n\n private previous(): void {\n this.currentNum =\n this.currentNum > 1 ? this.currentNum - 1 : this.currentNum;\n\n this.render();\n }\n\n private render() {\n const listEl = this.el.querySelector('.SlideList') as HTMLElement;\n if (listEl) {\n listEl.style.left = `${-(this.currentNum - 1) * 100}%`;\n }\n\n this.setDisabledNext();\n this.setDisabledPrevious();\n }\n\n private setDisabledNext(): void {\n const nextBtn = this.el.querySelector('#slideNext');\n if (!nextBtn) {\n return;\n }\n\n if (this.currentNum < this.imageList.length) {\n nextBtn.removeAttribute('disabled');\n return;\n }\n\n nextBtn.setAttribute('disabled', '');\n }\n\n private setDisabledPrevious(): void {\n const previousBtn = this.el.querySelector('#slidePrevious');\n if (!previousBtn) {\n return;\n }\n\n if (this.currentNum > 1) {\n previousBtn.removeAttribute('disabled');\n return;\n }\n\n previousBtn.setAttribute('disabled', '');\n }\n\n private getEl(): HTMLElement {\n const el = document.createElement('div');\n el.classList.add('Slideshow');\n\n const body = `\n \n
\n
    \n ${this.imageList\n .map((v) => `
  • \"\"
  • `)\n .join('\\n')}\n
\n
\n
\n \n \n
\n `;\n\n el.insertAdjacentHTML('beforeend', body);\n return el;\n }\n}\n"], "mappings": "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", "names": [] }