{"version":3,"sourceRoot":"/cv/scripts/DAC0/eng/include","sources":["tree.js"],"sourcesContent":["/*-----------------------------------------------------------------------------------\r\n' Module Name: tree.js\r\n' Description: does tree things\r\n' Author: Mike Harris\r\n' Date: 5/12/16\r\n'----------------------------------------------------------------------------------*/\r\n\r\n\r\n$.fn.extend({\r\n treed: function (o) {\r\n\r\n var openedClass = 'globys-icon-tree-collapse';\r\n var closedClass = 'globys-icon-tree-expand';\r\n var preexpandLevels = Infinity;\r\n var searchEnabled = false;\r\n var searchShowChildren = false;\r\n var searchShowHighlightedMatch = false;\r\n var searchPlaceholderText = window.strings.SEARCHBOX_PLACEHOLDER_TEXT;\r\n var searchAlertText = window.strings.SEARCHBOX_ALERT_TEXT;\r\n var searchAriaLabel = window.strings.SEARCHBOX_ARIA_LABEL;\r\n var searchOnChange;\r\n var selectEnabled = false;\r\n var actionCallback;\r\n var expandAllEnabled = false;\r\n var expandAllText = window.strings.COMMON_EXPAND_ALL;\r\n var collapseAllText = window.strings.COMMON_COLLAPSE_ALL;\r\n var selectValueTarget;\r\n var dataAttribute;\r\n var selectPreselectValue;\r\n var searchLastFilterText;\r\n\r\n if (typeof o != 'undefined') {\r\n if (typeof o.openedClass != 'undefined') {\r\n openedClass = o.openedClass;\r\n }\r\n if (typeof o.closedClass != 'undefined') {\r\n closedClass = o.closedClass;\r\n }\r\n if (typeof o.preexpandLevels != 'undefined') {\r\n preexpandLevels = o.preexpandLevels;\r\n }\r\n if (typeof o.search != 'undefined') {\r\n if (typeof o.search != 'object') {\r\n searchEnabled = o.search;\r\n } else {\r\n if (typeof o.search.enable != 'undefined') {\r\n searchEnabled = o.search.enable;\r\n }\r\n if (typeof o.search.showChildren != 'undefined') {\r\n searchShowChildren = o.search.showChildren;\r\n }\r\n if (typeof o.search.showHighlightedMatch != 'undefined') {\r\n searchShowHighlightedMatch = o.search.showHighlightedMatch;\r\n }\r\n if (typeof o.search.placeholdertext != 'undefined') {\r\n searchPlaceholderText = o.search.placeholdertext;\r\n }\r\n if (typeof o.search.alertText != 'undefined'){\r\n searchAlertText = o.search.alertText;\r\n }\r\n if (typeof o.search.searchAriaLabel != 'undefined') {\r\n searchAriaLabel = o.search.searchAriaLabel;\r\n }\r\n if (typeof o.search.onchange != 'undefined') {\r\n searchOnChange = o.search.onchange;\r\n }\r\n if (typeof o.search.expandalltext != 'undefined') {\r\n expandAllText = o.search.expandalltext;\r\n }\r\n if (typeof o.search.collapsealltext != 'undefined') {\r\n collapseAllText = o.search.collapsealltext;\r\n }\r\n }\r\n }\r\n if (typeof o.expandAll != 'undefined') {\r\n expandAllEnabled = o.expandAll;\r\n }\r\n if (typeof o.select == 'object') {\r\n if (typeof o.select.enable != 'undefined') {\r\n selectEnabled = o.select.enable;\r\n }\r\n if (typeof o.select.valuetarget != 'undefined') {\r\n selectValueTarget = o.select.valuetarget;\r\n }\r\n if (typeof o.select.dataattribute != 'undefined') {\r\n dataAttribute = o.select.dataattribute;\r\n }\r\n if (typeof o.select.preselect != 'undefined') {\r\n selectPreselectValue = o.select.preselect;\r\n }\r\n }\r\n if (typeof o.actioncallback != 'undefined') {\r\n actionCallback = o.actioncallback;\r\n }\r\n }\r\n\r\n // initialize the tree DOM - add aria attributes, add expand/collapse icons as needed, set default branch expansion\r\n $(this).spin(spinOpts);\r\n var tree = $('ul:first', this);\r\n var treeLinks = [];\r\n var that = this;\r\n tree.attr('role', 'tree');\r\n tree.addClass(\"tree\");\r\n tree.find('li').each(function () {\r\n var $branch = $(this); //li with children ul\r\n var $branchContents = $branch.children(':not(ul)')\r\n var $div = $('
')\r\n if ($branch.has('ul').length) {\r\n $div.append(\"\");\r\n $div.append(\"\");\r\n }\r\n $branchContents.detach().appendTo($div)\r\n $branch.prepend($div)\r\n \r\n var isExpanded = ($branch.parents(\"ul\").length <= preexpandLevels);\r\n $branch.addClass('branch');\r\n $branch.attr('aria-expanded', isExpanded);\r\n });\r\n tree.find('li ul').each(function() {\r\n var $subtree = $(this);\r\n $subtree.addClass('subtree');\r\n })\r\n tree.find('li.branch li:not(.branch), > li:not(.branch)').each(function () {\r\n var $leaf = $(this);\r\n $leaf.addClass('leaf');\r\n })\r\n\r\n // perform show/hide based on search box contents\r\n var doSearch = function (e) {\r\n const filterTextIsIncluded = function(item, loweCaseTextToFind) {\r\n if (!item) {\r\n return false;\r\n }\r\n const contentText = item.textContent || item.innerText || '';\r\n return contentText.toLowerCase().indexOf(loweCaseTextToFind) >= 0;\r\n }\r\n\r\n var filterText = $('.tree-search', that).val();\r\n const lowerCaseFilterText = filterText ? filterText.toLowerCase() : '';\r\n if ((searchLastFilterText || '').toLowerCase() === lowerCaseFilterText) {\r\n return;\r\n }\r\n $.spin(spinOpts);\r\n var $liColl = $('li', tree);\r\n if (!filterText) {\r\n // no search, remove display hiding\r\n $liColl.css('display', '');\r\n } else {\r\n $liColl.filter((_index, item)=> !filterTextIsIncluded(item, lowerCaseFilterText)).css('display', 'none');\r\n var $liMatches = $liColl.filter((_index, item)=> filterTextIsIncluded(item, lowerCaseFilterText));\r\n $liMatches.css('display', '');\r\n if (searchShowChildren) {\r\n $liMatches.children('.node-contents').filter((_index, item) => {\r\n return filterTextIsIncluded(item, lowerCaseFilterText);\r\n }).parent().find('li').css('display', '');\r\n }\r\n // reset indicators to new search visibility results\r\n $liMatches.attr('aria-expanded', true);\r\n }\r\n\r\n if (searchShowHighlightedMatch) {\r\n $('.node-contents', tree).unmark();\r\n $('.node-contents', tree).mark(filterText, { separateWordSearch:false });\r\n }\r\n\r\n setSearchAlert();\r\n $.spin(false);\r\n searchLastFilterText = filterText\r\n if (searchOnChange && typeof searchOnChange === 'function') { searchOnChange(); }\r\n }\r\n\r\n var setSearchAlert = function(){\r\n if (searchAlertText != null && searchAlertText != undefined){\r\n var searchStatusElem = tree.siblings(\"#searchStatus:first\");\r\n if (searchStatusElem.is(\":hidden\")){\r\n searchStatusElem.show();\r\n }\r\n\r\n var totalItems = $(\"li[role='treeitem']\", tree).length\r\n var hiddenItems = $(\"li[role='treeitem'][style*='display: none']\", tree).length;\r\n searchStatusElem.text(searchAlertText.replace(\"%d\", totalItems - hiddenItems).replace(\"%n\", totalItems));\r\n \r\n }\r\n }\r\n\r\n // prepend search box\r\n if (searchEnabled) {\r\n $(this).prepend('
')\r\n }\r\n\r\n // initialize expand-all/collapse-all controls\r\n if (expandAllEnabled) {\r\n $(this).prepend('
');\r\n $('.tree-expand-all', this).on('click', function (e) {\r\n treeLinks.forEach(function(t) { t.expandAllItems() });\r\n if (searchEnabled) doSearch();\r\n })\r\n $('.tree-collapse-all', this).on('click', function (e) {\r\n treeLinks.forEach(function(t) { t.collapseAllItems() });\r\n })\r\n }\r\n\r\n // prepend search box\r\n if (searchEnabled) {\r\n var searchId = this.prop('id') + '-searchbox';\r\n $(this).prepend('
');\r\n $('.tree-search', this).on('keypress', function(e) { return !(e && e.keyCode == 13); }); // prevent Enter from refreshing page\r\n $('.tree-search', this).on('keyup', debounce(doSearch, 350));\r\n }\r\n\r\n var trees = $('[role=\"tree\"]', this);\r\n for (var i = 0; i < trees.length; i++) {\r\n var treeLink = new TreeLinks(trees[i]);\r\n // initialize tree selection callback\r\n treeLink.selectCallback = !!selectEnabled ? function(e) {\r\n $('.list-item-selected', tree).removeClass('list-item-selected');\r\n $('[aria-selected=true]').removeAttr('aria-selected');\r\n var $li = $(e.target).parentsUntil('ul').last();\r\n if (!$li.length) $li = $(e.target);\r\n $li.addClass('list-item-selected');\r\n $li.attr({'aria-selected': true});\r\n if (selectValueTarget.length && $(selectValueTarget).length) {\r\n $(selectValueTarget).val($li.data(dataAttribute)).trigger('change');\r\n }\r\n if (actionCallback) { actionCallback(e); }\r\n return true;\r\n } : function(e) {\r\n if (actionCallback) { actionCallback(e); return true; }\r\n return false;\r\n };\r\n treeLink.init();\r\n treeLinks.push(treeLink);\r\n\r\n if (selectEnabled) {\r\n //set preselect value\r\n if (dataAttribute && dataAttribute.length > 0 && selectPreselectValue && selectPreselectValue.length > 0) {\r\n var itemFound = false;\r\n for(var idx = 0; (idx.node-contents >:last', this).trigger('click');\r\n }\r\n }\r\n $(this).spin(false);\r\n }\r\n});\r\n\r\n// using treelinks example from WIA example page https://www.w3.org/TR/wai-aria-practices-1.1/examples/treeview/treeview-2/treeview-2a.html as starting point to make keyboard-accessible tree structure\r\nvar TreeLinks = function (node) {\r\n // Check whether node is a DOM element\r\n if (typeof node !== 'object') {\r\n return;\r\n }\r\n\r\n this.domNode = node;\r\n\r\n this.treeitems = [];\r\n this.firstChars = [];\r\n\r\n this.firstTreeitem = null;\r\n this.lastTreeitem = null;\r\n\r\n this.selectCallback = null;\r\n};\r\n\r\nTreeLinks.prototype.init = function () {\r\n\r\n function findTreeitems(node, tree, group) {\r\n\r\n var elem = node.firstElementChild;\r\n var ti = group;\r\n\r\n while (elem) {\r\n if ((elem.tagName.toLowerCase() === 'li' && ['span','div','button','a','mark'].includes(elem.firstElementChild.tagName.toLowerCase()))/* || elem.tagName.toLowerCase() === 'a'*/) {\r\n ti = new TreeitemLink(elem, tree, group);\r\n ti.init();\r\n tree.treeitems.push(ti);\r\n tree.firstChars.push(ti.label.substring(0, 1).toLowerCase());\r\n }\r\n\r\n if (elem.firstElementChild) {\r\n findTreeitems(elem, tree, ti);\r\n }\r\n\r\n elem = elem.nextElementSibling;\r\n }\r\n }\r\n\r\n // initialize pop up menus\r\n if (!this.domNode.getAttribute('role')) {\r\n this.domNode.setAttribute('role', 'tree');\r\n }\r\n\r\n findTreeitems(this.domNode, this, false);\r\n\r\n this.updateVisibleTreeitems();\r\n\r\n this.firstTreeitem.domNode.tabIndex = 0;\r\n};\r\n\r\nTreeLinks.prototype.findItem = function(matchValue, matcher) {\r\n if (!matcher) matcher=function(a,b) { return a===b; }\r\n for (var i = 0; i < this.treeitems.length; i++) {\r\n if (matcher(this.treeitems[i], matchValue)) {\r\n return this.treeitems[i];\r\n }\r\n }\r\n}\r\n\r\nTreeLinks.prototype.findContentItemsToFocus = function (treeitem) {\r\n return $(treeitem.domNode).children('.node-contents').find('.treeFocusItem').toArray();\r\n};\r\n\r\nTreeLinks.prototype.setFocusToContentItem = function (treeitem, contentItemNode) {\r\n this.setFocusToItem(treeitem, true);\r\n\r\n treeitem.domNode.tabIndex = -1;\r\n contentItemNode.tabIndex = 0;\r\n\r\n contentItemNode.focus();\r\n};\r\n\r\nTreeLinks.prototype.setFocusToItem = function (treeitem, suppressFocus) {\r\n for (var i = 0; i < this.treeitems.length; i++) {\r\n var ti = this.treeitems[i];\r\n\r\n if (ti === treeitem) {\r\n ti.domNode.tabIndex = 0;\r\n if (!suppressFocus) ti.domNode.focus();\r\n }\r\n else {\r\n ti.domNode.tabIndex = -1;\r\n }\r\n\r\n this.findContentItemsToFocus(ti).forEach(item => item.tabIndex = -1);\r\n }\r\n};\r\n\r\nTreeLinks.prototype.setFocusToNextItem = function (currentItem, includeFocusStops) {\r\n if (includeFocusStops) {\r\n const treeFocusItems = this.findContentItemsToFocus(currentItem);\r\n\r\n if (treeFocusItems.length > 0) {\r\n if (currentItem.domNode === document.activeElement) {\r\n this.setFocusToContentItem(currentItem, treeFocusItems[0]);\r\n return;\r\n }\r\n\r\n for (let index = 0; index <= treeFocusItems.length - 2; index++) {\r\n if (treeFocusItems[index] === document.activeElement) {\r\n this.setFocusToContentItem(currentItem, treeFocusItems[index + 1]);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n var nextItem = false;\r\n\r\n for (var i = (this.treeitems.length - 1); i >= 0; i--) {\r\n var ti = this.treeitems[i];\r\n if (ti === currentItem) {\r\n break;\r\n }\r\n if (ti.isVisible) {\r\n nextItem = ti;\r\n }\r\n }\r\n\r\n if (nextItem) {\r\n this.setFocusToItem(nextItem);\r\n }\r\n};\r\n\r\nTreeLinks.prototype.setFocusToPreviousItem = function (currentItem) {\r\n const treeFocusItems = this.findContentItemsToFocus(currentItem);\r\n\r\n if (treeFocusItems.length > 0) {\r\n if (treeFocusItems[0] === document.activeElement) {\r\n this.setFocusToItem(currentItem);\r\n return;\r\n }\r\n\r\n for (let index = treeFocusItems.length - 1; index > 0; index--) {\r\n if (treeFocusItems[index] === document.activeElement) {\r\n this.setFocusToContentItem(currentItem, treeFocusItems[index - 1]);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n var prevItem = false;\r\n\r\n for (var i = 0; i < this.treeitems.length; i++) {\r\n var ti = this.treeitems[i];\r\n if (ti === currentItem) {\r\n break;\r\n }\r\n if (ti.isVisible) {\r\n prevItem = ti;\r\n }\r\n }\r\n\r\n if (prevItem) {\r\n const previousTreeFocusItems = this.findContentItemsToFocus(prevItem);\r\n\r\n if (previousTreeFocusItems.length > 0) {\r\n this.setFocusToContentItem(prevItem, previousTreeFocusItems[previousTreeFocusItems.length - 1]);\r\n } else {\r\n this.setFocusToItem(prevItem);\r\n }\r\n }\r\n};\r\n\r\nTreeLinks.prototype.setFocusToParentItem = function (currentItem) {\r\n if (currentItem.groupTreeitem) {\r\n this.setFocusToItem(currentItem.groupTreeitem);\r\n }\r\n};\r\n\r\nTreeLinks.prototype.setFocusToFirstItem = function () {\r\n this.setFocusToItem(this.firstTreeitem);\r\n};\r\n\r\nTreeLinks.prototype.setFocusToLastItem = function () {\r\n this.setFocusToItem(this.lastTreeitem);\r\n};\r\n\r\nTreeLinks.prototype.setAriaExpanded = function(ci, isExpanded) {\r\n ci.domNode.setAttribute('aria-expanded', isExpanded)\r\n}\r\n\r\nTreeLinks.prototype.expandTreeitem = function (currentItem) {\r\n if (!Array.isArray(currentItem)) currentItem = [currentItem];\r\n var that = this;\r\n currentItem.forEach(function(ci) {\r\n if (ci.isExpandable) {\r\n that.setAriaExpanded(ci, true);\r\n }\r\n })\r\n this.updateVisibleTreeitems();\r\n};\r\n\r\nTreeLinks.prototype.expandAllSiblingItems = function (currentItem) {\r\n for (var i = 0; i < this.treeitems.length; i++) {\r\n var ti = this.treeitems[i];\r\n\r\n if ((ti.groupTreeitem === currentItem.groupTreeitem) && ti.isExpandable) {\r\n this.expandTreeitem(ti);\r\n }\r\n }\r\n};\r\n\r\nTreeLinks.prototype.expandAllItems = function () {\r\n //for (var i = 0; i < this.treeitems.length; i++) {\r\n // var ti = this.treeitems[i];\r\n this.expandTreeitem(this.treeitems);\r\n //} \r\n}\r\n\r\nTreeLinks.prototype.collapseTreeitem = function (currentItem, suppressFocus) {\r\n if (!Array.isArray(currentItem)) currentItem = [currentItem];\r\n var focusItem = false;\r\n var that = this;\r\n currentItem.forEach(function(ci) {\r\n var groupTreeitem = false;\r\n\r\n if (ci.isExpanded()) {\r\n groupTreeitem = ci;\r\n } else {\r\n groupTreeitem = ci.groupTreeitem;\r\n }\r\n\r\n if (!focusItem) {\r\n focusItem = groupTreeitem;\r\n }\r\n \r\n if (groupTreeitem) {\r\n that.setAriaExpanded(groupTreeitem, false);\r\n }\r\n })\r\n\r\n this.updateVisibleTreeitems();\r\n this.setFocusToItem(focusItem, suppressFocus);\r\n};\r\n\r\nTreeLinks.prototype.collapseAllItems = function () {\r\n //for (var i = 0; i < this.treeitems.length; i++) {\r\n // var ti = this.treeitems[i];\r\n this.collapseTreeitem(this.treeitems, true);\r\n //} \r\n}\r\n\r\nTreeLinks.prototype.updateVisibleTreeitems = function () {\r\n this.firstTreeitem = this.treeitems[0];\r\n\r\n for (var i = 0; i < this.treeitems.length; i++) {\r\n var ti = this.treeitems[i];\r\n\r\n var parent = ti.domNode.parentNode;\r\n\r\n ti.isVisible = true;\r\n\r\n while (parent && (parent !== this.domNode)) {\r\n if ((parent.getAttribute('aria-expanded') || '').toLowerCase() == 'false') {\r\n ti.isVisible = false;\r\n }\r\n parent = parent.parentNode;\r\n }\r\n\r\n if (ti.isVisible) {\r\n this.lastTreeitem = ti;\r\n }\r\n }\r\n};\r\n\r\nTreeLinks.prototype.setFocusByFirstCharacter = function (currentItem, char) {\r\n var start, index, char = char.toLowerCase();\r\n\r\n // Get start index for search based on position of currentItem\r\n start = this.treeitems.indexOf(currentItem) + 1;\r\n if (start === this.treeitems.length) {\r\n start = 0;\r\n }\r\n\r\n // Check remaining slots in the menu\r\n index = this.getIndexFirstChars(start, char);\r\n\r\n // If not found in remaining slots, check from beginning\r\n if (index === -1) {\r\n index = this.getIndexFirstChars(0, char);\r\n }\r\n\r\n // If match was found...\r\n if (index > -1) {\r\n this.setFocusToItem(this.treeitems[index]);\r\n }\r\n};\r\n\r\nTreeLinks.prototype.getIndexFirstChars = function (startIndex, char) {\r\n for (var i = startIndex; i < this.firstChars.length; i++) {\r\n if (this.treeitems[i].isVisible) {\r\n if (char === this.firstChars[i]) {\r\n return i;\r\n }\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nvar TreeitemLink = function (node, treeObj, group) {\r\n // Check whether node is a DOM element\r\n if (typeof node !== 'object') {\r\n return;\r\n }\r\n\r\n node.tabIndex = -1;\r\n this.tree = treeObj;\r\n this.groupTreeitem = group;\r\n this.domNode = node;\r\n this.label = node.innerText.split('\\n')[0]; //node.textContent.trim();\r\n this.stopDefaultClick = false;\r\n\r\n if (node.getAttribute('aria-label')) {\r\n this.label = node.getAttribute('aria-label').trim();\r\n }\r\n\r\n this.isExpandable = false;\r\n this.isVisible = false;\r\n this.inGroup = false;\r\n\r\n if (group) {\r\n this.inGroup = true;\r\n }\r\n\r\n var elem = node.firstElementChild;\r\n\r\n while (elem) {\r\n if (elem.tagName.toLowerCase() == 'ul') {\r\n elem.setAttribute('role', 'group');\r\n this.isExpandable = true;\r\n break;\r\n }\r\n\r\n elem = elem.nextElementSibling;\r\n }\r\n\r\n this.keyCode = Object.freeze({\r\n RETURN: 13,\r\n SPACE: 32,\r\n PAGEUP: 33,\r\n PAGEDOWN: 34,\r\n END: 35,\r\n HOME: 36,\r\n LEFT: 37,\r\n UP: 38,\r\n RIGHT: 39,\r\n DOWN: 40\r\n });\r\n};\r\n\r\nTreeitemLink.prototype.init = function () {\r\n this.domNode.tabIndex = -1;\r\n\r\n if (!this.domNode.getAttribute('role')) {\r\n this.domNode.setAttribute('role', 'treeitem');\r\n }\r\n\r\n this.domNode.addEventListener('keydown', this.handleKeydown.bind(this));\r\n this.domNode.addEventListener('click', this.handleClick.bind(this));\r\n this.domNode.addEventListener('focus', this.handleFocus.bind(this));\r\n this.domNode.addEventListener('blur', this.handleBlur.bind(this));\r\n\r\n if (this.isExpandable) {\r\n this.domNode.firstElementChild.addEventListener('mouseover', this.handleMouseOver.bind(this));\r\n this.domNode.firstElementChild.addEventListener('mouseout', this.handleMouseOut.bind(this));\r\n }\r\n else {\r\n this.domNode.addEventListener('mouseover', this.handleMouseOver.bind(this));\r\n this.domNode.addEventListener('mouseout', this.handleMouseOut.bind(this));\r\n }\r\n};\r\n\r\nTreeitemLink.prototype.isExpanded = function () {\r\n if (this.isExpandable) {\r\n return this.domNode.getAttribute('aria-expanded') === 'true';\r\n }\r\n\r\n return false;\r\n};\r\n\r\n/* EVENT HANDLERS */\r\n\r\nTreeitemLink.prototype.handleKeydown = function (event) {\r\n var tgt = event.currentTarget,\r\n flag = false,\r\n char = event.key,\r\n clickEvent;\r\n\r\n function isPrintableCharacter(str) {\r\n return str.length === 1 && str.match(/\\S/);\r\n }\r\n\r\n function printableCharacter(item) {\r\n if (char == '*') {\r\n item.tree.expandAllSiblingItems(item);\r\n flag = true;\r\n }\r\n else {\r\n if (isPrintableCharacter(char)) {\r\n item.tree.setFocusByFirstCharacter(item, char);\r\n flag = true;\r\n }\r\n }\r\n }\r\n\r\n this.stopDefaultClick = false;\r\n\r\n if (event.cancelBubble || event.altKey || event.ctrlKey || event.metaKey) {\r\n return;\r\n }\r\n if (event.target !== this.domNode && !($(event.target).closest(this.domNode.tagName).is($(this.domNode)))) {\r\n return;\r\n }\r\n\r\n if (event.shift) {\r\n if (event.keyCode == this.keyCode.SPACE || event.keyCode == this.keyCode.RETURN) {\r\n event.stopPropagation();\r\n this.stopDefaultClick = true;\r\n }\r\n else {\r\n if (isPrintableCharacter(char)) {\r\n printableCharacter(this);\r\n }\r\n }\r\n }\r\n else {\r\n switch (event.keyCode) {\r\n case this.keyCode.SPACE:\r\n case this.keyCode.RETURN:\r\n var link = event.target.querySelector(':scope > .node-contents a.title[onclick]')\r\n\r\n if (link) {\r\n link.dispatchEvent(new Event('click'))\r\n }\r\n \r\n if (this.tree.selectCallback && typeof this.tree.selectCallback === 'function') {\r\n flag = this.tree.selectCallback(event);\r\n break;\r\n }\r\n\r\n if (this.isExpandable) {\r\n if (this.isExpanded()) {\r\n this.tree.collapseTreeitem(this);\r\n }\r\n else {\r\n this.tree.expandTreeitem(this);\r\n }\r\n flag = true;\r\n }\r\n else {\r\n event.stopPropagation();\r\n this.stopDefaultClick = true;\r\n }\r\n break;\r\n\r\n case this.keyCode.UP:\r\n this.tree.setFocusToPreviousItem(this);\r\n flag = true;\r\n break;\r\n\r\n case this.keyCode.DOWN:\r\n this.tree.setFocusToNextItem(this, true);\r\n flag = true;\r\n break;\r\n\r\n case this.keyCode.RIGHT:\r\n if (this.isExpandable) {\r\n if (this.isExpanded()) {\r\n this.tree.setFocusToNextItem(this, false);\r\n }\r\n else {\r\n this.tree.expandTreeitem(this);\r\n }\r\n }\r\n flag = true;\r\n break;\r\n\r\n case this.keyCode.LEFT:\r\n if (this.isExpandable && this.isExpanded()) {\r\n this.tree.collapseTreeitem(this);\r\n flag = true;\r\n }\r\n else if (this.inGroup) {\r\n this.tree.setFocusToParentItem(this);\r\n flag = true;\r\n }\r\n break;\r\n\r\n case this.keyCode.HOME:\r\n this.tree.setFocusToFirstItem();\r\n flag = true;\r\n break;\r\n\r\n case this.keyCode.END:\r\n this.tree.setFocusToLastItem();\r\n flag = true;\r\n break;\r\n\r\n default:\r\n if (isPrintableCharacter(char)) {\r\n printableCharacter(this);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n if (flag) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n};\r\n\r\nTreeitemLink.prototype.handleClick = function (event) {\r\n // only process click events that directly happened on this treeitem\r\n if (event.cancelBubble || event.defaultPrevented) {\r\n return;\r\n }\r\n if (event.target !== this.domNode && !($(event.target).closest(this.domNode.tagName).is($(this.domNode)))) {\r\n return;\r\n }\r\n\r\n this.tree.setFocusToItem(this, event.detail<1);\r\n\r\n if (['a','button','span','mark'].includes(event.target.tagName.toLowerCase()) && !(Array.from(event.target.classList).includes('indicator')) && this.tree.selectCallback && typeof this.tree.selectCallback === 'function') {\r\n this.tree.selectCallback(event);\r\n } else if (this.isExpandable) {\r\n if (this.isExpanded()) {\r\n this.tree.collapseTreeitem(this);\r\n }\r\n else {\r\n this.tree.expandTreeitem(this);\r\n }\r\n }\r\n event.stopPropagation();\r\n event.preventDefault();\r\n};\r\n\r\nTreeitemLink.prototype.handleFocus = function (event) {\r\n var node = this.domNode;\r\n if (this.isExpandable) {\r\n node = node.firstElementChild;\r\n }\r\n node.classList.add('focus');\r\n};\r\n\r\nTreeitemLink.prototype.handleBlur = function (event) {\r\n var node = this.domNode;\r\n if (this.isExpandable) {\r\n node = node.firstElementChild;\r\n }\r\n node.classList.remove('focus');\r\n};\r\n\r\nTreeitemLink.prototype.handleMouseOver = function (event) {\r\n event.currentTarget.classList.add('hover');\r\n};\r\n\r\nTreeitemLink.prototype.handleMouseOut = function (event) {\r\n event.currentTarget.classList.remove('hover');\r\n};"],"names":["$","fn","extend","treed","o","doSearch","e","filterTextIsIncluded","item","loweCaseTextToFind","textContent","innerText","toLowerCase","indexOf","$liColl","$liMatches","filterText","that","val","lowerCaseFilterText","searchLastFilterText","spin","spinOpts","tree","filter","_index","css","searchShowChildren","children","parent","find","attr","searchShowHighlightedMatch","unmark","mark","separateWordSearch","setSearchAlert","searchOnChange","actionCallback","selectValueTarget","dataAttribute","selectPreselectValue","openedClass","closedClass","preexpandLevels","Infinity","searchEnabled","searchPlaceholderText","window","strings","SEARCHBOX_PLACEHOLDER_TEXT","searchAlertText","SEARCHBOX_ALERT_TEXT","searchAriaLabel","SEARCHBOX_ARIA_LABEL","selectEnabled","expandAllEnabled","expandAllText","COMMON_EXPAND_ALL","collapseAllText","COMMON_COLLAPSE_ALL","search","enable","showChildren","showHighlightedMatch","placeholdertext","alertText","onchange","expandalltext","collapsealltext","expandAll","select","valuetarget","dataattribute","preselect","actioncallback","this","treeLinks","addClass","each","$branch","$branchContents","$div","isExpanded","has","length","append","detach","appendTo","prepend","parents","searchStatusElem","totalItems","hiddenItems","siblings","is","show","text","replace","trees","on","forEach","t","expandAllItems","collapseAllItems","searchId","prop","keyCode","debounce","i","treeLink","TreeLinks","selectCallback","removeClass","removeAttr","$li","target","parentsUntil","last","aria-selected","data","trigger","init","push","itemFound","idx","targetItem","findItem","a","b","domNode","toString","expandTreeitem","expandAllSiblingItems","node","treeitems","firstChars","firstTreeitem","lastTreeitem","TreeitemLink","prototype","getAttribute","setAttribute","findTreeitems","group","elem","firstElementChild","ti","tagName","includes","label","substring","nextElementSibling","updateVisibleTreeitems","tabIndex","matchValue","matcher","findContentItemsToFocus","treeitem","toArray","setFocusToContentItem","contentItemNode","setFocusToItem","focus","suppressFocus","setFocusToNextItem","currentItem","includeFocusStops","treeFocusItems","document","activeElement","let","index","nextItem","isVisible","setFocusToPreviousItem","previousTreeFocusItems","prevItem","setFocusToParentItem","groupTreeitem","setFocusToFirstItem","setFocusToLastItem","setAriaExpanded","ci","Array","isArray","isExpandable","collapseTreeitem","focusItem","parentNode","setFocusByFirstCharacter","char","start","getIndexFirstChars","startIndex","treeObj","split","stopDefaultClick","trim","inGroup","Object","freeze","RETURN","SPACE","PAGEUP","PAGEDOWN","END","HOME","LEFT","UP","RIGHT","DOWN","addEventListener","handleKeydown","bind","handleClick","handleFocus","handleBlur","handleMouseOver","handleMouseOut","event","currentTarget","flag","key","isPrintableCharacter","str","match","printableCharacter","cancelBubble","altKey","ctrlKey","metaKey","closest","shift","stopPropagation","link","querySelector","dispatchEvent","Event","preventDefault","defaultPrevented","detail","from","classList","add","remove"],"mappings":"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"}