{"version":3,"sources":["Core/Navigation.ts"],"names":["define","require","exports","Env","Object","defineProperty","value","MasterNavigation","NavigationItem","ICON_PADDING","TEXT_HOVER_AREA","[object Object]","navigationPanel","this","_navigationInitializedSelector","_menuNodeClass","_backToIoTServicesNodeClass","_contactLinkClass","_footerContactLinkSelector","_loaderSelector","quickAccessTooltipSelector","quickAccessTooltipContainerSelector","self","$","length","_navigationPanel","nodes","Array","find","each","index","element","textElement","imageElement","anchor","attr","textBoundingBox","navItem","id","parentId","text","link","push","SVGElement","getBBox","hasClass","x","y","width","height","parseInt","root","navigationInitailized","bindNodeItemClickEvent","click","contactNodeClicked","mouseenter","name","data","fadeIn","mouseleave","fadeOut","completeInitialization","showNavigation","href","$anchor","offset","headerHeight","outerHeight","animate","scrollTop","top","hide","fadeTo","filter","node","nodeElement","nodeWebContext","matches","RegExp","exec","location","pathname","forEach","nodeChildElements","css","display","currentLocation","locationParts","split","String","currentActiveNode","currentActiveNodeElement","addClass","setActiveParents","activeNodes","indexOf","parentActiveNode","parentNode","parentNodeElement","navItemElement","not","enableNode","disableNode","hideChildren","showChildren","navItemId","removeClass","exceptNodes","allExceptNodes","getChildren","child","unbind","cssClass","allClasses","newClasses","i","search","join","Boolean","val","valueOf","nodeId","children","childId","grandsonId","nodeItem","nodeChildren","off","navName","UrlContext","getQueryStringParam","navNodeElement","parent","navNodeParentId","navNodeParentElement","contactAddress","window"],"mappings":"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","sourcesContent":["import Interfaces = require(\"./Interfaces\");\nimport Env = require(\"./Environment\");\n\nconst ICON_PADDING = 12;\nconst TEXT_HOVER_AREA = 20;\n\nexport class NavigationItem implements Interfaces.INavigationItem {\n public id: string;\n public parentId: string;\n public text: string;\n public link: string;\n}\n\nexport class MasterNavigation implements Interfaces.INavigation {\n public root: Interfaces.INavigationItem;\n public nodes: Array;\n\n private _navigationInitializedSelector = \"#hdfNavigationInitialized\";\n private _menuNodeClass = \"nav-so-menu\";\n private _backToIoTServicesNodeClass = \"nav-so-back\";\n private _contactLinkClass = \"nav-contact-link\";\n private _footerContactLinkSelector = \"#footerContactLink\";\n private _loaderSelector = \".iot-loader\";\n private quickAccessTooltipSelector = '#QuickAccessTooltip';\n private quickAccessTooltipContainerSelector = '#QuickAccessTooltipContainer';\n\n private _navigationPanel: HTMLElement;\n\n constructor(navigationPanel: HTMLElement) {\n var self = this;\n if ($(navigationPanel).length) {\n self._navigationPanel = navigationPanel;\n self.nodes = new Array();\n var navigationNodeElements = $(navigationPanel).find('a');\n\n navigationNodeElements.each((index, element) => {\n const textElement = $(element).find('text');\n const imageElement = $(element).find('image');\n const anchor = textElement.attr('text-anchor');\n\n var navItem = new NavigationItem();\n navItem.id = $(element).attr('data-nav-id');\n navItem.parentId = $(element).attr('data-nav-parent');\n navItem.text = textElement.text();\n navItem.link = $(element).attr('xlink:href');\n self.nodes.push(navItem);\n\n // Increase text hover area by adding slightly larger rectangle\n var textBoundingBox;\n if (textElement.length && textElement[0] instanceof SVGElement) {\n textBoundingBox = (textElement[0]).getBBox();\n\n // The root node gets a larger hover area to prevent flickering (#937)\n if ($(element).hasClass('root-node')) {\n $(element).find('rect').attr({\n x: textBoundingBox.x - 2 * TEXT_HOVER_AREA,\n y: textBoundingBox.y - 2* TEXT_HOVER_AREA,\n width: textBoundingBox.width + 4 * TEXT_HOVER_AREA,\n height: textBoundingBox.height + 4 * TEXT_HOVER_AREA\n });\n }\n // For the bottom nodes we only stretch the rectangle vertically to not overlap with other nodes\n else if (anchor == 'middle') {\n $(element).find('rect').attr({\n x: textBoundingBox.x,\n y: textBoundingBox.y - TEXT_HOVER_AREA,\n width: textBoundingBox.width,\n height: textBoundingBox.height + 2 * TEXT_HOVER_AREA\n });\n } else {\n $(element).find('rect').attr({\n x: textBoundingBox.x - TEXT_HOVER_AREA,\n y: textBoundingBox.y - TEXT_HOVER_AREA,\n width: textBoundingBox.width + 2 * TEXT_HOVER_AREA,\n height: textBoundingBox.height + 2 * TEXT_HOVER_AREA\n });\n }\n }\n\n // Calculate icon position dynamically\n if (imageElement.length && imageElement[0] instanceof SVGElement && textBoundingBox) {\n\n if (navItem.link === '/Services') {\n imageElement.attr('y', textBoundingBox.y + textBoundingBox.height + ICON_PADDING);\n imageElement.attr('x', textBoundingBox.x + (textBoundingBox.width - parseInt(imageElement.attr('width'))) / 2);\n }\n else {\n switch (anchor) {\n case 'start': // Text position right\n imageElement.attr('x', textBoundingBox.x + textBoundingBox.width + ICON_PADDING);\n break;\n case 'middle': // Text position above or below (above does not exist right now and cannot be detected yet)\n imageElement.attr('y', textBoundingBox.y + textBoundingBox.height + ICON_PADDING);\n break;\n case 'end': // Text position left\n imageElement.attr('x', textBoundingBox.x - parseInt(imageElement.attr('width')) - ICON_PADDING);\n break;\n }\n }\n }\n\n if (navItem.parentId == '0') {\n self.root = navItem;\n } else {\n if ($(self._navigationPanel).find('a[data-nav-parent=\"' + navItem.id + '\"]').length) {\n if (!this.navigationInitailized()) {\n this.bindNodeItemClickEvent(navItem.id);\n }\n } else if ($(element).hasClass(this._contactLinkClass)) {\n $(element).click(() => {\n this.contactNodeClicked();\n })\n }\n }\n $(element).mouseenter(() => {\n const name = $(element).data('name');\n if (name && !$(element).hasClass('disabled')) {\n $(this.quickAccessTooltipSelector).text(name);\n $(this.quickAccessTooltipContainerSelector).fadeIn(50);\n }\n });\n $(element).mouseleave(() => {\n $(this.quickAccessTooltipContainerSelector).fadeOut(50);\n });\n });\n\n if (!this.navigationInitailized()) {\n // Since we only have one navigation layout now we don't need to look at the context\n //self.hideNodesFromWebContext();\n // We don't highlight the active node because we will highlight certain nodes based on the user profile in the future\n //self.setActiveNode();\n this.completeInitialization();\n }\n this.showNavigation();\n }\n\n if ($('.main-menu-overview').length) {\n $('.overview-link .link-title').click(function () {\n var href = $(this).attr('href');\n if ($(href).length) {\n var $anchor = $(href).offset();\n var headerHeight = $('header').outerHeight();\n $('body,html').animate({ scrollTop: $anchor.top - headerHeight}, 'slow');\n } \n return false;\n });\n }\n }\n\n showNavigation(): void {\n $(this._loaderSelector).hide();\n $(this._navigationPanel).fadeTo(500, 1);\n }\n\n hideNodesFromWebContext(): void {\n var nodeToHide = this.nodes.filter((node) => {\n var nodeElement = $('a[data-nav-id=' + node.id + ']');\n var nodeWebContext = $(nodeElement).attr('data-nav-webctx');\n if (nodeWebContext) {\n var regex = new RegExp('^' + nodeWebContext, \"gi\");\n let matches = regex.exec(location.pathname);\n if (!matches || matches.length == 0) {\n return node;\n }\n }\n });\n nodeToHide.forEach((node) => {\n var nodeElement = $('a[data-nav-id=' + node.id + ']');\n var nodeChildElements = $('a[data-nav-parent=' + node.id + ']');\n nodeElement.css({ display: 'none' });\n nodeChildElements.css({ display: 'none' });\n });\n }\n\n setActiveNode(): void {\n var currentLocation = location.pathname;\n var locationParts = currentLocation.split(\"/\").filter(String);\n // find node which has link equal to current path from URL\n var currentActiveNode = this.nodes.filter((navItem) => {\n return navItem.link === currentLocation;\n });\n if (currentActiveNode.length) {\n //find element for current node\n var currentActiveNodeElement = $('a[data-nav-id=' + currentActiveNode[0].id + ']');\n if (currentActiveNodeElement.length && !$(currentActiveNodeElement).hasClass('active')) {\n $(currentActiveNodeElement).addClass('active');\n }\n //set parents active recursive\n this.setActiveParents(currentActiveNode[0]);\n }\n else { // active node not found, then find flexible a suitable node\n var activeNodes = this.nodes.filter((navItem) => {\n return (navItem.link.indexOf(locationParts[0]) >= 0 && navItem.link.indexOf(locationParts[0]) < 2); // find nodes with the name of current controller in the link\n });\n if (activeNodes.length) {\n //find parent element\n var parentActiveNode = this.nodes.filter((navItem) => { return navItem.id === activeNodes[0].parentId; })[0];\n var currentActiveNodeElement = $('a[data-nav-id=' + parentActiveNode.id + ']');\n if (currentActiveNodeElement.length && !$(currentActiveNodeElement).hasClass('active')) {\n $(currentActiveNodeElement).addClass('active');\n }\n //set parents active recursive\n this.setActiveParents(parentActiveNode);\n }\n }\n }\n\n setActiveParents(currentActiveNode: Interfaces.INavigationItem) {\n if (currentActiveNode.parentId && currentActiveNode.parentId !== \"0\") { // if currentNode is not root\n //find parent\n var parentNode = this.nodes.filter((navItem) => { return navItem.id === currentActiveNode.parentId; });\n if (parentNode.length && parentNode[0].parentId !== \"0\") { // if parent is not root, since root is always active\n //find parent node element\n var parentNodeElement = $('a[data-nav-id=' + parentNode[0].id + ']');\n if (parentNodeElement.length && !$(parentNodeElement).hasClass('active')) { // if parent is not yet active\n $(parentNodeElement).addClass('active');\n // set parent of parent active\n this.setActiveParents(parentNode[0]);\n }\n }\n }\n }\n\n toggleNavigationItem(navItem: Interfaces.INavigationItem): void {\n var navItemElement = $(this._navigationPanel).find('a[data-nav-id=\"' + navItem.id + '\"]');\n ////set active/inactive\n $(this._navigationPanel)\n .find('a[data-nav-parent=\"' + navItem.parentId + '\"]')\n .not('a[data-nav-id=\"' + navItem.id + '\"]')\n .each((index, element) => {\n //set disabled/enabled\n if (!$(element).hasClass('inactive')) {\n //$(element).addClass('inactive');\n this.disableNode($(element).attr('data-nav-id'));\n } else {\n //$(element).removeClass('inactive');\n this.enableNode($(element).attr('data-nav-id'));\n }\n });\n //toogle all neighbors excepting root node children\n $(this._navigationPanel)\n .find('a[data-nav-parent=\"' + navItem.parentId + '\"]')\n .not('a[data-nav-id=\"' + navItem.id + '\"]')\n .not('a[data-nav-parent=\"' + this.root.id + '\"]')\n .each((index, element) => {\n if ($(element).css('display') == 'none') {\n $(element).fadeIn();//css({ display: 'block' });\n }\n else {\n $(element).css({ display: 'none' });\n }\n });\n //toogle the children nodes and mark the current as active or hide them\n if ($(navItemElement).hasClass('expanded')) {\n this.hideChildren(navItem.id);\n } else {\n this.showChildren(navItem.id);\n }\n }\n\n showChildren(navItemId: string): void {\n var navItemElement = $(this._navigationPanel).find('a[data-nav-id=\"' + navItemId + '\"]');\n $(navItemElement).addClass('active');\n $(navItemElement).addClass('expanded');\n $(this._navigationPanel)\n .find('a[data-nav-parent=\"' + navItemId + '\"]')\n .each((index, element) => {\n if ($(element).hasClass('expanded')) {\n this.hideChildren($(element).attr('data-nav-id'));\n }\n if ($(element).hasClass('inactive')) {\n //$(element).removeClass('inactive');\n this.enableNode($(element).attr('data-nav-id'));\n }\n $(element).fadeIn();//css({ display: 'block' });\n });\n }\n\n hideChildren(navItemId: string): void {\n var navItemElement = $(this._navigationPanel).find('a[data-nav-id=\"' + navItemId + '\"]');\n $(navItemElement).removeClass('active');\n $(navItemElement).removeClass('expanded');\n $(this._navigationPanel)\n .find('a[data-nav-parent=\"' + navItemId + '\"]')\n .each((index, element) => {\n if ($(element).hasClass('expanded')) {\n this.hideChildren($(element).attr('data-nav-id'));\n }\n $(element).css({ display: 'none' });\n });\n }\n\n public setDisabled(...exceptNodes: string[]): void {\n var allExceptNodes: Array = new Array();\n exceptNodes.forEach((node) => {\n allExceptNodes.push(node);\n this.getChildren(node).forEach((child) => {\n allExceptNodes.push(child);\n });\n });\n $(this._navigationPanel).find('a')\n .not('.root-node')\n .each((index, element) => {\n if (!allExceptNodes || !allExceptNodes.length || (allExceptNodes.indexOf($(element).attr(\"data-nav-id\")) === -1)) {\n if (!$(element).hasClass('disabled') && !$(element).hasClass('active')) {\n $(element).addClass('disabled');\n }\n $(element).find('text').css({ display: 'none' });\n $(element).unbind('click');\n $(element).click(() => { return false; });\n $(element).attr('tabindex', '-1');\n }\n });\n }\n\n public setAlignment(value: string): void {\n var cssClass = \"align-\" + value;\n if (!$(this._navigationPanel).hasClass(cssClass)) {\n var allClasses = $(this._navigationPanel).attr(\"class\").split(\" \");\n var newClasses = [];\n for (var i = 0; i < allClasses.length; i++) {\n var r = allClasses[i].search(/align-*/);\n if (r) newClasses[newClasses.length] = allClasses[i];\n }\n newClasses[newClasses.length] = cssClass;\n $(this._navigationPanel).removeClass().addClass(newClasses.join(\" \")); \n }\n }\n\n public isExpanded(navItemId: string): boolean {\n var navItemElement = $(this._navigationPanel).find('a[data-nav-id=\"' + navItemId + '\"]');\n if ($(navItemElement).length) {\n if ($(navItemElement).hasClass('expanded')) {\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n }\n\n\n private navigationInitailized(): boolean {\n if ($(this._navigationInitializedSelector).length) {\n return new Boolean($(this._navigationInitializedSelector).val()).valueOf();\n } else {\n return false;\n }\n }\n\n private completeInitialization(): void {\n $(this._navigationInitializedSelector).val('true');\n }\n\n private getChildren(nodeId: string): Array {\n var children: Array = new Array();\n $(this._navigationPanel)\n .find('a[data-nav-parent=' + nodeId + ']')\n .each((index, element) => {\n var childId = $(element).attr('data-nav-id');\n children.push(childId);\n this.getChildren(childId).forEach((grandsonId) => {\n children.push(grandsonId);\n });\n });\n return children;\n }\n\n private disableNode(nodeId: string): void {\n var nodeElement = $(this._navigationPanel).find('a[data-nav-id=' + nodeId + ']');\n var nodeItem = this.nodes.find((navItem) => { return navItem.id === nodeId; });\n var nodeChildren = this.getChildren(nodeId);\n //disable link\n if (nodeItem.link.length > 0) {\n $(nodeElement).click(() => { return false; });\n }\n //remove onclick \n if (nodeChildren.length > 0) {\n $(nodeElement).off('click');\n }\n //set css class\n $(nodeElement).addClass('inactive');\n }\n\n private enableNode(nodeId: string): void {\n var nodeElement = $(this._navigationPanel).find('a[data-nav-id=' + nodeId + ']');\n var nodeItem = this.nodes.find((navItem) => { return navItem.id === nodeId; });\n var nodeChildren = this.getChildren(nodeId);\n //remove onclick temporarily added (needed for nodes with a link)\n $(nodeElement).off('click');\n //add onclick for showing the children\n if (nodeChildren.length > 0) {\n this.bindNodeItemClickEvent(nodeId);\n }\n //remove css class\n $(nodeElement).removeClass('inactive');\n }\n\n private bindNodeItemClickEvent(nodeId: string): void {\n var nodeElement = $(this._navigationPanel).find('a[data-nav-id=' + nodeId + ']');\n var nodeItem = this.nodes.find((navItem) => { return navItem.id === nodeId; });\n $(nodeElement).click(() => {\n return true;\n\n // Disabled because we don't have any toggleable nodes right now:\n //if ($(nodeElement).hasClass(this._menuNodeClass)) {\n // this.showChildren(nodeItem.id);\n //} else {\n // this.toggleNavigationItem(nodeItem);\n //}\n });\n }\n\n openNodeFromUrl(): void {\n if (location.search.length > 0) {\n var navName = Env.UrlContext.getQueryStringParam(\"navopen\");\n if (navName.length > 0) {\n var navNodeElement = $(this._navigationPanel).find('text:contains(' + navName + '):visible').parent();\n var navNodeId = $(navNodeElement).attr('data-nav-id');\n var navNodeParentId = $(navNodeElement).attr('data-nav-parent');\n var navNodeParentElement = $(this._navigationPanel).find('a[data-nav-id=' + navNodeParentId + ']');\n if ($(navNodeParentElement).css('display') != 'none' && navNodeElement.length > 0) {\n $(navNodeElement).click();\n }\n }\n }\n }\n\n contactNodeClicked() {\n if ($(this._footerContactLinkSelector).length) {\n let contactAddress = $(this._footerContactLinkSelector).attr('href');\n if (contactAddress && contactAddress != \"javascript:;\") {\n window.location.href = contactAddress;\n } else {\n $(this._footerContactLinkSelector).click();\n }\n }\n }\n}\n\n"],"file":"Navigation.js"}