aha-components 1.2.1 → 1.3.1
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/Button.esm.js +1 -1
- package/dist/Button.esm.js.map +1 -1
- package/dist/Button.js +1 -1
- package/dist/Button.js.map +1 -1
- package/dist/Checkbox.esm.js +2 -0
- package/dist/Checkbox.esm.js.map +1 -0
- package/dist/Checkbox.js +2 -0
- package/dist/Checkbox.js.map +1 -0
- package/dist/Form.esm.js +2 -0
- package/dist/Form.esm.js.map +1 -0
- package/dist/Form.js +2 -0
- package/dist/Form.js.map +1 -0
- package/dist/Input.esm.js +1 -1
- package/dist/Input.esm.js.map +1 -1
- package/dist/Input.js +1 -1
- package/dist/Input.js.map +1 -1
- package/dist/MenuList.esm.js +2 -0
- package/dist/MenuList.esm.js.map +1 -0
- package/dist/MenuList.js +2 -0
- package/dist/MenuList.js.map +1 -0
- package/dist/Pagination.esm.js +2 -0
- package/dist/Pagination.esm.js.map +1 -0
- package/dist/Pagination.js +2 -0
- package/dist/Pagination.js.map +1 -0
- package/dist/Progress.esm.js +2 -0
- package/dist/Progress.esm.js.map +1 -0
- package/dist/Progress.js +2 -0
- package/dist/Progress.js.map +1 -0
- package/dist/Radio.esm.js +2 -0
- package/dist/Radio.esm.js.map +1 -0
- package/dist/Radio.js +2 -0
- package/dist/Radio.js.map +1 -0
- package/dist/Select.esm.js +2 -0
- package/dist/Select.esm.js.map +1 -0
- package/dist/Select.js +2 -0
- package/dist/Select.js.map +1 -0
- package/dist/Switch.esm.js +2 -0
- package/dist/Switch.esm.js.map +1 -0
- package/dist/Switch.js +2 -0
- package/dist/Switch.js.map +1 -0
- package/dist/Tab.esm.js +2 -0
- package/dist/Tab.esm.js.map +1 -0
- package/dist/Tab.js +2 -0
- package/dist/Tab.js.map +1 -0
- package/dist/Table.esm.js +2 -0
- package/dist/Table.esm.js.map +1 -0
- package/dist/Table.js +2 -0
- package/dist/Table.js.map +1 -0
- package/dist/Tag.esm.js +1 -1
- package/dist/Tag.esm.js.map +1 -1
- package/dist/Tag.js +1 -1
- package/dist/Tag.js.map +1 -1
- package/dist/Textarea.esm.js +2 -0
- package/dist/Textarea.esm.js.map +1 -0
- package/dist/Textarea.js +2 -0
- package/dist/Textarea.js.map +1 -0
- package/dist/Tooltip.esm.js +2 -0
- package/dist/Tooltip.esm.js.map +1 -0
- package/dist/Tooltip.js +2 -0
- package/dist/Tooltip.js.map +1 -0
- package/dist/components/Button/Button.stories.d.ts +8 -7
- package/dist/components/Button/index.d.ts +20 -5
- package/dist/components/Checkbox/Checkbox.stories.d.ts +12 -0
- package/dist/components/Checkbox/index.d.ts +12 -0
- package/dist/components/Form/Form.stories.d.ts +15 -0
- package/dist/components/Form/FormContext.d.ts +34 -0
- package/dist/components/Form/FormItem.d.ts +58 -0
- package/dist/components/Form/index.d.ts +57 -0
- package/dist/components/Input/Input.stories.d.ts +16 -0
- package/dist/components/Input/index.d.ts +36 -9
- package/dist/components/MenuList/MenuList.stories.d.ts +15 -0
- package/dist/components/MenuList/MenuList.test.d.ts +1 -0
- package/dist/components/MenuList/index.d.ts +76 -0
- package/dist/components/Pagination/Pagination.stories.d.ts +16 -0
- package/dist/components/Pagination/index.d.ts +27 -0
- package/dist/components/Progress/Progress.stories.d.ts +18 -0
- package/dist/components/Progress/Progress.test.d.ts +1 -0
- package/dist/components/Progress/index.d.ts +33 -0
- package/dist/components/Radio/Radio.stories.d.ts +10 -0
- package/dist/components/Radio/index.d.ts +13 -0
- package/dist/components/Select/Select.stories.d.ts +17 -0
- package/dist/components/Select/index.d.ts +74 -0
- package/dist/components/Switch/Switch.stories.d.ts +14 -0
- package/dist/components/Switch/index.d.ts +27 -0
- package/dist/components/Tab/Tab.stories.d.ts +15 -0
- package/dist/components/Tab/index.d.ts +25 -0
- package/dist/components/Table/Table.stories.d.ts +16 -0
- package/dist/components/Table/index.d.ts +166 -0
- package/dist/components/Tag/Tag.stories.d.ts +1 -0
- package/dist/components/Tag/index.d.ts +1 -1
- package/dist/components/Textarea/Textarea.stories.d.ts +15 -0
- package/dist/components/Textarea/index.d.ts +38 -0
- package/dist/components/Tooltip/Tooltip.stories.d.ts +18 -0
- package/dist/components/Tooltip/index.d.ts +27 -0
- package/dist/icons/index.d.ts +33 -0
- package/dist/index.d.ts +696 -7
- 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/dist/theme/Theme.stories.d.ts +10 -0
- package/dist/theme/ThemeContext.d.ts +11 -0
- package/dist/theme/utils.d.ts +10 -0
- package/package.json +28 -24
|
@@ -0,0 +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}\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// 计算指定位置的空间可用性得分(分数越高,空间越充足)\nconst getPositionScore = (\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n position: TooltipPosition,\n gap: number = GAP_DEFAULT\n): number => {\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const padding = 8;\n \n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n const arrowOffset = ARROW_SIZE;\n const totalGap = gap + arrowOffset;\n \n // 计算该位置下的 tooltip 在视口中的坐标(相对于视口,不包含 scroll)\n let top = 0;\n let left = 0;\n \n switch (position) {\n case \"top\":\n top = triggerRect.top - tooltipRect.height - totalGap;\n left = triggerCenterX - tooltipRect.width / 2;\n break;\n case \"bottom\":\n top = triggerRect.bottom + totalGap;\n left = triggerCenterX - tooltipRect.width / 2;\n break;\n case \"left\":\n top = triggerCenterY - tooltipRect.height / 2;\n left = triggerRect.left - tooltipRect.width - totalGap;\n break;\n case \"right\":\n top = triggerCenterY - tooltipRect.height / 2;\n left = triggerRect.right + totalGap;\n break;\n case \"top-left\":\n top = triggerRect.top - tooltipRect.height - totalGap;\n left = triggerRect.left;\n break;\n case \"top-right\":\n top = triggerRect.top - tooltipRect.height - totalGap;\n left = triggerRect.right - tooltipRect.width;\n break;\n case \"bottom-left\":\n top = triggerRect.bottom + totalGap;\n left = triggerRect.left;\n break;\n case \"bottom-right\":\n top = triggerRect.bottom + totalGap;\n left = triggerRect.right - tooltipRect.width;\n break;\n default:\n return 0;\n }\n \n // 计算可用空间(相对于视口)\n const availableTop = top;\n const availableBottom = viewportHeight - (top + tooltipRect.height);\n const availableLeft = left;\n const availableRight = viewportWidth - (left + tooltipRect.width);\n \n // 如果超出视口,返回负分\n if (availableTop < padding || availableBottom < padding || \n availableLeft < padding || availableRight < padding) {\n return -1;\n }\n \n // 计算最小可用空间作为得分(确保所有方向都有足够空间)\n const minAvailable = Math.min(availableTop, availableBottom, availableLeft, availableRight);\n return minAvailable;\n};\n\n// 自动选择最佳位置\nconst getAutoPosition = (\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n preferredPosition: TooltipPosition,\n gap: number = GAP_DEFAULT\n): TooltipPosition => {\n // 基础位置列表(按优先级排序)\n const basePositions: TooltipPosition[] = [\"top\", \"bottom\", \"left\", \"right\"];\n \n // 如果首选位置是基础位置,优先尝试\n const positionsToTry: TooltipPosition[] = basePositions.includes(preferredPosition)\n ? [preferredPosition, ...basePositions.filter(p => p !== preferredPosition)]\n : [\n // 对于复合位置,尝试对应的基础位置\n preferredPosition.includes(\"top\") ? \"top\" : \"bottom\",\n preferredPosition.includes(\"bottom\") ? \"bottom\" : \"top\",\n preferredPosition.includes(\"left\") ? \"left\" : \"right\",\n preferredPosition.includes(\"right\") ? \"right\" : \"left\",\n ...basePositions.filter(p => \n !preferredPosition.includes(p.split(\"-\")[0]) && \n !preferredPosition.includes(p.split(\"-\")[1] || \"\")\n )\n ];\n \n let bestPosition = preferredPosition;\n let bestScore = getPositionScore(triggerRect, tooltipRect, preferredPosition, gap);\n \n // 如果首选位置得分小于0(超出视口),尝试其他位置\n if (bestScore < 0) {\n for (const pos of positionsToTry) {\n const score = getPositionScore(triggerRect, tooltipRect, pos, gap);\n if (score > bestScore) {\n bestScore = score;\n bestPosition = pos;\n // 如果找到完全合适的位置(得分>0),直接返回\n if (score > 0) {\n break;\n }\n }\n }\n }\n \n return bestPosition;\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 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}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [isAnimating, setIsAnimating] = useState(false);\n const [actualPosition, setActualPosition] = useState<TooltipPosition>(position);\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 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 maxWidth: \"200px\",\n minWidth: \"max-content\",\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 };\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","__spreadArray","to","from","pack","ar","l","Array","slice","concat","SuppressedError","getPositionScore","triggerRect","tooltipRect","position","gap","viewportWidth","window","innerWidth","viewportHeight","innerHeight","triggerCenterX","left","width","triggerCenterY","top","height","totalGap","bottom","right","availableTop","availableBottom","availableLeft","availableRight","Math","min","renderArrow","arrowStyle","baseArrowStyle","borderStyle","arrowStyles","borderWidth","borderColor","_jsx","style","Tooltip","_a","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","pointerEvents","tooltipStyle","setTooltipStyle","_p","setArrowStyle","triggerRef","useRef","tooltipRef","timeoutRef","hideTimeoutRef","updatePosition","useCallback","current","getBoundingClientRect","finalPosition","preferredPosition","basePositions","positionsToTry","includes","filter","split","bestPosition","bestScore","_i","positionsToTry_1","pos","score","getAutoPosition","scrollX","pageXOffset","scrollY","pageYOffset","calculatePosition","prev","zIndex","arrowPos","tooltipLeft","tooltipTop","tooltipAbsoluteLeft","tooltipAbsoluteTop","max","getArrowPosition","showTooltip","clearTimeout","setTimeout","requestAnimationFrame","hideTooltip","keepTooltipVisible","handleClick","e","stopPropagation","useEffect","addEventListener","removeEventListener","handleClickOutside","event","contains","target","document","tooltipContent","_jsxs","opacity","transform","transition","onMouseEnter","undefined","onMouseLeave","ref","backgroundColor","color","padding","borderRadius","fontSize","fontWeight","fontFamily","lineHeight","maxWidth","minWidth","wordWrap","boxShadow","whiteSpace","role","handleTriggerMouseLeave","triggerProps","onClick","onFocus","onBlur","_Fragment","display","cursor","createPortal","body"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/Tooltip.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react/jsx-runtime"),e=require("react"),r=require("react-dom"),o=function(){return o=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},o.apply(this,arguments)};function n(t,e,r){if(r||2===arguments.length)for(var o,n=0,i=e.length;n<i;n++)!o&&n in e||(o||(o=Array.prototype.slice.call(e,0,n)),o[n]=e[n]);return t.concat(o||Array.prototype.slice.call(e))}"function"==typeof SuppressedError&&SuppressedError;var i=function(t,e,r,o){void 0===o&&(o=6);var n=window.innerWidth,i=window.innerHeight,a=t.left+t.width/2,c=t.top+t.height/2,s=o+6,u=0,l=0;switch(r){case"top":u=t.top-e.height-s,l=a-e.width/2;break;case"bottom":u=t.bottom+s,l=a-e.width/2;break;case"left":u=c-e.height/2,l=t.left-e.width-s;break;case"right":u=c-e.height/2,l=t.right+s;break;case"top-left":u=t.top-e.height-s,l=t.left;break;case"top-right":u=t.top-e.height-s,l=t.right-e.width;break;case"bottom-left":u=t.bottom+s,l=t.left;break;case"bottom-right":u=t.bottom+s,l=t.right-e.width;break;default:return 0}var p=u,h=i-(u+e.height),d=l,f=n-(l+e.width);return p<8||h<8||d<8||f<8?-1:Math.min(p,h,d,f)},a=function(e,r){var n=o({position:"absolute",width:0,height:0,borderStyle:"solid"},r),i={top:o(o({},n),{borderWidth:"".concat(6,"px ").concat(6,"px 0 ").concat(6,"px"),borderColor:"#0C0A09 transparent transparent transparent"}),bottom:o(o({},n),{borderWidth:"0 ".concat(6,"px ").concat(6,"px ").concat(6,"px"),borderColor:"transparent transparent #0C0A09 transparent"}),left:o(o({},n),{borderWidth:"".concat(6,"px 0 ").concat(6,"px ").concat(6,"px"),borderColor:"transparent transparent transparent #0C0A09"}),right:o(o({},n),{borderWidth:"".concat(6,"px ").concat(6,"px ").concat(6,"px 0"),borderColor:"transparent #0C0A09 transparent transparent"}),"top-left":o(o({},n),{borderWidth:"".concat(6,"px ").concat(6,"px 0 ").concat(6,"px"),borderColor:"#0C0A09 transparent transparent transparent"}),"top-right":o(o({},n),{borderWidth:"".concat(6,"px ").concat(6,"px 0 ").concat(6,"px"),borderColor:"#0C0A09 transparent transparent transparent"}),"bottom-left":o(o({},n),{borderWidth:"0 ".concat(6,"px ").concat(6,"px ").concat(6,"px"),borderColor:"transparent transparent #0C0A09 transparent"}),"bottom-right":o(o({},n),{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 s=c.content,u=c.children,l=c.position,p=void 0===l?"top":l,h=c.trigger,d=void 0===h?"hover":h,f=c.delay,b=void 0===f?200:f,m=c.disabled,g=void 0!==m&&m,w=c.className,v=void 0===w?"":w,x=c.tooltipClassName,k=void 0===x?"":x,C=c.gap,y=void 0===C?6:C,E=c.showArrow,A=void 0===E||E,M=e.useState(!1),W=M[0],F=M[1],S=e.useState(!1),T=S[0],j=S[1],L=e.useState(p),O=L[0],q=L[1],R=e.useState({position:"absolute",top:0,left:0,pointerEvents:"hover"===d?"auto":"none"}),z=R[0],N=R[1],P=e.useState({}),X=P[0],Y=P[1],B=e.useRef(null),H=e.useRef(null),I=e.useRef(null),_=e.useRef(null),D=e.useCallback(function(){if(B.current&&H.current&&W&&T){var t=B.current.getBoundingClientRect(),e=H.current.getBoundingClientRect(),r=function(t,e,r,o){void 0===o&&(o=6);var a=["top","bottom","left","right"],c=a.includes(r)?n([r],a.filter(function(t){return t!==r}),!0):n([r.includes("top")?"top":"bottom",r.includes("bottom")?"bottom":"top",r.includes("left")?"left":"right",r.includes("right")?"right":"left"],a.filter(function(t){return!r.includes(t.split("-")[0])&&!r.includes(t.split("-")[1]||"")}),!0),s=r,u=i(t,e,r,o);if(u<0)for(var l=0,p=c;l<p.length;l++){var h=p[l],d=i(t,e,h,o);if(d>u&&(u=d,s=h,d>0))break}return s}(t,e,p,y);q(r);var a=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,s=o+6,u=0,l=0;switch(r){case"top":u=t.top-e.height-s+i,l=a-e.width/2+n;break;case"bottom":default:u=t.bottom+s+i,l=a-e.width/2+n;break;case"left":u=c-e.height/2+i,l=t.left-e.width-s+n;break;case"right":u=c-e.height/2+i,l=t.right+s+n;break;case"top-left":u=t.top-e.height-s+i,l=t.left+n;break;case"top-right":u=t.top-e.height-s+i,l=t.right-e.width+n;break;case"bottom-left":u=t.bottom+s+i,l=t.left+n;break;case"bottom-right":u=t.bottom+s+i,l=t.right-e.width+n}var p=window.innerWidth,h=window.innerHeight;return l<n+8?l=n+8:l+e.width>n+p-8&&(l=n+p-e.width-8),u<i+8?u=i+8:u+e.height>i+h-8&&(u=i+h-e.height-8),{top:u,left:l}}(t,e,r,y),c=a.top,s=a.left;if(N(function(t){return o(o({},t),{position:"absolute",top:"".concat(c,"px"),left:"".concat(s,"px"),pointerEvents:"hover"===d?"auto":"none",zIndex:9999})}),A){var u=function(t,e,r,o,n){var i=window.scrollX||window.pageXOffset,a=window.scrollY||window.pageYOffset,c=e.left+(e.width-6)/2,s=e.top+(e.height-6)/2,u=o-i,l=n-a;switch(t){case"top":return{bottom:-6,left:Math.min(Math.max(c-u,6),r.width-6)};case"bottom":return{top:-6,left:Math.min(Math.max(c-u,6),r.width-6)};case"left":return{right:-6,top:Math.min(Math.max(s-l,6),r.height-6)};case"right":return{left:-6,top:Math.min(Math.max(s-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,s,c);Y(u)}}},[W,p,y,A,T,d]),G=e.useCallback(function(){g||(_.current&&(clearTimeout(_.current),_.current=null),I.current&&clearTimeout(I.current),I.current=setTimeout(function(){F(!0),requestAnimationFrame(function(){j(!0)})},b))},[g,b]),J=e.useCallback(function(){I.current&&(clearTimeout(I.current),I.current=null),_.current&&clearTimeout(_.current),j(!1),_.current=setTimeout(function(){F(!1),_.current=null},150)},[]),K=e.useCallback(function(){"hover"===d&&(_.current&&(clearTimeout(_.current),_.current=null),W||(F(!0),requestAnimationFrame(function(){j(!0)})))},[d,W]),Q=e.useCallback(function(t){g||"click"!==d||(t.stopPropagation(),W?J():(I.current&&(clearTimeout(I.current),I.current=null),F(!0),requestAnimationFrame(function(){j(!0)})))},[g,d,W,J]);e.useEffect(function(){if(W)return requestAnimationFrame(function(){D()}),window.addEventListener("scroll",D,!0),window.addEventListener("resize",D),function(){window.removeEventListener("scroll",D,!0),window.removeEventListener("resize",D)}},[W,D]),e.useEffect(function(){if(W&&"click"===d){var t=function(t){B.current&&H.current&&!B.current.contains(t.target)&&!H.current.contains(t.target)&&J()};return document.addEventListener("mousedown",t,!0),function(){document.removeEventListener("mousedown",t,!0)}}},[W,d,J]),e.useEffect(function(){return function(){I.current&&clearTimeout(I.current),_.current&&clearTimeout(_.current)}},[]);var U={position:"absolute",top:0,left:0,opacity:T?1:0,transform:T?"scale(1)":"scale(0.95)",transition:"opacity 150ms ease-out, transform 150ms ease-out",pointerEvents:"hover"===d?"auto":"none",zIndex:9999},V=t.jsxs("div",{style:o(o(o({},U),z),{pointerEvents:"hover"===d?"auto":"none"}),className:"aha-tooltip-wrapper ".concat(k),onMouseEnter:"hover"===d?K:void 0,onMouseLeave:"hover"===d?J:void 0,children:[t.jsx("div",{ref:H,className:"aha-tooltip ".concat(k),style:{backgroundColor:"#0C0A09",color:"#FFFFFF",padding:"8px 12px",borderRadius:"6px",fontSize:"12px",fontWeight:400,fontFamily:"DM Sans, sans-serif",lineHeight:"16px",maxWidth:"200px",minWidth:"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"},role:"tooltip",children:s}),A&&a(O,X)]}),Z=e.useCallback(function(){"hover"===d&&(_.current=setTimeout(function(){J()},100))},[d,J]),$="click"===d?{onClick:Q}:{onMouseEnter:G,onMouseLeave:Z,onFocus:G,onBlur:J};return t.jsxs(t.Fragment,{children:[t.jsx("div",o({ref:B,className:"aha-tooltip-trigger ".concat(v),style:{display:"inline-block",cursor:"click"===d?"pointer":"default"}},$,{children:u})),W&&"undefined"!=typeof document&&r.createPortal(V,document.body)]})};
|
|
2
|
+
//# sourceMappingURL=Tooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tooltip.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}\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// 计算指定位置的空间可用性得分(分数越高,空间越充足)\nconst getPositionScore = (\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n position: TooltipPosition,\n gap: number = GAP_DEFAULT\n): number => {\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const padding = 8;\n \n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n const arrowOffset = ARROW_SIZE;\n const totalGap = gap + arrowOffset;\n \n // 计算该位置下的 tooltip 在视口中的坐标(相对于视口,不包含 scroll)\n let top = 0;\n let left = 0;\n \n switch (position) {\n case \"top\":\n top = triggerRect.top - tooltipRect.height - totalGap;\n left = triggerCenterX - tooltipRect.width / 2;\n break;\n case \"bottom\":\n top = triggerRect.bottom + totalGap;\n left = triggerCenterX - tooltipRect.width / 2;\n break;\n case \"left\":\n top = triggerCenterY - tooltipRect.height / 2;\n left = triggerRect.left - tooltipRect.width - totalGap;\n break;\n case \"right\":\n top = triggerCenterY - tooltipRect.height / 2;\n left = triggerRect.right + totalGap;\n break;\n case \"top-left\":\n top = triggerRect.top - tooltipRect.height - totalGap;\n left = triggerRect.left;\n break;\n case \"top-right\":\n top = triggerRect.top - tooltipRect.height - totalGap;\n left = triggerRect.right - tooltipRect.width;\n break;\n case \"bottom-left\":\n top = triggerRect.bottom + totalGap;\n left = triggerRect.left;\n break;\n case \"bottom-right\":\n top = triggerRect.bottom + totalGap;\n left = triggerRect.right - tooltipRect.width;\n break;\n default:\n return 0;\n }\n \n // 计算可用空间(相对于视口)\n const availableTop = top;\n const availableBottom = viewportHeight - (top + tooltipRect.height);\n const availableLeft = left;\n const availableRight = viewportWidth - (left + tooltipRect.width);\n \n // 如果超出视口,返回负分\n if (availableTop < padding || availableBottom < padding || \n availableLeft < padding || availableRight < padding) {\n return -1;\n }\n \n // 计算最小可用空间作为得分(确保所有方向都有足够空间)\n const minAvailable = Math.min(availableTop, availableBottom, availableLeft, availableRight);\n return minAvailable;\n};\n\n// 自动选择最佳位置\nconst getAutoPosition = (\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n preferredPosition: TooltipPosition,\n gap: number = GAP_DEFAULT\n): TooltipPosition => {\n // 基础位置列表(按优先级排序)\n const basePositions: TooltipPosition[] = [\"top\", \"bottom\", \"left\", \"right\"];\n \n // 如果首选位置是基础位置,优先尝试\n const positionsToTry: TooltipPosition[] = basePositions.includes(preferredPosition)\n ? [preferredPosition, ...basePositions.filter(p => p !== preferredPosition)]\n : [\n // 对于复合位置,尝试对应的基础位置\n preferredPosition.includes(\"top\") ? \"top\" : \"bottom\",\n preferredPosition.includes(\"bottom\") ? \"bottom\" : \"top\",\n preferredPosition.includes(\"left\") ? \"left\" : \"right\",\n preferredPosition.includes(\"right\") ? \"right\" : \"left\",\n ...basePositions.filter(p => \n !preferredPosition.includes(p.split(\"-\")[0]) && \n !preferredPosition.includes(p.split(\"-\")[1] || \"\")\n )\n ];\n \n let bestPosition = preferredPosition;\n let bestScore = getPositionScore(triggerRect, tooltipRect, preferredPosition, gap);\n \n // 如果首选位置得分小于0(超出视口),尝试其他位置\n if (bestScore < 0) {\n for (const pos of positionsToTry) {\n const score = getPositionScore(triggerRect, tooltipRect, pos, gap);\n if (score > bestScore) {\n bestScore = score;\n bestPosition = pos;\n // 如果找到完全合适的位置(得分>0),直接返回\n if (score > 0) {\n break;\n }\n }\n }\n }\n \n return bestPosition;\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 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}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [isAnimating, setIsAnimating] = useState(false);\n const [actualPosition, setActualPosition] = useState<TooltipPosition>(position);\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 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 maxWidth: \"200px\",\n minWidth: \"max-content\",\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 };\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","__spreadArray","to","from","pack","ar","l","Array","slice","concat","SuppressedError","getPositionScore","triggerRect","tooltipRect","position","gap","viewportWidth","window","innerWidth","viewportHeight","innerHeight","triggerCenterX","left","width","triggerCenterY","top","height","totalGap","bottom","right","availableTop","availableBottom","availableLeft","availableRight","Math","min","renderArrow","arrowStyle","baseArrowStyle","borderStyle","arrowStyles","borderWidth","borderColor","_jsx","style","_a","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","pointerEvents","tooltipStyle","setTooltipStyle","_p","setArrowStyle","triggerRef","useRef","tooltipRef","timeoutRef","hideTimeoutRef","updatePosition","useCallback","current","getBoundingClientRect","finalPosition","preferredPosition","basePositions","positionsToTry","includes","filter","split","bestPosition","bestScore","_i","positionsToTry_1","pos","score","getAutoPosition","scrollX","pageXOffset","scrollY","pageYOffset","calculatePosition","prev","zIndex","arrowPos","tooltipLeft","tooltipTop","tooltipAbsoluteLeft","tooltipAbsoluteTop","max","getArrowPosition","showTooltip","clearTimeout","setTimeout","requestAnimationFrame","hideTooltip","keepTooltipVisible","handleClick","e","stopPropagation","useEffect","addEventListener","removeEventListener","handleClickOutside","event","contains","target","document","tooltipContainerStyle","opacity","transform","transition","tooltipContent","_jsxs","onMouseEnter","undefined","onMouseLeave","jsx","ref","backgroundColor","color","padding","borderRadius","fontSize","fontWeight","fontFamily","lineHeight","maxWidth","minWidth","wordWrap","boxShadow","whiteSpace","role","handleTriggerMouseLeave","triggerProps","onClick","onFocus","onBlur","jsxs","_Fragment","Fragment","display","cursor","createPortal","body"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -3,11 +3,12 @@ import Button from './index';
|
|
|
3
3
|
declare const meta: Meta<typeof Button>;
|
|
4
4
|
export default meta;
|
|
5
5
|
type Story = StoryObj<typeof Button>;
|
|
6
|
-
export declare const
|
|
7
|
-
export declare const
|
|
8
|
-
export declare const Outline: Story;
|
|
9
|
-
export declare const Danger: Story;
|
|
10
|
-
export declare const Icon: Story;
|
|
11
|
-
export declare const Ghost: Story;
|
|
12
|
-
export declare const Disabled: Story;
|
|
6
|
+
export declare const Basic: Story;
|
|
7
|
+
export declare const Types: Story;
|
|
13
8
|
export declare const Sizes: Story;
|
|
9
|
+
export declare const PrimarySizes: Story;
|
|
10
|
+
export declare const Disabled: Story;
|
|
11
|
+
export declare const Loading: Story;
|
|
12
|
+
export declare const WithIcon: Story;
|
|
13
|
+
export declare const LoadingWithIcon: Story;
|
|
14
|
+
export declare const AllStates: Story;
|
|
@@ -1,14 +1,29 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
export type
|
|
3
|
-
export type ButtonSize = '
|
|
2
|
+
export type ButtonType = 'default' | 'primary';
|
|
3
|
+
export type ButtonSize = 'small' | 'mediumSmall' | 'medium' | 'large';
|
|
4
4
|
export interface ButtonProps {
|
|
5
|
+
/** 按钮内容 */
|
|
5
6
|
children?: React.ReactNode;
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
/** 按钮类型 */
|
|
8
|
+
type?: ButtonType;
|
|
9
|
+
/** 按钮尺寸 */
|
|
8
10
|
size?: ButtonSize;
|
|
11
|
+
/** 是否禁用 */
|
|
9
12
|
disabled?: boolean;
|
|
13
|
+
/** 是否加载中 */
|
|
14
|
+
loading?: boolean;
|
|
15
|
+
/** 点击事件 */
|
|
10
16
|
onClick?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
|
|
11
|
-
type
|
|
17
|
+
/** 按钮原生type */
|
|
18
|
+
htmlType?: 'button' | 'submit' | 'reset';
|
|
19
|
+
/** 自定义类名 */
|
|
20
|
+
className?: string;
|
|
21
|
+
/** 自定义样式 */
|
|
22
|
+
style?: React.CSSProperties;
|
|
23
|
+
/** 图标 */
|
|
24
|
+
icon?: React.ReactNode;
|
|
25
|
+
/** 图标位置 */
|
|
26
|
+
iconPosition?: 'left' | 'right';
|
|
12
27
|
[key: string]: any;
|
|
13
28
|
}
|
|
14
29
|
declare const Button: React.FC<ButtonProps>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import Checkbox from './index';
|
|
3
|
+
declare const meta: Meta<typeof Checkbox>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof Checkbox>;
|
|
6
|
+
export declare const Basic: Story;
|
|
7
|
+
export declare const WithLabel: Story;
|
|
8
|
+
export declare const Checked: Story;
|
|
9
|
+
export declare const Indeterminate: Story;
|
|
10
|
+
export declare const Disabled: Story;
|
|
11
|
+
export declare const AllStates: Story;
|
|
12
|
+
export declare const Controlled: Story;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface CheckboxProps {
|
|
3
|
+
checked?: boolean;
|
|
4
|
+
indeterminate?: boolean;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
7
|
+
className?: string;
|
|
8
|
+
style?: React.CSSProperties;
|
|
9
|
+
children?: React.ReactNode;
|
|
10
|
+
}
|
|
11
|
+
declare const Checkbox: React.FC<CheckboxProps>;
|
|
12
|
+
export default Checkbox;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import Form from './index';
|
|
3
|
+
declare const meta: Meta<typeof Form>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof Form>;
|
|
6
|
+
export declare const Basic: Story;
|
|
7
|
+
export declare const Complete: Story;
|
|
8
|
+
export declare const Layouts: Story;
|
|
9
|
+
export declare const ValidationRules: Story;
|
|
10
|
+
export declare const WithFormInstance: Story;
|
|
11
|
+
export declare const WithHelpAndExtra: Story;
|
|
12
|
+
export declare const WithTooltip: Story;
|
|
13
|
+
export declare const ProgrammaticSubmit: Story;
|
|
14
|
+
export declare const SingleFieldOperations: Story;
|
|
15
|
+
export declare const FormLevelOperations: Story;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface FieldData {
|
|
3
|
+
value?: any;
|
|
4
|
+
error?: string;
|
|
5
|
+
touched?: boolean;
|
|
6
|
+
validating?: boolean;
|
|
7
|
+
rules?: any[];
|
|
8
|
+
required?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface FormContextValue {
|
|
11
|
+
fields: Record<string, FieldData>;
|
|
12
|
+
getFieldValue: (name: string) => any;
|
|
13
|
+
setFieldValue: (name: string, value: any) => void;
|
|
14
|
+
getFieldError: (name: string) => string | undefined;
|
|
15
|
+
setFieldError: (name: string, error: string | undefined) => void;
|
|
16
|
+
isFieldTouched: (name: string) => boolean;
|
|
17
|
+
setFieldTouched: (name: string, touched: boolean) => void;
|
|
18
|
+
isFieldValidating: (name: string) => boolean;
|
|
19
|
+
setFieldValidating: (name: string, validating: boolean) => void;
|
|
20
|
+
registerField: (name: string, options: {
|
|
21
|
+
rules?: any[];
|
|
22
|
+
required?: boolean;
|
|
23
|
+
}) => void;
|
|
24
|
+
unregisterField: (name: string) => void;
|
|
25
|
+
validateField: (name: string) => Promise<string | undefined>;
|
|
26
|
+
validateFields: (nameList?: string[]) => Promise<any>;
|
|
27
|
+
resetFields: (nameList?: string[]) => void;
|
|
28
|
+
getFieldsValue: (nameList?: string[]) => any;
|
|
29
|
+
setFieldsValue: (values: Record<string, any>) => void;
|
|
30
|
+
submit: () => Promise<any>;
|
|
31
|
+
labelWidth?: number | string;
|
|
32
|
+
labelAlign?: 'left' | 'right';
|
|
33
|
+
}
|
|
34
|
+
export declare const FormContext: React.Context<FormContextValue | null>;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface FormItemProps {
|
|
3
|
+
/** 字段名 */
|
|
4
|
+
name?: string;
|
|
5
|
+
/** 标签 */
|
|
6
|
+
label?: React.ReactNode;
|
|
7
|
+
/** 标签的 HTML for 属性 */
|
|
8
|
+
htmlFor?: string;
|
|
9
|
+
/** 标签布局 */
|
|
10
|
+
labelCol?: {
|
|
11
|
+
span?: number;
|
|
12
|
+
offset?: number;
|
|
13
|
+
};
|
|
14
|
+
/** 输入控件布局 */
|
|
15
|
+
wrapperCol?: {
|
|
16
|
+
span?: number;
|
|
17
|
+
offset?: number;
|
|
18
|
+
};
|
|
19
|
+
/** 是否必填(显示红色星号) */
|
|
20
|
+
required?: boolean;
|
|
21
|
+
/** 校验规则 */
|
|
22
|
+
rules?: Array<{
|
|
23
|
+
required?: boolean;
|
|
24
|
+
message?: string;
|
|
25
|
+
validator?: (rule: any, value: any) => Promise<void> | void;
|
|
26
|
+
pattern?: RegExp;
|
|
27
|
+
min?: number;
|
|
28
|
+
max?: number;
|
|
29
|
+
len?: number;
|
|
30
|
+
type?: 'string' | 'number' | 'boolean' | 'method' | 'regexp' | 'integer' | 'float' | 'array' | 'object' | 'enum' | 'date' | 'url' | 'hex' | 'email';
|
|
31
|
+
whitespace?: boolean;
|
|
32
|
+
[key: string]: any;
|
|
33
|
+
}>;
|
|
34
|
+
/** 是否显示校验信息 */
|
|
35
|
+
hasFeedback?: boolean;
|
|
36
|
+
/** 校验状态 */
|
|
37
|
+
validateStatus?: 'success' | 'warning' | 'error' | 'validating';
|
|
38
|
+
/** 帮助信息 */
|
|
39
|
+
help?: React.ReactNode;
|
|
40
|
+
/** 额外的提示信息 */
|
|
41
|
+
extra?: React.ReactNode;
|
|
42
|
+
/** 自定义类名 */
|
|
43
|
+
className?: string;
|
|
44
|
+
/** 自定义样式 */
|
|
45
|
+
style?: React.CSSProperties;
|
|
46
|
+
/** 子元素 */
|
|
47
|
+
children?: React.ReactNode;
|
|
48
|
+
/** 标签对齐方式 */
|
|
49
|
+
labelAlign?: 'left' | 'right';
|
|
50
|
+
/** 标签宽度 */
|
|
51
|
+
labelWidth?: number | string;
|
|
52
|
+
/** 是否隐藏 */
|
|
53
|
+
hidden?: boolean;
|
|
54
|
+
/** 标签提示信息(tooltip) */
|
|
55
|
+
tooltip?: React.ReactNode;
|
|
56
|
+
}
|
|
57
|
+
declare const FormItem: React.FC<FormItemProps>;
|
|
58
|
+
export default FormItem;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import FormItem from './FormItem';
|
|
3
|
+
export interface FormProps {
|
|
4
|
+
/** 表单初始值 */
|
|
5
|
+
initialValues?: Record<string, any>;
|
|
6
|
+
/** 表单值变化回调 */
|
|
7
|
+
onValuesChange?: (changedValues: Record<string, any>, allValues: Record<string, any>) => void;
|
|
8
|
+
/** 表单提交回调 */
|
|
9
|
+
onFinish?: (values: Record<string, any>) => void;
|
|
10
|
+
/** 表单提交失败回调 */
|
|
11
|
+
onFinishFailed?: (errorInfo: {
|
|
12
|
+
values: Record<string, any>;
|
|
13
|
+
errorFields: Array<{
|
|
14
|
+
name: string;
|
|
15
|
+
errors: string[];
|
|
16
|
+
}>;
|
|
17
|
+
}) => void;
|
|
18
|
+
/** 标签宽度 */
|
|
19
|
+
labelWidth?: number | string;
|
|
20
|
+
/** 标签对齐方式 */
|
|
21
|
+
labelAlign?: 'left' | 'right';
|
|
22
|
+
/** 布局方式 */
|
|
23
|
+
layout?: 'horizontal' | 'vertical' | 'inline';
|
|
24
|
+
/** 尺寸 */
|
|
25
|
+
size?: 'small' | 'medium' | 'large';
|
|
26
|
+
/** 自定义类名 */
|
|
27
|
+
className?: string;
|
|
28
|
+
/** 自定义样式 */
|
|
29
|
+
style?: React.CSSProperties;
|
|
30
|
+
/** 子元素 */
|
|
31
|
+
children?: React.ReactNode;
|
|
32
|
+
}
|
|
33
|
+
export interface FormInstance {
|
|
34
|
+
/** 获取字段值 */
|
|
35
|
+
getFieldValue: (name: string) => any;
|
|
36
|
+
/** 获取所有字段值 */
|
|
37
|
+
getFieldsValue: (nameList?: string[]) => any;
|
|
38
|
+
/** 设置字段值 */
|
|
39
|
+
setFieldValue: (name: string, value: any) => void;
|
|
40
|
+
/** 设置所有字段值 */
|
|
41
|
+
setFieldsValue: (values: Record<string, any>) => void;
|
|
42
|
+
/** 获取字段错误 */
|
|
43
|
+
getFieldError: (name: string) => string | undefined;
|
|
44
|
+
/** 校验字段 */
|
|
45
|
+
validateField: (name: string) => Promise<string | undefined>;
|
|
46
|
+
/** 校验所有字段 */
|
|
47
|
+
validateFields: (nameList?: string[]) => Promise<any>;
|
|
48
|
+
/** 重置字段 */
|
|
49
|
+
resetFields: (nameList?: string[]) => void;
|
|
50
|
+
/** 提交表单 */
|
|
51
|
+
submit: () => Promise<any>;
|
|
52
|
+
}
|
|
53
|
+
declare const Form: React.ForwardRefExoticComponent<FormProps & React.RefAttributes<FormInstance>>;
|
|
54
|
+
declare const FormWithItem: typeof Form & {
|
|
55
|
+
Item: typeof FormItem;
|
|
56
|
+
};
|
|
57
|
+
export default FormWithItem;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import Input from './index';
|
|
3
|
+
declare const meta: Meta<typeof Input>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof Input>;
|
|
6
|
+
export declare const Basic: Story;
|
|
7
|
+
export declare const Sizes: Story;
|
|
8
|
+
export declare const Disabled: Story;
|
|
9
|
+
export declare const Error: Story;
|
|
10
|
+
export declare const ReadOnly: Story;
|
|
11
|
+
export declare const WithPrefix: Story;
|
|
12
|
+
export declare const WithSuffix: Story;
|
|
13
|
+
export declare const WithClear: Story;
|
|
14
|
+
export declare const WithPressEnter: Story;
|
|
15
|
+
export declare const Controlled: Story;
|
|
16
|
+
export declare const AllStates: Story;
|
|
@@ -1,14 +1,41 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
export interface InputProps {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix' | 'suffix'> {
|
|
3
|
+
/** 输入框大小 */
|
|
4
|
+
size?: 'small' | 'mediumSmall' | 'medium' | 'large';
|
|
5
|
+
/** 是否禁用 */
|
|
6
6
|
disabled?: boolean;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
/** 是否显示错误状态 */
|
|
8
|
+
error?: boolean;
|
|
9
|
+
/** 是否只读 */
|
|
10
|
+
readOnly?: boolean;
|
|
11
|
+
/** 输入框前缀图标 */
|
|
12
|
+
prefix?: React.ReactNode;
|
|
13
|
+
/** 输入框后缀图标 */
|
|
14
|
+
suffix?: React.ReactNode;
|
|
15
|
+
/** 允许清除 */
|
|
16
|
+
allowClear?: boolean;
|
|
17
|
+
/** 清除回调 */
|
|
18
|
+
onClear?: () => void;
|
|
19
|
+
/** 自定义类名 */
|
|
10
20
|
className?: string;
|
|
11
|
-
|
|
21
|
+
/** 自定义样式 */
|
|
22
|
+
style?: React.CSSProperties;
|
|
23
|
+
/** 输入框类型 */
|
|
24
|
+
type?: string;
|
|
25
|
+
/** 占位符 */
|
|
26
|
+
placeholder?: string;
|
|
27
|
+
/** 值 */
|
|
28
|
+
value?: string;
|
|
29
|
+
/** 默认值 */
|
|
30
|
+
defaultValue?: string;
|
|
31
|
+
/** 变化回调 */
|
|
32
|
+
onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
33
|
+
/** 聚焦回调 */
|
|
34
|
+
onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void;
|
|
35
|
+
/** 失焦回调 */
|
|
36
|
+
onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;
|
|
37
|
+
/** 按下回车回调 */
|
|
38
|
+
onPressEnter?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
|
|
12
39
|
}
|
|
13
|
-
declare const Input: React.
|
|
40
|
+
declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
|
|
14
41
|
export default Input;
|