Files
ColdBreeze-chat-web/src/widget/WidgetContext.tsx
T
2023-02-20 10:07:56 +08:00

24 lines
837 B
TypeScript

import { createContext, useContext, ReactNode } from 'react';
import { getContrastColor } from '../common/utils';
const color = decodeURIComponent(new URLSearchParams(location.search).get("themeColor") || "#1fe1f9");
const fgColor = getContrastColor(color);
// 判断是否是iframe上下文
const embed = window.location !== window.parent.location;
const WidgetContext = createContext({ color, fgColor, embed });
function WidgetProvider({ children }: { children: ReactNode }) {
return <WidgetContext.Provider value={{ color, fgColor, embed }} >{children}</WidgetContext.Provider>;
}
function useWidget() {
const context = useContext(WidgetContext);
if (context === undefined) {
throw new Error('useWidget must be used within a WidgetProvider');
}
return context;
}
export { WidgetProvider, useWidget };