{"version":3,"sources":["webpack:///./node_modules/quasar/src/components/tooltip/QTooltip.js","webpack:///./node_modules/quasar/src/utils/selection.js","webpack:///./node_modules/core-js/modules/es6.string.anchor.js","webpack:///./node_modules/quasar/src/utils/position-engine.js","webpack:///./node_modules/quasar/src/mixins/anchor.js"],"names":["Vue","extend","name","mixins","AnchorMixin","ModelToggleMixin","PortalMixin","TransitionMixin","props","maxHeight","type","String","default","maxWidth","transitionShow","transitionHide","anchor","validator","validatePosition","self","offset","Array","validateOffset","delay","Number","watch","$route","this","hide","computed","anchorOrigin","parsePosition","selfOrigin","methods","__show","evt","clearTimeout","timer","scrollTarget","getScrollTarget","anchorEl","addEventListener","listenOpts","passive","window","updatePosition","__showPortal","setTimeout","$emit","__hide","__anchorCleanup","__hidePortal","removeEventListener","el","__portal","$el","nodeType","style","setPosition","showing","__delayShow","$q","platform","is","mobile","document","body","classList","add","show","__delayHide","remove","__unconfigureAnchorEl","forEach","ios","__configureAnchorEl","__render","h","transition","staticClass","class","contentClass","contentStyle","slot","clearSelection","getSelection","selection","empty","removeAllRanges","Platform","addRange","createRange","createHTML","pos","parts","split","length","includes","console","error","val","vertical","horizontal","getAnchorProps","getBoundingClientRect","top","left","right","bottom","width","height","middle","center","getTargetProps","offsetHeight","offsetWidth","anchorProps","absoluteOffset","cover","fit","anchorTop","anchorLeft","minWidth","minHeight","targetProps","applyBoundaries","Math","max","margin","getScrollbarWidth","innerHeight","innerWidth","min","anchorY","anchorX","target","Boolean","contextMenu","__pickAnchorEl","__showCondition","touches","__contextClick","__toggleKey","keyCode","toggle","__mobileTouch","__mobileCleanup","touchTimer","context","noParentEvent","__setAnchorEl","contains","parentNode","querySelector","parentEl","mounted","$nextTick","value","beforeDestroy"],"mappings":"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","file":"js/chunk-5f778596.83f32608.js","sourcesContent":["import Vue from 'vue'\n\nimport AnchorMixin from '../../mixins/anchor.js'\nimport ModelToggleMixin from '../../mixins/model-toggle.js'\nimport PortalMixin from '../../mixins/portal.js'\nimport TransitionMixin from '../../mixins/transition.js'\n\nimport { getScrollTarget } from '../../utils/scroll.js'\nimport { listenOpts } from '../../utils/event.js'\nimport slot from '../../utils/slot.js'\nimport {\n validatePosition, validateOffset, setPosition, parsePosition\n} from '../../utils/position-engine.js'\n\nexport default Vue.extend({\n name: 'QTooltip',\n\n mixins: [ AnchorMixin, ModelToggleMixin, PortalMixin, TransitionMixin ],\n\n props: {\n maxHeight: {\n type: String,\n default: null\n },\n maxWidth: {\n type: String,\n default: null\n },\n\n transitionShow: {\n default: 'jump-down'\n },\n transitionHide: {\n default: 'jump-up'\n },\n\n anchor: {\n type: String,\n default: 'bottom middle',\n validator: validatePosition\n },\n self: {\n type: String,\n default: 'top middle',\n validator: validatePosition\n },\n offset: {\n type: Array,\n default: () => [14, 14],\n validator: validateOffset\n },\n\n delay: {\n type: Number,\n default: 0\n }\n },\n\n watch: {\n $route () {\n this.hide()\n }\n },\n\n computed: {\n anchorOrigin () {\n return parsePosition(this.anchor)\n },\n\n selfOrigin () {\n return parsePosition(this.self)\n }\n },\n\n methods: {\n __show (evt) {\n clearTimeout(this.timer)\n\n this.scrollTarget = getScrollTarget(this.anchorEl)\n this.scrollTarget.addEventListener('scroll', this.hide, listenOpts.passive)\n if (this.scrollTarget !== window) {\n window.addEventListener('scroll', this.updatePosition, listenOpts.passive)\n }\n\n this.__showPortal()\n\n this.timer = setTimeout(() => {\n this.updatePosition()\n\n this.timer = setTimeout(() => {\n this.$emit('show', evt)\n }, 300)\n }, 0)\n },\n\n __hide (evt) {\n this.__anchorCleanup()\n\n this.timer = setTimeout(() => {\n this.__hidePortal()\n this.$emit('hide', evt)\n }, 300)\n },\n\n __anchorCleanup () {\n clearTimeout(this.timer)\n\n if (this.scrollTarget) {\n this.scrollTarget.removeEventListener('scroll', this.updatePosition, listenOpts.passive)\n if (this.scrollTarget !== window) {\n window.removeEventListener('scroll', this.updatePosition, listenOpts.passive)\n }\n }\n },\n\n updatePosition () {\n const el = this.__portal.$el\n\n if (el.nodeType === 8) { // IE replaces the comment with delay\n setTimeout(() => {\n this.__portal !== void 0 && this.__portal.showing === true && this.updatePosition()\n }, 25)\n return\n }\n\n el.style.maxHeight = this.maxHeight\n el.style.maxWidth = this.maxWidth\n\n setPosition({\n el,\n offset: this.offset,\n anchorEl: this.anchorEl,\n anchorOrigin: this.anchorOrigin,\n selfOrigin: this.selfOrigin\n })\n },\n\n __delayShow (evt) {\n clearTimeout(this.timer)\n this.$q.platform.is.mobile === true && document.body.classList.add('non-selectable')\n this.timer = setTimeout(() => {\n this.show(evt)\n }, this.delay)\n },\n\n __delayHide (evt) {\n clearTimeout(this.timer)\n this.$q.platform.is.mobile === true && document.body.classList.remove('non-selectable')\n this.hide(evt)\n },\n\n __unconfigureAnchorEl () {\n // mobile hover ref https://stackoverflow.com/a/22444532\n if (this.$q.platform.is.mobile) {\n this.anchorEl.removeEventListener('touchstart', this.__delayShow)\n ;['touchcancel', 'touchmove', 'click'].forEach(evt => {\n this.anchorEl.removeEventListener(evt, this.__delayHide)\n })\n }\n else {\n this.anchorEl.removeEventListener('mouseenter', this.__delayShow)\n }\n\n if (this.$q.platform.is.ios !== true) {\n this.anchorEl.removeEventListener('mouseleave', this.__delayHide)\n }\n },\n\n __configureAnchorEl () {\n // mobile hover ref https://stackoverflow.com/a/22444532\n if (this.$q.platform.is.mobile) {\n this.anchorEl.addEventListener('touchstart', this.__delayShow)\n ;['touchcancel', 'touchmove', 'click'].forEach(evt => {\n this.anchorEl.addEventListener(evt, this.__delayHide)\n })\n }\n else {\n this.anchorEl.addEventListener('mouseenter', this.__delayShow)\n }\n\n if (this.$q.platform.is.ios !== true) {\n this.anchorEl.addEventListener('mouseleave', this.__delayHide)\n }\n },\n\n __render (h) {\n return h('transition', {\n props: { name: this.transition }\n }, [\n this.showing === true ? h('div', {\n staticClass: 'q-tooltip no-pointer-events',\n class: this.contentClass,\n style: this.contentStyle\n }, slot(this, 'default')) : null\n ])\n }\n }\n})\n","import Platform from '../plugins/Platform.js'\n\nexport function clearSelection () {\n if (window.getSelection !== void 0) {\n const selection = window.getSelection()\n if (selection.empty !== void 0) {\n selection.empty()\n }\n else if (selection.removeAllRanges !== void 0) {\n selection.removeAllRanges()\n Platform.is.mobile !== true && selection.addRange(document.createRange())\n }\n }\n else if (document.selection !== void 0) {\n document.selection.empty()\n }\n}\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","import { getScrollbarWidth } from './scroll.js'\n\nexport function validatePosition (pos) {\n let parts = pos.split(' ')\n if (parts.length !== 2) {\n return false\n }\n if (!['top', 'center', 'bottom'].includes(parts[0])) {\n console.error('Anchor/Self position must start with one of top/center/bottom')\n return false\n }\n if (!['left', 'middle', 'right'].includes(parts[1])) {\n console.error('Anchor/Self position must end with one of left/middle/right')\n return false\n }\n return true\n}\n\nexport function validateOffset (val) {\n if (!val) { return true }\n if (val.length !== 2) { return false }\n if (typeof val[0] !== 'number' || typeof val[1] !== 'number') {\n return false\n }\n return true\n}\n\nexport function parsePosition (pos) {\n let parts = pos.split(' ')\n return { vertical: parts[0], horizontal: parts[1] }\n}\n\nexport function validateCover (val) {\n if (val === true || val === false) { return true }\n return validatePosition(val)\n}\n\nexport function getAnchorProps (el, offset) {\n let { top, left, right, bottom, width, height } = el.getBoundingClientRect()\n\n if (offset !== void 0) {\n top -= offset[1]\n left -= offset[0]\n bottom += offset[1]\n right += offset[0]\n\n width += offset[0]\n height += offset[1]\n }\n\n return {\n top,\n left,\n right,\n bottom,\n width,\n height,\n middle: left + (right - left) / 2,\n center: top + (bottom - top) / 2\n }\n}\n\nexport function getTargetProps (el) {\n return {\n top: 0,\n center: el.offsetHeight / 2,\n bottom: el.offsetHeight,\n left: 0,\n middle: el.offsetWidth / 2,\n right: el.offsetWidth\n }\n}\n\nexport function setPosition ({ el, anchorEl, anchorOrigin, selfOrigin, offset, absoluteOffset, cover, fit }) {\n let anchorProps\n\n if (absoluteOffset === void 0) {\n anchorProps = getAnchorProps(anchorEl, cover === true ? [0, 0] : offset)\n }\n else {\n const\n { top: anchorTop, left: anchorLeft } = anchorEl.getBoundingClientRect(),\n top = anchorTop + absoluteOffset.top,\n left = anchorLeft + absoluteOffset.left\n\n anchorProps = { top, left, width: 1, height: 1, right: left + 1, center: top, middle: left, bottom: top + 1 }\n }\n\n if (fit === true || cover === true) {\n el.style.minWidth = anchorProps.width + 'px'\n if (cover === true) {\n el.style.minHeight = anchorProps.height + 'px'\n }\n }\n\n const\n targetProps = getTargetProps(el),\n props = {\n top: anchorProps[anchorOrigin.vertical] - targetProps[selfOrigin.vertical],\n left: anchorProps[anchorOrigin.horizontal] - targetProps[selfOrigin.horizontal]\n }\n\n applyBoundaries(props, anchorProps, targetProps, anchorOrigin, selfOrigin)\n\n el.style.top = Math.max(0, props.top) + 'px'\n el.style.left = Math.max(0, props.left) + 'px'\n\n if (props.maxHeight !== void 0) {\n el.style.maxHeight = props.maxHeight + 'px'\n }\n if (props.maxWidth !== void 0) {\n el.style.maxWidth = props.maxWidth + 'px'\n }\n}\n\nfunction applyBoundaries (props, anchorProps, targetProps, anchorOrigin, selfOrigin) {\n const margin = getScrollbarWidth()\n let { innerHeight, innerWidth } = window\n\n // don't go bellow scrollbars\n innerHeight -= margin\n innerWidth -= margin\n\n if (props.top < 0 || props.top + targetProps.bottom > innerHeight) {\n if (selfOrigin.vertical === 'center') {\n props.top = anchorProps[selfOrigin.vertical] > innerHeight / 2\n ? innerHeight - targetProps.bottom\n : 0\n props.maxHeight = Math.min(targetProps.bottom, innerHeight)\n }\n else if (anchorProps[selfOrigin.vertical] > innerHeight / 2) {\n const anchorY = Math.min(\n innerHeight,\n anchorOrigin.vertical === 'center'\n ? anchorProps.center\n : (anchorOrigin.vertical === selfOrigin.vertical ? anchorProps.bottom : anchorProps.top)\n )\n props.maxHeight = Math.min(targetProps.bottom, anchorY)\n props.top = Math.max(0, anchorY - props.maxHeight)\n }\n else {\n props.top = anchorOrigin.vertical === 'center'\n ? anchorProps.center\n : (anchorOrigin.vertical === selfOrigin.vertical ? anchorProps.top : anchorProps.bottom)\n props.maxHeight = Math.min(targetProps.bottom, innerHeight - props.top)\n }\n }\n\n if (props.left < 0 || props.left + targetProps.right > innerWidth) {\n props.maxWidth = Math.min(targetProps.right, innerWidth)\n if (selfOrigin.horizontal === 'middle') {\n props.left = anchorProps[selfOrigin.horizontal] > innerWidth / 2 ? innerWidth - targetProps.right : 0\n }\n else if (anchorProps[selfOrigin.horizontal] > innerWidth / 2) {\n const anchorX = Math.min(\n innerWidth,\n anchorOrigin.horizontal === 'middle'\n ? anchorProps.center\n : (anchorOrigin.horizontal === selfOrigin.horizontal ? anchorProps.right : anchorProps.left)\n )\n props.maxWidth = Math.min(targetProps.right, anchorX)\n props.left = Math.max(0, anchorX - props.maxWidth)\n }\n else {\n props.left = anchorOrigin.horizontal === 'middle'\n ? anchorProps.center\n : (anchorOrigin.horizontal === selfOrigin.horizontal ? anchorProps.left : anchorProps.right)\n props.maxWidth = Math.min(targetProps.right, innerWidth - props.left)\n }\n }\n}\n","import { clearSelection } from '../utils/selection.js'\n\nexport default {\n props: {\n target: {\n type: [Boolean, String],\n default: true\n },\n contextMenu: Boolean\n },\n\n watch: {\n contextMenu (val) {\n if (this.anchorEl !== void 0) {\n this.__unconfigureAnchorEl(!val)\n this.__configureAnchorEl(val)\n }\n },\n\n target () {\n if (this.anchorEl !== void 0) {\n this.__unconfigureAnchorEl()\n }\n\n this.__pickAnchorEl()\n }\n },\n\n methods: {\n __showCondition (evt) {\n // abort with no parent configured or on multi-touch\n return !(this.anchorEl === void 0 || (evt !== void 0 && evt.touches !== void 0 && evt.touches.length > 1))\n },\n\n __contextClick (evt) {\n this.hide(evt)\n this.show(evt)\n },\n\n __toggleKey (evt) {\n if (evt.keyCode === 13) {\n this.toggle(evt)\n }\n },\n\n __mobileTouch (evt) {\n this.__mobileCleanup()\n if (evt && evt.touches && evt.touches.length > 1) {\n return\n }\n this.hide(evt)\n this.anchorEl.classList.add('non-selectable')\n clearSelection()\n this.touchTimer = setTimeout(() => {\n this.__mobileCleanup()\n this.touchTimer = setTimeout(() => {\n this.show(evt)\n }, 10)\n }, 300)\n },\n\n __mobileCleanup () {\n this.anchorEl.classList.remove('non-selectable')\n clearTimeout(this.touchTimer)\n },\n\n __unconfigureAnchorEl (context = this.contextMenu) {\n if (context === true) {\n if (this.$q.platform.is.mobile) {\n this.anchorEl.removeEventListener('touchstart', this.__mobileTouch)\n ;['touchcancel', 'touchmove', 'touchend'].forEach(evt => {\n this.anchorEl.removeEventListener(evt, this.__mobileCleanup)\n })\n }\n else {\n this.anchorEl.removeEventListener('click', this.hide)\n this.anchorEl.removeEventListener('contextmenu', this.__contextClick)\n }\n }\n else {\n this.anchorEl.removeEventListener('click', this.toggle)\n this.anchorEl.removeEventListener('keyup', this.__toggleKey)\n }\n },\n\n __configureAnchorEl (context = this.contextMenu) {\n if (this.noParentEvent === true) { return }\n\n if (context === true) {\n if (this.$q.platform.is.mobile) {\n this.anchorEl.addEventListener('touchstart', this.__mobileTouch)\n ;['touchcancel', 'touchmove', 'touchend'].forEach(evt => {\n this.anchorEl.addEventListener(evt, this.__mobileCleanup)\n })\n }\n else {\n this.anchorEl.addEventListener('click', this.hide)\n this.anchorEl.addEventListener('contextmenu', this.__contextClick)\n }\n }\n else {\n this.anchorEl.addEventListener('click', this.toggle)\n this.anchorEl.addEventListener('keyup', this.__toggleKey)\n }\n },\n\n __setAnchorEl (el) {\n this.anchorEl = el\n while (this.anchorEl.classList.contains('q-anchor--skip')) {\n this.anchorEl = this.anchorEl.parentNode\n }\n this.__configureAnchorEl()\n },\n\n __pickAnchorEl () {\n if (this.target && typeof this.target === 'string') {\n const el = document.querySelector(this.target)\n if (el !== null) {\n this.anchorEl = el\n this.__configureAnchorEl()\n }\n else {\n this.anchorEl = void 0\n console.error(`Anchor: target \"${this.target}\" not found`, this)\n }\n }\n else if (this.target !== false) {\n this.__setAnchorEl(this.parentEl)\n }\n else {\n this.anchorEl = void 0\n }\n }\n },\n\n mounted () {\n this.parentEl = this.$el.parentNode\n\n this.$nextTick(() => {\n this.__pickAnchorEl()\n\n if (this.value === true) {\n if (this.anchorEl === void 0) {\n this.$emit('input', false)\n }\n else {\n this.show()\n }\n }\n })\n },\n\n beforeDestroy () {\n clearTimeout(this.touchTimer)\n this.__anchorCleanup !== void 0 && this.__anchorCleanup()\n\n if (this.anchorEl !== void 0) {\n this.__unconfigureAnchorEl()\n }\n }\n}\n"],"sourceRoot":""}