antd-solid 0.0.11 → 0.0.13

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 (347) hide show
  1. package/css/index.css +10 -73
  2. package/dist/index.esm.js +7802 -2378
  3. package/dist/index.umd.js +1 -1
  4. package/es/Alert/index.d.ts +10 -0
  5. package/es/Alert/index.js +26 -0
  6. package/es/Button/index.d.ts +32 -0
  7. package/es/Button/index.js +123 -0
  8. package/es/Button/index.scss.js +6 -0
  9. package/es/Checkbox/Group.d.ts +19 -0
  10. package/es/Checkbox/Group.js +49 -0
  11. package/es/Checkbox/index.d.ts +15 -0
  12. package/es/Checkbox/index.js +60 -0
  13. package/es/CodeInput/index.d.ts +18 -0
  14. package/es/CodeInput/index.js +72 -0
  15. package/es/Collapse/Item.d.ts +46 -0
  16. package/es/Collapse/Item.js +130 -0
  17. package/es/Collapse/context.d.ts +5 -0
  18. package/es/Collapse/context.js +8 -0
  19. package/es/Collapse/index.d.ts +25 -10
  20. package/es/Collapse/index.js +95 -74
  21. package/es/Collapse/utils.d.ts +8 -0
  22. package/es/Collapse/utils.js +35 -0
  23. package/es/ColorPicker/ColorPickerInput.d.ts +3 -0
  24. package/es/ColorPicker/ColorPickerInput.js +250 -0
  25. package/es/ColorPicker/ColorPickerSelect.d.ts +3 -0
  26. package/es/ColorPicker/ColorPickerSelect.js +71 -0
  27. package/es/ColorPicker/ColorPickerSlider.d.ts +3 -0
  28. package/es/ColorPicker/ColorPickerSlider.js +115 -0
  29. package/es/ColorPicker/color.d.ts +24 -0
  30. package/es/ColorPicker/color.js +63 -0
  31. package/es/ColorPicker/context.d.ts +9 -0
  32. package/es/ColorPicker/context.js +5 -0
  33. package/es/ColorPicker/index.d.ts +31 -0
  34. package/es/ColorPicker/index.js +139 -0
  35. package/es/Command/context.d.ts +9 -0
  36. package/es/Command/context.js +11 -0
  37. package/es/Command/createCommand.d.ts +17 -0
  38. package/es/Command/createCommand.js +112 -0
  39. package/es/Command/index.d.ts +7 -0
  40. package/es/Command/index.js +9 -0
  41. package/es/Command/useCommandProps.d.ts +13 -0
  42. package/es/Command/useCommandProps.js +28 -0
  43. package/es/Compact/CompactContextIsolator.d.ts +3 -0
  44. package/es/Compact/CompactContextIsolator.js +15 -0
  45. package/es/Compact/context.d.ts +4 -0
  46. package/es/Compact/context.js +7 -0
  47. package/es/Compact/index.d.ts +14 -0
  48. package/es/Compact/index.js +32 -0
  49. package/es/Compact/index.scss.js +6 -0
  50. package/es/ConfigProvider/context.d.ts +11 -0
  51. package/es/ConfigProvider/context.js +15 -0
  52. package/es/ConfigProvider/dark/colorAlgorithm.d.ts +2 -0
  53. package/es/ConfigProvider/dark/colorAlgorithm.js +9 -0
  54. package/es/ConfigProvider/dark/colors.d.ts +3 -0
  55. package/es/ConfigProvider/dark/colors.js +47 -0
  56. package/es/ConfigProvider/dark/index.d.ts +2 -0
  57. package/es/ConfigProvider/dark/index.js +11 -0
  58. package/es/ConfigProvider/index.d.ts +32 -0
  59. package/es/ConfigProvider/index.js +44 -0
  60. package/es/ConfigProvider/light/colorAlgorithm.d.ts +2 -0
  61. package/es/ConfigProvider/light/colorAlgorithm.js +9 -0
  62. package/es/ConfigProvider/light/colors.d.ts +3 -0
  63. package/es/ConfigProvider/light/colors.js +45 -0
  64. package/es/ConfigProvider/light/index.d.ts +2 -0
  65. package/es/ConfigProvider/light/index.js +11 -0
  66. package/es/ConfigProvider/seed.d.ts +3 -0
  67. package/es/ConfigProvider/seed.js +22 -0
  68. package/es/ConfigProvider/types/index.d.ts +594 -0
  69. package/es/ConfigProvider/types/index.js +1 -0
  70. package/es/ConfigProvider/utils/genColorMapToken.d.ts +7 -0
  71. package/es/ConfigProvider/utils/genColorMapToken.js +85 -0
  72. package/es/ConfigProvider/utils/getAlphaColor.d.ts +2 -0
  73. package/es/ConfigProvider/utils/getAlphaColor.js +44 -0
  74. package/es/ConfigProvider/utils/index.d.ts +3 -0
  75. package/es/ConfigProvider/utils/index.js +181 -0
  76. package/es/ContextMenu/index.d.ts +8 -0
  77. package/es/ContextMenu/index.js +99 -0
  78. package/es/Cursor/index.d.ts +6 -0
  79. package/es/Cursor/index.js +71 -0
  80. package/es/DelayShow/index.d.ts +16 -0
  81. package/es/DelayShow/index.js +27 -0
  82. package/es/Divider/index.d.ts +17 -0
  83. package/es/Divider/index.js +71 -0
  84. package/es/Drawer/index.d.ts +20 -16
  85. package/es/Drawer/index.js +162 -112
  86. package/es/Drawer/index.scss.js +1 -1
  87. package/es/Dropdown/index.d.ts +16 -0
  88. package/es/Dropdown/index.js +47 -0
  89. package/es/Element/index.d.ts +10 -0
  90. package/es/Element/index.js +42 -0
  91. package/es/Empty/PRESENTED_IMAGE_SIMPLE.d.ts +2 -1
  92. package/es/Empty/PRESENTED_IMAGE_SIMPLE.js +25 -9
  93. package/es/Empty/assets/EmptySvg.js +1 -1
  94. package/es/Empty/assets/SimpleEmptySvg.js +1 -1
  95. package/es/Empty/index.d.ts +9 -3
  96. package/es/Empty/index.js +24 -9
  97. package/es/Form/Form.d.ts +8 -5
  98. package/es/Form/Form.js +50 -34
  99. package/es/Form/FormItem.d.ts +10 -5
  100. package/es/Form/FormItem.js +121 -104
  101. package/es/Form/context.d.ts +9 -9
  102. package/es/Form/context.js +4 -2
  103. package/es/Fragment/index.d.ts +4 -0
  104. package/es/Fragment/index.js +7 -0
  105. package/es/Image/index.d.ts +10 -0
  106. package/es/Image/index.js +37 -0
  107. package/es/Input/TextArea.d.ts +23 -0
  108. package/es/Input/TextArea.js +84 -0
  109. package/es/Input/index.d.ts +44 -0
  110. package/es/Input/index.js +213 -0
  111. package/es/Input/index.scss.js +6 -0
  112. package/es/InputNumber/index.d.ts +30 -0
  113. package/es/InputNumber/index.js +122 -0
  114. package/es/{InputNumber.test.js → InputNumber/index.test.js} +2 -1
  115. package/es/Menu/InternalMenu.d.ts +22 -0
  116. package/es/Menu/InternalMenu.js +196 -0
  117. package/es/Menu/index.d.ts +75 -0
  118. package/es/Menu/index.js +64 -0
  119. package/es/Message/Message.d.ts +9 -0
  120. package/es/Message/Message.js +34 -0
  121. package/es/Message/index.d.ts +12 -0
  122. package/es/Message/index.js +80 -0
  123. package/es/Message/index.scss.js +6 -0
  124. package/es/Message/useMessage.d.ts +6 -0
  125. package/es/Message/useMessage.js +54 -0
  126. package/es/Modal/index.d.ts +73 -0
  127. package/es/Modal/index.js +237 -0
  128. package/es/Modal/index.scss.js +6 -0
  129. package/es/Modal/useModal.d.ts +5 -0
  130. package/es/Modal/useModal.js +51 -0
  131. package/es/Modal/warning.d.ts +5 -0
  132. package/es/Modal/warning.js +43 -0
  133. package/es/{Popconfirm.d.ts → Popconfirm/index.d.ts} +2 -2
  134. package/es/Popconfirm/index.js +62 -0
  135. package/es/{Popover.d.ts → Popover/index.d.ts} +2 -2
  136. package/es/{Popover.js → Popover/index.js} +7 -12
  137. package/es/Progress/Circle.d.ts +16 -0
  138. package/es/Progress/Circle.js +122 -0
  139. package/es/Progress/index.d.ts +6 -4
  140. package/es/Progress/index.js +75 -60
  141. package/es/Radio/Button.d.ts +7 -0
  142. package/es/Radio/Button.js +72 -0
  143. package/es/Radio/Group.d.ts +18 -0
  144. package/es/Radio/Group.js +57 -0
  145. package/es/Radio/index.d.ts +14 -0
  146. package/es/Radio/index.js +68 -0
  147. package/es/RangeInput/index.d.ts +23 -0
  148. package/es/RangeInput/index.js +208 -0
  149. package/es/Result/index.js +49 -0
  150. package/es/Segmented/index.d.ts +10 -7
  151. package/es/Segmented/index.js +54 -53
  152. package/es/Select/index.d.ts +17 -0
  153. package/es/Select/index.js +75 -0
  154. package/es/SelectInput/index.d.ts +39 -0
  155. package/es/SelectInput/index.js +245 -0
  156. package/es/Slider/index.d.ts +47 -0
  157. package/es/Slider/index.js +177 -0
  158. package/es/Space/index.d.ts +13 -0
  159. package/es/Space/index.js +16 -0
  160. package/es/Spin/index.d.ts +19 -0
  161. package/es/Spin/index.js +82 -0
  162. package/es/{Switch.d.ts → Switch/index.d.ts} +9 -0
  163. package/es/Switch/index.js +41 -0
  164. package/es/{Table.d.ts → Table/index.d.ts} +6 -2
  165. package/es/Table/index.js +71 -0
  166. package/es/Tabs/index.d.ts +49 -0
  167. package/es/Tabs/index.js +256 -0
  168. package/es/Timeline/index.js +31 -0
  169. package/es/Tooltip/context.d.ts +5 -0
  170. package/es/Tooltip/context.js +5 -0
  171. package/es/Tooltip/index.d.ts +64 -0
  172. package/es/Tooltip/index.js +499 -0
  173. package/es/Transformer/index.d.ts +88 -0
  174. package/es/Transformer/index.js +882 -0
  175. package/es/Tree/SingleLevelTree.d.ts +28 -0
  176. package/es/Tree/SingleLevelTree.js +299 -0
  177. package/es/Tree/index.d.ts +83 -0
  178. package/es/Tree/index.js +197 -0
  179. package/es/TreeFor/index.d.ts +31 -0
  180. package/es/TreeFor/index.js +80 -0
  181. package/es/TreeSelect/index.d.ts +26 -0
  182. package/es/TreeSelect/index.js +98 -0
  183. package/es/Upload/index.d.ts +64 -0
  184. package/es/Upload/index.js +112 -0
  185. package/es/assets/svg/ColorPickUp.d.ts +4 -0
  186. package/es/assets/svg/ColorPickUp.js +25 -0
  187. package/es/assets/svg/Crosshair.d.ts +7 -0
  188. package/es/assets/svg/Crosshair.js +51 -0
  189. package/es/assets/svg/Resize.d.ts +4 -0
  190. package/es/assets/svg/Resize.js +25 -0
  191. package/es/assets/svg/Rotate.d.ts +4 -0
  192. package/es/assets/svg/Rotate.js +20 -0
  193. package/es/assets/svg/RotateArrow.d.ts +4 -0
  194. package/es/assets/svg/RotateArrow.js +21 -0
  195. package/es/assets/svg/common.d.ts +2 -0
  196. package/es/assets/svg/common.js +9 -0
  197. package/es/hooks/createControllableValue.d.ts +1 -1
  198. package/es/hooks/createControllableValue.js +16 -17
  199. package/es/hooks/createTransition.d.ts +6 -2
  200. package/es/hooks/createTransition.js +12 -8
  201. package/es/hooks/useClickAway.d.ts +1 -1
  202. package/es/hooks/useClickAway.js +4 -3
  203. package/es/hooks/useComponentSize.d.ts +3 -0
  204. package/es/hooks/useComponentSize.js +12 -0
  205. package/es/hooks/useCounter.d.ts +12 -0
  206. package/es/hooks/useCounter.js +30 -0
  207. package/es/hooks/useFocus.d.ts +2 -0
  208. package/es/hooks/useFocus.js +24 -0
  209. package/es/hooks/useHover.d.ts +2 -0
  210. package/es/hooks/useHover.js +33 -0
  211. package/es/hooks/useLocale.d.ts +1 -0
  212. package/es/hooks/useLocale.js +11 -0
  213. package/es/hooks/useMouse.d.ts +1 -0
  214. package/es/hooks/useMouse.js +18 -0
  215. package/es/hooks/useScroll.d.ts +2 -0
  216. package/es/hooks/useScroll.js +29 -0
  217. package/es/hooks/useSize.d.ts +8 -2
  218. package/es/hooks/useSize.js +25 -13
  219. package/es/hooks/useVirtualList.d.ts +14 -0
  220. package/es/hooks/useVirtualList.js +45 -0
  221. package/es/index.d.ts +59 -8
  222. package/es/index.js +53 -23
  223. package/es/locale/en_US.d.ts +3 -0
  224. package/es/locale/en_US.js +9 -0
  225. package/es/locale/index.d.ts +5 -0
  226. package/es/locale/index.js +1 -0
  227. package/es/locale/zh_CN.d.ts +3 -0
  228. package/es/locale/zh_CN.js +9 -0
  229. package/es/types/index.d.ts +11 -2
  230. package/es/utils/animation.d.ts +6 -0
  231. package/es/utils/animation.js +20 -0
  232. package/es/utils/array.d.ts +2 -1
  233. package/es/utils/array.js +5 -1
  234. package/es/utils/domPoint.d.ts +7 -0
  235. package/es/utils/domPoint.js +11 -0
  236. package/es/utils/math.d.ts +17 -0
  237. package/es/utils/math.js +25 -0
  238. package/es/utils/number.d.ts +1 -0
  239. package/es/utils/number.js +14 -0
  240. package/es/utils/setupGlobalDrag.d.ts +10 -0
  241. package/es/utils/setupGlobalDrag.js +38 -0
  242. package/es/utils/solid.d.ts +2 -2
  243. package/es/utils/solid.js +7 -8
  244. package/package.json +10 -11
  245. package/es/Button.d.ts +0 -19
  246. package/es/Button.js +0 -73
  247. package/es/ColorPicker.d.ts +0 -8
  248. package/es/ColorPicker.js +0 -6
  249. package/es/Compact.d.ts +0 -12
  250. package/es/Compact.js +0 -17
  251. package/es/DatePicker.d.ts +0 -19
  252. package/es/DatePicker.js +0 -9
  253. package/es/Image.d.ts +0 -9
  254. package/es/Image.js +0 -22
  255. package/es/Input.d.ts +0 -29
  256. package/es/Input.js +0 -144
  257. package/es/InputNumber.d.ts +0 -11
  258. package/es/InputNumber.js +0 -92
  259. package/es/Modal.d.ts +0 -48
  260. package/es/Modal.js +0 -209
  261. package/es/Popconfirm.js +0 -64
  262. package/es/Radio.d.ts +0 -27
  263. package/es/Radio.js +0 -93
  264. package/es/Result.js +0 -29
  265. package/es/Select.d.ts +0 -16
  266. package/es/Select.js +0 -113
  267. package/es/Skeleton.d.ts +0 -9
  268. package/es/Skeleton.js +0 -9
  269. package/es/Spin.d.ts +0 -9
  270. package/es/Spin.js +0 -22
  271. package/es/Switch.js +0 -30
  272. package/es/Table.js +0 -57
  273. package/es/Tabs.d.ts +0 -17
  274. package/es/Tabs.js +0 -117
  275. package/es/Timeline.js +0 -30
  276. package/es/Tooltip.d.ts +0 -34
  277. package/es/Tooltip.js +0 -302
  278. package/es/Tree.d.ts +0 -28
  279. package/es/Tree.js +0 -198
  280. package/es/Upload.d.ts +0 -11
  281. package/es/Upload.js +0 -6
  282. package/es/hooks/createUpdateEffect.d.ts +0 -5
  283. package/es/hooks/createUpdateEffect.js +0 -12
  284. package/es/utils/EventEmitter.d.ts +0 -7
  285. package/es/utils/EventEmitter.js +0 -13
  286. package/es/utils/ReactToSolid.d.ts +0 -8
  287. package/es/utils/ReactToSolid.js +0 -30
  288. package/es/utils/SolidToReact.d.ts +0 -8
  289. package/es/utils/SolidToReact.js +0 -23
  290. package/es/utils/component.d.ts +0 -31
  291. package/es/utils/component.js +0 -68
  292. package/es/utils/zh_CN.d.ts +0 -2
  293. package/es/utils/zh_CN.js +0 -236
  294. package/src/Button.tsx +0 -128
  295. package/src/Collapse/index.tsx +0 -86
  296. package/src/ColorPicker.tsx +0 -11
  297. package/src/Compact.tsx +0 -15
  298. package/src/DatePicker.tsx +0 -30
  299. package/src/Drawer/index.scss +0 -53
  300. package/src/Drawer/index.tsx +0 -212
  301. package/src/Empty/PRESENTED_IMAGE_SIMPLE.tsx +0 -15
  302. package/src/Empty/assets/EmptySvg.tsx +0 -43
  303. package/src/Empty/assets/SimpleEmptySvg.tsx +0 -16
  304. package/src/Empty/index.tsx +0 -20
  305. package/src/Form/Form.tsx +0 -94
  306. package/src/Form/FormItem.tsx +0 -141
  307. package/src/Form/context.ts +0 -16
  308. package/src/Form/index.ts +0 -13
  309. package/src/Image.tsx +0 -29
  310. package/src/Input.tsx +0 -202
  311. package/src/InputNumber.test.tsx +0 -46
  312. package/src/InputNumber.tsx +0 -125
  313. package/src/Modal.tsx +0 -220
  314. package/src/Popconfirm.tsx +0 -75
  315. package/src/Popover.tsx +0 -30
  316. package/src/Progress/index.tsx +0 -73
  317. package/src/Radio.tsx +0 -142
  318. package/src/Result.tsx +0 -38
  319. package/src/Segmented/index.tsx +0 -95
  320. package/src/Select.tsx +0 -128
  321. package/src/Skeleton.tsx +0 -14
  322. package/src/Spin.tsx +0 -23
  323. package/src/Switch.tsx +0 -34
  324. package/src/Table.tsx +0 -53
  325. package/src/Tabs.tsx +0 -131
  326. package/src/Timeline.tsx +0 -33
  327. package/src/Tooltip.tsx +0 -340
  328. package/src/Tree.tsx +0 -246
  329. package/src/Upload.tsx +0 -10
  330. package/src/hooks/createControllableValue.ts +0 -68
  331. package/src/hooks/createTransition.ts +0 -52
  332. package/src/hooks/createUpdateEffect.ts +0 -16
  333. package/src/hooks/index.ts +0 -2
  334. package/src/hooks/useClickAway.ts +0 -18
  335. package/src/hooks/useSize.ts +0 -26
  336. package/src/index.ts +0 -47
  337. package/src/types/index.ts +0 -5
  338. package/src/utils/EventEmitter.ts +0 -15
  339. package/src/utils/ReactToSolid.tsx +0 -38
  340. package/src/utils/SolidToReact.tsx +0 -27
  341. package/src/utils/array.ts +0 -21
  342. package/src/utils/component.tsx +0 -85
  343. package/src/utils/solid.ts +0 -61
  344. package/src/utils/zh_CN.ts +0 -236
  345. /package/es/{InputNumber.test.d.ts → InputNumber/index.test.d.ts} +0 -0
  346. /package/es/{Result.d.ts → Result/index.d.ts} +0 -0
  347. /package/es/{Timeline.d.ts → Timeline/index.d.ts} +0 -0
