wssf-kage-ui 0.1.1 → 0.1.3

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.
Files changed (257) hide show
  1. package/dist/cjs/Alert/index.d.ts +37 -0
  2. package/dist/cjs/Alert/index.js +124 -0
  3. package/dist/cjs/Alert/style.less +248 -0
  4. package/dist/cjs/Avatar/index.d.ts +47 -0
  5. package/dist/cjs/Avatar/index.js +147 -0
  6. package/dist/cjs/Avatar/style.less +193 -0
  7. package/dist/cjs/Badge/index.d.ts +48 -0
  8. package/dist/cjs/Badge/index.js +141 -0
  9. package/dist/cjs/Badge/style.less +237 -0
  10. package/dist/cjs/Calendar/index.d.ts +33 -0
  11. package/dist/cjs/Calendar/index.js +296 -0
  12. package/dist/cjs/Calendar/style.less +384 -0
  13. package/dist/cjs/Card/index.d.ts +68 -0
  14. package/dist/cjs/Card/index.js +155 -0
  15. package/dist/cjs/Card/style.less +356 -0
  16. package/dist/cjs/Carousel/index.d.ts +33 -0
  17. package/dist/cjs/Carousel/index.js +169 -0
  18. package/dist/cjs/Carousel/style.less +232 -0
  19. package/dist/cjs/Collapse/index.d.ts +55 -0
  20. package/dist/cjs/Collapse/index.js +191 -0
  21. package/dist/cjs/Collapse/style.less +217 -0
  22. package/dist/cjs/Descriptions/index.d.ts +54 -0
  23. package/dist/cjs/Descriptions/index.js +181 -0
  24. package/dist/cjs/Descriptions/style.less +259 -0
  25. package/dist/cjs/Drawer/index.d.ts +57 -0
  26. package/dist/cjs/Drawer/index.js +203 -0
  27. package/dist/cjs/Drawer/style.less +215 -0
  28. package/dist/cjs/Empty/index.d.ts +21 -0
  29. package/dist/cjs/Empty/index.js +115 -0
  30. package/dist/cjs/Empty/style.less +103 -0
  31. package/dist/cjs/FloatButton/index.d.ts +54 -0
  32. package/dist/cjs/FloatButton/index.js +119 -0
  33. package/dist/cjs/FloatButton/style.less +266 -0
  34. package/dist/cjs/Image/index.d.ts +30 -0
  35. package/dist/cjs/Image/index.js +153 -0
  36. package/dist/cjs/Image/style.less +156 -0
  37. package/dist/cjs/Input/index.d.ts +24 -0
  38. package/dist/cjs/Input/index.js +158 -0
  39. package/dist/cjs/Input/style.less +276 -0
  40. package/dist/cjs/InputNumber/index.d.ts +47 -0
  41. package/dist/cjs/InputNumber/index.js +323 -0
  42. package/dist/cjs/InputNumber/style.less +392 -0
  43. package/dist/cjs/Mentions/index.d.ts +57 -0
  44. package/dist/cjs/Mentions/index.js +378 -0
  45. package/dist/cjs/Mentions/style.less +297 -0
  46. package/dist/cjs/Message/index.d.ts +38 -0
  47. package/dist/cjs/Message/index.js +292 -0
  48. package/dist/cjs/Message/style.less +183 -0
  49. package/dist/cjs/Modal/index.d.ts +63 -0
  50. package/dist/cjs/Modal/index.js +254 -0
  51. package/dist/cjs/Modal/style.less +298 -0
  52. package/dist/cjs/Notification/index.d.ts +48 -0
  53. package/dist/cjs/Notification/index.js +340 -0
  54. package/dist/cjs/Notification/style.less +260 -0
  55. package/dist/cjs/Popconfirm/index.d.ts +58 -0
  56. package/dist/cjs/Popconfirm/index.js +393 -0
  57. package/dist/cjs/Popconfirm/style.less +417 -0
  58. package/dist/cjs/Popover/index.d.ts +30 -0
  59. package/dist/cjs/Popover/index.js +131 -0
  60. package/dist/cjs/Popover/style.less +279 -0
  61. package/dist/cjs/Progress/index.d.ts +43 -0
  62. package/dist/cjs/Progress/index.js +213 -0
  63. package/dist/cjs/Progress/style.less +206 -0
  64. package/dist/cjs/QRCode/index.d.ts +30 -0
  65. package/dist/cjs/QRCode/index.js +167 -0
  66. package/dist/cjs/QRCode/style.less +201 -0
  67. package/dist/cjs/Radio/index.d.ts +70 -0
  68. package/dist/cjs/Radio/index.js +199 -0
  69. package/dist/cjs/Radio/style.less +326 -0
  70. package/dist/cjs/Rate/index.d.ts +37 -0
  71. package/dist/cjs/Rate/index.js +151 -0
  72. package/dist/cjs/Rate/style.less +170 -0
  73. package/dist/cjs/Result/index.d.ts +25 -0
  74. package/dist/cjs/Result/index.js +63 -0
  75. package/dist/cjs/Result/style.less +111 -0
  76. package/dist/cjs/Segmented/index.d.ts +31 -0
  77. package/dist/cjs/Segmented/index.js +121 -0
  78. package/dist/cjs/Segmented/style.less +167 -0
  79. package/dist/cjs/Select/index.d.ts +67 -0
  80. package/dist/cjs/Select/index.js +403 -0
  81. package/dist/cjs/Select/style.less +523 -0
  82. package/dist/cjs/Skeleton/index.d.ts +88 -0
  83. package/dist/cjs/Skeleton/index.js +207 -0
  84. package/dist/cjs/Skeleton/style.less +487 -0
  85. package/dist/cjs/Slider/index.d.ts +41 -0
  86. package/dist/cjs/Slider/index.js +325 -0
  87. package/dist/cjs/Slider/style.less +287 -0
  88. package/dist/cjs/Spin/index.d.ts +25 -0
  89. package/dist/cjs/Spin/index.js +98 -0
  90. package/dist/cjs/Spin/style.less +169 -0
  91. package/dist/cjs/Statistic/index.d.ts +26 -0
  92. package/dist/cjs/Statistic/index.js +71 -0
  93. package/dist/cjs/Statistic/style.less +94 -0
  94. package/dist/cjs/Switch/index.d.ts +28 -0
  95. package/dist/cjs/Switch/index.js +71 -0
  96. package/dist/cjs/Switch/style.less +212 -0
  97. package/dist/cjs/Table/index.d.ts +188 -0
  98. package/dist/cjs/Table/index.js +787 -0
  99. package/dist/cjs/Table/style.less +663 -0
  100. package/dist/cjs/Tag/index.d.ts +51 -0
  101. package/dist/cjs/Tag/index.js +142 -0
  102. package/dist/cjs/Tag/style.less +356 -0
  103. package/dist/cjs/TimePicker/index.d.ts +51 -0
  104. package/dist/cjs/TimePicker/index.js +332 -0
  105. package/dist/cjs/TimePicker/style.less +384 -0
  106. package/dist/cjs/Timeline/index.d.ts +47 -0
  107. package/dist/cjs/Timeline/index.js +127 -0
  108. package/dist/cjs/Timeline/style.less +265 -0
  109. package/dist/cjs/Tooltip/index.d.ts +53 -0
  110. package/dist/cjs/Tooltip/index.js +468 -0
  111. package/dist/cjs/Tooltip/style.less +237 -0
  112. package/dist/cjs/Transfer/index.d.ts +52 -0
  113. package/dist/cjs/Transfer/index.js +344 -0
  114. package/dist/cjs/Transfer/style.less +331 -0
  115. package/dist/cjs/Tree/index.d.ts +82 -0
  116. package/dist/cjs/Tree/index.js +226 -0
  117. package/dist/cjs/Tree/style.less +313 -0
  118. package/dist/cjs/TreeSelect/index.d.ts +54 -0
  119. package/dist/cjs/TreeSelect/index.js +373 -0
  120. package/dist/cjs/TreeSelect/style.less +471 -0
  121. package/dist/cjs/Upload/index.d.ts +65 -0
  122. package/dist/cjs/Upload/index.js +517 -0
  123. package/dist/cjs/Upload/style.less +424 -0
  124. package/dist/cjs/Watermark/index.d.ts +41 -0
  125. package/dist/cjs/Watermark/index.js +353 -0
  126. package/dist/cjs/Watermark/style.less +31 -0
  127. package/dist/cjs/index.d.ts +84 -0
  128. package/dist/cjs/index.js +318 -0
  129. package/dist/esm/Alert/index.d.ts +37 -0
  130. package/dist/esm/Alert/index.js +121 -0
  131. package/dist/esm/Alert/style.less +248 -0
  132. package/dist/esm/Avatar/index.d.ts +47 -0
  133. package/dist/esm/Avatar/index.js +142 -0
  134. package/dist/esm/Avatar/style.less +193 -0
  135. package/dist/esm/Badge/index.d.ts +48 -0
  136. package/dist/esm/Badge/index.js +137 -0
  137. package/dist/esm/Badge/style.less +237 -0
  138. package/dist/esm/Calendar/index.d.ts +33 -0
  139. package/dist/esm/Calendar/index.js +291 -0
  140. package/dist/esm/Calendar/style.less +384 -0
  141. package/dist/esm/Card/index.d.ts +68 -0
  142. package/dist/esm/Card/index.js +149 -0
  143. package/dist/esm/Card/style.less +356 -0
  144. package/dist/esm/Carousel/index.d.ts +33 -0
  145. package/dist/esm/Carousel/index.js +163 -0
  146. package/dist/esm/Carousel/style.less +232 -0
  147. package/dist/esm/Collapse/index.d.ts +55 -0
  148. package/dist/esm/Collapse/index.js +187 -0
  149. package/dist/esm/Collapse/style.less +217 -0
  150. package/dist/esm/Descriptions/index.d.ts +54 -0
  151. package/dist/esm/Descriptions/index.js +179 -0
  152. package/dist/esm/Descriptions/style.less +259 -0
  153. package/dist/esm/Drawer/index.d.ts +57 -0
  154. package/dist/esm/Drawer/index.js +202 -0
  155. package/dist/esm/Drawer/style.less +215 -0
  156. package/dist/esm/Empty/index.d.ts +21 -0
  157. package/dist/esm/Empty/index.js +109 -0
  158. package/dist/esm/Empty/style.less +103 -0
  159. package/dist/esm/FloatButton/index.d.ts +54 -0
  160. package/dist/esm/FloatButton/index.js +123 -0
  161. package/dist/esm/FloatButton/style.less +266 -0
  162. package/dist/esm/Image/index.d.ts +30 -0
  163. package/dist/esm/Image/index.js +149 -0
  164. package/dist/esm/Image/style.less +156 -0
  165. package/dist/esm/Input/index.d.ts +24 -0
  166. package/dist/esm/Input/index.js +151 -0
  167. package/dist/esm/Input/style.less +276 -0
  168. package/dist/esm/InputNumber/index.d.ts +47 -0
  169. package/dist/esm/InputNumber/index.js +316 -0
  170. package/dist/esm/InputNumber/style.less +392 -0
  171. package/dist/esm/Mentions/index.d.ts +57 -0
  172. package/dist/esm/Mentions/index.js +374 -0
  173. package/dist/esm/Mentions/style.less +297 -0
  174. package/dist/esm/Message/index.d.ts +38 -0
  175. package/dist/esm/Message/index.js +294 -0
  176. package/dist/esm/Message/style.less +183 -0
  177. package/dist/esm/Modal/index.d.ts +63 -0
  178. package/dist/esm/Modal/index.js +251 -0
  179. package/dist/esm/Modal/style.less +298 -0
  180. package/dist/esm/Notification/index.d.ts +48 -0
  181. package/dist/esm/Notification/index.js +345 -0
  182. package/dist/esm/Notification/style.less +260 -0
  183. package/dist/esm/Popconfirm/index.d.ts +58 -0
  184. package/dist/esm/Popconfirm/index.js +389 -0
  185. package/dist/esm/Popconfirm/style.less +417 -0
  186. package/dist/esm/Popover/index.d.ts +30 -0
  187. package/dist/esm/Popover/index.js +126 -0
  188. package/dist/esm/Popover/style.less +279 -0
  189. package/dist/esm/Progress/index.d.ts +43 -0
  190. package/dist/esm/Progress/index.js +208 -0
  191. package/dist/esm/Progress/style.less +206 -0
  192. package/dist/esm/QRCode/index.d.ts +30 -0
  193. package/dist/esm/QRCode/index.js +158 -0
  194. package/dist/esm/QRCode/style.less +201 -0
  195. package/dist/esm/Radio/index.d.ts +70 -0
  196. package/dist/esm/Radio/index.js +193 -0
  197. package/dist/esm/Radio/style.less +326 -0
  198. package/dist/esm/Rate/index.d.ts +37 -0
  199. package/dist/esm/Rate/index.js +143 -0
  200. package/dist/esm/Rate/style.less +170 -0
  201. package/dist/esm/Result/index.d.ts +25 -0
  202. package/dist/esm/Result/index.js +57 -0
  203. package/dist/esm/Result/style.less +111 -0
  204. package/dist/esm/Segmented/index.d.ts +31 -0
  205. package/dist/esm/Segmented/index.js +113 -0
  206. package/dist/esm/Segmented/style.less +167 -0
  207. package/dist/esm/Select/index.d.ts +67 -0
  208. package/dist/esm/Select/index.js +398 -0
  209. package/dist/esm/Select/style.less +523 -0
  210. package/dist/esm/Skeleton/index.d.ts +88 -0
  211. package/dist/esm/Skeleton/index.js +213 -0
  212. package/dist/esm/Skeleton/style.less +487 -0
  213. package/dist/esm/Slider/index.d.ts +41 -0
  214. package/dist/esm/Slider/index.js +318 -0
  215. package/dist/esm/Slider/style.less +287 -0
  216. package/dist/esm/Spin/index.d.ts +25 -0
  217. package/dist/esm/Spin/index.js +95 -0
  218. package/dist/esm/Spin/style.less +169 -0
  219. package/dist/esm/Statistic/index.d.ts +26 -0
  220. package/dist/esm/Statistic/index.js +65 -0
  221. package/dist/esm/Statistic/style.less +94 -0
  222. package/dist/esm/Switch/index.d.ts +28 -0
  223. package/dist/esm/Switch/index.js +63 -0
  224. package/dist/esm/Switch/style.less +212 -0
  225. package/dist/esm/Table/index.d.ts +188 -0
  226. package/dist/esm/Table/index.js +797 -0
  227. package/dist/esm/Table/style.less +663 -0
  228. package/dist/esm/Tag/index.d.ts +51 -0
  229. package/dist/esm/Tag/index.js +144 -0
  230. package/dist/esm/Tag/style.less +356 -0
  231. package/dist/esm/TimePicker/index.d.ts +51 -0
  232. package/dist/esm/TimePicker/index.js +327 -0
  233. package/dist/esm/TimePicker/style.less +384 -0
  234. package/dist/esm/Timeline/index.d.ts +47 -0
  235. package/dist/esm/Timeline/index.js +130 -0
  236. package/dist/esm/Timeline/style.less +265 -0
  237. package/dist/esm/Tooltip/index.d.ts +53 -0
  238. package/dist/esm/Tooltip/index.js +471 -0
  239. package/dist/esm/Tooltip/style.less +237 -0
  240. package/dist/esm/Transfer/index.d.ts +52 -0
  241. package/dist/esm/Transfer/index.js +340 -0
  242. package/dist/esm/Transfer/style.less +331 -0
  243. package/dist/esm/Tree/index.d.ts +82 -0
  244. package/dist/esm/Tree/index.js +225 -0
  245. package/dist/esm/Tree/style.less +313 -0
  246. package/dist/esm/TreeSelect/index.d.ts +54 -0
  247. package/dist/esm/TreeSelect/index.js +369 -0
  248. package/dist/esm/TreeSelect/style.less +471 -0
  249. package/dist/esm/Upload/index.d.ts +65 -0
  250. package/dist/esm/Upload/index.js +513 -0
  251. package/dist/esm/Upload/style.less +424 -0
  252. package/dist/esm/Watermark/index.d.ts +41 -0
  253. package/dist/esm/Watermark/index.js +349 -0
  254. package/dist/esm/Watermark/style.less +31 -0
  255. package/dist/esm/index.d.ts +84 -0
  256. package/dist/esm/index.js +43 -1
  257. package/package.json +6 -3
