@wener/ui
Version:
39 lines • 1.51 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DynamicIcon = void 0;
const react_1 = __importDefault(require("react"));
const lib_1 = require("@ant-design/icons/lib");
// const loaded: WeakMap<React.ComponentType, string> = new WeakMap();
const loaded = {};
exports.DynamicIcon = (props) => {
const { type, children } = props;
if (loaded[type]) {
return react_1.default.createElement(loaded[type], props, children);
}
let c = null;
for (const resolver of exports.DynamicIcon.resolvers) {
c = resolver(props);
if (c) {
break;
}
}
if (!c) {
console.error(`Missing Icon`, type);
if (typeof window !== 'undefined') {
window['MissingIcons'] = window['MissingIcons'] ?? [];
window['MissingIcons'].push(type);
}
return exports.DynamicIcon.Fallback;
}
const found = c;
return (react_1.default.createElement(react_1.default.Suspense, { fallback: exports.DynamicIcon.Fallback }, react_1.default.createElement(react_1.default.lazy(() => found.then((v) => {
loaded[type] = v.default;
return v;
})), props, children)));
};
exports.DynamicIcon.Fallback = react_1.default.createElement(lib_1.LoadingOutlined, null);
exports.DynamicIcon.resolvers = [];
//# sourceMappingURL=DynamicIcon.js.map