@jfdevelops/react-layout 2.2.0 → 2.3.0

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.
Files changed (113) hide show
  1. package/dist/create-config/create-defined-resource-layout.cjs +2 -0
  2. package/dist/create-config/create-defined-resource-layout.cjs.map +1 -1
  3. package/dist/create-config/create-defined-resource-layout.d.cts +15 -12
  4. package/dist/create-config/create-defined-resource-layout.d.cts.map +1 -1
  5. package/dist/create-config/create-defined-resource-layout.d.mts +15 -12
  6. package/dist/create-config/create-defined-resource-layout.d.mts.map +1 -1
  7. package/dist/create-config/create-defined-resource-layout.mjs +2 -0
  8. package/dist/create-config/create-defined-resource-layout.mjs.map +1 -1
  9. package/dist/create-config/create-resource-links.cjs.map +1 -1
  10. package/dist/create-config/create-resource-links.d.cts +3 -1
  11. package/dist/create-config/create-resource-links.d.cts.map +1 -1
  12. package/dist/create-config/create-resource-links.d.mts +3 -1
  13. package/dist/create-config/create-resource-links.d.mts.map +1 -1
  14. package/dist/create-config/create-resource-links.mjs.map +1 -1
  15. package/dist/create-config/create-reusable.cjs +49 -0
  16. package/dist/create-config/create-reusable.cjs.map +1 -0
  17. package/dist/create-config/create-reusable.d.cts +41 -0
  18. package/dist/create-config/create-reusable.d.cts.map +1 -0
  19. package/dist/create-config/create-reusable.d.mts +41 -0
  20. package/dist/create-config/create-reusable.d.mts.map +1 -0
  21. package/dist/create-config/create-reusable.mjs +49 -0
  22. package/dist/create-config/create-reusable.mjs.map +1 -0
  23. package/dist/create-config/define-layout.cjs +11 -8
  24. package/dist/create-config/define-layout.cjs.map +1 -1
  25. package/dist/create-config/define-layout.d.cts +43 -42
  26. package/dist/create-config/define-layout.d.cts.map +1 -1
  27. package/dist/create-config/define-layout.d.mts +43 -42
  28. package/dist/create-config/define-layout.d.mts.map +1 -1
  29. package/dist/create-config/define-layout.mjs +11 -8
  30. package/dist/create-config/define-layout.mjs.map +1 -1
  31. package/dist/create-config/for-paths/builder.cjs +1 -0
  32. package/dist/create-config/for-paths/builder.cjs.map +1 -1
  33. package/dist/create-config/for-paths/builder.d.cts +5 -3
  34. package/dist/create-config/for-paths/builder.d.cts.map +1 -1
  35. package/dist/create-config/for-paths/builder.d.mts +5 -3
  36. package/dist/create-config/for-paths/builder.d.mts.map +1 -1
  37. package/dist/create-config/for-paths/builder.mjs +1 -0
  38. package/dist/create-config/for-paths/builder.mjs.map +1 -1
  39. package/dist/create-config/for-resource.cjs.map +1 -1
  40. package/dist/create-config/for-resource.d.cts +7 -6
  41. package/dist/create-config/for-resource.d.cts.map +1 -1
  42. package/dist/create-config/for-resource.d.mts +7 -6
  43. package/dist/create-config/for-resource.d.mts.map +1 -1
  44. package/dist/create-config/for-resource.mjs.map +1 -1
  45. package/dist/create-config/for-resources/create-component.d.cts +34 -33
  46. package/dist/create-config/for-resources/create-component.d.cts.map +1 -1
  47. package/dist/create-config/for-resources/create-component.d.mts +34 -33
  48. package/dist/create-config/for-resources/create-component.d.mts.map +1 -1
  49. package/dist/create-config/for-resources/create-for-resources.cjs +7 -6
  50. package/dist/create-config/for-resources/create-for-resources.cjs.map +1 -1
  51. package/dist/create-config/for-resources/create-for-resources.d.cts +2 -1
  52. package/dist/create-config/for-resources/create-for-resources.d.mts +2 -1
  53. package/dist/create-config/for-resources/create-for-resources.mjs +7 -6
  54. package/dist/create-config/for-resources/create-for-resources.mjs.map +1 -1
  55. package/dist/create-config/for-resources/scoped-layout.d.cts +5 -4
  56. package/dist/create-config/for-resources/scoped-layout.d.cts.map +1 -1
  57. package/dist/create-config/for-resources/scoped-layout.d.mts +5 -4
  58. package/dist/create-config/for-resources/scoped-layout.d.mts.map +1 -1
  59. package/dist/create-config/index.d.cts +1 -0
  60. package/dist/create-config/index.d.mts +1 -0
  61. package/dist/create-config/layout-name.cjs +1 -1
  62. package/dist/create-config/layout-name.mjs +1 -1
  63. package/dist/create-config/lazy-resource-layout.cjs +1 -1
  64. package/dist/create-config/lazy-resource-layout.d.cts +1 -1
  65. package/dist/create-config/lazy-resource-layout.d.mts +1 -1
  66. package/dist/create-config/lazy-resource-layout.mjs +1 -1
  67. package/dist/create-config/render-state.cjs +3 -2
  68. package/dist/create-config/render-state.cjs.map +1 -1
  69. package/dist/create-config/render-state.d.cts +27 -25
  70. package/dist/create-config/render-state.d.cts.map +1 -1
  71. package/dist/create-config/render-state.d.mts +27 -25
  72. package/dist/create-config/render-state.d.mts.map +1 -1
  73. package/dist/create-config/render-state.mjs +3 -2
  74. package/dist/create-config/render-state.mjs.map +1 -1
  75. package/dist/create-config/state-composable.cjs +1 -1
  76. package/dist/create-config/state-composable.mjs +1 -1
  77. package/dist/custom-props.cjs +15 -0
  78. package/dist/custom-props.cjs.map +1 -0
  79. package/dist/custom-props.d.cts +17 -0
  80. package/dist/custom-props.d.cts.map +1 -0
  81. package/dist/custom-props.d.mts +17 -0
  82. package/dist/custom-props.d.mts.map +1 -0
  83. package/dist/custom-props.mjs +15 -0
  84. package/dist/custom-props.mjs.map +1 -0
  85. package/dist/errors/react-layout-error.cjs +1 -1
  86. package/dist/errors/react-layout-error.mjs +1 -1
  87. package/dist/index.cjs +3 -3
  88. package/dist/index.d.cts +3 -1
  89. package/dist/index.d.mts +3 -1
  90. package/dist/index.mjs +3 -3
  91. package/dist/lazy/create-render-state.cjs.map +1 -1
  92. package/dist/lazy/create-render-state.d.cts +5 -5
  93. package/dist/lazy/create-render-state.d.cts.map +1 -1
  94. package/dist/lazy/create-render-state.d.mts +5 -5
  95. package/dist/lazy/create-render-state.d.mts.map +1 -1
  96. package/dist/lazy/create-render-state.mjs.map +1 -1
  97. package/dist/lazy/lazy-boundary.cjs +1 -1
  98. package/dist/lazy/lazy-boundary.mjs +1 -1
  99. package/dist/lazy/types.cjs.map +1 -1
  100. package/dist/lazy/types.d.cts +5 -4
  101. package/dist/lazy/types.d.cts.map +1 -1
  102. package/dist/lazy/types.d.mts +5 -4
  103. package/dist/lazy/types.d.mts.map +1 -1
  104. package/dist/lazy/types.mjs.map +1 -1
  105. package/dist/props.cjs.map +1 -1
  106. package/dist/props.d.cts +4 -3
  107. package/dist/props.d.cts.map +1 -1
  108. package/dist/props.d.mts +4 -3
  109. package/dist/props.d.mts.map +1 -1
  110. package/dist/props.mjs.map +1 -1
  111. package/dist/resource.d.cts +1 -1
  112. package/dist/resource.d.mts +1 -1
  113. package/package.json +4 -4
@@ -1,3 +1,4 @@
1
+ import { CustomPropsInput, CustomPropsObject, NormalizedCustomProps, ResolveRenderProps } from "../custom-props.mjs";
1
2
  import { LazyHandle, LazyOptions, LazyResourceStates } from "../lazy/types.mjs";
2
3
  import { LazyLoader } from "../lazy/create-lazy-loader.mjs";
3
4
  import { inspectLazy } from "../lazy/inspection.mjs";
@@ -8,7 +9,6 @@ import { LayoutRenderResourcesAccessor, MergeContract } from "./define-layout.mj
8
9
  import { ComposableComponents, ComposablePresetMeta, CreateLayoutComposable, MergePresetProps, composablePresetMetaKey } from "@jfdevelops/react-layout-composables";
9
10
  import { JSX } from "react";
10
11
  import { InspectionStore } from "@jfdevelops/react-layout-devtools-core";
11
- import { ResolveProps } from "@jfdevelops/react-layout-validator";
12
12
 
13
13
  //#region src/create-config/render-state.d.ts
14
14
  declare const lazyLoaderSymbol: unique symbol;
@@ -23,7 +23,7 @@ type AnyRenderStateDefinition = {
23
23
  composables?: (create: CreateLayoutComposable<any>, states: any) => ComposableComponents;
24
24
  props?: {
25
25
  include?: Record<string, unknown>;
26
- custom?: InPropsObject;
26
+ custom?: CustomPropsObject;
27
27
  };
28
28
  render: (props: any, context: any) => JSX.Element;
29
29
  state?: string;
@@ -68,18 +68,20 @@ type RenderStateContext<Composables extends ComposableComponents, Resources exte
68
68
  composables: BuilderRenderComposables<Composables>;
69
69
  retry?: () => void;
70
70
  };
71
- /** State callers may omit children even when a shared layout requires them. */
72
- type OptionalStateChildren<Props> = Omit<Props, 'children'> & Partial<Pick<Props, Extract<'children', keyof Props>>>;
71
+ /** Legacy state contracts may omit children; explicit shorthand stays required. */
72
+ type OptionalStateChildren<Props, Custom = {}> = Custom extends {
73
+ children: 'required';
74
+ } ? Props : Omit<Props, 'children'> & Partial<Pick<Props, Extract<'children', keyof Props>>>;
73
75
  /**
74
76
  * Resolves one state's custom props and explicitly included option/composable
75
77
  * props to the values received by its render callback.
76
78
  */