@@ -0,0 +1,353 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = exports.Watermark = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ require("./style.less");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
16
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
17
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
18
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
19
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
20
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
21
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
22
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
23
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // ============ 类型定义 ============
24
+ /** Watermark 属性 */
25
+ // ============ 检查颜色是否包含透明度 ============
26
+ var hasAlpha = function hasAlpha(color) {
27
+ return color.includes('rgba') || color.includes('hsla') || color.startsWith('#') && color.length === 9;
28
+ };
29
+
30
+ // ============ 生成水印 Canvas ============
31
+ var generateWatermark = function generateWatermark(content, image, options) {
32
+ var canvas = document.createElement('canvas');
33
+ var ctx = canvas.getContext('2d');
34
+ if (!ctx) return '';
35
+ var width = options.width,
36
+ height = options.height,
37
+ rotate = options.rotate,
38
+ opacity = options.opacity,
39
+ fontSize = options.fontSize,
40
+ fontColor = options.fontColor,
41
+ fontFamily = options.fontFamily;
42
+ canvas.width = width;
43
+ canvas.height = height;
44
+ ctx.save();
45
+
46
+ // 如果 fontColor 已经包含透明度,就不使用 globalAlpha,避免双重透明度
47
+ // 否则使用 globalAlpha 来控制整体透明度
48
+ // 注意:如果 fontColor 已经有透明度,我们仍然需要应用 opacity,但要调整
49
+ if (hasAlpha(fontColor)) {
50
+ // fontColor 已经有透明度,直接使用,不叠加 globalAlpha
51
+ ctx.globalAlpha = 1;
52
+ } else {
53
+ // fontColor 没有透明度,使用 globalAlpha
54
+ ctx.globalAlpha = opacity;
55
+ }
56
+ ctx.translate(width / 2, height / 2);
57
+ ctx.rotate(rotate * Math.PI / 180);
58
+ ctx.translate(-width / 2, -height / 2);
59
+ if (image) {
60
+ var img = new Image();
61
+ img.crossOrigin = 'anonymous';
62
+ img.src = image;
63
+ // 注意:这里需要等待图片加载完成,但为了简化,先返回空字符串
64
+ // 实际使用时应该使用 Promise 或回调
65
+ ctx.drawImage(img, 0, 0, width, height);
66
+ } else if (content) {
67
+ // 确保 fontColor 有效
68
+ if (!fontColor) {
69
+ ctx.restore();
70
+ return '';
71
+ }
72
+ ctx.fillStyle = fontColor;
73
+ ctx.font = "".concat(fontSize, "px ").concat(fontFamily);
74
+ ctx.textAlign = 'center';
75
+ ctx.textBaseline = 'middle';
76
+ var contents = Array.isArray(content) ? content : [content];
77
+ var lineHeight = fontSize * 1.2;
78
+ var totalHeight = contents.length * lineHeight;
79
+ var startY = (height - totalHeight) / 2 + lineHeight / 2;
80
+ contents.forEach(function (text, index) {
81
+ ctx.fillText(text, width / 2, startY + index * lineHeight);
82
+ });
83
+ }
84
+ ctx.restore();
85
+ return canvas.toDataURL();
86
+ };
87
+
88
+ // ============ 检测深色模式 ============
89
+ var isDarkMode = function isDarkMode() {
90
+ if (typeof window === 'undefined') return false;
91
+
92
+ // 优先检查页面主题属性(最可靠)
93
+ if (document.documentElement.hasAttribute('data-theme') && document.documentElement.getAttribute('data-theme') === 'dark') {
94
+ return true;
95
+ }
96
+ if (document.documentElement.hasAttribute('data-prefers-color-scheme') && document.documentElement.getAttribute('data-prefers-color-scheme') === 'dark') {
97
+ return true;
98
+ }
99
+ if (document.documentElement.hasAttribute('data-prefers-color') && document.documentElement.getAttribute('data-prefers-color') === 'dark') {
100
+ return true;
101
+ }
102
+ if (document.documentElement.classList.contains('dark') || document.body.classList.contains('dark')) {
103
+ return true;
104
+ }
105
+
106
+ // 最后检查系统偏好(可能不准确,因为页面可能是亮色但系统是深色)
107
+ // 如果页面没有明确的主题标识,才使用系统偏好
108
+ // 这里暂时注释掉,优先使用页面主题
109
+ // if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
110
+ // return true;
111
+ // }
112
+
113
+ return false; // 默认亮色模式
114
+ };
115
+
116
+ // ============ Watermark 组件 ============
117
+ var Watermark = exports.Watermark = function Watermark(_ref) {
118
+ var _ref$content = _ref.content,
119
+ content = _ref$content === void 0 ? 'Watermark' : _ref$content,
120
+ image = _ref.image,
121
+ _ref$width = _ref.width,
122
+ width = _ref$width === void 0 ? 120 : _ref$width,
123
+ _ref$height = _ref.height,
124
+ height = _ref$height === void 0 ? 64 : _ref$height,
125
+ _ref$rotate = _ref.rotate,
126
+ rotate = _ref$rotate === void 0 ? -22 : _ref$rotate,
127
+ _ref$opacity = _ref.opacity,
128
+ opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
129
+ _ref$fontSize = _ref.fontSize,
130
+ fontSize = _ref$fontSize === void 0 ? 16 : _ref$fontSize,
131
+ fontColor = _ref.fontColor,
132
+ _ref$fontFamily = _ref.fontFamily,
133
+ fontFamily = _ref$fontFamily === void 0 ? 'sans-serif' : _ref$fontFamily,
134
+ _ref$gapX = _ref.gapX,
135
+ gapX = _ref$gapX === void 0 ? 100 : _ref$gapX,
136
+ _ref$gapY = _ref.gapY,
137
+ gapY = _ref$gapY === void 0 ? 100 : _ref$gapY,
138
+ _ref$offsetLeft = _ref.offsetLeft,
139
+ offsetLeft = _ref$offsetLeft === void 0 ? 0 : _ref$offsetLeft,
140
+ _ref$offsetTop = _ref.offsetTop,
141
+ offsetTop = _ref$offsetTop === void 0 ? 0 : _ref$offsetTop,
142
+ _ref$zIndex = _ref.zIndex,
143
+ zIndex = _ref$zIndex === void 0 ? 9 : _ref$zIndex,
144
+ _ref$className = _ref.className,
145
+ className = _ref$className === void 0 ? '' : _ref$className,
146
+ style = _ref.style,
147
+ children = _ref.children;
148
+ var containerRef = (0, _react.useRef)(null);
149
+ var watermarkRef = (0, _react.useRef)(null);
150
+ var _useState = (0, _react.useState)(''),
151
+ _useState2 = _slicedToArray(_useState, 2),
152
+ watermarkUrl = _useState2[0],
153
+ setWatermarkUrl = _useState2[1];
154
+ var _useState3 = (0, _react.useState)(function () {
155
+ // 在客户端初始化时检测深色模式,默认为 false(亮色模式)
156
+ if (typeof window !== 'undefined') {
157
+ return isDarkMode();
158
+ }
159
+ return false; // 默认亮色模式
160
+ }),
161
+ _useState4 = _slicedToArray(_useState3, 2),
162
+ darkMode = _useState4[0],
163
+ setDarkMode = _useState4[1];
164
+
165
+ // 使用默认字体颜色(如果未指定),依赖于 darkMode state
166
+ var finalFontColor = (0, _react.useMemo)(function () {
167
+ if (fontColor) {
168
+ return fontColor;
169
+ }
170
+ // 提高默认透明度,确保可见性
171
+ // 亮色模式使用深色(黑色),深色模式使用浅色(白色)
172
+ // 确保在客户端环境下正确检测,如果 darkMode 未初始化,默认使用亮色模式(黑色)
173
+ if (typeof window === 'undefined') {
174
+ return 'rgba(0, 0, 0, 0.35)'; // 服务端渲染默认亮色
175
+ }
176
+ var isDark = darkMode !== null && darkMode !== void 0 ? darkMode : isDarkMode();
177
+ return isDark ? 'rgba(255, 255, 255, 0.4)' : 'rgba(0, 0, 0, 0.35)';
178
+ }, [fontColor, darkMode]);
179
+
180
+ // 监听深色模式变化
181
+ (0, _react.useEffect)(function () {
182
+ var checkDarkMode = function checkDarkMode() {
183
+ var newDarkMode = isDarkMode();
184
+ setDarkMode(newDarkMode);
185
+ };
186
+
187
+ // 立即检查一次,确保初始状态正确
188
+ checkDarkMode();
189
+
190
+ // 延迟再检查一次,确保 DOM 已完全加载
191
+ var timer = setTimeout(function () {
192
+ checkDarkMode();
193
+ }, 100);
194
+
195
+ // 监听主题变化
196
+ var observer = new MutationObserver(checkDarkMode);
197
+ observer.observe(document.documentElement, {
198
+ attributes: true,
199
+ attributeFilter: ['data-theme', 'data-prefers-color-scheme', 'data-prefers-color', 'class']
200
+ });
201
+ observer.observe(document.body, {
202
+ attributes: true,
203
+ attributeFilter: ['class']
204
+ });
205
+
206
+ // 监听系统偏好变化
207
+ var mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
208
+ var handleChange = function handleChange() {
209
+ return checkDarkMode();
210
+ };
211
+ if (mediaQuery.addEventListener) {
212
+ mediaQuery.addEventListener('change', handleChange);
213
+ } else {
214
+ // 兼容旧版浏览器
215
+ mediaQuery.addListener(handleChange);
216
+ }
217
+ return function () {
218
+ clearTimeout(timer);
219
+ observer.disconnect();
220
+ if (mediaQuery.removeEventListener) {
221
+ mediaQuery.removeEventListener('change', handleChange);
222
+ } else {
223
+ mediaQuery.removeListener(handleChange);
224
+ }
225
+ };
226
+ }, []);
227
+ (0, _react.useEffect)(function () {
228
+ if (!content && !image) return;
229
+
230
+ // 确保 finalFontColor 已经计算好
231
+ if (!finalFontColor) {
232
+ // 如果 finalFontColor 还未计算好,使用默认的黑色(亮色模式)
233
+ var defaultColor = 'rgba(0, 0, 0, 0.35)';
234
+ var url = generateWatermark(content, undefined, {
235
+ width: width,
236
+ height: height,
237
+ rotate: rotate,
238
+ opacity: opacity,
239
+ fontSize: fontSize,
240
+ fontColor: defaultColor,
241
+ fontFamily: fontFamily
242
+ });
243
+ setWatermarkUrl(url);
244
+ return;
245
+ }
246
+
247
+ // 如果使用图片,需要等待图片加载
248
+ if (image) {
249
+ var img = new Image();
250
+ img.crossOrigin = 'anonymous';
251
+ img.onload = function () {
252
+ var canvas = document.createElement('canvas');
253
+ var ctx = canvas.getContext('2d');
254
+ if (!ctx) return;
255
+ canvas.width = width;
256
+ canvas.height = height;
257
+ ctx.save();
258
+ ctx.globalAlpha = opacity;
259
+ ctx.translate(width / 2, height / 2);
260
+ ctx.rotate(rotate * Math.PI / 180);
261
+ ctx.translate(-width / 2, -height / 2);
262
+ ctx.drawImage(img, 0, 0, width, height);
263
+ ctx.restore();
264
+ setWatermarkUrl(canvas.toDataURL());
265
+ };
266
+ img.onerror = function () {
267
+ // 图片加载失败,使用文字
268
+ var url = generateWatermark(content || 'Watermark', undefined, {
269
+ width: width,
270
+ height: height,
271
+ rotate: rotate,
272
+ opacity: opacity,
273
+ fontSize: fontSize,
274
+ fontColor: finalFontColor,
275
+ fontFamily: fontFamily
276
+ });
277
+ setWatermarkUrl(url);
278
+ };
279
+ img.src = image;
280
+ } else {
281
+ // 使用文字
282
+ var _url = generateWatermark(content, undefined, {
283
+ width: width,
284
+ height: height,
285
+ rotate: rotate,
286
+ opacity: opacity,
287
+ fontSize: fontSize,
288
+ fontColor: finalFontColor,
289
+ fontFamily: fontFamily
290
+ });
291
+ setWatermarkUrl(_url);
292
+ }
293
+ }, [content, image, width, height, rotate, opacity, fontSize, finalFontColor, fontFamily, darkMode]);
294
+
295
+ // 更新水印位置和大小
296
+ var updateWatermark = (0, _react.useCallback)(function () {
297
+ if (!containerRef.current || !watermarkRef.current || !watermarkUrl) return;
298
+ var watermark = watermarkRef.current;
299
+
300
+ // 设置背景图片
301
+ var backgroundSize = "".concat(width + gapX, "px ").concat(height + gapY, "px");
302
+ var backgroundPosition = "".concat(offsetLeft, "px ").concat(offsetTop, "px");
303
+ watermark.style.backgroundImage = "url(".concat(watermarkUrl, ")");
304
+ watermark.style.backgroundSize = backgroundSize;
305
+ watermark.style.backgroundPosition = backgroundPosition;
306
+ watermark.style.backgroundRepeat = 'repeat';
307
+ }, [watermarkUrl, gapX, gapY, offsetLeft, offsetTop, width, height]);
308
+
309
+ // 监听容器大小变化
310
+ (0, _react.useEffect)(function () {
311
+ if (!containerRef.current || !watermarkRef.current) return;
312
+ var resizeObserver = new ResizeObserver(function () {
313
+ if (!containerRef.current || !watermarkRef.current) return;
314
+ updateWatermark();
315
+ });
316
+ resizeObserver.observe(containerRef.current);
317
+ return function () {
318
+ resizeObserver.disconnect();
319
+ };
320
+ }, [updateWatermark]);
321
+ (0, _react.useEffect)(function () {
322
+ if (watermarkUrl) {
323
+ updateWatermark();
324
+ }
325
+ }, [watermarkUrl, updateWatermark]);
326
+ var watermarkStyle = _objectSpread({
327
+ position: 'absolute',
328
+ top: 0,
329
+ left: 0,
330
+ width: '100%',
331
+ height: '100%',
332
+ pointerEvents: 'none',
333
+ zIndex: zIndex,
334
+ opacity: 1
335
+ }, style);
336
+ var containerClassNames = ['kage-watermark', className].filter(Boolean).join(' ');
337
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
338
+ ref: containerRef,
339
+ className: containerClassNames,
340
+ style: {
341
+ position: 'relative'
342
+ },
343
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
344
+ ref: watermarkRef,
345
+ className: "kage-watermark-content",
346
+ style: watermarkStyle
347
+ }), children && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
348
+ className: "kage-watermark-children",
349
+ children: children
350
+ })]
351
+ });
352
+ };
353
+ var _default = exports.default = Watermark;
@@ -0,0 +1,31 @@
1
+ // Watermark 水印组件样式
2
+
3
+ @prefix: kage-watermark;
4
+
5
+ // ============ 主容器 ============
6
+ .@{prefix} {
7
+ position: relative;
8
+ overflow: hidden;
9
+
10
+ * {
11
+ box-sizing: border-box;
12
+ }
13
+ }
14
+
15
+ // ============ 水印内容 ============
16
+ .@{prefix}-content {
17
+ position: absolute;
18
+ top: 0;
19
+ left: 0;
20
+ width: 100%;
21
+ height: 100%;
22
+ pointer-events: none;
23
+ z-index: 9;
24
+ }
25
+
26
+ // ============ 子元素 ============
27
+ .@{prefix}-children {
28
+ position: relative;
29
+ z-index: 1;
30
+ }
31
+
@@ -42,3 +42,87 @@ export { default as DatePicker } from './DatePicker';
42
42
  export type { DatePickerProps } from './DatePicker';
