MCPcopy Create free account
hub / github.com/RtlZeroMemory/Rezi / createWidgetContext

Function createWidgetContext

packages/core/src/widgets/composition.ts:361–386  ·  view source on GitHub ↗
(
  widgetKey: string,
  instanceIndex: number,
  hookContext: Pick<
    WidgetContext<State>,
    "useState" | "useReducer" | "useRef" | "useEffect" | "useMemo" | "useCallback"
  >,
  appState: State,
  viewport: ResponsiveViewportSnapshot,
  onInvalidate: () => void,
  colorTokens: ColorTokens = defaultTheme.definition.colors,
)

Source from the content-addressed store, hash-verified

359 * @returns Complete WidgetContext for the render pass
360 */
361export function createWidgetContext<State>(
362 widgetKey: string,
363 instanceIndex: number,
364 hookContext: Pick<
365 WidgetContext<State>,
366 "useState" | "useReducer" | "useRef" | "useEffect" | "useMemo" | "useCallback"
367 >,
368 appState: State,
369 viewport: ResponsiveViewportSnapshot,
370 onInvalidate: () => void,
371 colorTokens: ColorTokens = defaultTheme.definition.colors,
372): WidgetContext<State> {
373 return Object.freeze({
374 id: (suffix: string) => scopedId(widgetKey, instanceIndex, suffix),
375 useState: hookContext.useState,
376 useReducer: hookContext.useReducer,
377 useRef: hookContext.useRef,
378 useEffect: hookContext.useEffect,
379 useMemo: hookContext.useMemo,
380 useCallback: hookContext.useCallback,
381 useAppState: <T>(selector: (s: State) => T): T => selector(appState),
382 useTheme: () => colorTokens,
383 useViewport: () => viewport,
384 invalidate: onInvalidate,
385 });
386}
387
388/* ========== Render Result Type ========== */
389

Callers 3

renderFunction · 0.85
renderFunction · 0.85

Calls 1

scopedIdFunction · 0.85

Tested by 2

renderFunction · 0.68
renderFunction · 0.68