18 lines
786 B
JavaScript
18 lines
786 B
JavaScript
|
import { upperFirst } from 'lodash-es';
|
||
|
import { defineComponent, inject } from 'vue';
|
||
|
import { configProviderInjectionKey } from "../../config-provider/src/context.mjs";
|
||
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
||
|
export function replaceable(name, icon) {
|
||
|
return defineComponent({
|
||
|
name: upperFirst(name),
|
||
|
setup() {
|
||
|
var _a;
|
||
|
const mergedIconsRef = (_a = inject(configProviderInjectionKey, null)) === null || _a === void 0 ? void 0 : _a.mergedIconsRef;
|
||
|
return () => {
|
||
|
var _a;
|
||
|
const iconOverride = (_a = mergedIconsRef === null || mergedIconsRef === void 0 ? void 0 : mergedIconsRef.value) === null || _a === void 0 ? void 0 : _a[name];
|
||
|
return iconOverride ? iconOverride() : icon;
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
}
|