43
43
  export { default as Form, FormItem } from './Form';
44
44
  export type { FormProps, FormItemProps, Rule, FormInstance } from './Form';
45
+ export { default as Input } from './Input';
46
+ export type { InputProps } from './Input';
47
+ export { default as InputNumber } from './InputNumber';
48
+ export type { InputNumberProps } from './InputNumber';
49
+ export { default as Mentions } from './Mentions';
50
+ export type { MentionsProps, MentionOption } from './Mentions';
51
+ export { default as Radio, RadioGroup, RadioButton } from './Radio';
52
+ export type { RadioProps, RadioGroupProps, RadioButtonProps, RadioOptionType } from './Radio';
53
+ export { default as Rate } from './Rate';
54
+ export type { RateProps } from './Rate';
55
+ export { default as Select } from './Select';
56
+ export type { SelectProps, SelectOption, SelectValue } from './Select';
57
+ export { default as Slider } from './Slider';
58
+ export type { SliderProps, SliderValue } from './Slider';
59
+ export { default as Switch } from './Switch';
60
+ export type { SwitchProps } from './Switch';
61
+ export { default as TimePicker } from './TimePicker';
62
+ export type { TimePickerProps, TimeValue } from './TimePicker';
63
+ export { default as Transfer } from './Transfer';
64
+ export type { TransferProps, TransferItem, TransferDirection } from './Transfer';
65
+ export { default as TreeSelect } from './TreeSelect';
66
+ export type { TreeSelectProps, TreeNode as TreeSelectTreeNode } from './TreeSelect';
67
+ export { default as Upload } from './Upload';
68
+ export type { UploadProps, UploadFile, UploadListType } from './Upload';
69
+ export { default as Avatar } from './Avatar';
70
+ export type { AvatarProps, AvatarGroupProps, AvatarSize, AvatarShape } from './Avatar';
71
+ export { default as Badge } from './Badge';
72
+ export type { BadgeProps, BadgeRibbonProps, BadgeStatus } from './Badge';
73
+ export { default as Calendar } from './Calendar';
74
+ export type { CalendarProps, CalendarMode } from './Calendar';
75
+ export { default as Card } from './Card';
76
+ export type { CardProps, CardMetaProps, CardGridProps, CardSize } from './Card';
77
+ export { default as Carousel } from './Carousel';
78
+ export type { CarouselProps, DotPosition } from './Carousel';
79
+ export { default as Collapse } from './Collapse';
80
+ export type { CollapseProps, CollapseItemProps } from './Collapse';
81
+ export { default as Descriptions } from './Descriptions';
82
+ export type { DescriptionsProps, DescriptionsItemProps } from './Descriptions';
83
+ export { default as Empty } from './Empty';
84
+ export type { EmptyProps } from './Empty';
85
+ export { default as Image } from './Image';
86
+ export type { ImageProps } from './Image';
87
+ export { default as Popover } from './Popover';
88
+ export type { PopoverProps, PopoverPlacement, PopoverTrigger } from './Popover';
89
+ export { default as QRCode } from './QRCode';
90
+ export type { QRCodeProps } from './QRCode';
91
+ export { default as Segmented } from './Segmented';
92
+ export type { SegmentedProps, SegmentedOption, SegmentedValue } from './Segmented';
93
+ export { default as Statistic } from './Statistic';
94
+ export type { StatisticProps } from './Statistic';
95
+ export { default as Table } from './Table';
96
+ export type { TableProps, ColumnType, TableColumnType, RowSelection, TablePagination, SortOrder, AlignType, TableSize, FilterItem, } from './Table';
97
+ export { default as Tag, CheckableTag } from './Tag';
98
+ export type { TagProps, CheckableTagProps, TagPresetColor, TagPresetStatus, } from './Tag';
99
+ export { default as Timeline, TimelineItem } from './Timeline';
100
+ export type { TimelineProps, TimelineItemProps, TimelineItemColor, TimelineMode, } from './Timeline';
101
+ export { default as Tooltip } from './Tooltip';
102
+ export type { TooltipProps, TooltipPlacement, TooltipTrigger, TooltipColor, } from './Tooltip';
103
+ export { default as Tree } from './Tree';
104
+ export type { TreeProps, TreeNode, TreeSelectMode, } from './Tree';
105
+ export { default as Alert } from './Alert';
106
+ export type { AlertProps, AlertType, } from './Alert';
107
+ export { default as Drawer } from './Drawer';
108
+ export type { DrawerProps, DrawerPlacement, } from './Drawer';
109
+ export { default as Message } from './Message';
110
+ export type { MessageApi, MessageConfig, MessageType, } from './Message';
111
+ export { default as Modal } from './Modal';
112
+ export type { ModalProps, } from './Modal';
113
+ export { default as Notification } from './Notification';
114
+ export type { NotificationApi, NotificationConfig, NotificationType, NotificationPlacement, } from './Notification';
115
+ export { default as Popconfirm } from './Popconfirm';
116
+ export type { PopconfirmProps, PopconfirmPlacement, PopconfirmTrigger, } from './Popconfirm';
117
+ export { default as Progress } from './Progress';
118
+ export type { ProgressProps, ProgressType, ProgressStatus, } from './Progress';
119
+ export { default as Result } from './Result';
120
+ export type { ResultProps, ResultStatus, } from './Result';
121
+ export { default as FloatButton } from './FloatButton';
122
+ export type { FloatButtonProps, FloatButtonGroupProps, FloatButtonType, FloatButtonShape, FloatButtonTrigger, } from './FloatButton';
123
+ export { default as Skeleton } from './Skeleton';
124
+ export type { SkeletonProps, SkeletonButtonProps, SkeletonInputProps, SkeletonImageProps, SkeletonAvatarProps, } from './Skeleton';
125
+ export { default as Spin } from './Spin';
126
+ export type { SpinProps } from './Spin';
127
+ export { default as Watermark } from './Watermark';
128
+ export type { WatermarkProps } from './Watermark';