@superad/ui 0.1.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.
Files changed (343) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -0
  3. package/es/Button/Button.d.mts +7 -0
  4. package/es/Button/Button.mjs +29 -0
  5. package/es/Button/Button.mjs.map +1 -0
  6. package/es/Button/index.d.mts +3 -0
  7. package/es/Button/index.d.ts +1 -0
  8. package/es/Button/index.js +1 -0
  9. package/es/Button/index.mjs +2 -0
  10. package/es/Button/style.mjs +33 -0
  11. package/es/Button/style.mjs.map +1 -0
  12. package/es/Button/type.d.mts +21 -0
  13. package/es/ConfigProvider/index.d.mts +9 -0
  14. package/es/ConfigProvider/index.d.ts +1 -0
  15. package/es/ConfigProvider/index.js +1 -0
  16. package/es/ConfigProvider/index.mjs +82 -0
  17. package/es/ConfigProvider/index.mjs.map +1 -0
  18. package/es/ConfigProvider/type.d.mts +24 -0
  19. package/es/DraggablePanel/DraggablePanel.d.mts +6 -0
  20. package/es/DraggablePanel/DraggablePanel.mjs +104 -0
  21. package/es/DraggablePanel/DraggablePanel.mjs.map +1 -0
  22. package/es/DraggablePanel/index.d.mts +3 -0
  23. package/es/DraggablePanel/index.d.ts +1 -0
  24. package/es/DraggablePanel/index.js +1 -0
  25. package/es/DraggablePanel/index.mjs +3 -0
  26. package/es/DraggablePanel/style.mjs +86 -0
  27. package/es/DraggablePanel/style.mjs.map +1 -0
  28. package/es/DraggablePanel/type.d.mts +27 -0
  29. package/es/Flex/Center.d.mts +7 -0
  30. package/es/Flex/Center.mjs +14 -0
  31. package/es/Flex/Center.mjs.map +1 -0
  32. package/es/Flex/FlexBasic.d.mts +6 -0
  33. package/es/Flex/FlexBasic.mjs +46 -0
  34. package/es/Flex/FlexBasic.mjs.map +1 -0
  35. package/es/Flex/Flexbox.d.mts +2 -0
  36. package/es/Flex/index.d.mts +5 -0
  37. package/es/Flex/index.d.ts +1 -0
  38. package/es/Flex/index.js +1 -0
  39. package/es/Flex/index.mjs +3 -0
  40. package/es/Flex/type.d.mts +35 -0
  41. package/es/Flex/utils.mjs +24 -0
  42. package/es/Flex/utils.mjs.map +1 -0
  43. package/es/FontLoader/index.d.mts +9 -0
  44. package/es/FontLoader/index.d.ts +1 -0
  45. package/es/FontLoader/index.js +1 -0
  46. package/es/FontLoader/index.mjs +23 -0
  47. package/es/FontLoader/index.mjs.map +1 -0
  48. package/es/GlobalFocusRing/index.d.mts +6 -0
  49. package/es/GlobalFocusRing/index.d.ts +1 -0
  50. package/es/GlobalFocusRing/index.js +1 -0
  51. package/es/GlobalFocusRing/index.mjs +204 -0
  52. package/es/GlobalFocusRing/index.mjs.map +1 -0
  53. package/es/GlobalFocusRing/style.mjs +35 -0
  54. package/es/GlobalFocusRing/style.mjs.map +1 -0
  55. package/es/Provider.d.mts +5 -0
  56. package/es/Table/canvas/canvasPalette.mjs +11 -0
  57. package/es/Table/canvas/canvasPalette.mjs.map +1 -0
  58. package/es/Table/canvas/chipPainters.mjs +408 -0
  59. package/es/Table/canvas/chipPainters.mjs.map +1 -0
  60. package/es/Table/canvas/controlPainters.mjs +193 -0
  61. package/es/Table/canvas/controlPainters.mjs.map +1 -0
  62. package/es/Table/canvas/groupTitle.mjs +181 -0
  63. package/es/Table/canvas/groupTitle.mjs.map +1 -0
  64. package/es/Table/canvas/paintUtils.mjs +70 -0
  65. package/es/Table/canvas/paintUtils.mjs.map +1 -0
  66. package/es/Table/canvas/rowSeries.mjs +130 -0
  67. package/es/Table/canvas/rowSeries.mjs.map +1 -0
  68. package/es/Table/canvas/textPainters.mjs +97 -0
  69. package/es/Table/canvas/textPainters.mjs.map +1 -0
  70. package/es/Table/canvas/theme.d.mts +14 -0
  71. package/es/Table/canvas/theme.mjs +276 -0
  72. package/es/Table/canvas/theme.mjs.map +1 -0
  73. package/es/Table/core/cellValue.d.mts +1 -0
  74. package/es/Table/core/cellValue.mjs +240 -0
  75. package/es/Table/core/cellValue.mjs.map +1 -0
  76. package/es/Table/core/rowSelection.mjs +138 -0
  77. package/es/Table/core/rowSelection.mjs.map +1 -0
  78. package/es/Table/core/size.mjs +60 -0
  79. package/es/Table/core/size.mjs.map +1 -0
  80. package/es/Table/core/tableI18n.d.mts +11 -0
  81. package/es/Table/core/tableI18n.mjs +123 -0
  82. package/es/Table/core/tableI18n.mjs.map +1 -0
  83. package/es/Table/core/tagTone.mjs +245 -0
  84. package/es/Table/core/tagTone.mjs.map +1 -0
  85. package/es/Table/core/zIndex.mjs +7 -0
  86. package/es/Table/core/zIndex.mjs.map +1 -0
  87. package/es/Table/index.d.mts +6 -0
  88. package/es/Table/index.d.ts +1 -0
  89. package/es/Table/index.js +1 -0
  90. package/es/Table/index.mjs +6 -0
  91. package/es/Table/react/Table.d.mts +9 -0
  92. package/es/Table/react/Table.mjs +407 -0
  93. package/es/Table/react/Table.mjs.map +1 -0
  94. package/es/Table/react/TableColumnSettings.mjs +65 -0
  95. package/es/Table/react/TableColumnSettings.mjs.map +1 -0
  96. package/es/Table/react/a11y.mjs +72 -0
  97. package/es/Table/react/a11y.mjs.map +1 -0
  98. package/es/Table/react/editors/base.mjs +427 -0
  99. package/es/Table/react/editors/base.mjs.map +1 -0
  100. package/es/Table/react/editors/inline.mjs +225 -0
  101. package/es/Table/react/editors/inline.mjs.map +1 -0
  102. package/es/Table/react/editors/picker.mjs +368 -0
  103. package/es/Table/react/editors/picker.mjs.map +1 -0
  104. package/es/Table/react/overlayChips.mjs +50 -0
  105. package/es/Table/react/overlayChips.mjs.map +1 -0
  106. package/es/Table/react/sameRenderInputs.mjs +50 -0
  107. package/es/Table/react/sameRenderInputs.mjs.map +1 -0
  108. package/es/Table/react/style.mjs +650 -0
  109. package/es/Table/react/style.mjs.map +1 -0
  110. package/es/Table/react/useTableCellEvents.mjs +32 -0
  111. package/es/Table/react/useTableCellEvents.mjs.map +1 -0
  112. package/es/Table/react/useTableColumnSettings.mjs +107 -0
  113. package/es/Table/react/useTableColumnSettings.mjs.map +1 -0
  114. package/es/Table/react/useTableEditorSync.mjs +41 -0
  115. package/es/Table/react/useTableEditorSync.mjs.map +1 -0
  116. package/es/Table/react/useTableHoverHint.mjs +62 -0
  117. package/es/Table/react/useTableHoverHint.mjs.map +1 -0
  118. package/es/Table/react/useTableKeyboard.mjs +41 -0
  119. package/es/Table/react/useTableKeyboard.mjs.map +1 -0
  120. package/es/Table/react/useTableRenderState.mjs +194 -0
  121. package/es/Table/react/useTableRenderState.mjs.map +1 -0
  122. package/es/Table/react/useTableScroll.mjs +33 -0
  123. package/es/Table/react/useTableScroll.mjs.map +1 -0
  124. package/es/Table/react/useTableSelectionInfo.mjs +48 -0
  125. package/es/Table/react/useTableSelectionInfo.mjs.map +1 -0
  126. package/es/Table/react/useTableVTableEvents.mjs +132 -0
  127. package/es/Table/react/useTableVTableEvents.mjs.map +1 -0
  128. package/es/Table/type.d.mts +279 -0
  129. package/es/Table/type.mjs +34 -0
  130. package/es/Table/type.mjs.map +1 -0
  131. package/es/Table/vtable/columns.d.mts +17 -0
  132. package/es/Table/vtable/columns.mjs +381 -0
  133. package/es/Table/vtable/columns.mjs.map +1 -0
  134. package/es/Table/vtable/frozenShadow.mjs +27 -0
  135. package/es/Table/vtable/frozenShadow.mjs.map +1 -0
  136. package/es/Table/vtable/interaction.mjs +175 -0
  137. package/es/Table/vtable/interaction.mjs.map +1 -0
  138. package/es/Table/vtable/option.d.mts +39 -0
  139. package/es/Table/vtable/option.mjs +232 -0
  140. package/es/Table/vtable/option.mjs.map +1 -0
  141. package/es/Table/vtable/seriesSelection.mjs +374 -0
  142. package/es/Table/vtable/seriesSelection.mjs.map +1 -0
  143. package/es/Table/vtable/vtableAdapter.mjs +96 -0
  144. package/es/Table/vtable/vtableAdapter.mjs.map +1 -0
  145. package/es/ThemeProvider/AppElementContext.d.mts +5 -0
  146. package/es/ThemeProvider/AppElementContext.mjs +10 -0
  147. package/es/ThemeProvider/AppElementContext.mjs.map +1 -0
  148. package/es/ThemeProvider/ConfigProvider.mjs +29 -0
  149. package/es/ThemeProvider/ConfigProvider.mjs.map +1 -0
  150. package/es/ThemeProvider/GlobalStyle/antdOverride.mjs +73 -0
  151. package/es/ThemeProvider/GlobalStyle/antdOverride.mjs.map +1 -0
  152. package/es/ThemeProvider/GlobalStyle/essential.mjs +50 -0
  153. package/es/ThemeProvider/GlobalStyle/essential.mjs.map +1 -0
  154. package/es/ThemeProvider/GlobalStyle/global.mjs +90 -0
  155. package/es/ThemeProvider/GlobalStyle/global.mjs.map +1 -0
  156. package/es/ThemeProvider/GlobalStyle/index.mjs +14 -0
  157. package/es/ThemeProvider/GlobalStyle/index.mjs.map +1 -0
  158. package/es/ThemeProvider/Meta.d.mts +7 -0
  159. package/es/ThemeProvider/Meta.mjs +48 -0
  160. package/es/ThemeProvider/Meta.mjs.map +1 -0
  161. package/es/ThemeProvider/ThemeProvider.d.mts +6 -0
  162. package/es/ThemeProvider/ThemeProvider.mjs +89 -0
  163. package/es/ThemeProvider/ThemeProvider.mjs.map +1 -0
  164. package/es/ThemeProvider/constants.d.mts +5 -0
  165. package/es/ThemeProvider/constants.mjs +6 -0
  166. package/es/ThemeProvider/constants.mjs.map +1 -0
  167. package/es/ThemeProvider/index.d.mts +6 -0
  168. package/es/ThemeProvider/index.d.ts +1 -0
  169. package/es/ThemeProvider/index.js +1 -0
  170. package/es/ThemeProvider/index.mjs +5 -0
  171. package/es/ThemeProvider/type.d.mts +48 -0
  172. package/es/_virtual/_rolldown/runtime.mjs +13 -0
  173. package/es/color/colors/blue.d.mts +6 -0
  174. package/es/color/colors/blue.mjs +67 -0
  175. package/es/color/colors/blue.mjs.map +1 -0
  176. package/es/color/colors/cyan.d.mts +6 -0
  177. package/es/color/colors/cyan.mjs +67 -0
  178. package/es/color/colors/cyan.mjs.map +1 -0
  179. package/es/color/colors/geekblue.d.mts +6 -0
  180. package/es/color/colors/geekblue.mjs +67 -0
  181. package/es/color/colors/geekblue.mjs.map +1 -0
  182. package/es/color/colors/gold.d.mts +6 -0
  183. package/es/color/colors/gold.mjs +67 -0
  184. package/es/color/colors/gold.mjs.map +1 -0
  185. package/es/color/colors/gray.d.mts +6 -0
  186. package/es/color/colors/gray.mjs +67 -0
  187. package/es/color/colors/gray.mjs.map +1 -0
  188. package/es/color/colors/green.d.mts +6 -0
  189. package/es/color/colors/green.mjs +67 -0
  190. package/es/color/colors/green.mjs.map +1 -0
  191. package/es/color/colors/index.d.mts +22 -0
  192. package/es/color/colors/index.mjs +35 -0
  193. package/es/color/colors/index.mjs.map +1 -0
  194. package/es/color/colors/lime.d.mts +6 -0
  195. package/es/color/colors/lime.mjs +67 -0
  196. package/es/color/colors/lime.mjs.map +1 -0
  197. package/es/color/colors/magenta.d.mts +6 -0
  198. package/es/color/colors/magenta.mjs +67 -0
  199. package/es/color/colors/magenta.mjs.map +1 -0
  200. package/es/color/colors/orange.d.mts +6 -0
  201. package/es/color/colors/orange.mjs +67 -0
  202. package/es/color/colors/orange.mjs.map +1 -0
  203. package/es/color/colors/primary.d.mts +6 -0
  204. package/es/color/colors/primary.mjs +67 -0
  205. package/es/color/colors/primary.mjs.map +1 -0
  206. package/es/color/colors/purple.d.mts +6 -0
  207. package/es/color/colors/purple.mjs +67 -0
  208. package/es/color/colors/purple.mjs.map +1 -0
  209. package/es/color/colors/red.d.mts +6 -0
  210. package/es/color/colors/red.mjs +67 -0
  211. package/es/color/colors/red.mjs.map +1 -0
  212. package/es/color/colors/volcano.d.mts +6 -0
  213. package/es/color/colors/volcano.mjs +67 -0
  214. package/es/color/colors/volcano.mjs.map +1 -0
  215. package/es/color/colors/yellow.d.mts +6 -0
  216. package/es/color/colors/yellow.mjs +67 -0
  217. package/es/color/colors/yellow.mjs.map +1 -0
  218. package/es/color/index.d.mts +23 -0
  219. package/es/color/index.d.ts +1 -0
  220. package/es/color/index.js +1 -0
  221. package/es/color/index.mjs +22 -0
  222. package/es/color/neutrals/index.d.mts +13 -0
  223. package/es/color/neutrals/index.mjs +17 -0
  224. package/es/color/neutrals/index.mjs.map +1 -0
  225. package/es/color/neutrals/mauve.d.mts +6 -0
  226. package/es/color/neutrals/mauve.mjs +67 -0
  227. package/es/color/neutrals/mauve.mjs.map +1 -0
  228. package/es/color/neutrals/olive.d.mts +6 -0
  229. package/es/color/neutrals/olive.mjs +67 -0
  230. package/es/color/neutrals/olive.mjs.map +1 -0
  231. package/es/color/neutrals/sage.d.mts +6 -0
  232. package/es/color/neutrals/sage.mjs +67 -0
  233. package/es/color/neutrals/sage.mjs.map +1 -0
  234. package/es/color/neutrals/sand.d.mts +6 -0
  235. package/es/color/neutrals/sand.mjs +67 -0
  236. package/es/color/neutrals/sand.mjs.map +1 -0
  237. package/es/color/neutrals/slate.d.mts +6 -0
  238. package/es/color/neutrals/slate.mjs +67 -0
  239. package/es/color/neutrals/slate.mjs.map +1 -0
  240. package/es/color/types.d.mts +16 -0
  241. package/es/eslint/index.d.mts +26 -0
  242. package/es/eslint/index.d.ts +1 -0
  243. package/es/eslint/index.js +1 -0
  244. package/es/eslint/index.mjs +11 -0
  245. package/es/eslint/index.mjs.map +1 -0
  246. package/es/hooks/useIsClient.d.mts +8 -0
  247. package/es/hooks/useIsClient.mjs +13 -0
  248. package/es/hooks/useIsClient.mjs.map +1 -0
  249. package/es/i18n/context.d.mts +7 -0
  250. package/es/i18n/context.mjs +16 -0
  251. package/es/i18n/context.mjs.map +1 -0
  252. package/es/i18n/index.d.mts +6 -0
  253. package/es/i18n/index.d.ts +1 -0
  254. package/es/i18n/index.js +1 -0
  255. package/es/i18n/index.mjs +5 -0
  256. package/es/i18n/resources/en/common.d.mts +35 -0
  257. package/es/i18n/resources/en/common.mjs +36 -0
  258. package/es/i18n/resources/en/common.mjs.map +1 -0
  259. package/es/i18n/resources/en/index.d.mts +7 -0
  260. package/es/i18n/resources/en/index.mjs +8 -0
  261. package/es/i18n/resources/en/index.mjs.map +1 -0
  262. package/es/i18n/resources/zhCn/common.d.mts +35 -0
  263. package/es/i18n/resources/zhCn/common.mjs +36 -0
  264. package/es/i18n/resources/zhCn/common.mjs.map +1 -0
  265. package/es/i18n/resources/zhCn/index.d.mts +7 -0
  266. package/es/i18n/resources/zhCn/index.mjs +8 -0
  267. package/es/i18n/resources/zhCn/index.mjs.map +1 -0
  268. package/es/i18n/types.d.mts +22 -0
  269. package/es/i18n/useTranslation.d.mts +12 -0
  270. package/es/i18n/useTranslation.mjs +22 -0
  271. package/es/i18n/useTranslation.mjs.map +1 -0
  272. package/es/index.d.mts +43 -0
  273. package/es/index.mjs +26 -0
  274. package/es/storybook/StoryBook/StoryBook.d.mts +7 -0
  275. package/es/storybook/StoryBook/StoryBook.mjs +52 -0
  276. package/es/storybook/StoryBook/StoryBook.mjs.map +1 -0
  277. package/es/storybook/StoryBook/index.d.mts +3 -0
  278. package/es/storybook/StoryBook/style.mjs +97 -0
  279. package/es/storybook/StoryBook/style.mjs.map +1 -0
  280. package/es/storybook/StoryBook/type.d.mts +13 -0
  281. package/es/storybook/index.d.mts +4 -0
  282. package/es/storybook/index.d.ts +1 -0
  283. package/es/storybook/index.js +1 -0
  284. package/es/storybook/index.mjs +2 -0
  285. package/es/styles/classNames.d.mts +11 -0
  286. package/es/styles/classNames.mjs +12 -0
  287. package/es/styles/classNames.mjs.map +1 -0
  288. package/es/styles/customTheme.d.mts +36 -0
  289. package/es/styles/customTheme.mjs +71 -0
  290. package/es/styles/customTheme.mjs.map +1 -0
  291. package/es/styles/index.d.mts +6 -0
  292. package/es/styles/index.d.ts +1 -0
  293. package/es/styles/index.js +1 -0
  294. package/es/styles/index.mjs +6 -0
  295. package/es/styles/theme/algorithms/darkAlgorithm.mjs +18 -0
  296. package/es/styles/theme/algorithms/darkAlgorithm.mjs.map +1 -0
  297. package/es/styles/theme/algorithms/lightAlgorithm.mjs +18 -0
  298. package/es/styles/theme/algorithms/lightAlgorithm.mjs.map +1 -0
  299. package/es/styles/theme/algorithms/resolveScales.mjs +25 -0
  300. package/es/styles/theme/algorithms/resolveScales.mjs.map +1 -0
  301. package/es/styles/theme/antdTheme.mjs +31 -0
  302. package/es/styles/theme/antdTheme.mjs.map +1 -0
  303. package/es/styles/theme/customStylish.d.mts +7 -0
  304. package/es/styles/theme/customStylish.mjs +158 -0
  305. package/es/styles/theme/customStylish.mjs.map +1 -0
  306. package/es/styles/theme/customStylishStatic.d.mts +6 -0
  307. package/es/styles/theme/customStylishStatic.mjs +156 -0
  308. package/es/styles/theme/customStylishStatic.mjs.map +1 -0
  309. package/es/styles/theme/customToken.d.mts +7 -0
  310. package/es/styles/theme/customToken.mjs +127 -0
  311. package/es/styles/theme/customToken.mjs.map +1 -0
  312. package/es/styles/theme/generateColorPalette.d.mts +16 -0
  313. package/es/styles/theme/generateColorPalette.mjs +170 -0
  314. package/es/styles/theme/generateColorPalette.mjs.map +1 -0
  315. package/es/styles/theme/token/base.mjs +64 -0
  316. package/es/styles/theme/token/base.mjs.map +1 -0
  317. package/es/styles/theme/token/dark.mjs +37 -0
  318. package/es/styles/theme/token/dark.mjs.map +1 -0
  319. package/es/styles/theme/token/light.mjs +37 -0
  320. package/es/styles/theme/token/light.mjs.map +1 -0
  321. package/es/types/customStylish.d.mts +28 -0
  322. package/es/types/customToken.d.mts +34 -0
  323. package/es/types/customToken.mjs +32 -0
  324. package/es/types/customToken.mjs.map +1 -0
  325. package/es/types/index.d.mts +15 -0
  326. package/es/types/index.d.ts +1 -0
  327. package/es/types/index.js +1 -0
  328. package/es/types/index.mjs +2 -0
  329. package/es/utils/composeEventHandlers.d.mts +5 -0
  330. package/es/utils/composeEventHandlers.mjs +10 -0
  331. package/es/utils/composeEventHandlers.mjs.map +1 -0
  332. package/es/utils/copyToClipboard.d.mts +5 -0
  333. package/es/utils/copyToClipboard.mjs +28 -0
  334. package/es/utils/copyToClipboard.mjs.map +1 -0
  335. package/es/utils/dom.d.mts +15 -0
  336. package/es/utils/dom.mjs +16 -0
  337. package/es/utils/dom.mjs.map +1 -0
  338. package/es/utils/genCdnUrl.d.mts +12 -0
  339. package/es/utils/genCdnUrl.mjs +17 -0
  340. package/es/utils/genCdnUrl.mjs.map +1 -0
  341. package/es/utils/safeReadableColor.mjs +6 -0
  342. package/es/utils/safeReadableColor.mjs.map +1 -0
  343. package/package.json +96 -0
