{"version":3,"sources":["src/scripts/components/tooltip-annotation.js"],"names":["$","jQuery","init","$context","$tooltip","find","$references","OFFSET","$close","$bubble","length","initTooltips","buildBubbles","binds","on","openTip","closeTip","window","repositionBubbles","i","annotationLink","toolText","html","attr","template","createTip","append","positionBubble","$this","$newBubble","children","leftPos","positionLeft","h","outerHeight","css","checkBoundaries","bubbleOffset","offset","bubblePos","position","bubbleWid","outerWidth","winWidth","innerWidth","left","addLeft","subLeft","positionArrow","$arrow","arrowPos","Math","abs","$elem","elemOffset","buttonOffset","e","preventDefault","stopPropagation","ind","index","removeClass","$child","siblings","hasClass","addClass","tooltipAnnotations"],"mappings":"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","file":"tooltip-annotation.js","sourcesContent":["import {debounce} from '../utils/utilities.js';\nvar $ = jQuery;\n\n\n/**\n * Similar to the tooltip.js component, but this type of tooltip gets its\n * content from the Report references items in the page rather than a data\n * attribute.\n */\n\nfunction init($context) {\n\n const $tooltip = $context.find('.annotation__highlight');\n const $references = $context.find('.article__references-reference');\n const OFFSET = 5;\n\n var $close = {};\n var $bubble = {};\n if($tooltip.length > 0) {\n initTooltips();\n }\n\n function initTooltips() {\n buildBubbles();\n binds();\n }\n\n function binds() {\n $close = $context.find('.tooltip__close');\n\n $tooltip.find('.annotation-link').on('click', openTip);\n $close.on('click', closeTip);\n\n $(window).on('resize', debounce(() => {\n repositionBubbles();\n }, 250));\n\n // // Creating the jump to the references functionality.\n // $('body').on('click', '.tooltip__jump-link', function(e) {\n\n // // Prevent the default jump.\n // e.preventDefault();\n\n // // Open references accordion, if closed.\n // openReferences();\n\n // // Find the target element's name.\n // let targetName = this.getAttribute('href').replace('#', '');\n\n // // Jump to the target element.\n // jumpTo(jQuery('[name=\"'+targetName+'\"]'));\n // });\n\n // // Creating the jump back to content functionality.\n // $('body').on('click', '.reference-anchor', function(e) {\n\n // // Prevent the default jump.\n // e.preventDefault();\n\n // // Find the target element's name.\n // let targetName = this.getAttribute('href').replace('#', '');\n\n // // Jump to the target element.\n // jumpTo(jQuery(e.target).parents('article').find('[name=\"'+targetName+'\"]'));\n // });\n }\n\n function buildBubbles() {\n for(let i =0; i < $tooltip.length; i++) {\n // @TODO: get toolText from the corresponding Report reference content.\n // annotation__highlight elements have a data-annotation value for this.\n let annotationLink = $($tooltip[i]).find('.annotation-link');\n let toolText = $($references[i]).find('.content').html() + ''+ annotationLink.html() +'';\n let template = createTip(toolText);\n $($tooltip[i]).append(template);\n positionBubble($($tooltip[i]));\n }\n\n $bubble = $('.tooltip__bubble');\n }\n\n function repositionBubbles() {\n for(let i = 0; i < $tooltip.length; i++) {\n positionBubble($($tooltip[i]));\n }\n }\n\n function positionBubble($this) {\n let $newBubble = $this.children('.tooltip__bubble');\n let leftPos = positionLeft($newBubble, $this);\n let h = $newBubble.outerHeight(true) + $this.outerHeight(true);\n\n $newBubble.css({'top': h * -1, 'left': leftPos });\n\n checkBoundaries($newBubble, $this);\n }\n\n function checkBoundaries($newBubble, $this) {\n let bubbleOffset = $newBubble.offset();\n let bubblePos = $newBubble.position();\n let bubbleWid = $newBubble.outerWidth(true);\n let winWidth = window.innerWidth;\n\n if(bubbleOffset.left < 0) {\n let addLeft = (bubbleOffset.left * -1) + bubblePos.left + OFFSET;\n $newBubble.css({'left' : addLeft});\n\n }\n else if(bubbleOffset.left + bubbleWid > winWidth) {\n let subLeft = bubblePos.left - ((bubbleOffset.left + bubbleWid) - winWidth) - OFFSET;\n $newBubble.css({'left': subLeft});\n }\n positionArrow($newBubble, $this);\n }\n\n function positionArrow($newBubble, $this) {\n let $arrow = $('.tooltip__arrow');\n let arrowPos = Math.abs($newBubble.offset().left - $this.offset().left) + ($this.outerWidth(true) /2);\n $arrow.css({'left' : arrowPos});\n }\n\n function positionLeft($elem, $this) {\n let elemOffset = $elem.outerWidth(true) / 2;\n let buttonOffset = $this.outerWidth() / 2;\n return (elemOffset - buttonOffset) * -1;\n }\n\n function closeTip(e) {\n e.preventDefault();\n e.stopPropagation();\n let ind = $close.index($(this));\n $($bubble[ind]).removeClass('_active');\n }\n\n function openTip(e) {\n\n // Prevent the default behavior of the link.\n e.preventDefault();\n\n // Close any other open tips.\n jQuery('.tooltip__bubble._active').removeClass('_active');\n\n let $child = $(this).siblings('.tooltip__bubble');\n\n if(!$child.hasClass('_active')) {\n $child.addClass('_active');\n }\n }\n\n function createTip(toolText) {\n return `