You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.1 KiB
37 lines
1.1 KiB
2 years ago
|
import { globSync } from 'glob';
|
||
|
import path from 'path';
|
||
|
import React from 'react';
|
||
|
|
||
|
type StyleFn = (prefix?: string) => void;
|
||
|
|
||
|
export const styleFiles = globSync(
|
||
|
path.join(
|
||
|
process.cwd(),
|
||
|
'components/!(version|config-provider|icon|auto-complete|col|row|time-picker)/style/index.?(ts|tsx)',
|
||
|
),
|
||
|
);
|
||
|
|
||
|
export const generateCssinjs = ({ key, beforeRender, render }: any) => {
|
||
|
styleFiles.forEach(async (file) => {
|
||
|
const pathArr = file.split('/');
|
||
|
const styleIndex = pathArr.lastIndexOf('style');
|
||
|
const componentName = pathArr[styleIndex - 1];
|
||
|
let useStyle: StyleFn = () => {};
|
||
|
if (file.includes('grid')) {
|
||
|
const { useColStyle, useRowStyle } = await import(file);
|
||
|
useStyle = (prefixCls: string) => {
|
||
|
useRowStyle(prefixCls);
|
||
|
useColStyle(prefixCls);
|
||
|
};
|
||
|
} else {
|
||
|
useStyle = (await import(file)).default;
|
||
|
}
|
||
|
const Component: React.FC = () => {
|
||
|
useStyle(`${key}-${componentName}`);
|
||
|
return React.createElement('div');
|
||
|
};
|
||
|
beforeRender?.(componentName);
|
||
|
render?.(Component);
|
||
|
});
|
||
|
};
|