{"version":3,"names":[],"mappings":"","sources":["service-detail.bundle.js"],"sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i= 0; i--) {\n populateNodeCollection($scrollSections.eq(i));\n }\n\n populateNodeCollection = null;\n\n //setup initial class for navigation, and update mobile default label\n $menuItems.eq(0).addClass(activeNavClass).find('.scrollspy-nav-link').attr('aria-label', 'Is Selected');\n\n $mobileToggle.text($menuItems.eq(0).find('.scrollspy-nav-link').text());\n\n this.stickyMenuInit(headerOffsets);\n\n this.menuEventsInit();\n\n this.magicSceneInit();\n\n this.updateAriaStatus();\n\n this.windowResizeEvent();\n }\n};\n\nmodule.exports = ScrollSpy;\n\n},{}],2:[function(require,module,exports){\n'use strict';\n\n(function (global, undefined) {\n\n\tvar $tabsArea = $('.js-tabs-area'),\n\t $tabsNav,\n\t $tabsNavLinks,\n\t $tabsNavLabel,\n\t $tabsDesignLine,\n\t $tabsPanelsBody,\n\t $tabsPanels,\n\t $selectedTab,\n\t slideDirection,\n\t panelLength,\n\t isAnimating,\n\t currentIndex,\n\t selectedTabIndex,\n\t mobileState,\n\t activeNavClass,\n\t activePanelClass,\n\t animationTimingDuration;\n\n\tif ($tabsArea.length === 0) {\n\t\treturn;\n\t}\n\n\t$tabsNav = $tabsArea.find('.js-tabs-nav');\n\t$tabsNavLinks = $tabsNav.find('.js-tabs-nav-link');\n\t$tabsNavLabel = $tabsNav.find('.js-tabs-label');\n\t$tabsDesignLine = $tabsArea.find('.js-design-line');\n\t$tabsPanelsBody = $tabsArea.find('.js-tabs-panel-body');\n\t$tabsPanels = $tabsPanelsBody.find('.js-tabs-panel');\n\tpanelLength = $tabsPanels.length;\n\n\t//Default Values\n\tcurrentIndex = 0;\n\tisAnimating = false;\n\tactiveNavClass = 'is-active-tab';\n\tactivePanelClass = 'is-active-panel';\n\tanimationTimingDuration = 300;\n\n\t//Toggle display of Tabs in mobile\n\t$tabsNavLabel.on(\"click\", function (ev) {\n\t\tev.stopImmediatePropagation();\n\t\t$tabsNav.toggleClass('is-expanded');\n\t});\n\n\t//Attached event handler for nav links\n\t$tabsNav.on('click.tabsPanel', '.js-tabs-nav-link', function (ev) {\n\t\tev.preventDefault();\n\n\t\t$selectedTab = $(this);\n\t\tselectedTabIndex = $tabsNavLinks.index($selectedTab);\n\n\t\t//We clicked the same link so do nothing\n\t\tif (currentIndex === selectedTabIndex || isAnimating) return;\n\n\t\tupdateTabSelection($selectedTab);\n\n\t\tcurrentIndex < selectedTabIndex ? slideDirection = \"left\" : slideDirection = \"right\";\n\n\t\tupdatePanelSelection($tabsPanels.eq(selectedTabIndex), slideDirection);\n\n\t\t//need to account for mobile\n\t\t//$tabsNavList.removeClass('is-expanded');\n\t});\n\n\tfunction updateTabSelection($tabSelected) {\n\t\t$tabsNavLinks.eq(currentIndex).removeClass(activeNavClass);\n\t\t$tabSelected.addClass(activeNavClass);\n\n\t\t//update mobile label \n\t\t$tabsNavLabel.text($tabSelected.text());\n\n\t\tif (window.helperUtils.isMobile) {\n\t\t\t$tabsNav.removeClass('is-expanded');\n\t\t} else {\n\t\t\tslideDesignLine($tabSelected);\n\t\t}\n\t}\n\n\tfunction updatePanelSelection($panelSelected, slideDirection) {\n\t\tisAnimating = true;\n\t\tvar $currentPanel = $tabsPanels.eq(currentIndex);\n\n\t\t$panelSelected.addClass('is-selected');\n\n\t\tslideDirection === \"left\" ? $tabsPanelsBody.addClass('is-animating-left') : $tabsPanelsBody.addClass('is-animating-right');\n\n\t\t$tabsPanelsBody.css('height', $currentPanel.outerHeight()).addClass('is-animating-out');\n\n\t\t$panelSelected.addClass('is-animating-in');\n\n\t\t//Timeout Delay should be in sync with entire duration of animation\n\t\tsetTimeout(function animateHeight() {\n\n\t\t\t$tabsPanelsBody.animate({\n\t\t\t\theight: $panelSelected.outerHeight()\n\t\t\t}, animationTimingDuration, function resetClasses() {\n\n\t\t\t\t$tabsPanelsBody.css('height', '').removeClass('is-animating-out is-animating-left is-animating-right');\n\n\t\t\t\t$currentPanel.removeClass(activePanelClass);\n\n\t\t\t\t$panelSelected.removeClass('is-animating-in is-selected').addClass(activePanelClass);\n\n\t\t\t\tisAnimating = false;\n\t\t\t});\n\t\t\tcurrentIndex = selectedTabIndex;\n\t\t}, animationTimingDuration);\n\t}\n\n\tfunction slideDesignLine($tabSelected) {\n\t\tvar tabWidth = $tabSelected.width(),\n\t\t tabOffset = $tabSelected.position().left;\n\n\t\t$tabsDesignLine.css({\n\t\t\t\"left\": tabOffset,\n\t\t\twidth: tabWidth + 'px'\n\t\t});\n\t}\n\n\t//Initialize default settings\n\t$(window).load(function () {\n\t\t$selectedTab = $tabsNavLinks.eq(0);\n\t\tslideDesignLine($selectedTab);\n\t});\n\n\twindow.addEventListener(\"resize\", resizeThrottler, false);\n\n\tvar resizeTimeout;\n\tfunction resizeThrottler() {\n\t\t// ignore resize events as long as an actualResizeHandler execution is in the queue\n\t\tif (!resizeTimeout) {\n\t\t\tresizeTimeout = setTimeout(function () {\n\t\t\t\tresizeTimeout = null;\n\t\t\t\tslideDesignLine($selectedTab);\n\n\t\t\t\t// The actualResizeHandler will execute at a rate of 15fps\n\t\t\t}, 66);\n\t\t}\n\t}\n})(undefined);\n\n},{}],3:[function(require,module,exports){\n'use strict';\n\nrequire('./tabArea.js');\n\n$(document).ready(function () {\n\n //Related Professional 'See All'\n $relatedProfessionalInitialCount = $('.contacts').data(\"initialcount\");\n $relatedProfessionalTotalList = $('.contacts').find('li');\n\n var count = $relatedProfessionalInitialCount - 1;\n $listitems = $('.contacts ul li:gt(' + count + ')');\n\n $viewMoreButton = $('.contacts__view-more');\n\n if ($relatedProfessionalInitialCount == 0) $relatedProfessionalInitialCount = 6;\n\n $listitems.hide();\n});\n\n},{\"./tabArea.js\":4}],4:[function(require,module,exports){\n'use strict';\n\nrequire('./features/tabs-area.js');\nvar ScrollSpy = require('./features/scrollspy.js');\n\n$(document).ready(function () {\n\n var $container = $('.js-tabs-area').length ? $('.js-tabs-area') : $('.scrollspy-sections');\n if (!$container.length) return;\n\n function appendData($list, url) {\n $.ajax({\n url: url\n }).done(function (data) {\n $list.append(data);\n\n var $items = $list.children('li');\n $items.slideDown();\n\n var $last = $items.last();\n var dataNextUrl = $last.attr('data-next-url');\n\n var $button = $list.next('button');\n if (dataNextUrl) {\n $button.show();\n } else {\n $button.hide();\n }\n //force scrollspy to update after content is loaded\n setTimeout(ScrollSpy.refreshBodyDimensions, 200);\n });\n }\n\n var $listArticles = $container.find('.list-articles');\n $listArticles.each(function () {\n var $this = $(this);\n var url = $this.attr('data-url');\n appendData($this, url);\n });\n\n var $viewMoreButtons = $container.find('.js-button-expand');\n $viewMoreButtons.click(function () {\n var $this = $(this);\n\n var $list = $this.prev('ul');\n var $last = $list.children('li').last();\n var url = $last.attr('data-next-url');\n\n appendData($list, url);\n });\n});\n\n},{\"./features/scrollspy.js\":1,\"./features/tabs-area.js\":2}]},{},[3]);\n"],"file":"service-detail.bundle.js"}