@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
61 lines (56 loc) • 1.8 kB
JavaScript
'use client';
import { createContext, memo, useContext } from 'react';
import { genCdnUrl } from "../utils/genCdnUrl";
import { jsx as _jsx } from "react/jsx-runtime";
export var ConfigContext = /*#__PURE__*/createContext(null);
var ConfigProvider = /*#__PURE__*/memo(function (_ref) {
var children = _ref.children,
config = _ref.config;
return /*#__PURE__*/_jsx(ConfigContext.Provider, {
value: config,
children: children
});
});
// useCdnFn
var cdnFallback = function cdnFallback(_ref2) {
var pkg = _ref2.pkg,
version = _ref2.version,
path = _ref2.path;
return genCdnUrl({
path: path,
pkg: pkg,
proxy: 'aliyun',
version: version
});
};
export var useCdnFn = function useCdnFn() {
var config = useContext(ConfigContext);
if (!config) return cdnFallback;
if ((config === null || config === void 0 ? void 0 : config.proxy) !== 'custom') return function (_ref3) {
var pkg = _ref3.pkg,
version = _ref3.version,
path = _ref3.path;
return genCdnUrl({
path: path,
pkg: pkg,
proxy: config.proxy,
version: version
});
};
return (config === null || config === void 0 ? void 0 : config.customCdnFn) || cdnFallback;
};
// useJsdelivrFn
// export type JsdelivrFn = ({ repo, path }: JsdelivrApi) => string;
//
// const JsdelivrFallback: JsdelivrFn = ({ repo, path }) =>
// genJsdelivrUrl({ path, proxy: 'lobehub', repo });
//
// export const useJsdelivrFn = (): JsdelivrFn => {
// const config = useContext(ConfigContext);
// if (!config) return JsdelivrFallback;
// if (config?.proxy !== 'custom')
// return ({ repo, path }) => genJsdelivrUrl({ path, proxy: config.proxy as any, repo });
// return config?.customJsdelivrFn || JsdelivrFallback;
// };
//
export default ConfigProvider;