77
- type RenderStateProps<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends IncludedProps<MergedLayoutInProps<Resources, Options, Composables>>, CustomProps extends InPropsObject> = OptionalStateChildren<LayoutRenderProps<Resources, Options, Composables, IncludeProps, CustomProps>>;
78
- type TypedRenderStateDefinition<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, State extends string, CustomProps extends InPropsObject, SharedComposables extends ComposableComponents, StateComposables extends ComposableComponents, IncludeProps extends IncludedProps<MergedLayoutInProps<Resources, Options, SharedComposables & StateComposables>>, SharedInclude extends IncludedProps<MergedLayoutInProps<Resources, Options, SharedComposables>> = {}, SharedCustom extends InPropsObject = {}, KnownStates extends string = string> = {
79
+ type RenderStateProps<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Composables extends ComposableComponents, IncludeProps extends IncludedProps<MergedLayoutInProps<Resources, Options, Composables>>, CustomProps extends CustomPropsObject> = OptionalStateChildren<LayoutRenderProps<Resources, Options, Composables, IncludeProps, CustomProps>, CustomProps>;
80
+ type TypedRenderStateDefinition<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, State extends string, CustomProps extends CustomPropsObject, SharedComposables extends ComposableComponents, StateComposables extends ComposableComponents, IncludeProps extends IncludedProps<MergedLayoutInProps<Resources, Options, SharedComposables & StateComposables>>, SharedInclude extends IncludedProps<MergedLayoutInProps<Resources, Options, SharedComposables>> = {}, SharedCustom extends CustomPropsObject = {}, KnownStates extends string = string> = {
79
81
  composables?: RenderStateComposablesDefinition<Resources, StateComposables>;
80
82
  props?: {
81
83
  include?: IncludeProps;
82
- custom?: CustomProps;
84
+ custom?: CustomProps & CustomPropsInput<CustomProps>;
83
85
  };
84
86
  render: (props: RenderStateProps<Resources, Options, SharedComposables & StateComposables, MergeContract<SharedInclude, IncludeProps>, MergeContract<SharedCustom, CustomProps>>, context: RenderStateContext<SharedComposables & StateComposables, Resources, KnownStates>) => JSX.Element;
85
87
  state: State;
@@ -88,7 +90,7 @@ type TypedRenderStateDefinition<Resources extends ReadonlyArray<ResourceDefiniti
88
90
  * Callback shorthand for a created state, typed with the bound resources,
89
91
  * options, and shared composables.
90
92
  */
91
- type TypedRenderStateCallback<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, SharedComposables extends ComposableComponents, SharedInclude extends IncludedProps<MergedLayoutInProps<Resources, Options, SharedComposables>> = {}, SharedCustom extends InPropsObject = {}, KnownStates extends string = string> = (props: RenderStateProps<Resources, Options, SharedComposables, SharedInclude, SharedCustom>, context: RenderStateContext<SharedComposables, Resources, KnownStates>) => JSX.Element;
93
+ type TypedRenderStateCallback<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, SharedComposables extends ComposableComponents, SharedInclude extends IncludedProps<MergedLayoutInProps<Resources, Options, SharedComposables>> = {}, SharedCustom extends CustomPropsObject = {}, KnownStates extends string = string> = (props: RenderStateProps<Resources, Options, SharedComposables, SharedInclude, SharedCustom>, context: RenderStateContext<SharedComposables, Resources, KnownStates>) => JSX.Element;
92
94
  type NormalizeRenderStateDefinition<Input> = Input extends LazyRenderState<infer Definition> ? Definition : Input extends DeferredRenderState<infer Definition> ? Definition : Input extends RenderStateCallback ? {
93
95
  render: Input;
94
96
  state: 'default';
@@ -100,12 +102,12 @@ type StateName<Definition> = Definition extends DeferredRenderState<infer Deferr
100
102
  * A spreadable state entry keyed by its literal state name. Spreading this into
101
103
  * `layout.render` is what creates compound members such as `Users.Loading`.
102
104
  */
103
- type RenderStateFragment<Definition, CallProps extends object = ResolveProps<StateCustomProps<Definition>>> = { [State in StateName<NormalizeRenderStateDefinition<Definition>>]: Definition } & {
105
+ type RenderStateFragment<Definition, CallProps extends object = ResolveRenderProps<StateCustomProps<Definition>>> = { [State in StateName<NormalizeRenderStateDefinition<Definition>>]: Definition } & {
104
106
  readonly [definedRenderStateSymbol]: NormalizeRenderStateDefinition<Definition> & CreatedRenderStateInput;
105
107
  } & StateComposableHandle<CallProps>;
106
108
  type StateCustomProps<Input> = NormalizeStateInput<Input> extends {
107
109
  props?: {
108
- custom?: infer Props extends InPropsObject;
110
+ custom?: infer Props extends CustomPropsObject;
109
111
  };
110
112
  } ? Props : {};
111
113
  type StateIncludes<Input> = NormalizeStateInput<Input> extends {
@@ -131,7 +133,7 @@ type UnresolvedStateComponentProps<Props, Includes> = { [Key in Exclude<keyof In
131
133
  } ? Key : never]?: unknown };
132
134
  type StateComponentProps<Props extends InPropsObject, Includes> = ResolvedIncludedComponentProps<Props, Pick<Includes, Extract<keyof Includes, keyof Props>> extends infer Known extends IncludedProps<Props> ? Known : {}> & UnresolvedStateComponentProps<Props, Includes>;
133
135
  /** Call-site props of a referenced state; creation-time options stay bound. */
134
- type RenderStateCallProps<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Input> = OptionalStateChildren<ResolveProps<StateCustomProps<Input>> & StateComponentProps<MergedLayoutInProps<Resources, Options, Composables & StateLocalComposables<Input>>, StateIncludes<Input>>>;
136
+ type RenderStateCallProps<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Input> = OptionalStateChildren<ResolveRenderProps<StateCustomProps<Input>> & StateComponentProps<MergedLayoutInProps<Resources, Options, Composables & StateLocalComposables<Input>>, StateIncludes<Input>>, StateCustomProps<Input>>;
135
137
  /** Typed references to all the states declared in an inline render map. */
136
138
  type RenderStateReferences<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Composables extends ComposableComponents, States> = { readonly [State in keyof States & string]: StateComposable<RenderStateCallProps<Resources, Options, Composables, States[State]>> };
137
139
  type BoundRenderStateFragment<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Definition> = RenderStateFragment<Definition, RenderStateCallProps<Resources, Options, Composables, Definition>>;
@@ -150,9 +152,9 @@ type CreatedRenderStateInput = {
150
152
  * accepts a full definition, a definition without `state`, or a render
151
153
  * callback; `Deferred` decides whether the returned entry is deferred.
152
154
  */
153
- interface RenderStateOverloads<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, SharedComposables extends ComposableComponents, Deferred extends boolean, SharedInclude extends IncludedProps<MergedLayoutInProps<Resources, Options, SharedComposables>> = {}, SharedCustom extends InPropsObject = {}, KnownStates extends string = string> {
154
- <const State extends RenderStateName, const CustomProps extends InPropsObject = {}, const StateComposables extends ComposableComponents = {}, const IncludeProps extends IncludedProps<MergedLayoutInProps<Resources, Options, SharedComposables & StateComposables>> = {}>(definition: TypedRenderStateDefinition<Resources, Options, State, CustomProps, SharedComposables, StateComposables, IncludeProps, SharedInclude, SharedCustom, KnownStates>): BoundRenderStateFragment<Resources, Options, SharedComposables, RenderStateEntry<TypedRenderStateDefinition<Resources, Options, State, CustomProps, SharedComposables, StateComposables, IncludeProps, SharedInclude, SharedCustom, KnownStates>, Deferred>>;
155
- <const CustomProps extends InPropsObject = {}, const StateComposables extends ComposableComponents = {}, const IncludeProps extends IncludedProps<MergedLayoutInProps<Resources, Options, SharedComposables & StateComposables>> = {}>(definition: Omit<TypedRenderStateDefinition<Resources, Options, 'default', CustomProps, SharedComposables, StateComposables, IncludeProps, SharedInclude, SharedCustom, KnownStates>, 'state'>): BoundRenderStateFragment<Resources, Options, SharedComposables, RenderStateEntry<TypedRenderStateDefinition<Resources, Options, 'default', CustomProps, SharedComposables, StateComposables, IncludeProps, SharedInclude, SharedCustom, KnownStates>, Deferred>>;
155
+ interface RenderStateOverloads<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, SharedComposables extends ComposableComponents, Deferred extends boolean, SharedInclude extends IncludedProps<MergedLayoutInProps<Resources, Options, SharedComposables>> = {}, SharedCustom extends CustomPropsObject = {}, KnownStates extends string = string> {
156
+ <const State extends RenderStateName, const CustomProps extends CustomPropsObject = {}, const StateComposables extends ComposableComponents = {}, const IncludeProps extends IncludedProps<MergedLayoutInProps<Resources, Options, SharedComposables & StateComposables>> = {}>(definition: TypedRenderStateDefinition<Resources, Options, State, CustomProps, SharedComposables, StateComposables, IncludeProps, SharedInclude, SharedCustom, KnownStates>): BoundRenderStateFragment<Resources, Options, SharedComposables, RenderStateEntry<TypedRenderStateDefinition<Resources, Options, State, CustomProps, SharedComposables, StateComposables, IncludeProps, SharedInclude, SharedCustom, KnownStates>, Deferred>>;
157
+ <const CustomProps extends CustomPropsObject = {}, const StateComposables extends ComposableComponents = {}, const IncludeProps extends IncludedProps<MergedLayoutInProps<Resources, Options, SharedComposables & StateComposables>> = {}>(definition: Omit<TypedRenderStateDefinition<Resources, Options, 'default', CustomProps, SharedComposables, StateComposables, IncludeProps, SharedInclude, SharedCustom, KnownStates>, 'state'>): BoundRenderStateFragment<Resources, Options, SharedComposables, RenderStateEntry<TypedRenderStateDefinition<Resources, Options, 'default', CustomProps, SharedComposables, StateComposables, IncludeProps, SharedInclude, SharedCustom, KnownStates>, Deferred>>;
156
158
  (render: TypedRenderStateCallback<Resources, Options, SharedComposables, SharedInclude, SharedCustom, KnownStates>): BoundRenderStateFragment<Resources, Options, SharedComposables, RenderStateEntry<TypedRenderStateCallback<Resources, Options, SharedComposables, SharedInclude, SharedCustom, KnownStates>, Deferred>>;
157
159
  }
158
160
  type RenderStateReference = ({
@@ -162,7 +164,7 @@ type ReferenceDefinition<Ref extends RenderStateReference> = Ref extends LazyRen
162
164
  readonly [definedRenderStateSymbol]: infer Definition extends AnyRenderStateDefinition;
163
165
  } ? Definition : never;
164
166
  type FromStateEntry<Ref extends RenderStateReference, Definition extends AnyRenderStateDefinition> = Ref extends LazyRenderState<AnyRenderStateDefinition> ? LazyRenderState<Definition> : Extract<Ref[Exclude<keyof Ref, 'asComposable' | typeof definedRenderStateSymbol>], LazyRenderState<AnyRenderStateDefinition>> extends never ? Definition & CreatedRenderStateInput : LazyRenderState<Definition>;
165
- type ReferenceSchemas<Ref extends RenderStateReference> = StateCustomProps<ReferenceDefinition<Ref>> & MergePresetProps<StateLocalComposables<ReferenceDefinition<Ref>>>;
167
+ type ReferenceSchemas<Ref extends RenderStateReference> = NormalizedCustomProps<StateCustomProps<ReferenceDefinition<Ref>>> & MergePresetProps<StateLocalComposables<ReferenceDefinition<Ref>>>;
166
168
  type DefaultReferenceIncludes<Ref extends RenderStateReference, CustomProps> = Omit<StateIncludes<ReferenceDefinition<Ref>>, keyof CustomProps | keyof StateCustomProps<ReferenceDefinition<Ref>>> & { [Key in Exclude<keyof StateCustomProps<ReferenceDefinition<Ref>>, keyof CustomProps>]: {
167
169
  required: StateCustomProps<ReferenceDefinition<Ref>>[Key] extends {
168
170
  visibility: 'optional';
@@ -170,31 +172,31 @@ type DefaultReferenceIncludes<Ref extends RenderStateReference, CustomProps> = O
170
172
  suppliedVia: 'component';
171
173
  } };
172
174
  type ReferenceIncludes<Ref extends RenderStateReference, CustomProps, Include> = Include extends object ? Include : DefaultReferenceIncludes<Ref, CustomProps>;
173
- type FromStateInProps<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Shared extends ComposableComponents, Ref extends RenderStateReference, Local extends ComposableComponents> = MergedLayoutInProps<Resources, Options, Shared & StateLocalComposables<ReferenceDefinition<Ref>> & Local> & StateCustomProps<ReferenceDefinition<Ref>> extends infer Props extends InPropsObject ? Props : {};
175
+ type FromStateInProps<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Shared extends ComposableComponents, Ref extends RenderStateReference, Local extends ComposableComponents> = MergedLayoutInProps<Resources, Options, Shared & StateLocalComposables<ReferenceDefinition<Ref>> & Local> & NormalizedCustomProps<StateCustomProps<ReferenceDefinition<Ref>>> extends infer Props extends InPropsObject ? Props : {};
174
176
  type SelectedReferenceSchemas<Ref extends RenderStateReference, Include> = Pick<ReferenceSchemas<Ref>, Extract<keyof Include, keyof ReferenceSchemas<Ref>>> extends infer Selected extends InPropsObject ? Selected : {};
175
- type ReferenceCarriedProps<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Shared extends ComposableComponents, Ref extends RenderStateReference, Include> = Pick<FromStateInProps<Resources, Options, Shared, Ref, {}>, Extract<keyof Include, keyof FromStateInProps<Resources, Options, Shared, Ref, {}>>> extends infer Selected extends InPropsObject ? ResolveProps<Selected> : {};
177
+ type ReferenceCarriedProps<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Shared extends ComposableComponents, Ref extends RenderStateReference, Include> = Pick<FromStateInProps<Resources, Options, Shared, Ref, {}>, Extract<keyof Include, keyof FromStateInProps<Resources, Options, Shared, Ref, {}>>> extends infer Selected extends InPropsObject ? ResolveRenderProps<Selected> : {};
176
178
  type ReferenceRenderProps<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Shared extends ComposableComponents, Ref extends RenderStateReference> = RenderStateProps<Resources, Options, Shared & StateLocalComposables<ReferenceDefinition<Ref>>, StateIncludes<ReferenceDefinition<Ref>> extends infer Include extends IncludedProps<MergedLayoutInProps<Resources, Options, Shared & StateLocalComposables<ReferenceDefinition<Ref>>>> ? Include : {}, StateCustomProps<ReferenceDefinition<Ref>>>;
177
179
  type FromStateComposables<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Shared extends ComposableComponents, Ref extends RenderStateReference, Local extends ComposableComponents, Include> = Local & {
178
180
  Ref: StateComposable<ReferenceRenderProps<Resources, Options, Shared, Ref>, Extract<keyof ReferenceCarriedProps<Resources, Options, Shared, Ref, Include>, keyof ReferenceRenderProps<Resources, Options, Shared, Ref>>> & {
179
181
  [composablePresetMetaKey]: ComposablePresetMeta<SelectedReferenceSchemas<Ref, Include>>;
180
182
  };
181
183
  };
182
- type FromStateDefinition<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Shared extends ComposableComponents, Ref extends RenderStateReference, State extends string, CustomProps extends InPropsObject, Local extends ComposableComponents, Include> = {
184
+ type FromStateDefinition<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Shared extends ComposableComponents, Ref extends RenderStateReference, State extends string, CustomProps extends CustomPropsObject, Local extends ComposableComponents, Include> = {
183
185
  state: State;
184
186
  props?: {
185
- custom?: CustomProps;
187
+ custom?: CustomProps & CustomPropsInput<CustomProps>;
186
188
  include?: ReferenceIncludes<Ref, CustomProps, Include>;
187
189
  };
188
190
  composables: RenderStateComposablesDefinition<Resources, FromStateComposables<Resources, Options, Shared, Ref, Local, ReferenceIncludes<Ref, CustomProps, Include>>>;
189
- render: (props: OptionalStateChildren<ResolveProps<CustomProps> & ResolvedIncludedProps<FromStateInProps<Resources, Options, Shared, Ref, Local>, ReferenceIncludes<Ref, CustomProps, Include> extends infer Selected extends IncludedProps<FromStateInProps<Resources, Options, Shared, Ref, Local>> ? Selected : {}>>, context: RenderStateContext<Shared & FromStateComposables<Resources, Options, Shared, Ref, Local, ReferenceIncludes<Ref, CustomProps, Include>>, Resources, string>) => JSX.Element;
191
+ render: (props: OptionalStateChildren<ResolveRenderProps<CustomProps> & ResolvedIncludedProps<FromStateInProps<Resources, Options, Shared, Ref, Local>, ReferenceIncludes<Ref, CustomProps, Include> extends infer Selected extends IncludedProps<FromStateInProps<Resources, Options, Shared, Ref, Local>> ? Selected : {}>, CustomProps>, context: RenderStateContext<Shared & FromStateComposables<Resources, Options, Shared, Ref, Local, ReferenceIncludes<Ref, CustomProps, Include>>, Resources, string>) => JSX.Element;
190
192
  };
191
193
  /** Creates a state with inherited props and a composable reference to its source. */
192
- type CreateRenderStateFromState<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Shared extends ComposableComponents> = <const Ref extends RenderStateReference, const State extends RenderStateName = 'default', const CustomProps extends InPropsObject = {}, const Local extends ComposableComponents = {}, const Include extends IncludedProps<FromStateInProps<Resources, Options, Shared, Ref, Local>> | undefined = undefined>(definition: {
194
+ type CreateRenderStateFromState<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Shared extends ComposableComponents> = <const Ref extends RenderStateReference, const State extends RenderStateName = 'default', const CustomProps extends CustomPropsObject = {}, const Local extends ComposableComponents = {}, const Include extends IncludedProps<FromStateInProps<Resources, Options, Shared, Ref, Local>> | undefined = undefined>(definition: {
193
195
  ref: Ref; /** Defer Ref rendering through React.lazy. Defaults to false. */
194
196
  lazy?: boolean;
195
197
  state?: State;
196
198
  props?: {
197
- custom?: CustomProps;
199
+ custom?: CustomProps & CustomPropsInput<CustomProps>;
198
200
  include?: Include & Record<Exclude<keyof Include, keyof FromStateInProps<Resources, Options, Shared, Ref, Local>>, never>;
199
201
  };
200
202
  composables?: (create: CreateLayoutComposable<LayoutResourceKey<Resources>>, states: {}) => Local & {
@@ -212,7 +214,7 @@ type CreateRenderStateFromState<Resources extends ReadonlyArray<ResourceDefiniti
212
214
  * separate chunk.
213
215
  * - `.fromState({ ref, ... })` inherits a state's props and exposes it as `Ref`.
214
216
  */
215
- interface CreateRenderState<Resources extends ReadonlyArray<ResourceDefinition> = ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources> = {}, SharedComposables extends ComposableComponents = {}, SharedInclude extends IncludedProps<MergedLayoutInProps<Resources, Options, SharedComposables>> = {}, SharedCustom extends InPropsObject = {}> extends RenderStateOverloads<Resources, Options, SharedComposables, false, SharedInclude, SharedCustom> {
217
+ interface CreateRenderState<Resources extends ReadonlyArray<ResourceDefinition> = ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources> = {}, SharedComposables extends ComposableComponents = {}, SharedInclude extends IncludedProps<MergedLayoutInProps<Resources, Options, SharedComposables>> = {}, SharedCustom extends CustomPropsObject = {}> extends RenderStateOverloads<Resources, Options, SharedComposables, false, SharedInclude, SharedCustom> {
216
218
  /** Bind the full calling-state union for a shell created before its layout. */
217
219
  forStates<const Names extends readonly [string, ...string[]]>(...states: Names): RenderStateOverloads<Resources, Options, SharedComposables, false, SharedInclude, SharedCustom, Names[number]>;
218
220
  fromState: CreateRenderStateFromState<Resources, Options, SharedComposables>;
@@ -220,7 +222,7 @@ interface CreateRenderState<Resources extends ReadonlyArray<ResourceDefinition>
220
222
  lazy<Module extends Record<string, unknown>>(load: (() => Promise<Module>) | LazyOptions<Module>): LazyRenderState<DefinedRenderStateFromModule<Module>> & StateComposableHandle<RenderStateCallProps<Resources, Options, SharedComposables, DefinedRenderStateFromModule<Module>>>;
221
223
  }
222
224
  /** Inputs used internally to bind resource and option types to a state builder. */
223
- type CreateRenderStateBuilderArguments<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, SharedComposables extends ComposableComponents = {}, SharedInclude extends IncludedProps<MergedLayoutInProps<Resources, Options, SharedComposables>> = {}, SharedCustom extends InPropsObject = {}> = {
225
+ type CreateRenderStateBuilderArguments<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, SharedComposables extends ComposableComponents = {}, SharedInclude extends IncludedProps<MergedLayoutInProps<Resources, Options, SharedComposables>> = {}, SharedCustom extends CustomPropsObject = {}> = {
224
226
  props?: {
225
227
  include?: SharedInclude;
226
228
  custom?: SharedCustom;
@@ -230,7 +232,7 @@ type CreateRenderStateBuilderArguments<Resources extends ReadonlyArray<ResourceD
230
232
  resources: Resources;
231
233
  };
232
234
  /** The state factory produced for a particular resource and option definition. */
233
- type CreateRenderStateBuilderResult<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, SharedComposables extends ComposableComponents = {}, SharedInclude extends IncludedProps<MergedLayoutInProps<Resources, Options, SharedComposables>> = {}, SharedCustom extends InPropsObject = {}> = CreateRenderState<Resources, Options, SharedComposables, SharedInclude, SharedCustom>;
235
+ type CreateRenderStateBuilderResult<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, SharedComposables extends ComposableComponents = {}, SharedInclude extends IncludedProps<MergedLayoutInProps<Resources, Options, SharedComposables>> = {}, SharedCustom extends CustomPropsObject = {}> = CreateRenderState<Resources, Options, SharedComposables, SharedInclude, SharedCustom>;
234
236
  /** Identity helper that contextually types a reusable composables callback. */
235
237
  type DefineLayoutComposables<Resources extends ReadonlyArray<ResourceDefinition>> = <const Composables extends ComposableComponents>(definition: LayoutComposablesDefinition<Resources, Composables>) => LayoutComposablesDefinition<Resources, Composables>;
236
238
  /** Public cross-file building blocks returned by a defined layout builder. */
@@ -1 +1 @@
1
- {"version":3,"file":"render-state.d.mts","names":[],"sources":["../../src/create-config/render-state.ts"],"mappings":"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"}
1
+ {"version":3,"file":"render-state.d.mts","names":[],"sources":["../../src/create-config/render-state.ts"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { LayoutConfigurationError } from "../errors/layout-configuration-error.mjs";
2
2
  import { LazyResourceModuleShapeError } from "../errors/lazy-resource-error.mjs";
3
+ import { normalizeCustomProps } from "../custom-props.mjs";
3
4
  import { createStateComposable, withStateComposable } from "./state-composable.mjs";
4
5
  import { getIncludedPropBehavior } from "../props.mjs";
5
6
  import { createLazyLoader } from "../lazy/create-lazy-loader.mjs";
@@ -71,7 +72,7 @@ function createRenderStateBuilder(_arguments, environment) {
71
72
  const includes = input.props?.include ?? Object.fromEntries(Object.entries({
72
73
  ...source.props?.include,
73
74
  ...Object.fromEntries(Object.entries(source.props?.custom ?? {}).map(([key, prop]) => [key, {
74
- required: prop.visibility !== "optional",
75
+ required: typeof prop === "string" ? prop === "required" : prop.visibility !== "optional",
75
76
  suppliedVia: "component"
76
77
  }]))
77
78
  }).filter(([key]) => !(key in custom)));
@@ -86,7 +87,7 @@ function createRenderStateBuilder(_arguments, environment) {
86
87
  const inherited = source.composables?.(create, states) ?? {};
87
88
  const local = input.composables?.(create, states) ?? {};
88
89
  if (Object.prototype.hasOwnProperty.call(local, "Ref")) throw new LayoutConfigurationError("Composable name \"Ref\" is reserved by fromState");
89
- const schemas = Object.assign({}, ...collectComposablePresetEntries(inherited).map(({ props }) => props), source.props?.custom);
90
+ const schemas = Object.assign({}, ...collectComposablePresetEntries(inherited).map(({ props }) => props), normalizeCustomProps(source.props?.custom ?? {}));
90
91
  const selected = Object.fromEntries(Object.entries(schemas).filter(([key]) => key in includes));
91
92
  const referenceSource = {
92
93
  ...source,
@@ -1 +1 @@
1
- {"version":3,"file":"render-state.mjs","names":[],"sources":["../../src/create-config/render-state.ts"],"sourcesContent":["import { createLazyLoader, type LazyLoader } from '../lazy/create-lazy-loader';\nimport { inspectLazy, withLazyHandle } from '../lazy/inspection';\nimport { type LazyHandle, type LazyOptions, type LazyResourceStates } from '../lazy/types';\nimport { LazyResourceModuleShapeError } from '../errors/lazy-resource-error';\nimport type { InspectionStore } from '@jfdevelops/react-layout-devtools-core';\nexport const lazyLoaderSymbol = Symbol('lazyLoader');\nexport const lazyOptionsSymbol = Symbol('lazyOptions');\nexport const lazyInspectionSymbol = Symbol('lazyInspection');\n\nimport {\n getLayoutDebug,\n layoutDebug,\n} from '@jfdevelops/react-layout-devtools-core';\nimport type { MergeContract } from './define-layout';\nimport type { JSX } from 'react';\nimport {\n collectComposablePresetEntries,\n composablePresetMetaKey,\n type MergePresetProps,\n type ComposablePresetMeta,\n} from '@jfdevelops/react-layout-composables';\nimport { LayoutConfigurationError } from '../errors';\nimport {\n createStateComposable,\n withStateComposable,\n type StateComposable,\n type StateComposableHandle,\n} from './state-composable';\nimport type { ResolveProps } from '@jfdevelops/react-layout-validator';\nimport type {\n ComposableComponents,\n CreateLayoutComposable,\n} from '@jfdevelops/react-layout-composables';\nimport {\n getIncludedPropBehavior,\n type InPropsObject,\n type NormalizedIncludedPropBehavior,\n} from '../props';\nimport type {\n IncludedProps,\n InPropsDefinition,\n LayoutRenderProps,\n MergedLayoutInProps,\n ResolvedIncludedComponentProps,\n ResolvedIncludedProps,\n} from '../props';\nimport type { LayoutResourceKey, ResourceDefinition } from '../resource';\nimport type { LayoutRenderResourcesAccessor } from './define-layout';\n\nexport const deferredRenderStateSymbol: unique symbol = Symbol(\n 'deferredRenderState'\n);\n\nexport const lazyRenderStateSymbol: unique symbol = Symbol(\n 'lazyRenderState'\n);\n\nexport const definedRenderStateSymbol: unique symbol = Symbol.for(\n '@jfdevelops/react-layout/render-state'\n);\n\nexport const definedResourceLayoutComponentSymbol: unique symbol = Symbol.for(\n '@jfdevelops/react-layout/resource-layout-component'\n);\n\n/** Runtime-compatible render-state shape used when inspecting lazy modules. */\nexport type AnyRenderStateDefinition = {\n composables?: (\n create: CreateLayoutComposable<any>,\n states: any\n ) => ComposableComponents;\n props?: {\n include?: Record<string, unknown>;\n custom?: InPropsObject;\n };\n render: (props: any, context: any) => JSX.Element;\n state?: string;\n};\n\n/** An inline state whose first render is scheduled through `React.lazy`. */\nexport type DeferredRenderState<Definition extends AnyRenderStateDefinition> = {\n readonly [deferredRenderStateSymbol]: Definition;\n};\n\n/** A state definition supplied by a separately imported module. */\nexport type LazyRenderState<Definition extends AnyRenderStateDefinition> = LazyHandle & {\n readonly [lazyLoaderSymbol]: LazyLoader<AnyRenderStateDefinition>;\n readonly [lazyOptionsSymbol]: LazyOptions & { defaults: () => LazyResourceStates };\n readonly [lazyInspectionSymbol]: ReturnType<typeof inspectLazy>;\n readonly [lazyRenderStateSymbol]: () => Promise<Record<string, unknown>>;\n readonly definition?: Definition;\n};\n\nexport type BuiltinRenderStateName = 'default' | 'Loading' | 'Error' | 'NotFound';\n\n/**\n * State names accepted by `createRenderState`. Built-in states are suggested by\n * autocomplete while any other string still creates a custom compound state.\n */\nexport type RenderStateName =\n | 'default'\n | 'Loading'\n | 'Error'\n | 'NotFound'\n | (string & {});\n\n/** Callback shorthand for a render state with no local configuration. */\nexport type RenderStateCallback = (props: any, context: any) => JSX.Element;\n\n/**\n * Defines state-local composable components with a `create` helper narrowed to\n * the resources bound to the surrounding builder.\n */\nexport type RenderStateComposablesDefinition<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Composables extends ComposableComponents,\n States = {}\n> = (\n create: CreateLayoutComposable<LayoutResourceKey<Resources>>,\n states: States\n) => Composables;\n\n/**\n * Defines reusable layout-level composables while preserving their inferred\n * names, props, and bound resource union.\n */\nexport type LayoutComposablesDefinition<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Composables extends ComposableComponents\n> = RenderStateComposablesDefinition<Resources, Composables>;\n\ntype BuilderRenderComposables<Composables extends ComposableComponents> = [\n keyof Composables\n] extends [never]\n ? undefined\n : Composables;\n\n/** Values available as the second argument of a created state's `render`. */\nexport type RenderStateContext<\n Composables extends ComposableComponents,\n Resources extends ReadonlyArray<ResourceDefinition> = ReadonlyArray<ResourceDefinition>,\n States extends string = string\n> = {\n state: States;\n resources: LayoutRenderResourcesAccessor<Resources>;\n composables: BuilderRenderComposables<Composables>;\n retry?: () => void;\n};\n\n/** State callers may omit children even when a shared layout requires them. */\nexport type OptionalStateChildren<Props> = Omit<Props, 'children'> &\n Partial<Pick<Props, Extract<'children', keyof Props>>>;\n\n/**\n * Resolves one state's custom props and explicitly included option/composable\n * props to the values received by its render callback.\n */\nexport type RenderStateProps<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends IncludedProps<\n MergedLayoutInProps<Resources, Options, Composables>\n >,\n CustomProps extends InPropsObject\n> = OptionalStateChildren<LayoutRenderProps<\n Resources,\n Options,\n Composables,\n IncludeProps,\n CustomProps\n>>;\n\ntype TypedRenderStateDefinition<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n State extends string,\n CustomProps extends InPropsObject,\n SharedComposables extends ComposableComponents,\n StateComposables extends ComposableComponents,\n IncludeProps extends IncludedProps<\n MergedLayoutInProps<\n Resources,\n Options,\n SharedComposables & StateComposables\n >\n >,\n SharedInclude extends IncludedProps<\n MergedLayoutInProps<Resources, Options, SharedComposables>\n > = {},\n SharedCustom extends InPropsObject = {},\n KnownStates extends string = string\n> = {\n composables?: RenderStateComposablesDefinition<Resources, StateComposables>;\n props?: {\n include?: IncludeProps;\n custom?: CustomProps;\n };\n render: (\n props: RenderStateProps<\n Resources,\n Options,\n SharedComposables & StateComposables,\n MergeContract<SharedInclude, IncludeProps>,\n MergeContract<SharedCustom, CustomProps>\n >,\n context: RenderStateContext<\n SharedComposables & StateComposables,\n Resources,\n KnownStates\n >\n ) => JSX.Element;\n state: State;\n};\n\n/**\n * Callback shorthand for a created state, typed with the bound resources,\n * options, and shared composables.\n */\nexport type TypedRenderStateCallback<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n SharedComposables extends ComposableComponents,\n SharedInclude extends IncludedProps<\n MergedLayoutInProps<Resources, Options, SharedComposables>\n > = {},\n SharedCustom extends InPropsObject = {},\n KnownStates extends string = string\n> = (\n props: RenderStateProps<\n Resources,\n Options,\n SharedComposables,\n SharedInclude,\n SharedCustom\n >,\n context: RenderStateContext<SharedComposables, Resources, KnownStates>\n) => JSX.Element;\n\ntype NormalizeRenderStateDefinition<Input> = Input extends LazyRenderState<\n infer Definition\n>\n ? Definition\n : Input extends DeferredRenderState<infer Definition>\n ? Definition\n : Input extends RenderStateCallback\n ? { render: Input; state: 'default' }\n : Input extends AnyRenderStateDefinition\n ? Input\n : never;\n\ntype StateName<Definition> = Definition extends DeferredRenderState<\n infer DeferredDefinition\n>\n ? StateName<DeferredDefinition>\n : Definition extends { state?: infer State extends string }\n ? State\n : 'default';\n\n/**\n * A spreadable state entry keyed by its literal state name. Spreading this into\n * `layout.render` is what creates compound members such as `Users.Loading`.\n */\nexport type RenderStateFragment<\n Definition,\n CallProps extends object = ResolveProps<StateCustomProps<Definition>>\n> = {\n [State in StateName<NormalizeRenderStateDefinition<Definition>>]: Definition;\n} & {\n readonly [definedRenderStateSymbol]: NormalizeRenderStateDefinition<Definition> & CreatedRenderStateInput;\n} & StateComposableHandle<CallProps>;\n\ntype StateCustomProps<Input> = NormalizeStateInput<Input> extends {\n props?: { custom?: infer Props extends InPropsObject };\n}\n ? Props\n : {};\n\ntype StateIncludes<Input> = NormalizeStateInput<Input> extends {\n props?: { include?: infer Includes };\n}\n ? Includes\n : {};\n\ntype NormalizeStateInput<Input> = Input extends DeferredRenderState<\n infer Definition\n>\n ? Definition\n : Input extends LazyRenderState<infer Definition>\n ? Definition\n : Input;\n\ntype StateLocalComposables<Input> = NormalizeStateInput<Input> extends {\n composables?: (\n ...args: any[]\n ) => infer Components extends ComposableComponents;\n}\n ? Components\n : {};\n\n/**\n * A composables callback cannot infer its own return value into its arguments.\n * Preserve the declared call-site contract for props supplied by local presets,\n * even when their value types are not yet available in the callback context.\n */\ntype UnresolvedStateComponentProps<Props, Includes> = {\n [Key in Exclude<keyof Includes, keyof Props> as NormalizedIncludedPropBehavior<Includes[Key]> extends {\n visibility: 'required';\n passthrough: 'component';\n }\n ? Key\n : never]: unknown;\n} & {\n [Key in Exclude<keyof Includes, keyof Props> as NormalizedIncludedPropBehavior<Includes[Key]> extends\n | 'optional'\n | { visibility: 'optional'; passthrough: 'component' }\n ? Key\n : never]?: unknown;\n};\n\ntype StateComponentProps<\n Props extends InPropsObject,\n Includes\n> = ResolvedIncludedComponentProps<\n Props,\n Pick<\n Includes,\n Extract<keyof Includes, keyof Props>\n > extends infer Known extends IncludedProps<Props>\n ? Known\n : {}\n> &\n UnresolvedStateComponentProps<Props, Includes>;\n\n/** Call-site props of a referenced state; creation-time options stay bound. */\nexport type RenderStateCallProps<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n Input\n> = OptionalStateChildren<ResolveProps<StateCustomProps<Input>> &\n StateComponentProps<\n MergedLayoutInProps<\n Resources,\n Options,\n Composables & StateLocalComposables<Input>\n >,\n StateIncludes<Input>\n >>;\n\n/** Typed references to all the states declared in an inline render map. */\nexport type RenderStateReferences<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n States\n> = {\n readonly [State in keyof States & string]: StateComposable<\n RenderStateCallProps<Resources, Options, Composables, States[State]>\n >;\n};\n\ntype BoundRenderStateFragment<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n Definition\n> = RenderStateFragment<\n Definition,\n RenderStateCallProps<Resources, Options, Composables, Definition>\n>;\n\ntype DefinedRenderStateFromModule<Module> = Extract<\n Module[keyof Module],\n { readonly [definedRenderStateSymbol]: AnyRenderStateDefinition }\n>[typeof definedRenderStateSymbol];\n\n/** Wraps a state definition in the deferred marker when `Deferred` is `true`. */\ntype RenderStateEntry<\n Definition,\n Deferred extends boolean\n> = Deferred extends true\n ? DeferredRenderState<NormalizeRenderStateDefinition<Definition>>\n : Definition & CreatedRenderStateInput;\n\ndeclare const createdRenderStateType: unique symbol;\n/** Distinguishes independently typed states from inline contextual definitions. */\nexport type CreatedRenderStateInput = {\n readonly [createdRenderStateType]: true;\n};\n\n/**\n * Overloads shared by `createRenderState` and `createRenderState.defer`. Each\n * accepts a full definition, a definition without `state`, or a render\n * callback; `Deferred` decides whether the returned entry is deferred.\n */\nexport interface RenderStateOverloads<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n SharedComposables extends ComposableComponents,\n Deferred extends boolean,\n SharedInclude extends IncludedProps<\n MergedLayoutInProps<Resources, Options, SharedComposables>\n > = {},\n SharedCustom extends InPropsObject = {},\n KnownStates extends string = string\n> {\n <\n const State extends RenderStateName,\n const CustomProps extends InPropsObject = {},\n const StateComposables extends ComposableComponents = {},\n const IncludeProps extends IncludedProps<\n MergedLayoutInProps<\n Resources,\n Options,\n SharedComposables & StateComposables\n >\n > = {}\n >(\n definition: TypedRenderStateDefinition<\n Resources,\n Options,\n State,\n CustomProps,\n SharedComposables,\n StateComposables,\n IncludeProps,\n SharedInclude,\n SharedCustom,\n KnownStates\n >\n ): BoundRenderStateFragment<\n Resources,\n Options,\n SharedComposables,\n RenderStateEntry<\n TypedRenderStateDefinition<\n Resources,\n Options,\n State,\n CustomProps,\n SharedComposables,\n StateComposables,\n IncludeProps,\n SharedInclude,\n SharedCustom,\n KnownStates\n >,\n Deferred\n >\n >;\n <\n const CustomProps extends InPropsObject = {},\n const StateComposables extends ComposableComponents = {},\n const IncludeProps extends IncludedProps<\n MergedLayoutInProps<\n Resources,\n Options,\n SharedComposables & StateComposables\n >\n > = {}\n >(\n definition: Omit<\n TypedRenderStateDefinition<\n Resources,\n Options,\n 'default',\n CustomProps,\n SharedComposables,\n StateComposables,\n IncludeProps,\n SharedInclude,\n SharedCustom,\n KnownStates\n >,\n 'state'\n >\n ): BoundRenderStateFragment<\n Resources,\n Options,\n SharedComposables,\n RenderStateEntry<\n TypedRenderStateDefinition<\n Resources,\n Options,\n 'default',\n CustomProps,\n SharedComposables,\n StateComposables,\n IncludeProps,\n SharedInclude,\n SharedCustom,\n KnownStates\n >,\n Deferred\n >\n >;\n (\n render: TypedRenderStateCallback<\n Resources,\n Options,\n SharedComposables,\n SharedInclude,\n SharedCustom,\n KnownStates\n >\n ): BoundRenderStateFragment<\n Resources,\n Options,\n SharedComposables,\n RenderStateEntry<\n TypedRenderStateCallback<\n Resources,\n Options,\n SharedComposables,\n SharedInclude,\n SharedCustom,\n KnownStates\n >,\n Deferred\n >\n >;\n}\n\ntype RenderStateReference = (\n | { readonly [definedRenderStateSymbol]: AnyRenderStateDefinition }\n | LazyRenderState<AnyRenderStateDefinition>\n) &\n StateComposableHandle<any>;\n\ntype ReferenceDefinition<Ref extends RenderStateReference> =\n Ref extends LazyRenderState<infer Definition>\n ? Definition\n : Ref extends {\n readonly [definedRenderStateSymbol]: infer Definition extends AnyRenderStateDefinition;\n }\n ? Definition\n : never;\n\ntype FromStateEntry<\n Ref extends RenderStateReference,\n Definition extends AnyRenderStateDefinition\n> = Ref extends LazyRenderState<AnyRenderStateDefinition>\n ? LazyRenderState<Definition>\n : Extract<\n Ref[Exclude<keyof Ref, 'asComposable' | typeof definedRenderStateSymbol>],\n LazyRenderState<AnyRenderStateDefinition>\n > extends never\n ? Definition & CreatedRenderStateInput\n : LazyRenderState<Definition>;\n\ntype ReferenceSchemas<Ref extends RenderStateReference> = StateCustomProps<\n ReferenceDefinition<Ref>\n> &\n MergePresetProps<StateLocalComposables<ReferenceDefinition<Ref>>>;\n\ntype DefaultReferenceIncludes<\n Ref extends RenderStateReference,\n CustomProps\n> = Omit<\n StateIncludes<ReferenceDefinition<Ref>>,\n keyof CustomProps | keyof StateCustomProps<ReferenceDefinition<Ref>>\n> & {\n [Key in Exclude<\n keyof StateCustomProps<ReferenceDefinition<Ref>>,\n keyof CustomProps\n >]: {\n required: StateCustomProps<ReferenceDefinition<Ref>>[Key] extends { visibility: 'optional' } ? false : true;\n suppliedVia: 'component';\n };\n};\n\ntype ReferenceIncludes<\n Ref extends RenderStateReference,\n CustomProps,\n Include\n> = Include extends object\n ? Include\n : DefaultReferenceIncludes<Ref, CustomProps>;\n\ntype FromStateInProps<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Shared extends ComposableComponents,\n Ref extends RenderStateReference,\n Local extends ComposableComponents\n> = MergedLayoutInProps<\n Resources,\n Options,\n Shared & StateLocalComposables<ReferenceDefinition<Ref>> & Local\n> &\n StateCustomProps<\n ReferenceDefinition<Ref>\n > extends infer Props extends InPropsObject\n ? Props\n : {};\n\ntype SelectedReferenceSchemas<Ref extends RenderStateReference, Include> = Pick<\n ReferenceSchemas<Ref>,\n Extract<keyof Include, keyof ReferenceSchemas<Ref>>\n> extends infer Selected extends InPropsObject\n ? Selected\n : {};\n\ntype ReferenceCarriedProps<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Shared extends ComposableComponents,\n Ref extends RenderStateReference,\n Include\n> = Pick<\n FromStateInProps<Resources, Options, Shared, Ref, {}>,\n Extract<\n keyof Include,\n keyof FromStateInProps<Resources, Options, Shared, Ref, {}>\n >\n> extends infer Selected extends InPropsObject\n ? ResolveProps<Selected>\n : {};\n\ntype ReferenceRenderProps<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Shared extends ComposableComponents,\n Ref extends RenderStateReference\n> = RenderStateProps<\n Resources,\n Options,\n Shared & StateLocalComposables<ReferenceDefinition<Ref>>,\n StateIncludes<\n ReferenceDefinition<Ref>\n > extends infer Include extends IncludedProps<\n MergedLayoutInProps<\n Resources,\n Options,\n Shared & StateLocalComposables<ReferenceDefinition<Ref>>\n >\n >\n ? Include\n : {},\n StateCustomProps<ReferenceDefinition<Ref>>\n>;\n\ntype FromStateComposables<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Shared extends ComposableComponents,\n Ref extends RenderStateReference,\n Local extends ComposableComponents,\n Include\n> = Local & {\n Ref: StateComposable<\n ReferenceRenderProps<Resources, Options, Shared, Ref>,\n Extract<\n keyof ReferenceCarriedProps<Resources, Options, Shared, Ref, Include>,\n keyof ReferenceRenderProps<Resources, Options, Shared, Ref>\n >\n > & {\n [composablePresetMetaKey]: ComposablePresetMeta<\n SelectedReferenceSchemas<Ref, Include>\n >;\n };\n};\n\ntype FromStateDefinition<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Shared extends ComposableComponents,\n Ref extends RenderStateReference,\n State extends string,\n CustomProps extends InPropsObject,\n Local extends ComposableComponents,\n Include\n> = {\n state: State;\n props?: {\n custom?: CustomProps;\n include?: ReferenceIncludes<Ref, CustomProps, Include>;\n };\n composables: RenderStateComposablesDefinition<\n Resources,\n FromStateComposables<\n Resources,\n Options,\n Shared,\n Ref,\n Local,\n ReferenceIncludes<Ref, CustomProps, Include>\n >\n >;\n render: (\n props: OptionalStateChildren<ResolveProps<CustomProps> &\n ResolvedIncludedProps<\n FromStateInProps<Resources, Options, Shared, Ref, Local>,\n ReferenceIncludes<\n Ref,\n CustomProps,\n Include\n > extends infer Selected extends IncludedProps<\n FromStateInProps<Resources, Options, Shared, Ref, Local>\n >\n ? Selected\n : {}\n >>,\n context: RenderStateContext<\n Shared &\n FromStateComposables<\n Resources,\n Options,\n Shared,\n Ref,\n Local,\n ReferenceIncludes<Ref, CustomProps, Include>\n >,\n Resources,\n string\n >\n ) => JSX.Element;\n};\n\n/** Creates a state with inherited props and a composable reference to its source. */\nexport type CreateRenderStateFromState<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Shared extends ComposableComponents\n> = <\n const Ref extends RenderStateReference,\n const State extends RenderStateName = 'default',\n const CustomProps extends InPropsObject = {},\n const Local extends ComposableComponents = {},\n const Include extends\n | IncludedProps<FromStateInProps<Resources, Options, Shared, Ref, Local>>\n | undefined = undefined\n>(definition: {\n ref: Ref;\n /** Defer Ref rendering through React.lazy. Defaults to false. */\n lazy?: boolean;\n state?: State;\n props?: {\n custom?: CustomProps;\n include?: Include &\n Record<\n Exclude<\n keyof Include,\n keyof FromStateInProps<Resources, Options, Shared, Ref, Local>\n >,\n never\n >;\n };\n composables?: (\n create: CreateLayoutComposable<LayoutResourceKey<Resources>>,\n states: {}\n ) => Local & { Ref?: never };\n render: FromStateDefinition<\n Resources,\n Options,\n Shared,\n Ref,\n State,\n CustomProps,\n Local,\n Include\n >['render'];\n}) => BoundRenderStateFragment<\n Resources,\n Options,\n Shared,\n FromStateEntry<\n Ref,\n FromStateDefinition<\n Resources,\n Options,\n Shared,\n Ref,\n State,\n CustomProps,\n Local,\n Include\n >\n >\n>;\n\n/**\n * Creates independently typed render-state fragments.\n *\n * - Calling it directly creates an eager state.\n * - `.defer(...)` schedules an inline definition through `React.lazy`, but\n * does not create a separate JavaScript chunk.\n * - `.lazy(() => import(...))` imports a complete named state definition as a\n * separate chunk.\n * - `.fromState({ ref, ... })` inherits a state's props and exposes it as `Ref`.\n */\nexport interface CreateRenderState<\n Resources extends ReadonlyArray<ResourceDefinition> = ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources> = {},\n SharedComposables extends ComposableComponents = {},\n SharedInclude extends IncludedProps<\n MergedLayoutInProps<Resources, Options, SharedComposables>\n > = {},\n SharedCustom extends InPropsObject = {}\n> extends RenderStateOverloads<\n Resources,\n Options,\n SharedComposables,\n false,\n SharedInclude,\n SharedCustom\n > {\n /** Bind the full calling-state union for a shell created before its layout. */\n forStates<const Names extends readonly [string, ...string[]]>(\n ...states: Names\n ): RenderStateOverloads<\n Resources,\n Options,\n SharedComposables,\n false,\n SharedInclude,\n SharedCustom,\n Names[number]\n >;\n fromState: CreateRenderStateFromState<Resources, Options, SharedComposables>;\n defer: RenderStateOverloads<\n Resources,\n Options,\n SharedComposables,\n true,\n SharedInclude,\n SharedCustom\n >;\n lazy<Module extends Record<string, unknown>>(\n load: (() => Promise<Module>) | LazyOptions<Module>\n ): LazyRenderState<DefinedRenderStateFromModule<Module>> &\n StateComposableHandle<\n RenderStateCallProps<\n Resources,\n Options,\n SharedComposables,\n DefinedRenderStateFromModule<Module>\n >\n >;\n}\n\nfunction normalizeDefinition(\n input: AnyRenderStateDefinition | RenderStateCallback\n): AnyRenderStateDefinition {\n return typeof input === 'function'\n ? { render: input, state: 'default' }\n : input;\n}\n\nfunction toFragment<Definition extends AnyRenderStateDefinition>(\n definition: Definition\n) {\n const fragment = {\n [definition.state ?? 'default']: definition,\n } as RenderStateFragment<Definition>;\n\n Object.defineProperty(fragment, definedRenderStateSymbol, {\n enumerable: false,\n value: definition,\n });\n\n return withStateComposable(fragment, {\n input: definition,\n name: definition.state ?? 'default',\n });\n}\n\n/** Inputs used internally to bind resource and option types to a state builder. */\nexport type CreateRenderStateBuilderArguments<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n SharedComposables extends ComposableComponents = {},\n SharedInclude extends IncludedProps<\n MergedLayoutInProps<Resources, Options, SharedComposables>\n > = {},\n SharedCustom extends InPropsObject = {}\n> = {\n props?: { include?: SharedInclude; custom?: SharedCustom };\n /** Shared composables whose components and preset props every state can use. */\n composables?: LayoutComposablesDefinition<Resources, SharedComposables>;\n /** Option props that individual states can expose through `props.include`. */\n options: Options;\n /** Resources used to constrain composable names and resource-specific props. */\n resources: Resources;\n};\n\n/** The state factory produced for a particular resource and option definition. */\nexport type CreateRenderStateBuilderResult<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n SharedComposables extends ComposableComponents = {},\n SharedInclude extends IncludedProps<\n MergedLayoutInProps<Resources, Options, SharedComposables>\n > = {},\n SharedCustom extends InPropsObject = {}\n> = CreateRenderState<\n Resources,\n Options,\n SharedComposables,\n SharedInclude,\n SharedCustom\n>;\n\n/**\n * Creates a state factory whose `props.include` keys are constrained by the\n * supplied resources and options.\n */\nexport function createRenderStateBuilder<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n SharedComposables extends ComposableComponents = {},\n SharedInclude extends IncludedProps<\n MergedLayoutInProps<Resources, Options, SharedComposables>\n > = {},\n SharedCustom extends InPropsObject = {}\n>(\n _arguments: CreateRenderStateBuilderArguments<\n Resources,\n Options,\n SharedComposables,\n SharedInclude,\n SharedCustom\n >,\n environment?: { store: InspectionStore; defaults: () => LazyResourceStates; onLazy?: () => void }\n): CreateRenderStateBuilderResult<\n Resources,\n Options,\n SharedComposables,\n SharedInclude,\n SharedCustom\n> {\n function createRenderState(\n input: AnyRenderStateDefinition | RenderStateCallback\n ) {\n const definition = normalizeDefinition(input);\n const debug = getLayoutDebug(input);\n\n return toFragment(\n debug ? { ...definition, [layoutDebug]: debug } : definition\n );\n }\n\n createRenderState.forStates = (..._states: string[]) => createRenderState;\n\n createRenderState.fromState = (input: {\n ref: RenderStateReference;\n lazy?: boolean;\n state?: string;\n props?: AnyRenderStateDefinition['props'];\n composables?: AnyRenderStateDefinition['composables'];\n render: AnyRenderStateDefinition['render'];\n }): object => {\n const entry = isLazyRenderState(input.ref)\n ? input.ref\n : Object.values(input.ref)[0];\n\n if (isLazyRenderState(entry)) {\n const lazyState = createRenderState.lazy(async () => {\n if (entry.status === 'error') entry[lazyLoaderSymbol].reset();\n const source = await entry[lazyLoaderSymbol].get();\n\n return {\n Derived: createRenderState.fromState({\n ...input,\n ref: toFragment(source),\n }),\n };\n });\n const name = input.state ?? 'default';\n const fragment = { [name]: lazyState };\n\n Object.defineProperty(fragment, definedRenderStateSymbol, {\n value: lazyState,\n });\n\n return withStateComposable(fragment, { input: lazyState, name });\n }\n\n const source = isDeferredRenderState(entry)\n ? entry[deferredRenderStateSymbol]\n : definedRenderStateSymbol in input.ref\n ? input.ref[definedRenderStateSymbol]\n : undefined;\n\n if (!source || typeof source.render !== 'function') {\n throw new LayoutConfigurationError(\n 'fromState requires a created render state'\n );\n }\n\n const custom = input.props?.custom ?? {};\n const includes =\n input.props?.include ??\n Object.fromEntries(\n Object.entries({\n ...source.props?.include,\n ...Object.fromEntries(\n Object.entries(source.props?.custom ?? {}).map(([key, prop]) => [\n key,\n { required: prop.visibility !== 'optional', suppliedVia: 'component' },\n ])\n ),\n }).filter(([key]) => !(key in custom))\n );\n\n return toFragment({\n [layoutDebug]: getLayoutDebug(input),\n state: input.state ?? 'default',\n props: { custom, include: includes },\n composables: (create, states) => {\n const inherited = source.composables?.(create, states) ?? {};\n const local = input.composables?.(create, states) ?? {};\n\n if (Object.prototype.hasOwnProperty.call(local, 'Ref')) {\n throw new LayoutConfigurationError(\n 'Composable name \"Ref\" is reserved by fromState'\n );\n }\n\n const schemas = Object.assign(\n {},\n ...collectComposablePresetEntries(inherited).map(\n ({ props }) => props\n ),\n source.props?.custom\n ) as InPropsObject;\n const selected = Object.fromEntries(\n Object.entries(schemas).filter(([key]) => key in includes)\n );\n const referenceSource = {\n ...source,\n props: {\n ...source.props,\n include: Object.fromEntries(\n Object.entries(source.props?.include ?? {}).map(\n ([key, behavior]) => [\n key,\n {\n required: !(behavior === 'optional' ||\n getIncludedPropBehavior(behavior)?.visibility === 'optional'),\n suppliedVia: 'component',\n },\n ]\n )\n ),\n },\n };\n const Ref = createStateComposable(\n {\n input:\n input.lazy || isDeferredRenderState(entry)\n ? { [deferredRenderStateSymbol]: referenceSource }\n : referenceSource,\n name: source.state ?? 'default',\n fallbackStateName: input.state,\n },\n {\n props: {\n include: Object.fromEntries(\n Object.keys(includes).map((key) => [key, true as const])\n ),\n },\n normalizeIncludedKeys: true,\n }\n );\n\n Object.defineProperty(Ref, composablePresetMetaKey, {\n value: { key: 'Ref', props: selected },\n });\n\n return { ...local, Ref };\n },\n render: input.render,\n });\n };\n\n createRenderState.defer = (\n input: AnyRenderStateDefinition | RenderStateCallback\n ) => {\n const definition = normalizeDefinition(input);\n\n const deferred = {\n [deferredRenderStateSymbol]: {\n ...definition,\n [layoutDebug]: getLayoutDebug(input),\n },\n [layoutDebug]: getLayoutDebug(input),\n };\n const fragment = { [definition.state ?? 'default']: deferred };\n\n Object.defineProperty(fragment, definedRenderStateSymbol, {\n value: definition,\n });\n\n return withStateComposable(fragment, {\n input: deferred,\n name: definition.state ?? 'default',\n });\n };\n\n createRenderState.lazy = (\n input: (() => Promise<Record<string, unknown>>) | LazyOptions\n ) => {\n environment?.onLazy?.();\n const options = typeof input === 'function' ? { load: input } : input;\n const inspection = inspectLazy('Render state');\n const loaderOptions = {\n load: options.load,\n select: (module: Record<string, unknown>) =>\n findDefinedRenderState(module, loaderOptions.label),\n label: 'Render state',\n hooks: inspection.hooks,\n };\n const loader = createLazyLoader(loaderOptions);\n const lazyState = withLazyHandle(\n {\n [lazyRenderStateSymbol]: options.load,\n [lazyLoaderSymbol]: loader,\n [lazyOptionsSymbol]: {\n ...options,\n defaults: environment?.defaults ?? (() => ({})),\n },\n [lazyInspectionSymbol]: {\n ...inspection,\n setLabel(value: string) {\n if (loader.status !== 'unresolved') return;\n loaderOptions.label = value;\n inspection.setLabel(value);\n },\n },\n [layoutDebug]: getLayoutDebug(input),\n },\n loader\n );\n const result = inspection.store.attach(\n withStateComposable(lazyState, { input: lazyState, name: 'lazy' })\n );\n environment?.store.connect(result);\n return result;\n };\n\n return createRenderState as unknown as CreateRenderStateBuilderResult<\n Resources,\n Options,\n SharedComposables,\n SharedInclude,\n SharedCustom\n >;\n}\n\n/** Type guard for states created with `createRenderState.defer(...)`. */\nexport function isDeferredRenderState(\n value: unknown\n): value is DeferredRenderState<AnyRenderStateDefinition> {\n return (\n typeof value === 'object' &&\n value !== null &&\n deferredRenderStateSymbol in value\n );\n}\n\n/** Type guard for states created with `createRenderState.lazy(...)`. */\nexport function isLazyRenderState(\n value: unknown\n): value is LazyRenderState<AnyRenderStateDefinition> {\n return (\n typeof value === 'object' &&\n value !== null &&\n lazyRenderStateSymbol in value\n );\n}\n\n/**\n * Resolves the single state exported by a lazy module, including derived lazy\n * states. Throws when a module exports none or more than one.\n */\nexport async function findDefinedRenderState(\n module: Record<string, unknown>,\n label = 'Render state'\n): Promise<AnyRenderStateDefinition> {\n const definitions = Object.values(module).filter(\n (value) =>\n typeof value === 'object' &&\n value !== null &&\n definedRenderStateSymbol in value\n ) as Array<Record<typeof definedRenderStateSymbol, AnyRenderStateDefinition>>;\n\n if (definitions.length !== 1) {\n throw new LazyResourceModuleShapeError(label, definitions.length);\n }\n\n const definition = definitions[0][definedRenderStateSymbol];\n\n if (isLazyRenderState(definition)) {\n if (definition.status === 'error') definition[lazyLoaderSymbol].reset();\n return definition[lazyLoaderSymbol].get();\n }\n return definition;\n}\n\n/** Identity helper that contextually types a reusable composables callback. */\nexport type DefineLayoutComposables<\n Resources extends ReadonlyArray<ResourceDefinition>\n> = <const Composables extends ComposableComponents>(\n definition: LayoutComposablesDefinition<Resources, Composables>\n) => LayoutComposablesDefinition<Resources, Composables>;\n\n/** Public cross-file building blocks returned by a defined layout builder. */\nexport type CreateLayoutBuildingBlocks<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>\n> = {\n composables: DefineLayoutComposables<Resources>;\n createRenderState: CreateRenderState<Resources, Options>;\n};\n\n/** Resource and option bindings used to create layout building blocks. */\nexport type CreateLayoutBuildingBlocksArguments<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>\n> = CreateRenderStateBuilderArguments<Resources, Options>;\n\n/** Layout helpers produced for the supplied resource and option bindings. */\nexport type CreateLayoutBuildingBlocksResult<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>\n> = CreateLayoutBuildingBlocks<Resources, Options>;\n\n/**\n * Creates the reusable `composables` and `createRenderState` helpers without\n * introducing an identity wrapper around the layout object itself.\n */\nexport function createLayoutBuildingBlocks<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>\n>(\n arguments_: CreateLayoutBuildingBlocksArguments<Resources, Options>\n): CreateLayoutBuildingBlocksResult<Resources, Options> {\n function composables<const Composables extends ComposableComponents>(\n definition: LayoutComposablesDefinition<Resources, Composables>\n ): LayoutComposablesDefinition<Resources, Composables> {\n return definition;\n }\n\n return {\n composables,\n createRenderState: createRenderStateBuilder(arguments_),\n };\n}\n\n/** Preserves a bound resource tuple for consumers that need to re-export it. */\nexport type BoundResources<\n Resources extends ReadonlyArray<ResourceDefinition>\n> = Resources;\n"],"mappings":";;;;;;;;;;AAKA,MAAa,mBAAmB,OAAO,YAAY;AACnD,MAAa,oBAAoB,OAAO,aAAa;AACrD,MAAa,uBAAuB,OAAO,gBAAgB;AA0C3D,MAAa,4BAA2C,OACtD,qBACF;AAEA,MAAa,wBAAuC,OAClD,iBACF;AAEA,MAAa,2BAA0C,OAAO,IAC5D,uCACF;AAEA,MAAa,uCAAsD,OAAO,IACxE,oDACF;AA2wBA,SAAS,oBACP,OAC0B;CAC1B,OAAO,OAAO,UAAU,aACpB;EAAE,QAAQ;EAAO,OAAO;CAAU,IAClC;AACN;AAEA,SAAS,WACP,YACA;CACA,MAAM,WAAW,GACd,WAAW,SAAS,YAAY,WACnC;CAEA,OAAO,eAAe,UAAU,0BAA0B;EACxD,YAAY;EACZ,OAAO;CACT,CAAC;CAED,OAAO,oBAAoB,UAAU;EACnC,OAAO;EACP,MAAM,WAAW,SAAS;CAC5B,CAAC;AACH;;;;;AA0CA,SAAgB,yBASd,YAOA,aAOA;CACA,SAAS,kBACP,OACA;EACA,MAAM,aAAa,oBAAoB,KAAK;EAC5C,MAAM,QAAQ,eAAe,KAAK;EAElC,OAAO,WACL,QAAQ;GAAE,GAAG;IAAa,cAAc;EAAM,IAAI,UACpD;CACF;CAEA,kBAAkB,aAAa,GAAG,YAAsB;CAExD,kBAAkB,aAAa,UAOjB;EACZ,MAAM,QAAQ,kBAAkB,MAAM,GAAG,IACrC,MAAM,MACN,OAAO,OAAO,MAAM,GAAG,EAAE;EAE7B,IAAI,kBAAkB,KAAK,GAAG;GAC5B,MAAM,YAAY,kBAAkB,KAAK,YAAY;IACnD,IAAI,MAAM,WAAW,SAAS,MAAM,kBAAkB,MAAM;IAC5D,MAAM,SAAS,MAAM,MAAM,kBAAkB,IAAI;IAEjD,OAAO,EACL,SAAS,kBAAkB,UAAU;KACnC,GAAG;KACH,KAAK,WAAW,MAAM;IACxB,CAAC,EACH;GACF,CAAC;GACD,MAAM,OAAO,MAAM,SAAS;GAC5B,MAAM,WAAW,GAAG,OAAO,UAAU;GAErC,OAAO,eAAe,UAAU,0BAA0B,EACxD,OAAO,UACT,CAAC;GAED,OAAO,oBAAoB,UAAU;IAAE,OAAO;IAAW;GAAK,CAAC;EACjE;EAEA,MAAM,SAAS,sBAAsB,KAAK,IACtC,MAAM,6BACN,4BAA4B,MAAM,MAClC,MAAM,IAAI,4BACV;EAEJ,IAAI,CAAC,UAAU,OAAO,OAAO,WAAW,YACtC,MAAM,IAAI,yBACR,2CACF;EAGF,MAAM,SAAS,MAAM,OAAO,UAAU,CAAC;EACvC,MAAM,WACJ,MAAM,OAAO,WACb,OAAO,YACL,OAAO,QAAQ;GACb,GAAG,OAAO,OAAO;GACjB,GAAG,OAAO,YACR,OAAO,QAAQ,OAAO,OAAO,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,UAAU,CAC9D,KACA;IAAE,UAAU,KAAK,eAAe;IAAY,aAAa;GAAY,CACvE,CAAC,CACH;EACF,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,OAAO,CACvC;EAEF,OAAO,WAAW;IACf,cAAc,eAAe,KAAK;GACnC,OAAO,MAAM,SAAS;GACtB,OAAO;IAAE;IAAQ,SAAS;GAAS;GACnC,cAAc,QAAQ,WAAW;IAC/B,MAAM,YAAY,OAAO,cAAc,QAAQ,MAAM,KAAK,CAAC;IAC3D,MAAM,QAAQ,MAAM,cAAc,QAAQ,MAAM,KAAK,CAAC;IAEtD,IAAI,OAAO,UAAU,eAAe,KAAK,OAAO,KAAK,GACnD,MAAM,IAAI,yBACR,kDACF;IAGF,MAAM,UAAU,OAAO,OACrB,CAAC,GACD,GAAG,+BAA+B,SAAS,EAAE,KAC1C,EAAE,YAAY,KACjB,GACA,OAAO,OAAO,MAChB;IACA,MAAM,WAAW,OAAO,YACtB,OAAO,QAAQ,OAAO,EAAE,QAAQ,CAAC,SAAS,OAAO,QAAQ,CAC3D;IACA,MAAM,kBAAkB;KACtB,GAAG;KACH,OAAO;MACL,GAAG,OAAO;MACV,SAAS,OAAO,YACd,OAAO,QAAQ,OAAO,OAAO,WAAW,CAAC,CAAC,EAAE,KACzC,CAAC,KAAK,cAAc,CACnB,KACA;OACE,UAAU,EAAE,aAAa,cACvB,wBAAwB,QAAQ,GAAG,eAAe;OACpD,aAAa;MACf,CACF,CACF,CACF;KACF;IACF;IACA,MAAM,MAAM,sBACV;KACE,OACE,MAAM,QAAQ,sBAAsB,KAAK,IACrC,GAAG,4BAA4B,gBAAgB,IAC/C;KACN,MAAM,OAAO,SAAS;KACtB,mBAAmB,MAAM;IAC3B,GACA;KACE,OAAO,EACL,SAAS,OAAO,YACd,OAAO,KAAK,QAAQ,EAAE,KAAK,QAAQ,CAAC,KAAK,IAAa,CAAC,CACzD,EACF;KACA,uBAAuB;IACzB,CACF;IAEA,OAAO,eAAe,KAAK,yBAAyB,EAClD,OAAO;KAAE,KAAK;KAAO,OAAO;IAAS,EACvC,CAAC;IAED,OAAO;KAAE,GAAG;KAAO;IAAI;GACzB;GACA,QAAQ,MAAM;EAChB,CAAC;CACH;CAEA,kBAAkB,SAChB,UACG;EACH,MAAM,aAAa,oBAAoB,KAAK;EAE5C,MAAM,WAAW;IACd,4BAA4B;IAC3B,GAAG;KACF,cAAc,eAAe,KAAK;GACrC;IACC,cAAc,eAAe,KAAK;EACrC;EACA,MAAM,WAAW,GAAG,WAAW,SAAS,YAAY,SAAS;EAE7D,OAAO,eAAe,UAAU,0BAA0B,EACxD,OAAO,WACT,CAAC;EAED,OAAO,oBAAoB,UAAU;GACnC,OAAO;GACP,MAAM,WAAW,SAAS;EAC5B,CAAC;CACH;CAEA,kBAAkB,QAChB,UACG;EACH,aAAa,SAAS;EACtB,MAAM,UAAU,OAAO,UAAU,aAAa,EAAE,MAAM,MAAM,IAAI;EAChE,MAAM,aAAa,YAAY,cAAc;EAC7C,MAAM,gBAAgB;GACpB,MAAM,QAAQ;GACd,SAAS,WACP,uBAAuB,QAAQ,cAAc,KAAK;GACpD,OAAO;GACP,OAAO,WAAW;EACpB;EACA,MAAM,SAAS,iBAAiB,aAAa;EAC7C,MAAM,YAAY,eAChB;IACG,wBAAwB,QAAQ;IAChC,mBAAmB;IACnB,oBAAoB;IACnB,GAAG;IACH,UAAU,aAAa,oBAAoB,CAAC;GAC9C;IACC,uBAAuB;IACtB,GAAG;IACH,SAAS,OAAe;KACtB,IAAI,OAAO,WAAW,cAAc;KACpC,cAAc,QAAQ;KACtB,WAAW,SAAS,KAAK;IAC3B;GACF;IACC,cAAc,eAAe,KAAK;EACrC,GACA,MACF;EACA,MAAM,SAAS,WAAW,MAAM,OAC9B,oBAAoB,WAAW;GAAE,OAAO;GAAW,MAAM;EAAO,CAAC,CACnE;EACA,aAAa,MAAM,QAAQ,MAAM;EACjC,OAAO;CACT;CAEA,OAAO;AAOT;;AAGA,SAAgB,sBACd,OACwD;CACxD,OACE,OAAO,UAAU,YACjB,UAAU,QACV,6BAA6B;AAEjC;;AAGA,SAAgB,kBACd,OACoD;CACpD,OACE,OAAO,UAAU,YACjB,UAAU,QACV,yBAAyB;AAE7B;;;;;AAMA,eAAsB,uBACpB,QACA,QAAQ,gBAC2B;CACnC,MAAM,cAAc,OAAO,OAAO,MAAM,EAAE,QACvC,UACC,OAAO,UAAU,YACjB,UAAU,QACV,4BAA4B,KAChC;CAEA,IAAI,YAAY,WAAW,GACzB,MAAM,IAAI,6BAA6B,OAAO,YAAY,MAAM;CAGlE,MAAM,aAAa,YAAY,GAAG;CAElC,IAAI,kBAAkB,UAAU,GAAG;EACjC,IAAI,WAAW,WAAW,SAAS,WAAW,kBAAkB,MAAM;EACtE,OAAO,WAAW,kBAAkB,IAAI;CAC1C;CACA,OAAO;AACT"}
1
+ {"version":3,"file":"render-state.mjs","names":[],"sources":["../../src/create-config/render-state.ts"],"sourcesContent":["import {\n normalizeCustomProps,\n type CustomPropsInput,\n type NormalizedCustomProps,\n type CustomPropsObject,\n type ResolveRenderProps,\n} from '../custom-props';\nimport { createLazyLoader, type LazyLoader } from '../lazy/create-lazy-loader';\nimport { inspectLazy, withLazyHandle } from '../lazy/inspection';\nimport type {\n LazyHandle,\n LazyOptions,\n LazyResourceStates,\n} from '../lazy/types';\nimport { LazyResourceModuleShapeError } from '../errors/lazy-resource-error';\nimport type { InspectionStore } from '@jfdevelops/react-layout-devtools-core';\nexport const lazyLoaderSymbol = Symbol('lazyLoader');\nexport const lazyOptionsSymbol = Symbol('lazyOptions');\nexport const lazyInspectionSymbol = Symbol('lazyInspection');\n\nimport {\n getLayoutDebug,\n layoutDebug,\n} from '@jfdevelops/react-layout-devtools-core';\nimport type { MergeContract } from './define-layout';\nimport type { JSX } from 'react';\nimport {\n collectComposablePresetEntries,\n composablePresetMetaKey,\n type MergePresetProps,\n type ComposablePresetMeta,\n} from '@jfdevelops/react-layout-composables';\nimport { LayoutConfigurationError } from '../errors';\nimport {\n createStateComposable,\n withStateComposable,\n type StateComposable,\n type StateComposableHandle,\n} from './state-composable';\n\nimport type {\n ComposableComponents,\n CreateLayoutComposable,\n} from '@jfdevelops/react-layout-composables';\nimport {\n getIncludedPropBehavior,\n type InPropsObject,\n type NormalizedIncludedPropBehavior,\n} from '../props';\nimport type {\n IncludedProps,\n InPropsDefinition,\n LayoutRenderProps,\n MergedLayoutInProps,\n ResolvedIncludedComponentProps,\n ResolvedIncludedProps,\n} from '../props';\nimport type { LayoutResourceKey, ResourceDefinition } from '../resource';\nimport type { LayoutRenderResourcesAccessor } from './define-layout';\n\nexport const deferredRenderStateSymbol: unique symbol = Symbol(\n 'deferredRenderState'\n);\n\nexport const lazyRenderStateSymbol: unique symbol = Symbol(\n 'lazyRenderState'\n);\n\nexport const definedRenderStateSymbol: unique symbol = Symbol.for(\n '@jfdevelops/react-layout/render-state'\n);\n\nexport const definedResourceLayoutComponentSymbol: unique symbol = Symbol.for(\n '@jfdevelops/react-layout/resource-layout-component'\n);\n\n/** Runtime-compatible render-state shape used when inspecting lazy modules. */\nexport type AnyRenderStateDefinition = {\n composables?: (\n create: CreateLayoutComposable<any>,\n states: any\n ) => ComposableComponents;\n props?: {\n include?: Record<string, unknown>;\n custom?: CustomPropsObject;\n };\n render: (props: any, context: any) => JSX.Element;\n state?: string;\n};\n\n/** An inline state whose first render is scheduled through `React.lazy`. */\nexport type DeferredRenderState<Definition extends AnyRenderStateDefinition> = {\n readonly [deferredRenderStateSymbol]: Definition;\n};\n\n/** A state definition supplied by a separately imported module. */\nexport type LazyRenderState<Definition extends AnyRenderStateDefinition> = LazyHandle & {\n readonly [lazyLoaderSymbol]: LazyLoader<AnyRenderStateDefinition>;\n readonly [lazyOptionsSymbol]: LazyOptions & { defaults: () => LazyResourceStates };\n readonly [lazyInspectionSymbol]: ReturnType<typeof inspectLazy>;\n readonly [lazyRenderStateSymbol]: () => Promise<Record<string, unknown>>;\n readonly definition?: Definition;\n};\n\nexport type BuiltinRenderStateName = 'default' | 'Loading' | 'Error' | 'NotFound';\n\n/**\n * State names accepted by `createRenderState`. Built-in states are suggested by\n * autocomplete while any other string still creates a custom compound state.\n */\nexport type RenderStateName =\n | 'default'\n | 'Loading'\n | 'Error'\n | 'NotFound'\n | (string & {});\n\n/** Callback shorthand for a render state with no local configuration. */\nexport type RenderStateCallback = (props: any, context: any) => JSX.Element;\n\n/**\n * Defines state-local composable components with a `create` helper narrowed to\n * the resources bound to the surrounding builder.\n */\nexport type RenderStateComposablesDefinition<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Composables extends ComposableComponents,\n States = {}\n> = (\n create: CreateLayoutComposable<LayoutResourceKey<Resources>>,\n states: States\n) => Composables;\n\n/**\n * Defines reusable layout-level composables while preserving their inferred\n * names, props, and bound resource union.\n */\nexport type LayoutComposablesDefinition<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Composables extends ComposableComponents\n> = RenderStateComposablesDefinition<Resources, Composables>;\n\ntype BuilderRenderComposables<Composables extends ComposableComponents> = [\n keyof Composables\n] extends [never]\n ? undefined\n : Composables;\n\n/** Values available as the second argument of a created state's `render`. */\nexport type RenderStateContext<\n Composables extends ComposableComponents,\n Resources extends ReadonlyArray<ResourceDefinition> = ReadonlyArray<ResourceDefinition>,\n States extends string = string\n> = {\n state: States;\n resources: LayoutRenderResourcesAccessor<Resources>;\n composables: BuilderRenderComposables<Composables>;\n retry?: () => void;\n};\n\n/** Legacy state contracts may omit children; explicit shorthand stays required. */\nexport type OptionalStateChildren<Props, Custom = {}> = Custom extends {\n children: 'required';\n}\n ? Props\n : Omit<Props, 'children'> &\n Partial<Pick<Props, Extract<'children', keyof Props>>>;\n\n/**\n * Resolves one state's custom props and explicitly included option/composable\n * props to the values received by its render callback.\n */\nexport type RenderStateProps<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n IncludeProps extends IncludedProps<\n MergedLayoutInProps<Resources, Options, Composables>\n >,\n CustomProps extends CustomPropsObject,\n> = OptionalStateChildren<\n LayoutRenderProps<Resources, Options, Composables, IncludeProps, CustomProps>,\n CustomProps\n>;\n\ntype TypedRenderStateDefinition<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n State extends string,\n CustomProps extends CustomPropsObject,\n SharedComposables extends ComposableComponents,\n StateComposables extends ComposableComponents,\n IncludeProps extends IncludedProps<\n MergedLayoutInProps<\n Resources,\n Options,\n SharedComposables & StateComposables\n >\n >,\n SharedInclude extends IncludedProps<\n MergedLayoutInProps<Resources, Options, SharedComposables>\n > = {},\n SharedCustom extends CustomPropsObject = {},\n KnownStates extends string = string\n> = {\n composables?: RenderStateComposablesDefinition<Resources, StateComposables>;\n props?: {\n include?: IncludeProps;\n custom?: CustomProps & CustomPropsInput<CustomProps>;\n };\n render: (\n props: RenderStateProps<\n Resources,\n Options,\n SharedComposables & StateComposables,\n MergeContract<SharedInclude, IncludeProps>,\n MergeContract<SharedCustom, CustomProps>\n >,\n context: RenderStateContext<\n SharedComposables & StateComposables,\n Resources,\n KnownStates\n >\n ) => JSX.Element;\n state: State;\n};\n\n/**\n * Callback shorthand for a created state, typed with the bound resources,\n * options, and shared composables.\n */\nexport type TypedRenderStateCallback<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n SharedComposables extends ComposableComponents,\n SharedInclude extends IncludedProps<\n MergedLayoutInProps<Resources, Options, SharedComposables>\n > = {},\n SharedCustom extends CustomPropsObject = {},\n KnownStates extends string = string\n> = (\n props: RenderStateProps<\n Resources,\n Options,\n SharedComposables,\n SharedInclude,\n SharedCustom\n >,\n context: RenderStateContext<SharedComposables, Resources, KnownStates>\n) => JSX.Element;\n\ntype NormalizeRenderStateDefinition<Input> = Input extends LazyRenderState<\n infer Definition\n>\n ? Definition\n : Input extends DeferredRenderState<infer Definition>\n ? Definition\n : Input extends RenderStateCallback\n ? { render: Input; state: 'default' }\n : Input extends AnyRenderStateDefinition\n ? Input\n : never;\n\ntype StateName<Definition> = Definition extends DeferredRenderState<\n infer DeferredDefinition\n>\n ? StateName<DeferredDefinition>\n : Definition extends { state?: infer State extends string }\n ? State\n : 'default';\n\n/**\n * A spreadable state entry keyed by its literal state name. Spreading this into\n * `layout.render` is what creates compound members such as `Users.Loading`.\n */\nexport type RenderStateFragment<\n Definition,\n CallProps extends object = ResolveRenderProps<StateCustomProps<Definition>>\n> = {\n [State in StateName<NormalizeRenderStateDefinition<Definition>>]: Definition;\n} & {\n readonly [definedRenderStateSymbol]: NormalizeRenderStateDefinition<Definition> & CreatedRenderStateInput;\n} & StateComposableHandle<CallProps>;\n\ntype StateCustomProps<Input> = NormalizeStateInput<Input> extends {\n props?: { custom?: infer Props extends CustomPropsObject };\n}\n ? Props\n : {};\n\ntype StateIncludes<Input> = NormalizeStateInput<Input> extends {\n props?: { include?: infer Includes };\n}\n ? Includes\n : {};\n\ntype NormalizeStateInput<Input> = Input extends DeferredRenderState<\n infer Definition\n>\n ? Definition\n : Input extends LazyRenderState<infer Definition>\n ? Definition\n : Input;\n\ntype StateLocalComposables<Input> = NormalizeStateInput<Input> extends {\n composables?: (\n ...args: any[]\n ) => infer Components extends ComposableComponents;\n}\n ? Components\n : {};\n\n/**\n * A composables callback cannot infer its own return value into its arguments.\n * Preserve the declared call-site contract for props supplied by local presets,\n * even when their value types are not yet available in the callback context.\n */\ntype UnresolvedStateComponentProps<Props, Includes> = {\n [Key in Exclude<keyof Includes, keyof Props> as NormalizedIncludedPropBehavior<Includes[Key]> extends {\n visibility: 'required';\n passthrough: 'component';\n }\n ? Key\n : never]: unknown;\n} & {\n [Key in Exclude<keyof Includes, keyof Props> as NormalizedIncludedPropBehavior<Includes[Key]> extends\n | 'optional'\n | { visibility: 'optional'; passthrough: 'component' }\n ? Key\n : never]?: unknown;\n};\n\ntype StateComponentProps<\n Props extends InPropsObject,\n Includes\n> = ResolvedIncludedComponentProps<\n Props,\n Pick<\n Includes,\n Extract<keyof Includes, keyof Props>\n > extends infer Known extends IncludedProps<Props>\n ? Known\n : {}\n> &\n UnresolvedStateComponentProps<Props, Includes>;\n\n/** Call-site props of a referenced state; creation-time options stay bound. */\nexport type RenderStateCallProps<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n Input,\n> = OptionalStateChildren<\n ResolveRenderProps<StateCustomProps<Input>> &\n StateComponentProps<\n MergedLayoutInProps<\n Resources,\n Options,\n Composables & StateLocalComposables<Input>\n >,\n StateIncludes<Input>\n >,\n StateCustomProps<Input>\n>;\n\n/** Typed references to all the states declared in an inline render map. */\nexport type RenderStateReferences<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n States\n> = {\n readonly [State in keyof States & string]: StateComposable<\n RenderStateCallProps<Resources, Options, Composables, States[State]>\n >;\n};\n\ntype BoundRenderStateFragment<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Composables extends ComposableComponents,\n Definition\n> = RenderStateFragment<\n Definition,\n RenderStateCallProps<Resources, Options, Composables, Definition>\n>;\n\ntype DefinedRenderStateFromModule<Module> = Extract<\n Module[keyof Module],\n { readonly [definedRenderStateSymbol]: AnyRenderStateDefinition }\n>[typeof definedRenderStateSymbol];\n\n/** Wraps a state definition in the deferred marker when `Deferred` is `true`. */\ntype RenderStateEntry<\n Definition,\n Deferred extends boolean\n> = Deferred extends true\n ? DeferredRenderState<NormalizeRenderStateDefinition<Definition>>\n : Definition & CreatedRenderStateInput;\n\ndeclare const createdRenderStateType: unique symbol;\n/** Distinguishes independently typed states from inline contextual definitions. */\nexport type CreatedRenderStateInput = {\n readonly [createdRenderStateType]: true;\n};\n\n/**\n * Overloads shared by `createRenderState` and `createRenderState.defer`. Each\n * accepts a full definition, a definition without `state`, or a render\n * callback; `Deferred` decides whether the returned entry is deferred.\n */\nexport interface RenderStateOverloads<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n SharedComposables extends ComposableComponents,\n Deferred extends boolean,\n SharedInclude extends IncludedProps<\n MergedLayoutInProps<Resources, Options, SharedComposables>\n > = {},\n SharedCustom extends CustomPropsObject = {},\n KnownStates extends string = string\n> {\n <\n const State extends RenderStateName,\n const CustomProps extends CustomPropsObject = {},\n const StateComposables extends ComposableComponents = {},\n const IncludeProps extends IncludedProps<\n MergedLayoutInProps<\n Resources,\n Options,\n SharedComposables & StateComposables\n >\n > = {}\n >(\n definition: TypedRenderStateDefinition<\n Resources,\n Options,\n State,\n CustomProps,\n SharedComposables,\n StateComposables,\n IncludeProps,\n SharedInclude,\n SharedCustom,\n KnownStates\n >\n ): BoundRenderStateFragment<\n Resources,\n Options,\n SharedComposables,\n RenderStateEntry<\n TypedRenderStateDefinition<\n Resources,\n Options,\n State,\n CustomProps,\n SharedComposables,\n StateComposables,\n IncludeProps,\n SharedInclude,\n SharedCustom,\n KnownStates\n >,\n Deferred\n >\n >;\n <\n const CustomProps extends CustomPropsObject = {},\n const StateComposables extends ComposableComponents = {},\n const IncludeProps extends IncludedProps<\n MergedLayoutInProps<\n Resources,\n Options,\n SharedComposables & StateComposables\n >\n > = {}\n >(\n definition: Omit<\n TypedRenderStateDefinition<\n Resources,\n Options,\n 'default',\n CustomProps,\n SharedComposables,\n StateComposables,\n IncludeProps,\n SharedInclude,\n SharedCustom,\n KnownStates\n >,\n 'state'\n >\n ): BoundRenderStateFragment<\n Resources,\n Options,\n SharedComposables,\n RenderStateEntry<\n TypedRenderStateDefinition<\n Resources,\n Options,\n 'default',\n CustomProps,\n SharedComposables,\n StateComposables,\n IncludeProps,\n SharedInclude,\n SharedCustom,\n KnownStates\n >,\n Deferred\n >\n >;\n (\n render: TypedRenderStateCallback<\n Resources,\n Options,\n SharedComposables,\n SharedInclude,\n SharedCustom,\n KnownStates\n >\n ): BoundRenderStateFragment<\n Resources,\n Options,\n SharedComposables,\n RenderStateEntry<\n TypedRenderStateCallback<\n Resources,\n Options,\n SharedComposables,\n SharedInclude,\n SharedCustom,\n KnownStates\n >,\n Deferred\n >\n >;\n}\n\ntype RenderStateReference = (\n | { readonly [definedRenderStateSymbol]: AnyRenderStateDefinition }\n | LazyRenderState<AnyRenderStateDefinition>\n) &\n StateComposableHandle<any>;\n\ntype ReferenceDefinition<Ref extends RenderStateReference> =\n Ref extends LazyRenderState<infer Definition>\n ? Definition\n : Ref extends {\n readonly [definedRenderStateSymbol]: infer Definition extends AnyRenderStateDefinition;\n }\n ? Definition\n : never;\n\ntype FromStateEntry<\n Ref extends RenderStateReference,\n Definition extends AnyRenderStateDefinition\n> = Ref extends LazyRenderState<AnyRenderStateDefinition>\n ? LazyRenderState<Definition>\n : Extract<\n Ref[Exclude<keyof Ref, 'asComposable' | typeof definedRenderStateSymbol>],\n LazyRenderState<AnyRenderStateDefinition>\n > extends never\n ? Definition & CreatedRenderStateInput\n : LazyRenderState<Definition>;\n\ntype ReferenceSchemas<Ref extends RenderStateReference> = NormalizedCustomProps<StateCustomProps<\n ReferenceDefinition<Ref>\n>> &\n MergePresetProps<StateLocalComposables<ReferenceDefinition<Ref>>>;\n\ntype DefaultReferenceIncludes<\n Ref extends RenderStateReference,\n CustomProps\n> = Omit<\n StateIncludes<ReferenceDefinition<Ref>>,\n keyof CustomProps | keyof StateCustomProps<ReferenceDefinition<Ref>>\n> & {\n [Key in Exclude<\n keyof StateCustomProps<ReferenceDefinition<Ref>>,\n keyof CustomProps\n >]: {\n required: StateCustomProps<ReferenceDefinition<Ref>>[Key] extends { visibility: 'optional' } ? false : true;\n suppliedVia: 'component';\n };\n};\n\ntype ReferenceIncludes<\n Ref extends RenderStateReference,\n CustomProps,\n Include\n> = Include extends object\n ? Include\n : DefaultReferenceIncludes<Ref, CustomProps>;\n\ntype FromStateInProps<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Shared extends ComposableComponents,\n Ref extends RenderStateReference,\n Local extends ComposableComponents\n> = MergedLayoutInProps<\n Resources,\n Options,\n Shared & StateLocalComposables<ReferenceDefinition<Ref>> & Local\n> &\n NormalizedCustomProps<StateCustomProps<\n ReferenceDefinition<Ref>\n >> extends infer Props extends InPropsObject\n ? Props\n : {};\n\ntype SelectedReferenceSchemas<Ref extends RenderStateReference, Include> = Pick<\n ReferenceSchemas<Ref>,\n Extract<keyof Include, keyof ReferenceSchemas<Ref>>\n> extends infer Selected extends InPropsObject\n ? Selected\n : {};\n\ntype ReferenceCarriedProps<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Shared extends ComposableComponents,\n Ref extends RenderStateReference,\n Include\n> = Pick<\n FromStateInProps<Resources, Options, Shared, Ref, {}>,\n Extract<\n keyof Include,\n keyof FromStateInProps<Resources, Options, Shared, Ref, {}>\n >\n> extends infer Selected extends InPropsObject\n ? ResolveRenderProps<Selected>\n : {};\n\ntype ReferenceRenderProps<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Shared extends ComposableComponents,\n Ref extends RenderStateReference\n> = RenderStateProps<\n Resources,\n Options,\n Shared & StateLocalComposables<ReferenceDefinition<Ref>>,\n StateIncludes<\n ReferenceDefinition<Ref>\n > extends infer Include extends IncludedProps<\n MergedLayoutInProps<\n Resources,\n Options,\n Shared & StateLocalComposables<ReferenceDefinition<Ref>>\n >\n >\n ? Include\n : {},\n StateCustomProps<ReferenceDefinition<Ref>>\n>;\n\ntype FromStateComposables<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Shared extends ComposableComponents,\n Ref extends RenderStateReference,\n Local extends ComposableComponents,\n Include\n> = Local & {\n Ref: StateComposable<\n ReferenceRenderProps<Resources, Options, Shared, Ref>,\n Extract<\n keyof ReferenceCarriedProps<Resources, Options, Shared, Ref, Include>,\n keyof ReferenceRenderProps<Resources, Options, Shared, Ref>\n >\n > & {\n [composablePresetMetaKey]: ComposablePresetMeta<\n SelectedReferenceSchemas<Ref, Include>\n >;\n };\n};\n\ntype FromStateDefinition<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Shared extends ComposableComponents,\n Ref extends RenderStateReference,\n State extends string,\n CustomProps extends CustomPropsObject,\n Local extends ComposableComponents,\n Include\n> = {\n state: State;\n props?: {\n custom?: CustomProps & CustomPropsInput<CustomProps>;\n include?: ReferenceIncludes<Ref, CustomProps, Include>;\n };\n composables: RenderStateComposablesDefinition<\n Resources,\n FromStateComposables<\n Resources,\n Options,\n Shared,\n Ref,\n Local,\n ReferenceIncludes<Ref, CustomProps, Include>\n >\n >;\n render: (\n props: OptionalStateChildren<ResolveRenderProps<CustomProps> &\n ResolvedIncludedProps<\n FromStateInProps<Resources, Options, Shared, Ref, Local>,\n ReferenceIncludes<\n Ref,\n CustomProps,\n Include\n > extends infer Selected extends IncludedProps<\n FromStateInProps<Resources, Options, Shared, Ref, Local>\n >\n ? Selected\n : {}\n >, CustomProps>,\n context: RenderStateContext<\n Shared &\n FromStateComposables<\n Resources,\n Options,\n Shared,\n Ref,\n Local,\n ReferenceIncludes<Ref, CustomProps, Include>\n >,\n Resources,\n string\n >\n ) => JSX.Element;\n};\n\n/** Creates a state with inherited props and a composable reference to its source. */\nexport type CreateRenderStateFromState<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n Shared extends ComposableComponents\n> = <\n const Ref extends RenderStateReference,\n const State extends RenderStateName = 'default',\n const CustomProps extends CustomPropsObject = {},\n const Local extends ComposableComponents = {},\n const Include extends\n | IncludedProps<FromStateInProps<Resources, Options, Shared, Ref, Local>>\n | undefined = undefined\n>(definition: {\n ref: Ref;\n /** Defer Ref rendering through React.lazy. Defaults to false. */\n lazy?: boolean;\n state?: State;\n props?: {\n custom?: CustomProps & CustomPropsInput<CustomProps>;\n include?: Include &\n Record<\n Exclude<\n keyof Include,\n keyof FromStateInProps<Resources, Options, Shared, Ref, Local>\n >,\n never\n >;\n };\n composables?: (\n create: CreateLayoutComposable<LayoutResourceKey<Resources>>,\n states: {}\n ) => Local & { Ref?: never };\n render: FromStateDefinition<\n Resources,\n Options,\n Shared,\n Ref,\n State,\n CustomProps,\n Local,\n Include\n >['render'];\n}) => BoundRenderStateFragment<\n Resources,\n Options,\n Shared,\n FromStateEntry<\n Ref,\n FromStateDefinition<\n Resources,\n Options,\n Shared,\n Ref,\n State,\n CustomProps,\n Local,\n Include\n >\n >\n>;\n\n/**\n * Creates independently typed render-state fragments.\n *\n * - Calling it directly creates an eager state.\n * - `.defer(...)` schedules an inline definition through `React.lazy`, but\n * does not create a separate JavaScript chunk.\n * - `.lazy(() => import(...))` imports a complete named state definition as a\n * separate chunk.\n * - `.fromState({ ref, ... })` inherits a state's props and exposes it as `Ref`.\n */\nexport interface CreateRenderState<\n Resources extends ReadonlyArray<ResourceDefinition> = ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources> = {},\n SharedComposables extends ComposableComponents = {},\n SharedInclude extends IncludedProps<\n MergedLayoutInProps<Resources, Options, SharedComposables>\n > = {},\n SharedCustom extends CustomPropsObject = {}\n> extends RenderStateOverloads<\n Resources,\n Options,\n SharedComposables,\n false,\n SharedInclude,\n SharedCustom\n > {\n /** Bind the full calling-state union for a shell created before its layout. */\n forStates<const Names extends readonly [string, ...string[]]>(\n ...states: Names\n ): RenderStateOverloads<\n Resources,\n Options,\n SharedComposables,\n false,\n SharedInclude,\n SharedCustom,\n Names[number]\n >;\n fromState: CreateRenderStateFromState<Resources, Options, SharedComposables>;\n defer: RenderStateOverloads<\n Resources,\n Options,\n SharedComposables,\n true,\n SharedInclude,\n SharedCustom\n >;\n lazy<Module extends Record<string, unknown>>(\n load: (() => Promise<Module>) | LazyOptions<Module>\n ): LazyRenderState<DefinedRenderStateFromModule<Module>> &\n StateComposableHandle<\n RenderStateCallProps<\n Resources,\n Options,\n SharedComposables,\n DefinedRenderStateFromModule<Module>\n >\n >;\n}\n\nfunction normalizeDefinition(\n input: AnyRenderStateDefinition | RenderStateCallback\n): AnyRenderStateDefinition {\n return typeof input === 'function'\n ? { render: input, state: 'default' }\n : input;\n}\n\nfunction toFragment<Definition extends AnyRenderStateDefinition>(\n definition: Definition\n) {\n const fragment = {\n [definition.state ?? 'default']: definition,\n } as RenderStateFragment<Definition>;\n\n Object.defineProperty(fragment, definedRenderStateSymbol, {\n enumerable: false,\n value: definition,\n });\n\n return withStateComposable(fragment, {\n input: definition,\n name: definition.state ?? 'default',\n });\n}\n\n/** Inputs used internally to bind resource and option types to a state builder. */\nexport type CreateRenderStateBuilderArguments<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n SharedComposables extends ComposableComponents = {},\n SharedInclude extends IncludedProps<\n MergedLayoutInProps<Resources, Options, SharedComposables>\n > = {},\n SharedCustom extends CustomPropsObject = {}\n> = {\n props?: { include?: SharedInclude; custom?: SharedCustom };\n /** Shared composables whose components and preset props every state can use. */\n composables?: LayoutComposablesDefinition<Resources, SharedComposables>;\n /** Option props that individual states can expose through `props.include`. */\n options: Options;\n /** Resources used to constrain composable names and resource-specific props. */\n resources: Resources;\n};\n\n/** The state factory produced for a particular resource and option definition. */\nexport type CreateRenderStateBuilderResult<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n SharedComposables extends ComposableComponents = {},\n SharedInclude extends IncludedProps<\n MergedLayoutInProps<Resources, Options, SharedComposables>\n > = {},\n SharedCustom extends CustomPropsObject = {}\n> = CreateRenderState<\n Resources,\n Options,\n SharedComposables,\n SharedInclude,\n SharedCustom\n>;\n\n/**\n * Creates a state factory whose `props.include` keys are constrained by the\n * supplied resources and options.\n */\nexport function createRenderStateBuilder<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>,\n SharedComposables extends ComposableComponents = {},\n SharedInclude extends IncludedProps<\n MergedLayoutInProps<Resources, Options, SharedComposables>\n > = {},\n SharedCustom extends CustomPropsObject = {}\n>(\n _arguments: CreateRenderStateBuilderArguments<\n Resources,\n Options,\n SharedComposables,\n SharedInclude,\n SharedCustom\n >,\n environment?: { store: InspectionStore; defaults: () => LazyResourceStates; onLazy?: () => void }\n): CreateRenderStateBuilderResult<\n Resources,\n Options,\n SharedComposables,\n SharedInclude,\n SharedCustom\n> {\n function createRenderState(\n input: AnyRenderStateDefinition | RenderStateCallback\n ) {\n const definition = normalizeDefinition(input);\n const debug = getLayoutDebug(input);\n\n return toFragment(\n debug ? { ...definition, [layoutDebug]: debug } : definition\n );\n }\n\n createRenderState.forStates = (..._states: string[]) => createRenderState;\n\n createRenderState.fromState = (input: {\n ref: RenderStateReference;\n lazy?: boolean;\n state?: string;\n props?: AnyRenderStateDefinition['props'];\n composables?: AnyRenderStateDefinition['composables'];\n render: AnyRenderStateDefinition['render'];\n }): object => {\n const entry = isLazyRenderState(input.ref)\n ? input.ref\n : Object.values(input.ref)[0];\n\n if (isLazyRenderState(entry)) {\n const lazyState = createRenderState.lazy(async () => {\n if (entry.status === 'error') entry[lazyLoaderSymbol].reset();\n const source = await entry[lazyLoaderSymbol].get();\n\n return {\n Derived: createRenderState.fromState({\n ...input,\n ref: toFragment(source),\n }),\n };\n });\n const name = input.state ?? 'default';\n const fragment = { [name]: lazyState };\n\n Object.defineProperty(fragment, definedRenderStateSymbol, {\n value: lazyState,\n });\n\n return withStateComposable(fragment, { input: lazyState, name });\n }\n\n const source = isDeferredRenderState(entry)\n ? entry[deferredRenderStateSymbol]\n : definedRenderStateSymbol in input.ref\n ? input.ref[definedRenderStateSymbol]\n : undefined;\n\n if (!source || typeof source.render !== 'function') {\n throw new LayoutConfigurationError(\n 'fromState requires a created render state'\n );\n }\n\n const custom = input.props?.custom ?? {};\n const includes =\n input.props?.include ??\n Object.fromEntries(\n Object.entries({\n ...source.props?.include,\n ...Object.fromEntries(\n Object.entries(source.props?.custom ?? {}).map(([key, prop]) => [\n key,\n { required: typeof prop === 'string' ? prop === 'required' : prop.visibility !== 'optional', suppliedVia: 'component' },\n ])\n ),\n }).filter(([key]) => !(key in custom))\n );\n\n return toFragment({\n [layoutDebug]: getLayoutDebug(input),\n state: input.state ?? 'default',\n props: { custom, include: includes },\n composables: (create, states) => {\n const inherited = source.composables?.(create, states) ?? {};\n const local = input.composables?.(create, states) ?? {};\n\n if (Object.prototype.hasOwnProperty.call(local, 'Ref')) {\n throw new LayoutConfigurationError(\n 'Composable name \"Ref\" is reserved by fromState'\n );\n }\n\n const schemas = Object.assign(\n {},\n ...collectComposablePresetEntries(inherited).map(\n ({ props }) => props\n ),\n normalizeCustomProps(source.props?.custom ?? {})\n ) as InPropsObject;\n const selected = Object.fromEntries(\n Object.entries(schemas).filter(([key]) => key in includes)\n );\n const referenceSource = {\n ...source,\n props: {\n ...source.props,\n include: Object.fromEntries(\n Object.entries(source.props?.include ?? {}).map(\n ([key, behavior]) => [\n key,\n {\n required: !(behavior === 'optional' ||\n getIncludedPropBehavior(behavior)?.visibility === 'optional'),\n suppliedVia: 'component',\n },\n ]\n )\n ),\n },\n };\n const Ref = createStateComposable(\n {\n input:\n input.lazy || isDeferredRenderState(entry)\n ? { [deferredRenderStateSymbol]: referenceSource }\n : referenceSource,\n name: source.state ?? 'default',\n fallbackStateName: input.state,\n },\n {\n props: {\n include: Object.fromEntries(\n Object.keys(includes).map((key) => [key, true as const])\n ),\n },\n normalizeIncludedKeys: true,\n }\n );\n\n Object.defineProperty(Ref, composablePresetMetaKey, {\n value: { key: 'Ref', props: selected },\n });\n\n return { ...local, Ref };\n },\n render: input.render,\n });\n };\n\n createRenderState.defer = (\n input: AnyRenderStateDefinition | RenderStateCallback\n ) => {\n const definition = normalizeDefinition(input);\n\n const deferred = {\n [deferredRenderStateSymbol]: {\n ...definition,\n [layoutDebug]: getLayoutDebug(input),\n },\n [layoutDebug]: getLayoutDebug(input),\n };\n const fragment = { [definition.state ?? 'default']: deferred };\n\n Object.defineProperty(fragment, definedRenderStateSymbol, {\n value: definition,\n });\n\n return withStateComposable(fragment, {\n input: deferred,\n name: definition.state ?? 'default',\n });\n };\n\n createRenderState.lazy = (\n input: (() => Promise<Record<string, unknown>>) | LazyOptions\n ) => {\n environment?.onLazy?.();\n const options = typeof input === 'function' ? { load: input } : input;\n const inspection = inspectLazy('Render state');\n const loaderOptions = {\n load: options.load,\n select: (module: Record<string, unknown>) =>\n findDefinedRenderState(module, loaderOptions.label),\n label: 'Render state',\n hooks: inspection.hooks,\n };\n const loader = createLazyLoader(loaderOptions);\n const lazyState = withLazyHandle(\n {\n [lazyRenderStateSymbol]: options.load,\n [lazyLoaderSymbol]: loader,\n [lazyOptionsSymbol]: {\n ...options,\n defaults: environment?.defaults ?? (() => ({})),\n },\n [lazyInspectionSymbol]: {\n ...inspection,\n setLabel(value: string) {\n if (loader.status !== 'unresolved') return;\n loaderOptions.label = value;\n inspection.setLabel(value);\n },\n },\n [layoutDebug]: getLayoutDebug(input),\n },\n loader\n );\n const result = inspection.store.attach(\n withStateComposable(lazyState, { input: lazyState, name: 'lazy' })\n );\n environment?.store.connect(result);\n return result;\n };\n\n return createRenderState as unknown as CreateRenderStateBuilderResult<\n Resources,\n Options,\n SharedComposables,\n SharedInclude,\n SharedCustom\n >;\n}\n\n/** Type guard for states created with `createRenderState.defer(...)`. */\nexport function isDeferredRenderState(\n value: unknown\n): value is DeferredRenderState<AnyRenderStateDefinition> {\n return (\n typeof value === 'object' &&\n value !== null &&\n deferredRenderStateSymbol in value\n );\n}\n\n/** Type guard for states created with `createRenderState.lazy(...)`. */\nexport function isLazyRenderState(\n value: unknown\n): value is LazyRenderState<AnyRenderStateDefinition> {\n return (\n typeof value === 'object' &&\n value !== null &&\n lazyRenderStateSymbol in value\n );\n}\n\n/**\n * Resolves the single state exported by a lazy module, including derived lazy\n * states. Throws when a module exports none or more than one.\n */\nexport async function findDefinedRenderState(\n module: Record<string, unknown>,\n label = 'Render state'\n): Promise<AnyRenderStateDefinition> {\n const definitions = Object.values(module).filter(\n (value) =>\n typeof value === 'object' &&\n value !== null &&\n definedRenderStateSymbol in value\n ) as Array<Record<typeof definedRenderStateSymbol, AnyRenderStateDefinition>>;\n\n if (definitions.length !== 1) {\n throw new LazyResourceModuleShapeError(label, definitions.length);\n }\n\n const definition = definitions[0][definedRenderStateSymbol];\n\n if (isLazyRenderState(definition)) {\n if (definition.status === 'error') definition[lazyLoaderSymbol].reset();\n return definition[lazyLoaderSymbol].get();\n }\n return definition;\n}\n\n/** Identity helper that contextually types a reusable composables callback. */\nexport type DefineLayoutComposables<\n Resources extends ReadonlyArray<ResourceDefinition>\n> = <const Composables extends ComposableComponents>(\n definition: LayoutComposablesDefinition<Resources, Composables>\n) => LayoutComposablesDefinition<Resources, Composables>;\n\n/** Public cross-file building blocks returned by a defined layout builder. */\nexport type CreateLayoutBuildingBlocks<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>\n> = {\n composables: DefineLayoutComposables<Resources>;\n createRenderState: CreateRenderState<Resources, Options>;\n};\n\n/** Resource and option bindings used to create layout building blocks. */\nexport type CreateLayoutBuildingBlocksArguments<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>\n> = CreateRenderStateBuilderArguments<Resources, Options>;\n\n/** Layout helpers produced for the supplied resource and option bindings. */\nexport type CreateLayoutBuildingBlocksResult<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>\n> = CreateLayoutBuildingBlocks<Resources, Options>;\n\n/**\n * Creates the reusable `composables` and `createRenderState` helpers without\n * introducing an identity wrapper around the layout object itself.\n */\nexport function createLayoutBuildingBlocks<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Options extends InPropsDefinition<Resources>\n>(\n arguments_: CreateLayoutBuildingBlocksArguments<Resources, Options>\n): CreateLayoutBuildingBlocksResult<Resources, Options> {\n function composables<const Composables extends ComposableComponents>(\n definition: LayoutComposablesDefinition<Resources, Composables>\n ): LayoutComposablesDefinition<Resources, Composables> {\n return definition;\n }\n\n return {\n composables,\n createRenderState: createRenderStateBuilder(arguments_),\n };\n}\n\n/** Preserves a bound resource tuple for consumers that need to re-export it. */\nexport type BoundResources<\n Resources extends ReadonlyArray<ResourceDefinition>\n> = Resources;\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- const require_render_state_context = require('./render-state-context.cjs');
2
1
  const require_layout_configuration_error = require('../errors/layout-configuration-error.cjs');
2
+ const require_render_state_context = require('./render-state-context.cjs');
3
3
  const require_capitalize = require('../utils/capitalize.cjs');
4
4
  let react = require("react");
5
5
 
@@ -1,5 +1,5 @@
1
- import { ReferencedRenderStateContext, RenderStateNameContext } from "./render-state-context.mjs";
2
1
  import { LayoutConfigurationError } from "../errors/layout-configuration-error.mjs";
2
+ import { ReferencedRenderStateContext, RenderStateNameContext } from "./render-state-context.mjs";
3
3
  import { capitalize } from "../utils/capitalize.mjs";
4
4
  import { createContext, createElement, useContext } from "react";
5
5
 
@@ -0,0 +1,15 @@
1
+ const require_layout_configuration_error = require('./errors/layout-configuration-error.cjs');
2
+ let _jfdevelops_react_layout_validator = require("@jfdevelops/react-layout-validator");
3
+
4
+ //#region src/custom-props.ts
5
+ function normalizeCustomProps(props) {
6
+ return Object.fromEntries(Object.entries(props).map(([key, definition]) => {
7
+ if (typeof definition !== "string") return [key, definition];
8
+ if (key !== "children" || definition !== "required") throw new require_layout_configuration_error.LayoutConfigurationError("Only custom.children accepts the required shorthand.");
9
+ return [key, _jfdevelops_react_layout_validator.createProp.component({ type: "ReactNode" })];
10
+ }));
11
+ }
12
+
13
+ //#endregion
14
+ exports.normalizeCustomProps = normalizeCustomProps;
15
+ //# sourceMappingURL=custom-props.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-props.cjs","names":["LayoutConfigurationError","createProp"],"sources":["../src/custom-props.ts"],"sourcesContent":["import {\n createProp,\n type AnyBuiltPropDefinition,\n type ResolveProps,\n type ResolvedBuiltPropShape,\n} from '@jfdevelops/react-layout-validator';\nimport type { WithChildren } from '@jfdevelops/react-layout-composables';\nimport { LayoutConfigurationError } from './errors';\n\nexport type ChildrenRequirement = 'required';\nexport type CustomPropsObject = Record<\n string,\n AnyBuiltPropDefinition | ChildrenRequirement\n> & {\n children?: AnyBuiltPropDefinition | ChildrenRequirement;\n};\n\n/** String requirements are reserved for the built-in children slot. */\nexport type CustomPropsInput<Props extends CustomPropsObject> = {\n [Key in keyof Props]: Key extends 'children'\n ? Props[Key]\n : Extract<Props[Key], AnyBuiltPropDefinition>;\n};\n\ntype RequiredChildren = ReturnType<typeof createProp.component<'ReactNode'>>;\nexport type NormalizedCustomProps<Props extends CustomPropsObject> = {\n [Key in keyof Props]: Props[Key] extends AnyBuiltPropDefinition\n ? Props[Key]\n : Key extends 'children'\n ? RequiredChildren\n : never;\n};\n\nexport type ResolveRenderProps<Props extends CustomPropsObject> = WithChildren<\n ResolveProps<NormalizedCustomProps<Props>>\n>;\nexport type ResolveRenderPropsAsDefined<Props extends CustomPropsObject> =\n WithChildren<ResolvedBuiltPropShape<NormalizedCustomProps<Props>>>;\n\nexport function normalizeCustomProps<Props extends CustomPropsObject>(\n props: Props,\n) {\n return Object.fromEntries(\n Object.entries(props).map(([key, definition]) => {\n if (typeof definition !== 'string') return [key, definition];\n if (key !== 'children' || definition !== 'required') {\n throw new LayoutConfigurationError(\n 'Only custom.children accepts the required shorthand.',\n );\n }\n const children = createProp.component({ type: 'ReactNode' });\n return [key, children];\n }),\n ) as NormalizedCustomProps<Props>;\n}\n"],"mappings":";;;;AAuCA,SAAgB,qBACd,OACA;CACA,OAAO,OAAO,YACZ,OAAO,QAAQ,KAAK,EAAE,KAAK,CAAC,KAAK,gBAAgB;EAC/C,IAAI,OAAO,eAAe,UAAU,OAAO,CAAC,KAAK,UAAU;EAC3D,IAAI,QAAQ,cAAc,eAAe,YACvC,MAAM,IAAIA,4DACR,sDACF;EAGF,OAAO,CAAC,KADSC,8CAAW,UAAU,EAAE,MAAM,YAAY,CACtC,CAAC;CACvB,CAAC,CACH;AACF"}
@@ -0,0 +1,17 @@
1
+ import { WithChildren } from "@jfdevelops/react-layout-composables";
2
+ import { AnyBuiltPropDefinition, ResolveProps, ResolvedBuiltPropShape, createProp } from "@jfdevelops/react-layout-validator";
3
+
4
+ //#region src/custom-props.d.ts
5
+ type ChildrenRequirement = 'required';
6
+ type CustomPropsObject = Record<string, AnyBuiltPropDefinition | ChildrenRequirement> & {
7
+ children?: AnyBuiltPropDefinition | ChildrenRequirement;
8
+ };
9
+ /** String requirements are reserved for the built-in children slot. */
10
+ type CustomPropsInput<Props extends CustomPropsObject> = { [Key in keyof Props]: Key extends 'children' ? Props[Key] : Extract<Props[Key], AnyBuiltPropDefinition> };
11
+ type RequiredChildren = ReturnType<typeof createProp.component<'ReactNode'>>;
12
+ type NormalizedCustomProps<Props extends CustomPropsObject> = { [Key in keyof Props]: Props[Key] extends AnyBuiltPropDefinition ? Props[Key] : Key extends 'children' ? RequiredChildren : never };
13
+ type ResolveRenderProps<Props extends CustomPropsObject> = WithChildren<ResolveProps<NormalizedCustomProps<Props>>>;
14
+ type ResolveRenderPropsAsDefined<Props extends CustomPropsObject> = WithChildren<ResolvedBuiltPropShape<NormalizedCustomProps<Props>>>;
15
+ //#endregion
16
+ export { ChildrenRequirement, CustomPropsInput, CustomPropsObject, NormalizedCustomProps, ResolveRenderProps, ResolveRenderPropsAsDefined };
17
+ //# sourceMappingURL=custom-props.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-props.d.cts","names":[],"sources":["../src/custom-props.ts"],"mappings":";;;;KASY,mBAAA;AAAA,KACA,iBAAA,GAAoB,MAAA,SAE9B,sBAAA,GAAyB,mBAAA;EAEzB,QAAA,GAAW,sBAAA,GAAyB,mBAAA;AAAA;;KAI1B,gBAAA,eAA+B,iBAAA,oBAC3B,KAAA,GAAQ,GAAA,sBAClB,KAAA,CAAM,GAAA,IACN,OAAA,CAAQ,KAAA,CAAM,GAAA,GAAM,sBAAA;AAAA,KAGrB,gBAAA,GAAmB,UAAU,QAAQ,UAAA,CAAW,SAAA;AAAA,KACzC,qBAAA,eAAoC,iBAAA,oBAChC,KAAA,GAAQ,KAAA,CAAM,GAAA,UAAa,sBAAA,GACrC,KAAA,CAAM,GAAA,IACN,GAAA,sBACA,gBAAA;AAAA,KAIM,kBAAA,eAAiC,iBAAA,IAAqB,YAAA,CAChE,YAAA,CAAa,qBAAA,CAAsB,KAAA;AAAA,KAEzB,2BAAA,eAA0C,iBAAA,IACpD,YAAA,CAAa,sBAAA,CAAuB,qBAAA,CAAsB,KAAA"}
@@ -0,0 +1,17 @@
1
+ import { WithChildren } from "@jfdevelops/react-layout-composables";
2
+ import { AnyBuiltPropDefinition, ResolveProps, ResolvedBuiltPropShape, createProp } from "@jfdevelops/react-layout-validator";
3
+
4
+ //#region src/custom-props.d.ts
5
+ type ChildrenRequirement = 'required';
6
+ type CustomPropsObject = Record<string, AnyBuiltPropDefinition | ChildrenRequirement> & {
7
+ children?: AnyBuiltPropDefinition | ChildrenRequirement;
8
+ };
9
+ /** String requirements are reserved for the built-in children slot. */
10
+ type CustomPropsInput<Props extends CustomPropsObject> = { [Key in keyof Props]: Key extends 'children' ? Props[Key] : Extract<Props[Key], AnyBuiltPropDefinition> };
11
+ type RequiredChildren = ReturnType<typeof createProp.component<'ReactNode'>>;
12
+ type NormalizedCustomProps<Props extends CustomPropsObject> = { [Key in keyof Props]: Props[Key] extends AnyBuiltPropDefinition ? Props[Key] : Key extends 'children' ? RequiredChildren : never };
13
+ type ResolveRenderProps<Props extends CustomPropsObject> = WithChildren<ResolveProps<NormalizedCustomProps<Props>>>;
14
+ type ResolveRenderPropsAsDefined<Props extends CustomPropsObject> = WithChildren<ResolvedBuiltPropShape<NormalizedCustomProps<Props>>>;
15
+ //#endregion
16
+ export { ChildrenRequirement, CustomPropsInput, CustomPropsObject, NormalizedCustomProps, ResolveRenderProps, ResolveRenderPropsAsDefined };
17
+ //# sourceMappingURL=custom-props.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-props.d.mts","names":[],"sources":["../src/custom-props.ts"],"mappings":";;;;KASY,mBAAA;AAAA,KACA,iBAAA,GAAoB,MAAA,SAE9B,sBAAA,GAAyB,mBAAA;EAEzB,QAAA,GAAW,sBAAA,GAAyB,mBAAA;AAAA;;KAI1B,gBAAA,eAA+B,iBAAA,oBAC3B,KAAA,GAAQ,GAAA,sBAClB,KAAA,CAAM,GAAA,IACN,OAAA,CAAQ,KAAA,CAAM,GAAA,GAAM,sBAAA;AAAA,KAGrB,gBAAA,GAAmB,UAAU,QAAQ,UAAA,CAAW,SAAA;AAAA,KACzC,qBAAA,eAAoC,iBAAA,oBAChC,KAAA,GAAQ,KAAA,CAAM,GAAA,UAAa,sBAAA,GACrC,KAAA,CAAM,GAAA,IACN,GAAA,sBACA,gBAAA;AAAA,KAIM,kBAAA,eAAiC,iBAAA,IAAqB,YAAA,CAChE,YAAA,CAAa,qBAAA,CAAsB,KAAA;AAAA,KAEzB,2BAAA,eAA0C,iBAAA,IACpD,YAAA,CAAa,sBAAA,CAAuB,qBAAA,CAAsB,KAAA"}
@@ -0,0 +1,15 @@
1
+ import { LayoutConfigurationError } from "./errors/layout-configuration-error.mjs";
2
+ import { createProp } from "@jfdevelops/react-layout-validator";
3
+
4
+ //#region src/custom-props.ts
5
+ function normalizeCustomProps(props) {
6
+ return Object.fromEntries(Object.entries(props).map(([key, definition]) => {
7
+ if (typeof definition !== "string") return [key, definition];
8
+ if (key !== "children" || definition !== "required") throw new LayoutConfigurationError("Only custom.children accepts the required shorthand.");
9
+ return [key, createProp.component({ type: "ReactNode" })];
10
+ }));
11
+ }
12
+
13
+ //#endregion
14
+ export { normalizeCustomProps };
15
+ //# sourceMappingURL=custom-props.mjs.map