import { createCachedRequestQueryOptions, type PlatformResourceQueryOptions, type ResourceFactory, } from "@wp-reactor/headless-core" import { type LayoutMenusResult, layoutMenusDocument, } from "@/layout/api/menus.graphql" import type { LayoutMenus } from "@/layout/model/menu" export interface LayoutResource { layout: { menusQueryOptions( options?: PlatformResourceQueryOptions, ): ReturnType< typeof createCachedRequestQueryOptions< LayoutMenusResult, Record, LayoutMenus > > } } export function createLayoutResource(): ResourceFactory { return (driver, queryContext) => ({ layout: { menusQueryOptions: (options) => createCachedRequestQueryOptions< LayoutMenusResult, Record, LayoutMenus >({ request: driver.request, document: layoutMenusDocument, kind: "editorial", queryKey: ["layout", "menus"], map: (raw) => ({ primary: raw.primary?.nodes ?? [] }), ssr: options?.ssr ?? queryContext?.ssr ?? false, timings: options?.timings ?? queryContext?.timings, debug: options?.debug ?? queryContext?.debug, staleTime: options?.staleTime, gcTime: options?.gcTime, enabled: options?.enabled, }), }, }) }