@@ -0,0 +1,499 @@
1
+ import { createComponent, memo, Dynamic, Portal, insert, effect, className, style, template } from 'solid-js/web';
2
+ import { isEqual, compact } from 'lodash-es';
3
+ import { mergeProps, createSignal, useContext, children, createMemo, createEffect, onCleanup, createRenderEffect, on, Show } from 'solid-js';
4
+ import cs from 'classnames';
5
+ import { nanoid } from 'nanoid';
6
+ import createControllableValue from '../hooks/createControllableValue.js';
7
+ import useClickAway from '../hooks/useClickAway.js';
8
+ import useSize from '../hooks/useSize.js';
9
+ import DelayShow from '../DelayShow/index.js';
10
+ import useHover from '../hooks/useHover.js';
11
+ import Element$1 from '../Element/index.js';
12
+ import TooltipContext from './context.js';
13
+
14
+ var _tmpl$ = /*#__PURE__*/template(`<div>`);
15
+ const unwrapContent = (content, close) => {
16
+ return typeof content === 'function' ? content(close) : content;
17
+ };
18
+ const ARROW_STYLE_DICT = {
19
+ top: {
20
+ top: '100%',
21
+ left: '50%',
22
+ transform: 'translate(-50%, -50%) rotate(135deg)'
23
+ },
24
+ topLeft: {
25
+ top: '100%',
26
+ left: '8px',
27
+ transform: 'translateY(-50%) rotate(135deg)'
28
+ },
29
+ topRight: {
30
+ top: '100%',
31
+ right: '8px',
32
+ transform: 'translateY(-50%) rotate(135deg)'
33
+ },
34
+ bottom: {
35
+ bottom: '100%',
36
+ left: '50%',
37
+ transform: 'translate(-50%, 50%) rotate(-45deg)'
38
+ },
39
+ bottomLeft: {
40
+ bottom: '100%',
41
+ left: '8px',
42
+ transform: 'translateY(50%) rotate(-45deg)'
43
+ },
44
+ bottomRight: {
45
+ bottom: '100%',
46
+ right: '8px',
47
+ transform: 'translateY(50%) rotate(-45deg)'
48
+ },
49
+ left: {
50
+ top: '50%',
51
+ right: 0,
52
+ transform: 'translate(50%, -50%) rotate(45deg)'
53
+ },
54
+ leftTop: {
55
+ top: '8px',
56
+ right: 0,
57
+ transform: 'translate(50%, 0%) rotate(45deg)'
58
+ },
59
+ leftBottom: {
60
+ bottom: '8px',
61
+ right: 0,
62
+ transform: 'translate(50%, 0%) rotate(45deg)'
63
+ },
64
+ right: {
65
+ top: '50%',
66
+ left: 0,
67
+ transform: 'translate(-50%, -50%) rotate(-135deg)'
68
+ },
69
+ rightTop: {
70
+ top: '8px',
71
+ left: 0,
72
+ transform: 'translate(-50%, 0%) rotate(-135deg)'
73
+ },
74
+ rightBottom: {
75
+ bottom: '8px',
76
+ left: 0,
77
+ transform: 'translate(-50%, 0%) rotate(-135deg)'
78
+ }
79
+ };
80
+ const REVERSE_PLACEMENT_DICT = {
81
+ top: 'bottom',
82
+ bottom: 'top',
83
+ left: 'right',
84
+ right: 'left'
85
+ };
86
+ const mergePlacement = (mainPlacement, minorPlacement) => {
87
+ if (!minorPlacement) return mainPlacement;
88
+ switch (mainPlacement) {
89
+ case 'top':
90
+ return minorPlacement === 'left' ? 'topLeft' : 'topRight';
91
+ case 'bottom':
92
+ return minorPlacement === 'left' ? 'bottomLeft' : 'bottomRight';
93
+ case 'left':
94
+ return minorPlacement === 'top' ? 'leftTop' : 'leftBottom';
95
+ case 'right':
96
+ return minorPlacement === 'top' ? 'rightTop' : 'rightBottom';
97
+ }
98
+ };
99
+ const getMainPlacement = placement => {
100
+ let mainPlacement = 'top';
101
+ switch (placement) {
102
+ case 'bottom':
103
+ case 'bottomLeft':
104
+ case 'bottomRight':
105
+ mainPlacement = 'bottom';
106
+ break;
107
+ case 'left':
108
+ case 'leftTop':
109
+ case 'leftBottom':
110
+ mainPlacement = 'left';
111
+ break;
112
+ case 'right':
113
+ case 'rightTop':
114
+ case 'rightBottom':
115
+ mainPlacement = 'right';
116
+ break;
117
+ }
118
+ return mainPlacement;
119
+ };
120
+ const getMinorPlacement = placement => {
121
+ let minorPlacement;
122
+ switch (placement) {
123
+ case 'leftTop':
124
+ case 'rightTop':
125
+ minorPlacement = 'top';
126
+ break;
127
+ case 'leftBottom':
128
+ case 'rightBottom':
129
+ minorPlacement = 'bottom';
130
+ break;
131
+ case 'topLeft':
132
+ case 'bottomLeft':
133
+ minorPlacement = 'left';
134
+ break;
135
+ case 'topRight':
136
+ case 'bottomRight':
137
+ minorPlacement = 'right';
138
+ break;
139
+ }
140
+ return minorPlacement;
141
+ };
142
+ // TODO 超出范围滚动
143
+ const Tooltip = _props => {
144
+ const props = mergeProps({
145
+ trigger: 'hover',
146
+ placement: 'top',
147
+ mode: 'dark',
148
+ arrow: true,
149
+ getPopupContainer: () => document.body,
150
+ mouseLeaveDelay: 0.1,
151
+ plain: false,
152
+ autoAdjustOverflow: true
153
+ }, _props);
154
+ // ========================== Context ===========================
155
+ const [subPopupElements, setSubPopupElements] = createSignal({});
156
+ const parentContext = useContext(TooltipContext);
157
+ const context = {
158
+ registerSubPopup: (id, subPopupEle) => {
159
+ setSubPopupElements(prev => ({
160
+ ...prev,
161
+ [id]: subPopupEle
162
+ }));
163
+ parentContext?.registerSubPopup(id, subPopupEle);
164
+ }
165
+ };
166
+ // =========================== Tooltip ============================
167
+ const id = nanoid();
168
+ const resolvedChildren = children(() => createComponent(TooltipContext.Provider, {
169
+ value: context,
170
+ get children() {
171
+ return props.children;
172
+ }
173
+ }));
174
+ const [contentRef, setContentRef] = createSignal();
175
+ const setPopupRef = node => {
176
+ setContentRef(node);
177
+ parentContext?.registerSubPopup(id, node);
178
+ };
179
+ const [_open, setOpen] = createControllableValue(_props, {
180
+ defaultValue: false,
181
+ defaultValuePropName: 'defaultOpen',
182
+ valuePropName: 'open',
183
+ trigger: 'onOpenChange'
184
+ });
185
+ const isEmptyContent = createMemo(() => !props.content);
186
+ const open = createMemo(() => _open() && !props.disabled && !isEmptyContent());
187
+ const reverseOpen = () => setOpen(v => !v);
188
+ const show = () => setOpen(true);
189
+ const hide = () => setOpen(false);
190
+ // children 的 BoundingClientRect
191
+ const [childrenRect, setChildrenRect] = createSignal(new DOMRect(), {
192
+ equals: (a, b) => isEqual(a.toJSON(), b.toJSON())
193
+ });
194
+ createEffect(() => {
195
+ const _children = resolvedChildren();
196
+ if (!(_children instanceof Element)) return;
197
+ setChildrenRect(_children.getBoundingClientRect());
198
+ if (!open()) return;
199
+ let handle;
200
+ const tick = () => {
201
+ setChildrenRect(_children.getBoundingClientRect());
202
+ handle = window.requestAnimationFrame(tick);
203
+ };
204
+ tick();
205
+ onCleanup(() => {
206
+ if (typeof handle === 'number') window.cancelAnimationFrame(handle);
207
+ });
208
+ });
209
+ const hovering = useHover(() => {
210
+ const _children = resolvedChildren();
211
+ if (props.trigger === 'hover' && _children instanceof Element) {
212
+ return [_children, ...Object.values(subPopupElements())].concat(contentRef() ? [contentRef()] : []);
213
+ }
214
+ });
215
+ createEffect(() => {
216
+ if (props.trigger === 'hover') {
217
+ if (hovering()) {
218
+ show();
219
+ } else {
220
+ setTimeout(() => {
221
+ if (!hovering()) {
222
+ hide();
223
+ }
224
+ }, props.mouseLeaveDelay * 1000);
225
+ }
226
+ }
227
+ });
228
+ createEffect(() => {
229
+ const _children = resolvedChildren();
230
+ if (!(_children instanceof Element)) return;
231
+ const abortController = new AbortController();
232
+ switch (props.trigger) {
233
+ case 'click':
234
+ _children.addEventListener('click', reverseOpen, {
235
+ signal: abortController.signal
236
+ });
237
+ useClickAway(hide, () => compact([...Object.values(subPopupElements()), contentRef(), _children]));
238
+ break;
239
+ case 'focus':
240
+ _children.addEventListener('focusin', show, {
241
+ signal: abortController.signal
242
+ });
243
+ _children.addEventListener('focusout', hide, {
244
+ signal: abortController.signal
245
+ });
246
+ break;
247
+ }
248
+ onCleanup(() => {
249
+ abortController.abort();
250
+ });
251
+ });
252
+ const arrowOffset = createMemo(() => props.arrow ? 4 : 0);
253
+ let mainPlacementReverse = false;
254
+ let minorPlacementReverse = false;
255
+ createRenderEffect(on(open, () => {
256
+ mainPlacementReverse = false;
257
+ minorPlacementReverse = false;
258
+ }));
259
+ const [reversedMainPlacement, setReversedMainPlacement] = createSignal('top');
260
+ const [reversedMinorPlacement, setReversedMinorPlacement] = createSignal();
261
+ const contentSize = useSize(contentRef);
262
+ // 设置 content 显示时的 translate
263
+ createEffect(() => {
264
+ const _contentRef = contentRef();
265
+ const _contentSize = contentSize();
266
+ if (!_contentRef || !_contentSize || !open()) return;
267
+ let translateX = 0;
268
+ let translateY = 0;
269
+ const _childrenRect = new DOMRect(childrenRect().x, childrenRect().y, childrenRect().width, childrenRect().height);
270
+ if (props.offset) {
271
+ const [offsetX, offsetY] = props.offset;
272
+ _childrenRect.x += offsetX;
273
+ _childrenRect.y += offsetY;
274
+ }
275
+ const updateTranslateByMinorPlacement = placement => {
276
+ switch (placement) {
277
+ case 'top':
278
+ case 'bottom':
279
+ translateX = _childrenRect.left + _childrenRect.width / 2 - _contentSize.width / 2;
280
+ break;
281
+ case 'topLeft':
282
+ case 'bottomLeft':
283
+ translateX = _childrenRect.left;
284
+ break;
285
+ case 'topRight':
286
+ case 'bottomRight':
287
+ translateX = _childrenRect.right - _contentSize.width;
288
+ break;
289
+ case 'left':
290
+ case 'right':
291
+ translateY = _childrenRect.top + _childrenRect.height / 2 - _contentSize.height / 2;
292
+ break;
293
+ case 'leftTop':
294
+ case 'rightTop':
295
+ translateY = _childrenRect.top;
296
+ break;
297
+ case 'leftBottom':
298
+ case 'rightBottom':
299
+ translateY = _childrenRect.bottom - _contentSize.height;
300
+ break;
301
+ }
302
+ };
303
+ updateTranslateByMinorPlacement(props.placement);
304
+ const updateTranslateByMainPlacement = mainPlacement => {
305
+ const defaultOffset = props.offset ? 0 : 6;
306
+ switch (mainPlacement) {
307
+ case 'top':
308
+ translateY = _childrenRect.top - arrowOffset() - defaultOffset - _contentSize.height;
309
+ break;
310
+ case 'bottom':
311
+ translateY = _childrenRect.bottom + arrowOffset() + defaultOffset;
312
+ break;
313
+ case 'left':
314
+ translateX = _childrenRect.left - arrowOffset() - defaultOffset - _contentSize.width;
315
+ break;
316
+ case 'right':
317
+ translateX = _childrenRect.right + arrowOffset() + defaultOffset;
318
+ break;
319
+ }
320
+ };
321
+ let mainPlacement = getMainPlacement(props.placement);
322
+ if (props.autoAdjustOverflow) {
323
+ if (mainPlacementReverse) {
324
+ mainPlacement = REVERSE_PLACEMENT_DICT[mainPlacement];
325
+ }
326
+ updateTranslateByMainPlacement(mainPlacement);
327
+ const reverseMainPlacement = () => {
328
+ mainPlacementReverse = !mainPlacementReverse;
329
+ mainPlacement = REVERSE_PLACEMENT_DICT[mainPlacement];
330
+ updateTranslateByMainPlacement(mainPlacement);
331
+ };
332
+ switch (mainPlacement) {
333
+ case 'top':
334
+ if (translateY < 0) {
335
+ reverseMainPlacement();
336
+ }
337
+ break;
338
+ case 'bottom':
339
+ if (translateY + _contentSize.height > window.innerHeight) {
340
+ reverseMainPlacement();
341
+ }
342
+ break;
343
+ case 'left':
344
+ if (translateX + _contentSize.width > window.innerWidth) {
345
+ reverseMainPlacement();
346
+ }
347
+ break;
348
+ case 'right':
349
+ if (translateX < 0) {
350
+ reverseMainPlacement();
351
+ }
352
+ break;
353
+ }
354
+ let minorPlacement = getMinorPlacement(props.placement);
355
+ if (minorPlacement) {
356
+ if (minorPlacementReverse) {
357
+ minorPlacement = REVERSE_PLACEMENT_DICT[minorPlacement];
358
+ }
359
+ updateTranslateByMinorPlacement(mergePlacement(mainPlacement, minorPlacement));
360
+ const reverseMinorPlacement = () => {
361
+ if (!minorPlacement) return;
362
+ minorPlacementReverse = !minorPlacementReverse;
363
+ minorPlacement = REVERSE_PLACEMENT_DICT[minorPlacement];
364
+ updateTranslateByMinorPlacement(mergePlacement(mainPlacement, minorPlacement));
365
+ };
366
+ switch (minorPlacement) {
367
+ case 'top':
368
+ if (translateY < 0) {
369
+ reverseMinorPlacement();
370
+ }
371
+ break;
372
+ case 'bottom':
373
+ if (translateY + _contentSize.height > window.innerHeight) {
374
+ reverseMinorPlacement();
375
+ }
376
+ break;
377
+ case 'left':
378
+ if (translateX + _contentSize.width > window.innerWidth) {
379
+ reverseMinorPlacement();
380
+ }
381
+ break;
382
+ case 'right':
383
+ if (translateX < 0) {
384
+ reverseMinorPlacement();
385
+ }
386
+ break;
387
+ }
388
+ }
389
+ setReversedMainPlacement(mainPlacement);
390
+ setReversedMinorPlacement(minorPlacement);
391
+ } else {
392
+ updateTranslateByMainPlacement(mainPlacement);
393
+ }
394
+ _contentRef.style.setProperty('--translate-x', `${translateX}px`);
395
+ _contentRef.style.setProperty('--translate-y', `${translateY}px`);
396
+ // placement 为 top 和 bottom 时,tooltip 超出可视区域时对 content 进行偏移矫正
397
+ if (props.placement === 'top' || props.placement === 'bottom') {
398
+ let innerTranslateX = 0;
399
+ const maxInnerTranslateX = _contentSize.width / 2 - 20;
400
+ if (translateX < 0) {
401
+ innerTranslateX = Math.min(-translateX, maxInnerTranslateX);
402
+ }
403
+ if (translateX + _contentSize.width > window.innerWidth) {
404
+ innerTranslateX = Math.max(window.innerWidth - (translateX + _contentSize.width), -maxInnerTranslateX);
405
+ }
406
+ _contentRef.style.setProperty('--inner-translate-x', `${innerTranslateX}px`);
407
+ _contentRef.style.setProperty('--inner-translate-y', '0px');
408
+ } else if (props.placement === 'left' || props.placement === 'right') {
409
+ let innerTranslateY = 0;
410
+ const maxInnerTranslateY = _contentSize.height / 2 - 20;
411
+ if (translateY < 0) {
412
+ innerTranslateY = Math.min(-translateY, maxInnerTranslateY);
413
+ }
414
+ if (translateY + _contentSize.height > window.innerHeight) {
415
+ innerTranslateY = Math.max(window.innerHeight - (translateY + _contentSize.height), -maxInnerTranslateY);
416
+ }
417
+ _contentRef.style.setProperty('--inner-translate-x', '0px');
418
+ _contentRef.style.setProperty('--inner-translate-y', `${innerTranslateY}px`);
419
+ }
420
+ });
421
+ return [memo(resolvedChildren), createComponent(Dynamic, {
422
+ get component() {
423
+ return props.destroyOnClose ? Show : DelayShow;
424
+ },
425
+ get when() {
426
+ return open();
427
+ },
428
+ get children() {
429
+ return createComponent(Portal, {
430
+ get mount() {
431
+ return props.getPopupContainer();
432
+ },
433
+ get children() {
434
+ return createComponent(Element$1, {
435
+ ref: setPopupRef,
436
+ get ["class"]() {
437
+ return cs('z-1000 fixed left-0 top-0 [font-size:var(--ant-font-size)] text-[var(--ant-color-text)] leading-[var(--ant-line-height)]', open() ? 'block' : 'hidden');
438
+ },
439
+ style: {
440
+ transform: 'translate(var(--translate-x), var(--translate-y))'
441
+ },
442
+ onClick: e => {
443
+ e.stopPropagation();
444
+ },
445
+ get children() {
446
+ return [(() => {
447
+ var _el$ = _tmpl$();
448
+ insert(_el$, createComponent(TooltipContext.Provider, {
449
+ value: context,
450
+ get children() {
451
+ return unwrapContent(props.content, () => setOpen(false));
452
+ }
453
+ }));
454
+ effect(_p$ => {
455
+ var _v$ = cs('px-8px py-6px [box-shadow:var(--ant-box-shadow)] rounded-[var(--ant-border-radius-lg)] overflow-auto', props.plain ? 'text-[var(--ant-color-text)] bg-[var(--ant-color-bg-container-tertiary)]' : 'text-[var(--ant-color-text-light-solid)] bg-[var(--ant-color-bg-spotlight)]'),
456
+ _v$2 = {
457
+ transform: 'translate(var(--inner-translate-x), var(--inner-translate-y))',
458
+ ...props.contentStyle
459
+ };
460
+ _v$ !== _p$.e && className(_el$, _p$.e = _v$);
461
+ _p$.t = style(_el$, _v$2, _p$.t);
462
+ return _p$;
463
+ }, {
464
+ e: undefined,
465
+ t: undefined
466
+ });
467
+ return _el$;
468
+ })(), createComponent(Show, {
469
+ get when() {
470
+ return props.arrow;
471
+ },
472
+ get children() {
473
+ var _el$2 = _tmpl$();
474
+ effect(_p$ => {
475
+ var _v$3 = cs('w-8px h-8px absolute border-transparent [box-shadow:var(--ant-box-shadow)]'),
476
+ _v$4 = {
477
+ 'clip-path': 'polygon(-100% -100%, 200% -100%, 200% 200%)',
478
+ 'background-color': props.plain ? 'var(--ant-color-bg-container-tertiary)' : 'var(--ant-color-bg-spotlight)',
479
+ ...ARROW_STYLE_DICT[mergePlacement(reversedMainPlacement(), reversedMinorPlacement())]
480
+ };
481
+ _v$3 !== _p$.e && className(_el$2, _p$.e = _v$3);
482
+ _p$.t = style(_el$2, _v$4, _p$.t);
483
+ return _p$;
484
+ }, {
485
+ e: undefined,
486
+ t: undefined
487
+ });
488
+ return _el$2;
489
+ }
490
+ })];
491
+ }
492
+ });
493
+ }
494
+ });
495
+ }
496
+ })];
497
+ };
498
+
499
+ export { Tooltip as default, unwrapContent };
@@ -0,0 +1,88 @@
1
+ import { type Ref, type Component } from 'solid-js';
2
+ export interface TransformValue {
3
+ x: number;
4
+ y: number;
5
+ width: number;
6
+ height: number;
7
+ rotate: number;
8
+ }
9
+ export interface TransformerInstance {
10
+ /** 手动进入移动状态 */
11
+ enterMove: (e: MouseEvent) => void;
12
+ /** 手动进入调整大小状态 */
13
+ enterResize: (e: MouseEvent) => void;
14
+ /** 手动进入旋转状态 */
15
+ enterRotate: (e: MouseEvent) => void;
16
+ }
17
+ export type LayoutPoint<T = DOMPoint> = T | null | [T | null, T | null];
18
+ export interface Layout<T = LayoutPoint> {
19
+ topLeftPoint: T;
20
+ topRightPoint: T;
21
+ bottomLeftPoint: T;
22
+ bottomRightPoint: T;
23
+ xCenterLine?: [DOMPoint, DOMPoint];
24
+ yCenterLine?: [DOMPoint, DOMPoint];
25
+ }
26
+ export interface TransformerProps {
27
+ ref?: Ref<TransformerInstance>;
28
+ defaultValue?: TransformValue;
29
+ value?: TransformValue;
30
+ onChange?: (value: TransformValue) => void;
31
+ /**
32
+ * 移动位置时触发
33
+ */
34
+ onMove?: (value: Pick<TransformValue, 'x' | 'y'>) => void;
35
+ /**
36
+ * 缩放时触发
37
+ */
38
+ onResize?: (value: Pick<TransformValue, 'x' | 'y' | 'width' | 'height'>) => void;
39
+ /**
40
+ * 旋转时触发
41
+ */
42
+ onRotate?: (value: Pick<TransformValue, 'rotate'>) => void;
43
+ /**
44
+ * 转变结束时触发
45
+ */
46
+ onTransformEnd?: () => void;
47
+ /**
48
+ * 吸附功能
49
+ */
50
+ adsorb?: {
51
+ /**
52
+ * 吸附容器(通常是父级)宽度
53
+ */
54
+ width: number;
55
+ /**
56
+ * 吸附容器(通常是父级)高度
57
+ */
58
+ height: number;
59
+ /**
60
+ * 吸附误差,鼠标位于吸附误差范围内时,吸附
61
+ * 默认 5
62
+ */
63
+ gap?: number;
64
+ };
65
+ localToParentPoint?: (point: DOMPoint, transformValue: TransformValue, transformOrigin: DOMPoint) => DOMPoint | undefined;
66
+ parentToLocalPoint?: (point: DOMPoint, transformValue: TransformValue, transformOrigin: DOMPoint) => DOMPoint | undefined;
67
+ parentToWorldPoint?: (point: DOMPoint) => DOMPoint | undefined;
68
+ worldToParentPoint?: (point: DOMPoint) => DOMPoint | undefined;
69
+ localToWorldLayout?: (value: Layout<DOMPoint>) => Layout;
70
+ parentToWorldLayout?: (value: Layout<DOMPoint>) => Layout;
71
+ /**
72
+ * 转换中心
73
+ * 默认为 ['50%', '50%']
74
+ */
75
+ transformOrigin?: [x: number | `${number}%`, y: number | `${number}%`] | ((width: number, height: number) => [x: number, y: number]);
76
+ /**
77
+ * 是否显示 transformOriginIcon
78
+ */
79
+ transformOriginIcon?: boolean;
80
+ /**
81
+ * 设置 svg 的 viewBox
82
+ * 默认不需要设置,不设置时 svg 的宽高为 1*1,overflow 为 visible(此时显示范围不限制)
83
+ * 为什么要设置?某些极端情况下,如在 3d perspective 的情况下,某些点可能 x、y 值超级超级大,此时如果没有限制显示范围,显示会出现异常
84
+ */
85
+ viewBox?: DOMRect;
86
+ }
87
+ declare const Transformer: Component<TransformerProps>;
88
+ export default Transformer;