@jfdevelops/react-layout 0.17.4 → 0.17.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"define-layout.mjs","names":[],"sources":["../../src/create-config/define-layout.tsx"],"sourcesContent":["import type { JSX } from 'react';\nimport {\n type ComposableComponents,\n type ComposableNameContext,\n type ComposableResourceLayout,\n type CreateLayoutComposable,\n collectComposablePresetEntries,\n LayoutComposablePresetProvider,\n MakeComposable,\n makeComposable,\n MakeComposableOptions,\n RequiredPresetLayoutProps,\n resolveComposablePresetProps,\n resolveLayoutComposables,\n} from '@jfdevelops/react-layout-composables';\nimport {\n type AnyBuiltPropDefinition,\n createPrimitivePropBuilder,\n createProp,\n type ResolveLayoutProps,\n type ResolveProps,\n resolvePropDefinitionValues,\n validateProps,\n} from '@jfdevelops/react-layout-validator';\nimport {\n IncludedProps,\n InferredInProps,\n InPropsDefinition,\n InPropsObject,\n LayoutRenderProps,\n MergedLayoutInProps,\n} from '../props';\nimport {\n normalizeResources,\n toResourceEnum,\n type LayoutResourceKey,\n type ResourceDefinition,\n} from '../resource';\nimport { BaseComponent, functionalUpdate, pick, Show, Updater } from '../utils';\nimport { capitalize } from '../utils/capitalize';\nimport {\n type CreateResourceConfigFn,\n createResourceConfig,\n} from './get-component';\nimport {\n createResourceLinksFn,\n type CreateResourceLinksFn,\n} from './create-resource-links';\nimport {\n createForResource,\n type CreateLayoutForResource,\n type CreateResourceLayoutOptions,\n type CreateResourceLayoutOptionsBase,\n} from './for-resource';\nimport {\n createForResources,\n type CreateResourceLayoutForResourcesFn,\n} from './for-resources';\n\nexport type LayoutIncludeProps<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n> = IncludedProps<MergedLayoutInProps<Resources, Options, Composables>>;\n\nexport type LayoutProps<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, Options, Composables> = {},\n CustomProps extends InPropsObject = {},\n> = {\n /**\n * Props to include in the layout.\n */\n include?: LayoutIncludeProps<Resources, Options, Composables> & IncludeProps;\n /**\n * Custom props that the layout will receive.\n */\n custom?: CustomProps;\n};\n\ntype LayoutRenderContext<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Composables extends ComposableComponents,\n> = {\n composables: LayoutRenderComposables<Composables>;\n inProps: Record<string, unknown>;\n resource: LayoutResourceKey<Resources>;\n name: string;\n};\ntype LayoutRenderComposables<Composables extends ComposableComponents> = [\n keyof Composables,\n] extends [never]\n ? undefined\n : Composables;\n\ntype SplitLayoutInPropDefinition<\n Props extends InPropsObject = {},\n Content = unknown,\n> = {\n props?: Props;\n render: ((props: ResolveProps<Props>) => Content) | Content;\n};\n\nfunction isBuiltPropDefinition(\n value: unknown,\n): value is AnyBuiltPropDefinition {\n return typeof value === 'function' && value !== null && 'visibility' in value;\n}\n\nfunction isSplitLayoutInPropDefinition(\n value: unknown,\n): value is SplitLayoutInPropDefinition {\n return (\n value !== null &&\n typeof value === 'object' &&\n 'render' in value &&\n (value as { render?: unknown }).render !== undefined\n );\n}\n\nfunction isJSXElementDefinition(\n definition: unknown,\n): definition is AnyBuiltPropDefinition & { type: 'JSX.Element' } {\n return (\n isBuiltPropDefinition(definition) &&\n 'type' in definition &&\n definition.type === 'JSX.Element'\n );\n}\n\nfunction toLayoutRenderPropKey(includeKey: string, definition: unknown) {\n return isJSXElementDefinition(definition)\n ? capitalize(includeKey)\n : includeKey;\n}\n\nfunction readLayoutOptionValue(\n includeKey: string,\n definition: unknown,\n sources: Record<string, unknown>,\n) {\n const layoutOptionKeys = isJSXElementDefinition(definition)\n ? [capitalize(includeKey), includeKey]\n : [includeKey, capitalize(includeKey)];\n\n for (const key of layoutOptionKeys) {\n if (key in sources) {\n return sources[key];\n }\n }\n\n return undefined;\n}\n\nfunction splitLayoutInProps(inProps: Record<string, unknown>) {\n const resolvedInProps: Record<string, AnyBuiltPropDefinition> = {};\n const splitInProps: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(inProps)) {\n if (isBuiltPropDefinition(value)) {\n resolvedInProps[key] = value;\n continue;\n }\n\n if (isSplitLayoutInPropDefinition(value)) {\n splitInProps[key] = value.render;\n\n if (value.props && typeof value.props === 'object') {\n Object.assign(resolvedInProps, value.props);\n }\n }\n }\n\n return {\n resolvedInProps,\n splitInProps,\n };\n}\n\nfunction resolveLayoutOptionDefaults(\n defaults: Record<string, unknown>,\n options: Record<string, unknown>,\n) {\n const resolved = { ...options };\n\n for (const [key, defaultValue] of Object.entries(defaults)) {\n if (key in options) {\n if (typeof defaultValue === 'function') {\n resolved[key] = options[key];\n } else {\n resolved[key] = functionalUpdate(\n defaultValue,\n options[key] as Updater<unknown>,\n );\n }\n }\n }\n\n return resolved;\n}\n\ntype CreateViewMapOptions<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources> = {},\n Composables extends ComposableComponents = {},\n IncludeProps extends LayoutIncludeProps<Resources, Options, Composables> = {},\n CustomProps extends InPropsObject = {},\n> = {\n /**\n * An array of valid resource names to support.\n */\n resources: Resources;\n /**\n * The options that are passed into the created resource layout.\n */\n options?: Options;\n layout: {\n /**\n * The props to pass to the layout.\n */\n props?: LayoutProps<\n Resources,\n Options,\n Composables,\n IncludeProps,\n CustomProps\n >;\n /**\n * Components used to compose the layout. Invoked per layout instance with\n * a scoped `create` that resolves composable `name` callbacks using the\n * layout's `resource` and `name`.\n */\n composables?: (\n create: CreateLayoutComposable<LayoutResourceKey<Resources>>,\n ) => Composables;\n /**\n * The render function for the layout.\n */\n render: (\n props: LayoutRenderProps<\n Resources,\n Options,\n Composables,\n IncludeProps,\n CustomProps\n >,\n context: LayoutRenderContext<Resources, Composables>,\n ) => JSX.Element;\n };\n};\n\ntype ResourceLayoutComposition<\n Name extends string,\n Composables extends ComposableComponents,\n> = [keyof Composables] extends [never]\n ? {}\n : {\n makeComposable: MakeComposable<Composables, Name>;\n };\nexport type ResourceLayoutComponent<\n Name extends string,\n Props extends InPropsObject = {},\n Composables extends ComposableComponents = {},\n Resource extends string = string,\n> = ResourceLayoutComposition<Name, Composables> &\n BaseComponent<Name, ResolveProps<Props>> & {\n (props: Show<ResolveProps<Props>>): JSX.Element;\n /**\n * A type-only property containing the resource associated with this\n * component. This property is `undefined` at runtime.\n */\n readonly resource: Resource;\n };\n\nexport type LayoutPropsForResource<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents = {},\n> = ResolveLayoutProps<InferredInProps<Resources, InProps>> &\n RequiredPresetLayoutProps<Composables>;\n\ntype CreateResourceLayoutFnImpl<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {},\n CustomProps extends InPropsObject = {},\n> = <\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n Props extends InPropsObject = {},\n>(\n options: CreateResourceLayoutOptions<\n Resources,\n InProps,\n Composables,\n Name,\n Resource,\n Props\n >,\n) => ResourceLayoutComponent<Name, CustomProps, Composables, Resource>;\n\nexport type CreateResourceLayoutMakeComposableOptions<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n Props extends InPropsObject = {},\n> = CreateResourceLayoutOptionsBase<Resources, Name, Resource, Props> &\n Partial<LayoutPropsForResource<Resources, InProps, Composables>>;\n\ntype CreateResourceLayoutMakeComposableFn<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>,\n CustomProps extends InPropsObject,\n> = <\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n Props extends InPropsObject = {},\n>(\n options: CreateResourceLayoutMakeComposableOptions<\n Resources,\n InProps,\n Composables,\n Name,\n Resource,\n Props\n >,\n) => ComposableResourceLayout<Composables, Name, any, any, any>;\n\ntype CreateResourceLayoutFnBase<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents = {},\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {},\n CustomProps extends InPropsObject = {},\n> = CreateResourceLayoutFnImpl<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n> & {\n /**\n * A function to create a resource layout for a specific resource.\n */\n forResource: CreateLayoutForResource<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n /**\n * Creates resource layout factories for multiple defined resources.\n */\n forResources: CreateResourceLayoutForResourcesFn<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n};\n\ntype CreateResourceLayoutMakeComposableMember<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>,\n CustomProps extends InPropsObject,\n> = [keyof Composables] extends [never]\n ? {}\n : {\n makeComposable: CreateResourceLayoutMakeComposableFn<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n };\n\nexport type CreateResourceLayoutFn<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents = {},\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {},\n CustomProps extends InPropsObject = {},\n> = CreateResourceLayoutFnBase<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n> &\n CreateResourceLayoutMakeComposableMember<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n\ntype DefinedResourceLayout<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents = {},\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {},\n CustomProps extends InPropsObject = {},\n> = {\n createResourceConfig: CreateResourceConfigFn<Resources>;\n createResourceLayout: CreateResourceLayoutFn<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n createResourceLinks: CreateResourceLinksFn<Resources>;\n};\n\n\nfunction defineResourceLayoutImpl<\n const Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources> = {},\n Composables extends ComposableComponents = {},\n const IncludeProps extends LayoutIncludeProps<\n Resources,\n InProps,\n Composables\n > = {},\n CustomProps extends InPropsObject = {},\n>(\n options: CreateViewMapOptions<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >,\n): DefinedResourceLayout<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n> {\n const { options: inProps = {} as InProps, resources, layout } = options;\n const normalizedResources = normalizeResources(resources);\n const resourcesEnum = createPrimitivePropBuilder('string').enum(\n toResourceEnum(normalizedResources),\n );\n const definedResourceLayout = (<\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n Props extends InPropsObject = {},\n >(\n layoutOptions: CreateResourceLayoutOptions<\n Resources,\n InProps,\n Composables,\n Name,\n Resource,\n Props\n >,\n ) => {\n const {\n name,\n props: instancePropDefinitions,\n ...layoutOptionProps\n } = layoutOptions;\n const createComposableLayout =\n makeComposable<\n LayoutRenderProps<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >\n >();\n const nameProp = createProp.string().literal(name);\n const rawResolvedOptions =\n typeof inProps === 'function'\n ? inProps({\n resource: resourcesEnum,\n name: nameProp,\n })\n : inProps;\n const { resolvedInProps, splitInProps } = splitLayoutInProps({\n ...(rawResolvedOptions as Record<string, unknown>),\n ...(instancePropDefinitions as Record<string, unknown> | undefined),\n ...layoutOptionProps,\n });\n const { composables, render, props: layoutProps } = layout;\n const customLayoutProps = layoutProps?.custom;\n const includeLayoutProps = layoutProps?.include;\n const resolvedLayoutProps = {\n ...customLayoutProps,\n };\n const layoutContext: ComposableNameContext<\n LayoutResourceKey<Resources>,\n typeof name\n > = {\n resource: layoutOptions.resource,\n name,\n capitalize,\n };\n const validationContext = {\n layoutName: name,\n resource: layoutContext.resource,\n };\n const resolvedComposables = composables\n ? resolveLayoutComposables(composables, layoutContext)\n : undefined;\n const mergedResolvedInProps = { ...resolvedInProps };\n\n for (const {\n props: presetPropDefinitions,\n } of collectComposablePresetEntries(resolvedComposables)) {\n Object.assign(mergedResolvedInProps, presetPropDefinitions);\n }\n\n const composablePresetProps = resolveComposablePresetProps(\n resolvedComposables,\n layoutOptionProps as Record<string, unknown>,\n validationContext,\n );\n const mergedRenderContext = {\n composables: resolvedComposables as LayoutRenderComposables<Composables>,\n resource: layoutContext.resource,\n name: layoutContext.name,\n inProps: splitInProps,\n } as LayoutRenderContext<Resources, Composables>;\n\n function Component(props: Show<ResolveProps<CustomProps>>) {\n const validatedProps = validateProps(resolvedLayoutProps, props, {\n ...validationContext,\n });\n const includedPropKeys = Object.keys(includeLayoutProps ?? {});\n const includedPropDefinitions = pick(\n mergedResolvedInProps,\n includedPropKeys,\n ) as Record<string, unknown>;\n const includedPropValues = {\n ...resolvePropDefinitionValues(includedPropDefinitions),\n } as Record<string, unknown>;\n\n for (const key of includedPropKeys) {\n const definition = mergedResolvedInProps[key];\n const layoutOptionValue = readLayoutOptionValue(\n key,\n definition,\n layoutOptionProps,\n );\n const splitValue = key in splitInProps ? splitInProps[key] : undefined;\n const value = layoutOptionValue ?? splitValue;\n\n if (value !== undefined) {\n includedPropValues[key] = value;\n }\n }\n\n const requiredIncludedPropDefinitions = Object.fromEntries(\n Object.entries(includedPropDefinitions).filter(\n ([key]) => includeLayoutProps?.[key] === true,\n ),\n );\n const optionalIncludedPropDefinitions = Object.fromEntries(\n Object.entries(includedPropDefinitions).filter(\n ([key]) =>\n includeLayoutProps?.[key] === 'optional' &&\n includedPropValues[key] !== undefined,\n ),\n );\n const validatedIncludedProps = validateProps(\n {\n ...requiredIncludedPropDefinitions,\n ...optionalIncludedPropDefinitions,\n } as Record<string, AnyBuiltPropDefinition>,\n includedPropValues,\n validationContext,\n );\n const layoutRenderIncludedProps = Object.fromEntries(\n includedPropKeys.flatMap((key) => {\n if (!(key in validatedIncludedProps)) {\n return [];\n }\n\n return [\n [\n toLayoutRenderPropKey(key, mergedResolvedInProps[key]),\n validatedIncludedProps[\n key as keyof typeof validatedIncludedProps\n ],\n ],\n ];\n }),\n );\n const layoutRenderProps = {\n ...validatedProps,\n ...layoutRenderIncludedProps,\n } as unknown as LayoutRenderProps<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n\n return (\n <LayoutComposablePresetProvider value={composablePresetProps}>\n {render(layoutRenderProps, mergedRenderContext)}\n </LayoutComposablePresetProvider>\n );\n }\n\n function createComposition<\n LayoutName extends string,\n const Defined extends MakeComposableOptions<Composables, LayoutName>,\n >(compositionOptions: Defined) {\n if (!compositionOptions.components) {\n return {} as ResourceLayoutComposition<LayoutName, Composables>;\n }\n\n return {\n makeComposable: createComposableLayout(\n compositionOptions,\n ) as MakeComposable<Composables, LayoutName>,\n };\n }\n\n return Object.assign(Component, {\n displayName: name,\n props: undefined as unknown as ResolveProps<CustomProps>,\n resource: undefined as unknown as Resource,\n ...createComposition({\n components: resolvedComposables as Composables | undefined,\n name,\n }),\n });\n }) as CreateResourceLayoutFnImpl<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n const createTopLevelMakeComposable = () => {\n return (options: Record<string, unknown>) => {\n const layout = definedResourceLayout(options as never);\n\n if (\n !('makeComposable' in layout) ||\n typeof layout.makeComposable !== 'function'\n ) {\n throw new Error(\n 'makeComposable requires composables to be defined in the layout',\n );\n }\n\n return layout.makeComposable();\n };\n };\n\n function getComponentPropDefinitions(resource: LayoutResourceKey<Resources>) {\n const componentName = 'ScopedResourceComponent';\n const rawResolvedOptions =\n typeof inProps === 'function'\n ? inProps({\n resource: resourcesEnum,\n name: createProp.string().literal(componentName),\n })\n : inProps;\n const { resolvedInProps } = splitLayoutInProps(\n rawResolvedOptions as Record<string, unknown>,\n );\n const resolvedComposables = layout.composables\n ? resolveLayoutComposables(layout.composables, {\n resource,\n name: componentName,\n capitalize,\n })\n : undefined;\n\n for (const {\n props: presetPropDefinitions,\n } of collectComposablePresetEntries(resolvedComposables)) {\n Object.assign(resolvedInProps, presetPropDefinitions);\n }\n\n return {\n ...resolvedInProps,\n ...layout.props?.custom,\n };\n }\n\n const { createLayoutForResourceBuilder, forResource } = createForResource<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >({\n createResourceLayout: definedResourceLayout as never,\n resolveLayoutOptionDefaults,\n });\n const forResources = createForResources<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >({\n createLayoutForResource: createLayoutForResourceBuilder,\n ...(layout.composables\n ? { createMakeComposableLayout: createTopLevelMakeComposable }\n : {}),\n createResourceLayout: definedResourceLayout as never,\n getComponentPropDefinitions,\n });\n\n const createResourceLayoutExtras: {\n forResource: CreateLayoutForResource<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n forResources: CreateResourceLayoutForResourcesFn<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n makeComposable?: ReturnType<typeof createTopLevelMakeComposable>;\n } = {\n forResource,\n forResources,\n };\n\n if (layout.composables) {\n createResourceLayoutExtras.makeComposable = createTopLevelMakeComposable();\n }\n\n const createResourceLayout = Object.assign(\n definedResourceLayout,\n createResourceLayoutExtras,\n ) as CreateResourceLayoutFn<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n\n const createResourceLinks = createResourceLinksFn(resources);\n\n return {\n createResourceConfig,\n createResourceLayout,\n createResourceLinks,\n } as DefinedResourceLayout<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n}\n\ntype DefineResourceLayoutForResourcesOptions<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources> = {},\n Composables extends ComposableComponents = {},\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {},\n CustomProps extends InPropsObject = {},\n ExtraResources extends ReadonlyArray<ResourceDefinition> = [],\n> = Omit<\n CreateViewMapOptions<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >,\n 'resources'\n> & {\n /**\n * Additional resources to merge with those bound by\n * {@link defineResourceLayout.forResources}.\n */\n resources?: ExtraResources;\n};\n\ntype NonEmptyResourceDefinitions = readonly [\n ResourceDefinition,\n ...ResourceDefinition[],\n];\n\n/**\n * Factory returned by {@link DefineResourceLayout.forResources}.\n */\nexport type DefineResourceLayoutForResourcesFactory<\n BaseResources extends NonEmptyResourceDefinitions,\n> = <\n const ExtraResources extends ReadonlyArray<ResourceDefinition> = [],\n InProps extends InPropsDefinition<[...BaseResources, ...ExtraResources]> = {},\n Composables extends ComposableComponents = {},\n const IncludeProps extends LayoutIncludeProps<\n [...BaseResources, ...ExtraResources],\n InProps,\n Composables\n > = {},\n CustomProps extends InPropsObject = {},\n>(\n options: DefineResourceLayoutForResourcesOptions<\n [...BaseResources, ...ExtraResources],\n InProps,\n Composables,\n IncludeProps,\n CustomProps,\n ExtraResources\n >,\n) => DefinedResourceLayout<\n [...BaseResources, ...ExtraResources],\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n>;\n\n/**\n * Binds one or more resources, then accepts the remaining\n * {@link defineResourceLayout} options (with optional extra `resources`).\n */\nexport type DefineResourceLayoutForResources = <\n const Resources extends NonEmptyResourceDefinitions,\n>(\n ...resources: Resources\n) => DefineResourceLayoutForResourcesFactory<Resources>;\n\n/**\n * Creates a resource layout definition for a set of resources.\n */\nexport type DefineResourceLayoutFn = {\n <\n const Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources> = {},\n Composables extends ComposableComponents = {},\n const IncludeProps extends LayoutIncludeProps<\n Resources,\n InProps,\n Composables\n > = {},\n CustomProps extends InPropsObject = {},\n >(\n options: CreateViewMapOptions<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >,\n ): DefinedResourceLayout<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n};\n\nexport type DefineResourceLayout = DefineResourceLayoutFn & {\n forResources: DefineResourceLayoutForResources;\n};\n\nfunction defineResourceLayoutForResources<\n const Resources extends NonEmptyResourceDefinitions,\n>(\n ...baseResources: Resources\n): DefineResourceLayoutForResourcesFactory<Resources> {\n return ((options) => {\n const { resources: extraResources, ...rest } = options;\n const resources = extraResources\n ? [...baseResources, ...extraResources]\n : [...baseResources];\n\n return defineResourceLayoutImpl({\n ...rest,\n resources,\n } as never);\n }) as DefineResourceLayoutForResourcesFactory<Resources>;\n}\n\nexport const defineResourceLayout: DefineResourceLayout = Object.assign(\n defineResourceLayoutImpl as DefineResourceLayoutFn,\n {\n forResources: defineResourceLayoutForResources,\n },\n);\n"],"mappings":"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"}
1
+ {"version":3,"file":"define-layout.mjs","names":[],"sources":["../../src/create-config/define-layout.tsx"],"sourcesContent":["import type { JSX } from 'react';\nimport {\n type ComposableComponents,\n type ComposableNameContext,\n type ComposableResourceLayout,\n type CreateLayoutComposable,\n collectComposablePresetEntries,\n LayoutComposablePresetProvider,\n MakeComposable,\n makeComposable,\n MakeComposableOptions,\n RequiredPresetLayoutProps,\n resolveLayoutComposables,\n} from '@jfdevelops/react-layout-composables';\nimport {\n type AnyBuiltPropDefinition,\n createPrimitivePropBuilder,\n createProp,\n type ResolveLayoutProps,\n type ResolveProps,\n resolvePropDefinitionValues,\n validateProps,\n} from '@jfdevelops/react-layout-validator';\nimport {\n IncludedProps,\n type IncludedPropBehavior,\n InferredInProps,\n InPropsDefinition,\n InPropsObject,\n LayoutRenderProps,\n MergedLayoutInProps,\n ResolvedIncludedComponentProps,\n ResolvedIncludedConfigProps,\n ResolvedIncludedProps,\n} from '../props';\nimport {\n normalizeResources,\n toResourceEnum,\n type LayoutResourceKey,\n type ResourceDefinition,\n} from '../resource';\nimport { BaseComponent, functionalUpdate, pick, Show, Updater } from '../utils';\nimport { capitalize } from '../utils/capitalize';\nimport {\n type CreateResourceConfigFn,\n createResourceConfig,\n} from './get-component';\nimport {\n createResourceLinksFn,\n type CreateResourceLinksFn,\n} from './create-resource-links';\nimport {\n createForResource,\n type CreateLayoutForResource,\n type CreateResourceLayoutOptions,\n type CreateResourceLayoutOptionsBase,\n} from './for-resource';\nimport {\n createForResources,\n type CreateResourceLayoutForResourcesFn,\n} from './for-resources';\n\nexport type LayoutIncludeProps<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n> = IncludedProps<MergedLayoutInProps<Resources, Options, Composables>>;\n\nexport type LayoutProps<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, Options, Composables> = {},\n CustomProps extends InPropsObject = {},\n> = {\n /**\n * Props to include in the layout.\n */\n include?: LayoutIncludeProps<Resources, Options, Composables> & IncludeProps;\n /**\n * Custom props that the layout will receive.\n */\n custom?: CustomProps;\n};\n\ntype LayoutRenderContext<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Composables extends ComposableComponents,\n> = {\n composables: LayoutRenderComposables<Composables>;\n inProps: Record<string, unknown>;\n resource: LayoutResourceKey<Resources>;\n name: string;\n};\ntype LayoutRenderComposables<Composables extends ComposableComponents> = [\n keyof Composables,\n] extends [never]\n ? undefined\n : Composables;\n\ntype SplitLayoutInPropDefinition<\n Props extends InPropsObject = {},\n Content = unknown,\n> = {\n props?: Props;\n render: ((props: ResolveProps<Props>) => Content) | Content;\n};\n\nfunction isBuiltPropDefinition(\n value: unknown,\n): value is AnyBuiltPropDefinition {\n return typeof value === 'function' && value !== null && 'visibility' in value;\n}\n\nfunction isSplitLayoutInPropDefinition(\n value: unknown,\n): value is SplitLayoutInPropDefinition {\n return (\n value !== null &&\n typeof value === 'object' &&\n 'render' in value &&\n (value as { render?: unknown }).render !== undefined\n );\n}\n\nfunction isJSXElementDefinition(\n definition: unknown,\n): definition is AnyBuiltPropDefinition & { type: 'JSX.Element' } {\n return (\n isBuiltPropDefinition(definition) &&\n 'type' in definition &&\n definition.type === 'JSX.Element'\n );\n}\n\nfunction toLayoutRenderPropKey(includeKey: string, definition: unknown) {\n return isJSXElementDefinition(definition)\n ? capitalize(includeKey)\n : includeKey;\n}\n\nfunction readLayoutOptionValue(\n includeKey: string,\n definition: unknown,\n sources: Record<string, unknown>,\n) {\n const layoutOptionKeys = isJSXElementDefinition(definition)\n ? [capitalize(includeKey), includeKey]\n : [includeKey, capitalize(includeKey)];\n\n for (const key of layoutOptionKeys) {\n if (key in sources) {\n return sources[key];\n }\n }\n\n return undefined;\n}\n\nfunction getIncludedPropBehavior(value: unknown): IncludedPropBehavior | null {\n if (\n value !== null &&\n typeof value === 'object' &&\n 'visibility' in value &&\n 'passthrough' in value\n ) {\n return value as IncludedPropBehavior;\n }\n\n return null;\n}\n\nfunction isIncludedPropRequired(value: unknown) {\n return (\n value === true ||\n value === 'required' ||\n getIncludedPropBehavior(value)?.visibility === 'required'\n );\n}\n\nfunction allowsConfigPassthrough(value: unknown) {\n const behavior = getIncludedPropBehavior(value);\n\n return behavior ? behavior.passthrough === 'config' : true;\n}\n\nfunction allowsComponentPassthrough(value: unknown) {\n const behavior = getIncludedPropBehavior(value);\n\n return behavior\n ? behavior.passthrough === 'component'\n : value === 'optional';\n}\n\nfunction splitLayoutInProps(inProps: Record<string, unknown>) {\n const resolvedInProps: Record<string, AnyBuiltPropDefinition> = {};\n const splitInProps: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(inProps)) {\n if (isBuiltPropDefinition(value)) {\n resolvedInProps[key] = value;\n continue;\n }\n\n if (isSplitLayoutInPropDefinition(value)) {\n splitInProps[key] = value.render;\n\n if (value.props && typeof value.props === 'object') {\n Object.assign(resolvedInProps, value.props);\n }\n }\n }\n\n return {\n resolvedInProps,\n splitInProps,\n };\n}\n\nfunction resolveLayoutOptionDefaults(\n defaults: Record<string, unknown>,\n options: Record<string, unknown>,\n) {\n const resolved = { ...options };\n\n for (const [key, defaultValue] of Object.entries(defaults)) {\n if (key in options) {\n if (typeof defaultValue === 'function') {\n resolved[key] = options[key];\n } else {\n resolved[key] = functionalUpdate(\n defaultValue,\n options[key] as Updater<unknown>,\n );\n }\n }\n }\n\n return resolved;\n}\n\ntype CreateViewMapOptions<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources> = {},\n Composables extends ComposableComponents = {},\n IncludeProps extends LayoutIncludeProps<Resources, Options, Composables> = {},\n CustomProps extends InPropsObject = {},\n> = {\n /**\n * An array of valid resource names to support.\n */\n resources: Resources;\n /**\n * The options that are passed into the created resource layout.\n */\n options?: Options;\n layout: {\n /**\n * The props to pass to the layout.\n */\n props?: LayoutProps<\n Resources,\n Options,\n Composables,\n IncludeProps,\n CustomProps\n >;\n /**\n * Components used to compose the layout. Invoked per layout instance with\n * a scoped `create` that resolves composable `name` callbacks using the\n * layout's `resource` and `name`.\n */\n composables?: (\n create: CreateLayoutComposable<LayoutResourceKey<Resources>>,\n ) => Composables;\n /**\n * The render function for the layout.\n */\n render: (\n props: LayoutRenderProps<\n Resources,\n Options,\n Composables,\n IncludeProps,\n CustomProps\n >,\n context: LayoutRenderContext<Resources, Composables>,\n ) => JSX.Element;\n };\n};\n\ntype ResourceLayoutComposition<\n Name extends string,\n Composables extends ComposableComponents,\n> = [keyof Composables] extends [never]\n ? {}\n : {\n makeComposable: MakeComposable<Composables, Name>;\n };\nexport type ResourceLayoutComponent<\n Name extends string,\n Props extends InPropsObject = {},\n Composables extends ComposableComponents = {},\n Resource extends string = string,\n IncludedCallProps extends object = {},\n> = ResourceLayoutComposition<Name, Composables> &\n BaseComponent<Name, Show<ResolveProps<Props> & IncludedCallProps>> & {\n (props: Show<ResolveProps<Props> & IncludedCallProps>): JSX.Element;\n /**\n * A type-only property containing the resource associated with this\n * component. This property is `undefined` at runtime.\n */\n readonly resource: Resource;\n };\n\nexport type LayoutPropsForResource<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents = {},\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {},\n> = [keyof IncludeProps] extends [never]\n ? ResolveLayoutProps<InferredInProps<Resources, InProps>> &\n RequiredPresetLayoutProps<Composables>\n : ResolvedIncludedConfigProps<\n MergedLayoutInProps<Resources, InProps, Composables>,\n IncludeProps\n >;\n\ntype CreateResourceLayoutFnImpl<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {},\n CustomProps extends InPropsObject = {},\n> = <\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n Props extends InPropsObject = {},\n>(\n options: CreateResourceLayoutOptions<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n Name,\n Resource,\n Props\n >,\n) => ResourceLayoutComponent<\n Name,\n CustomProps,\n Composables,\n Resource,\n ResolvedIncludedComponentProps<\n MergedLayoutInProps<Resources, InProps, Composables>,\n IncludeProps\n >\n>;\n\nexport type CreateResourceLayoutMakeComposableOptions<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n Props extends InPropsObject = {},\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {},\n> = CreateResourceLayoutOptionsBase<Resources, Name, Resource, Props> &\n Partial<\n LayoutPropsForResource<Resources, InProps, Composables, IncludeProps>\n >;\n\ntype CreateResourceLayoutMakeComposableFn<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>,\n CustomProps extends InPropsObject,\n> = <\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n Props extends InPropsObject = {},\n>(\n options: CreateResourceLayoutMakeComposableOptions<\n Resources,\n InProps,\n Composables,\n Name,\n Resource,\n Props,\n IncludeProps\n >,\n) => ComposableResourceLayout<Composables, Name, any, any, any>;\n\ntype CreateResourceLayoutFnBase<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents = {},\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {},\n CustomProps extends InPropsObject = {},\n> = CreateResourceLayoutFnImpl<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n> & {\n /**\n * A function to create a resource layout for a specific resource.\n */\n forResource: CreateLayoutForResource<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n /**\n * Creates resource layout factories for multiple defined resources.\n */\n forResources: CreateResourceLayoutForResourcesFn<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n};\n\ntype CreateResourceLayoutMakeComposableMember<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>,\n CustomProps extends InPropsObject,\n> = [keyof Composables] extends [never]\n ? {}\n : {\n makeComposable: CreateResourceLayoutMakeComposableFn<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n };\n\nexport type CreateResourceLayoutFn<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents = {},\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {},\n CustomProps extends InPropsObject = {},\n> = CreateResourceLayoutFnBase<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n> &\n CreateResourceLayoutMakeComposableMember<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n\ntype DefinedResourceLayout<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents = {},\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {},\n CustomProps extends InPropsObject = {},\n> = {\n createResourceConfig: CreateResourceConfigFn<Resources>;\n createResourceLayout: CreateResourceLayoutFn<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n createResourceLinks: CreateResourceLinksFn<Resources>;\n};\n\n\nfunction defineResourceLayoutImpl<\n const Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources> = {},\n Composables extends ComposableComponents = {},\n const IncludeProps extends LayoutIncludeProps<\n Resources,\n InProps,\n Composables\n > = {},\n CustomProps extends InPropsObject = {},\n>(\n options: CreateViewMapOptions<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >,\n): DefinedResourceLayout<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n> {\n const { options: inProps = {} as InProps, resources, layout } = options;\n const normalizedResources = normalizeResources(resources);\n const resourcesEnum = createPrimitivePropBuilder('string').enum(\n toResourceEnum(normalizedResources),\n );\n const definedResourceLayout = (<\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n Props extends InPropsObject = {},\n >(\n layoutOptions: CreateResourceLayoutOptions<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n Name,\n Resource,\n Props\n >,\n ) => {\n const {\n name,\n props: instancePropDefinitions,\n ...layoutOptionProps\n } = layoutOptions;\n const createComposableLayout =\n makeComposable<\n LayoutRenderProps<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >\n >();\n const nameProp = createProp.string().literal(name);\n const rawResolvedOptions =\n typeof inProps === 'function'\n ? inProps({\n resource: resourcesEnum,\n name: nameProp,\n })\n : inProps;\n const { resolvedInProps, splitInProps } = splitLayoutInProps({\n ...(rawResolvedOptions as Record<string, unknown>),\n ...(instancePropDefinitions as Record<string, unknown> | undefined),\n ...layoutOptionProps,\n });\n const { composables, render, props: layoutProps } = layout;\n const customLayoutProps = layoutProps?.custom;\n const includeLayoutProps = layoutProps?.include;\n const layoutOptionValues = layoutOptionProps as Record<string, unknown>;\n const resolvedLayoutProps = {\n ...customLayoutProps,\n };\n const layoutContext: ComposableNameContext<\n LayoutResourceKey<Resources>,\n typeof name\n > = {\n resource: layoutOptions.resource,\n name,\n capitalize,\n };\n const validationContext = {\n layoutName: name,\n resource: layoutContext.resource,\n };\n const resolvedComposables = composables\n ? resolveLayoutComposables(composables, layoutContext)\n : undefined;\n const mergedResolvedInProps = { ...resolvedInProps };\n\n for (const {\n props: presetPropDefinitions,\n } of collectComposablePresetEntries(resolvedComposables)) {\n Object.assign(mergedResolvedInProps, presetPropDefinitions);\n }\n\n const composablePresetProps = Object.fromEntries(\n collectComposablePresetEntries(resolvedComposables).map(\n ({ key, props: presetPropDefinitions }) => {\n const presetPropEntries = Object.entries(presetPropDefinitions);\n const validatedDefinitions = Object.fromEntries(\n presetPropEntries.filter(\n ([propKey]) => {\n const includeBehavior = includeLayoutProps?.[propKey];\n\n return (\n includeBehavior === undefined ||\n (allowsConfigPassthrough(includeBehavior) &&\n (isIncludedPropRequired(includeBehavior) ||\n layoutOptionValues[propKey] !== undefined))\n );\n },\n ),\n );\n const presetPropValues = Object.fromEntries(\n presetPropEntries.flatMap(([propKey]) =>\n propKey in layoutOptionValues\n ? [[propKey, layoutOptionValues[propKey]]]\n : [],\n ),\n );\n\n return [\n key,\n validateProps(\n validatedDefinitions as Record<\n string,\n AnyBuiltPropDefinition\n >,\n presetPropValues,\n validationContext,\n ),\n ];\n },\n ),\n );\n const mergedRenderContext = {\n composables: resolvedComposables as LayoutRenderComposables<Composables>,\n resource: layoutContext.resource,\n name: layoutContext.name,\n inProps: splitInProps,\n } as LayoutRenderContext<Resources, Composables>;\n\n function Component(\n props: Show<\n ResolveProps<CustomProps> &\n ResolvedIncludedComponentProps<\n MergedLayoutInProps<Resources, InProps, Composables>,\n IncludeProps\n >\n >,\n ) {\n const validatedProps = validateProps(resolvedLayoutProps, props, {\n ...validationContext,\n });\n const includedPropKeys = Object.keys(includeLayoutProps ?? {});\n const includedPropDefinitions = pick(\n mergedResolvedInProps,\n includedPropKeys,\n ) as Record<string, unknown>;\n const includedPropValues = {\n ...resolvePropDefinitionValues(includedPropDefinitions),\n } as Record<string, unknown>;\n\n for (const key of includedPropKeys) {\n const definition = mergedResolvedInProps[key];\n const includeBehavior = includeLayoutProps?.[key];\n const callSiteValue = allowsComponentPassthrough(includeBehavior)\n ? readLayoutOptionValue(\n key,\n definition,\n props as Record<string, unknown>,\n )\n : undefined;\n const layoutOptionValue = allowsConfigPassthrough(includeBehavior)\n ? readLayoutOptionValue(key, definition, layoutOptionValues)\n : undefined;\n const splitValue = key in splitInProps ? splitInProps[key] : undefined;\n const value = callSiteValue ?? layoutOptionValue ?? splitValue;\n\n if (value !== undefined) {\n includedPropValues[key] = value;\n }\n }\n\n const requiredIncludedPropDefinitions = Object.fromEntries(\n Object.entries(includedPropDefinitions).filter(\n ([key]) => isIncludedPropRequired(includeLayoutProps?.[key]),\n ),\n );\n const optionalIncludedPropDefinitions = Object.fromEntries(\n Object.entries(includedPropDefinitions).filter(\n ([key]) =>\n !isIncludedPropRequired(includeLayoutProps?.[key]) &&\n includedPropValues[key] !== undefined,\n ),\n );\n const validatedIncludedProps = validateProps(\n {\n ...requiredIncludedPropDefinitions,\n ...optionalIncludedPropDefinitions,\n } as Record<string, AnyBuiltPropDefinition>,\n includedPropValues,\n validationContext,\n );\n const layoutRenderIncludedProps = Object.fromEntries(\n includedPropKeys.flatMap((key) => {\n if (!(key in validatedIncludedProps)) {\n return [];\n }\n\n return [\n [\n toLayoutRenderPropKey(key, mergedResolvedInProps[key]),\n validatedIncludedProps[\n key as keyof typeof validatedIncludedProps\n ],\n ],\n ];\n }),\n );\n const layoutRenderProps = {\n ...validatedProps,\n ...layoutRenderIncludedProps,\n } as unknown as LayoutRenderProps<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n\n return (\n <LayoutComposablePresetProvider value={composablePresetProps}>\n {render(layoutRenderProps, mergedRenderContext)}\n </LayoutComposablePresetProvider>\n );\n }\n\n function createComposition<\n LayoutName extends string,\n const Defined extends MakeComposableOptions<Composables, LayoutName>,\n >(compositionOptions: Defined) {\n if (!compositionOptions.components) {\n return {} as ResourceLayoutComposition<LayoutName, Composables>;\n }\n\n return {\n makeComposable: createComposableLayout(\n compositionOptions,\n ) as MakeComposable<Composables, LayoutName>,\n };\n }\n\n return Object.assign(Component, {\n displayName: name,\n props: undefined as unknown as Show<\n ResolveProps<CustomProps> &\n ResolvedIncludedComponentProps<\n MergedLayoutInProps<Resources, InProps, Composables>,\n IncludeProps\n >\n >,\n resource: undefined as unknown as Resource,\n ...createComposition({\n components: resolvedComposables as Composables | undefined,\n name,\n }),\n });\n }) as CreateResourceLayoutFnImpl<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n const createTopLevelMakeComposable = () => {\n return (options: Record<string, unknown>) => {\n const layout = definedResourceLayout(options as never);\n\n if (\n !('makeComposable' in layout) ||\n typeof layout.makeComposable !== 'function'\n ) {\n throw new Error(\n 'makeComposable requires composables to be defined in the layout',\n );\n }\n\n return layout.makeComposable();\n };\n };\n\n function getComponentPropDefinitions(resource: LayoutResourceKey<Resources>) {\n const componentName = 'ScopedResourceComponent';\n const rawResolvedOptions =\n typeof inProps === 'function'\n ? inProps({\n resource: resourcesEnum,\n name: createProp.string().literal(componentName),\n })\n : inProps;\n const { resolvedInProps } = splitLayoutInProps(\n rawResolvedOptions as Record<string, unknown>,\n );\n const resolvedComposables = layout.composables\n ? resolveLayoutComposables(layout.composables, {\n resource,\n name: componentName,\n capitalize,\n })\n : undefined;\n\n for (const {\n props: presetPropDefinitions,\n } of collectComposablePresetEntries(resolvedComposables)) {\n Object.assign(resolvedInProps, presetPropDefinitions);\n }\n\n return {\n ...resolvedInProps,\n ...layout.props?.custom,\n };\n }\n\n const { createLayoutForResourceBuilder, forResource } = createForResource<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >({\n createResourceLayout: definedResourceLayout as never,\n resolveLayoutOptionDefaults,\n });\n const forResources = createForResources<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >({\n createLayoutForResource: createLayoutForResourceBuilder,\n ...(layout.composables\n ? { createMakeComposableLayout: createTopLevelMakeComposable }\n : {}),\n createResourceLayout: definedResourceLayout as never,\n getComponentPropDefinitions,\n });\n\n const createResourceLayoutExtras: {\n forResource: CreateLayoutForResource<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n forResources: CreateResourceLayoutForResourcesFn<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n makeComposable?: ReturnType<typeof createTopLevelMakeComposable>;\n } = {\n forResource,\n forResources,\n };\n\n if (layout.composables) {\n createResourceLayoutExtras.makeComposable = createTopLevelMakeComposable();\n }\n\n const createResourceLayout = Object.assign(\n definedResourceLayout,\n createResourceLayoutExtras,\n ) as CreateResourceLayoutFn<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n\n const createResourceLinks = createResourceLinksFn(resources);\n\n return {\n createResourceConfig,\n createResourceLayout,\n createResourceLinks,\n } as DefinedResourceLayout<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n}\n\ntype DefineResourceLayoutForResourcesOptions<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources> = {},\n Composables extends ComposableComponents = {},\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {},\n CustomProps extends InPropsObject = {},\n ExtraResources extends ReadonlyArray<ResourceDefinition> = [],\n> = Omit<\n CreateViewMapOptions<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >,\n 'resources'\n> & {\n /**\n * Additional resources to merge with those bound by\n * {@link defineResourceLayout.forResources}.\n */\n resources?: ExtraResources;\n};\n\ntype NonEmptyResourceDefinitions = readonly [\n ResourceDefinition,\n ...ResourceDefinition[],\n];\n\n/**\n * Factory returned by {@link DefineResourceLayout.forResources}.\n */\nexport type DefineResourceLayoutForResourcesFactory<\n BaseResources extends NonEmptyResourceDefinitions,\n> = <\n const ExtraResources extends ReadonlyArray<ResourceDefinition> = [],\n InProps extends InPropsDefinition<[...BaseResources, ...ExtraResources]> = {},\n Composables extends ComposableComponents = {},\n const IncludeProps extends LayoutIncludeProps<\n [...BaseResources, ...ExtraResources],\n InProps,\n Composables\n > = {},\n CustomProps extends InPropsObject = {},\n>(\n options: DefineResourceLayoutForResourcesOptions<\n [...BaseResources, ...ExtraResources],\n InProps,\n Composables,\n IncludeProps,\n CustomProps,\n ExtraResources\n >,\n) => DefinedResourceLayout<\n [...BaseResources, ...ExtraResources],\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n>;\n\n/**\n * Binds one or more resources, then accepts the remaining\n * {@link defineResourceLayout} options (with optional extra `resources`).\n */\nexport type DefineResourceLayoutForResources = <\n const Resources extends NonEmptyResourceDefinitions,\n>(\n ...resources: Resources\n) => DefineResourceLayoutForResourcesFactory<Resources>;\n\n/**\n * Creates a resource layout definition for a set of resources.\n */\nexport type DefineResourceLayoutFn = {\n <\n const Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources> = {},\n Composables extends ComposableComponents = {},\n const IncludeProps extends LayoutIncludeProps<\n Resources,\n InProps,\n Composables\n > = {},\n CustomProps extends InPropsObject = {},\n >(\n options: CreateViewMapOptions<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >,\n ): DefinedResourceLayout<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n};\n\nexport type DefineResourceLayout = DefineResourceLayoutFn & {\n forResources: DefineResourceLayoutForResources;\n};\n\nfunction defineResourceLayoutForResources<\n const Resources extends NonEmptyResourceDefinitions,\n>(\n ...baseResources: Resources\n): DefineResourceLayoutForResourcesFactory<Resources> {\n return ((options) => {\n const { resources: extraResources, ...rest } = options;\n const resources = extraResources\n ? [...baseResources, ...extraResources]\n : [...baseResources];\n\n return defineResourceLayoutImpl({\n ...rest,\n resources,\n } as never);\n }) as DefineResourceLayoutForResourcesFactory<Resources>;\n}\n\nexport const defineResourceLayout: DefineResourceLayout = Object.assign(\n defineResourceLayoutImpl as DefineResourceLayoutFn,\n {\n forResources: defineResourceLayoutForResources,\n },\n);\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"for-resource.cjs","names":["capitalize"],"sources":["../../src/create-config/for-resource.ts"],"sourcesContent":["import type { ComposableComponents } from '@jfdevelops/react-layout-composables';\nimport type {\n InPropsDefinition,\n InPropsObject,\n} from '../props';\nimport type {\n LayoutResourceKey,\n ResourceDefinition,\n} from '../resource';\nimport type { UnionToIntersection, Updater } from '../utils';\nimport { capitalize } from '../utils/capitalize';\nimport type {\n LayoutIncludeProps,\n LayoutPropsForResource,\n ResourceLayoutComponent,\n} from './define-layout';\n\ntype LayoutPropDefaults = Record<string, unknown>;\n\ntype CreateTimeLayoutPropWithDefault<\n LayoutProps extends LayoutPropDefaults,\n Key extends keyof LayoutProps,\n> = LayoutProps[Key] extends (...args: unknown[]) => unknown\n ? LayoutProps[Key]\n : Updater<LayoutProps[Key]>;\n\ntype ResolveLayoutPropsWithDefaults<\n LayoutProps extends LayoutPropDefaults,\n Defaults extends LayoutPropDefaults,\n> = Omit<LayoutProps, keyof Defaults> & {\n [Key in keyof Defaults & keyof LayoutProps]?: CreateTimeLayoutPropWithDefault<\n LayoutProps,\n Key\n >;\n};\n\nexport type CreateResourceLayoutOptionsBase<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n Props extends InPropsObject = {},\n> = {\n name: Name;\n resource: Resource;\n props?: Props;\n};\n\nexport type CreateResourceLayoutOptions<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n Props extends InPropsObject = {},\n> = LayoutPropsForResource<Resources, InProps, Composables> &\n CreateResourceLayoutOptionsBase<Resources, Name, Resource, Props>;\n\nexport type CreateLayoutForResourceOptions<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n> = {\n name?: Name;\n resource: Resource;\n};\n\ntype CreatedLayoutForResourceOptions<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n Props extends InPropsObject = {},\n Defaults extends LayoutPropDefaults = {},\n> = ResolveLayoutPropsWithDefaults<\n LayoutPropsForResource<Resources, InProps, Composables>,\n Defaults\n> & {\n props?: Props;\n};\n\ntype CreatedLayoutForResourceCallOptions<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n OverrideName extends string,\n Props extends InPropsObject,\n Defaults extends LayoutPropDefaults,\n> = CreatedLayoutForResourceOptions<\n Resources,\n InProps,\n Composables,\n Props,\n Defaults\n> & {\n name?: OverrideName;\n};\n\nexport type CreatedLayoutForResource<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n CustomProps extends InPropsObject = {},\n Defaults extends LayoutPropDefaults = {},\n> = <OverrideName extends string = Name, Props extends InPropsObject = {}>(\n ...args: {} extends CreatedLayoutForResourceCallOptions<\n Resources,\n InProps,\n Composables,\n OverrideName,\n Props,\n Defaults\n >\n ? [options?: CreatedLayoutForResourceCallOptions<\n Resources,\n InProps,\n Composables,\n OverrideName,\n Props,\n Defaults\n >]\n : [options: CreatedLayoutForResourceCallOptions<\n Resources,\n InProps,\n Composables,\n OverrideName,\n Props,\n Defaults\n >]\n) => ResourceLayoutComponent<\n OverrideName,\n CustomProps,\n Composables,\n Resource\n>;\n\ntype SetDefaultPropsForResource<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents = {},\n> = Partial<LayoutPropsForResource<Resources, InProps, Composables>>;\n\ntype ResolvedSetDefaultProps<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n Defaults extends SetDefaultPropsForResource<Resources, InProps, Composables>,\n> = {\n [Key in keyof Defaults &\n keyof LayoutPropsForResource<\n Resources,\n InProps,\n Composables\n >]: LayoutPropsForResource<Resources, InProps, Composables>[Key];\n};\n\nexport type SetDefaultPropForResourceFn<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n CustomProps extends InPropsObject = {},\n> = <\n const Defaults extends SetDefaultPropsForResource<\n Resources,\n InProps,\n Composables\n >,\n>(\n /** Default values for layout props. Each prop can only be set once. */\n defaults: Defaults,\n) => CreatedLayoutForResource<\n Resources,\n InProps,\n Composables,\n Name,\n Resource,\n CustomProps,\n ResolvedSetDefaultProps<Resources, InProps, Composables, Defaults>\n>;\n\ntype CapitalizedResource<Resource extends string> =\n Resource extends Resource\n ? {\n toLowerCase: () => Lowercase<Capitalize<Resource>>;\n } & Capitalize<Resource>\n : never;\n\ntype ResourceLayoutNames<\n Resource extends string,\n CallbackName extends string,\n> = {\n [TargetResource in Resource]?:\n | string\n | ((resource: CapitalizedResource<TargetResource>) => CallbackName);\n};\n\ntype AtLeastOneResourceLayoutNameKey<Resource extends string> = {\n [TargetResource in Resource]: Record<TargetResource, unknown> &\n Partial<Record<Exclude<Resource, TargetResource>, unknown>>;\n}[Resource];\n\ntype SelectedResourceLayoutNames<\n Resource extends string,\n SelectedResource extends Resource,\n CallbackName extends string,\n> = {\n [TargetResource in Resource as TargetResource extends SelectedResource\n ? TargetResource\n : never]?:\n | string\n | ((resource: CapitalizedResource<TargetResource>) => CallbackName);\n};\n\ntype NormalizeCapitalizedResourceName<\n Name extends string,\n Resource extends string,\n> = Name extends Name\n ? NormalizeCapitalizedResourceNameMatch<\n Name,\n Resource\n > extends infer Match extends string\n ? [Match] extends [never]\n ? Name\n : Match\n : never\n : never;\n\ntype NormalizeCapitalizedResourceNameMatch<\n Name extends string,\n Resource extends string,\n> = Resource extends Resource\n ? Name extends `${CapitalizedResource<Resource>}${infer Suffix}`\n ? `${Capitalize<Resource>}${Suffix}`\n : never\n : never;\n\ntype ResourceLayoutBuilder<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n CustomProps extends InPropsObject,\n> = CreatedLayoutForResource<\n Resources,\n InProps,\n Composables,\n Name,\n Resource,\n CustomProps\n> & {\n /** Set default values for layout props in a single call. */\n setDefaults: SetDefaultPropForResourceFn<\n Resources,\n InProps,\n Composables,\n Name,\n Resource,\n CustomProps\n >;\n};\n\ntype SingleResourceLayoutSelection<\n Resources extends ReadonlyArray<ResourceDefinition>,\n CallbackName extends string,\n> = {\n [Resource in LayoutResourceKey<Resources>]: Record<\n Resource,\n {\n name?:\n | string\n | ((resource: CapitalizedResource<Resource>) => CallbackName);\n }\n > &\n Partial<\n Record<\n Exclude<LayoutResourceKey<Resources>, Resource>,\n never\n >\n >;\n}[LayoutResourceKey<Resources>];\n\ntype SelectedResourceName<Selection, Resource extends string> =\n Selection extends Record<Resource, { name?: infer Name }>\n ? Name extends (...args: never[]) => infer CallbackName\n ? NormalizeCapitalizedResourceName<CallbackName & string, Resource>\n : Name extends string\n ? Name\n : string\n : string;\n\ntype MappedResourceName<\n Names,\n CallbackName extends string,\n Resource extends string,\n> = Names extends Record<Resource, infer Name>\n ? Name extends (...args: never[]) => unknown\n ? NormalizeCapitalizedResourceName<CallbackName, Resource>\n : Name & string\n : string;\n\n/**\n * Creates a layout builder with a resource-keyed default-name map.\n *\n * @example\n * createResourceLayout.forResource({\n * resource: 'users',\n * name: {\n * users: resource => `${resource}Page`,\n * },\n * })\n *\n * @param options The resource and its resource-keyed default name.\n * @returns A layout builder bound to the selected resource.\n */\ntype ResourceLayoutNameMapFn<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n CustomProps extends InPropsObject,\n Resource extends LayoutResourceKey<Resources>,\n> = <const CallbackName extends string, const Names>(\n options: {\n resource: Resource;\n name: SelectedResourceLayoutNames<\n LayoutResourceKey<Resources>,\n Resource,\n CallbackName\n > &\n AtLeastOneResourceLayoutNameKey<Resource> &\n Record<\n string,\n NonNullable<\n ResourceLayoutNames<\n LayoutResourceKey<Resources>,\n CallbackName\n >[LayoutResourceKey<Resources>]\n >\n >;\n } & {\n name: Names & Record<Exclude<keyof Names, Resource>, never>;\n },\n) => ResourceLayoutBuilder<\n Resources,\n InProps,\n Composables,\n MappedResourceName<Names, CallbackName, Resource>,\n Resource,\n CustomProps\n>;\n\ntype ResourceLayoutNameMapFns<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n CustomProps extends InPropsObject,\n> = UnionToIntersection<\n {\n [Resource in LayoutResourceKey<Resources>]: ResourceLayoutNameMapFn<\n Resources,\n InProps,\n Composables,\n CustomProps,\n Resource\n >;\n }[LayoutResourceKey<Resources>]\n>;\n\nexport type CreateLayoutForResource<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents = {},\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {},\n CustomProps extends InPropsObject = {},\n> = {\n /**\n * Creates a layout builder for one resource without a default name.\n *\n * @example\n * createResourceLayout.forResource('users')\n *\n * @param resource The resource to bind to the returned layout builder.\n * @returns A layout builder bound to the selected resource.\n */\n <const Resource extends LayoutResourceKey<Resources>>(\n resource: Resource,\n ): ResourceLayoutBuilder<\n Resources,\n InProps,\n Composables,\n string,\n Resource,\n CustomProps\n >;\n\n /**\n * Creates a layout builder with a capitalized-resource naming callback.\n *\n * @example\n * createResourceLayout.forResource({\n * resource: 'users',\n * name: resource => `${resource}Page`,\n * })\n *\n * @param options The resource and its default-name callback.\n * @returns A layout builder bound to the selected resource.\n */\n <\n const Resource extends LayoutResourceKey<Resources>,\n const Name extends string,\n >(\n options: {\n name: (resource: CapitalizedResource<Resource>) => Name;\n resource: Resource;\n },\n ): ResourceLayoutBuilder<\n Resources,\n InProps,\n Composables,\n NormalizeCapitalizedResourceName<Name, Resource>,\n Resource,\n CustomProps\n >;\n\n /**\n * Creates a layout builder from the existing resource-options notation.\n *\n * @example\n * createResourceLayout.forResource({\n * resource: 'users',\n * name: 'UsersPage',\n * })\n *\n * @param options The resource and its optional default name.\n * @returns A layout builder bound to the selected resource.\n */\n <\n const Resource extends LayoutResourceKey<Resources>,\n const Name extends string = string,\n >(\n options: CreateLayoutForResourceOptions<Resources, Name, Resource>,\n ): ResourceLayoutBuilder<\n Resources,\n InProps,\n Composables,\n Name,\n Resource,\n CustomProps\n >;\n\n /**\n * Creates a layout builder from a single resource-keyed configuration.\n *\n * @example\n * createResourceLayout.forResource({\n * users: { name: resource => `${resource}Page` },\n * })\n *\n * @param options A single resource-keyed layout configuration.\n * @returns A layout builder bound to the configured resource.\n */\n <\n const CallbackName extends string,\n const Selection extends SingleResourceLayoutSelection<\n Resources,\n CallbackName\n >,\n >(\n options: Selection,\n ): ResourceLayoutBuilder<\n Resources,\n InProps,\n Composables,\n SelectedResourceName<\n Selection,\n keyof Selection & LayoutResourceKey<Resources>\n >,\n keyof Selection & LayoutResourceKey<Resources>,\n CustomProps\n >;\n} & ResourceLayoutNameMapFns<\n Resources,\n InProps,\n Composables,\n CustomProps\n>;\n\ntype CreateForResourceOptions = {\n createResourceLayout: (options: Record<string, unknown>) => unknown;\n resolveLayoutOptionDefaults: (\n defaults: Record<string, unknown>,\n options: Record<string, unknown>,\n ) => Record<string, unknown>;\n};\n\nexport function createForResource<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>,\n CustomProps extends InPropsObject,\n>({\n createResourceLayout,\n resolveLayoutOptionDefaults,\n}: CreateForResourceOptions) {\n function createLayoutForResource<\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n Defaults extends LayoutPropDefaults,\n >(\n defaultName: Name | undefined,\n resource: Resource,\n defaults: Record<string, unknown>,\n ) {\n return ((\n layoutOptions: { name?: string } & Record<string, unknown> = {},\n ) => {\n const { name, ...options } = layoutOptions;\n\n return createResourceLayout({\n ...defaults,\n name: name ?? defaultName,\n resource,\n ...resolveLayoutOptionDefaults(defaults, options),\n });\n }) as CreatedLayoutForResource<\n Resources,\n InProps,\n Composables,\n Name,\n Resource,\n CustomProps,\n Defaults\n >;\n }\n\n function createLayoutForResourceBuilder<\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n >(defaultName: Name | undefined, resource: Resource) {\n const createLayout = createLayoutForResource(defaultName, resource, {});\n const setDefaults = ((defaults) =>\n createLayoutForResource(\n defaultName,\n resource,\n defaults,\n )) as SetDefaultPropForResourceFn<\n Resources,\n InProps,\n Composables,\n Name,\n Resource,\n CustomProps\n >;\n\n return Object.assign(createLayout, { setDefaults });\n }\n\n const forResource = ((resourceOrOptions: unknown) => {\n type ResourceName =\n | string\n | ((resource: CapitalizedResource<LayoutResourceKey<Resources>>) => string);\n let name:\n | ResourceName\n | Partial<Record<LayoutResourceKey<Resources>, ResourceName>>\n | undefined;\n let resource: LayoutResourceKey<Resources> | undefined;\n\n if (typeof resourceOrOptions === 'string') {\n resource = resourceOrOptions as LayoutResourceKey<Resources>;\n } else if (\n resourceOrOptions !== null &&\n typeof resourceOrOptions === 'object' &&\n ('resource' in resourceOrOptions || 'name' in resourceOrOptions)\n ) {\n ({ name, resource } = resourceOrOptions as {\n name?: typeof name;\n resource?: LayoutResourceKey<Resources>;\n });\n } else {\n const [selection] = Object.entries(resourceOrOptions ?? {});\n\n if (selection) {\n const [selectedResource, options] = selection;\n resource = selectedResource as LayoutResourceKey<Resources>;\n name = (options as { name?: typeof name }).name;\n }\n }\n\n if (!resource) {\n throw new Error('\"resource\" is required when calling \"forResource\"');\n }\n\n const selectedName =\n name !== null && typeof name === 'object' ? name[resource] : name;\n let defaultName: string | undefined;\n\n if (typeof selectedName === 'function') {\n defaultName = selectedName(\n capitalize(resource) as CapitalizedResource<\n LayoutResourceKey<Resources>\n >,\n );\n } else if (typeof selectedName === 'string') {\n defaultName = selectedName;\n }\n\n return createLayoutForResourceBuilder(defaultName, resource);\n }) as CreateLayoutForResource<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n\n return { createLayoutForResourceBuilder, forResource };\n}\n"],"mappings":";;;AAifA,SAAgB,kBAMd,EACA,sBACA,+BAC2B;CAC3B,SAAS,wBAKP,aACA,UACA,UACA;EACA,SACE,gBAA6D,CAAC,MAC3D;GACH,MAAM,EAAE,MAAM,GAAG,YAAY;GAE7B,OAAO,qBAAqB;IAC1B,GAAG;IACH,MAAM,QAAQ;IACd;IACA,GAAG,4BAA4B,UAAU,OAAO;GAClD,CAAC;EACH;CASF;CAEA,SAAS,+BAGP,aAA+B,UAAoB;EACnD,MAAM,eAAe,wBAAwB,aAAa,UAAU,CAAC,CAAC;EACtE,MAAM,gBAAgB,aACpB,wBACE,aACA,UACA,QACF;EASF,OAAO,OAAO,OAAO,cAAc,EAAE,YAAY,CAAC;CACpD;CAEA,MAAM,gBAAgB,sBAA+B;EAInD,IAAI;EAIJ,IAAI;EAEJ,IAAI,OAAO,sBAAsB,UAC/B,WAAW;OACN,IACL,sBAAsB,QACtB,OAAO,sBAAsB,aAC5B,cAAc,qBAAqB,UAAU,oBAE9C,CAAC,CAAE,MAAM,YAAa;OAIjB;GACL,MAAM,CAAC,aAAa,OAAO,QAAQ,qBAAqB,CAAC,CAAC;GAE1D,IAAI,WAAW;IACb,MAAM,CAAC,kBAAkB,WAAW;IACpC,WAAW;IACX,OAAQ,QAAmC;GAC7C;EACF;EAEA,IAAI,CAAC,UACH,MAAM,IAAI,MAAM,uDAAmD;EAGrE,MAAM,eACJ,SAAS,QAAQ,OAAO,SAAS,WAAW,KAAK,YAAY;EAC/D,IAAI;EAEJ,IAAI,OAAO,iBAAiB,YAC1B,cAAc,aACZA,8BAAW,QAAQ,CAGrB;OACK,IAAI,OAAO,iBAAiB,UACjC,cAAc;EAGhB,OAAO,+BAA+B,aAAa,QAAQ;CAC7D;CAQA,OAAO;EAAE;EAAgC;CAAY;AACvD"}
1
+ {"version":3,"file":"for-resource.cjs","names":["capitalize"],"sources":["../../src/create-config/for-resource.ts"],"sourcesContent":["import type { ComposableComponents } from '@jfdevelops/react-layout-composables';\nimport type {\n InPropsDefinition,\n InPropsObject,\n MergedLayoutInProps,\n ResolvedIncludedComponentProps,\n} from '../props';\nimport type {\n LayoutResourceKey,\n ResourceDefinition,\n} from '../resource';\nimport type { UnionToIntersection, Updater } from '../utils';\nimport { capitalize } from '../utils/capitalize';\nimport type {\n LayoutIncludeProps,\n LayoutPropsForResource,\n ResourceLayoutComponent,\n} from './define-layout';\n\ntype LayoutPropDefaults = Record<string, unknown>;\n\ntype CreateTimeLayoutPropWithDefault<\n LayoutProps extends LayoutPropDefaults,\n Key extends keyof LayoutProps,\n> = LayoutProps[Key] extends (...args: unknown[]) => unknown\n ? LayoutProps[Key]\n : Updater<LayoutProps[Key]>;\n\ntype ResolveLayoutPropsWithDefaults<\n LayoutProps extends LayoutPropDefaults,\n Defaults extends LayoutPropDefaults,\n> = Omit<LayoutProps, keyof Defaults> & {\n [Key in keyof Defaults & keyof LayoutProps]?: CreateTimeLayoutPropWithDefault<\n LayoutProps,\n Key\n >;\n};\n\nexport type CreateResourceLayoutOptionsBase<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n Props extends InPropsObject = {},\n> = {\n name: Name;\n resource: Resource;\n props?: Props;\n};\n\nexport type CreateResourceLayoutOptions<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>,\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n Props extends InPropsObject = {},\n> = LayoutPropsForResource<Resources, InProps, Composables, IncludeProps> &\n CreateResourceLayoutOptionsBase<Resources, Name, Resource, Props>;\n\nexport type CreateLayoutForResourceOptions<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n> = {\n name?: Name;\n resource: Resource;\n};\n\ntype CreatedLayoutForResourceOptions<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>,\n Props extends InPropsObject = {},\n Defaults extends LayoutPropDefaults = {},\n> = ResolveLayoutPropsWithDefaults<\n LayoutPropsForResource<Resources, InProps, Composables, IncludeProps>,\n Defaults\n> & {\n props?: Props;\n};\n\ntype CreatedLayoutForResourceCallOptions<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>,\n OverrideName extends string,\n Props extends InPropsObject,\n Defaults extends LayoutPropDefaults,\n> = CreatedLayoutForResourceOptions<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n Props,\n Defaults\n> & {\n name?: OverrideName;\n};\n\nexport type CreatedLayoutForResource<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>,\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n CustomProps extends InPropsObject = {},\n Defaults extends LayoutPropDefaults = {},\n> = <OverrideName extends string = Name, Props extends InPropsObject = {}>(\n ...args: {} extends CreatedLayoutForResourceCallOptions<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n OverrideName,\n Props,\n Defaults\n >\n ? [options?: CreatedLayoutForResourceCallOptions<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n OverrideName,\n Props,\n Defaults\n >]\n : [options: CreatedLayoutForResourceCallOptions<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n OverrideName,\n Props,\n Defaults\n >]\n) => ResourceLayoutComponent<\n OverrideName,\n CustomProps,\n Composables,\n Resource,\n ResolvedIncludedComponentProps<\n MergedLayoutInProps<Resources, InProps, Composables>,\n IncludeProps\n >\n>;\n\ntype SetDefaultPropsForResource<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents = {},\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {},\n> = Partial<\n LayoutPropsForResource<Resources, InProps, Composables, IncludeProps>\n>;\n\ntype ResolvedSetDefaultProps<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>,\n Defaults extends SetDefaultPropsForResource<\n Resources,\n InProps,\n Composables,\n IncludeProps\n >,\n> = {\n [Key in keyof Defaults &\n keyof LayoutPropsForResource<\n Resources,\n InProps,\n Composables,\n IncludeProps\n >]: LayoutPropsForResource<\n Resources,\n InProps,\n Composables,\n IncludeProps\n >[Key];\n};\n\nexport type SetDefaultPropForResourceFn<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>,\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n CustomProps extends InPropsObject = {},\n> = <\n const Defaults extends SetDefaultPropsForResource<\n Resources,\n InProps,\n Composables,\n IncludeProps\n >,\n>(\n /** Default values for layout props. Each prop can only be set once. */\n defaults: Defaults,\n) => CreatedLayoutForResource<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n Name,\n Resource,\n CustomProps,\n ResolvedSetDefaultProps<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n Defaults\n >\n>;\n\ntype CapitalizedResource<Resource extends string> =\n Resource extends Resource\n ? {\n toLowerCase: () => Lowercase<Capitalize<Resource>>;\n } & Capitalize<Resource>\n : never;\n\ntype ResourceLayoutNames<\n Resource extends string,\n CallbackName extends string,\n> = {\n [TargetResource in Resource]?:\n | string\n | ((resource: CapitalizedResource<TargetResource>) => CallbackName);\n};\n\ntype AtLeastOneResourceLayoutNameKey<Resource extends string> = {\n [TargetResource in Resource]: Record<TargetResource, unknown> &\n Partial<Record<Exclude<Resource, TargetResource>, unknown>>;\n}[Resource];\n\ntype SelectedResourceLayoutNames<\n Resource extends string,\n SelectedResource extends Resource,\n CallbackName extends string,\n> = {\n [TargetResource in Resource as TargetResource extends SelectedResource\n ? TargetResource\n : never]?:\n | string\n | ((resource: CapitalizedResource<TargetResource>) => CallbackName);\n};\n\ntype NormalizeCapitalizedResourceName<\n Name extends string,\n Resource extends string,\n> = Name extends Name\n ? NormalizeCapitalizedResourceNameMatch<\n Name,\n Resource\n > extends infer Match extends string\n ? [Match] extends [never]\n ? Name\n : Match\n : never\n : never;\n\ntype NormalizeCapitalizedResourceNameMatch<\n Name extends string,\n Resource extends string,\n> = Resource extends Resource\n ? Name extends `${CapitalizedResource<Resource>}${infer Suffix}`\n ? `${Capitalize<Resource>}${Suffix}`\n : never\n : never;\n\ntype ResourceLayoutBuilder<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>,\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n CustomProps extends InPropsObject,\n> = CreatedLayoutForResource<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n Name,\n Resource,\n CustomProps\n> & {\n /** Set default values for layout props in a single call. */\n setDefaults: SetDefaultPropForResourceFn<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n Name,\n Resource,\n CustomProps\n >;\n};\n\ntype SingleResourceLayoutSelection<\n Resources extends ReadonlyArray<ResourceDefinition>,\n CallbackName extends string,\n> = {\n [Resource in LayoutResourceKey<Resources>]: Record<\n Resource,\n {\n name?:\n | string\n | ((resource: CapitalizedResource<Resource>) => CallbackName);\n }\n > &\n Partial<\n Record<\n Exclude<LayoutResourceKey<Resources>, Resource>,\n never\n >\n >;\n}[LayoutResourceKey<Resources>];\n\ntype SelectedResourceName<Selection, Resource extends string> =\n Selection extends Record<Resource, { name?: infer Name }>\n ? Name extends (...args: never[]) => infer CallbackName\n ? NormalizeCapitalizedResourceName<CallbackName & string, Resource>\n : Name extends string\n ? Name\n : string\n : string;\n\ntype MappedResourceName<\n Names,\n CallbackName extends string,\n Resource extends string,\n> = Names extends Record<Resource, infer Name>\n ? Name extends (...args: never[]) => unknown\n ? NormalizeCapitalizedResourceName<CallbackName, Resource>\n : Name & string\n : string;\n\n/**\n * Creates a layout builder with a resource-keyed default-name map.\n *\n * @example\n * createResourceLayout.forResource({\n * resource: 'users',\n * name: {\n * users: resource => `${resource}Page`,\n * },\n * })\n *\n * @param options The resource and its resource-keyed default name.\n * @returns A layout builder bound to the selected resource.\n */\ntype ResourceLayoutNameMapFn<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>,\n CustomProps extends InPropsObject,\n Resource extends LayoutResourceKey<Resources>,\n> = <const CallbackName extends string, const Names>(\n options: {\n resource: Resource;\n name: SelectedResourceLayoutNames<\n LayoutResourceKey<Resources>,\n Resource,\n CallbackName\n > &\n AtLeastOneResourceLayoutNameKey<Resource> &\n Record<\n string,\n NonNullable<\n ResourceLayoutNames<\n LayoutResourceKey<Resources>,\n CallbackName\n >[LayoutResourceKey<Resources>]\n >\n >;\n } & {\n name: Names & Record<Exclude<keyof Names, Resource>, never>;\n },\n) => ResourceLayoutBuilder<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n MappedResourceName<Names, CallbackName, Resource>,\n Resource,\n CustomProps\n>;\n\ntype ResourceLayoutNameMapFns<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>,\n CustomProps extends InPropsObject,\n> = UnionToIntersection<\n {\n [Resource in LayoutResourceKey<Resources>]: ResourceLayoutNameMapFn<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps,\n Resource\n >;\n }[LayoutResourceKey<Resources>]\n>;\n\nexport type CreateLayoutForResource<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents = {},\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {},\n CustomProps extends InPropsObject = {},\n> = {\n /**\n * Creates a layout builder for one resource without a default name.\n *\n * @example\n * createResourceLayout.forResource('users')\n *\n * @param resource The resource to bind to the returned layout builder.\n * @returns A layout builder bound to the selected resource.\n */\n <const Resource extends LayoutResourceKey<Resources>>(\n resource: Resource,\n ): ResourceLayoutBuilder<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n string,\n Resource,\n CustomProps\n >;\n\n /**\n * Creates a layout builder with a capitalized-resource naming callback.\n *\n * @example\n * createResourceLayout.forResource({\n * resource: 'users',\n * name: resource => `${resource}Page`,\n * })\n *\n * @param options The resource and its default-name callback.\n * @returns A layout builder bound to the selected resource.\n */\n <\n const Resource extends LayoutResourceKey<Resources>,\n const Name extends string,\n >(\n options: {\n name: (resource: CapitalizedResource<Resource>) => Name;\n resource: Resource;\n },\n ): ResourceLayoutBuilder<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n NormalizeCapitalizedResourceName<Name, Resource>,\n Resource,\n CustomProps\n >;\n\n /**\n * Creates a layout builder from the existing resource-options notation.\n *\n * @example\n * createResourceLayout.forResource({\n * resource: 'users',\n * name: 'UsersPage',\n * })\n *\n * @param options The resource and its optional default name.\n * @returns A layout builder bound to the selected resource.\n */\n <\n const Resource extends LayoutResourceKey<Resources>,\n const Name extends string = string,\n >(\n options: CreateLayoutForResourceOptions<Resources, Name, Resource>,\n ): ResourceLayoutBuilder<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n Name,\n Resource,\n CustomProps\n >;\n\n /**\n * Creates a layout builder from a single resource-keyed configuration.\n *\n * @example\n * createResourceLayout.forResource({\n * users: { name: resource => `${resource}Page` },\n * })\n *\n * @param options A single resource-keyed layout configuration.\n * @returns A layout builder bound to the configured resource.\n */\n <\n const CallbackName extends string,\n const Selection extends SingleResourceLayoutSelection<\n Resources,\n CallbackName\n >,\n >(\n options: Selection,\n ): ResourceLayoutBuilder<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n SelectedResourceName<\n Selection,\n keyof Selection & LayoutResourceKey<Resources>\n >,\n keyof Selection & LayoutResourceKey<Resources>,\n CustomProps\n >;\n} & ResourceLayoutNameMapFns<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n>;\n\ntype CreateForResourceOptions = {\n createResourceLayout: (options: Record<string, unknown>) => unknown;\n resolveLayoutOptionDefaults: (\n defaults: Record<string, unknown>,\n options: Record<string, unknown>,\n ) => Record<string, unknown>;\n};\n\nexport function createForResource<\n Resources extends ReadonlyArray<ResourceDefinition>,\n InProps extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>,\n CustomProps extends InPropsObject,\n>({\n createResourceLayout,\n resolveLayoutOptionDefaults,\n}: CreateForResourceOptions) {\n function createLayoutForResource<\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n Defaults extends LayoutPropDefaults,\n >(\n defaultName: Name | undefined,\n resource: Resource,\n defaults: Record<string, unknown>,\n ) {\n return ((\n layoutOptions: { name?: string } & Record<string, unknown> = {},\n ) => {\n const { name, ...options } = layoutOptions;\n\n return createResourceLayout({\n ...defaults,\n name: name ?? defaultName,\n resource,\n ...resolveLayoutOptionDefaults(defaults, options),\n });\n }) as CreatedLayoutForResource<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n Name,\n Resource,\n CustomProps,\n Defaults\n >;\n }\n\n function createLayoutForResourceBuilder<\n Name extends string,\n Resource extends LayoutResourceKey<Resources>,\n >(defaultName: Name | undefined, resource: Resource) {\n const createLayout = createLayoutForResource(defaultName, resource, {});\n const setDefaults = ((defaults) =>\n createLayoutForResource(\n defaultName,\n resource,\n defaults,\n )) as SetDefaultPropForResourceFn<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n Name,\n Resource,\n CustomProps\n >;\n\n return Object.assign(createLayout, { setDefaults });\n }\n\n const forResource = ((resourceOrOptions: unknown) => {\n type ResourceName =\n | string\n | ((resource: CapitalizedResource<LayoutResourceKey<Resources>>) => string);\n let name:\n | ResourceName\n | Partial<Record<LayoutResourceKey<Resources>, ResourceName>>\n | undefined;\n let resource: LayoutResourceKey<Resources> | undefined;\n\n if (typeof resourceOrOptions === 'string') {\n resource = resourceOrOptions as LayoutResourceKey<Resources>;\n } else if (\n resourceOrOptions !== null &&\n typeof resourceOrOptions === 'object' &&\n ('resource' in resourceOrOptions || 'name' in resourceOrOptions)\n ) {\n ({ name, resource } = resourceOrOptions as {\n name?: typeof name;\n resource?: LayoutResourceKey<Resources>;\n });\n } else {\n const [selection] = Object.entries(resourceOrOptions ?? {});\n\n if (selection) {\n const [selectedResource, options] = selection;\n resource = selectedResource as LayoutResourceKey<Resources>;\n name = (options as { name?: typeof name }).name;\n }\n }\n\n if (!resource) {\n throw new Error('\"resource\" is required when calling \"forResource\"');\n }\n\n const selectedName =\n name !== null && typeof name === 'object' ? name[resource] : name;\n let defaultName: string | undefined;\n\n if (typeof selectedName === 'function') {\n defaultName = selectedName(\n capitalize(resource) as CapitalizedResource<\n LayoutResourceKey<Resources>\n >,\n );\n } else if (typeof selectedName === 'string') {\n defaultName = selectedName;\n }\n\n return createLayoutForResourceBuilder(defaultName, resource);\n }) as CreateLayoutForResource<\n Resources,\n InProps,\n Composables,\n IncludeProps,\n CustomProps\n >;\n\n return { createLayoutForResourceBuilder, forResource };\n}\n"],"mappings":";;;AAmiBA,SAAgB,kBAMd,EACA,sBACA,+BAC2B;CAC3B,SAAS,wBAKP,aACA,UACA,UACA;EACA,SACE,gBAA6D,CAAC,MAC3D;GACH,MAAM,EAAE,MAAM,GAAG,YAAY;GAE7B,OAAO,qBAAqB;IAC1B,GAAG;IACH,MAAM,QAAQ;IACd;IACA,GAAG,4BAA4B,UAAU,OAAO;GAClD,CAAC;EACH;CAUF;CAEA,SAAS,+BAGP,aAA+B,UAAoB;EACnD,MAAM,eAAe,wBAAwB,aAAa,UAAU,CAAC,CAAC;EACtE,MAAM,gBAAgB,aACpB,wBACE,aACA,UACA,QACF;EAUF,OAAO,OAAO,OAAO,cAAc,EAAE,YAAY,CAAC;CACpD;CAEA,MAAM,gBAAgB,sBAA+B;EAInD,IAAI;EAIJ,IAAI;EAEJ,IAAI,OAAO,sBAAsB,UAC/B,WAAW;OACN,IACL,sBAAsB,QACtB,OAAO,sBAAsB,aAC5B,cAAc,qBAAqB,UAAU,oBAE9C,CAAC,CAAE,MAAM,YAAa;OAIjB;GACL,MAAM,CAAC,aAAa,OAAO,QAAQ,qBAAqB,CAAC,CAAC;GAE1D,IAAI,WAAW;IACb,MAAM,CAAC,kBAAkB,WAAW;IACpC,WAAW;IACX,OAAQ,QAAmC;GAC7C;EACF;EAEA,IAAI,CAAC,UACH,MAAM,IAAI,MAAM,uDAAmD;EAGrE,MAAM,eACJ,SAAS,QAAQ,OAAO,SAAS,WAAW,KAAK,YAAY;EAC/D,IAAI;EAEJ,IAAI,OAAO,iBAAiB,YAC1B,cAAc,aACZA,8BAAW,QAAQ,CAGrB;OACK,IAAI,OAAO,iBAAiB,UACjC,cAAc;EAGhB,OAAO,+BAA+B,aAAa,QAAQ;CAC7D;CAQA,OAAO;EAAE;EAAgC;CAAY;AACvD"}
@@ -1,6 +1,6 @@
1
1
  import { UnionToIntersection, Updater } from "../utils.cjs";
2
2
  import { LayoutResourceKey, ResourceDefinition } from "../resource.cjs";
3
- import { InPropsDefinition, InPropsObject } from "../props.cjs";
3
+ import { InPropsDefinition, InPropsObject, MergedLayoutInProps, ResolvedIncludedComponentProps } from "../props.cjs";
4
4
  import { LayoutIncludeProps, LayoutPropsForResource, ResourceLayoutComponent } from "./define-layout.cjs";
5
5
  import { ComposableComponents } from "@jfdevelops/react-layout-composables";
6
6
 
@@ -13,23 +13,23 @@ type CreateResourceLayoutOptionsBase<Resources extends ReadonlyArray<ResourceDef
13
13
  resource: Resource;
14
14
  props?: Props;
15
15
  };
16
- type CreateResourceLayoutOptions<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Name extends string, Resource extends LayoutResourceKey<Resources>, Props extends InPropsObject = {}> = LayoutPropsForResource<Resources, InProps, Composables> & CreateResourceLayoutOptionsBase<Resources, Name, Resource, Props>;
16
+ type CreateResourceLayoutOptions<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>, Name extends string, Resource extends LayoutResourceKey<Resources>, Props extends InPropsObject = {}> = LayoutPropsForResource<Resources, InProps, Composables, IncludeProps> & CreateResourceLayoutOptionsBase<Resources, Name, Resource, Props>;
17
17
  type CreateLayoutForResourceOptions<Resources extends ReadonlyArray<ResourceDefinition>, Name extends string, Resource extends LayoutResourceKey<Resources>> = {
18
18
  name?: Name;
19
19
  resource: Resource;
20
20
  };
21
- type CreatedLayoutForResourceOptions<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Props extends InPropsObject = {}, Defaults extends LayoutPropDefaults = {}> = ResolveLayoutPropsWithDefaults<LayoutPropsForResource<Resources, InProps, Composables>, Defaults> & {
21
+ type CreatedLayoutForResourceOptions<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>, Props extends InPropsObject = {}, Defaults extends LayoutPropDefaults = {}> = ResolveLayoutPropsWithDefaults<LayoutPropsForResource<Resources, InProps, Composables, IncludeProps>, Defaults> & {
22
22
  props?: Props;
23
23
  };
24
- type CreatedLayoutForResourceCallOptions<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, OverrideName extends string, Props extends InPropsObject, Defaults extends LayoutPropDefaults> = CreatedLayoutForResourceOptions<Resources, InProps, Composables, Props, Defaults> & {
24
+ type CreatedLayoutForResourceCallOptions<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>, OverrideName extends string, Props extends InPropsObject, Defaults extends LayoutPropDefaults> = CreatedLayoutForResourceOptions<Resources, InProps, Composables, IncludeProps, Props, Defaults> & {
25
25
  name?: OverrideName;
26
26
  };
27
- type CreatedLayoutForResource<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Name extends string, Resource extends LayoutResourceKey<Resources>, CustomProps extends InPropsObject = {}, Defaults extends LayoutPropDefaults = {}> = <OverrideName extends string = Name, Props extends InPropsObject = {}>(...args: {} extends CreatedLayoutForResourceCallOptions<Resources, InProps, Composables, OverrideName, Props, Defaults> ? [options?: CreatedLayoutForResourceCallOptions<Resources, InProps, Composables, OverrideName, Props, Defaults>] : [options: CreatedLayoutForResourceCallOptions<Resources, InProps, Composables, OverrideName, Props, Defaults>]) => ResourceLayoutComponent<OverrideName, CustomProps, Composables, Resource>;
28
- type SetDefaultPropsForResource<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents = {}> = Partial<LayoutPropsForResource<Resources, InProps, Composables>>;
29
- type ResolvedSetDefaultProps<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Defaults extends SetDefaultPropsForResource<Resources, InProps, Composables>> = { [Key in keyof Defaults & keyof LayoutPropsForResource<Resources, InProps, Composables>]: LayoutPropsForResource<Resources, InProps, Composables>[Key] };
30
- type SetDefaultPropForResourceFn<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Name extends string, Resource extends LayoutResourceKey<Resources>, CustomProps extends InPropsObject = {}> = <const Defaults extends SetDefaultPropsForResource<Resources, InProps, Composables>>(/** Default values for layout props. Each prop can only be set once. */
27
+ type CreatedLayoutForResource<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>, Name extends string, Resource extends LayoutResourceKey<Resources>, CustomProps extends InPropsObject = {}, Defaults extends LayoutPropDefaults = {}> = <OverrideName extends string = Name, Props extends InPropsObject = {}>(...args: {} extends CreatedLayoutForResourceCallOptions<Resources, InProps, Composables, IncludeProps, OverrideName, Props, Defaults> ? [options?: CreatedLayoutForResourceCallOptions<Resources, InProps, Composables, IncludeProps, OverrideName, Props, Defaults>] : [options: CreatedLayoutForResourceCallOptions<Resources, InProps, Composables, IncludeProps, OverrideName, Props, Defaults>]) => ResourceLayoutComponent<OverrideName, CustomProps, Composables, Resource, ResolvedIncludedComponentProps<MergedLayoutInProps<Resources, InProps, Composables>, IncludeProps>>;
28
+ type SetDefaultPropsForResource<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents = {}, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {}> = Partial<LayoutPropsForResource<Resources, InProps, Composables, IncludeProps>>;
29
+ type ResolvedSetDefaultProps<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>, Defaults extends SetDefaultPropsForResource<Resources, InProps, Composables, IncludeProps>> = { [Key in keyof Defaults & keyof LayoutPropsForResource<Resources, InProps, Composables, IncludeProps>]: LayoutPropsForResource<Resources, InProps, Composables, IncludeProps>[Key] };
30
+ type SetDefaultPropForResourceFn<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>, Name extends string, Resource extends LayoutResourceKey<Resources>, CustomProps extends InPropsObject = {}> = <const Defaults extends SetDefaultPropsForResource<Resources, InProps, Composables, IncludeProps>>(/** Default values for layout props. Each prop can only be set once. */
31
31
 
32
- defaults: Defaults) => CreatedLayoutForResource<Resources, InProps, Composables, Name, Resource, CustomProps, ResolvedSetDefaultProps<Resources, InProps, Composables, Defaults>>;
32
+ defaults: Defaults) => CreatedLayoutForResource<Resources, InProps, Composables, IncludeProps, Name, Resource, CustomProps, ResolvedSetDefaultProps<Resources, InProps, Composables, IncludeProps, Defaults>>;
33
33
  type CapitalizedResource<Resource extends string> = Resource extends Resource ? {
34
34
  toLowerCase: () => Lowercase<Capitalize<Resource>>;
35
35
  } & Capitalize<Resource> : never;
@@ -38,8 +38,8 @@ type AtLeastOneResourceLayoutNameKey<Resource extends string> = { [TargetResourc
38
38
  type SelectedResourceLayoutNames<Resource extends string, SelectedResource extends Resource, CallbackName extends string> = { [TargetResource in Resource as TargetResource extends SelectedResource ? TargetResource : never]?: string | ((resource: CapitalizedResource<TargetResource>) => CallbackName) };
39
39
  type NormalizeCapitalizedResourceName<Name extends string, Resource extends string> = Name extends Name ? NormalizeCapitalizedResourceNameMatch<Name, Resource> extends infer Match extends string ? [Match] extends [never] ? Name : Match : never : never;
40
40
  type NormalizeCapitalizedResourceNameMatch<Name extends string, Resource extends string> = Resource extends Resource ? Name extends `${CapitalizedResource<Resource>}${infer Suffix}` ? `${Capitalize<Resource>}${Suffix}` : never : never;
41
- type ResourceLayoutBuilder<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Name extends string, Resource extends LayoutResourceKey<Resources>, CustomProps extends InPropsObject> = CreatedLayoutForResource<Resources, InProps, Composables, Name, Resource, CustomProps> & {
42
- /** Set default values for layout props in a single call. */setDefaults: SetDefaultPropForResourceFn<Resources, InProps, Composables, Name, Resource, CustomProps>;
41
+ type ResourceLayoutBuilder<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>, Name extends string, Resource extends LayoutResourceKey<Resources>, CustomProps extends InPropsObject> = CreatedLayoutForResource<Resources, InProps, Composables, IncludeProps, Name, Resource, CustomProps> & {
42
+ /** Set default values for layout props in a single call. */setDefaults: SetDefaultPropForResourceFn<Resources, InProps, Composables, IncludeProps, Name, Resource, CustomProps>;
43
43
  };
44
44
  type SingleResourceLayoutSelection<Resources extends ReadonlyArray<ResourceDefinition>, CallbackName extends string> = { [Resource in LayoutResourceKey<Resources>]: Record<Resource, {
45
45
  name?: string | ((resource: CapitalizedResource<Resource>) => CallbackName);
@@ -62,13 +62,13 @@ type MappedResourceName<Names, CallbackName extends string, Resource extends str
62
62
  * @param options The resource and its resource-keyed default name.
63
63
  * @returns A layout builder bound to the selected resource.
64
64
  */
65
- type ResourceLayoutNameMapFn<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, CustomProps extends InPropsObject, Resource extends LayoutResourceKey<Resources>> = <const CallbackName extends string, const Names>(options: {
65
+ type ResourceLayoutNameMapFn<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>, CustomProps extends InPropsObject, Resource extends LayoutResourceKey<Resources>> = <const CallbackName extends string, const Names>(options: {
66
66
  resource: Resource;
67
67
  name: SelectedResourceLayoutNames<LayoutResourceKey<Resources>, Resource, CallbackName> & AtLeastOneResourceLayoutNameKey<Resource> & Record<string, NonNullable<ResourceLayoutNames<LayoutResourceKey<Resources>, CallbackName>[LayoutResourceKey<Resources>]>>;
68
68
  } & {
69
69
  name: Names & Record<Exclude<keyof Names, Resource>, never>;
70
- }) => ResourceLayoutBuilder<Resources, InProps, Composables, MappedResourceName<Names, CallbackName, Resource>, Resource, CustomProps>;
71
- type ResourceLayoutNameMapFns<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, CustomProps extends InPropsObject> = UnionToIntersection<{ [Resource in LayoutResourceKey<Resources>]: ResourceLayoutNameMapFn<Resources, InProps, Composables, CustomProps, Resource> }[LayoutResourceKey<Resources>]>;
70
+ }) => ResourceLayoutBuilder<Resources, InProps, Composables, IncludeProps, MappedResourceName<Names, CallbackName, Resource>, Resource, CustomProps>;
71
+ type ResourceLayoutNameMapFns<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>, CustomProps extends InPropsObject> = UnionToIntersection<{ [Resource in LayoutResourceKey<Resources>]: ResourceLayoutNameMapFn<Resources, InProps, Composables, IncludeProps, CustomProps, Resource> }[LayoutResourceKey<Resources>]>;
72
72
  type CreateLayoutForResource<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents = {}, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {}, CustomProps extends InPropsObject = {}> = {
73
73
  /**
74
74
  * Creates a layout builder for one resource without a default name.
@@ -79,7 +79,7 @@ type CreateLayoutForResource<Resources extends ReadonlyArray<ResourceDefinition>
79
79
  * @param resource The resource to bind to the returned layout builder.
80
80
  * @returns A layout builder bound to the selected resource.
81
81
  */
82
- <const Resource extends LayoutResourceKey<Resources>>(resource: Resource): ResourceLayoutBuilder<Resources, InProps, Composables, string, Resource, CustomProps>;
82
+ <const Resource extends LayoutResourceKey<Resources>>(resource: Resource): ResourceLayoutBuilder<Resources, InProps, Composables, IncludeProps, string, Resource, CustomProps>;
83
83
  /**
84
84
  * Creates a layout builder with a capitalized-resource naming callback.
85
85
  *
@@ -95,7 +95,7 @@ type CreateLayoutForResource<Resources extends ReadonlyArray<ResourceDefinition>
95
95
  <const Resource extends LayoutResourceKey<Resources>, const Name extends string>(options: {
96
96
  name: (resource: CapitalizedResource<Resource>) => Name;
97
97
  resource: Resource;
98
- }): ResourceLayoutBuilder<Resources, InProps, Composables, NormalizeCapitalizedResourceName<Name, Resource>, Resource, CustomProps>;
98
+ }): ResourceLayoutBuilder<Resources, InProps, Composables, IncludeProps, NormalizeCapitalizedResourceName<Name, Resource>, Resource, CustomProps>;
99
99
  /**
100
100
  * Creates a layout builder from the existing resource-options notation.
101
101
  *
@@ -108,7 +108,7 @@ type CreateLayoutForResource<Resources extends ReadonlyArray<ResourceDefinition>
108
108
  * @param options The resource and its optional default name.
109
109
  * @returns A layout builder bound to the selected resource.
110
110
  */
111
- <const Resource extends LayoutResourceKey<Resources>, const Name extends string = string>(options: CreateLayoutForResourceOptions<Resources, Name, Resource>): ResourceLayoutBuilder<Resources, InProps, Composables, Name, Resource, CustomProps>;
111
+ <const Resource extends LayoutResourceKey<Resources>, const Name extends string = string>(options: CreateLayoutForResourceOptions<Resources, Name, Resource>): ResourceLayoutBuilder<Resources, InProps, Composables, IncludeProps, Name, Resource, CustomProps>;
112
112
  /**
113
113
  * Creates a layout builder from a single resource-keyed configuration.
114
114
  *
@@ -120,8 +120,8 @@ type CreateLayoutForResource<Resources extends ReadonlyArray<ResourceDefinition>
120
120
  * @param options A single resource-keyed layout configuration.
121
121
  * @returns A layout builder bound to the configured resource.
122
122
  */
123
- <const CallbackName extends string, const Selection extends SingleResourceLayoutSelection<Resources, CallbackName>>(options: Selection): ResourceLayoutBuilder<Resources, InProps, Composables, SelectedResourceName<Selection, keyof Selection & LayoutResourceKey<Resources>>, keyof Selection & LayoutResourceKey<Resources>, CustomProps>;
124
- } & ResourceLayoutNameMapFns<Resources, InProps, Composables, CustomProps>;
123
+ <const CallbackName extends string, const Selection extends SingleResourceLayoutSelection<Resources, CallbackName>>(options: Selection): ResourceLayoutBuilder<Resources, InProps, Composables, IncludeProps, SelectedResourceName<Selection, keyof Selection & LayoutResourceKey<Resources>>, keyof Selection & LayoutResourceKey<Resources>, CustomProps>;
124
+ } & ResourceLayoutNameMapFns<Resources, InProps, Composables, IncludeProps, CustomProps>;
125
125
  //#endregion
126
126
  export { CreateLayoutForResource, CreateLayoutForResourceOptions, CreateResourceLayoutOptions, CreateResourceLayoutOptionsBase, CreatedLayoutForResource, SetDefaultPropForResourceFn };
127
127
  //# sourceMappingURL=for-resource.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"for-resource.d.cts","names":[],"sources":["../../src/create-config/for-resource.ts"],"mappings":";;;;;;;KAiBK,kBAAA,GAAqB,MAAM;AAAA,KAE3B,+BAAA,qBACiB,kBAAA,oBACF,WAAA,IAChB,WAAA,CAAY,GAAA,eAAiB,IAAA,2BAC7B,WAAA,CAAY,GAAA,IACZ,OAAA,CAAQ,WAAA,CAAY,GAAA;AAAA,KAEnB,8BAAA,qBACiB,kBAAA,mBACH,kBAAA,IACf,IAAA,CAAK,WAAA,QAAmB,QAAA,oBACZ,QAAA,SAAiB,WAAA,IAAe,+BAAA,CAC5C,WAAA,EACA,GAAA;AAAA,KAIQ,+BAAA,mBACQ,aAAA,CAAc,kBAAA,yCAEf,iBAAA,CAAkB,SAAA,iBACrB,aAAA;EAEd,IAAA,EAAM,IAAA;EACN,QAAA,EAAU,QAAA;EACV,KAAA,GAAQ,KAAA;AAAA;AAAA,KAGE,2BAAA,mBACQ,aAAA,CAAc,kBAAA,mBAChB,iBAAA,CAAkB,SAAA,uBACd,oBAAA,wCAEH,iBAAA,CAAkB,SAAA,iBACrB,aAAA,SACZ,sBAAA,CAAuB,SAAA,EAAW,OAAA,EAAS,WAAA,IAC7C,+BAAA,CAAgC,SAAA,EAAW,IAAA,EAAM,QAAA,EAAU,KAAA;AAAA,KAEjD,8BAAA,mBACQ,aAAA,CAAc,kBAAA,yCAEf,iBAAA,CAAkB,SAAA;EAEnC,IAAA,GAAO,IAAA;EACP,QAAA,EAAU,QAAA;AAAA;AAAA,KAGP,+BAAA,mBACe,aAAA,CAAc,kBAAA,mBAChB,iBAAA,CAAkB,SAAA,uBACd,oBAAA,gBACN,aAAA,wBACG,kBAAA,SACf,8BAAA,CACF,sBAAA,CAAuB,SAAA,EAAW,OAAA,EAAS,WAAA,GAC3C,QAAA;EAEA,KAAA,GAAQ,KAAA;AAAA;AAAA,KAGL,mCAAA,mBACe,aAAA,CAAc,kBAAA,mBAChB,iBAAA,CAAkB,SAAA,uBACd,oBAAA,6CAEN,aAAA,mBACG,kBAAA,IACf,+BAAA,CACF,SAAA,EACA,OAAA,EACA,WAAA,EACA,KAAA,EACA,QAAA;EAEA,IAAA,GAAO,YAAA;AAAA;AAAA,KAGG,wBAAA,mBACQ,aAAA,CAAc,kBAAA,mBAChB,iBAAA,CAAkB,SAAA,uBACd,oBAAA,wCAEH,iBAAA,CAAkB,SAAA,uBACf,aAAA,wBACH,kBAAA,wCACgB,IAAA,gBAAoB,aAAA,UAClD,IAAA,aAAiB,mCAAA,CAClB,SAAA,EACA,OAAA,EACA,WAAA,EACA,YAAA,EACA,KAAA,EACA,QAAA,KAEG,OAAA,GAAU,mCAAA,CACT,SAAA,EACA,OAAA,EACA,WAAA,EACA,YAAA,EACA,KAAA,EACA,QAAA,MAED,OAAA,EAAS,mCAAA,CACR,SAAA,EACA,OAAA,EACA,WAAA,EACA,YAAA,EACA,KAAA,EACA,QAAA,OAEH,uBAAA,CACH,YAAA,EACA,WAAA,EACA,WAAA,EACA,QAAA;AAAA,KAGG,0BAAA,mBACe,aAAA,CAAc,kBAAA,mBAChB,iBAAA,CAAkB,SAAA,uBACd,oBAAA,SAClB,OAAA,CAAQ,sBAAA,CAAuB,SAAA,EAAW,OAAA,EAAS,WAAA;AAAA,KAElD,uBAAA,mBACe,aAAA,CAAc,kBAAA,mBAChB,iBAAA,CAAkB,SAAA,uBACd,oBAAA,mBACH,0BAAA,CAA2B,SAAA,EAAW,OAAA,EAAS,WAAA,qBAElD,QAAA,SACN,sBAAA,CACJ,SAAA,EACA,OAAA,EACA,WAAA,IACE,sBAAA,CAAuB,SAAA,EAAW,OAAA,EAAS,WAAA,EAAa,GAAA;AAAA,KAGpD,2BAAA,mBACQ,aAAA,CAAc,kBAAA,mBAChB,iBAAA,CAAkB,SAAA,uBACd,oBAAA,wCAEH,iBAAA,CAAkB,SAAA,uBACf,aAAA,iCAEG,0BAAA,CACrB,SAAA,EACA,OAAA,EACA,WAAA;;AAIF,QAAA,EAAU,QAAA,KACP,wBAAA,CACH,SAAA,EACA,OAAA,EACA,WAAA,EACA,IAAA,EACA,QAAA,EACA,WAAA,EACA,uBAAA,CAAwB,SAAA,EAAW,OAAA,EAAS,WAAA,EAAa,QAAA;AAAA,KAGtD,mBAAA,4BACH,QAAA,SAAiB,QAAA;EAEX,WAAA,QAAmB,SAAA,CAAU,UAAA,CAAW,QAAA;AAAA,IACtC,UAAA,CAAW,QAAA;AAAA,KAGhB,mBAAA,8EAIgB,QAAA,eAEb,QAAA,EAAU,mBAAA,CAAoB,cAAA,MAAoB,YAAA;AAAA,KAGrD,+BAAA,iDACgB,QAAA,GAAW,MAAA,CAAO,cAAA,aACnC,OAAA,CAAQ,MAAA,CAAO,OAAA,CAAQ,QAAA,EAAU,cAAA,eACnC,QAAA;AAAA,KAEG,2BAAA,mDAEsB,QAAA,sDAGN,QAAA,IAAY,cAAA,SAAuB,gBAAA,GAClD,cAAA,uBAGE,QAAA,EAAU,mBAAA,CAAoB,cAAA,MAAoB,YAAA;AAAA,KAGrD,gCAAA,iDAGD,IAAA,SAAa,IAAA,GACb,qCAAA,CACE,IAAA,EACA,QAAA,wCAEC,KAAA,oBACC,IAAA,GACA,KAAA;AAAA,KAIH,qCAAA,iDAGD,QAAA,SAAiB,QAAA,GACjB,IAAA,YAAgB,mBAAA,CAAoB,QAAA,wBAC/B,UAAA,CAAW,QAAA,IAAY,MAAA;AAAA,KAI3B,qBAAA,mBACe,aAAA,CAAc,kBAAA,mBAChB,iBAAA,CAAkB,SAAA,uBACd,oBAAA,wCAEH,iBAAA,CAAkB,SAAA,uBACf,aAAA,IAClB,wBAAA,CACF,SAAA,EACA,OAAA,EACA,WAAA,EACA,IAAA,EACA,QAAA,EACA,WAAA;EA7N6E,4DAgO7E,WAAA,EAAa,2BAAA,CACX,SAAA,EACA,OAAA,EACA,WAAA,EACA,IAAA,EACA,QAAA,EACA,WAAA;AAAA;AAAA,KAIC,6BAAA,mBACe,aAAA,CAAc,kBAAA,iDAGnB,iBAAA,CAAkB,SAAA,IAAa,MAAA,CAC1C,QAAA;EAEE,IAAA,cAEM,QAAA,EAAU,mBAAA,CAAoB,QAAA,MAAc,YAAA;AAAA,KAGpD,OAAA,CACE,MAAA,CACE,OAAA,CAAQ,iBAAA,CAAkB,SAAA,GAAY,QAAA,aAI5C,iBAAA,CAAkB,SAAA;AAAA,KAEf,oBAAA,uCACH,SAAA,SAAkB,MAAA,CAAO,QAAA;EAAY,IAAA;AAAA,KACjC,IAAA,cAAiB,IAAA,oCACf,gCAAA,CAAiC,YAAA,WAAuB,QAAA,IACxD,IAAA,kBACE,IAAA;AAAA,KAIL,kBAAA,gEAID,KAAA,SAAc,MAAA,CAAO,QAAA,gBACrB,IAAA,cAAiB,IAAA,yBACf,gCAAA,CAAiC,YAAA,EAAc,QAAA,IAC/C,IAAA;;;;;AA5QC;AAIP;;;;;;;;;KAyRK,uBAAA,mBACe,aAAA,CAAc,kBAAA,mBAChB,iBAAA,CAAkB,SAAA,uBACd,oBAAA,sBACA,aAAA,mBACH,iBAAA,CAAkB,SAAA,sDAEnC,OAAA;EACE,QAAA,EAAU,QAAA;EACV,IAAA,EAAM,2BAAA,CACJ,iBAAA,CAAkB,SAAA,GAClB,QAAA,EACA,YAAA,IAEA,+BAAA,CAAgC,QAAA,IAChC,MAAA,SAEE,WAAA,CACE,mBAAA,CACE,iBAAA,CAAkB,SAAA,GAClB,YAAA,EACA,iBAAA,CAAkB,SAAA;AAAA;EAI1B,IAAA,EAAM,KAAA,GAAQ,MAAA,CAAO,OAAA,OAAc,KAAA,EAAO,QAAA;AAAA,MAEzC,qBAAA,CACH,SAAA,EACA,OAAA,EACA,WAAA,EACA,kBAAA,CAAmB,KAAA,EAAO,YAAA,EAAc,QAAA,GACxC,QAAA,EACA,WAAA;AAAA,KAGG,wBAAA,mBACe,aAAA,CAAc,kBAAA,mBAChB,iBAAA,CAAkB,SAAA,uBACd,oBAAA,sBACA,aAAA,IAClB,mBAAA,gBAEa,iBAAA,CAAkB,SAAA,IAAa,uBAAA,CAC1C,SAAA,EACA,OAAA,EACA,WAAA,EACA,WAAA,EACA,QAAA,IAEF,iBAAA,CAAkB,SAAA;AAAA,KAGV,uBAAA,mBACQ,aAAA,CAAc,kBAAA,mBAChB,iBAAA,CAAkB,SAAA,uBACd,oBAAA,4BACC,kBAAA,CAAmB,SAAA,EAAW,OAAA,EAAS,WAAA,4BACxC,aAAA;EAhVe;;;;;;;;;EAAA,wBA2VX,iBAAA,CAAkB,SAAA,GACxC,QAAA,EAAU,QAAA,GACT,qBAAA,CACD,SAAA,EACA,OAAA,EACA,WAAA,UAEA,QAAA,EACA,WAAA;EA9VW;AAGf;;;;;;;;;;;EAHe,wBA8WY,iBAAA,CAAkB,SAAA,8BAGzC,OAAA;IACE,IAAA,GAAO,QAAA,EAAU,mBAAA,CAAoB,QAAA,MAAc,IAAA;IACnD,QAAA,EAAU,QAAA;EAAA,IAEX,qBAAA,CACD,SAAA,EACA,OAAA,EACA,WAAA,EACA,gCAAA,CAAiC,IAAA,EAAM,QAAA,GACvC,QAAA,EACA,WAAA;EAhX8B;;;;;;;;;;;;EAAA,wBAgYP,iBAAA,CAAkB,SAAA,uCAGzC,OAAA,EAAS,8BAAA,CAA+B,SAAA,EAAW,IAAA,EAAM,QAAA,IACxD,qBAAA,CACD,SAAA,EACA,OAAA,EACA,WAAA,EACA,IAAA,EACA,QAAA,EACA,WAAA;EA/YF;;;;;;;;;;;EAAA,4DA+Z0B,6BAAA,CACtB,SAAA,EACA,YAAA,GAGF,OAAA,EAAS,SAAA,GACR,qBAAA,CACD,SAAA,EACA,OAAA,EACA,WAAA,EACA,oBAAA,CACE,SAAA,QACM,SAAA,GAAY,iBAAA,CAAkB,SAAA,UAEhC,SAAA,GAAY,iBAAA,CAAkB,SAAA,GACpC,WAAA;AAAA,IAEA,wBAAA,CACF,SAAA,EACA,OAAA,EACA,WAAA,EACA,WAAA"}
1
+ {"version":3,"file":"for-resource.d.cts","names":[],"sources":["../../src/create-config/for-resource.ts"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { UnionToIntersection, Updater } from "../utils.mjs";
2
2
  import { LayoutResourceKey, ResourceDefinition } from "../resource.mjs";
3
- import { InPropsDefinition, InPropsObject } from "../props.mjs";
3
+ import { InPropsDefinition, InPropsObject, MergedLayoutInProps, ResolvedIncludedComponentProps } from "../props.mjs";
4
4
  import { LayoutIncludeProps, LayoutPropsForResource, ResourceLayoutComponent } from "./define-layout.mjs";
5
5
  import { ComposableComponents } from "@jfdevelops/react-layout-composables";
6
6
 
@@ -13,23 +13,23 @@ type CreateResourceLayoutOptionsBase<Resources extends ReadonlyArray<ResourceDef
13
13
  resource: Resource;
14
14
  props?: Props;
15
15
  };
16
- type CreateResourceLayoutOptions<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Name extends string, Resource extends LayoutResourceKey<Resources>, Props extends InPropsObject = {}> = LayoutPropsForResource<Resources, InProps, Composables> & CreateResourceLayoutOptionsBase<Resources, Name, Resource, Props>;
16
+ type CreateResourceLayoutOptions<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>, Name extends string, Resource extends LayoutResourceKey<Resources>, Props extends InPropsObject = {}> = LayoutPropsForResource<Resources, InProps, Composables, IncludeProps> & CreateResourceLayoutOptionsBase<Resources, Name, Resource, Props>;
17
17
  type CreateLayoutForResourceOptions<Resources extends ReadonlyArray<ResourceDefinition>, Name extends string, Resource extends LayoutResourceKey<Resources>> = {
18
18
  name?: Name;
19
19
  resource: Resource;
20
20
  };
21
- type CreatedLayoutForResourceOptions<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Props extends InPropsObject = {}, Defaults extends LayoutPropDefaults = {}> = ResolveLayoutPropsWithDefaults<LayoutPropsForResource<Resources, InProps, Composables>, Defaults> & {
21
+ type CreatedLayoutForResourceOptions<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>, Props extends InPropsObject = {}, Defaults extends LayoutPropDefaults = {}> = ResolveLayoutPropsWithDefaults<LayoutPropsForResource<Resources, InProps, Composables, IncludeProps>, Defaults> & {
22
22
  props?: Props;
23
23
  };
24
- type CreatedLayoutForResourceCallOptions<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, OverrideName extends string, Props extends InPropsObject, Defaults extends LayoutPropDefaults> = CreatedLayoutForResourceOptions<Resources, InProps, Composables, Props, Defaults> & {
24
+ type CreatedLayoutForResourceCallOptions<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>, OverrideName extends string, Props extends InPropsObject, Defaults extends LayoutPropDefaults> = CreatedLayoutForResourceOptions<Resources, InProps, Composables, IncludeProps, Props, Defaults> & {
25
25
  name?: OverrideName;
26
26
  };
27
- type CreatedLayoutForResource<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Name extends string, Resource extends LayoutResourceKey<Resources>, CustomProps extends InPropsObject = {}, Defaults extends LayoutPropDefaults = {}> = <OverrideName extends string = Name, Props extends InPropsObject = {}>(...args: {} extends CreatedLayoutForResourceCallOptions<Resources, InProps, Composables, OverrideName, Props, Defaults> ? [options?: CreatedLayoutForResourceCallOptions<Resources, InProps, Composables, OverrideName, Props, Defaults>] : [options: CreatedLayoutForResourceCallOptions<Resources, InProps, Composables, OverrideName, Props, Defaults>]) => ResourceLayoutComponent<OverrideName, CustomProps, Composables, Resource>;
28
- type SetDefaultPropsForResource<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents = {}> = Partial<LayoutPropsForResource<Resources, InProps, Composables>>;
29
- type ResolvedSetDefaultProps<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Defaults extends SetDefaultPropsForResource<Resources, InProps, Composables>> = { [Key in keyof Defaults & keyof LayoutPropsForResource<Resources, InProps, Composables>]: LayoutPropsForResource<Resources, InProps, Composables>[Key] };
30
- type SetDefaultPropForResourceFn<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Name extends string, Resource extends LayoutResourceKey<Resources>, CustomProps extends InPropsObject = {}> = <const Defaults extends SetDefaultPropsForResource<Resources, InProps, Composables>>(/** Default values for layout props. Each prop can only be set once. */
27
+ type CreatedLayoutForResource<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>, Name extends string, Resource extends LayoutResourceKey<Resources>, CustomProps extends InPropsObject = {}, Defaults extends LayoutPropDefaults = {}> = <OverrideName extends string = Name, Props extends InPropsObject = {}>(...args: {} extends CreatedLayoutForResourceCallOptions<Resources, InProps, Composables, IncludeProps, OverrideName, Props, Defaults> ? [options?: CreatedLayoutForResourceCallOptions<Resources, InProps, Composables, IncludeProps, OverrideName, Props, Defaults>] : [options: CreatedLayoutForResourceCallOptions<Resources, InProps, Composables, IncludeProps, OverrideName, Props, Defaults>]) => ResourceLayoutComponent<OverrideName, CustomProps, Composables, Resource, ResolvedIncludedComponentProps<MergedLayoutInProps<Resources, InProps, Composables>, IncludeProps>>;
28
+ type SetDefaultPropsForResource<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents = {}, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {}> = Partial<LayoutPropsForResource<Resources, InProps, Composables, IncludeProps>>;
29
+ type ResolvedSetDefaultProps<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>, Defaults extends SetDefaultPropsForResource<Resources, InProps, Composables, IncludeProps>> = { [Key in keyof Defaults & keyof LayoutPropsForResource<Resources, InProps, Composables, IncludeProps>]: LayoutPropsForResource<Resources, InProps, Composables, IncludeProps>[Key] };
30
+ type SetDefaultPropForResourceFn<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>, Name extends string, Resource extends LayoutResourceKey<Resources>, CustomProps extends InPropsObject = {}> = <const Defaults extends SetDefaultPropsForResource<Resources, InProps, Composables, IncludeProps>>(/** Default values for layout props. Each prop can only be set once. */
31
31
 
32
- defaults: Defaults) => CreatedLayoutForResource<Resources, InProps, Composables, Name, Resource, CustomProps, ResolvedSetDefaultProps<Resources, InProps, Composables, Defaults>>;
32
+ defaults: Defaults) => CreatedLayoutForResource<Resources, InProps, Composables, IncludeProps, Name, Resource, CustomProps, ResolvedSetDefaultProps<Resources, InProps, Composables, IncludeProps, Defaults>>;
33
33
  type CapitalizedResource<Resource extends string> = Resource extends Resource ? {
34
34
  toLowerCase: () => Lowercase<Capitalize<Resource>>;
35
35
  } & Capitalize<Resource> : never;
@@ -38,8 +38,8 @@ type AtLeastOneResourceLayoutNameKey<Resource extends string> = { [TargetResourc
38
38
  type SelectedResourceLayoutNames<Resource extends string, SelectedResource extends Resource, CallbackName extends string> = { [TargetResource in Resource as TargetResource extends SelectedResource ? TargetResource : never]?: string | ((resource: CapitalizedResource<TargetResource>) => CallbackName) };
39
39
  type NormalizeCapitalizedResourceName<Name extends string, Resource extends string> = Name extends Name ? NormalizeCapitalizedResourceNameMatch<Name, Resource> extends infer Match extends string ? [Match] extends [never] ? Name : Match : never : never;
40
40
  type NormalizeCapitalizedResourceNameMatch<Name extends string, Resource extends string> = Resource extends Resource ? Name extends `${CapitalizedResource<Resource>}${infer Suffix}` ? `${Capitalize<Resource>}${Suffix}` : never : never;
41
- type ResourceLayoutBuilder<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Name extends string, Resource extends LayoutResourceKey<Resources>, CustomProps extends InPropsObject> = CreatedLayoutForResource<Resources, InProps, Composables, Name, Resource, CustomProps> & {
42
- /** Set default values for layout props in a single call. */setDefaults: SetDefaultPropForResourceFn<Resources, InProps, Composables, Name, Resource, CustomProps>;
41
+ type ResourceLayoutBuilder<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>, Name extends string, Resource extends LayoutResourceKey<Resources>, CustomProps extends InPropsObject> = CreatedLayoutForResource<Resources, InProps, Composables, IncludeProps, Name, Resource, CustomProps> & {
42
+ /** Set default values for layout props in a single call. */setDefaults: SetDefaultPropForResourceFn<Resources, InProps, Composables, IncludeProps, Name, Resource, CustomProps>;
43
43
  };
44
44
  type SingleResourceLayoutSelection<Resources extends ReadonlyArray<ResourceDefinition>, CallbackName extends string> = { [Resource in LayoutResourceKey<Resources>]: Record<Resource, {
45
45
  name?: string | ((resource: CapitalizedResource<Resource>) => CallbackName);
@@ -62,13 +62,13 @@ type MappedResourceName<Names, CallbackName extends string, Resource extends str
62
62
  * @param options The resource and its resource-keyed default name.
63
63
  * @returns A layout builder bound to the selected resource.
64
64
  */
65
- type ResourceLayoutNameMapFn<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, CustomProps extends InPropsObject, Resource extends LayoutResourceKey<Resources>> = <const CallbackName extends string, const Names>(options: {
65
+ type ResourceLayoutNameMapFn<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>, CustomProps extends InPropsObject, Resource extends LayoutResourceKey<Resources>> = <const CallbackName extends string, const Names>(options: {
66
66
  resource: Resource;
67
67
  name: SelectedResourceLayoutNames<LayoutResourceKey<Resources>, Resource, CallbackName> & AtLeastOneResourceLayoutNameKey<Resource> & Record<string, NonNullable<ResourceLayoutNames<LayoutResourceKey<Resources>, CallbackName>[LayoutResourceKey<Resources>]>>;
68
68
  } & {
69
69
  name: Names & Record<Exclude<keyof Names, Resource>, never>;
70
- }) => ResourceLayoutBuilder<Resources, InProps, Composables, MappedResourceName<Names, CallbackName, Resource>, Resource, CustomProps>;
71
- type ResourceLayoutNameMapFns<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, CustomProps extends InPropsObject> = UnionToIntersection<{ [Resource in LayoutResourceKey<Resources>]: ResourceLayoutNameMapFn<Resources, InProps, Composables, CustomProps, Resource> }[LayoutResourceKey<Resources>]>;
70
+ }) => ResourceLayoutBuilder<Resources, InProps, Composables, IncludeProps, MappedResourceName<Names, CallbackName, Resource>, Resource, CustomProps>;
71
+ type ResourceLayoutNameMapFns<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables>, CustomProps extends InPropsObject> = UnionToIntersection<{ [Resource in LayoutResourceKey<Resources>]: ResourceLayoutNameMapFn<Resources, InProps, Composables, IncludeProps, CustomProps, Resource> }[LayoutResourceKey<Resources>]>;
72
72
  type CreateLayoutForResource<Resources extends ReadonlyArray<ResourceDefinition>, InProps extends InPropsDefinition<Resources>, Composables extends ComposableComponents = {}, IncludeProps extends LayoutIncludeProps<Resources, InProps, Composables> = {}, CustomProps extends InPropsObject = {}> = {
73
73
  /**
74
74
  * Creates a layout builder for one resource without a default name.
@@ -79,7 +79,7 @@ type CreateLayoutForResource<Resources extends ReadonlyArray<ResourceDefinition>
79
79
  * @param resource The resource to bind to the returned layout builder.
80
80
  * @returns A layout builder bound to the selected resource.
81
81
  */
82
- <const Resource extends LayoutResourceKey<Resources>>(resource: Resource): ResourceLayoutBuilder<Resources, InProps, Composables, string, Resource, CustomProps>;
82
+ <const Resource extends LayoutResourceKey<Resources>>(resource: Resource): ResourceLayoutBuilder<Resources, InProps, Composables, IncludeProps, string, Resource, CustomProps>;
83
83
  /**
84
84
  * Creates a layout builder with a capitalized-resource naming callback.
85
85
  *
@@ -95,7 +95,7 @@ type CreateLayoutForResource<Resources extends ReadonlyArray<ResourceDefinition>
95
95
  <const Resource extends LayoutResourceKey<Resources>, const Name extends string>(options: {
96
96
  name: (resource: CapitalizedResource<Resource>) => Name;
97
97
  resource: Resource;
98
- }): ResourceLayoutBuilder<Resources, InProps, Composables, NormalizeCapitalizedResourceName<Name, Resource>, Resource, CustomProps>;
98
+ }): ResourceLayoutBuilder<Resources, InProps, Composables, IncludeProps, NormalizeCapitalizedResourceName<Name, Resource>, Resource, CustomProps>;
99
99
  /**
100
100
  * Creates a layout builder from the existing resource-options notation.
101
101
  *
@@ -108,7 +108,7 @@ type CreateLayoutForResource<Resources extends ReadonlyArray<ResourceDefinition>
108
108
  * @param options The resource and its optional default name.
109
109
  * @returns A layout builder bound to the selected resource.
110
110
  */
111
- <const Resource extends LayoutResourceKey<Resources>, const Name extends string = string>(options: CreateLayoutForResourceOptions<Resources, Name, Resource>): ResourceLayoutBuilder<Resources, InProps, Composables, Name, Resource, CustomProps>;
111
+ <const Resource extends LayoutResourceKey<Resources>, const Name extends string = string>(options: CreateLayoutForResourceOptions<Resources, Name, Resource>): ResourceLayoutBuilder<Resources, InProps, Composables, IncludeProps, Name, Resource, CustomProps>;
112
112
  /**
113
113
  * Creates a layout builder from a single resource-keyed configuration.
114
114
  *
@@ -120,8 +120,8 @@ type CreateLayoutForResource<Resources extends ReadonlyArray<ResourceDefinition>
120
120
  * @param options A single resource-keyed layout configuration.
121
121
  * @returns A layout builder bound to the configured resource.
122
122
  */
123
- <const CallbackName extends string, const Selection extends SingleResourceLayoutSelection<Resources, CallbackName>>(options: Selection): ResourceLayoutBuilder<Resources, InProps, Composables, SelectedResourceName<Selection, keyof Selection & LayoutResourceKey<Resources>>, keyof Selection & LayoutResourceKey<Resources>, CustomProps>;
124
- } & ResourceLayoutNameMapFns<Resources, InProps, Composables, CustomProps>;
123
+ <const CallbackName extends string, const Selection extends SingleResourceLayoutSelection<Resources, CallbackName>>(options: Selection): ResourceLayoutBuilder<Resources, InProps, Composables, IncludeProps, SelectedResourceName<Selection, keyof Selection & LayoutResourceKey<Resources>>, keyof Selection & LayoutResourceKey<Resources>, CustomProps>;
124
+ } & ResourceLayoutNameMapFns<Resources, InProps, Composables, IncludeProps, CustomProps>;
125
125
  //#endregion
126
126
  export { CreateLayoutForResource, CreateLayoutForResourceOptions, CreateResourceLayoutOptions, CreateResourceLayoutOptionsBase, CreatedLayoutForResource, SetDefaultPropForResourceFn };
127
127
  //# sourceMappingURL=for-resource.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"for-resource.d.mts","names":[],"sources":["../../src/create-config/for-resource.ts"],"mappings":"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"}
1
+ {"version":3,"file":"for-resource.d.mts","names":[],"sources":["../../src/create-config/for-resource.ts"],"mappings":"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"}