@@ -0,0 +1,50 @@
1
+ "use client";
2
+ import { toneFor } from "../core/tagTone.mjs";
3
+ import { Avatar, Tag } from "antd";
4
+ import { useTheme } from "antd-style";
5
+ import { jsx } from "react/jsx-runtime";
6
+ //#region src/Table/react/overlayChips.tsx
7
+ /**
8
+ * 单元格与面板之外的**浮层**里用到的 chip / 头像。
9
+ *
10
+ * 常驻的单元格是画布画的(`canvas/chipPainters`),这里只服务 DOM 浮层:选择面板的候选行。
11
+ * 两边的配色同源(都走 `toneFor`),所以同一个人在三处颜色一致。
12
+ */
13
+ /**
14
+ * 人员头像,走 antd 的 `Avatar`:有 `avatar` 用图片,没有则回退成首字。
15
+ */
16
+ const UserAvatar = ({ size = 24, user }) => {
17
+ const { colorBgContainer, isDarkMode } = useTheme();
18
+ const tone = toneFor(user.name, void 0, isDarkMode, colorBgContainer);
19
+ return /* @__PURE__ */ jsx(Avatar, {
20
+ size,
21
+ src: user.avatar,
22
+ style: {
23
+ background: tone.bg,
24
+ color: tone.color
25
+ },
26
+ children: user.name.trim().slice(0, 1) || "?"
27
+ });
28
+ };
29
+ /**
30
+ * 选择项在候选行里的样子。用 antd 的 `Tag`(尺寸、内边距、圆角都归它),只把配色换成
31
+ * `toneFor` 的 —— 那套色与画布上画的 chip 同源,同一个选项在单元格和列表里颜色一致。
32
+ * 文字色与画布同口径:浅色是主题 `colorText`(浅底 + 近黑字),暗色用 tone 的提亮色。
33
+ */
34
+ const Chip = ({ option }) => {
35
+ const { colorBgContainer, colorText, isDarkMode } = useTheme();
36
+ const tone = toneFor(option.value, option.color, isDarkMode, colorBgContainer);
37
+ return /* @__PURE__ */ jsx(Tag, {
38
+ style: {
39
+ background: tone.bg,
40
+ borderColor: tone.border ?? "transparent",
41
+ color: isDarkMode ? tone.color : colorText,
42
+ marginInlineEnd: 0
43
+ },
44
+ children: option.label
45
+ });
46
+ };
47
+ //#endregion
48
+ export { Chip, UserAvatar };
49
+
50
+ //# sourceMappingURL=overlayChips.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlayChips.mjs","names":[],"sources":["../../../src/Table/react/overlayChips.tsx"],"sourcesContent":["'use client';\n\nimport { Avatar, Tag } from 'antd';\nimport { useTheme } from 'antd-style';\n\nimport { toneFor } from '../core/tagTone';\nimport type { TableSelectOption, TableUser } from '../type';\n\n/**\n * 单元格与面板之外的**浮层**里用到的 chip / 头像。\n *\n * 常驻的单元格是画布画的(`canvas/chipPainters`),这里只服务 DOM 浮层:选择面板的候选行。\n * 两边的配色同源(都走 `toneFor`),所以同一个人在三处颜色一致。\n */\n\n/**\n * 人员头像,走 antd 的 `Avatar`:有 `avatar` 用图片,没有则回退成首字。\n */\nexport const UserAvatar = ({ size = 24, user }: { size?: number; user: TableUser }) => {\n const { colorBgContainer, isDarkMode } = useTheme();\n const tone = toneFor(user.name, undefined, isDarkMode, colorBgContainer);\n\n return (\n <Avatar size={size} src={user.avatar} style={{ background: tone.bg, color: tone.color }}>\n {user.name.trim().slice(0, 1) || '?'}\n </Avatar>\n );\n};\n\n/**\n * 选择项在候选行里的样子。用 antd 的 `Tag`(尺寸、内边距、圆角都归它),只把配色换成\n * `toneFor` 的 —— 那套色与画布上画的 chip 同源,同一个选项在单元格和列表里颜色一致。\n * 文字色与画布同口径:浅色是主题 `colorText`(浅底 + 近黑字),暗色用 tone 的提亮色。\n */\nexport const Chip = ({ option }: { option: TableSelectOption }) => {\n const { colorBgContainer, colorText, isDarkMode } = useTheme();\n const tone = toneFor(option.value, option.color, isDarkMode, colorBgContainer);\n\n return (\n <Tag\n style={{\n background: tone.bg,\n borderColor: tone.border ?? 'transparent',\n color: isDarkMode ? tone.color : colorText,\n // Tag 默认带 8px 右外边距;行里是 flex + space-between,留着会把 ✓ 挤偏。\n marginInlineEnd: 0,\n }}\n >\n {option.label}\n </Tag>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;AAkBA,MAAa,cAAc,EAAE,OAAO,IAAI,WAA+C;CACrF,MAAM,EAAE,kBAAkB,eAAe,SAAS;CAClD,MAAM,OAAO,QAAQ,KAAK,MAAM,KAAA,GAAW,YAAY,gBAAgB;CAEvE,OACE,oBAAC,QAAD;EAAc;EAAM,KAAK,KAAK;EAAQ,OAAO;GAAE,YAAY,KAAK;GAAI,OAAO,KAAK;EAAM;EACnF,UAAA,KAAK,KAAK,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK;CAC3B,CAAA;AAEZ;;;;;;AAOA,MAAa,QAAQ,EAAE,aAA4C;CACjE,MAAM,EAAE,kBAAkB,WAAW,eAAe,SAAS;CAC7D,MAAM,OAAO,QAAQ,OAAO,OAAO,OAAO,OAAO,YAAY,gBAAgB;CAE7E,OACE,oBAAC,KAAD;EACE,OAAO;GACL,YAAY,KAAK;GACjB,aAAa,KAAK,UAAU;GAC5B,OAAO,aAAa,KAAK,QAAQ;GAEjC,iBAAiB;EACnB;EAEC,UAAA,OAAO;CACL,CAAA;AAET"}
@@ -0,0 +1,50 @@
1
+ "use client";
2
+ //#region src/Table/react/sameRenderInputs.ts
3
+ const isPlainObject = (value) => {
4
+ if (value == null || typeof value !== "object") return false;
5
+ const proto = Object.getPrototypeOf(value);
6
+ return proto === Object.prototype || proto === null;
7
+ };
8
+ /**
9
+ * 渲染输入在**内容**上是否等价。
10
+ *
11
+ * 存在的理由:`createTableOption` 每次调用都会新建函数(`style` / `customLayout` / …)与编辑器
12
+ * 实例,而 react-vtable 用 `isEqual(prev.option, next.option)` 判断要不要 `updateOption` ——
13
+ * 那个实现对**非纯对象直接返回 false**(`if (!isPlainObject(a)) return !1;`),所以只要使用方
14
+ * 把 `columns` / `records` 内联传进来(`columns={[...]}`),父组件每渲染一次就会整表重建一次。
15
+ * 在上游按内容认出「其实没变」,复用上一次的 option 引用,`updateOption` 根本不会被触发。
16
+ *
17
+ * 两条刻意的取舍:
18
+ *
19
+ * 1. **函数按引用比较**(相同的引用仍走上面的快路径判等)。比的是**使用方的原始输入**
20
+ * (`useTableRenderState` 的 `optionInputs`),里面的函数就是使用方自己的闭包 —— 一律判等
21
+ * 会让「闭包里的值变了」永远不被发现:`fieldFormat: (v) => prefix + v` 改了 `prefix`,表格
22
+ * 照样拿旧闭包渲染,界面上没有任何信号。代价是内联 `columns={[{ fieldFormat: () => … }]}`
23
+ * 每次渲染都会重建一次 —— 但这是**必要**的:新函数可能闭着新值,不重建就无从知道。
24
+ * 不含函数的内联配置仍按内容判等,不重建。
25
+ * 2. **非纯对象一律判不等**(`Map` / `Set` / 类实例)。按自有键比较会漏掉内部状态 ——
26
+ * `Object.keys(new Map())` 是空数组 —— 把它们判等会让变了的数据不重渲。宁可多重建一次。
27
+ * `Date` / `RegExp` 例外,它们按值比较。
28
+ */
29
+ const sameRenderInputs = (left, right) => {
30
+ if (left === right) return true;
31
+ if (typeof left !== typeof right) return false;
32
+ if (typeof left === "function") return false;
33
+ if (left == null || right == null) return false;
34
+ if (typeof left !== "object") return false;
35
+ if (left instanceof Date || right instanceof Date) return left instanceof Date && right instanceof Date && left.getTime() === right.getTime();
36
+ if (left instanceof RegExp || right instanceof RegExp) return left instanceof RegExp && right instanceof RegExp && String(left) === String(right);
37
+ if (Array.isArray(left) || Array.isArray(right)) {
38
+ if (Array.isArray(left) === false || Array.isArray(right) === false) return false;
39
+ if (left.length !== right.length) return false;
40
+ return left.every((item, index) => sameRenderInputs(item, right[index]));
41
+ }
42
+ if (isPlainObject(left) === false || isPlainObject(right) === false) return false;
43
+ const keys = Object.keys(left);
44
+ if (keys.length !== Object.keys(right).length) return false;
45
+ return keys.every((key) => Object.hasOwn(right, key) && sameRenderInputs(left[key], right[key]));
46
+ };
47
+ //#endregion
48
+ export { sameRenderInputs };
49
+
50
+ //# sourceMappingURL=sameRenderInputs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sameRenderInputs.mjs","names":[],"sources":["../../../src/Table/react/sameRenderInputs.ts"],"sourcesContent":["'use client';\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n if (value == null || typeof value !== 'object') return false;\n const proto: unknown = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n};\n\n/**\n * 渲染输入在**内容**上是否等价。\n *\n * 存在的理由:`createTableOption` 每次调用都会新建函数(`style` / `customLayout` / …)与编辑器\n * 实例,而 react-vtable 用 `isEqual(prev.option, next.option)` 判断要不要 `updateOption` ——\n * 那个实现对**非纯对象直接返回 false**(`if (!isPlainObject(a)) return !1;`),所以只要使用方\n * 把 `columns` / `records` 内联传进来(`columns={[...]}`),父组件每渲染一次就会整表重建一次。\n * 在上游按内容认出「其实没变」,复用上一次的 option 引用,`updateOption` 根本不会被触发。\n *\n * 两条刻意的取舍:\n *\n * 1. **函数按引用比较**(相同的引用仍走上面的快路径判等)。比的是**使用方的原始输入**\n * (`useTableRenderState` 的 `optionInputs`),里面的函数就是使用方自己的闭包 —— 一律判等\n * 会让「闭包里的值变了」永远不被发现:`fieldFormat: (v) => prefix + v` 改了 `prefix`,表格\n * 照样拿旧闭包渲染,界面上没有任何信号。代价是内联 `columns={[{ fieldFormat: () => … }]}`\n * 每次渲染都会重建一次 —— 但这是**必要**的:新函数可能闭着新值,不重建就无从知道。\n * 不含函数的内联配置仍按内容判等,不重建。\n * 2. **非纯对象一律判不等**(`Map` / `Set` / 类实例)。按自有键比较会漏掉内部状态 ——\n * `Object.keys(new Map())` 是空数组 —— 把它们判等会让变了的数据不重渲。宁可多重建一次。\n * `Date` / `RegExp` 例外,它们按值比较。\n */\nexport const sameRenderInputs = (left: unknown, right: unknown): boolean => {\n // 引用相同立即返回:大表靠这条走快路,不能逐行下探。\n if (left === right) return true;\n if (typeof left !== typeof right) return false;\n if (typeof left === 'function') return false;\n if (left == null || right == null) return false;\n if (typeof left !== 'object') return false;\n\n if (left instanceof Date || right instanceof Date) {\n return left instanceof Date && right instanceof Date && left.getTime() === right.getTime();\n }\n if (left instanceof RegExp || right instanceof RegExp) {\n return left instanceof RegExp && right instanceof RegExp && String(left) === String(right);\n }\n\n if (Array.isArray(left) || Array.isArray(right)) {\n if (Array.isArray(left) === false || Array.isArray(right) === false) return false;\n if (left.length !== right.length) return false;\n return left.every((item, index) => sameRenderInputs(item, right[index]));\n }\n\n if (isPlainObject(left) === false || isPlainObject(right) === false) return false;\n\n const keys = Object.keys(left);\n if (keys.length !== Object.keys(right).length) return false;\n\n return keys.every(\n (key) =>\n Object.hasOwn(right, key) &&\n sameRenderInputs(\n (left as Record<string, unknown>)[key],\n (right as Record<string, unknown>)[key],\n ),\n );\n};\n"],"mappings":";;AAEA,MAAM,iBAAiB,UAAqD;CAC1E,IAAI,SAAS,QAAQ,OAAO,UAAU,UAAU,OAAO;CACvD,MAAM,QAAiB,OAAO,eAAe,KAAK;CAClD,OAAO,UAAU,OAAO,aAAa,UAAU;AACjD;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAa,oBAAoB,MAAe,UAA4B;CAE1E,IAAI,SAAS,OAAO,OAAO;CAC3B,IAAI,OAAO,SAAS,OAAO,OAAO,OAAO;CACzC,IAAI,OAAO,SAAS,YAAY,OAAO;CACvC,IAAI,QAAQ,QAAQ,SAAS,MAAM,OAAO;CAC1C,IAAI,OAAO,SAAS,UAAU,OAAO;CAErC,IAAI,gBAAgB,QAAQ,iBAAiB,MAC3C,OAAO,gBAAgB,QAAQ,iBAAiB,QAAQ,KAAK,QAAQ,MAAM,MAAM,QAAQ;CAE3F,IAAI,gBAAgB,UAAU,iBAAiB,QAC7C,OAAO,gBAAgB,UAAU,iBAAiB,UAAU,OAAO,IAAI,MAAM,OAAO,KAAK;CAG3F,IAAI,MAAM,QAAQ,IAAI,KAAK,MAAM,QAAQ,KAAK,GAAG;EAC/C,IAAI,MAAM,QAAQ,IAAI,MAAM,SAAS,MAAM,QAAQ,KAAK,MAAM,OAAO,OAAO;EAC5E,IAAI,KAAK,WAAW,MAAM,QAAQ,OAAO;EACzC,OAAO,KAAK,OAAO,MAAM,UAAU,iBAAiB,MAAM,MAAM,MAAM,CAAC;CACzE;CAEA,IAAI,cAAc,IAAI,MAAM,SAAS,cAAc,KAAK,MAAM,OAAO,OAAO;CAE5E,MAAM,OAAO,OAAO,KAAK,IAAI;CAC7B,IAAI,KAAK,WAAW,OAAO,KAAK,KAAK,CAAC,CAAC,QAAQ,OAAO;CAEtD,OAAO,KAAK,OACT,QACC,OAAO,OAAO,OAAO,GAAG,KACxB,iBACG,KAAiC,MACjC,MAAkC,IACrC,CACJ;AACF"}