index.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
  2. import { createCache, extractStyle as extStyle, StyleProvider } from '../cssinjs';
  3. import * as antd from '../../components';
  4. import { renderToString } from 'vue/server-renderer';
  5. const blackList = ['ConfigProvider', 'Grid', 'Tour', 'SelectOptGroup', 'SelectOption', 'MentionsOption', 'TreeNode', 'TreeSelectNode', 'LocaleProvider'];
  6. const pickerMap = {
  7. MonthPicker: 'month',
  8. WeekPicker: 'week',
  9. QuarterPicker: 'quarter'
  10. };
  11. const compChildNameMap = {
  12. MenuDivider: 'Menu',
  13. MenuItem: 'Menu',
  14. MenuItemGroup: 'Menu',
  15. SubMenu: 'Menu',
  16. TableColumn: 'Table',
  17. TableColumnGroup: 'Table',
  18. TableSummary: 'Table',
  19. TableSummaryRow: 'Table',
  20. TableSummaryCell: 'Table',
  21. TabPane: 'Tabs',
  22. TimelineItem: 'Timeline'
  23. };
  24. const defaultNode = () => _createVNode(_Fragment, null, [Object.keys(antd).filter(name => !blackList.includes(name) && name[0] === name[0].toUpperCase()).map(compName => {
  25. const Comp = antd[compName];
  26. if (compName === 'Dropdown') {
  27. return _createVNode(Comp, {
  28. "key": compName,
  29. "menu": {
  30. items: []
  31. }
  32. }, {
  33. default: () => [_createVNode("div", null, null)]
  34. });
  35. }
  36. if (compName === 'Anchor') {
  37. return _createVNode(Comp, {
  38. "key": compName,
  39. "items": []
  40. }, null);
  41. }
  42. if (compName in pickerMap) {
  43. const Comp = antd['DatePicker'];
  44. const type = pickerMap[compName];
  45. return _createVNode(Comp, {
  46. "key": compName,
  47. "picker": type
  48. }, null);
  49. }
  50. if (compName in compChildNameMap) {
  51. const ParentComp = antd[compChildNameMap[compName]];
  52. return _createVNode(ParentComp, null, {
  53. default: () => [_createVNode(Comp, null, null)]
  54. });
  55. }
  56. if (compName === 'QRCode' || compName === 'Segmented') {
  57. return _createVNode(Comp, {
  58. "key": compName,
  59. "value": ''
  60. }, {
  61. default: () => [_createVNode("div", null, null)]
  62. });
  63. }
  64. return _createVNode(Comp, {
  65. "key": compName
  66. }, null);
  67. })]);
  68. export function extractStyle(customTheme) {
  69. const cache = createCache();
  70. renderToString(_createVNode(StyleProvider, {
  71. "cache": cache
  72. }, {
  73. default: () => [customTheme ? customTheme(defaultNode()) : defaultNode()]
  74. }));
  75. // Grab style from cache
  76. const styleText = extStyle(cache, true);
  77. return styleText;
  78. }