{"version":3,"sources":["Tab.js","Tabs.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFCpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"SSCMSlider.js","sourcesContent":["window.SpaceStation = window.SpaceStation || {};\r\nwindow.SpaceStation.CommandModule = window.SpaceStation.CommandModule || {};\r\nwindow.SpaceStation.CommandModule.Slider = window.SpaceStation.CommandModule.Slider || {};\r\n\r\nwindow.SpaceStation.CommandModule.Slider.Tab = (function($, Behaviors, module) {\r\n class Tab extends Behaviors.Behavior {\r\n static QUERY = \"[data-sscmslider-tab]\"\r\n\r\n static PARENT_QUERY = \"[data-sscmslider]\";\r\n static SLIDER_QUERY = \"[data-sscmslider-contentrow]\";\r\n\r\n constructor(...args) {\r\n super(...args)\r\n\r\n this.parent = this.elem.closest(Tab.PARENT_QUERY);\r\n this.slider = this.parent.querySelector(Tab.SLIDER_QUERY);\r\n this.tabs = module.Tabs.locate(this.elem.closest(module.Tabs.QUERY));\r\n\r\n this.$slider = $(this.slider);\r\n\r\n this.target = parseInt(this.elem.dataset.sscmsliderTab);\r\n this.currentSlide = 0;\r\n\r\n this.elem.addEventListener(\"touchend\", this.click_intent.bind(this));\r\n this.elem.addEventListener(\"click\", this.click_intent.bind(this));\r\n this.$slider.on(\"afterChange\", this.slide_change_intent.bind(this));\r\n\r\n this.slide_change_intent(null, this.$slider.slick(\"getSlick\"), this.$slider.slick(\"slickCurrentSlide\"));\r\n }\r\n\r\n click_intent(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n \r\n this.tabs.expand_contract_intent();\r\n this.$slider.slick(\"slickGoTo\", this.target);\r\n\r\n //Tell our tab container that we're about to change the slide.\r\n //It also listens to afterChange, but that's visibly too late, and\r\n //for some reason beforeChange is very bugged\r\n this.tabs.slide_change_intent(null, null, this.target);\r\n }\r\n\r\n slide_change_intent(event, slick, currentSlide) {\r\n this.currentSlide = currentSlide;\r\n this.elem.classList.toggle(\"is-SSCMSlider-tab--active\", currentSlide === this.target);\r\n }\r\n }\r\n\r\n Behaviors.register_behavior(Tab);\r\n\r\n return Tab;\r\n}(window.jQuery, window.EVASuit.Behaviors, window.SpaceStation.CommandModule.Slider))","window.SpaceStation = window.SpaceStation || {};\r\nwindow.SpaceStation.CommandModule = window.SpaceStation.CommandModule || {};\r\nwindow.SpaceStation.CommandModule.Slider = window.SpaceStation.CommandModule.Slider || {};\r\n\r\nwindow.SpaceStation.CommandModule.Slider.Tabs = (function($, Behaviors) {\r\n class Tabs extends Behaviors.Behavior {\r\n static QUERY = \"[data-sscmslider-tabs]\"\r\n\r\n static PARENT_QUERY = \"[data-sscmslider]\";\r\n static SLIDER_QUERY = \"[data-sscmslider-contentrow]\";\r\n static CONTENT_QUERY = \"[data-sscmslider-tabscontent]\"\r\n static TAB_QUERY = \"[data-sscmslider-tab]\"\r\n\r\n constructor(...args) {\r\n super(...args)\r\n\r\n this.parent = this.elem.closest(Tabs.PARENT_QUERY);\r\n this.slider = this.parent.querySelector(Tabs.SLIDER_QUERY);\r\n this.tabs = this.elem.querySelectorAll(Tabs.TAB_QUERY);\r\n this.tabs_content = this.elem.querySelector(Tabs.CONTENT_QUERY);\r\n\r\n this.mode = this.elem.dataset.sscmsliderTabs;\r\n this.is_expanded = this.mode !== \"dropdown\";\r\n this.currentSlide = 0;\r\n\r\n window.addEventListener(\"resize\", this.relayout_intent.bind(this));\r\n\r\n //Since this is a custom Slick event, we need jQuery to listen to it\r\n $(this.slider).on(\"afterChange\", this.slide_change_intent.bind(this));\r\n\r\n this.relayout_intent();\r\n this.set_css_states();\r\n }\r\n\r\n set_css_states() {\r\n this.elem.classList.toggle(\"is-SSCMSlider-tabs--expanded\", this.is_expanded);\r\n\r\n if (this.tabs[this.currentSlide] !== undefined) {\r\n this.elem.scroll({top: this.tabs[this.currentSlide].offsetTop});\r\n }\r\n }\r\n\r\n relayout_intent() {\r\n var i, measured_height = this.tabs_content.offsetHeight, measured_tab_height = 0;\r\n\r\n for (i = 0; i < this.tabs.length; i += 1) {\r\n measured_tab_height = Math.max(measured_tab_height, this.tabs[i].offsetHeight);\r\n }\r\n\r\n this.parent.style.setProperty(\"--SSCMSlider-tabs_content--expanded_height\", measured_height + \"px\")\r\n this.parent.style.setProperty(\"--SSCMSlider-tabs_content--collapsed_height\", measured_tab_height + \"px\")\r\n }\r\n\r\n /**\r\n * Triggered when an individual tab is clicked.\r\n */\r\n expand_contract_intent() {\r\n if (this.mode === \"dropdown\") {\r\n this.is_expanded = !this.is_expanded;\r\n this.set_css_states();\r\n }\r\n }\r\n\r\n /**\r\n * Triggered when the slide changes.\r\n * \r\n * Sometimes called by Tab behavior; in that case event and slick will\r\n * be null.\r\n */\r\n slide_change_intent(event, slick, currentSlide) {\r\n this.currentSlide = currentSlide;\r\n this.set_css_states();\r\n }\r\n }\r\n\r\n Behaviors.register_behavior(Tabs);\r\n\r\n return Tabs;\r\n}(window.jQuery, window.EVASuit.Behaviors))"]}