39 lines
1.3 KiB
JavaScript
39 lines
1.3 KiB
JavaScript
import { inject, onBeforeMount } from 'vue';
|
|
import { useSsrAdapter } from '@css-render/vue3-ssr';
|
|
import { configProviderInjectionKey } from "../config-provider/src/context.mjs";
|
|
import globalStyle from "../_styles/global/index.cssr.mjs";
|
|
import { throwError } from "../_utils/index.mjs";
|
|
import { cssrAnchorMetaName } from "./common.mjs";
|
|
export default function useStyle(mountId, style, clsPrefixRef) {
|
|
if (!style) {
|
|
if (process.env.NODE_ENV !== 'production') throwError('use-style', 'No style is specified.');
|
|
return;
|
|
}
|
|
const ssrAdapter = useSsrAdapter();
|
|
const NConfigProvider = inject(configProviderInjectionKey, null);
|
|
const mountStyle = () => {
|
|
const clsPrefix = clsPrefixRef.value;
|
|
style.mount({
|
|
id: clsPrefix === undefined ? mountId : clsPrefix + mountId,
|
|
head: true,
|
|
anchorMetaName: cssrAnchorMetaName,
|
|
props: {
|
|
bPrefix: clsPrefix ? `.${clsPrefix}-` : undefined
|
|
},
|
|
ssr: ssrAdapter
|
|
});
|
|
if (!(NConfigProvider === null || NConfigProvider === void 0 ? void 0 : NConfigProvider.preflightStyleDisabled)) {
|
|
globalStyle.mount({
|
|
id: 'n-global',
|
|
head: true,
|
|
anchorMetaName: cssrAnchorMetaName,
|
|
ssr: ssrAdapter
|
|
});
|
|
}
|
|
};
|
|
if (ssrAdapter) {
|
|
mountStyle();
|
|
} else {
|
|
onBeforeMount(mountStyle);
|
|
}
|
|
} |