aha-components 1.3.3 → 1.3.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.
- package/dist/Tooltip.esm.js +1 -1
- package/dist/Tooltip.esm.js.map +1 -1
- package/dist/Tooltip.js +1 -1
- package/dist/Tooltip.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.stories.d.ts +2 -0
- package/dist/components/Tooltip/index.d.ts +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/Tooltip.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as t,jsx as e,Fragment as r}from"react/jsx-runtime";import{useState as o,
|
|
1
|
+
import{jsxs as t,jsx as e,Fragment as r}from"react/jsx-runtime";import{useState as o,useCallback as n,useEffect as i,useRef as a}from"react";import{createPortal as c}from"react-dom";var u=function(){return u=Object.assign||function(t){for(var e,r=1,o=arguments.length;r<o;r++)for(var n in e=arguments[r])Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t},u.apply(this,arguments)};"function"==typeof SuppressedError&&SuppressedError;var s=function(t,e,r,o){void 0===o&&(o=6);var n=window.scrollX||window.pageXOffset,i=window.scrollY||window.pageYOffset,a=t.left+t.width/2,c=t.top+t.height/2,u=o+6,s=0,l=0;switch(r){case"top":s=t.top-e.height-u+i,l=a-e.width/2+n;break;case"bottom":default:s=t.bottom+u+i,l=a-e.width/2+n;break;case"left":s=c-e.height/2+i,l=t.left-e.width-u+n;break;case"right":s=c-e.height/2+i,l=t.right+u+n;break;case"top-left":s=t.top-e.height-u+i,l=t.left+n;break;case"top-right":s=t.top-e.height-u+i,l=t.right-e.width+n;break;case"bottom-left":s=t.bottom+u+i,l=t.left+n;break;case"bottom-right":s=t.bottom+u+i,l=t.right-e.width+n}var p=window.innerWidth,d=window.innerHeight;return l<n+8?l=n+8:l+e.width>n+p-8&&(l=n+p-e.width-8),s<i+8?s=i+8:s+e.height>i+d-8&&(s=i+d-e.height-8),{top:s,left:l}},l=function(t,e,r,o){void 0===o&&(o=6);var n=s(t,e,r,o),i=n.top,a=n.left,c=window.scrollX||window.pageXOffset,u=i-(window.scrollY||window.pageYOffset),l=a-c,p=u+e.height,d=l+e.width,f=u,h=l,m=Math.max(f,t.top),w=Math.min(p,t.bottom),g=Math.max(h,t.left),b=Math.min(d,t.right);return w>m+1&&b>g+1},p=function(t,r){var o=u({position:"absolute",width:0,height:0,borderStyle:"solid"},r),n={top:u(u({},o),{borderWidth:"".concat(6,"px ").concat(6,"px 0 ").concat(6,"px"),borderColor:"#0C0A09 transparent transparent transparent"}),bottom:u(u({},o),{borderWidth:"0 ".concat(6,"px ").concat(6,"px ").concat(6,"px"),borderColor:"transparent transparent #0C0A09 transparent"}),left:u(u({},o),{borderWidth:"".concat(6,"px 0 ").concat(6,"px ").concat(6,"px"),borderColor:"transparent transparent transparent #0C0A09"}),right:u(u({},o),{borderWidth:"".concat(6,"px ").concat(6,"px ").concat(6,"px 0"),borderColor:"transparent #0C0A09 transparent transparent"}),"top-left":u(u({},o),{borderWidth:"".concat(6,"px ").concat(6,"px 0 ").concat(6,"px"),borderColor:"#0C0A09 transparent transparent transparent"}),"top-right":u(u({},o),{borderWidth:"".concat(6,"px ").concat(6,"px 0 ").concat(6,"px"),borderColor:"#0C0A09 transparent transparent transparent"}),"bottom-left":u(u({},o),{borderWidth:"0 ".concat(6,"px ").concat(6,"px ").concat(6,"px"),borderColor:"transparent transparent #0C0A09 transparent"}),"bottom-right":u(u({},o),{borderWidth:"0 ".concat(6,"px ").concat(6,"px ").concat(6,"px"),borderColor:"transparent transparent #0C0A09 transparent"})};return e("div",{style:n[t]})},d=function(d){var f=d.content,h=d.children,m=d.position,w=void 0===m?"top":m,g=d.trigger,b=void 0===g?"hover":g,v=d.delay,x=void 0===v?200:v,C=d.disabled,y=void 0!==C&&C,A=d.className,M=void 0===A?"":A,E=d.tooltipClassName,k=void 0===E?"":E,F=d.gap,W=void 0===F?6:F,T=d.showArrow,L=void 0===T||T,O=d.width,z=d.defaultVisible,S=void 0!==z&&z,q=d.visible,X=d.onVisibleChange,Y=void 0!==q,N=o(S),j=N[0],B=N[1],R=Y?q:j,H=o(Y?null!=q&&q:S),I=H[0],P=H[1],V=n(function(t){Y||B(t),null==X||X(t)},[Y,X]);i(function(){Y&&(q?requestAnimationFrame(function(){P(!0)}):P(!1))},[Y,q]);var D=o(w),G=D[0],J=D[1],K=o("320px"),Q=K[0],U=K[1],Z=o({position:"absolute",top:0,left:0,pointerEvents:"hover"===b?"auto":"none"}),$=Z[0],_=Z[1],tt=o({}),et=tt[0],rt=tt[1],ot=a(null),nt=a(null),it=a(null),at=a(null),ct=n(function(){if(ot.current&&nt.current&&R&&I){var t=ot.current.getBoundingClientRect(),e=nt.current.getBoundingClientRect(),r=function(t,e,r,o){if(void 0===o&&(o=6),!l(t,e,r,o))return r;for(var n=0,i=function(t){switch(t){case"top":return["bottom","right","left"];case"bottom":return["top","right","left"];case"left":return["right","top","bottom"];case"right":return["left","top","bottom"];case"top-left":return["bottom-left","top-right","bottom-right","right","left"];case"top-right":return["bottom-right","top-left","bottom-left","left","right"];case"bottom-left":return["top-left","bottom-right","top-right","right","left"];case"bottom-right":return["top-right","bottom-left","top-left","left","right"];default:return[]}}(r);n<i.length;n++){var a=i[n];if(!l(t,e,a,o))return a}return r}(t,e,w,W);J(r);var o=s(t,e,r,W),n=o.top,i=o.left;if(_(function(t){return u(u({},t),{position:"absolute",top:"".concat(n,"px"),left:"".concat(i,"px"),pointerEvents:"hover"===b?"auto":"none",zIndex:9999})}),L){var a=function(t,e,r,o,n){var i=window.scrollX||window.pageXOffset,a=window.scrollY||window.pageYOffset,c=e.left+(e.width-6)/2,u=e.top+(e.height-6)/2,s=o-i,l=n-a;switch(t){case"top":return{bottom:-6,left:Math.min(Math.max(c-s,6),r.width-6)};case"bottom":return{top:-6,left:Math.min(Math.max(c-s,6),r.width-6)};case"left":return{right:-6,top:Math.min(Math.max(u-l,6),r.height-6)};case"right":return{left:-6,top:Math.min(Math.max(u-l,6),r.height-6)};case"top-left":return{bottom:-6,left:12};case"top-right":return{bottom:-6,right:12};case"bottom-left":return{top:-6,left:12};case"bottom-right":return{top:-6,right:12};default:return{}}}(r,t,e,i,n);rt(a)}}},[R,w,W,L,I,b]),ut=n(function(){y||(at.current&&(clearTimeout(at.current),at.current=null),it.current&&clearTimeout(it.current),it.current=setTimeout(function(){V(!0),Y||requestAnimationFrame(function(){P(!0)})},x))},[y,x,V,Y]),st=n(function(){it.current&&(clearTimeout(it.current),it.current=null),at.current&&clearTimeout(at.current),Y?V(!1):(P(!1),at.current=setTimeout(function(){V(!1),at.current=null},150))},[V,Y]),lt=n(function(){"hover"===b&&(at.current&&(clearTimeout(at.current),at.current=null),R||(V(!0),requestAnimationFrame(function(){P(!0)})))},[b,R]),pt=n(function(t){y||"click"!==b||(t.stopPropagation(),R?st():(it.current&&(clearTimeout(it.current),it.current=null),V(!0),requestAnimationFrame(function(){P(!0)})))},[y,b,R,st]);i(function(){if(S&&R&&I){var t=function(){ot.current&&nt.current?ct():setTimeout(function(){requestAnimationFrame(t)},10)};setTimeout(function(){requestAnimationFrame(t)},0)}},[S,R,I,ct]),i(function(){if(R)return requestAnimationFrame(function(){ct()}),window.addEventListener("scroll",ct,!0),window.addEventListener("resize",ct),function(){window.removeEventListener("scroll",ct,!0),window.removeEventListener("resize",ct)}},[R,ct]),i(function(){if(R&&"click"===b){var t=function(t){ot.current&&nt.current&&!ot.current.contains(t.target)&&!nt.current.contains(t.target)&&st()};return document.addEventListener("mousedown",t,!0),function(){document.removeEventListener("mousedown",t,!0)}}},[R,b,st]),i(function(){return function(){it.current&&clearTimeout(it.current),at.current&&clearTimeout(at.current)}},[]);var dt={position:"absolute",top:0,left:0,opacity:I?1:0,transform:I?"scale(1)":"scale(0.95)",transition:"opacity 150ms ease-out, transform 150ms ease-out",pointerEvents:"hover"===b?"auto":"none",zIndex:9999},ft=n(function(){return"undefined"==typeof window||window.innerWidth>=768?"320px":"calc(100vw - 32px)"},[]);i(function(){var t=function(){U(ft())};return t(),window.addEventListener("resize",t),function(){window.removeEventListener("resize",t)}},[ft]);var ht=u(u({backgroundColor:"#0C0A09",color:"#FFFFFF",padding:"8px 12px",borderRadius:"6px",fontSize:"12px",fontWeight:400,fontFamily:"DM Sans, sans-serif",lineHeight:"16px"},void 0!==O?{width:"number"==typeof O?"".concat(O,"px"):O,maxWidth:"undefined"!=typeof window&&window.innerWidth<768?"calc(100vw - 32px)":void 0}:{maxWidth:Q,width:"max-content"}),{wordWrap:"break-word",boxShadow:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",whiteSpace:"pre-wrap",position:"relative",boxSizing:"border-box"}),mt=t("div",{style:u(u(u({},dt),$),{pointerEvents:"hover"===b?"auto":"none"}),className:"aha-tooltip-wrapper ".concat(k),onMouseEnter:"hover"===b?lt:void 0,onMouseLeave:"hover"===b?st:void 0,children:[e("div",{ref:nt,className:"aha-tooltip ".concat(k),style:ht,role:"tooltip",children:f}),L&&p(G,et)]}),wt=n(function(){"hover"===b&&(at.current=setTimeout(function(){st()},100))},[b,st]),gt="click"===b?{onClick:pt}:{onMouseEnter:ut,onMouseLeave:wt,onFocus:ut,onBlur:st};return t(r,{children:[e("div",u({ref:ot,className:"aha-tooltip-trigger ".concat(M),style:{display:"inline-block",cursor:"click"===b?"pointer":"default"}},gt,{children:h})),R&&"undefined"!=typeof document&&c(mt,document.body)]})};export{d as default};
|
|
2
2
|
//# sourceMappingURL=Tooltip.esm.js.map
|
package/dist/Tooltip.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../src/components/Tooltip/index.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nexport type TooltipPosition = \n | \"top\" \n | \"bottom\" \n | \"left\" \n | \"right\"\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\";\n\nexport type TooltipTrigger = \"hover\" | \"click\";\n\nexport interface TooltipProps {\n /** Tooltip 内容 */\n content: React.ReactNode;\n /** 触发元素 */\n children: React.ReactNode;\n /** 显示位置 */\n position?: TooltipPosition;\n /** 触发方式 */\n trigger?: TooltipTrigger;\n /** 延迟显示时间(毫秒) */\n delay?: number;\n /** 是否禁用 */\n disabled?: boolean;\n /** 自定义样式类名 */\n className?: string;\n /** 自定义 tooltip 样式类名 */\n tooltipClassName?: string;\n /** Tooltip 与触发元素的间距(像素) */\n gap?: number;\n /** 是否显示箭头 */\n showArrow?: boolean;\n /** Tooltip 内容宽度(如 \"200px\"、\"50%\" 等),不设置则使用自动计算 */\n width?: string | number;\n}\n\n// 箭头尺寸\nconst ARROW_SIZE = 6;\n// 默认间距\nconst GAP_DEFAULT = 6;\n\n// 计算箭头位置(相对于 tooltip 内容的位置)\nconst getArrowPosition = (\n position: TooltipPosition,\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n tooltipLeft: number,\n tooltipTop: number\n): React.CSSProperties => {\n const scrollX = window.scrollX || window.pageXOffset;\n const scrollY = window.scrollY || window.pageYOffset;\n \n const triggerCenterX = triggerRect.left + (triggerRect.width - ARROW_SIZE) / 2;\n const triggerCenterY = triggerRect.top + (triggerRect.height - ARROW_SIZE) / 2;\n \n // 计算箭头相对于 tooltip 内容的位置\n const tooltipAbsoluteLeft = tooltipLeft - scrollX;\n const tooltipAbsoluteTop = tooltipTop - scrollY;\n \n switch (position) {\n case \"top\":\n return {\n bottom: -ARROW_SIZE,\n left: Math.min(Math.max(triggerCenterX - tooltipAbsoluteLeft, ARROW_SIZE), tooltipRect.width - ARROW_SIZE),\n };\n case \"bottom\":\n return {\n top: -ARROW_SIZE,\n left: Math.min(Math.max(triggerCenterX - tooltipAbsoluteLeft, ARROW_SIZE), tooltipRect.width - ARROW_SIZE),\n };\n case \"left\":\n return {\n right: -ARROW_SIZE,\n top: Math.min(Math.max(triggerCenterY - tooltipAbsoluteTop, ARROW_SIZE), tooltipRect.height - ARROW_SIZE),\n };\n case \"right\":\n return {\n left: -ARROW_SIZE,\n top: Math.min(Math.max(triggerCenterY - tooltipAbsoluteTop, ARROW_SIZE), tooltipRect.height - ARROW_SIZE),\n };\n case \"top-left\":\n return {\n bottom: -ARROW_SIZE,\n left: 12,\n };\n case \"top-right\":\n return {\n bottom: -ARROW_SIZE,\n right: 12,\n };\n case \"bottom-left\":\n return {\n top: -ARROW_SIZE,\n left: 12,\n };\n case \"bottom-right\":\n return {\n top: -ARROW_SIZE,\n right: 12,\n };\n default:\n return {};\n }\n};\n\n// 计算 tooltip 位置\nconst calculatePosition = (\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n position: TooltipPosition,\n gap: number = GAP_DEFAULT\n): { top: number; left: number } => {\n const scrollX = window.scrollX || window.pageXOffset;\n const scrollY = window.scrollY || window.pageYOffset;\n \n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n \n // 考虑箭头的高度\n const arrowOffset = ARROW_SIZE;\n const totalGap = gap + arrowOffset;\n \n let top = 0;\n let left = 0;\n \n switch (position) {\n case \"top\":\n top = triggerRect.top - tooltipRect.height - totalGap + scrollY;\n left = triggerCenterX - tooltipRect.width / 2 + scrollX;\n break;\n case \"bottom\":\n top = triggerRect.bottom + totalGap + scrollY;\n left = triggerCenterX - tooltipRect.width / 2 + scrollX;\n break;\n case \"left\":\n top = triggerCenterY - tooltipRect.height / 2 + scrollY;\n left = triggerRect.left - tooltipRect.width - totalGap + scrollX;\n break;\n case \"right\":\n top = triggerCenterY - tooltipRect.height / 2 + scrollY;\n left = triggerRect.right + totalGap + scrollX;\n break;\n case \"top-left\":\n top = triggerRect.top - tooltipRect.height - totalGap + scrollY;\n left = triggerRect.left + scrollX;\n break;\n case \"top-right\":\n top = triggerRect.top - tooltipRect.height - totalGap + scrollY;\n left = triggerRect.right - tooltipRect.width + scrollX;\n break;\n case \"bottom-left\":\n top = triggerRect.bottom + totalGap + scrollY;\n left = triggerRect.left + scrollX;\n break;\n case \"bottom-right\":\n top = triggerRect.bottom + totalGap + scrollY;\n left = triggerRect.right - tooltipRect.width + scrollX;\n break;\n default:\n top = triggerRect.bottom + totalGap + scrollY;\n left = triggerCenterX - tooltipRect.width / 2 + scrollX;\n }\n \n // 边界检测,确保 tooltip 不会超出视口\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const padding = 8;\n \n if (left < scrollX + padding) {\n left = scrollX + padding;\n } else if (left + tooltipRect.width > scrollX + viewportWidth - padding) {\n left = scrollX + viewportWidth - tooltipRect.width - padding;\n }\n \n if (top < scrollY + padding) {\n top = scrollY + padding;\n } else if (top + tooltipRect.height > scrollY + viewportHeight - padding) {\n top = scrollY + viewportHeight - tooltipRect.height - padding;\n }\n return { top, left };\n};\n\n// 检查指定位置是否会遮挡触发元素(使用实际计算后的位置)\nconst willOverlap = (\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n position: TooltipPosition,\n gap: number = GAP_DEFAULT\n): boolean => {\n // 使用 calculatePosition 计算实际位置(包含边界调整)\n const { top: calculatedTop, left: calculatedLeft } = calculatePosition(\n triggerRect,\n tooltipRect,\n position,\n gap\n );\n \n // 转换为视口坐标(不包含 scroll)\n const scrollX = window.scrollX || window.pageXOffset;\n const scrollY = window.scrollY || window.pageYOffset;\n const top = calculatedTop - scrollY;\n const left = calculatedLeft - scrollX;\n \n // 检查 tooltip 和触发元素是否重叠\n const tooltipBottom = top + tooltipRect.height;\n const tooltipRight = left + tooltipRect.width;\n const tooltipTop = top;\n const tooltipLeft = left;\n \n // 计算重叠区域\n const overlapTop = Math.max(tooltipTop, triggerRect.top);\n const overlapBottom = Math.min(tooltipBottom, triggerRect.bottom);\n const overlapLeft = Math.max(tooltipLeft, triggerRect.left);\n const overlapRight = Math.min(tooltipRight, triggerRect.right);\n \n // 如果有重叠,返回 true\n return overlapBottom > overlapTop + 1 && overlapRight > overlapLeft + 1;\n};\n\n// 自动选择最佳位置:灵活尝试多个方向\nconst getAutoPosition = (\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n preferredPosition: TooltipPosition,\n gap: number = GAP_DEFAULT\n): TooltipPosition => {\n // 如果不会遮挡,直接返回指定位置\n if (!willOverlap(triggerRect, tooltipRect, preferredPosition, gap)) {\n return preferredPosition;\n }\n \n // 定义位置优先级列表\n const getPositionCandidates = (pos: TooltipPosition): TooltipPosition[] => {\n switch (pos) {\n case \"top\":\n return [\"bottom\", \"right\", \"left\"];\n case \"bottom\":\n return [\"top\", \"right\", \"left\"];\n case \"left\":\n return [\"right\", \"top\", \"bottom\"];\n case \"right\":\n return [\"left\", \"top\", \"bottom\"];\n case \"top-left\":\n return [\"bottom-left\", \"top-right\", \"bottom-right\", \"right\", \"left\"];\n case \"top-right\":\n return [\"bottom-right\", \"top-left\", \"bottom-left\", \"left\", \"right\"];\n case \"bottom-left\":\n return [\"top-left\", \"bottom-right\", \"top-right\", \"right\", \"left\"];\n case \"bottom-right\":\n return [\"top-right\", \"bottom-left\", \"top-left\", \"left\", \"right\"];\n default:\n return [];\n }\n };\n \n // 尝试候选位置,找到第一个不遮挡的\n const candidates = getPositionCandidates(preferredPosition);\n for (const candidate of candidates) {\n if (!willOverlap(triggerRect, tooltipRect, candidate, gap)) {\n return candidate;\n }\n }\n \n // 如果所有位置都遮挡,返回首选位置(至少保证功能可用)\n return preferredPosition;\n};\n\n// 渲染箭头\nconst renderArrow = (\n position: TooltipPosition,\n arrowStyle: React.CSSProperties\n) => {\n const baseArrowStyle: React.CSSProperties = {\n position: \"absolute\",\n width: 0,\n height: 0,\n borderStyle: \"solid\" as const,\n ...arrowStyle,\n };\n\n const arrowStyles: Record<TooltipPosition, React.CSSProperties> = {\n top: {\n ...baseArrowStyle,\n borderWidth: `${ARROW_SIZE}px ${ARROW_SIZE}px 0 ${ARROW_SIZE}px`,\n borderColor: \"#0C0A09 transparent transparent transparent\",\n },\n bottom: {\n ...baseArrowStyle,\n borderWidth: `0 ${ARROW_SIZE}px ${ARROW_SIZE}px ${ARROW_SIZE}px`,\n borderColor: \"transparent transparent #0C0A09 transparent\",\n },\n left: {\n ...baseArrowStyle,\n borderWidth: `${ARROW_SIZE}px 0 ${ARROW_SIZE}px ${ARROW_SIZE}px`,\n borderColor: \"transparent transparent transparent #0C0A09\",\n },\n right: {\n ...baseArrowStyle,\n borderWidth: `${ARROW_SIZE}px ${ARROW_SIZE}px ${ARROW_SIZE}px 0`,\n borderColor: \"transparent #0C0A09 transparent transparent\",\n },\n \"top-left\": {\n ...baseArrowStyle,\n borderWidth: `${ARROW_SIZE}px ${ARROW_SIZE}px 0 ${ARROW_SIZE}px`,\n borderColor: \"#0C0A09 transparent transparent transparent\",\n },\n \"top-right\": {\n ...baseArrowStyle,\n borderWidth: `${ARROW_SIZE}px ${ARROW_SIZE}px 0 ${ARROW_SIZE}px`,\n borderColor: \"#0C0A09 transparent transparent transparent\",\n },\n \"bottom-left\": {\n ...baseArrowStyle,\n borderWidth: `0 ${ARROW_SIZE}px ${ARROW_SIZE}px ${ARROW_SIZE}px`,\n borderColor: \"transparent transparent #0C0A09 transparent\",\n },\n \"bottom-right\": {\n ...baseArrowStyle,\n borderWidth: `0 ${ARROW_SIZE}px ${ARROW_SIZE}px ${ARROW_SIZE}px`,\n borderColor: \"transparent transparent #0C0A09 transparent\",\n },\n };\n return <div style={arrowStyles[position] as any} />;\n};\n\nconst Tooltip: React.FC<TooltipProps> = ({\n content,\n children,\n position = \"top\",\n trigger = \"hover\",\n delay = 200,\n disabled = false,\n className = \"\",\n tooltipClassName = \"\",\n gap = GAP_DEFAULT,\n showArrow = true,\n width,\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [isAnimating, setIsAnimating] = useState(false);\n const [actualPosition, setActualPosition] = useState<TooltipPosition>(position);\n const [tooltipMaxWidth, setTooltipMaxWidth] = useState<string>(\"320px\");\n const [tooltipStyle, setTooltipStyle] = useState<React.CSSProperties>({\n position: \"absolute\",\n top: 0,\n left: 0,\n pointerEvents: trigger === \"hover\" ? \"auto\" : \"none\",\n });\n const [arrowStyle, setArrowStyle] = useState<React.CSSProperties>({});\n \n const triggerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n const hideTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n \n const updatePosition = useCallback(() => {\n if (!triggerRef.current || !tooltipRef.current || !isVisible) return;\n \n // 如果正在隐藏动画中,不更新位置,避免移位\n if (!isAnimating) return;\n \n const triggerRect = triggerRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n \n // 自动选择最佳位置,避免超出视口或被遮挡\n const finalPosition = getAutoPosition(triggerRect, tooltipRect, position, gap);\n setActualPosition(finalPosition);\n \n const { top, left } = calculatePosition(triggerRect, tooltipRect, finalPosition, gap);\n setTooltipStyle((prev) => ({\n ...prev,\n position: \"absolute\",\n top: `${top}px`,\n left: `${left}px`,\n // opacity 由 tooltipContainerStyle 控制,不在这里设置\n // hover 模式下允许鼠标事件,click 模式下禁用\n pointerEvents: trigger === \"hover\" ? \"auto\" : \"none\",\n zIndex: 9999,\n }));\n\n // 计算箭头位置\n if (showArrow) {\n const arrowPos = getArrowPosition(\n finalPosition,\n triggerRect,\n tooltipRect,\n left,\n top\n );\n setArrowStyle(arrowPos);\n }\n }, [isVisible, position, gap, showArrow, isAnimating, trigger]);\n \n const showTooltip = useCallback(() => {\n if (disabled) return;\n \n // 清除隐藏定时器\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n \n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n \n timeoutRef.current = setTimeout(() => {\n setIsVisible(true);\n // 触发动画\n requestAnimationFrame(() => {\n setIsAnimating(true);\n });\n }, delay);\n }, [disabled, delay]);\n \n const hideTooltip = useCallback(() => {\n // 清除显示定时器\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n \n // 清除隐藏定时器\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n }\n \n setIsAnimating(false);\n // 等待动画完成后再隐藏\n hideTimeoutRef.current = setTimeout(() => {\n setIsVisible(false);\n hideTimeoutRef.current = null;\n }, 150);\n }, []);\n\n // 保持 tooltip 显示(当鼠标在 tooltip 内容上时)\n const keepTooltipVisible = useCallback(() => {\n if (trigger !== \"hover\") return;\n \n // 清除隐藏定时器\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n \n // 确保 tooltip 可见\n if (!isVisible) {\n setIsVisible(true);\n requestAnimationFrame(() => {\n setIsAnimating(true);\n });\n }\n }, [trigger, isVisible]);\n\n // 点击触发工具提示(click 模式)\n const handleClick = useCallback((e: React.MouseEvent) => {\n if (disabled || trigger !== \"click\") return;\n \n e.stopPropagation();\n \n // 如果已经显示,则隐藏\n if (isVisible) {\n hideTooltip();\n } else {\n // 清除延迟定时器,立即显示(click 模式不使用延迟)\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n setIsVisible(true);\n requestAnimationFrame(() => {\n setIsAnimating(true);\n });\n }\n }, [disabled, trigger, isVisible, hideTooltip]);\n\n useEffect(() => {\n if (isVisible) {\n // 使用 requestAnimationFrame 确保 DOM 已更新\n requestAnimationFrame(() => {\n updatePosition();\n });\n \n // 监听滚动和窗口大小变化\n window.addEventListener(\"scroll\", updatePosition, true);\n window.addEventListener(\"resize\", updatePosition);\n \n return () => {\n window.removeEventListener(\"scroll\", updatePosition, true);\n window.removeEventListener(\"resize\", updatePosition);\n };\n }\n }, [isVisible, updatePosition]);\n\n // 点击外部区域关闭 tooltip(仅 click 模式)\n useEffect(() => {\n if (!isVisible || trigger !== \"click\") return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n triggerRef.current &&\n tooltipRef.current &&\n !triggerRef.current.contains(event.target as Node) &&\n !tooltipRef.current.contains(event.target as Node)\n ) {\n hideTooltip();\n }\n };\n\n // 使用捕获阶段确保在其他点击处理之前执行\n document.addEventListener(\"mousedown\", handleClickOutside, true);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside, true);\n };\n }, [isVisible, trigger, hideTooltip]);\n \n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n }\n };\n }, []);\n\n // Tooltip 容器样式\n const tooltipContainerStyle: React.CSSProperties = {\n position: \"absolute\",\n top: 0,\n left: 0,\n opacity: isAnimating ? 1 : 0,\n transform: isAnimating ? \"scale(1)\" : \"scale(0.95)\",\n transition: \"opacity 150ms ease-out, transform 150ms ease-out\",\n // hover 模式下允许鼠标事件,click 模式下禁用\n pointerEvents: trigger === \"hover\" ? \"auto\" : \"none\",\n zIndex: 9999,\n };\n\n // 计算 tooltip 最大宽度\n const calculateTooltipMaxWidth = useCallback((): string => {\n if (typeof window === \"undefined\") return \"320px\";\n const viewportWidth = window.innerWidth;\n // 移动端:使用 calc 确保不超出屏幕\n // 桌面端:最大宽度 320px\n return viewportWidth >= 768 ? \"320px\" : \"calc(100vw - 32px)\";\n }, []);\n\n // 更新 tooltip 最大宽度\n useEffect(() => {\n const updateMaxWidth = () => {\n setTooltipMaxWidth(calculateTooltipMaxWidth());\n };\n \n updateMaxWidth();\n window.addEventListener(\"resize\", updateMaxWidth);\n \n return () => {\n window.removeEventListener(\"resize\", updateMaxWidth);\n };\n }, [calculateTooltipMaxWidth]);\n\n // Tooltip 内容样式(符合设计系统)\n const tooltipContentStyle: React.CSSProperties = {\n backgroundColor: \"#0C0A09\",\n color: \"#FFFFFF\",\n padding: \"8px 12px\",\n borderRadius: \"6px\",\n fontSize: \"12px\",\n fontWeight: 400,\n fontFamily: \"DM Sans, sans-serif\",\n lineHeight: \"16px\",\n // 如果设置了 width,使用设置的宽度,但在移动端也要限制最大宽度;否则使用自动计算的最大宽度\n ...(width !== undefined\n ? {\n width: typeof width === \"number\" ? `${width}px` : width,\n // 移动端也要限制最大宽度,不能超出屏幕\n maxWidth: typeof window !== \"undefined\" && window.innerWidth < 768 \n ? \"calc(100vw - 32px)\" \n : undefined,\n }\n : {\n maxWidth: tooltipMaxWidth,\n width: \"max-content\",\n }),\n wordWrap: \"break-word\",\n boxShadow: \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n whiteSpace: \"pre-wrap\",\n position: \"relative\",\n boxSizing: \"border-box\",\n };\n\n const tooltipContent = (\n <div\n style={{\n ...tooltipContainerStyle,\n ...tooltipStyle,\n // 确保 hover 模式下 pointerEvents 为 auto\n pointerEvents: trigger === \"hover\" ? \"auto\" : \"none\",\n } as any}\n className={`aha-tooltip-wrapper ${tooltipClassName}`}\n onMouseEnter={trigger === \"hover\" ? keepTooltipVisible : undefined}\n onMouseLeave={trigger === \"hover\" ? hideTooltip : undefined}\n >\n <div\n ref={tooltipRef}\n className={`aha-tooltip ${tooltipClassName}`}\n style={tooltipContentStyle as any}\n role=\"tooltip\"\n >\n {content}\n </div>\n {showArrow && renderArrow(actualPosition, arrowStyle)}\n </div>\n );\n \n // 延迟隐藏(用于从触发元素移动到 tooltip 内容的过渡)\n const handleTriggerMouseLeave = useCallback(() => {\n if (trigger !== \"hover\") return;\n \n // 延迟隐藏,给用户时间移动到 tooltip 内容上\n // 如果用户在延迟期间移动到 tooltip 内容上,keepTooltipVisible 会清除这个定时器\n hideTimeoutRef.current = setTimeout(() => {\n hideTooltip();\n }, 100);\n }, [trigger, hideTooltip]);\n\n // 根据触发模式设置事件处理器\n const triggerProps = trigger === \"click\" \n ? {\n onClick: handleClick,\n }\n : {\n onMouseEnter: showTooltip,\n onMouseLeave: handleTriggerMouseLeave,\n onFocus: showTooltip,\n onBlur: hideTooltip,\n };\n\n return (\n <>\n <div\n ref={triggerRef}\n className={`aha-tooltip-trigger ${className}`}\n style={{ display: \"inline-block\", cursor: trigger === \"click\" ? \"pointer\" : \"default\" }}\n {...triggerProps}\n >\n {children}\n </div>\n {isVisible && typeof document !== \"undefined\" && createPortal(tooltipContent, document.body)}\n </>\n );\n};\n\nexport default Tooltip;"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","SuppressedError","calculatePosition","triggerRect","tooltipRect","position","gap","scrollX","window","pageXOffset","scrollY","pageYOffset","triggerCenterX","left","width","triggerCenterY","top","height","totalGap","bottom","right","viewportWidth","innerWidth","viewportHeight","innerHeight","willOverlap","_a","calculatedTop","calculatedLeft","tooltipBottom","tooltipRight","tooltipTop","tooltipLeft","overlapTop","Math","max","overlapBottom","min","overlapLeft","overlapRight","renderArrow","arrowStyle","baseArrowStyle","borderStyle","arrowStyles","borderWidth","concat","borderColor","_jsx","style","Tooltip","content","children","_b","_c","trigger","_d","delay","_e","disabled","_f","className","_g","tooltipClassName","_h","_j","showArrow","_k","useState","isVisible","setIsVisible","_l","isAnimating","setIsAnimating","_m","actualPosition","setActualPosition","_o","tooltipMaxWidth","setTooltipMaxWidth","_p","pointerEvents","tooltipStyle","setTooltipStyle","_q","setArrowStyle","triggerRef","useRef","tooltipRef","timeoutRef","hideTimeoutRef","updatePosition","useCallback","current","getBoundingClientRect","finalPosition","preferredPosition","_i","candidates_1","pos","getPositionCandidates","candidate","getAutoPosition","prev","zIndex","arrowPos","tooltipAbsoluteLeft","tooltipAbsoluteTop","getArrowPosition","showTooltip","clearTimeout","setTimeout","requestAnimationFrame","hideTooltip","keepTooltipVisible","handleClick","e","stopPropagation","useEffect","addEventListener","removeEventListener","handleClickOutside","event","contains","target","document","tooltipContainerStyle","opacity","transform","transition","calculateTooltipMaxWidth","updateMaxWidth","tooltipContentStyle","backgroundColor","color","padding","borderRadius","fontSize","fontWeight","fontFamily","lineHeight","undefined","maxWidth","wordWrap","boxShadow","whiteSpace","boxSizing","tooltipContent","_jsxs","onMouseEnter","onMouseLeave","ref","role","handleTriggerMouseLeave","triggerProps","onClick","onFocus","onBlur","_Fragment","display","cursor","createPortal","body"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"Tooltip.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../src/components/Tooltip/index.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nexport type TooltipPosition = \n | \"top\" \n | \"bottom\" \n | \"left\" \n | \"right\"\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\";\n\nexport type TooltipTrigger = \"hover\" | \"click\";\n\nexport interface TooltipProps {\n /** Tooltip 内容 */\n content: React.ReactNode;\n /** 触发元素 */\n children: React.ReactNode;\n /** 显示位置 */\n position?: TooltipPosition;\n /** 触发方式 */\n trigger?: TooltipTrigger;\n /** 延迟显示时间(毫秒) */\n delay?: number;\n /** 是否禁用 */\n disabled?: boolean;\n /** 自定义样式类名 */\n className?: string;\n /** 自定义 tooltip 样式类名 */\n tooltipClassName?: string;\n /** Tooltip 与触发元素的间距(像素) */\n gap?: number;\n /** 是否显示箭头 */\n showArrow?: boolean;\n /** Tooltip 内容宽度(如 \"200px\"、\"50%\" 等),不设置则使用自动计算 */\n width?: string | number;\n /** 是否默认显示(非受控) */\n defaultVisible?: boolean;\n /** 是否显示(受控) */\n visible?: boolean;\n /** 显示/隐藏时的回调 */\n onVisibleChange?: (visible: boolean) => void;\n}\n\n// 箭头尺寸\nconst ARROW_SIZE = 6;\n// 默认间距\nconst GAP_DEFAULT = 6;\n\n// 计算箭头位置(相对于 tooltip 内容的位置)\nconst getArrowPosition = (\n position: TooltipPosition,\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n tooltipLeft: number,\n tooltipTop: number\n): React.CSSProperties => {\n const scrollX = window.scrollX || window.pageXOffset;\n const scrollY = window.scrollY || window.pageYOffset;\n \n const triggerCenterX = triggerRect.left + (triggerRect.width - ARROW_SIZE) / 2;\n const triggerCenterY = triggerRect.top + (triggerRect.height - ARROW_SIZE) / 2;\n \n // 计算箭头相对于 tooltip 内容的位置\n const tooltipAbsoluteLeft = tooltipLeft - scrollX;\n const tooltipAbsoluteTop = tooltipTop - scrollY;\n \n switch (position) {\n case \"top\":\n return {\n bottom: -ARROW_SIZE,\n left: Math.min(Math.max(triggerCenterX - tooltipAbsoluteLeft, ARROW_SIZE), tooltipRect.width - ARROW_SIZE),\n };\n case \"bottom\":\n return {\n top: -ARROW_SIZE,\n left: Math.min(Math.max(triggerCenterX - tooltipAbsoluteLeft, ARROW_SIZE), tooltipRect.width - ARROW_SIZE),\n };\n case \"left\":\n return {\n right: -ARROW_SIZE,\n top: Math.min(Math.max(triggerCenterY - tooltipAbsoluteTop, ARROW_SIZE), tooltipRect.height - ARROW_SIZE),\n };\n case \"right\":\n return {\n left: -ARROW_SIZE,\n top: Math.min(Math.max(triggerCenterY - tooltipAbsoluteTop, ARROW_SIZE), tooltipRect.height - ARROW_SIZE),\n };\n case \"top-left\":\n return {\n bottom: -ARROW_SIZE,\n left: 12,\n };\n case \"top-right\":\n return {\n bottom: -ARROW_SIZE,\n right: 12,\n };\n case \"bottom-left\":\n return {\n top: -ARROW_SIZE,\n left: 12,\n };\n case \"bottom-right\":\n return {\n top: -ARROW_SIZE,\n right: 12,\n };\n default:\n return {};\n }\n};\n\n// 计算 tooltip 位置\nconst calculatePosition = (\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n position: TooltipPosition,\n gap: number = GAP_DEFAULT\n): { top: number; left: number } => {\n const scrollX = window.scrollX || window.pageXOffset;\n const scrollY = window.scrollY || window.pageYOffset;\n \n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n \n // 考虑箭头的高度\n const arrowOffset = ARROW_SIZE;\n const totalGap = gap + arrowOffset;\n \n let top = 0;\n let left = 0;\n \n switch (position) {\n case \"top\":\n top = triggerRect.top - tooltipRect.height - totalGap + scrollY;\n left = triggerCenterX - tooltipRect.width / 2 + scrollX;\n break;\n case \"bottom\":\n top = triggerRect.bottom + totalGap + scrollY;\n left = triggerCenterX - tooltipRect.width / 2 + scrollX;\n break;\n case \"left\":\n top = triggerCenterY - tooltipRect.height / 2 + scrollY;\n left = triggerRect.left - tooltipRect.width - totalGap + scrollX;\n break;\n case \"right\":\n top = triggerCenterY - tooltipRect.height / 2 + scrollY;\n left = triggerRect.right + totalGap + scrollX;\n break;\n case \"top-left\":\n top = triggerRect.top - tooltipRect.height - totalGap + scrollY;\n left = triggerRect.left + scrollX;\n break;\n case \"top-right\":\n top = triggerRect.top - tooltipRect.height - totalGap + scrollY;\n left = triggerRect.right - tooltipRect.width + scrollX;\n break;\n case \"bottom-left\":\n top = triggerRect.bottom + totalGap + scrollY;\n left = triggerRect.left + scrollX;\n break;\n case \"bottom-right\":\n top = triggerRect.bottom + totalGap + scrollY;\n left = triggerRect.right - tooltipRect.width + scrollX;\n break;\n default:\n top = triggerRect.bottom + totalGap + scrollY;\n left = triggerCenterX - tooltipRect.width / 2 + scrollX;\n }\n \n // 边界检测,确保 tooltip 不会超出视口\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const padding = 8;\n \n if (left < scrollX + padding) {\n left = scrollX + padding;\n } else if (left + tooltipRect.width > scrollX + viewportWidth - padding) {\n left = scrollX + viewportWidth - tooltipRect.width - padding;\n }\n \n if (top < scrollY + padding) {\n top = scrollY + padding;\n } else if (top + tooltipRect.height > scrollY + viewportHeight - padding) {\n top = scrollY + viewportHeight - tooltipRect.height - padding;\n }\n return { top, left };\n};\n\n// 检查指定位置是否会遮挡触发元素(使用实际计算后的位置)\nconst willOverlap = (\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n position: TooltipPosition,\n gap: number = GAP_DEFAULT\n): boolean => {\n // 使用 calculatePosition 计算实际位置(包含边界调整)\n const { top: calculatedTop, left: calculatedLeft } = calculatePosition(\n triggerRect,\n tooltipRect,\n position,\n gap\n );\n \n // 转换为视口坐标(不包含 scroll)\n const scrollX = window.scrollX || window.pageXOffset;\n const scrollY = window.scrollY || window.pageYOffset;\n const top = calculatedTop - scrollY;\n const left = calculatedLeft - scrollX;\n \n // 检查 tooltip 和触发元素是否重叠\n const tooltipBottom = top + tooltipRect.height;\n const tooltipRight = left + tooltipRect.width;\n const tooltipTop = top;\n const tooltipLeft = left;\n \n // 计算重叠区域\n const overlapTop = Math.max(tooltipTop, triggerRect.top);\n const overlapBottom = Math.min(tooltipBottom, triggerRect.bottom);\n const overlapLeft = Math.max(tooltipLeft, triggerRect.left);\n const overlapRight = Math.min(tooltipRight, triggerRect.right);\n \n // 如果有重叠,返回 true\n return overlapBottom > overlapTop + 1 && overlapRight > overlapLeft + 1;\n};\n\n// 自动选择最佳位置:灵活尝试多个方向\nconst getAutoPosition = (\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n preferredPosition: TooltipPosition,\n gap: number = GAP_DEFAULT\n): TooltipPosition => {\n // 如果不会遮挡,直接返回指定位置\n if (!willOverlap(triggerRect, tooltipRect, preferredPosition, gap)) {\n return preferredPosition;\n }\n \n // 定义位置优先级列表\n const getPositionCandidates = (pos: TooltipPosition): TooltipPosition[] => {\n switch (pos) {\n case \"top\":\n return [\"bottom\", \"right\", \"left\"];\n case \"bottom\":\n return [\"top\", \"right\", \"left\"];\n case \"left\":\n return [\"right\", \"top\", \"bottom\"];\n case \"right\":\n return [\"left\", \"top\", \"bottom\"];\n case \"top-left\":\n return [\"bottom-left\", \"top-right\", \"bottom-right\", \"right\", \"left\"];\n case \"top-right\":\n return [\"bottom-right\", \"top-left\", \"bottom-left\", \"left\", \"right\"];\n case \"bottom-left\":\n return [\"top-left\", \"bottom-right\", \"top-right\", \"right\", \"left\"];\n case \"bottom-right\":\n return [\"top-right\", \"bottom-left\", \"top-left\", \"left\", \"right\"];\n default:\n return [];\n }\n };\n \n // 尝试候选位置,找到第一个不遮挡的\n const candidates = getPositionCandidates(preferredPosition);\n for (const candidate of candidates) {\n if (!willOverlap(triggerRect, tooltipRect, candidate, gap)) {\n return candidate;\n }\n }\n \n // 如果所有位置都遮挡,返回首选位置(至少保证功能可用)\n return preferredPosition;\n};\n\n// 渲染箭头\nconst renderArrow = (\n position: TooltipPosition,\n arrowStyle: React.CSSProperties\n) => {\n const baseArrowStyle: React.CSSProperties = {\n position: \"absolute\",\n width: 0,\n height: 0,\n borderStyle: \"solid\" as const,\n ...arrowStyle,\n };\n\n const arrowStyles: Record<TooltipPosition, React.CSSProperties> = {\n top: {\n ...baseArrowStyle,\n borderWidth: `${ARROW_SIZE}px ${ARROW_SIZE}px 0 ${ARROW_SIZE}px`,\n borderColor: \"#0C0A09 transparent transparent transparent\",\n },\n bottom: {\n ...baseArrowStyle,\n borderWidth: `0 ${ARROW_SIZE}px ${ARROW_SIZE}px ${ARROW_SIZE}px`,\n borderColor: \"transparent transparent #0C0A09 transparent\",\n },\n left: {\n ...baseArrowStyle,\n borderWidth: `${ARROW_SIZE}px 0 ${ARROW_SIZE}px ${ARROW_SIZE}px`,\n borderColor: \"transparent transparent transparent #0C0A09\",\n },\n right: {\n ...baseArrowStyle,\n borderWidth: `${ARROW_SIZE}px ${ARROW_SIZE}px ${ARROW_SIZE}px 0`,\n borderColor: \"transparent #0C0A09 transparent transparent\",\n },\n \"top-left\": {\n ...baseArrowStyle,\n borderWidth: `${ARROW_SIZE}px ${ARROW_SIZE}px 0 ${ARROW_SIZE}px`,\n borderColor: \"#0C0A09 transparent transparent transparent\",\n },\n \"top-right\": {\n ...baseArrowStyle,\n borderWidth: `${ARROW_SIZE}px ${ARROW_SIZE}px 0 ${ARROW_SIZE}px`,\n borderColor: \"#0C0A09 transparent transparent transparent\",\n },\n \"bottom-left\": {\n ...baseArrowStyle,\n borderWidth: `0 ${ARROW_SIZE}px ${ARROW_SIZE}px ${ARROW_SIZE}px`,\n borderColor: \"transparent transparent #0C0A09 transparent\",\n },\n \"bottom-right\": {\n ...baseArrowStyle,\n borderWidth: `0 ${ARROW_SIZE}px ${ARROW_SIZE}px ${ARROW_SIZE}px`,\n borderColor: \"transparent transparent #0C0A09 transparent\",\n },\n };\n return <div style={arrowStyles[position] as any} />;\n};\n\nconst Tooltip: React.FC<TooltipProps> = ({\n content,\n children,\n position = \"top\",\n trigger = \"hover\",\n delay = 200,\n disabled = false,\n className = \"\",\n tooltipClassName = \"\",\n gap = GAP_DEFAULT,\n showArrow = true,\n width,\n defaultVisible = false,\n visible,\n onVisibleChange,\n}) => {\n // 受控或非受控模式\n const isControlled = visible !== undefined;\n const [internalVisible, setInternalVisible] = useState(defaultVisible);\n const isVisible = isControlled ? visible : internalVisible;\n \n // 初始化 isAnimating 状态:受控模式用 visible,非受控模式用 defaultVisible\n const [isAnimating, setIsAnimating] = useState(isControlled ? (visible ?? false) : defaultVisible);\n \n const setIsVisible = useCallback((newVisible: boolean) => {\n if (!isControlled) {\n setInternalVisible(newVisible);\n }\n onVisibleChange?.(newVisible);\n }, [isControlled, onVisibleChange]);\n\n // 当受控模式的 visible 改变时,同步更新 isAnimating\n useEffect(() => {\n if (isControlled) {\n if (visible) {\n // 显示时,延迟一点再开始动画\n requestAnimationFrame(() => {\n setIsAnimating(true);\n });\n } else {\n // 隐藏时,先停止动画,然后隐藏\n setIsAnimating(false);\n }\n }\n }, [isControlled, visible]);\n const [actualPosition, setActualPosition] = useState<TooltipPosition>(position);\n const [tooltipMaxWidth, setTooltipMaxWidth] = useState<string>(\"320px\");\n const [tooltipStyle, setTooltipStyle] = useState<React.CSSProperties>({\n position: \"absolute\",\n top: 0,\n left: 0,\n pointerEvents: trigger === \"hover\" ? \"auto\" : \"none\",\n });\n const [arrowStyle, setArrowStyle] = useState<React.CSSProperties>({});\n \n const triggerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n const hideTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n \n const updatePosition = useCallback(() => {\n if (!triggerRef.current || !tooltipRef.current || !isVisible) return;\n \n // 如果正在隐藏动画中,不更新位置,避免移位\n if (!isAnimating) return;\n \n const triggerRect = triggerRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n \n // 自动选择最佳位置,避免超出视口或被遮挡\n const finalPosition = getAutoPosition(triggerRect, tooltipRect, position, gap);\n setActualPosition(finalPosition);\n \n const { top, left } = calculatePosition(triggerRect, tooltipRect, finalPosition, gap);\n setTooltipStyle((prev) => ({\n ...prev,\n position: \"absolute\",\n top: `${top}px`,\n left: `${left}px`,\n // opacity 由 tooltipContainerStyle 控制,不在这里设置\n // hover 模式下允许鼠标事件,click 模式下禁用\n pointerEvents: trigger === \"hover\" ? \"auto\" : \"none\",\n zIndex: 9999,\n }));\n\n // 计算箭头位置\n if (showArrow) {\n const arrowPos = getArrowPosition(\n finalPosition,\n triggerRect,\n tooltipRect,\n left,\n top\n );\n setArrowStyle(arrowPos);\n }\n }, [isVisible, position, gap, showArrow, isAnimating, trigger]);\n \n const showTooltip = useCallback(() => {\n if (disabled) return;\n \n // 清除隐藏定时器\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n \n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n \n timeoutRef.current = setTimeout(() => {\n setIsVisible(true);\n // 触发动画\n if (!isControlled) {\n // 非受控模式下,直接设置动画状态\n requestAnimationFrame(() => {\n setIsAnimating(true);\n });\n }\n // 受控模式下,动画状态由 visible prop 变化触发的 useEffect 控制\n }, delay);\n }, [disabled, delay, setIsVisible, isControlled]);\n \n const hideTooltip = useCallback(() => {\n // 清除显示定时器\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n \n // 清除隐藏定时器\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n }\n \n if (!isControlled) {\n // 非受控模式下,先停止动画,然后隐藏\n setIsAnimating(false);\n hideTimeoutRef.current = setTimeout(() => {\n setIsVisible(false);\n hideTimeoutRef.current = null;\n }, 150);\n } else {\n // 受控模式下,直接调用 setIsVisible(会触发 onVisibleChange)\n setIsVisible(false);\n }\n }, [setIsVisible, isControlled]);\n\n // 保持 tooltip 显示(当鼠标在 tooltip 内容上时)\n const keepTooltipVisible = useCallback(() => {\n if (trigger !== \"hover\") return;\n \n // 清除隐藏定时器\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n \n // 确保 tooltip 可见\n if (!isVisible) {\n setIsVisible(true);\n requestAnimationFrame(() => {\n setIsAnimating(true);\n });\n }\n }, [trigger, isVisible]);\n\n // 点击触发工具提示(click 模式)\n const handleClick = useCallback((e: React.MouseEvent) => {\n if (disabled || trigger !== \"click\") return;\n \n e.stopPropagation();\n \n // 如果已经显示,则隐藏\n if (isVisible) {\n hideTooltip();\n } else {\n // 清除延迟定时器,立即显示(click 模式不使用延迟)\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n setIsVisible(true);\n requestAnimationFrame(() => {\n setIsAnimating(true);\n });\n }\n }, [disabled, trigger, isVisible, hideTooltip]);\n\n // 当 defaultVisible 为 true 时,确保初始位置正确计算\n useEffect(() => {\n if (defaultVisible && isVisible && isAnimating) {\n // 多次尝试更新位置,确保 DOM 已渲染\n const tryUpdatePosition = () => {\n if (triggerRef.current && tooltipRef.current) {\n updatePosition();\n } else {\n // 如果 DOM 还没准备好,再试一次\n setTimeout(() => {\n requestAnimationFrame(tryUpdatePosition);\n }, 10);\n }\n };\n \n // 延迟执行,确保 Portal 已渲染到 DOM\n setTimeout(() => {\n requestAnimationFrame(tryUpdatePosition);\n }, 0);\n }\n }, [defaultVisible, isVisible, isAnimating, updatePosition]); // 只在初始化时执行\n\n useEffect(() => {\n if (isVisible) {\n // 使用 requestAnimationFrame 确保 DOM 已更新\n requestAnimationFrame(() => {\n updatePosition();\n });\n \n // 监听滚动和窗口大小变化\n window.addEventListener(\"scroll\", updatePosition, true);\n window.addEventListener(\"resize\", updatePosition);\n \n return () => {\n window.removeEventListener(\"scroll\", updatePosition, true);\n window.removeEventListener(\"resize\", updatePosition);\n };\n }\n }, [isVisible, updatePosition]);\n\n // 点击外部区域关闭 tooltip(仅 click 模式)\n useEffect(() => {\n if (!isVisible || trigger !== \"click\") return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n triggerRef.current &&\n tooltipRef.current &&\n !triggerRef.current.contains(event.target as Node) &&\n !tooltipRef.current.contains(event.target as Node)\n ) {\n hideTooltip();\n }\n };\n\n // 使用捕获阶段确保在其他点击处理之前执行\n document.addEventListener(\"mousedown\", handleClickOutside, true);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside, true);\n };\n }, [isVisible, trigger, hideTooltip]);\n \n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n }\n };\n }, []);\n\n // Tooltip 容器样式\n const tooltipContainerStyle: React.CSSProperties = {\n position: \"absolute\",\n top: 0,\n left: 0,\n opacity: isAnimating ? 1 : 0,\n transform: isAnimating ? \"scale(1)\" : \"scale(0.95)\",\n transition: \"opacity 150ms ease-out, transform 150ms ease-out\",\n // hover 模式下允许鼠标事件,click 模式下禁用\n pointerEvents: trigger === \"hover\" ? \"auto\" : \"none\",\n zIndex: 9999,\n };\n\n // 计算 tooltip 最大宽度\n const calculateTooltipMaxWidth = useCallback((): string => {\n if (typeof window === \"undefined\") return \"320px\";\n const viewportWidth = window.innerWidth;\n // 移动端:使用 calc 确保不超出屏幕\n // 桌面端:最大宽度 320px\n return viewportWidth >= 768 ? \"320px\" : \"calc(100vw - 32px)\";\n }, []);\n\n // 更新 tooltip 最大宽度\n useEffect(() => {\n const updateMaxWidth = () => {\n setTooltipMaxWidth(calculateTooltipMaxWidth());\n };\n \n updateMaxWidth();\n window.addEventListener(\"resize\", updateMaxWidth);\n \n return () => {\n window.removeEventListener(\"resize\", updateMaxWidth);\n };\n }, [calculateTooltipMaxWidth]);\n\n // Tooltip 内容样式(符合设计系统)\n const tooltipContentStyle: React.CSSProperties = {\n backgroundColor: \"#0C0A09\",\n color: \"#FFFFFF\",\n padding: \"8px 12px\",\n borderRadius: \"6px\",\n fontSize: \"12px\",\n fontWeight: 400,\n fontFamily: \"DM Sans, sans-serif\",\n lineHeight: \"16px\",\n // 如果设置了 width,使用设置的宽度,但在移动端也要限制最大宽度;否则使用自动计算的最大宽度\n ...(width !== undefined\n ? {\n width: typeof width === \"number\" ? `${width}px` : width,\n // 移动端也要限制最大宽度,不能超出屏幕\n maxWidth: typeof window !== \"undefined\" && window.innerWidth < 768 \n ? \"calc(100vw - 32px)\" \n : undefined,\n }\n : {\n maxWidth: tooltipMaxWidth,\n width: \"max-content\",\n }),\n wordWrap: \"break-word\",\n boxShadow: \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n whiteSpace: \"pre-wrap\",\n position: \"relative\",\n boxSizing: \"border-box\",\n };\n\n const tooltipContent = (\n <div\n style={{\n ...tooltipContainerStyle,\n ...tooltipStyle,\n // 确保 hover 模式下 pointerEvents 为 auto\n pointerEvents: trigger === \"hover\" ? \"auto\" : \"none\",\n } as any}\n className={`aha-tooltip-wrapper ${tooltipClassName}`}\n onMouseEnter={trigger === \"hover\" ? keepTooltipVisible : undefined}\n onMouseLeave={trigger === \"hover\" ? hideTooltip : undefined}\n >\n <div\n ref={tooltipRef}\n className={`aha-tooltip ${tooltipClassName}`}\n style={tooltipContentStyle as any}\n role=\"tooltip\"\n >\n {content}\n </div>\n {showArrow && renderArrow(actualPosition, arrowStyle)}\n </div>\n );\n \n // 延迟隐藏(用于从触发元素移动到 tooltip 内容的过渡)\n const handleTriggerMouseLeave = useCallback(() => {\n if (trigger !== \"hover\") return;\n \n // 延迟隐藏,给用户时间移动到 tooltip 内容上\n // 如果用户在延迟期间移动到 tooltip 内容上,keepTooltipVisible 会清除这个定时器\n hideTimeoutRef.current = setTimeout(() => {\n hideTooltip();\n }, 100);\n }, [trigger, hideTooltip]);\n\n // 根据触发模式设置事件处理器\n const triggerProps = trigger === \"click\" \n ? {\n onClick: handleClick,\n }\n : {\n onMouseEnter: showTooltip,\n onMouseLeave: handleTriggerMouseLeave,\n onFocus: showTooltip,\n onBlur: hideTooltip,\n };\n\n return (\n <>\n <div\n ref={triggerRef}\n className={`aha-tooltip-trigger ${className}`}\n style={{ display: \"inline-block\", cursor: trigger === \"click\" ? \"pointer\" : \"default\" }}\n {...triggerProps}\n >\n {children}\n </div>\n {isVisible && typeof document !== \"undefined\" && createPortal(tooltipContent, document.body)}\n </>\n );\n};\n\nexport default Tooltip;"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","SuppressedError","calculatePosition","triggerRect","tooltipRect","position","gap","scrollX","window","pageXOffset","scrollY","pageYOffset","triggerCenterX","left","width","triggerCenterY","top","height","totalGap","bottom","right","viewportWidth","innerWidth","viewportHeight","innerHeight","willOverlap","_a","calculatedTop","calculatedLeft","tooltipBottom","tooltipRight","tooltipTop","tooltipLeft","overlapTop","Math","max","overlapBottom","min","overlapLeft","overlapRight","renderArrow","arrowStyle","baseArrowStyle","borderStyle","arrowStyles","borderWidth","concat","borderColor","_jsx","style","Tooltip","content","children","_b","_c","trigger","_d","delay","_e","disabled","_f","className","_g","tooltipClassName","_h","_j","showArrow","_k","defaultVisible","visible","onVisibleChange","isControlled","undefined","_l","useState","internalVisible","setInternalVisible","isVisible","_m","isAnimating","setIsAnimating","setIsVisible","useCallback","newVisible","useEffect","requestAnimationFrame","_o","actualPosition","setActualPosition","_p","tooltipMaxWidth","setTooltipMaxWidth","_q","pointerEvents","tooltipStyle","setTooltipStyle","_r","setArrowStyle","triggerRef","useRef","tooltipRef","timeoutRef","hideTimeoutRef","updatePosition","current","getBoundingClientRect","finalPosition","preferredPosition","_i","candidates_1","pos","getPositionCandidates","candidate","getAutoPosition","prev","zIndex","arrowPos","tooltipAbsoluteLeft","tooltipAbsoluteTop","getArrowPosition","showTooltip","clearTimeout","setTimeout","hideTooltip","keepTooltipVisible","handleClick","e","stopPropagation","tryUpdatePosition_1","addEventListener","removeEventListener","handleClickOutside","event","contains","target","document","tooltipContainerStyle","opacity","transform","transition","calculateTooltipMaxWidth","updateMaxWidth","tooltipContentStyle","backgroundColor","color","padding","borderRadius","fontSize","fontWeight","fontFamily","lineHeight","maxWidth","wordWrap","boxShadow","whiteSpace","boxSizing","tooltipContent","_jsxs","onMouseEnter","onMouseLeave","ref","role","handleTriggerMouseLeave","triggerProps","onClick","onFocus","onBlur","_Fragment","display","cursor","createPortal","body"],"mappings":"sLA+BO,IAAIA,EAAW,WAQlB,OAPAA,EAAWC,OAAOC,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACOJ,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAE9E,OAAON,CACV,EACMH,EAASa,MAAMC,KAAMP,UAChC,EAgSkD,mBAApBQ,iBAAiCA,gBCzR/D,IAqEMC,EAAoB,SACxBC,EACAC,EACAC,EACAC,QAAA,IAAAA,IAAAA,EAvEkB,GAyElB,IAAMC,EAAUC,OAAOD,SAAWC,OAAOC,YACnCC,EAAUF,OAAOE,SAAWF,OAAOG,YAEnCC,EAAiBT,EAAYU,KAAOV,EAAYW,MAAQ,EACxDC,EAAiBZ,EAAYa,IAAMb,EAAYc,OAAS,EAIxDC,EAAWZ,EAnFA,EAqFbU,EAAM,EACNH,EAAO,EAEX,OAAQR,GACN,IAAK,MACHW,EAAMb,EAAYa,IAAMZ,EAAYa,OAASC,EAAWR,EACxDG,EAAOD,EAAiBR,EAAYU,MAAQ,EAAIP,EAChD,MACF,IAAK,SA4BL,QACES,EAAMb,EAAYgB,OAASD,EAAWR,EACtCG,EAAOD,EAAiBR,EAAYU,MAAQ,EAAIP,QA1BlD,IAAK,OACHS,EAAMD,EAAiBX,EAAYa,OAAS,EAAIP,EAChDG,EAAOV,EAAYU,KAAOT,EAAYU,MAAQI,EAAWX,EACzD,MACF,IAAK,QACHS,EAAMD,EAAiBX,EAAYa,OAAS,EAAIP,EAChDG,EAAOV,EAAYiB,MAAQF,EAAWX,EACtC,MACF,IAAK,WACHS,EAAMb,EAAYa,IAAMZ,EAAYa,OAASC,EAAWR,EACxDG,EAAOV,EAAYU,KAAON,EAC1B,MACF,IAAK,YACHS,EAAMb,EAAYa,IAAMZ,EAAYa,OAASC,EAAWR,EACxDG,EAAOV,EAAYiB,MAAQhB,EAAYU,MAAQP,EAC/C,MACF,IAAK,cACHS,EAAMb,EAAYgB,OAASD,EAAWR,EACtCG,EAAOV,EAAYU,KAAON,EAC1B,MACF,IAAK,eACHS,EAAMb,EAAYgB,OAASD,EAAWR,EACtCG,EAAOV,EAAYiB,MAAQhB,EAAYU,MAAQP,EAQnD,IAAMc,EAAgBb,OAAOc,WACvBC,EAAiBf,OAAOgB,YAc9B,OAXIX,EAAON,EAFK,EAGdM,EAAON,EAHO,EAILM,EAAOT,EAAYU,MAAQP,EAAUc,EAJhC,IAKdR,EAAON,EAAUc,EAAgBjB,EAAYU,MAL/B,GAQZE,EAAMN,EARM,EASdM,EAAMN,EATQ,EAULM,EAAMZ,EAAYa,OAASP,EAAUa,EAVhC,IAWdP,EAAMN,EAAUa,EAAiBnB,EAAYa,OAX/B,GAaT,CAAED,IAAGA,EAAEH,KAAIA,EACpB,EAGMY,EAAc,SAClBtB,EACAC,EACAC,EACAC,QAAA,IAAAA,IAAAA,EApJkB,GAuJZ,IAAAoB,EAA+CxB,EACnDC,EACAC,EACAC,EACAC,GAJWqB,QAAqBC,SAQ5BrB,EAAUC,OAAOD,SAAWC,OAAOC,YAEnCO,EAAMW,GADInB,OAAOE,SAAWF,OAAOG,aAEnCE,EAAOe,EAAiBrB,EAGxBsB,EAAgBb,EAAMZ,EAAYa,OAClCa,EAAejB,EAAOT,EAAYU,MAClCiB,EAAaf,EACbgB,EAAcnB,EAGdoB,EAAaC,KAAKC,IAAIJ,EAAY5B,EAAYa,KAC9CoB,EAAgBF,KAAKG,IAAIR,EAAe1B,EAAYgB,QACpDmB,EAAcJ,KAAKC,IAAIH,EAAa7B,EAAYU,MAChD0B,EAAeL,KAAKG,IAAIP,EAAc3B,EAAYiB,OAGxD,OAAOgB,EAAgBH,EAAa,GAAKM,EAAeD,EAAc,CACxE,EAmDME,EAAc,SAClBnC,EACAoC,GAEA,IAAMC,KACJrC,SAAU,WACVS,MAAO,EACPG,OAAQ,EACR0B,YAAa,SACVF,GAGCG,EAA4D,CAChE5B,WACK0B,GAAc,CACjBG,YAAa,UAtPA,EAsPa,OAAAC,OAtPb,EAsP6B,SAAAA,OAtP7B,EAsPmD,MAChEC,YAAa,gDAEf5B,cACKuB,GAAc,CACjBG,YAAa,YA3PA,EA2Pe,OAAAC,OA3Pf,EA2P+B,OAAAA,OA3P/B,EA2PmD,MAChEC,YAAa,gDAEflC,YACK6B,GAAc,CACjBG,YAAa,UAhQA,EAgQa,SAAAC,OAhQb,EAgQ+B,OAAAA,OAhQ/B,EAgQmD,MAChEC,YAAa,gDAEf3B,aACKsB,GAAc,CACjBG,YAAa,UArQA,EAqQa,OAAAC,OArQb,EAqQ6B,OAAAA,OArQ7B,EAqQmD,QAChEC,YAAa,gDAEf,kBACKL,GAAc,CACjBG,YAAa,UA1QA,EA0Qa,OAAAC,OA1Qb,EA0Q6B,SAAAA,OA1Q7B,EA0QmD,MAChEC,YAAa,gDAEf,mBACKL,GAAc,CACjBG,YAAa,UA/QA,EA+Qa,OAAAC,OA/Qb,EA+Q6B,SAAAA,OA/Q7B,EA+QmD,MAChEC,YAAa,gDAEf,qBACKL,GAAc,CACjBG,YAAa,YApRA,EAoRe,OAAAC,OApRf,EAoR+B,OAAAA,OApR/B,EAoRmD,MAChEC,YAAa,gDAEf,sBACKL,GAAc,CACjBG,YAAa,YAzRA,EAyRe,OAAAC,OAzRf,EAyR+B,OAAAA,OAzR/B,EAyRmD,MAChEC,YAAa,iDAGjB,OAAOC,EAAA,MAAA,CAAKC,MAAOL,EAAYvC,IACjC,EAEM6C,EAAkC,SAACxB,GACvC,IAAAyB,EAAOzB,EAAAyB,QACPC,EAAQ1B,EAAA0B,SACRC,EAAgB3B,EAAArB,SAAhBA,OAAQ,IAAAgD,EAAG,MAAKA,EAChBC,EAAiB5B,EAAA6B,QAAjBA,OAAU,IAAAD,EAAA,QAAOA,EACjBE,UAAAC,OAAQ,IAAAD,EAAA,MACRE,EAAAhC,EAAAiC,SAAAA,cAAgBD,EAChBE,EAAAlC,EAAAmC,UAAAA,OAAS,IAAAD,EAAG,GAAEA,EACdE,EAAqBpC,EAAAqC,iBAArBA,OAAgB,IAAAD,EAAG,GAAEA,EACrBE,EAAiBtC,EAAApB,IAAjBA,OAAM,IAAA0D,EAvSY,EAuSDA,EACjBC,cAAAC,OAAY,IAAAD,KACZnD,EAAKY,EAAAZ,MACLqD,mBAAAC,OAAiB,IAAAD,KACjBE,EAAO3C,EAAA2C,QACPC,EAAe5C,EAAA4C,gBAGTC,OAA2BC,IAAZH,EACfI,EAAwCC,EAASN,GAAhDO,EAAeF,EAAA,GAAEG,EAAkBH,EAAA,GACpCI,EAAYN,EAAeF,EAAUM,EAGrCG,EAAgCJ,EAASH,EAAgBF,SAAAA,EAAoBD,GAA5EW,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAE5BG,EAAeC,EAAY,SAACC,GAC3BZ,GACHK,EAAmBO,GAErBb,SAAAA,EAAkBa,EACpB,EAAG,CAACZ,EAAcD,IAGlBc,EAAU,WACJb,IACEF,EAEFgB,sBAAsB,WACpBL,GAAe,EACjB,GAGAA,GAAe,GAGrB,EAAG,CAACT,EAAcF,IACZ,IAAAiB,EAAsCZ,EAA0BrE,GAA/DkF,EAAcD,EAAA,GAAEE,EAAiBF,EAAA,GAClCG,EAAwCf,EAAiB,SAAxDgB,EAAeD,EAAA,GAAEE,EAAkBF,EAAA,GACpCG,EAAkClB,EAA8B,CACpErE,SAAU,WACVW,IAAK,EACLH,KAAM,EACNgF,cAA2B,UAAZtC,EAAsB,OAAS,SAJzCuC,EAAYF,EAAA,GAAEG,OAMfC,GAA8BtB,EAA8B,CAAE,GAA7DjC,GAAUuD,GAAA,GAAEC,GAAaD,GAAA,GAE1BE,GAAaC,EAAuB,MACpCC,GAAaD,EAAuB,MACpCE,GAAaF,EAA8B,MAC3CG,GAAiBH,EAA8B,MAE/CI,GAAiBrB,EAAY,WACjC,GAAKgB,GAAWM,SAAYJ,GAAWI,SAAY3B,GAG9CE,EAAL,CAEA,IAAM5E,EAAc+F,GAAWM,QAAQC,wBACjCrG,EAAcgG,GAAWI,QAAQC,wBAGjCC,EA/Kc,SACtBvG,EACAC,EACAuG,EACArG,GAGA,QAHA,IAAAA,IAAAA,EAzLkB,IA4LbmB,EAAYtB,EAAaC,EAAauG,EAAmBrG,GAC5D,OAAOqG,EA6BT,IAzBA,IAyBwBC,EAAA,EAAAC,EAzBM,SAACC,GAC7B,OAAQA,GACN,IAAK,MACH,MAAO,CAAC,SAAU,QAAS,QAC7B,IAAK,SACH,MAAO,CAAC,MAAO,QAAS,QAC1B,IAAK,OACH,MAAO,CAAC,QAAS,MAAO,UAC1B,IAAK,QACH,MAAO,CAAC,OAAQ,MAAO,UACzB,IAAK,WACH,MAAO,CAAC,cAAe,YAAa,eAAgB,QAAS,QAC/D,IAAK,YACH,MAAO,CAAC,eAAgB,WAAY,cAAe,OAAQ,SAC7D,IAAK,cACH,MAAO,CAAC,WAAY,eAAgB,YAAa,QAAS,QAC5D,IAAK,eACH,MAAO,CAAC,YAAa,cAAe,WAAY,OAAQ,SAC1D,QACE,MAAO,GAEb,CAGmBC,CAAsBJ,GACjBC,WAAAA,IAAY,CAA/B,IAAMI,EAASH,EAAAD,GAClB,IAAKnF,EAAYtB,EAAaC,EAAa4G,EAAW1G,GACpD,OAAO0G,CAEV,CAGD,OAAOL,CACT,CAkI0BM,CAAgB9G,EAAaC,EAAaC,EAAUC,GAC1EkF,EAAkBkB,GAEZ,IAAAhF,EAAgBxB,EAAkBC,EAAaC,EAAasG,EAAepG,GAAzEU,QAAKH,SAab,GAZAkF,EAAgB,SAACmB,GAAS,OACrBhI,EAAAA,EAAA,GAAAgI,GACH,CAAA7G,SAAU,WACVW,IAAK,UAAGA,EAAG,MACXH,KAAM,GAAGiC,OAAAjC,EAAQ,MAGjBgF,cAA2B,UAAZtC,EAAsB,OAAS,OAC9C4D,OAAQ,MARgB,GAYtBjD,EAAW,CACb,IAAMkD,EAlXa,SACvB/G,EACAF,EACAC,EACA4B,EACAD,GAEA,IAAMxB,EAAUC,OAAOD,SAAWC,OAAOC,YACnCC,EAAUF,OAAOE,SAAWF,OAAOG,YAEnCC,EAAiBT,EAAYU,MAAQV,EAAYW,MAftC,GAe4D,EACvEC,EAAiBZ,EAAYa,KAAOb,EAAYc,OAhBrC,GAgB4D,EAGvEoG,EAAsBrF,EAAczB,EACpC+G,EAAqBvF,EAAarB,EAExC,OAAQL,GACN,IAAK,MACH,MAAO,CACLc,QAzBW,EA0BXN,KAAMqB,KAAKG,IAAIH,KAAKC,IAAIvB,EAAiByG,EA1B9B,GA0BgEjH,EAAYU,MA1B5E,IA4Bf,IAAK,SACH,MAAO,CACLE,KA9BW,EA+BXH,KAAMqB,KAAKG,IAAIH,KAAKC,IAAIvB,EAAiByG,EA/B9B,GA+BgEjH,EAAYU,MA/B5E,IAiCf,IAAK,OACH,MAAO,CACLM,OAnCW,EAoCXJ,IAAKkB,KAAKG,IAAIH,KAAKC,IAAIpB,EAAiBuG,EApC7B,GAoC8DlH,EAAYa,OApC1E,IAsCf,IAAK,QACH,MAAO,CACLJ,MAxCW,EAyCXG,IAAKkB,KAAKG,IAAIH,KAAKC,IAAIpB,EAAiBuG,EAzC7B,GAyC8DlH,EAAYa,OAzC1E,IA2Cf,IAAK,WACH,MAAO,CACLE,QA7CW,EA8CXN,KAAM,IAEV,IAAK,YACH,MAAO,CACLM,QAlDW,EAmDXC,MAAO,IAEX,IAAK,cACH,MAAO,CACLJ,KAvDW,EAwDXH,KAAM,IAEV,IAAK,eACH,MAAO,CACLG,KA5DW,EA6DXI,MAAO,IAEX,QACE,MAAO,GAEb,CAqTuBmG,CACfb,EACAvG,EACAC,EACAS,EACAG,GAEFiF,GAAcmB,EACf,CA/BwB,CAgC3B,EAAG,CAACvC,EAAWxE,EAAUC,EAAK4D,EAAWa,EAAaxB,IAEhDiE,GAActC,EAAY,WAC1BvB,IAGA2C,GAAeE,UACjBiB,aAAanB,GAAeE,SAC5BF,GAAeE,QAAU,MAGvBH,GAAWG,SACbiB,aAAapB,GAAWG,SAG1BH,GAAWG,QAAUkB,WAAW,WAC9BzC,GAAa,GAERV,GAEHc,sBAAsB,WACpBL,GAAe,EACjB,EAGH,EAAEvB,GACJ,EAAE,CAACE,EAAUF,EAAOwB,EAAcV,IAE7BoD,GAAczC,EAAY,WAE1BmB,GAAWG,UACbiB,aAAapB,GAAWG,SACxBH,GAAWG,QAAU,MAInBF,GAAeE,SACjBiB,aAAanB,GAAeE,SAGzBjC,EASHU,GAAa,IAPbD,GAAe,GACfsB,GAAeE,QAAUkB,WAAW,WAClCzC,GAAa,GACbqB,GAAeE,QAAU,IAC1B,EAAE,KAKP,EAAG,CAACvB,EAAcV,IAGZqD,GAAqB1C,EAAY,WACrB,UAAZ3B,IAGA+C,GAAeE,UACjBiB,aAAanB,GAAeE,SAC5BF,GAAeE,QAAU,MAItB3B,IACHI,GAAa,GACbI,sBAAsB,WACpBL,GAAe,EACjB,IAEJ,EAAG,CAACzB,EAASsB,IAGPgD,GAAc3C,EAAY,SAAC4C,GAC3BnE,GAAwB,UAAZJ,IAEhBuE,EAAEC,kBAGElD,EACF8C,MAGItB,GAAWG,UACbiB,aAAapB,GAAWG,SACxBH,GAAWG,QAAU,MAEvBvB,GAAa,GACbI,sBAAsB,WACpBL,GAAe,EACjB,IAEH,EAAE,CAACrB,EAAUJ,EAASsB,EAAW8C,KAGlCvC,EAAU,WACR,GAAIhB,GAAkBS,GAAaE,EAAa,CAE9C,IAAMiD,EAAoB,WACpB9B,GAAWM,SAAWJ,GAAWI,QACnCD,KAGAmB,WAAW,WACTrC,sBAAsB2C,EACvB,EAAE,GAEP,EAGAN,WAAW,WACTrC,sBAAsB2C,EACvB,EAAE,EACJ,CACF,EAAE,CAAC5D,EAAgBS,EAAWE,EAAawB,KAE5CnB,EAAU,WACR,GAAIP,EAUF,OARAQ,sBAAsB,WACpBkB,IACF,GAGA/F,OAAOyH,iBAAiB,SAAU1B,IAAgB,GAClD/F,OAAOyH,iBAAiB,SAAU1B,IAE3B,WACL/F,OAAO0H,oBAAoB,SAAU3B,IAAgB,GACrD/F,OAAO0H,oBAAoB,SAAU3B,GACvC,CAEJ,EAAG,CAAC1B,EAAW0B,KAGfnB,EAAU,WACR,GAAKP,GAAyB,UAAZtB,EAAlB,CAEA,IAAM4E,EAAqB,SAACC,GAExBlC,GAAWM,SACXJ,GAAWI,UACVN,GAAWM,QAAQ6B,SAASD,EAAME,UAClClC,GAAWI,QAAQ6B,SAASD,EAAME,SAEnCX,IAEJ,EAKA,OAFAY,SAASN,iBAAiB,YAAaE,GAAoB,GAEpD,WACLI,SAASL,oBAAoB,YAAaC,GAAoB,EAChE,CAlB8C,CAmB/C,EAAE,CAACtD,EAAWtB,EAASoE,KAExBvC,EAAU,WACR,OAAO,WACDiB,GAAWG,SACbiB,aAAapB,GAAWG,SAEtBF,GAAeE,SACjBiB,aAAanB,GAAeE,QAEhC,CACD,EAAE,IAGH,IAAMgC,GAA6C,CACjDnI,SAAU,WACVW,IAAK,EACLH,KAAM,EACN4H,QAAS1D,EAAc,EAAI,EAC3B2D,UAAW3D,EAAc,WAAa,cACtC4D,WAAY,mDAEZ9C,cAA2B,UAAZtC,EAAsB,OAAS,OAC9C4D,OAAQ,MAIJyB,GAA2B1D,EAAY,WAC3C,MAAsB,oBAAX1E,QACWA,OAAOc,YAGL,IAJkB,QAIF,oBACzC,EAAE,IAGH8D,EAAU,WACR,IAAMyD,EAAiB,WACrBlD,EAAmBiD,KACrB,EAKA,OAHAC,IACArI,OAAOyH,iBAAiB,SAAUY,GAE3B,WACLrI,OAAO0H,oBAAoB,SAAUW,EACvC,CACF,EAAG,CAACD,KAGJ,IAAME,GACJ5J,EAAAA,EAAA,CAAA6J,gBAAiB,UACjBC,MAAO,UACPC,QAAS,WACTC,aAAc,MACdC,SAAU,OACVC,WAAY,IACZC,WAAY,sBACZC,WAAY,aAEE9E,IAAV1D,EACA,CACEA,MAAwB,iBAAVA,EAAqB,GAAAgC,OAAGhC,EAAK,MAAOA,EAElDyI,SAA4B,oBAAX/I,QAA0BA,OAAOc,WAAa,IAC3D,0BACAkD,GAEN,CACE+E,SAAU7D,EACV5E,MAAO,gBACP,CACN0I,SAAU,aACVC,UAAW,wEACXC,WAAY,WACZrJ,SAAU,WACVsJ,UAAW,eAGPC,GACJC,EAAA,MAAA,CACE5G,MAAO/D,EAAAA,EAAAA,EAAA,CAAA,EACFsJ,IACA1C,GAAY,CAEfD,cAA2B,UAAZtC,EAAsB,OAAS,SAEhDM,UAAW,8BAAuBE,GAClC+F,aAA0B,UAAZvG,EAAsBqE,QAAqBpD,EACzDuF,aAA0B,UAAZxG,EAAsBoE,QAAcnD,YAElDxB,EACE,MAAA,CAAAgH,IAAK5D,GACLvC,UAAW,sBAAeE,GAC1Bd,MAAO6F,GACPmB,KAAK,UAEJ7G,SAAAD,IAEFe,GAAa1B,EAAY+C,EAAgB9C,OAKxCyH,GAA0BhF,EAAY,WAC1B,UAAZ3B,IAIJ+C,GAAeE,QAAUkB,WAAW,WAClCC,IACD,EAAE,KACL,EAAG,CAACpE,EAASoE,KAGPwC,GAA2B,UAAZ5G,EACjB,CACE6G,QAASvC,IAEX,CACEiC,aAActC,GACduC,aAAcG,GACdG,QAAS7C,GACT8C,OAAQ3C,IAGd,OACEkC,EACEU,EAAA,CAAAnH,SAAA,CAAAJ,EAAA,MAAA9D,EAAA,CACE8K,IAAK9D,GACLrC,UAAW,uBAAuBf,OAAAe,GAClCZ,MAAO,CAAEuH,QAAS,eAAgBC,OAAoB,UAAZlH,EAAsB,UAAY,YACxE4G,GAAY,CAAA/G,SAEfA,KAEFyB,GAAiC,oBAAb0D,UAA4BmC,EAAad,GAAgBrB,SAASoC,QAG7F","x_google_ignoreList":[0]}
|
package/dist/Tooltip.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react/jsx-runtime"),e=require("react"),r=require("react-dom"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react/jsx-runtime"),e=require("react"),r=require("react-dom"),n=function(){return n=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var o in e=arguments[r])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},n.apply(this,arguments)};"function"==typeof SuppressedError&&SuppressedError;var o=function(t,e,r,n){void 0===n&&(n=6);var o=window.scrollX||window.pageXOffset,i=window.scrollY||window.pageYOffset,a=t.left+t.width/2,c=t.top+t.height/2,u=n+6,s=0,l=0;switch(r){case"top":s=t.top-e.height-u+i,l=a-e.width/2+o;break;case"bottom":default:s=t.bottom+u+i,l=a-e.width/2+o;break;case"left":s=c-e.height/2+i,l=t.left-e.width-u+o;break;case"right":s=c-e.height/2+i,l=t.right+u+o;break;case"top-left":s=t.top-e.height-u+i,l=t.left+o;break;case"top-right":s=t.top-e.height-u+i,l=t.right-e.width+o;break;case"bottom-left":s=t.bottom+u+i,l=t.left+o;break;case"bottom-right":s=t.bottom+u+i,l=t.right-e.width+o}var p=window.innerWidth,d=window.innerHeight;return l<o+8?l=o+8:l+e.width>o+p-8&&(l=o+p-e.width-8),s<i+8?s=i+8:s+e.height>i+d-8&&(s=i+d-e.height-8),{top:s,left:l}},i=function(t,e,r,n){void 0===n&&(n=6);var i=o(t,e,r,n),a=i.top,c=i.left,u=window.scrollX||window.pageXOffset,s=a-(window.scrollY||window.pageYOffset),l=c-u,p=s+e.height,d=l+e.width,f=s,h=l,m=Math.max(f,t.top),b=Math.min(p,t.bottom),w=Math.max(h,t.left),g=Math.min(d,t.right);return b>m+1&&g>w+1},a=function(e,r){var o=n({position:"absolute",width:0,height:0,borderStyle:"solid"},r),i={top:n(n({},o),{borderWidth:"".concat(6,"px ").concat(6,"px 0 ").concat(6,"px"),borderColor:"#0C0A09 transparent transparent transparent"}),bottom:n(n({},o),{borderWidth:"0 ".concat(6,"px ").concat(6,"px ").concat(6,"px"),borderColor:"transparent transparent #0C0A09 transparent"}),left:n(n({},o),{borderWidth:"".concat(6,"px 0 ").concat(6,"px ").concat(6,"px"),borderColor:"transparent transparent transparent #0C0A09"}),right:n(n({},o),{borderWidth:"".concat(6,"px ").concat(6,"px ").concat(6,"px 0"),borderColor:"transparent #0C0A09 transparent transparent"}),"top-left":n(n({},o),{borderWidth:"".concat(6,"px ").concat(6,"px 0 ").concat(6,"px"),borderColor:"#0C0A09 transparent transparent transparent"}),"top-right":n(n({},o),{borderWidth:"".concat(6,"px ").concat(6,"px 0 ").concat(6,"px"),borderColor:"#0C0A09 transparent transparent transparent"}),"bottom-left":n(n({},o),{borderWidth:"0 ".concat(6,"px ").concat(6,"px ").concat(6,"px"),borderColor:"transparent transparent #0C0A09 transparent"}),"bottom-right":n(n({},o),{borderWidth:"0 ".concat(6,"px ").concat(6,"px ").concat(6,"px"),borderColor:"transparent transparent #0C0A09 transparent"})};return t.jsx("div",{style:i[e]})};exports.default=function(c){var u=c.content,s=c.children,l=c.position,p=void 0===l?"top":l,d=c.trigger,f=void 0===d?"hover":d,h=c.delay,m=void 0===h?200:h,b=c.disabled,w=void 0!==b&&b,g=c.className,v=void 0===g?"":g,x=c.tooltipClassName,C=void 0===x?"":x,k=c.gap,E=void 0===k?6:k,y=c.showArrow,M=void 0===y||y,A=c.width,F=c.defaultVisible,W=void 0!==F&&F,S=c.visible,T=c.onVisibleChange,q=void 0!==S,L=e.useState(W),O=L[0],j=L[1],z=q?S:O,R=e.useState(q?null!=S&&S:W),X=R[0],Y=R[1],N=e.useCallback(function(t){q||j(t),null==T||T(t)},[q,T]);e.useEffect(function(){q&&(S?requestAnimationFrame(function(){Y(!0)}):Y(!1))},[q,S]);var P=e.useState(p),B=P[0],H=P[1],I=e.useState("320px"),V=I[0],_=I[1],D=e.useState({position:"absolute",top:0,left:0,pointerEvents:"hover"===f?"auto":"none"}),G=D[0],J=D[1],K=e.useState({}),Q=K[0],U=K[1],Z=e.useRef(null),$=e.useRef(null),tt=e.useRef(null),et=e.useRef(null),rt=e.useCallback(function(){if(Z.current&&$.current&&z&&X){var t=Z.current.getBoundingClientRect(),e=$.current.getBoundingClientRect(),r=function(t,e,r,n){if(void 0===n&&(n=6),!i(t,e,r,n))return r;for(var o=0,a=function(t){switch(t){case"top":return["bottom","right","left"];case"bottom":return["top","right","left"];case"left":return["right","top","bottom"];case"right":return["left","top","bottom"];case"top-left":return["bottom-left","top-right","bottom-right","right","left"];case"top-right":return["bottom-right","top-left","bottom-left","left","right"];case"bottom-left":return["top-left","bottom-right","top-right","right","left"];case"bottom-right":return["top-right","bottom-left","top-left","left","right"];default:return[]}}(r);o<a.length;o++){var c=a[o];if(!i(t,e,c,n))return c}return r}(t,e,p,E);H(r);var a=o(t,e,r,E),c=a.top,u=a.left;if(J(function(t){return n(n({},t),{position:"absolute",top:"".concat(c,"px"),left:"".concat(u,"px"),pointerEvents:"hover"===f?"auto":"none",zIndex:9999})}),M){var s=function(t,e,r,n,o){var i=window.scrollX||window.pageXOffset,a=window.scrollY||window.pageYOffset,c=e.left+(e.width-6)/2,u=e.top+(e.height-6)/2,s=n-i,l=o-a;switch(t){case"top":return{bottom:-6,left:Math.min(Math.max(c-s,6),r.width-6)};case"bottom":return{top:-6,left:Math.min(Math.max(c-s,6),r.width-6)};case"left":return{right:-6,top:Math.min(Math.max(u-l,6),r.height-6)};case"right":return{left:-6,top:Math.min(Math.max(u-l,6),r.height-6)};case"top-left":return{bottom:-6,left:12};case"top-right":return{bottom:-6,right:12};case"bottom-left":return{top:-6,left:12};case"bottom-right":return{top:-6,right:12};default:return{}}}(r,t,e,u,c);U(s)}}},[z,p,E,M,X,f]),nt=e.useCallback(function(){w||(et.current&&(clearTimeout(et.current),et.current=null),tt.current&&clearTimeout(tt.current),tt.current=setTimeout(function(){N(!0),q||requestAnimationFrame(function(){Y(!0)})},m))},[w,m,N,q]),ot=e.useCallback(function(){tt.current&&(clearTimeout(tt.current),tt.current=null),et.current&&clearTimeout(et.current),q?N(!1):(Y(!1),et.current=setTimeout(function(){N(!1),et.current=null},150))},[N,q]),it=e.useCallback(function(){"hover"===f&&(et.current&&(clearTimeout(et.current),et.current=null),z||(N(!0),requestAnimationFrame(function(){Y(!0)})))},[f,z]),at=e.useCallback(function(t){w||"click"!==f||(t.stopPropagation(),z?ot():(tt.current&&(clearTimeout(tt.current),tt.current=null),N(!0),requestAnimationFrame(function(){Y(!0)})))},[w,f,z,ot]);e.useEffect(function(){if(W&&z&&X){var t=function(){Z.current&&$.current?rt():setTimeout(function(){requestAnimationFrame(t)},10)};setTimeout(function(){requestAnimationFrame(t)},0)}},[W,z,X,rt]),e.useEffect(function(){if(z)return requestAnimationFrame(function(){rt()}),window.addEventListener("scroll",rt,!0),window.addEventListener("resize",rt),function(){window.removeEventListener("scroll",rt,!0),window.removeEventListener("resize",rt)}},[z,rt]),e.useEffect(function(){if(z&&"click"===f){var t=function(t){Z.current&&$.current&&!Z.current.contains(t.target)&&!$.current.contains(t.target)&&ot()};return document.addEventListener("mousedown",t,!0),function(){document.removeEventListener("mousedown",t,!0)}}},[z,f,ot]),e.useEffect(function(){return function(){tt.current&&clearTimeout(tt.current),et.current&&clearTimeout(et.current)}},[]);var ct={position:"absolute",top:0,left:0,opacity:X?1:0,transform:X?"scale(1)":"scale(0.95)",transition:"opacity 150ms ease-out, transform 150ms ease-out",pointerEvents:"hover"===f?"auto":"none",zIndex:9999},ut=e.useCallback(function(){return"undefined"==typeof window||window.innerWidth>=768?"320px":"calc(100vw - 32px)"},[]);e.useEffect(function(){var t=function(){_(ut())};return t(),window.addEventListener("resize",t),function(){window.removeEventListener("resize",t)}},[ut]);var st=n(n({backgroundColor:"#0C0A09",color:"#FFFFFF",padding:"8px 12px",borderRadius:"6px",fontSize:"12px",fontWeight:400,fontFamily:"DM Sans, sans-serif",lineHeight:"16px"},void 0!==A?{width:"number"==typeof A?"".concat(A,"px"):A,maxWidth:"undefined"!=typeof window&&window.innerWidth<768?"calc(100vw - 32px)":void 0}:{maxWidth:V,width:"max-content"}),{wordWrap:"break-word",boxShadow:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",whiteSpace:"pre-wrap",position:"relative",boxSizing:"border-box"}),lt=t.jsxs("div",{style:n(n(n({},ct),G),{pointerEvents:"hover"===f?"auto":"none"}),className:"aha-tooltip-wrapper ".concat(C),onMouseEnter:"hover"===f?it:void 0,onMouseLeave:"hover"===f?ot:void 0,children:[t.jsx("div",{ref:$,className:"aha-tooltip ".concat(C),style:st,role:"tooltip",children:u}),M&&a(B,Q)]}),pt=e.useCallback(function(){"hover"===f&&(et.current=setTimeout(function(){ot()},100))},[f,ot]),dt="click"===f?{onClick:at}:{onMouseEnter:nt,onMouseLeave:pt,onFocus:nt,onBlur:ot};return t.jsxs(t.Fragment,{children:[t.jsx("div",n({ref:Z,className:"aha-tooltip-trigger ".concat(v),style:{display:"inline-block",cursor:"click"===f?"pointer":"default"}},dt,{children:s})),z&&"undefined"!=typeof document&&r.createPortal(lt,document.body)]})};
|
|
2
2
|
//# sourceMappingURL=Tooltip.js.map
|