{"version":3,"file":"Tooltips.chunk-122507.js","mappings":"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","sources":["webpack://hobbitontours/./wwwroot/Content/scripts/src/app/ui/tooltip/tooltip.js","webpack://hobbitontours/./wwwroot/Content/scripts/src/util/keybinding.js"],"sourcesContent":["/* app/ui/tooltip/tooltip */\nimport $ from 'jquery';\nimport { activate } from 'Util/activate';\nimport * as Keybinding from 'Util/keybinding';\nimport { publish, subscribe } from 'Util/pubsub';\n\nvar Positions = Object.freeze({\n\tBOTTOM: 'BOTTOM',\n\tTOP: 'TOP',\n\tRIGHT: 'RIGHT',\n\tTOP_RIGHT: 'TOP_RIGHT',\n\tLEFT: 'LEFT',\n\tTOP_LEFT: 'TOP_LEFT'\n});\n\nvar States = Object.freeze({\n\tCLOSED: 'CLOSED',\n\tOPENED: 'OPENED'\n});\n\nvar selectors = Object.freeze({\n\ttooltip: '.js-tooltip',\n\tbody: '.js-tooltip__body',\n\n\ttrigger: '.js-tooltip__trigger',\n\tclose: '.js-tooltip__close',\n\ttoggle: '.js-tooltip__trigger, .js-tooltip__close'\n});\n\nvar classes = Object.freeze({\n\tnoAnimation: 'c-tooltip--no-animation',\n\n\ttop: 'c-tooltip--top',\n\tright: 'c-tooltip--right',\n\tleft: 'c-tooltip--left',\n\n\tattentionGrabber: 'c-tooltip--attention-grabber',\n});\n\nvar pubsubEvents = Object.freeze({\n\topen: 'tooltip/open',\n\tclose: 'tooltip/close',\n\tcloseAll: 'tooltip/closeAll',\n\tattentionAll: 'tooltip/attentionAll',\n\n\topened: 'tooltip/opened',\n});\n\nvar dataSelectors = Object.freeze({\n\tmaxWidth: 'tooltip-max-width'\n});\n\nvar module = {\n\tinit: function () {\n\t\tmodule._initEvents();\n\t\tmodule._initSubscriptions();\n\t\tmodule._initKeybindings();\n\t},\n\n\t_initEvents: function () {\n\t\t$(document)\n\t\t\t.on('click', module._processOutsideClick)\n\t\t\t.on(activate.event, selectors.toggle, activate(module._processClick));\n\t},\n\n\t_initSubscriptions: function () {\n\t\tsubscribe(pubsubEvents.open, module._open);\n\t\tsubscribe(pubsubEvents.close, module._close);\n\t\tsubscribe(pubsubEvents.closeAll, module._closeAll);\n\t\tsubscribe(pubsubEvents.attentionAll, module._attentionAll);\n\t},\n\n\t_initKeybindings: function () {\n\t\tKeybinding.bind('escape', module._closeAll);\n\t},\n\n\t_processOutsideClick: function (e) {\n\t\tvar $target = $(e.target);\n\n\t\tif (!$target.closest(selectors.tooltip).length) {\n\t\t\tmodule._closeAll();\n\t\t}\n\t},\n\n\t_processClick: function (e) {\n\t\tvar $target = $(e.target);\n\t\tvar $tooltip = $target.closest(selectors.tooltip);\n\n\t\te.preventDefault();\n\n\t\tif (module._getState($tooltip) === States.OPENED) {\n\t\t\tmodule._close({\n\t\t\t\ttooltip: $tooltip\n\t\t\t});\n\t\t} else {\n\t\t\tmodule._open({\n\t\t\t\ttooltip: $tooltip\n\t\t\t});\n\t\t}\n\t},\n\n\t_getPosition: function ($tooltip) {\n\t\t$tooltip = $tooltip.closest(selectors.tooltip);\n\t\tvar $body = $tooltip.find(selectors.body);\n\t\tvar position = Positions.BOTTOM;\n\t\tvar isShown = module._getState($tooltip) === States.OPENED;\n\n\t\tvar gap = 20;\n\t\tvar bottom;\n\t\tvar windowBottom;\n\n\t\tvar left;\n\t\tvar windowLeft;\n\n\t\tvar right;\n\t\tvar windowRight;\n\n\t\tif (!isShown) {\n\t\t\t// Open it to check its position, then close it later\n\t\t\t$tooltip.addClass(classes.noAnimation);\n\t\t\tmodule._setState($tooltip, States.OPENED);\n\t\t}\n\t\t$tooltip.removeClass(classes.top).removeClass(classes.right).removeClass(classes.left);\n\n\t\tif ($body.data(dataSelectors.maxWidth)) {\n\t\t\t$body.css('max-width', $body.data(dataSelectors.maxWidth));\n\t\t}\n\n\t\tbottom = $body.offset().top + $body.outerHeight();\n\t\twindowBottom = $(window).scrollTop() + $(window).outerHeight();\n\n\t\tleft = $body.offset().left;\n\t\twindowLeft = 0;\n\n\t\tright = left + $body.outerWidth();\n\t\twindowRight = $(window).outerWidth();\n\n\t\tif ((left - gap) < windowLeft) {\n\t\t\tposition = Positions.RIGHT;\n\t\t} else if ((right + gap) > windowRight) {\n\t\t\tposition = Positions.LEFT;\n\t\t}\n\t\tif ((bottom + gap) > windowBottom) {\n\t\t\tif (position === Positions.RIGHT) {\n\t\t\t\tposition = Positions.TOP_RIGHT;\n\t\t\t} else if (position === Positions.LEFT) {\n\t\t\t\tposition = Positions.TOP_LEFT;\n\t\t\t} else {\n\t\t\t\tposition = Positions.TOP;\n\t\t\t}\n\t\t}\n\n\t\tif (!isShown) {\n\t\t\t// If we opened the tooltip earlier just to check its position, close it now\n\t\t\tmodule._setState($tooltip, States.CLOSED);\n\t\t\t$tooltip.removeClass(classes.noAnimation);\n\t\t}\n\n\t\treturn position;\n\t},\n\n\t_setPositionClass: function ($tooltip) {\n\t\tvar position = module._getPosition($tooltip);\n\n\t\tif (position === Positions.TOP) {\n\t\t\t$tooltip.addClass(classes.top);\n\t\t\t$tooltip.removeClass(classes.right);\n\t\t\t$tooltip.removeClass(classes.left);\n\t\t} else if (position === Positions.RIGHT) {\n\t\t\t$tooltip.removeClass(classes.top);\n\t\t\t$tooltip.addClass(classes.right);\n\t\t\t$tooltip.removeClass(classes.left);\n\t\t} else if (position === Positions.TOP_RIGHT) {\n\t\t\t$tooltip.addClass(classes.top);\n\t\t\t$tooltip.addClass(classes.right);\n\t\t\t$tooltip.removeClass(classes.left);\n\t\t} else if (position === Positions.LEFT) {\n\t\t\t$tooltip.removeClass(classes.top);\n\t\t\t$tooltip.removeClass(classes.right);\n\t\t\t$tooltip.addClass(classes.left);\n\t\t} else if (position === Positions.TOP_LEFT) {\n\t\t\t$tooltip.addClass(classes.top);\n\t\t\t$tooltip.removeClass(classes.right);\n\t\t\t$tooltip.addClass(classes.left);\n\t\t} else {\n\t\t\t$tooltip.removeClass(classes.top);\n\t\t\t$tooltip.removeClass(classes.right);\n\t\t\t$tooltip.removeClass(classes.left);\n\t\t}\n\t},\n\n\t_getState: function ($tooltip) {\n\t\tvar state;\n\n\t\tif ($tooltip.attr('aria-expanded') === 'true') {\n\t\t\tstate = States.OPENED;\n\t\t} else {\n\t\t\tstate = States.CLOSED;\n\t\t}\n\n\t\treturn state;\n\t},\n\n\t_getByState: function (state) {\n\t\t// Returns a callback for $().filter\n\t\treturn function (i, el) {\n\t\t\tvar $el = $(el);\n\t\t\tvar elState = module._getState($el);\n\n\t\t\treturn elState === state;\n\t\t};\n\t},\n\n\t_setState: function ($tooltip, state) {\n\t\tif (state === States.OPENED) {\n\t\t\t$tooltip.attr('aria-expanded', 'true');\n\t\t\t$(window).trigger('/lazyload/resize');\n\t\t\tpublish(pubsubEvents.opened);\n\t\t} else {\n\t\t\t$tooltip.attr('aria-expanded', 'false');\n\t\t\tmodule._clearSize($tooltip);\n\t\t}\n\t},\n\n\t_setSize: function ($tooltip) {\n\t\t// When transforms are used, partial pixel values\n\t\t// cause blurriness. Round height to prevent this\n\n\t\tvar $body = $tooltip.find(selectors.body);\n\t\tvar height = Math.ceil($body.outerHeight());\n\n\t\tif ($tooltip.hasClass(classes.top)) {\n\t\t\t// The blurriness only happens if\n\t\t\t// the tooltip is a \"top\" position variant\n\n\t\t\t$body.css('height', height);\n\t\t}\n\t},\n\n\t_clearSize: function ($tooltip) {\n\t\tvar $body = $tooltip.find(selectors.body);\n\n\t\t$body.css('height', '');\n\t},\n\n\t_getTooltips: function ($container) {\n\t\tvar $tooltips;\n\n\t\tif ($container && $container.length) {\n\t\t\t// All tooltips within this container\n\t\t\t$tooltips = $container.find(selectors.tooltip);\n\t\t} else {\n\t\t\t// All tooltips everywhere\n\t\t\t$tooltips = $(selectors.tooltip);\n\t\t}\n\n\t\treturn $tooltips;\n\t},\n\n\t_open: function (data) {\n\t\tvar $tooltip = $(data.tooltip).closest(selectors.tooltip);\n\n\t\tmodule._closeAll();\n\n\t\tmodule._setState($tooltip, States.OPENED);\n\n\t\tmodule._setPositionClass($tooltip);\n\n\t\tmodule._setSize($tooltip);\n\t},\n\n\t_close: function (data) {\n\t\tvar $tooltip = $(data.tooltip).closest(selectors.tooltip);\n\n\t\tmodule._setState($tooltip, States.CLOSED);\n\t},\n\n\t_closeAll: function (data) {\n\t\tvar $container = $(data && data.container);\n\t\tvar $tooltips = module._getTooltips($container);\n\n\t\t$tooltips = $tooltips.filter(module._getByState(States.OPENED));\n\n\t\tmodule._setState($tooltips, States.CLOSED);\n\t},\n\n\t_attentionAll: function (data) {\n\t\tvar $container = $(data && data.container);\n\t\tvar $tooltips = module._getTooltips($container);\n\n\t\t$tooltips.removeClass(classes.attentionGrabber);\n\t\t// Use setTimeout to ensure the class being added\n\t\t// back will cause the animation to fire again\n\t\twindow.setTimeout(function () {\n\t\t\t$tooltips.addClass(classes.attentionGrabber);\n\t\t}, 0);\n\t},\n};\n\n\nvar Tooltip = {\n\tinit: module.init\n};\n\nexport { Tooltip };","/* Keybinding v2.0.0 */\n\nvar keys = (function () {\n\tvar bindings = {};\n\t/*\n\t{\n\t\t[keyString]: [\n\t\t\t{\n\t\t\t\tfn: fnA,\n\t\t\t\tfnWrapper: fnWrapperA\n\t\t\t},\n\t\t\t{\n\t\t\t\tfn: fnB,\n\t\t\t\tfnWrapper: fnWrapperB\n\t\t\t}\n\t\t]\n\t}\n\t*/\n\n\tvar module = {\n\t\t_isFocusOnInput: function () {\n\t\t\t// Check if the current active element is an input that accepts keypresses\n\n\t\t\tvar $activeEl = document.activeElement;\n\t\t\tvar nodeName = $activeEl.nodeName.toLowerCase();\n\t\t\tvar inputType;\n\n\t\t\tvar isInput = (['input', 'textarea', 'select'].indexOf(nodeName) !== -1);\n\n\t\t\tif (nodeName === 'input') {\n\t\t\t\tinputType = $activeEl.attributes.type.value.toLowerCase();\n\n\t\t\t\tif (['color', 'radio', 'checkbox'].indexOf(inputType) !== -1) {\n\t\t\t\t\tisInput = false;\n\t\t\t\t}\n\t\t\t} else if ($activeEl.isContentEditable) {\n\t\t\t\tisInput = true;\n\t\t\t}\n\n\t\t\treturn isInput;\n\t\t},\n\n\t\t_bindFn: function (key, fn, fnWrapper) {\n\t\t\tdocument.addEventListener('keydown', fnWrapper);\n\t\t\tif (!bindings[key]) {\n\t\t\t\tbindings[key] = [];\n\t\t\t}\n\n\t\t\tbindings[key].push({\n\t\t\t\tfn: fn,\n\t\t\t\tfnWrapper: fnWrapper\n\t\t\t});\n\t\t},\n\n\t\tbind: function (key, fn, allowInInput, requireCtrl) {\n\t\t\tvar fnWrapper;\n\n\t\t\tif (typeof key !== 'string') {\n\t\t\t\tthrow new TypeError('The key parameter to bind must be a string.');\n\t\t\t} else {\n\t\t\t\tkey = key.toLowerCase();\n\t\t\t}\n\n\t\t\tfnWrapper = function (event) {\n\t\t\t\t// Don't check key if focus is on an input element,\n\t\t\t\t// unless it is allowed or requires Ctrl\n\t\t\t\tif (!allowInInput && module._isFocusOnInput() && !requireCtrl) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Some behaviour, like selecting an autocomplete result, can\n\t\t\t\t// fire a keydown event with no key\n\t\t\t\tif (event.key && event.key.toLowerCase() === key) {\n\t\t\t\t\tif (!requireCtrl || event.ctrlKey) {\n\t\t\t\t\t\tif (fn.apply(this, arguments) === false) {\n\t\t\t\t\t\t\t// Implement jQuery-like shorthand of return false;\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tmodule._bindFn(key, fn, fnWrapper);\n\t\t},\n\n\t\tunbind: function (key, fn) {\n\t\t\tvar binding = bindings[key];\n\t\t\tvar index;\n\n\t\t\tif (binding) {\n\t\t\t\t// Find index\n\t\t\t\tfor (index = 0; index < binding.length; index++) {\n\t\t\t\t\tif (binding[index].fn === fn) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (index < binding.length) {\n\t\t\t\t\tdocument.removeEventListener('keydown', binding[index].fnWrapper);\n\t\t\t\t\tbinding.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_getSequenceArgs: function (keyA, keyB, keyC, fn) {\n\t\t\tvar args = Array.prototype.splice.call(arguments, 0);\n\t\t\tvar keys = args[0];\n\t\t\tfn = args[args.length-1]; // The function should be the last event\n\n\t\t\tif (!Array.isArray(keys)) {\n\t\t\t\tkeys = args.splice(0, args.length-1);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tkeys: keys,\n\t\t\t\tfn: fn\n\t\t\t};\n\t\t},\n\n\t\tbindSequence: function (keyA, keyB, keyC, fn) {\n\t\t\tvar args = module._getSequenceArgs.apply(this, arguments);\n\t\t\tvar keys = args.keys;\n\n\t\t\tvar keyString;\n\n\t\t\tvar fnWrapper;\n\t\t\tvar keysPressed = [];\n\t\t\tvar i;\n\n\t\t\tfn = args.fn;\n\n\t\t\tif (keys.length > 1) {\n\t\t\t\t// Record as many of the past keys pressed as required for the sequence\n\n\t\t\t\tfnWrapper = function (event) {\n\t\t\t\t\tvar key = event.key.toLowerCase();\n\n\t\t\t\t\t// Don't check key presses if focus is on an input element\n\t\t\t\t\tif (module._isFocusOnInput()) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (key !== 'shift') {\n\t\t\t\t\t\t// Ignore shift, as it's used as a modifier\n\t\t\t\t\t\tkeysPressed.push(key);\n\t\t\t\t\t}\n\t\t\t\t\tif (keysPressed.length > keys.length) {\n\t\t\t\t\t\tkeysPressed.shift();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (key === keys[keys.length-1]) {\n\t\t\t\t\t\t// When the final key is pressed, check if the whole sequence matches\n\t\t\t\t\t\tfor (i = 0; i < keys.length; i++) {\n\t\t\t\t\t\t\tif (keys[i] !== keysPressed[i]) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// i only reaches keys.length if the break; line was never executed\n\t\t\t\t\t\tif (i === keys.length) {\n\t\t\t\t\t\t\tif (fn.apply(this, arguments) === false) {\n\t\t\t\t\t\t\t\t// Implement jQuery-like shorthand of return false;\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tkeyString = keys.join(',');\n\t\t\t\tmodule._bindFn(keyString, fn, fnWrapper);\n\t\t\t}\n\t\t},\n\n\t\tunbindSequence: function (keyA, keyB, keyC, fn) {\n\t\t\tvar args = module._getSequenceArgs.apply(this, arguments);\n\t\t\tvar keyString = args.keys.join(',');\n\n\t\t\tfn = args.fn;\n\n\t\t\tmodule.unbind(keyString, fn);\n\t\t}\n\t};\n\n\treturn {\n\t\tbind: module.bind,\n\t\tunbind: module.unbind,\n\t\tbindSequence: module.bindSequence,\n\t\tunbindSequence: module.unbindSequence\n\t};\n})();\n\nvar bind = keys.bind;\nvar unbind = keys.unbind;\nvar bindSequence = keys.bindSequence;\nvar unbindSequence = keys.unbindSequence;\n\nexport { bind, unbind, bindSequence, unbindSequence };\n"],"names":["Positions","Object","freeze","BOTTOM","TOP","RIGHT","TOP_RIGHT","LEFT","TOP_LEFT","States","CLOSED","OPENED","selectors","tooltip","body","trigger","close","toggle","classes","noAnimation","top","right","left","attentionGrabber","pubsubEvents","open","closeAll","attentionAll","opened","dataSelectors","maxWidth","module","init","_initEvents","_initSubscriptions","_initKeybindings","$","document","on","_processOutsideClick","activate","event","_processClick","subscribe","_open","_close","_closeAll","_attentionAll","Keybinding","e","target","closest","length","$tooltip","preventDefault","_getState","_getPosition","bottom","windowBottom","windowRight","$body","find","position","isShown","addClass","_setState","removeClass","data","css","offset","outerHeight","window","scrollTop","outerWidth","_setPositionClass","attr","_getByState","state","i","el","$el","publish","_clearSize","_setSize","height","Math","ceil","hasClass","_getTooltips","$container","container","$tooltips","filter","setTimeout","Tooltip","bindings","keys","_isFocusOnInput","inputType","$activeEl","activeElement","nodeName","toLowerCase","isInput","indexOf","attributes","type","value","isContentEditable","_bindFn","key","fn","fnWrapper","addEventListener","push","bind","allowInInput","requireCtrl","TypeError","ctrlKey","apply","this","arguments","stopPropagation","unbind","index","binding","removeEventListener","splice","_getSequenceArgs","keyA","keyB","keyC","args","Array","prototype","call","isArray","bindSequence","keyString","keysPressed","shift","join","unbindSequence"],"sourceRoot":""}