{"version":3,"sources":["togglemodule.js"],"names":["define","app","directive","$timeout","$window","restrict","bindToController","tabs","triggers","readmore","maxheight","controllerAs","controller","$scope","$element","$attrs","toggleLabel","initialheight","hasMore","readMoreLabel","readmorelbl","activate","which","angular","forEach","this","item","key","active","id","$","animate","height","barHeight","outerHeight","fullLeftVerticalTabsHeight","find","fullRightVerticalTabsHeight","children","rightListItemsHeight","additionalHeight","i","itemHeight","getCurrentDesktopHeight","numOfHyperlinks","addTab","length","addTabWithParams","addTrigger","t","tabid","init","link","innerWidth","getInitialMobileHeight","toString","css","readLessLabel","readlesslbl","readMore","event","preventDefault","currentTarget","siblings","getCurrentMaxDesktopHeight","require","scope","numofhyperlinks","tab","parseInt","trigger","activateTab"],"mappings":"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","file":"togglemodule.js","sourcesContent":["define(function () {\r\n    return function (app) {\r\n        app.directive('tabs', ['$timeout', '$window', function ($timeout, $window) {\r\n            return {\r\n                restrict: \"A\",\r\n                bindToController: {\r\n                    tabs: \"&\",\r\n                    triggers: \"&\",\r\n                    readmore: \"&\",\r\n                    maxheight: \"=\",\r\n                },\r\n                controllerAs: 'ctrl',\r\n                controller: ['$scope', '$element', '$attrs', '$timeout', '$window' ,function ($scope, $element, $attrs, $timeout, $window) {\r\n                    $scope.tabs = [];\r\n                    $scope.triggers = [];\r\n                    $scope.readmore = false;\r\n                    $scope.toggleLabel = '';\r\n                    $scope.initialheight = '';\r\n                    $scope.hasMore = false;\r\n                    var readMoreLabel = $attrs.readmorelbl;\r\n\r\n                    $scope.activate = function (which) {\r\n                        angular.forEach(this.tabs, function (item, key) {\r\n                            item.active = (item.id === which);\r\n                            $scope.triggers[item.id].active = item.active;\r\n                            if (item.active) {\r\n                                $timeout(function () {\r\n                                    $($element).animate({ 'height': getCurrentDesktopHeight() }, 500);\r\n                                })\r\n                                if ($scope.readmore) {\r\n                                    $scope.readmore = false;\r\n                                    $scope.toggleLabel = readMoreLabel;\r\n                                }\r\n                                if (item.numOfHyperlinks != null) {\r\n                                    $scope.hasMore = item.numOfHyperlinks >= 13;\r\n                                }\r\n                            }\r\n                        });\r\n                    };\r\n\r\n                    $scope.addTab = function () {\r\n                        var id = $scope.tabs.length;\r\n                        $scope.tabs[id] = {\r\n                            id: id,\r\n                            active: (id === 0)\r\n                        };\r\n                        return $scope.tabs[id];\r\n                    };\r\n\r\n                    $scope.addTabWithParams = function (numOfHyperlinks) {\r\n                        var id = $scope.tabs.length;\r\n                        $scope.tabs[id] = {\r\n                            id: id,\r\n                            active: (id === 0),\r\n                            numOfHyperlinks: numOfHyperlinks\r\n                        };\r\n                        return $scope.tabs[id];\r\n                    };\r\n\r\n                    $scope.addTrigger = function (t) {\r\n                        var id = $scope.triggers.length;\r\n                        $scope.triggers[id] = {\r\n                            tabid: id,\r\n                            active: (id === 0)\r\n                        };\r\n                        return $scope.triggers[id];\r\n                    };\r\n\r\n                    $scope.init = function () {\r\n                        //initialize first tab\r\n                        $timeout(function () {\r\n                            if ($scope.tabs.length > 0) {\r\n                                $scope.activate(0);\r\n                            }\r\n                        }, 250);\r\n                    };\r\n\r\n                    function getCurrentDesktopHeight() {\r\n                        const barHeight = $('.readmore-trigger').outerHeight();\r\n                        const tenLeftTabsHeight = 475;\r\n                        const fullLeftVerticalTabsHeight = $($element)\r\n                            .find('.verticaltabs-column-left')\r\n                            .find('.verticaltabs-column-content')\r\n                            .outerHeight();\r\n\r\n                        const fullRightVerticalTabsHeight = $($element)\r\n                            .find('.verticaltabs-column-right')\r\n                            .find('.verticaltabscontent')\r\n                            .find('.active')\r\n                            .find('.linklist-list')\r\n                            .children();\r\n\r\n                        // calculate the height of the first 14 items\r\n                        let rightListItemsHeight = 44;\r\n                        let additionalHeight = 0;\r\n\r\n                        for (let i = 0; i < 13; i++) {\r\n                            if (!(fullRightVerticalTabsHeight[i] == null)) {\r\n                                let itemHeight = $(fullRightVerticalTabsHeight[i]).find('.arrow-link').outerHeight(true);\r\n                                if (itemHeight % 33 !== 0) {\r\n                                    additionalHeight += 9;\r\n                                }\r\n                                rightListItemsHeight += itemHeight;\r\n                            }\r\n                            if (rightListItemsHeight > fullLeftVerticalTabsHeight && rightListItemsHeight > tenLeftTabsHeight) {\r\n                                return rightListItemsHeight + barHeight;\r\n                            }\r\n                        }\r\n                        return (fullLeftVerticalTabsHeight > tenLeftTabsHeight ? fullLeftVerticalTabsHeight : tenLeftTabsHeight) + barHeight;\r\n                    }\r\n                }],\r\n\r\n                link: function ($scope, $element, $attrs) {\r\n                    $timeout(function () {\r\n                        const barHeight = $('.readmore-trigger').outerHeight();\r\n                        if ($window.innerWidth < 750) {\r\n                            $scope.initialheight = (getInitialMobileHeight() + barHeight).toString() + \"px\";\r\n                            $scope.maxheight = (getMaxMobileHeight()).toString() + \"px\";\r\n                            $($element).css(\"max-height\", $scope.initialheight.toString() + \"px\");\r\n                        } else {\r\n                            $scope.initialheight = (getCurrentDesktopHeight() + barHeight).toString() + \"px\";\r\n                            $scope.maxheight = (getMaxDesktopHeight()).toString() + \"px\";\r\n                            $($element).height($scope.initialheight);\r\n                        }\r\n                    });\r\n                    var readMoreLabel = $attrs.readmorelbl;\r\n                    var readLessLabel = $attrs.readlesslbl;\r\n                    $scope.toggleLabel = readMoreLabel;\r\n\r\n                    $scope.readMore = function (event) {\r\n                        if (event) {\r\n                            event.preventDefault();\r\n                        }\r\n\r\n                        if ($scope.readmore) {\r\n                            $scope.readmore = false;\r\n                            $($element).animate({ 'height': getCurrentDesktopHeight() }, 500);\r\n                            $scope.toggleLabel = readMoreLabel;\r\n                        } else {\r\n                            $scope.readmore = true;\r\n\r\n                            $($element).animate({ 'height': getCurrentMaxDesktopHeight(event) }, 500);\r\n\r\n                            $scope.toggleLabel = readLessLabel;\r\n                        }\r\n                    };\r\n\r\n\r\n                    function getCurrentDesktopHeight() {\r\n                        const barHeight = $('.readmore-trigger').outerHeight();\r\n                        const tenLeftTabsHeight = 475;\r\n                        const fullLeftVerticalTabsHeight = $($element)\r\n                            .find('.verticaltabs-column-left')\r\n                            .find('.verticaltabs-column-content')\r\n                            .outerHeight();\r\n\r\n                        const fullRightVerticalTabsHeight = $($element)\r\n                            .find('.verticaltabs-column-right')\r\n                            .find('.verticaltabscontent')\r\n                            .find('.active')\r\n                            .find('.linklist-list')\r\n                            .children();\r\n\r\n                        // calculate the height of the first 14 items\r\n                        let rightListItemsHeight = 44;\r\n                        let additionalHeight = 0;\r\n\r\n                        for (let i = 0; i < 13; i++) {\r\n                            if (!(fullRightVerticalTabsHeight[i] == null)) {\r\n                                let itemHeight = $(fullRightVerticalTabsHeight[i]).find('.arrow-link').outerHeight(true);\r\n                                if (itemHeight % 33 !== 0) {\r\n                                    additionalHeight += 9;\r\n                                }\r\n                                rightListItemsHeight += itemHeight;\r\n                            }\r\n                            if (rightListItemsHeight > fullLeftVerticalTabsHeight && rightListItemsHeight > tenLeftTabsHeight) {\r\n                                return rightListItemsHeight + barHeight;\r\n                            }\r\n                        }\r\n                        return (fullLeftVerticalTabsHeight > tenLeftTabsHeight ? fullLeftVerticalTabsHeight : tenLeftTabsHeight) + barHeight;\r\n                    }\r\n\r\n                    function getMaxDesktopHeight() {\r\n                        return $($element)\r\n                            .find('.verticaltabs-column-right')\r\n                            .find('.verticaltabscontent')\r\n                            .outerHeight();\r\n                    }\r\n\r\n                    function getCurrentMaxDesktopHeight(event) {\r\n                        return $(event.currentTarget)\r\n                            .siblings('.verticaltabs-column-right')\r\n                            .find('.verticaltabscontent')\r\n                            .outerHeight();\r\n                    }\r\n\r\n\r\n                    function getInitialMobileHeight() {\r\n                        const fullLeftVerticalTabsHeight = $($element)\r\n                            .find('.verticaltabs-column-left')\r\n                            .find('.verticaltabs-column-content')\r\n                            .outerHeight();\r\n                        const fullRightVerticalTabsHeight = $($element)\r\n                            .find('.verticaltabs-column-right')\r\n                            .find('.verticaltabscontent')\r\n                            .find('.active')\r\n                            .find('.linklist-block')\r\n                            .outerHeight();\r\n\r\n                        return fullLeftVerticalTabsHeight + fullRightVerticalTabsHeight;\r\n                    }\r\n\r\n                    function getMaxMobileHeight() {\r\n                        const fullLeftVerticalTabsHeight = $($element)\r\n                            .find('.verticaltabs-column-left')\r\n                            .find('.verticaltabs-column-content')\r\n                            .outerHeight();\r\n                        const fullRightVerticalTabsHeight = $element\r\n                            .find('.verticaltabs-column-right')\r\n                            .find('.verticaltabscontent')\r\n                            .outerHeight();\r\n                        return fullLeftVerticalTabsHeight + fullRightVerticalTabsHeight;\r\n                    }\r\n                }\r\n            }\r\n        }]);\r\n\r\n        //inherits from tabs directive\r\n        app.directive('tabsResponder', [function () {\r\n            return {\r\n                restrict: \"A\",\r\n                require: \"^tabs\",\r\n                scope: true,\r\n                controllerAs: 'ctrl',\r\n                controller: ['$scope', '$attrs', function ($scope, $attrs) {\r\n                    if ($attrs.numofhyperlinks != null) {\r\n                        $scope.tab = $scope.addTabWithParams(parseInt($attrs.numofhyperlinks));\r\n                    } else {\r\n                        $scope.tab = $scope.addTab();\r\n                    }\r\n                }]\r\n            }\r\n        }]);\r\n\r\n        //inherits from tabs directive\r\n        app.directive('tabsTrigger', [function () {\r\n            return {\r\n                restrict: \"A\",\r\n                require: \"^tabs\",\r\n                scope: true,\r\n                bindToController: {},\r\n                controllerAs: 'ctrl',\r\n                controller: ['$scope', function ($scope) {\r\n                    $scope.trigger = $scope.addTrigger();\r\n                    $scope.activateTab = function (event) {\r\n                        if (event) event.preventDefault();\r\n                        $scope.activate($scope.trigger.tabid);\r\n                    }\r\n                }]\r\n            }\r\n        }]);\r\n    }\r\n});"]}