@vue-interface/tooltip 1.0.0-beta.2 → 1.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ import Tooltip from './src/Tooltip.vue';
2
+ import TooltipPlugin from './src/TooltipPlugin';
3
+ export { Tooltip, TooltipPlugin };
@@ -0,0 +1,54 @@
1
+ declare const _default: import("vue").DefineComponent<{
2
+ offset: ArrayConstructor;
3
+ popper: ObjectConstructor;
4
+ show: BooleanConstructor;
5
+ target: {
6
+ type: {
7
+ new (): HTMLElement;
8
+ prototype: HTMLElement;
9
+ };
10
+ required: true;
11
+ };
12
+ title: StringConstructor;
13
+ placement: StringConstructor;
14
+ top: BooleanConstructor;
15
+ bottom: BooleanConstructor;
16
+ left: BooleanConstructor;
17
+ right: BooleanConstructor;
18
+ }, unknown, {
19
+ currentShow: boolean;
20
+ popperInstance: null;
21
+ }, {
22
+ computedPlacement(): any;
23
+ tooltipClasses(): {
24
+ [x: string]: any;
25
+ show: any;
26
+ };
27
+ }, {
28
+ open(): void;
29
+ close(): void;
30
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
31
+ offset: ArrayConstructor;
32
+ popper: ObjectConstructor;
33
+ show: BooleanConstructor;
34
+ target: {
35
+ type: {
36
+ new (): HTMLElement;
37
+ prototype: HTMLElement;
38
+ };
39
+ required: true;
40
+ };
41
+ title: StringConstructor;
42
+ placement: StringConstructor;
43
+ top: BooleanConstructor;
44
+ bottom: BooleanConstructor;
45
+ left: BooleanConstructor;
46
+ right: BooleanConstructor;
47
+ }>>, {
48
+ show: boolean;
49
+ top: boolean;
50
+ bottom: boolean;
51
+ left: boolean;
52
+ right: boolean;
53
+ }>;
54
+ export default _default;
@@ -0,0 +1,54 @@
1
+ declare const _sfc_main: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").DefineComponent<{
2
+ offset: ArrayConstructor;
3
+ popper: ObjectConstructor;
4
+ show: BooleanConstructor;
5
+ target: {
6
+ type: {
7
+ new (): HTMLElement;
8
+ prototype: HTMLElement;
9
+ };
10
+ required: true;
11
+ };
12
+ title: StringConstructor;
13
+ placement: StringConstructor;
14
+ top: BooleanConstructor;
15
+ bottom: BooleanConstructor;
16
+ left: BooleanConstructor;
17
+ right: BooleanConstructor;
18
+ }, unknown, {
19
+ currentShow: boolean;
20
+ popperInstance: null;
21
+ }, {
22
+ computedPlacement(): any;
23
+ tooltipClasses(): {
24
+ [x: string]: any;
25
+ show: any;
26
+ };
27
+ }, {
28
+ open(): void;
29
+ close(): void;
30
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
31
+ offset: ArrayConstructor;
32
+ popper: ObjectConstructor;
33
+ show: BooleanConstructor;
34
+ target: {
35
+ type: {
36
+ new (): HTMLElement;
37
+ prototype: HTMLElement;
38
+ };
39
+ required: true;
40
+ };
41
+ title: StringConstructor;
42
+ placement: StringConstructor;
43
+ top: BooleanConstructor;
44
+ bottom: BooleanConstructor;
45
+ left: BooleanConstructor;
46
+ right: BooleanConstructor;
47
+ }>>, {
48
+ show: boolean;
49
+ top: boolean;
50
+ bottom: boolean;
51
+ left: boolean;
52
+ right: boolean;
53
+ }>, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
54
+ export default _sfc_main;
@@ -0,0 +1,11 @@
1
+ import type { App } from 'vue';
2
+ type TooltipPluginOptions = {
3
+ delay?: number;
4
+ prefix: string;
5
+ triggers: {
6
+ open: string[];
7
+ close: string[];
8
+ };
9
+ };
10
+ export default function (app: App, opts?: Partial<TooltipPluginOptions>): void;
11
+ export {};
@@ -0,0 +1,185 @@
1
+ import { defineComponent as $, openBlock as S, createElementBlock as y, normalizeClass as N, createElementVNode as _, renderSlot as O, createTextVNode as L, toDisplayString as j, h as B, render as C } from "vue";
2
+ import { createPopper as P } from "@popperjs/core";
3
+ const I = $({
4
+ props: {
5
+ offset: Array,
6
+ popper: Object,
7
+ show: Boolean,
8
+ target: {
9
+ type: HTMLElement,
10
+ required: !0
11
+ },
12
+ title: String,
13
+ placement: String,
14
+ top: Boolean,
15
+ bottom: Boolean,
16
+ left: Boolean,
17
+ right: Boolean
18
+ },
19
+ data() {
20
+ return {
21
+ currentShow: !1,
22
+ popperInstance: null
23
+ };
24
+ },
25
+ computed: {
26
+ computedPlacement() {
27
+ return this.placement ? this.placement : this.bottom ? "bottom" : this.left ? "left" : this.right ? "right" : "top";
28
+ },
29
+ tooltipClasses() {
30
+ return {
31
+ show: this.currentShow,
32
+ [`bs-tooltip-${this.computedPlacement}`]: !0
33
+ };
34
+ }
35
+ },
36
+ mounted() {
37
+ this.popperInstance = P(this.target, this.$el, Object.assign({
38
+ placement: this.computedPlacement,
39
+ modifiers: [
40
+ {
41
+ name: "offset",
42
+ options: {
43
+ offset: [0, 6]
44
+ }
45
+ },
46
+ {
47
+ name: "arrow",
48
+ options: {
49
+ element: this.$refs.arrow
50
+ }
51
+ }
52
+ ]
53
+ }, this.popper)), this.$nextTick(() => {
54
+ this.currentShow = this.show;
55
+ });
56
+ },
57
+ beforeUnmount() {
58
+ this.popperInstance && this.popperInstance.destroy();
59
+ },
60
+ methods: {
61
+ open() {
62
+ this.currentShow = !0;
63
+ },
64
+ close() {
65
+ this.currentShow = !1;
66
+ }
67
+ }
68
+ }), R = $({
69
+ mixins: [
70
+ I
71
+ ]
72
+ });
73
+ const k = (s, m) => {
74
+ const p = s.__vccOpts || s;
75
+ for (const [a, n] of m)
76
+ p[a] = n;
77
+ return p;
78
+ }, F = {
79
+ ref: "arrow",
80
+ class: "tooltip-arrow"
81
+ }, M = {
82
+ ref: "inner",
83
+ class: "tooltip-inner"
84
+ };
85
+ function H(s, m, p, a, n, f) {
86
+ return S(), y("div", {
87
+ class: N(["tooltip", s.tooltipClasses]),
88
+ role: "tooltip"
89
+ }, [
90
+ _("div", F, null, 512),
91
+ _("div", M, [
92
+ O(s.$slots, "default", {}, () => [
93
+ L(j(s.title), 1)
94
+ ])
95
+ ], 512)
96
+ ], 2);
97
+ }
98
+ const U = /* @__PURE__ */ k(R, [["render", H]]);
99
+ function W(s, m = {}) {
100
+ const p = /* @__PURE__ */ new Map(), a = Object.assign({
101
+ delay: void 0,
102
+ prefix: "data-tooltip",
103
+ triggers: {
104
+ open: ["mouseover:350"],
105
+ close: ["mouseout:100"]
106
+ }
107
+ }, m), n = a.prefix.replace(/[-]+$/, ""), f = new RegExp(`^${n}-`);
108
+ function w(e) {
109
+ return Array.from(e.attributes).map((t) => [t.name, t.value]).filter(([t]) => t === "title" || t.match(f)).map(([t, o]) => [t.replace(new RegExp(f), ""), o]).reduce((t, o) => Object.assign(t, { [o[0]]: o[1] }), {});
110
+ }
111
+ function T(e, t = {}, o) {
112
+ const i = document.createElement("template"), r = B(U, Object.assign({
113
+ target: e,
114
+ show: !0
115
+ }, t));
116
+ C(r, i);
117
+ const [l] = [...i.children];
118
+ return document.body.append(l), () => {
119
+ var u;
120
+ p.delete(o), (u = r.component) == null || u.ctx.close(), setTimeout(() => l.remove(), 150);
121
+ };
122
+ }
123
+ function h(e, t = {}) {
124
+ var b, v;
125
+ const o = Object.assign({
126
+ title: e.getAttribute(n)
127
+ }, t, w(e));
128
+ if (!o.title || e.hasAttribute(`${n}-id`))
129
+ return;
130
+ const i = Math.random().toString(36).slice(2, 7);
131
+ let r, l;
132
+ e.setAttribute(`${n}-id`, i), e.removeAttribute("title");
133
+ function u(c = 0) {
134
+ clearTimeout(l), r || (l = setTimeout(() => {
135
+ document.contains(e) && (r = T(e, o, i), p.set(i, r));
136
+ }, c));
137
+ }
138
+ function d(c = 0) {
139
+ clearTimeout(l), r && (l = setTimeout(() => {
140
+ r && r(), r = null;
141
+ }, c));
142
+ }
143
+ function g(c, E) {
144
+ const [x, A] = c.split(":");
145
+ e.addEventListener(x, () => E(Number(A || 0)));
146
+ }
147
+ (((b = e.getAttribute(`${n}-trigger-open`)) == null ? void 0 : b.split(",")) || a.triggers.open).map((c) => g(c, u)), (((v = e.getAttribute(`${n}-trigger-close`)) == null ? void 0 : v.split(",")) || a.triggers.close).map((c) => g(c, d));
148
+ }
149
+ s.mixin({
150
+ mounted() {
151
+ let e = this.$el;
152
+ this.$el instanceof Text && (e = this.$el.parentNode), e instanceof HTMLElement && h(e);
153
+ const t = document.createTreeWalker(
154
+ e,
155
+ NodeFilter.SHOW_ALL,
156
+ (i) => i instanceof Element ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT
157
+ );
158
+ for (; t.nextNode(); )
159
+ t.currentNode instanceof Element && h(t.currentNode);
160
+ new MutationObserver((i) => {
161
+ for (const { removedNodes: r } of i)
162
+ for (const l of r)
163
+ for (const u of l.querySelectorAll(`[${n}-id]`)) {
164
+ const d = p.get(
165
+ u.getAttribute(`${n}-id`)
166
+ );
167
+ d && d();
168
+ }
169
+ }).observe(e, { childList: !0 });
170
+ }
171
+ }), s.directive("tooltip", {
172
+ created(e, t) {
173
+ h(e, Object.assign({}, t.modifiers, t.value));
174
+ },
175
+ beforeUnmount(e) {
176
+ const t = e.getAttribute(`${n}-id`), o = p.get(t);
177
+ console.log("beforeUnmount"), o && o();
178
+ }
179
+ });
180
+ }
181
+ export {
182
+ U as Tooltip,
183
+ W as TooltipPlugin
184
+ };
185
+ //# sourceMappingURL=tooltip.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.mjs","sources":["../src/Popper.ts","../src/Tooltip.vue","../src/TooltipPlugin.ts"],"sourcesContent":["import { createPopper } from '@popperjs/core';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n\n props: {\n offset: Array,\n\n popper: Object,\n\n show: Boolean,\n\n target: {\n type: HTMLElement,\n required: true\n },\n\n title: String,\n\n placement: String,\n\n top: Boolean,\n\n bottom: Boolean,\n\n left: Boolean,\n\n right: Boolean,\n },\n \n data() {\n return {\n currentShow: false,\n popperInstance: null\n };\n },\n\n computed: {\n computedPlacement() {\n if(this.placement) {\n return this.placement;\n }\n\n if(this.bottom) {\n return 'bottom';\n }\n\n if(this.left) {\n return 'left';\n }\n\n if(this.right) {\n return 'right';\n }\n\n return 'top';\n },\n tooltipClasses() {\n return {\n show: this.currentShow,\n [`bs-tooltip-${this.computedPlacement}`]: true\n };\n }\n },\n\n mounted() {\n this.popperInstance = createPopper(this.target, this.$el, Object.assign({\n placement: this.computedPlacement,\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 6]\n },\n },\n {\n name: 'arrow',\n options: {\n element: this.$refs.arrow,\n },\n },\n ],\n }, this.popper));\n\n this.$nextTick(() => {\n this.currentShow = this.show;\n });\n },\n\n beforeUnmount() {\n this.popperInstance && this.popperInstance.destroy();\n },\n\n methods: {\n\n open() {\n this.currentShow = true;\n },\n\n close() {\n this.currentShow = false;\n }\n\n }\n\n});","<script lang=\"ts\">\n// @ts-ignore\nimport { defineComponent } from 'vue';\nimport Popper from './Popper';\n\nexport default defineComponent({\n mixins: [\n Popper\n ]\n});\n</script>\n\n<template>\n <div\n class=\"tooltip\"\n :class=\"tooltipClasses\"\n role=\"tooltip\">\n <div\n ref=\"arrow\"\n class=\"tooltip-arrow\" />\n <div\n ref=\"inner\"\n class=\"tooltip-inner\">\n <slot>{{ title }}</slot>\n </div>\n </div>\n</template>\n\n<style>\n.tooltip:not(.show) {\n z-index: -1;\n}\n</style>","import type { App } from 'vue';\nimport { h, render } from 'vue';\nimport Tooltip from './Tooltip.vue';\n\ntype TooltipPluginOptions = {\n delay?: number,\n prefix: string,\n triggers: {\n open: string[],\n close: string[],\n }\n}\n\nexport default function (app: App, opts: Partial<TooltipPluginOptions> = {}) {\n const tooltips: Map<string,Function> = new Map;\n\n const options: TooltipPluginOptions = Object.assign({\n delay: undefined,\n prefix: 'data-tooltip',\n triggers: {\n open: ['mouseover:350'],\n close: ['mouseout:100'],\n }\n }, opts);\n\n const prefix = options.prefix.replace(/[-]+$/, '');\n const prefixRegExp = new RegExp(`^${prefix}\\-`);\n\n function getAttributes(el: Element): Record<string,any> {\n return Array.from(el.attributes)\n .map(a => [a.name, a.value])\n .filter(([key]) => key === 'title' || key.match(prefixRegExp))\n .map(([key, value]) => [key.replace(new RegExp(prefixRegExp), ''), value])\n .reduce((carry, attr) => Object.assign(carry, { [attr[0]]: attr[1] }), {});\n }\n\n function createTooltip(target: Element, props: Record<string,any> = {}, hash: string): Function {\n const container = document.createElement('template');\n \n const vnode = h(Tooltip, Object.assign({\n target,\n show: true\n }, props));\n \n render(vnode, container);\n \n const [el] = [...container.children];\n \n document.body.append(el);\n \n return () => {\n tooltips.delete(hash);\n\n // @ts-ignore\n vnode.component?.ctx.close();\n \n // @todo: Make the animation rate (150) dynamic. Should get value \n // from the CSS transition duration.\n setTimeout(() => el.remove(), 150);\n };\n }\n\n function init(target: Element, props = {}) {\n const properties: Record<string,any> = Object.assign({\n title: target.getAttribute(prefix)\n }, props, getAttributes(target));\n\n // If the properties don't have a title, ignore this target.\n if(!properties.title || target.hasAttribute(`${prefix}-id`)) {\n return;\n }\n\n // Create a unique \"hash\" to show the node has been initialized.\n // This prevents double initializing on the same element.\n const hash = Math.random().toString(36).slice(2, 7);\n \n // Create the instance vars.\n let tooltip: Function|null, timer: number;\n\n //target.setAttribute(prefix, properties.title);\n target.setAttribute(`${prefix}-id`, hash);\n target.removeAttribute('title');\n\n function open(delay = 0) {\n clearTimeout(timer);\n\n if(!tooltip) {\n timer = setTimeout(() => {\n // Do a check before creating the tooltip to ensure the dom\n // element still exists. Its possible for the element to\n // be removed after the timeout delay runs.\n if(document.contains(target)) {\n tooltip = createTooltip(target, properties, hash);\n tooltips.set(hash, tooltip);\n }\n }, delay);\n }\n }\n\n function close(delay = 0) {\n clearTimeout(timer);\n\n if(tooltip) {\n timer = setTimeout(() => {\n tooltip && tooltip();\n tooltip = null;\n }, delay);\n } \n }\n\n function addEventListener(trigger: string, fn: Function) {\n const [ event, delayString ] = trigger.split(':');\n\n target.addEventListener(event, () => fn(Number(delayString || 0)));\n }\n\n (target.getAttribute(`${prefix}-trigger-open`)?.split(',') || options.triggers.open).map(trigger => addEventListener(trigger, open));\n (target.getAttribute(`${prefix}-trigger-close`)?.split(',') || options.triggers.close).map(trigger => addEventListener(trigger, close));\n }\n \n app.mixin({\n mounted() {\n let el = this.$el;\n\n if(this.$el instanceof Text) {\n el = this.$el.parentNode;\n }\n\n if(el instanceof HTMLElement) {\n init(el);\n }\n\n // Create the tree walker.\n const walker = document.createTreeWalker(\n el,\n NodeFilter.SHOW_ALL,\n (node: Node) => {\n if(!(node instanceof Element)) {\n return NodeFilter.FILTER_REJECT;\n }\n \n return NodeFilter.FILTER_ACCEPT;\n }\n );\n\n // Step through and alert all child nodes\n while(walker.nextNode()) {\n if(walker.currentNode instanceof Element) {\n init(<Element> walker.currentNode);\n }\n }\n\n const observer = new MutationObserver((changes) => {\n for(const { removedNodes } of changes) {\n for(const node of removedNodes) {\n for(const el of (node as Element).querySelectorAll(`[${prefix}-id]`)) {\n const tooltip = tooltips.get(\n el.getAttribute(`${prefix}-id`) as string\n );\n\n tooltip && tooltip();\n }\n } \n }\n });\n\n observer.observe(el, { childList: true });\n }\n });\n\n app.directive('tooltip', {\n created(target, binding) {\n init(target, Object.assign({}, binding.modifiers, binding.value));\n },\n beforeUnmount(target) {\n const id = target.getAttribute(`${prefix}-id`);\n const tooltip = tooltips.get(id);\n\n console.log('beforeUnmount');\n\n tooltip && tooltip();\n }\n });\n}"],"names":["Popper","defineComponent","createPopper","_sfc_main","_hoisted_1","_hoisted_2","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_renderSlot","TooltipPlugin","app","opts","tooltips","options","prefix","prefixRegExp","getAttributes","el","a","key","value","carry","attr","createTooltip","target","props","hash","container","vnode","h","Tooltip","render","_a","init","properties","tooltip","timer","open","delay","close","addEventListener","trigger","fn","event","delayString","_b","walker","node","changes","removedNodes","binding","id"],"mappings":"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"}
@@ -1,5 +1,2 @@
1
- (function(H,j){typeof exports=="object"&&typeof module<"u"?j(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],j):(H=typeof globalThis<"u"?globalThis:H||self,j(H.Tooltip={},H.Vue))})(this,function(H,j){"use strict";var $="top",k="bottom",L="right",N="left",ve="auto",ae=[$,k,L,N],ee="start",ie="end",dt="clippingParents",Me="viewport",se="popper",vt="reference",Ve=ae.reduce(function(t,e){return t.concat([e+"-"+ee,e+"-"+ie])},[]),Ie=[].concat(ae,[ve]).reduce(function(t,e){return t.concat([e,e+"-"+ee,e+"-"+ie])},[]),ht="beforeRead",mt="read",gt="afterRead",yt="beforeMain",bt="main",wt="afterMain",xt="beforeWrite",Ot="write",Et="afterWrite",Ae=[ht,mt,gt,yt,bt,wt,xt,Ot,Et];function q(t){return t?(t.nodeName||"").toLowerCase():null}function M(t){if(t==null)return window;if(t.toString()!=="[object Window]"){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Y(t){var e=M(t).Element;return t instanceof e||t instanceof Element}function B(t){var e=M(t).HTMLElement;return t instanceof e||t instanceof HTMLElement}function Pe(t){if(typeof ShadowRoot>"u")return!1;var e=M(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function At(t){var e=t.state;Object.keys(e.elements).forEach(function(r){var n=e.styles[r]||{},o=e.attributes[r]||{},s=e.elements[r];!B(s)||!q(s)||(Object.assign(s.style,n),Object.keys(o).forEach(function(f){var i=o[f];i===!1?s.removeAttribute(f):s.setAttribute(f,i===!0?"":i)}))})}function Pt(t){var e=t.state,r={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,r.popper),e.styles=r,e.elements.arrow&&Object.assign(e.elements.arrow.style,r.arrow),function(){Object.keys(e.elements).forEach(function(n){var o=e.elements[n],s=e.attributes[n]||{},f=Object.keys(e.styles.hasOwnProperty(n)?e.styles[n]:r[n]),i=f.reduce(function(a,c){return a[c]="",a},{});!B(o)||!q(o)||(Object.assign(o.style,i),Object.keys(s).forEach(function(a){o.removeAttribute(a)}))})}}const St={name:"applyStyles",enabled:!0,phase:"write",fn:At,effect:Pt,requires:["computeStyles"]};function V(t){return t.split("-")[0]}var z=Math.max,he=Math.min,te=Math.round;function Se(){var t=navigator.userAgentData;return t!=null&&t.brands?t.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function We(){return!/^((?!chrome|android).)*safari/i.test(Se())}function re(t,e,r){e===void 0&&(e=!1),r===void 0&&(r=!1);var n=t.getBoundingClientRect(),o=1,s=1;e&&B(t)&&(o=t.offsetWidth>0&&te(n.width)/t.offsetWidth||1,s=t.offsetHeight>0&&te(n.height)/t.offsetHeight||1);var f=Y(t)?M(t):window,i=f.visualViewport,a=!We()&&r,c=(n.left+(a&&i?i.offsetLeft:0))/o,p=(n.top+(a&&i?i.offsetTop:0))/s,u=n.width/o,v=n.height/s;return{width:u,height:v,top:p,right:c+u,bottom:p+v,left:c,x:c,y:p}}function Te(t){var e=re(t),r=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-r)<=1&&(r=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:r,height:n}}function qe(t,e){var r=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(r&&Pe(r)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function I(t){return M(t).getComputedStyle(t)}function Tt(t){return["table","td","th"].indexOf(q(t))>=0}function _(t){return((Y(t)?t.ownerDocument:t.document)||window.document).documentElement}function me(t){return q(t)==="html"?t:t.assignedSlot||t.parentNode||(Pe(t)?t.host:null)||_(t)}function He(t){return!B(t)||I(t).position==="fixed"?null:t.offsetParent}function Dt(t){var e=/firefox/i.test(Se()),r=/Trident/i.test(Se());if(r&&B(t)){var n=I(t);if(n.position==="fixed")return null}var o=me(t);for(Pe(o)&&(o=o.host);B(o)&&["html","body"].indexOf(q(o))<0;){var s=I(o);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||e&&s.willChange==="filter"||e&&s.filter&&s.filter!=="none")return o;o=o.parentNode}return null}function pe(t){for(var e=M(t),r=He(t);r&&Tt(r)&&I(r).position==="static";)r=He(r);return r&&(q(r)==="html"||q(r)==="body"&&I(r).position==="static")?e:r||Dt(t)||e}function De(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function fe(t,e,r){return z(t,he(e,r))}function Rt(t,e,r){var n=fe(t,e,r);return n>r?r:n}function _e(){return{top:0,right:0,bottom:0,left:0}}function Fe(t){return Object.assign({},_e(),t)}function Xe(t,e){return e.reduce(function(r,n){return r[n]=t,r},{})}var jt=function(e,r){return e=typeof e=="function"?e(Object.assign({},r.rects,{placement:r.placement})):e,Fe(typeof e!="number"?e:Xe(e,ae))};function $t(t){var e,r=t.state,n=t.name,o=t.options,s=r.elements.arrow,f=r.modifiersData.popperOffsets,i=V(r.placement),a=De(i),c=[N,L].indexOf(i)>=0,p=c?"height":"width";if(!(!s||!f)){var u=jt(o.padding,r),v=Te(s),d=a==="y"?$:N,x=a==="y"?k:L,h=r.rects.reference[p]+r.rects.reference[a]-f[a]-r.rects.popper[p],l=f[a]-r.rects.reference[a],b=pe(s),A=b?a==="y"?b.clientHeight||0:b.clientWidth||0:0,O=h/2-l/2,m=u[d],y=A-v[p]-u[x],g=A/2-v[p]/2+O,E=fe(m,g,y),P=a;r.modifiersData[n]=(e={},e[P]=E,e.centerOffset=E-g,e)}}function Nt(t){var e=t.state,r=t.options,n=r.element,o=n===void 0?"[data-popper-arrow]":n;if(o!=null&&!(typeof o=="string"&&(o=e.elements.popper.querySelector(o),!o))){if(process.env.NODE_ENV!=="production"&&(B(o)||console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).',"To use an SVG arrow, wrap it in an HTMLElement that will be used as","the arrow."].join(" "))),!qe(e.elements.popper,o)){process.env.NODE_ENV!=="production"&&console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper',"element."].join(" "));return}e.elements.arrow=o}}const Bt={name:"arrow",enabled:!0,phase:"main",fn:$t,effect:Nt,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ne(t){return t.split("-")[1]}var Ct={top:"auto",right:"auto",bottom:"auto",left:"auto"};function kt(t){var e=t.x,r=t.y,n=window,o=n.devicePixelRatio||1;return{x:te(e*o)/o||0,y:te(r*o)/o||0}}function Ye(t){var e,r=t.popper,n=t.popperRect,o=t.placement,s=t.variation,f=t.offsets,i=t.position,a=t.gpuAcceleration,c=t.adaptive,p=t.roundOffsets,u=t.isFixed,v=f.x,d=v===void 0?0:v,x=f.y,h=x===void 0?0:x,l=typeof p=="function"?p({x:d,y:h}):{x:d,y:h};d=l.x,h=l.y;var b=f.hasOwnProperty("x"),A=f.hasOwnProperty("y"),O=N,m=$,y=window;if(c){var g=pe(r),E="clientHeight",P="clientWidth";if(g===M(r)&&(g=_(r),I(g).position!=="static"&&i==="absolute"&&(E="scrollHeight",P="scrollWidth")),g=g,o===$||(o===N||o===L)&&s===ie){m=k;var S=u&&g===y&&y.visualViewport?y.visualViewport.height:g[E];h-=S-n.height,h*=a?1:-1}if(o===N||(o===$||o===k)&&s===ie){O=L;var T=u&&g===y&&y.visualViewport?y.visualViewport.width:g[P];d-=T-n.width,d*=a?1:-1}}var w=Object.assign({position:i},c&&Ct),D=p===!0?kt({x:d,y:h}):{x:d,y:h};if(d=D.x,h=D.y,a){var R;return Object.assign({},w,(R={},R[m]=A?"0":"",R[O]=b?"0":"",R.transform=(y.devicePixelRatio||1)<=1?"translate("+d+"px, "+h+"px)":"translate3d("+d+"px, "+h+"px, 0)",R))}return Object.assign({},w,(e={},e[m]=A?h+"px":"",e[O]=b?d+"px":"",e.transform="",e))}function Lt(t){var e=t.state,r=t.options,n=r.gpuAcceleration,o=n===void 0?!0:n,s=r.adaptive,f=s===void 0?!0:s,i=r.roundOffsets,a=i===void 0?!0:i;if(process.env.NODE_ENV!=="production"){var c=I(e.elements.popper).transitionProperty||"";f&&["transform","top","right","bottom","left"].some(function(u){return c.indexOf(u)>=0})&&console.warn(["Popper: Detected CSS transitions on at least one of the following",'CSS properties: "transform", "top", "right", "bottom", "left".',`
2
-
3
- `,'Disable the "computeStyles" modifier\'s `adaptive` option to allow',"for smooth transitions, or remove these properties from the CSS","transition declaration on the popper element if only transitioning","opacity or background-color for example.",`
4
-
5
- `,"We recommend using the popper element as a wrapper around an inner","element that can have any CSS property transitioned for animations."].join(" "))}var p={placement:V(e.placement),variation:ne(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,Ye(Object.assign({},p,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:f,roundOffsets:a})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,Ye(Object.assign({},p,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:a})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}const Mt={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Lt,data:{}};var ge={passive:!0};function Vt(t){var e=t.state,r=t.instance,n=t.options,o=n.scroll,s=o===void 0?!0:o,f=n.resize,i=f===void 0?!0:f,a=M(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return s&&c.forEach(function(p){p.addEventListener("scroll",r.update,ge)}),i&&a.addEventListener("resize",r.update,ge),function(){s&&c.forEach(function(p){p.removeEventListener("scroll",r.update,ge)}),i&&a.removeEventListener("resize",r.update,ge)}}const It={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Vt,data:{}};var Wt={left:"right",right:"left",bottom:"top",top:"bottom"};function ye(t){return t.replace(/left|right|bottom|top/g,function(e){return Wt[e]})}var qt={start:"end",end:"start"};function ze(t){return t.replace(/start|end/g,function(e){return qt[e]})}function Re(t){var e=M(t),r=e.pageXOffset,n=e.pageYOffset;return{scrollLeft:r,scrollTop:n}}function je(t){return re(_(t)).left+Re(t).scrollLeft}function Ht(t,e){var r=M(t),n=_(t),o=r.visualViewport,s=n.clientWidth,f=n.clientHeight,i=0,a=0;if(o){s=o.width,f=o.height;var c=We();(c||!c&&e==="fixed")&&(i=o.offsetLeft,a=o.offsetTop)}return{width:s,height:f,x:i+je(t),y:a}}function _t(t){var e,r=_(t),n=Re(t),o=(e=t.ownerDocument)==null?void 0:e.body,s=z(r.scrollWidth,r.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),f=z(r.scrollHeight,r.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),i=-n.scrollLeft+je(t),a=-n.scrollTop;return I(o||r).direction==="rtl"&&(i+=z(r.clientWidth,o?o.clientWidth:0)-s),{width:s,height:f,x:i,y:a}}function $e(t){var e=I(t),r=e.overflow,n=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(r+o+n)}function Ue(t){return["html","body","#document"].indexOf(q(t))>=0?t.ownerDocument.body:B(t)&&$e(t)?t:Ue(me(t))}function ce(t,e){var r;e===void 0&&(e=[]);var n=Ue(t),o=n===((r=t.ownerDocument)==null?void 0:r.body),s=M(n),f=o?[s].concat(s.visualViewport||[],$e(n)?n:[]):n,i=e.concat(f);return o?i:i.concat(ce(me(f)))}function Ne(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Ft(t,e){var r=re(t,!1,e==="fixed");return r.top=r.top+t.clientTop,r.left=r.left+t.clientLeft,r.bottom=r.top+t.clientHeight,r.right=r.left+t.clientWidth,r.width=t.clientWidth,r.height=t.clientHeight,r.x=r.left,r.y=r.top,r}function Ge(t,e,r){return e===Me?Ne(Ht(t,r)):Y(e)?Ft(e,r):Ne(_t(_(t)))}function Xt(t){var e=ce(me(t)),r=["absolute","fixed"].indexOf(I(t).position)>=0,n=r&&B(t)?pe(t):t;return Y(n)?e.filter(function(o){return Y(o)&&qe(o,n)&&q(o)!=="body"}):[]}function Yt(t,e,r,n){var o=e==="clippingParents"?Xt(t):[].concat(e),s=[].concat(o,[r]),f=s[0],i=s.reduce(function(a,c){var p=Ge(t,c,n);return a.top=z(p.top,a.top),a.right=he(p.right,a.right),a.bottom=he(p.bottom,a.bottom),a.left=z(p.left,a.left),a},Ge(t,f,n));return i.width=i.right-i.left,i.height=i.bottom-i.top,i.x=i.left,i.y=i.top,i}function Je(t){var e=t.reference,r=t.element,n=t.placement,o=n?V(n):null,s=n?ne(n):null,f=e.x+e.width/2-r.width/2,i=e.y+e.height/2-r.height/2,a;switch(o){case $:a={x:f,y:e.y-r.height};break;case k:a={x:f,y:e.y+e.height};break;case L:a={x:e.x+e.width,y:i};break;case N:a={x:e.x-r.width,y:i};break;default:a={x:e.x,y:e.y}}var c=o?De(o):null;if(c!=null){var p=c==="y"?"height":"width";switch(s){case ee:a[c]=a[c]-(e[p]/2-r[p]/2);break;case ie:a[c]=a[c]+(e[p]/2-r[p]/2);break}}return a}function le(t,e){e===void 0&&(e={});var r=e,n=r.placement,o=n===void 0?t.placement:n,s=r.strategy,f=s===void 0?t.strategy:s,i=r.boundary,a=i===void 0?dt:i,c=r.rootBoundary,p=c===void 0?Me:c,u=r.elementContext,v=u===void 0?se:u,d=r.altBoundary,x=d===void 0?!1:d,h=r.padding,l=h===void 0?0:h,b=Fe(typeof l!="number"?l:Xe(l,ae)),A=v===se?vt:se,O=t.rects.popper,m=t.elements[x?A:v],y=Yt(Y(m)?m:m.contextElement||_(t.elements.popper),a,p,f),g=re(t.elements.reference),E=Je({reference:g,element:O,strategy:"absolute",placement:o}),P=Ne(Object.assign({},O,E)),S=v===se?P:g,T={top:y.top-S.top+b.top,bottom:S.bottom-y.bottom+b.bottom,left:y.left-S.left+b.left,right:S.right-y.right+b.right},w=t.modifiersData.offset;if(v===se&&w){var D=w[o];Object.keys(T).forEach(function(R){var G=[L,k].indexOf(R)>=0?1:-1,J=[$,k].indexOf(R)>=0?"y":"x";T[R]+=D[J]*G})}return T}function zt(t,e){e===void 0&&(e={});var r=e,n=r.placement,o=r.boundary,s=r.rootBoundary,f=r.padding,i=r.flipVariations,a=r.allowedAutoPlacements,c=a===void 0?Ie:a,p=ne(n),u=p?i?Ve:Ve.filter(function(x){return ne(x)===p}):ae,v=u.filter(function(x){return c.indexOf(x)>=0});v.length===0&&(v=u,process.env.NODE_ENV!=="production"&&console.error(["Popper: The `allowedAutoPlacements` option did not allow any","placements. Ensure the `placement` option matches the variation","of the allowed placements.",'For example, "auto" cannot be used to allow "bottom-start".','Use "auto-start" instead.'].join(" ")));var d=v.reduce(function(x,h){return x[h]=le(t,{placement:h,boundary:o,rootBoundary:s,padding:f})[V(h)],x},{});return Object.keys(d).sort(function(x,h){return d[x]-d[h]})}function Ut(t){if(V(t)===ve)return[];var e=ye(t);return[ze(t),e,ze(e)]}function Gt(t){var e=t.state,r=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var o=r.mainAxis,s=o===void 0?!0:o,f=r.altAxis,i=f===void 0?!0:f,a=r.fallbackPlacements,c=r.padding,p=r.boundary,u=r.rootBoundary,v=r.altBoundary,d=r.flipVariations,x=d===void 0?!0:d,h=r.allowedAutoPlacements,l=e.options.placement,b=V(l),A=b===l,O=a||(A||!x?[ye(l)]:Ut(l)),m=[l].concat(O).reduce(function(oe,X){return oe.concat(V(X)===ve?zt(e,{placement:X,boundary:p,rootBoundary:u,padding:c,flipVariations:x,allowedAutoPlacements:h}):X)},[]),y=e.rects.reference,g=e.rects.popper,E=new Map,P=!0,S=m[0],T=0;T<m.length;T++){var w=m[T],D=V(w),R=ne(w)===ee,G=[$,k].indexOf(D)>=0,J=G?"width":"height",C=le(e,{placement:w,boundary:p,rootBoundary:u,altBoundary:v,padding:c}),W=G?R?L:N:R?k:$;y[J]>g[J]&&(W=ye(W));var be=ye(W),K=[];if(s&&K.push(C[D]<=0),i&&K.push(C[W]<=0,C[be]<=0),K.every(function(oe){return oe})){S=w,P=!1;break}E.set(w,K)}if(P)for(var we=x?3:1,Be=function(X){var de=m.find(function(Oe){var Q=E.get(Oe);if(Q)return Q.slice(0,X).every(function(Ce){return Ce})});if(de)return S=de,"break"},ue=we;ue>0;ue--){var xe=Be(ue);if(xe==="break")break}e.placement!==S&&(e.modifiersData[n]._skip=!0,e.placement=S,e.reset=!0)}}const Jt={name:"flip",enabled:!0,phase:"main",fn:Gt,requiresIfExists:["offset"],data:{_skip:!1}};function Ke(t,e,r){return r===void 0&&(r={x:0,y:0}),{top:t.top-e.height-r.y,right:t.right-e.width+r.x,bottom:t.bottom-e.height+r.y,left:t.left-e.width-r.x}}function Qe(t){return[$,L,k,N].some(function(e){return t[e]>=0})}function Kt(t){var e=t.state,r=t.name,n=e.rects.reference,o=e.rects.popper,s=e.modifiersData.preventOverflow,f=le(e,{elementContext:"reference"}),i=le(e,{altBoundary:!0}),a=Ke(f,n),c=Ke(i,o,s),p=Qe(a),u=Qe(c);e.modifiersData[r]={referenceClippingOffsets:a,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}const Qt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Kt};function Zt(t,e,r){var n=V(t),o=[N,$].indexOf(n)>=0?-1:1,s=typeof r=="function"?r(Object.assign({},e,{placement:t})):r,f=s[0],i=s[1];return f=f||0,i=(i||0)*o,[N,L].indexOf(n)>=0?{x:i,y:f}:{x:f,y:i}}function er(t){var e=t.state,r=t.options,n=t.name,o=r.offset,s=o===void 0?[0,0]:o,f=Ie.reduce(function(p,u){return p[u]=Zt(u,e.rects,s),p},{}),i=f[e.placement],a=i.x,c=i.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=a,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=f}const tr={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:er};function rr(t){var e=t.state,r=t.name;e.modifiersData[r]=Je({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})}const nr={name:"popperOffsets",enabled:!0,phase:"read",fn:rr,data:{}};function or(t){return t==="x"?"y":"x"}function ar(t){var e=t.state,r=t.options,n=t.name,o=r.mainAxis,s=o===void 0?!0:o,f=r.altAxis,i=f===void 0?!1:f,a=r.boundary,c=r.rootBoundary,p=r.altBoundary,u=r.padding,v=r.tether,d=v===void 0?!0:v,x=r.tetherOffset,h=x===void 0?0:x,l=le(e,{boundary:a,rootBoundary:c,padding:u,altBoundary:p}),b=V(e.placement),A=ne(e.placement),O=!A,m=De(b),y=or(m),g=e.modifiersData.popperOffsets,E=e.rects.reference,P=e.rects.popper,S=typeof h=="function"?h(Object.assign({},e.rects,{placement:e.placement})):h,T=typeof S=="number"?{mainAxis:S,altAxis:S}:Object.assign({mainAxis:0,altAxis:0},S),w=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,D={x:0,y:0};if(!!g){if(s){var R,G=m==="y"?$:N,J=m==="y"?k:L,C=m==="y"?"height":"width",W=g[m],be=W+l[G],K=W-l[J],we=d?-P[C]/2:0,Be=A===ee?E[C]:P[C],ue=A===ee?-P[C]:-E[C],xe=e.elements.arrow,oe=d&&xe?Te(xe):{width:0,height:0},X=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:_e(),de=X[G],Oe=X[J],Q=fe(0,E[C],oe[C]),Ce=O?E[C]/2-we-Q-de-T.mainAxis:Be-Q-de-T.mainAxis,Dr=O?-E[C]/2+we+Q+Oe+T.mainAxis:ue+Q+Oe+T.mainAxis,ke=e.elements.arrow&&pe(e.elements.arrow),Rr=ke?m==="y"?ke.clientTop||0:ke.clientLeft||0:0,ot=(R=w==null?void 0:w[m])!=null?R:0,jr=W+Ce-ot-Rr,$r=W+Dr-ot,at=fe(d?he(be,jr):be,W,d?z(K,$r):K);g[m]=at,D[m]=at-W}if(i){var it,Nr=m==="x"?$:N,Br=m==="x"?k:L,Z=g[y],Ee=y==="y"?"height":"width",st=Z+l[Nr],pt=Z-l[Br],Le=[$,N].indexOf(b)!==-1,ft=(it=w==null?void 0:w[y])!=null?it:0,ct=Le?st:Z-E[Ee]-P[Ee]-ft+T.altAxis,lt=Le?Z+E[Ee]+P[Ee]-ft-T.altAxis:pt,ut=d&&Le?Rt(ct,Z,lt):fe(d?ct:st,Z,d?lt:pt);g[y]=ut,D[y]=ut-Z}e.modifiersData[n]=D}}const ir={name:"preventOverflow",enabled:!0,phase:"main",fn:ar,requiresIfExists:["offset"]};function sr(t){return{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function pr(t){return t===M(t)||!B(t)?Re(t):sr(t)}function fr(t){var e=t.getBoundingClientRect(),r=te(e.width)/t.offsetWidth||1,n=te(e.height)/t.offsetHeight||1;return r!==1||n!==1}function cr(t,e,r){r===void 0&&(r=!1);var n=B(e),o=B(e)&&fr(e),s=_(e),f=re(t,o,r),i={scrollLeft:0,scrollTop:0},a={x:0,y:0};return(n||!n&&!r)&&((q(e)!=="body"||$e(s))&&(i=pr(e)),B(e)?(a=re(e,!0),a.x+=e.clientLeft,a.y+=e.clientTop):s&&(a.x=je(s))),{x:f.left+i.scrollLeft-a.x,y:f.top+i.scrollTop-a.y,width:f.width,height:f.height}}function lr(t){var e=new Map,r=new Set,n=[];t.forEach(function(s){e.set(s.name,s)});function o(s){r.add(s.name);var f=[].concat(s.requires||[],s.requiresIfExists||[]);f.forEach(function(i){if(!r.has(i)){var a=e.get(i);a&&o(a)}}),n.push(s)}return t.forEach(function(s){r.has(s.name)||o(s)}),n}function ur(t){var e=lr(t);return Ae.reduce(function(r,n){return r.concat(e.filter(function(o){return o.phase===n}))},[])}function dr(t){var e;return function(){return e||(e=new Promise(function(r){Promise.resolve().then(function(){e=void 0,r(t())})})),e}}function F(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n<e;n++)r[n-1]=arguments[n];return[].concat(r).reduce(function(o,s){return o.replace(/%s/,s)},t)}var U='Popper: modifier "%s" provided an invalid %s property, expected %s but got %s',vr='Popper: modifier "%s" requires "%s", but "%s" modifier is not available',Ze=["name","enabled","phase","fn","effect","requires","options"];function hr(t){t.forEach(function(e){[].concat(Object.keys(e),Ze).filter(function(r,n,o){return o.indexOf(r)===n}).forEach(function(r){switch(r){case"name":typeof e.name!="string"&&console.error(F(U,String(e.name),'"name"','"string"','"'+String(e.name)+'"'));break;case"enabled":typeof e.enabled!="boolean"&&console.error(F(U,e.name,'"enabled"','"boolean"','"'+String(e.enabled)+'"'));break;case"phase":Ae.indexOf(e.phase)<0&&console.error(F(U,e.name,'"phase"',"either "+Ae.join(", "),'"'+String(e.phase)+'"'));break;case"fn":typeof e.fn!="function"&&console.error(F(U,e.name,'"fn"','"function"','"'+String(e.fn)+'"'));break;case"effect":e.effect!=null&&typeof e.effect!="function"&&console.error(F(U,e.name,'"effect"','"function"','"'+String(e.fn)+'"'));break;case"requires":e.requires!=null&&!Array.isArray(e.requires)&&console.error(F(U,e.name,'"requires"','"array"','"'+String(e.requires)+'"'));break;case"requiresIfExists":Array.isArray(e.requiresIfExists)||console.error(F(U,e.name,'"requiresIfExists"','"array"','"'+String(e.requiresIfExists)+'"'));break;case"options":case"data":break;default:console.error('PopperJS: an invalid property has been provided to the "'+e.name+'" modifier, valid properties are '+Ze.map(function(n){return'"'+n+'"'}).join(", ")+'; but "'+r+'" was provided.')}e.requires&&e.requires.forEach(function(n){t.find(function(o){return o.name===n})==null&&console.error(F(vr,String(e.name),n,n))})})})}function mr(t,e){var r=new Set;return t.filter(function(n){var o=e(n);if(!r.has(o))return r.add(o),!0})}function gr(t){var e=t.reduce(function(r,n){var o=r[n.name];return r[n.name]=o?Object.assign({},o,n,{options:Object.assign({},o.options,n.options),data:Object.assign({},o.data,n.data)}):n,r},{});return Object.keys(e).map(function(r){return e[r]})}var et="Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.",yr="Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.",tt={placement:"bottom",modifiers:[],strategy:"absolute"};function rt(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return!e.some(function(n){return!(n&&typeof n.getBoundingClientRect=="function")})}function br(t){t===void 0&&(t={});var e=t,r=e.defaultModifiers,n=r===void 0?[]:r,o=e.defaultOptions,s=o===void 0?tt:o;return function(i,a,c){c===void 0&&(c=s);var p={placement:"bottom",orderedModifiers:[],options:Object.assign({},tt,s),modifiersData:{},elements:{reference:i,popper:a},attributes:{},styles:{}},u=[],v=!1,d={state:p,setOptions:function(b){var A=typeof b=="function"?b(p.options):b;h(),p.options=Object.assign({},s,p.options,A),p.scrollParents={reference:Y(i)?ce(i):i.contextElement?ce(i.contextElement):[],popper:ce(a)};var O=ur(gr([].concat(n,p.options.modifiers)));if(p.orderedModifiers=O.filter(function(w){return w.enabled}),process.env.NODE_ENV!=="production"){var m=mr([].concat(O,p.options.modifiers),function(w){var D=w.name;return D});if(hr(m),V(p.options.placement)===ve){var y=p.orderedModifiers.find(function(w){var D=w.name;return D==="flip"});y||console.error(['Popper: "auto" placements require the "flip" modifier be',"present and enabled to work."].join(" "))}var g=I(a),E=g.marginTop,P=g.marginRight,S=g.marginBottom,T=g.marginLeft;[E,P,S,T].some(function(w){return parseFloat(w)})&&console.warn(['Popper: CSS "margin" styles cannot be used to apply padding',"between the popper and its reference element or boundary.","To replicate margin, use the `offset` modifier, as well as","the `padding` option in the `preventOverflow` and `flip`","modifiers."].join(" "))}return x(),d.update()},forceUpdate:function(){if(!v){var b=p.elements,A=b.reference,O=b.popper;if(!rt(A,O)){process.env.NODE_ENV!=="production"&&console.error(et);return}p.rects={reference:cr(A,pe(O),p.options.strategy==="fixed"),popper:Te(O)},p.reset=!1,p.placement=p.options.placement,p.orderedModifiers.forEach(function(w){return p.modifiersData[w.name]=Object.assign({},w.data)});for(var m=0,y=0;y<p.orderedModifiers.length;y++){if(process.env.NODE_ENV!=="production"&&(m+=1,m>100)){console.error(yr);break}if(p.reset===!0){p.reset=!1,y=-1;continue}var g=p.orderedModifiers[y],E=g.fn,P=g.options,S=P===void 0?{}:P,T=g.name;typeof E=="function"&&(p=E({state:p,options:S,name:T,instance:d})||p)}}},update:dr(function(){return new Promise(function(l){d.forceUpdate(),l(p)})}),destroy:function(){h(),v=!0}};if(!rt(i,a))return process.env.NODE_ENV!=="production"&&console.error(et),d;d.setOptions(c).then(function(l){!v&&c.onFirstUpdate&&c.onFirstUpdate(l)});function x(){p.orderedModifiers.forEach(function(l){var b=l.name,A=l.options,O=A===void 0?{}:A,m=l.effect;if(typeof m=="function"){var y=m({state:p,name:b,instance:d,options:O}),g=function(){};u.push(y||g)}})}function h(){u.forEach(function(l){return l()}),u=[]}return d}}var wr=[It,nr,Mt,St,tr,Jt,ir,Bt,Qt],xr=br({defaultModifiers:wr});const Or={mixins:[{props:{offset:Array,popper:Object,show:Boolean,target:{type:HTMLElement,required:!0},title:String,placement:String,top:Boolean,bottom:Boolean,left:Boolean,right:Boolean},data(){return{currentShow:!1,popperInstance:null}},methods:{open(){this.currentShow=!0},close(){this.currentShow=!1}},computed:{computedPlacement(){return this.placement?this.placement:this.bottom?"bottom":this.left?"left":this.right?"right":"top"},tooltipClasses(){return{show:this.currentShow,[`bs-tooltip-${this.computedPlacement}`]:!0}}},mounted(){this.popperInstance=xr(this.target,this.$el,Object.assign({placement:this.computedPlacement,modifiers:[{name:"offset",options:{offset:[0,6]}},{name:"arrow",options:{element:this.$refs.arrow}}]},this.popper)),this.$nextTick(()=>{this.currentShow=this.show})},beforeDestroy(){this.popperInstance&&this.popperInstance.destroy()}}]},kr="",Er=(t,e)=>{const r=t.__vccOpts||t;for(const[n,o]of e)r[n]=o;return r},Ar={ref:"arrow",class:"tooltip-arrow"},Pr={ref:"inner",class:"tooltip-inner"};function Sr(t,e,r,n,o,s){return j.openBlock(),j.createElementBlock("div",{class:j.normalizeClass(["tooltip",t.tooltipClasses]),role:"tooltip"},[j.createElementVNode("div",Ar,null,512),j.createElementVNode("div",Pr,[j.renderSlot(t.$slots,"default",{},()=>[j.createTextVNode(j.toDisplayString(t.title),1)])],512)],2)}const nt=Er(Or,[["render",Sr]]);function Tr(t,e={delay:void 0,prefix:"data-tooltip",triggers:{open:["mouseover:750","focus"],close:["mouseout:1000","blur"]}}){const r=e.prefix.replace(/[-]+$/,""),n=new RegExp(`^${r}-`);function o(i){return Array.from(i.attributes).map(a=>[a.name,a.value]).filter(([a])=>a==="title"||a.match(n)).map(([a,c])=>[a.replace(new RegExp(n),""),c]).reduce((a,c)=>Object.assign(a,{[c[0]]:c[1]}),{})}function s(i,a={}){const c=document.createElement("template"),p=j.h(nt,Object.assign({target:i,show:!0},a));j.render(p,c);const[u]=[...c.children];return document.body.append(u),()=>{var v;(v=p.component)==null||v.ctx.close(),setTimeout(()=>u.remove(),150)}}function f(i,a={}){const c=Object.assign({title:i.getAttribute(r)},a,o(i));if(!c.title||i.hasAttribute(`${r}-id`))return;const p=Math.random().toString(36).slice(2,7);let u,v;i.setAttribute(`${r}-id`,p),i.removeAttribute("title");function d(l=0){clearTimeout(v),u||(v=setTimeout(()=>{u=s(i,c)},l))}function x(l=0){clearTimeout(v),u&&(v=setTimeout(()=>{u&&u(),u=null},l))}function h(l,b){const[A,O]=l.split(":");i.addEventListener(A,()=>b(Number(O||0)))}e.triggers.open.map(l=>h(l,d)),e.triggers.close.map(l=>h(l,x))}t.mixin({mounted(){let i=this.$el;this.$el instanceof Text&&(i=this.$el.parentNode),i instanceof HTMLElement&&f(i);const a=document.createTreeWalker(i,NodeFilter.SHOW_ALL,c=>c instanceof Element?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT);for(;a.nextNode();)a.currentNode instanceof Element&&f(a.currentNode)}}),t.directive("tooltip",(i,a)=>f(i,Object.assign({},a.modifiers,a.value)))}H.Tooltip=nt,H.TooltipPlugin=Tr,Object.defineProperties(H,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
1
+ (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("vue"),require("@popperjs/core")):typeof define=="function"&&define.amd?define(["exports","vue","@popperjs/core"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l.Tooltip={},l.Vue,l.PopperjsCore))})(this,function(l,o,E){"use strict";const v=o.defineComponent({props:{offset:Array,popper:Object,show:Boolean,target:{type:HTMLElement,required:!0},title:String,placement:String,top:Boolean,bottom:Boolean,left:Boolean,right:Boolean},data(){return{currentShow:!1,popperInstance:null}},computed:{computedPlacement(){return this.placement?this.placement:this.bottom?"bottom":this.left?"left":this.right?"right":"top"},tooltipClasses(){return{show:this.currentShow,[`bs-tooltip-${this.computedPlacement}`]:!0}}},mounted(){this.popperInstance=E.createPopper(this.target,this.$el,Object.assign({placement:this.computedPlacement,modifiers:[{name:"offset",options:{offset:[0,6]}},{name:"arrow",options:{element:this.$refs.arrow}}]},this.popper)),this.$nextTick(()=>{this.currentShow=this.show})},beforeUnmount(){this.popperInstance&&this.popperInstance.destroy()},methods:{open(){this.currentShow=!0},close(){this.currentShow=!1}}}),x=o.defineComponent({mixins:[v]}),M="",S=(c,m)=>{const a=c.__vccOpts||c;for(const[d,i]of m)a[d]=i;return a},y={ref:"arrow",class:"tooltip-arrow"},A={ref:"inner",class:"tooltip-inner"};function j(c,m,a,d,i,g){return o.openBlock(),o.createElementBlock("div",{class:o.normalizeClass(["tooltip",c.tooltipClasses]),role:"tooltip"},[o.createElementVNode("div",y,null,512),o.createElementVNode("div",A,[o.renderSlot(c.$slots,"default",{},()=>[o.createTextVNode(o.toDisplayString(c.title),1)])],512)],2)}const T=S(x,[["render",j]]);function N(c,m={}){const a=new Map,d=Object.assign({delay:void 0,prefix:"data-tooltip",triggers:{open:["mouseover:350"],close:["mouseout:100"]}},m),i=d.prefix.replace(/[-]+$/,""),g=new RegExp(`^${i}-`);function O(e){return Array.from(e.attributes).map(t=>[t.name,t.value]).filter(([t])=>t==="title"||t.match(g)).map(([t,n])=>[t.replace(new RegExp(g),""),n]).reduce((t,n)=>Object.assign(t,{[n[0]]:n[1]}),{})}function P(e,t={},n){const s=document.createElement("template"),r=o.h(T,Object.assign({target:e,show:!0},t));o.render(r,s);const[p]=[...s.children];return document.body.append(p),()=>{var f;a.delete(n),(f=r.component)==null||f.ctx.close(),setTimeout(()=>p.remove(),150)}}function b(e,t={}){var $,w;const n=Object.assign({title:e.getAttribute(i)},t,O(e));if(!n.title||e.hasAttribute(`${i}-id`))return;const s=Math.random().toString(36).slice(2,7);let r,p;e.setAttribute(`${i}-id`,s),e.removeAttribute("title");function f(u=0){clearTimeout(p),r||(p=setTimeout(()=>{document.contains(e)&&(r=P(e,n,s),a.set(s,r))},u))}function h(u=0){clearTimeout(p),r&&(p=setTimeout(()=>{r&&r(),r=null},u))}function _(u,C){const[L,B]=u.split(":");e.addEventListener(L,()=>C(Number(B||0)))}((($=e.getAttribute(`${i}-trigger-open`))==null?void 0:$.split(","))||d.triggers.open).map(u=>_(u,f)),(((w=e.getAttribute(`${i}-trigger-close`))==null?void 0:w.split(","))||d.triggers.close).map(u=>_(u,h))}c.mixin({mounted(){let e=this.$el;this.$el instanceof Text&&(e=this.$el.parentNode),e instanceof HTMLElement&&b(e);const t=document.createTreeWalker(e,NodeFilter.SHOW_ALL,s=>s instanceof Element?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT);for(;t.nextNode();)t.currentNode instanceof Element&&b(t.currentNode);new MutationObserver(s=>{for(const{removedNodes:r}of s)for(const p of r)for(const f of p.querySelectorAll(`[${i}-id]`)){const h=a.get(f.getAttribute(`${i}-id`));h&&h()}}).observe(e,{childList:!0})}}),c.directive("tooltip",{created(e,t){b(e,Object.assign({},t.modifiers,t.value))},beforeUnmount(e){const t=e.getAttribute(`${i}-id`),n=a.get(t);console.log("beforeUnmount"),n&&n()}})}l.Tooltip=T,l.TooltipPlugin=N,Object.defineProperties(l,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
2
+ //# sourceMappingURL=tooltip.umd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.umd.js","sources":["../src/Popper.ts","../src/Tooltip.vue","../src/TooltipPlugin.ts"],"sourcesContent":["import { createPopper } from '@popperjs/core';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n\n props: {\n offset: Array,\n\n popper: Object,\n\n show: Boolean,\n\n target: {\n type: HTMLElement,\n required: true\n },\n\n title: String,\n\n placement: String,\n\n top: Boolean,\n\n bottom: Boolean,\n\n left: Boolean,\n\n right: Boolean,\n },\n \n data() {\n return {\n currentShow: false,\n popperInstance: null\n };\n },\n\n computed: {\n computedPlacement() {\n if(this.placement) {\n return this.placement;\n }\n\n if(this.bottom) {\n return 'bottom';\n }\n\n if(this.left) {\n return 'left';\n }\n\n if(this.right) {\n return 'right';\n }\n\n return 'top';\n },\n tooltipClasses() {\n return {\n show: this.currentShow,\n [`bs-tooltip-${this.computedPlacement}`]: true\n };\n }\n },\n\n mounted() {\n this.popperInstance = createPopper(this.target, this.$el, Object.assign({\n placement: this.computedPlacement,\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 6]\n },\n },\n {\n name: 'arrow',\n options: {\n element: this.$refs.arrow,\n },\n },\n ],\n }, this.popper));\n\n this.$nextTick(() => {\n this.currentShow = this.show;\n });\n },\n\n beforeUnmount() {\n this.popperInstance && this.popperInstance.destroy();\n },\n\n methods: {\n\n open() {\n this.currentShow = true;\n },\n\n close() {\n this.currentShow = false;\n }\n\n }\n\n});","<script lang=\"ts\">\n// @ts-ignore\nimport { defineComponent } from 'vue';\nimport Popper from './Popper';\n\nexport default defineComponent({\n mixins: [\n Popper\n ]\n});\n</script>\n\n<template>\n <div\n class=\"tooltip\"\n :class=\"tooltipClasses\"\n role=\"tooltip\">\n <div\n ref=\"arrow\"\n class=\"tooltip-arrow\" />\n <div\n ref=\"inner\"\n class=\"tooltip-inner\">\n <slot>{{ title }}</slot>\n </div>\n </div>\n</template>\n\n<style>\n.tooltip:not(.show) {\n z-index: -1;\n}\n</style>","import type { App } from 'vue';\nimport { h, render } from 'vue';\nimport Tooltip from './Tooltip.vue';\n\ntype TooltipPluginOptions = {\n delay?: number,\n prefix: string,\n triggers: {\n open: string[],\n close: string[],\n }\n}\n\nexport default function (app: App, opts: Partial<TooltipPluginOptions> = {}) {\n const tooltips: Map<string,Function> = new Map;\n\n const options: TooltipPluginOptions = Object.assign({\n delay: undefined,\n prefix: 'data-tooltip',\n triggers: {\n open: ['mouseover:350'],\n close: ['mouseout:100'],\n }\n }, opts);\n\n const prefix = options.prefix.replace(/[-]+$/, '');\n const prefixRegExp = new RegExp(`^${prefix}\\-`);\n\n function getAttributes(el: Element): Record<string,any> {\n return Array.from(el.attributes)\n .map(a => [a.name, a.value])\n .filter(([key]) => key === 'title' || key.match(prefixRegExp))\n .map(([key, value]) => [key.replace(new RegExp(prefixRegExp), ''), value])\n .reduce((carry, attr) => Object.assign(carry, { [attr[0]]: attr[1] }), {});\n }\n\n function createTooltip(target: Element, props: Record<string,any> = {}, hash: string): Function {\n const container = document.createElement('template');\n \n const vnode = h(Tooltip, Object.assign({\n target,\n show: true\n }, props));\n \n render(vnode, container);\n \n const [el] = [...container.children];\n \n document.body.append(el);\n \n return () => {\n tooltips.delete(hash);\n\n // @ts-ignore\n vnode.component?.ctx.close();\n \n // @todo: Make the animation rate (150) dynamic. Should get value \n // from the CSS transition duration.\n setTimeout(() => el.remove(), 150);\n };\n }\n\n function init(target: Element, props = {}) {\n const properties: Record<string,any> = Object.assign({\n title: target.getAttribute(prefix)\n }, props, getAttributes(target));\n\n // If the properties don't have a title, ignore this target.\n if(!properties.title || target.hasAttribute(`${prefix}-id`)) {\n return;\n }\n\n // Create a unique \"hash\" to show the node has been initialized.\n // This prevents double initializing on the same element.\n const hash = Math.random().toString(36).slice(2, 7);\n \n // Create the instance vars.\n let tooltip: Function|null, timer: number;\n\n //target.setAttribute(prefix, properties.title);\n target.setAttribute(`${prefix}-id`, hash);\n target.removeAttribute('title');\n\n function open(delay = 0) {\n clearTimeout(timer);\n\n if(!tooltip) {\n timer = setTimeout(() => {\n // Do a check before creating the tooltip to ensure the dom\n // element still exists. Its possible for the element to\n // be removed after the timeout delay runs.\n if(document.contains(target)) {\n tooltip = createTooltip(target, properties, hash);\n tooltips.set(hash, tooltip);\n }\n }, delay);\n }\n }\n\n function close(delay = 0) {\n clearTimeout(timer);\n\n if(tooltip) {\n timer = setTimeout(() => {\n tooltip && tooltip();\n tooltip = null;\n }, delay);\n } \n }\n\n function addEventListener(trigger: string, fn: Function) {\n const [ event, delayString ] = trigger.split(':');\n\n target.addEventListener(event, () => fn(Number(delayString || 0)));\n }\n\n (target.getAttribute(`${prefix}-trigger-open`)?.split(',') || options.triggers.open).map(trigger => addEventListener(trigger, open));\n (target.getAttribute(`${prefix}-trigger-close`)?.split(',') || options.triggers.close).map(trigger => addEventListener(trigger, close));\n }\n \n app.mixin({\n mounted() {\n let el = this.$el;\n\n if(this.$el instanceof Text) {\n el = this.$el.parentNode;\n }\n\n if(el instanceof HTMLElement) {\n init(el);\n }\n\n // Create the tree walker.\n const walker = document.createTreeWalker(\n el,\n NodeFilter.SHOW_ALL,\n (node: Node) => {\n if(!(node instanceof Element)) {\n return NodeFilter.FILTER_REJECT;\n }\n \n return NodeFilter.FILTER_ACCEPT;\n }\n );\n\n // Step through and alert all child nodes\n while(walker.nextNode()) {\n if(walker.currentNode instanceof Element) {\n init(<Element> walker.currentNode);\n }\n }\n\n const observer = new MutationObserver((changes) => {\n for(const { removedNodes } of changes) {\n for(const node of removedNodes) {\n for(const el of (node as Element).querySelectorAll(`[${prefix}-id]`)) {\n const tooltip = tooltips.get(\n el.getAttribute(`${prefix}-id`) as string\n );\n\n tooltip && tooltip();\n }\n } \n }\n });\n\n observer.observe(el, { childList: true });\n }\n });\n\n app.directive('tooltip', {\n created(target, binding) {\n init(target, Object.assign({}, binding.modifiers, binding.value));\n },\n beforeUnmount(target) {\n const id = target.getAttribute(`${prefix}-id`);\n const tooltip = tooltips.get(id);\n\n console.log('beforeUnmount');\n\n tooltip && tooltip();\n }\n });\n}"],"names":["Popper","defineComponent","createPopper","_sfc_main","_hoisted_1","_hoisted_2","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_renderSlot","TooltipPlugin","app","opts","tooltips","options","prefix","prefixRegExp","getAttributes","el","a","key","value","carry","attr","createTooltip","target","props","hash","container","vnode","h","Tooltip","render","_a","init","properties","tooltip","timer","open","delay","close","addEventListener","trigger","fn","event","delayString","_b","walker","node","changes","removedNodes","binding","id"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vue-interface/tooltip",
3
- "version": "1.0.0-beta.2",
3
+ "version": "1.0.0-beta.4",
4
4
  "description": "A Vue tooltip component.",
5
5
  "files": [
6
6
  "index.ts",
@@ -23,12 +23,7 @@
23
23
  "scripts": {
24
24
  "dev": "vite",
25
25
  "build": "vite build",
26
- "preview": "vite preview",
27
- "pre-release": "npm run build; git add . -A; git commit -m 'pre-release commit'",
28
- "release-patch": "npm run pre-release && npm version patch -m \"%s\" && npm run release;",
29
- "release-minor": "npm run pre-release && npm version minor -m \"%s\" && npm run release;",
30
- "release-major": "npm run pre-release && npm version major -m \"%s\" && npm run release;",
31
- "release": "git add . -A; git commit; git push --tags origin; npm publish;"
26
+ "preview": "vite preview"
32
27
  },
33
28
  "repository": {
34
29
  "type": "git",
@@ -46,7 +41,7 @@
46
41
  "bugs": {
47
42
  "url": "https://github.com/vue-interface/tooltip/issues"
48
43
  },
49
- "homepage": "https://github.com/vue-interface/tooltip/docs#readme",
44
+ "homepage": "https://github.com/vue-interface/tooltip",
50
45
  "dependencies": {
51
46
  "@popperjs/core": "^2.4.4"
52
47
  },
@@ -54,17 +49,15 @@
54
49
  "vue": "^3.0.0"
55
50
  },
56
51
  "devDependencies": {
57
- "@rollup/plugin-babel": "^6.0.0",
58
52
  "@vitejs/plugin-vue": "^3.0.1",
53
+ "@vue-interface/eslint-config": "^1.0.0-beta.0",
59
54
  "autoprefixer": "^10.4.2",
60
- "babel-eslint": "^10.1.0",
61
- "babel-preset-vue": "^2.0.2",
62
55
  "change-case": "^4.1.2",
63
56
  "eslint": "^8.27.0",
64
- "eslint-plugin-vue": "^9.7.0",
65
57
  "pascalcase": "^2.0.0",
66
58
  "postcss": "^8.4.6",
67
59
  "tailwindcss": "^3.0.18",
60
+ "typescript": "^5.0.2",
68
61
  "vite": "^3.0.0",
69
62
  "vite-plugin-dts": "^1.7.1",
70
63
  "vue": "^3.2.37"
@@ -1,6 +1,7 @@
1
1
  import { createPopper } from '@popperjs/core';
2
+ import { defineComponent } from 'vue';
2
3
 
3
- export default {
4
+ export default defineComponent({
4
5
 
5
6
  props: {
6
7
  offset: Array,
@@ -34,18 +35,6 @@ export default {
34
35
  };
35
36
  },
36
37
 
37
- methods: {
38
-
39
- open() {
40
- this.currentShow = true;
41
- },
42
-
43
- close() {
44
- this.currentShow = false;
45
- }
46
-
47
- },
48
-
49
38
  computed: {
50
39
  computedPlacement() {
51
40
  if(this.placement) {
@@ -98,8 +87,20 @@ export default {
98
87
  });
99
88
  },
100
89
 
101
- beforeDestroy() {
90
+ beforeUnmount() {
102
91
  this.popperInstance && this.popperInstance.destroy();
92
+ },
93
+
94
+ methods: {
95
+
96
+ open() {
97
+ this.currentShow = true;
98
+ },
99
+
100
+ close() {
101
+ this.currentShow = false;
102
+ }
103
+
103
104
  }
104
105
 
105
- };
106
+ });
package/src/Tooltip.vue CHANGED
@@ -1,23 +1,31 @@
1
- <template>
2
- <div class="tooltip" :class="tooltipClasses" role="tooltip">
3
- <div ref="arrow" class="tooltip-arrow" />
4
- <div ref="inner" class="tooltip-inner">
5
- <slot>{{ title }}</slot>
6
- </div>
7
- </div>
8
- </template>
9
-
10
1
  <script lang="ts">
11
2
  // @ts-ignore
3
+ import { defineComponent } from 'vue';
12
4
  import Popper from './Popper';
13
5
 
14
- export default {
6
+ export default defineComponent({
15
7
  mixins: [
16
8
  Popper
17
9
  ]
18
- };
10
+ });
19
11
  </script>
20
12
 
13
+ <template>
14
+ <div
15
+ class="tooltip"
16
+ :class="tooltipClasses"
17
+ role="tooltip">
18
+ <div
19
+ ref="arrow"
20
+ class="tooltip-arrow" />
21
+ <div
22
+ ref="inner"
23
+ class="tooltip-inner">
24
+ <slot>{{ title }}</slot>
25
+ </div>
26
+ </div>
27
+ </template>
28
+
21
29
  <style>
22
30
  .tooltip:not(.show) {
23
31
  z-index: -1;