@jfdevelops/react-layout 1.0.1 → 1.2.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 (59) hide show
  1. package/dist/create-config/create-defined-resource-layout.cjs +14 -7
  2. package/dist/create-config/create-defined-resource-layout.cjs.map +1 -1
  3. package/dist/create-config/create-defined-resource-layout.d.cts +30 -17
  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 +30 -17
  6. package/dist/create-config/create-defined-resource-layout.d.mts.map +1 -1
  7. package/dist/create-config/create-defined-resource-layout.mjs +14 -7
  8. package/dist/create-config/create-defined-resource-layout.mjs.map +1 -1
  9. package/dist/create-config/define-layout.cjs +67 -28
  10. package/dist/create-config/define-layout.cjs.map +1 -1
  11. package/dist/create-config/define-layout.d.cts +88 -71
  12. package/dist/create-config/define-layout.d.cts.map +1 -1
  13. package/dist/create-config/define-layout.d.mts +88 -71
  14. package/dist/create-config/define-layout.d.mts.map +1 -1
  15. package/dist/create-config/define-layout.mjs +67 -28
  16. package/dist/create-config/define-layout.mjs.map +1 -1
  17. package/dist/create-config/for-resource.cjs.map +1 -1
  18. package/dist/create-config/for-resource.d.cts +24 -16
  19. package/dist/create-config/for-resource.d.cts.map +1 -1
  20. package/dist/create-config/for-resource.d.mts +24 -16
  21. package/dist/create-config/for-resource.d.mts.map +1 -1
  22. package/dist/create-config/for-resource.mjs.map +1 -1
  23. package/dist/create-config/for-resources/create-for-resources.cjs +1 -0
  24. package/dist/create-config/for-resources/create-for-resources.cjs.map +1 -1
  25. package/dist/create-config/for-resources/create-for-resources.mjs +1 -0
  26. package/dist/create-config/for-resources/create-for-resources.mjs.map +1 -1
  27. package/dist/create-config/for-resources/scoped-layout.d.cts +14 -12
  28. package/dist/create-config/for-resources/scoped-layout.d.cts.map +1 -1
  29. package/dist/create-config/for-resources/scoped-layout.d.mts +14 -12
  30. package/dist/create-config/for-resources/scoped-layout.d.mts.map +1 -1
  31. package/dist/create-config/index.d.cts +2 -1
  32. package/dist/create-config/index.d.mts +2 -1
  33. package/dist/create-config/lazy-resource-layout.cjs +1 -1
  34. package/dist/create-config/lazy-resource-layout.cjs.map +1 -1
  35. package/dist/create-config/lazy-resource-layout.d.cts +4 -1
  36. package/dist/create-config/lazy-resource-layout.d.cts.map +1 -1
  37. package/dist/create-config/lazy-resource-layout.d.mts +4 -1
  38. package/dist/create-config/lazy-resource-layout.d.mts.map +1 -1
  39. package/dist/create-config/lazy-resource-layout.mjs +1 -1
  40. package/dist/create-config/lazy-resource-layout.mjs.map +1 -1
  41. package/dist/create-config/render-state.cjs +96 -7
  42. package/dist/create-config/render-state.cjs.map +1 -1
  43. package/dist/create-config/render-state.d.cts +100 -15
  44. package/dist/create-config/render-state.d.cts.map +1 -1
  45. package/dist/create-config/render-state.d.mts +100 -15
  46. package/dist/create-config/render-state.d.mts.map +1 -1
  47. package/dist/create-config/render-state.mjs +97 -7
  48. package/dist/create-config/render-state.mjs.map +1 -1
  49. package/dist/create-config/state-composable.cjs +49 -0
  50. package/dist/create-config/state-composable.cjs.map +1 -0
  51. package/dist/create-config/state-composable.d.cts +27 -0
  52. package/dist/create-config/state-composable.d.cts.map +1 -0
  53. package/dist/create-config/state-composable.d.mts +27 -0
  54. package/dist/create-config/state-composable.d.mts.map +1 -0
  55. package/dist/create-config/state-composable.mjs +46 -0
  56. package/dist/create-config/state-composable.mjs.map +1 -0
  57. package/dist/index.d.cts +3 -2
  58. package/dist/index.d.mts +3 -2
  59. package/package.json +1 -1
@@ -1,7 +1,10 @@
1
1
  import { LayoutResourceKey, ResourceDefinition } from "../resource.cjs";
2
- import { InPropsDefinition, InPropsObject, IncludedProps, LayoutRenderProps, MergedLayoutInProps } from "../props.cjs";
3
- import { ComposableComponents, CreateLayoutComposable } from "@jfdevelops/react-layout-composables";
2
+ import { InPropsDefinition, InPropsObject, IncludedProps, LayoutRenderProps, MergedLayoutInProps, ResolvedIncludedComponentProps, ResolvedIncludedProps } from "../props.cjs";
3
+ import { StateComposable, StateComposableHandle } from "./state-composable.cjs";
4
+ import { LayoutRenderResourcesAccessor } from "./define-layout.cjs";
5
+ import { ComposableComponents, ComposablePresetMeta, CreateLayoutComposable, MergePresetProps, composablePresetMetaKey } from "@jfdevelops/react-layout-composables";
4
6
  import { JSX } from "react";
7
+ import { ResolveProps } from "@jfdevelops/react-layout-validator";
5
8
 
6
9
  //#region src/create-config/render-state.d.ts
7
10
  declare const deferredRenderStateSymbol: unique symbol;
@@ -10,7 +13,7 @@ declare const definedRenderStateSymbol: unique symbol;
10
13
  declare const definedResourceLayoutComponentSymbol: unique symbol;
11
14
  /** Runtime-compatible render-state shape used when inspecting lazy modules. */
12
15
  type AnyRenderStateDefinition = {
13
- composables?: (create: CreateLayoutComposable<any>) => ComposableComponents;
16
+ composables?: (create: CreateLayoutComposable<any>, states: any) => ComposableComponents;
14
17
  props?: {
15
18
  include?: Record<string, unknown>;
16
19
  custom?: InPropsObject;
@@ -38,7 +41,7 @@ type RenderStateCallback = (props: any, context: any) => JSX.Element;
38
41
  * Defines state-local composable components with a `create` helper narrowed to
39
42
  * the resources bound to the surrounding builder.
40
43
  */
41
- type RenderStateComposablesDefinition<Resources extends ReadonlyArray<ResourceDefinition>, Composables extends ComposableComponents> = (create: CreateLayoutComposable<LayoutResourceKey<Resources>>) => Composables;
44
+ type RenderStateComposablesDefinition<Resources extends ReadonlyArray<ResourceDefinition>, Composables extends ComposableComponents, States = {}> = (create: CreateLayoutComposable<LayoutResourceKey<Resources>>, states: States) => Composables;
42
45
  /**
43
46
  * Defines reusable layout-level composables while preserving their inferred
44
47
  * names, props, and bound resource union.
@@ -46,7 +49,8 @@ type RenderStateComposablesDefinition<Resources extends ReadonlyArray<ResourceDe
46
49
  type LayoutComposablesDefinition<Resources extends ReadonlyArray<ResourceDefinition>, Composables extends ComposableComponents> = RenderStateComposablesDefinition<Resources, Composables>;
47
50
  type BuilderRenderComposables<Composables extends ComposableComponents> = [keyof Composables] extends [never] ? undefined : Composables;
48
51
  /** Values available as the second argument of a created state's `render`. */
49
- type RenderStateContext<Composables extends ComposableComponents> = {
52
+ type RenderStateContext<Composables extends ComposableComponents, Resources extends ReadonlyArray<ResourceDefinition> = ReadonlyArray<ResourceDefinition>> = {
53
+ resources: LayoutRenderResourcesAccessor<Resources>;
50
54
  composables: BuilderRenderComposables<Composables>;
51
55
  retry?: () => void;
52
56
  };
@@ -61,15 +65,15 @@ type TypedRenderStateDefinition<Resources extends ReadonlyArray<ResourceDefiniti
61
65
  include?: IncludeProps;
62
66
  custom?: CustomProps;
63
67
  };
64
- render: (props: RenderStateProps<Resources, Options, SharedComposables & StateComposables, IncludeProps, CustomProps>, context: RenderStateContext<SharedComposables & StateComposables>) => JSX.Element;
68
+ render: (props: RenderStateProps<Resources, Options, SharedComposables & StateComposables, IncludeProps, CustomProps>, context: RenderStateContext<SharedComposables & StateComposables, Resources>) => JSX.Element;
65
69
  state: State;
66
70
  };
67
71
  /**
68
72
  * Callback shorthand for a created state, typed with the bound resources,
69
73
  * options, and shared composables.
70
74
  */
71
- type TypedRenderStateCallback<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, SharedComposables extends ComposableComponents> = (props: RenderStateProps<Resources, Options, SharedComposables, {}, {}>, context: RenderStateContext<SharedComposables>) => JSX.Element;
72
- type NormalizeRenderStateDefinition<Input> = Input extends DeferredRenderState<infer Definition> ? Definition : Input extends RenderStateCallback ? {
75
+ type TypedRenderStateCallback<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, SharedComposables extends ComposableComponents> = (props: RenderStateProps<Resources, Options, SharedComposables, {}, {}>, context: RenderStateContext<SharedComposables, Resources>) => JSX.Element;
76
+ type NormalizeRenderStateDefinition<Input> = Input extends LazyRenderState<infer Definition> ? Definition : Input extends DeferredRenderState<infer Definition> ? Definition : Input extends RenderStateCallback ? {
73
77
  render: Input;
74
78
  state: 'default';
75
79
  } : Input extends AnyRenderStateDefinition ? Input : never;
@@ -80,9 +84,41 @@ type StateName<Definition> = Definition extends DeferredRenderState<infer Deferr
80
84
  * A spreadable state entry keyed by its literal state name. Spreading this into
81
85
  * `layout.render` is what creates compound members such as `Users.Loading`.
82
86
  */
83
- type RenderStateFragment<Definition> = { [State in StateName<NormalizeRenderStateDefinition<Definition>>]: Definition } & {
87
+ type RenderStateFragment<Definition, CallProps extends object = ResolveProps<StateCustomProps<Definition>>> = { [State in StateName<NormalizeRenderStateDefinition<Definition>>]: Definition } & {
84
88
  readonly [definedRenderStateSymbol]: NormalizeRenderStateDefinition<Definition>;
85
- };
89
+ } & StateComposableHandle<CallProps>;
90
+ type StateCustomProps<Input> = NormalizeStateInput<Input> extends {
91
+ props?: {
92
+ custom?: infer Props extends InPropsObject;
93
+ };
94
+ } ? Props : {};
95
+ type StateIncludes<Input> = NormalizeStateInput<Input> extends {
96
+ props?: {
97
+ include?: infer Includes;
98
+ };
99
+ } ? Includes : {};
100
+ type NormalizeStateInput<Input> = Input extends DeferredRenderState<infer Definition> ? Definition : Input extends LazyRenderState<infer Definition> ? Definition : Input;
101
+ type StateLocalComposables<Input> = NormalizeStateInput<Input> extends {
102
+ composables?: (...args: any[]) => infer Components extends ComposableComponents;
103
+ } ? Components : {};
104
+ /**
105
+ * A composables callback cannot infer its own return value into its arguments.
106
+ * Preserve the declared call-site contract for props supplied by local presets,
107
+ * even when their value types are not yet available in the callback context.
108
+ */
109
+ type UnresolvedStateComponentProps<Props, Includes> = { [Key in Exclude<keyof Includes, keyof Props> as Includes[Key] extends {
110
+ visibility: 'required';
111
+ passthrough: 'component';
112
+ } ? Key : never]: unknown } & { [Key in Exclude<keyof Includes, keyof Props> as Includes[Key] extends 'optional' | {
113
+ visibility: 'optional';
114
+ passthrough: 'component';
115
+ } ? Key : never]?: unknown };
116
+ 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>;
117
+ /** Call-site props of a referenced state; creation-time options stay bound. */
118
+ type RenderStateCallProps<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Input> = ResolveProps<StateCustomProps<Input>> & StateComponentProps<MergedLayoutInProps<Resources, Options, Composables & StateLocalComposables<Input>>, StateIncludes<Input>>;
119
+ /** Typed references to all the states declared in an inline render map. */
120
+ 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]>> };
121
+ type BoundRenderStateFragment<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Definition> = RenderStateFragment<Definition, RenderStateCallProps<Resources, Options, Composables, Definition>>;
86
122
  type DefinedRenderStateFromModule<Module> = Extract<Module[keyof Module], {
87
123
  readonly [definedRenderStateSymbol]: AnyRenderStateDefinition;
88
124
  }>[typeof definedRenderStateSymbol];
@@ -94,10 +130,57 @@ type RenderStateEntry<Definition, Deferred extends boolean> = Deferred extends t
94
130
  * callback; `Deferred` decides whether the returned entry is deferred.
95
131
  */
96
132
  interface RenderStateOverloads<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, SharedComposables extends ComposableComponents, Deferred extends boolean> {
97
- <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>): RenderStateFragment<RenderStateEntry<TypedRenderStateDefinition<Resources, Options, State, CustomProps, SharedComposables, StateComposables, IncludeProps>, Deferred>>;
98
- <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>, 'state'>): RenderStateFragment<RenderStateEntry<TypedRenderStateDefinition<Resources, Options, 'default', CustomProps, SharedComposables, StateComposables, IncludeProps>, Deferred>>;
99
- (render: TypedRenderStateCallback<Resources, Options, SharedComposables>): RenderStateFragment<RenderStateEntry<TypedRenderStateCallback<Resources, Options, SharedComposables>, Deferred>>;
133
+ <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>): BoundRenderStateFragment<Resources, Options, SharedComposables, RenderStateEntry<TypedRenderStateDefinition<Resources, Options, State, CustomProps, SharedComposables, StateComposables, IncludeProps>, Deferred>>;
134
+ <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>, 'state'>): BoundRenderStateFragment<Resources, Options, SharedComposables, RenderStateEntry<TypedRenderStateDefinition<Resources, Options, 'default', CustomProps, SharedComposables, StateComposables, IncludeProps>, Deferred>>;
135
+ (render: TypedRenderStateCallback<Resources, Options, SharedComposables>): BoundRenderStateFragment<Resources, Options, SharedComposables, RenderStateEntry<TypedRenderStateCallback<Resources, Options, SharedComposables>, Deferred>>;
100
136
  }
137
+ type RenderStateReference = ({
138
+ readonly [definedRenderStateSymbol]: AnyRenderStateDefinition;
139
+ } | LazyRenderState<AnyRenderStateDefinition>) & StateComposableHandle<any>;
140
+ type ReferenceDefinition<Ref extends RenderStateReference> = Ref extends LazyRenderState<infer Definition> ? Definition : Ref extends {
141
+ readonly [definedRenderStateSymbol]: infer Definition extends AnyRenderStateDefinition;
142
+ } ? Definition : never;
143
+ 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 : LazyRenderState<Definition>;
144
+ type ReferenceSchemas<Ref extends RenderStateReference> = StateCustomProps<ReferenceDefinition<Ref>> & MergePresetProps<StateLocalComposables<ReferenceDefinition<Ref>>>;
145
+ 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>]: {
146
+ visibility: StateCustomProps<ReferenceDefinition<Ref>>[Key] extends {
147
+ visibility: infer Visibility;
148
+ } ? Visibility : 'required';
149
+ passthrough: 'component';
150
+ } };
151
+ type ReferenceIncludes<Ref extends RenderStateReference, CustomProps, Include> = Include extends object ? Include : DefaultReferenceIncludes<Ref, CustomProps>;
152
+ 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 : {};
153
+ type SelectedReferenceSchemas<Ref extends RenderStateReference, Include> = Pick<ReferenceSchemas<Ref>, Extract<keyof Include, keyof ReferenceSchemas<Ref>>> extends infer Selected extends InPropsObject ? Selected : {};
154
+ 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> : {};
155
+ 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>>>;
156
+ type FromStateComposables<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Shared extends ComposableComponents, Ref extends RenderStateReference, Local extends ComposableComponents, Include> = Local & {
157
+ Ref: StateComposable<ReferenceRenderProps<Resources, Options, Shared, Ref>, Extract<keyof ReferenceCarriedProps<Resources, Options, Shared, Ref, Include>, keyof ReferenceRenderProps<Resources, Options, Shared, Ref>>> & {
158
+ [composablePresetMetaKey]: ComposablePresetMeta<SelectedReferenceSchemas<Ref, Include>>;
159
+ };
160
+ };
161
+ 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> = {
162
+ state: State;
163
+ props?: {
164
+ custom?: CustomProps;
165
+ include?: ReferenceIncludes<Ref, CustomProps, Include>;
166
+ };
167
+ composables: RenderStateComposablesDefinition<Resources, FromStateComposables<Resources, Options, Shared, Ref, Local, ReferenceIncludes<Ref, CustomProps, Include>>>;
168
+ render: (props: 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>) => JSX.Element;
169
+ };
170
+ /** Creates a state with inherited props and a composable reference to its source. */
171
+ 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: {
172
+ ref: Ref; /** Defer Ref rendering through React.lazy. Defaults to false. */
173
+ lazy?: boolean;
174
+ state?: State;
175
+ props?: {
176
+ custom?: CustomProps;
177
+ include?: Include & Record<Exclude<keyof Include, keyof FromStateInProps<Resources, Options, Shared, Ref, Local>>, never>;
178
+ };
179
+ composables?: (create: CreateLayoutComposable<LayoutResourceKey<Resources>>, states: {}) => Local & {
180
+ Ref?: never;
181
+ };
182
+ render: FromStateDefinition<Resources, Options, Shared, Ref, State, CustomProps, Local, Include>['render'];
183
+ }) => BoundRenderStateFragment<Resources, Options, Shared, FromStateEntry<Ref, FromStateDefinition<Resources, Options, Shared, Ref, State, CustomProps, Local, Include>>>;
101
184
  /**
102
185
  * Creates independently typed render-state fragments.
103
186
  *
@@ -106,10 +189,12 @@ interface RenderStateOverloads<Resources extends ReadonlyArray<ResourceDefinitio
106
189
  * does not create a separate JavaScript chunk.
107
190
  * - `.lazy(() => import(...))` imports a complete named state definition as a
108
191
  * separate chunk.
192
+ * - `.fromState({ ref, ... })` inherits a state's props and exposes it as `Ref`.
109
193
  */
110
194
  interface CreateRenderState<Resources extends ReadonlyArray<ResourceDefinition> = ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources> = {}, SharedComposables extends ComposableComponents = {}> extends RenderStateOverloads<Resources, Options, SharedComposables, false> {
195
+ fromState: CreateRenderStateFromState<Resources, Options, SharedComposables>;
111
196
  defer: RenderStateOverloads<Resources, Options, SharedComposables, true>;
112
- lazy<Module extends Record<string, unknown>>(load: () => Promise<Module>): LazyRenderState<DefinedRenderStateFromModule<Module>>;
197
+ lazy<Module extends Record<string, unknown>>(load: () => Promise<Module>): LazyRenderState<DefinedRenderStateFromModule<Module>> & StateComposableHandle<RenderStateCallProps<Resources, Options, SharedComposables, DefinedRenderStateFromModule<Module>>>;
113
198
  }
114
199
  /** Inputs used internally to bind resource and option types to a state builder. */
115
200
  type CreateRenderStateBuilderArguments<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, SharedComposables extends ComposableComponents = {}> = {
@@ -131,5 +216,5 @@ type CreateLayoutBuildingBlocksArguments<Resources extends ReadonlyArray<Resourc
131
216
  /** Layout helpers produced for the supplied resource and option bindings. */
132
217
  type CreateLayoutBuildingBlocksResult<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>> = CreateLayoutBuildingBlocks<Resources, Options>;
133
218
  //#endregion
134
- export { AnyRenderStateDefinition, CreateLayoutBuildingBlocks, CreateLayoutBuildingBlocksArguments, CreateLayoutBuildingBlocksResult, CreateRenderState, CreateRenderStateBuilderArguments, CreateRenderStateBuilderResult, DeferredRenderState, DefineLayoutComposables, LayoutComposablesDefinition, LazyRenderState, RenderStateCallback, RenderStateComposablesDefinition, RenderStateContext, RenderStateFragment, RenderStateName, RenderStateOverloads, RenderStateProps, TypedRenderStateCallback, definedResourceLayoutComponentSymbol };
219
+ export { AnyRenderStateDefinition, CreateLayoutBuildingBlocks, CreateLayoutBuildingBlocksArguments, CreateLayoutBuildingBlocksResult, CreateRenderState, CreateRenderStateBuilderArguments, CreateRenderStateBuilderResult, CreateRenderStateFromState, DeferredRenderState, DefineLayoutComposables, LayoutComposablesDefinition, LazyRenderState, RenderStateCallProps, RenderStateCallback, RenderStateComposablesDefinition, RenderStateContext, RenderStateFragment, RenderStateName, RenderStateOverloads, RenderStateProps, RenderStateReferences, TypedRenderStateCallback, definedResourceLayoutComponentSymbol };
135
220
  //# sourceMappingURL=render-state.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"render-state.d.cts","names":[],"sources":["../../src/create-config/render-state.ts"],"mappings":"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"}
1
+ {"version":3,"file":"render-state.d.cts","names":[],"sources":["../../src/create-config/render-state.ts"],"mappings":"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"}
@@ -1,7 +1,10 @@
1
1
  import { LayoutResourceKey, ResourceDefinition } from "../resource.mjs";
2
- import { InPropsDefinition, InPropsObject, IncludedProps, LayoutRenderProps, MergedLayoutInProps } from "../props.mjs";
3
- import { ComposableComponents, CreateLayoutComposable } from "@jfdevelops/react-layout-composables";
2
+ import { InPropsDefinition, InPropsObject, IncludedProps, LayoutRenderProps, MergedLayoutInProps, ResolvedIncludedComponentProps, ResolvedIncludedProps } from "../props.mjs";
3
+ import { StateComposable, StateComposableHandle } from "./state-composable.mjs";
4
+ import { LayoutRenderResourcesAccessor } from "./define-layout.mjs";
5
+ import { ComposableComponents, ComposablePresetMeta, CreateLayoutComposable, MergePresetProps, composablePresetMetaKey } from "@jfdevelops/react-layout-composables";
4
6
  import { JSX } from "react";
7
+ import { ResolveProps } from "@jfdevelops/react-layout-validator";
5
8
 
6
9
  //#region src/create-config/render-state.d.ts
7
10
  declare const deferredRenderStateSymbol: unique symbol;
@@ -10,7 +13,7 @@ declare const definedRenderStateSymbol: unique symbol;
10
13
  declare const definedResourceLayoutComponentSymbol: unique symbol;
11
14
  /** Runtime-compatible render-state shape used when inspecting lazy modules. */
12
15
  type AnyRenderStateDefinition = {
13
- composables?: (create: CreateLayoutComposable<any>) => ComposableComponents;
16
+ composables?: (create: CreateLayoutComposable<any>, states: any) => ComposableComponents;
14
17
  props?: {
15
18
  include?: Record<string, unknown>;
16
19
  custom?: InPropsObject;
@@ -38,7 +41,7 @@ type RenderStateCallback = (props: any, context: any) => JSX.Element;
38
41
  * Defines state-local composable components with a `create` helper narrowed to
39
42
  * the resources bound to the surrounding builder.
40
43
  */
41
- type RenderStateComposablesDefinition<Resources extends ReadonlyArray<ResourceDefinition>, Composables extends ComposableComponents> = (create: CreateLayoutComposable<LayoutResourceKey<Resources>>) => Composables;
44
+ type RenderStateComposablesDefinition<Resources extends ReadonlyArray<ResourceDefinition>, Composables extends ComposableComponents, States = {}> = (create: CreateLayoutComposable<LayoutResourceKey<Resources>>, states: States) => Composables;
42
45
  /**
43
46
  * Defines reusable layout-level composables while preserving their inferred
44
47
  * names, props, and bound resource union.
@@ -46,7 +49,8 @@ type RenderStateComposablesDefinition<Resources extends ReadonlyArray<ResourceDe
46
49
  type LayoutComposablesDefinition<Resources extends ReadonlyArray<ResourceDefinition>, Composables extends ComposableComponents> = RenderStateComposablesDefinition<Resources, Composables>;
47
50
  type BuilderRenderComposables<Composables extends ComposableComponents> = [keyof Composables] extends [never] ? undefined : Composables;
48
51
  /** Values available as the second argument of a created state's `render`. */
49
- type RenderStateContext<Composables extends ComposableComponents> = {
52
+ type RenderStateContext<Composables extends ComposableComponents, Resources extends ReadonlyArray<ResourceDefinition> = ReadonlyArray<ResourceDefinition>> = {
53
+ resources: LayoutRenderResourcesAccessor<Resources>;
50
54
  composables: BuilderRenderComposables<Composables>;
51
55
  retry?: () => void;
52
56
  };
@@ -61,15 +65,15 @@ type TypedRenderStateDefinition<Resources extends ReadonlyArray<ResourceDefiniti
61
65
  include?: IncludeProps;
62
66
  custom?: CustomProps;
63
67
  };
64
- render: (props: RenderStateProps<Resources, Options, SharedComposables & StateComposables, IncludeProps, CustomProps>, context: RenderStateContext<SharedComposables & StateComposables>) => JSX.Element;
68
+ render: (props: RenderStateProps<Resources, Options, SharedComposables & StateComposables, IncludeProps, CustomProps>, context: RenderStateContext<SharedComposables & StateComposables, Resources>) => JSX.Element;
65
69
  state: State;
66
70
  };
67
71
  /**
68
72
  * Callback shorthand for a created state, typed with the bound resources,
69
73
  * options, and shared composables.
70
74
  */
71
- type TypedRenderStateCallback<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, SharedComposables extends ComposableComponents> = (props: RenderStateProps<Resources, Options, SharedComposables, {}, {}>, context: RenderStateContext<SharedComposables>) => JSX.Element;
72
- type NormalizeRenderStateDefinition<Input> = Input extends DeferredRenderState<infer Definition> ? Definition : Input extends RenderStateCallback ? {
75
+ type TypedRenderStateCallback<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, SharedComposables extends ComposableComponents> = (props: RenderStateProps<Resources, Options, SharedComposables, {}, {}>, context: RenderStateContext<SharedComposables, Resources>) => JSX.Element;
76
+ type NormalizeRenderStateDefinition<Input> = Input extends LazyRenderState<infer Definition> ? Definition : Input extends DeferredRenderState<infer Definition> ? Definition : Input extends RenderStateCallback ? {
73
77
  render: Input;
74
78
  state: 'default';
75
79
  } : Input extends AnyRenderStateDefinition ? Input : never;
@@ -80,9 +84,41 @@ type StateName<Definition> = Definition extends DeferredRenderState<infer Deferr
80
84
  * A spreadable state entry keyed by its literal state name. Spreading this into
81
85
  * `layout.render` is what creates compound members such as `Users.Loading`.
82
86
  */
83
- type RenderStateFragment<Definition> = { [State in StateName<NormalizeRenderStateDefinition<Definition>>]: Definition } & {
87
+ type RenderStateFragment<Definition, CallProps extends object = ResolveProps<StateCustomProps<Definition>>> = { [State in StateName<NormalizeRenderStateDefinition<Definition>>]: Definition } & {
84
88
  readonly [definedRenderStateSymbol]: NormalizeRenderStateDefinition<Definition>;
85
- };
89
+ } & StateComposableHandle<CallProps>;
90
+ type StateCustomProps<Input> = NormalizeStateInput<Input> extends {
91
+ props?: {
92
+ custom?: infer Props extends InPropsObject;
93
+ };
94
+ } ? Props : {};
95
+ type StateIncludes<Input> = NormalizeStateInput<Input> extends {
96
+ props?: {
97
+ include?: infer Includes;
98
+ };
99
+ } ? Includes : {};
100
+ type NormalizeStateInput<Input> = Input extends DeferredRenderState<infer Definition> ? Definition : Input extends LazyRenderState<infer Definition> ? Definition : Input;
101
+ type StateLocalComposables<Input> = NormalizeStateInput<Input> extends {
102
+ composables?: (...args: any[]) => infer Components extends ComposableComponents;
103
+ } ? Components : {};
104
+ /**
105
+ * A composables callback cannot infer its own return value into its arguments.
106
+ * Preserve the declared call-site contract for props supplied by local presets,
107
+ * even when their value types are not yet available in the callback context.
108
+ */
109
+ type UnresolvedStateComponentProps<Props, Includes> = { [Key in Exclude<keyof Includes, keyof Props> as Includes[Key] extends {
110
+ visibility: 'required';
111
+ passthrough: 'component';
112
+ } ? Key : never]: unknown } & { [Key in Exclude<keyof Includes, keyof Props> as Includes[Key] extends 'optional' | {
113
+ visibility: 'optional';
114
+ passthrough: 'component';
115
+ } ? Key : never]?: unknown };
116
+ 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>;
117
+ /** Call-site props of a referenced state; creation-time options stay bound. */
118
+ type RenderStateCallProps<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Input> = ResolveProps<StateCustomProps<Input>> & StateComponentProps<MergedLayoutInProps<Resources, Options, Composables & StateLocalComposables<Input>>, StateIncludes<Input>>;
119
+ /** Typed references to all the states declared in an inline render map. */
120
+ 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]>> };
121
+ type BoundRenderStateFragment<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Composables extends ComposableComponents, Definition> = RenderStateFragment<Definition, RenderStateCallProps<Resources, Options, Composables, Definition>>;
86
122
  type DefinedRenderStateFromModule<Module> = Extract<Module[keyof Module], {
87
123
  readonly [definedRenderStateSymbol]: AnyRenderStateDefinition;
88
124
  }>[typeof definedRenderStateSymbol];
@@ -94,10 +130,57 @@ type RenderStateEntry<Definition, Deferred extends boolean> = Deferred extends t
94
130
  * callback; `Deferred` decides whether the returned entry is deferred.
95
131
  */
96
132
  interface RenderStateOverloads<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, SharedComposables extends ComposableComponents, Deferred extends boolean> {
97
- <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>): RenderStateFragment<RenderStateEntry<TypedRenderStateDefinition<Resources, Options, State, CustomProps, SharedComposables, StateComposables, IncludeProps>, Deferred>>;
98
- <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>, 'state'>): RenderStateFragment<RenderStateEntry<TypedRenderStateDefinition<Resources, Options, 'default', CustomProps, SharedComposables, StateComposables, IncludeProps>, Deferred>>;
99
- (render: TypedRenderStateCallback<Resources, Options, SharedComposables>): RenderStateFragment<RenderStateEntry<TypedRenderStateCallback<Resources, Options, SharedComposables>, Deferred>>;
133
+ <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>): BoundRenderStateFragment<Resources, Options, SharedComposables, RenderStateEntry<TypedRenderStateDefinition<Resources, Options, State, CustomProps, SharedComposables, StateComposables, IncludeProps>, Deferred>>;
134
+ <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>, 'state'>): BoundRenderStateFragment<Resources, Options, SharedComposables, RenderStateEntry<TypedRenderStateDefinition<Resources, Options, 'default', CustomProps, SharedComposables, StateComposables, IncludeProps>, Deferred>>;
135
+ (render: TypedRenderStateCallback<Resources, Options, SharedComposables>): BoundRenderStateFragment<Resources, Options, SharedComposables, RenderStateEntry<TypedRenderStateCallback<Resources, Options, SharedComposables>, Deferred>>;
100
136
  }
137
+ type RenderStateReference = ({
138
+ readonly [definedRenderStateSymbol]: AnyRenderStateDefinition;
139
+ } | LazyRenderState<AnyRenderStateDefinition>) & StateComposableHandle<any>;
140
+ type ReferenceDefinition<Ref extends RenderStateReference> = Ref extends LazyRenderState<infer Definition> ? Definition : Ref extends {
141
+ readonly [definedRenderStateSymbol]: infer Definition extends AnyRenderStateDefinition;
142
+ } ? Definition : never;
143
+ 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 : LazyRenderState<Definition>;
144
+ type ReferenceSchemas<Ref extends RenderStateReference> = StateCustomProps<ReferenceDefinition<Ref>> & MergePresetProps<StateLocalComposables<ReferenceDefinition<Ref>>>;
145
+ 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>]: {
146
+ visibility: StateCustomProps<ReferenceDefinition<Ref>>[Key] extends {
147
+ visibility: infer Visibility;
148
+ } ? Visibility : 'required';
149
+ passthrough: 'component';
150
+ } };
151
+ type ReferenceIncludes<Ref extends RenderStateReference, CustomProps, Include> = Include extends object ? Include : DefaultReferenceIncludes<Ref, CustomProps>;
152
+ 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 : {};
153
+ type SelectedReferenceSchemas<Ref extends RenderStateReference, Include> = Pick<ReferenceSchemas<Ref>, Extract<keyof Include, keyof ReferenceSchemas<Ref>>> extends infer Selected extends InPropsObject ? Selected : {};
154
+ 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> : {};
155
+ 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>>>;
156
+ type FromStateComposables<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Shared extends ComposableComponents, Ref extends RenderStateReference, Local extends ComposableComponents, Include> = Local & {
157
+ Ref: StateComposable<ReferenceRenderProps<Resources, Options, Shared, Ref>, Extract<keyof ReferenceCarriedProps<Resources, Options, Shared, Ref, Include>, keyof ReferenceRenderProps<Resources, Options, Shared, Ref>>> & {
158
+ [composablePresetMetaKey]: ComposablePresetMeta<SelectedReferenceSchemas<Ref, Include>>;
159
+ };
160
+ };
161
+ 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> = {
162
+ state: State;
163
+ props?: {
164
+ custom?: CustomProps;
165
+ include?: ReferenceIncludes<Ref, CustomProps, Include>;
166
+ };
167
+ composables: RenderStateComposablesDefinition<Resources, FromStateComposables<Resources, Options, Shared, Ref, Local, ReferenceIncludes<Ref, CustomProps, Include>>>;
168
+ render: (props: 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>) => JSX.Element;
169
+ };
170
+ /** Creates a state with inherited props and a composable reference to its source. */
171
+ 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: {
172
+ ref: Ref; /** Defer Ref rendering through React.lazy. Defaults to false. */
173
+ lazy?: boolean;
174
+ state?: State;
175
+ props?: {
176
+ custom?: CustomProps;
177
+ include?: Include & Record<Exclude<keyof Include, keyof FromStateInProps<Resources, Options, Shared, Ref, Local>>, never>;
178
+ };
179
+ composables?: (create: CreateLayoutComposable<LayoutResourceKey<Resources>>, states: {}) => Local & {
180
+ Ref?: never;
181
+ };
182
+ render: FromStateDefinition<Resources, Options, Shared, Ref, State, CustomProps, Local, Include>['render'];
183
+ }) => BoundRenderStateFragment<Resources, Options, Shared, FromStateEntry<Ref, FromStateDefinition<Resources, Options, Shared, Ref, State, CustomProps, Local, Include>>>;
101
184
  /**
102
185
  * Creates independently typed render-state fragments.
103
186
  *
@@ -106,10 +189,12 @@ interface RenderStateOverloads<Resources extends ReadonlyArray<ResourceDefinitio
106
189
  * does not create a separate JavaScript chunk.
107
190
  * - `.lazy(() => import(...))` imports a complete named state definition as a
108
191
  * separate chunk.
192
+ * - `.fromState({ ref, ... })` inherits a state's props and exposes it as `Ref`.
109
193
  */
110
194
  interface CreateRenderState<Resources extends ReadonlyArray<ResourceDefinition> = ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources> = {}, SharedComposables extends ComposableComponents = {}> extends RenderStateOverloads<Resources, Options, SharedComposables, false> {
195
+ fromState: CreateRenderStateFromState<Resources, Options, SharedComposables>;
111
196
  defer: RenderStateOverloads<Resources, Options, SharedComposables, true>;
112
- lazy<Module extends Record<string, unknown>>(load: () => Promise<Module>): LazyRenderState<DefinedRenderStateFromModule<Module>>;
197
+ lazy<Module extends Record<string, unknown>>(load: () => Promise<Module>): LazyRenderState<DefinedRenderStateFromModule<Module>> & StateComposableHandle<RenderStateCallProps<Resources, Options, SharedComposables, DefinedRenderStateFromModule<Module>>>;
113
198
  }
114
199
  /** Inputs used internally to bind resource and option types to a state builder. */
115
200
  type CreateRenderStateBuilderArguments<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, SharedComposables extends ComposableComponents = {}> = {
@@ -131,5 +216,5 @@ type CreateLayoutBuildingBlocksArguments<Resources extends ReadonlyArray<Resourc
131
216
  /** Layout helpers produced for the supplied resource and option bindings. */
132
217
  type CreateLayoutBuildingBlocksResult<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>> = CreateLayoutBuildingBlocks<Resources, Options>;
133
218
  //#endregion
134
- export { AnyRenderStateDefinition, CreateLayoutBuildingBlocks, CreateLayoutBuildingBlocksArguments, CreateLayoutBuildingBlocksResult, CreateRenderState, CreateRenderStateBuilderArguments, CreateRenderStateBuilderResult, DeferredRenderState, DefineLayoutComposables, LayoutComposablesDefinition, LazyRenderState, RenderStateCallback, RenderStateComposablesDefinition, RenderStateContext, RenderStateFragment, RenderStateName, RenderStateOverloads, RenderStateProps, TypedRenderStateCallback, definedResourceLayoutComponentSymbol };
219
+ export { AnyRenderStateDefinition, CreateLayoutBuildingBlocks, CreateLayoutBuildingBlocksArguments, CreateLayoutBuildingBlocksResult, CreateRenderState, CreateRenderStateBuilderArguments, CreateRenderStateBuilderResult, CreateRenderStateFromState, DeferredRenderState, DefineLayoutComposables, LayoutComposablesDefinition, LazyRenderState, RenderStateCallProps, RenderStateCallback, RenderStateComposablesDefinition, RenderStateContext, RenderStateFragment, RenderStateName, RenderStateOverloads, RenderStateProps, RenderStateReferences, TypedRenderStateCallback, definedResourceLayoutComponentSymbol };
135
220
  //# sourceMappingURL=render-state.d.mts.map
@@ -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,3 +1,7 @@
1
+ import { LayoutConfigurationError } from "../errors/layout-configuration-error.mjs";
2
+ import { createStateComposable, withStateComposable } from "./state-composable.mjs";
3
+ import { collectComposablePresetEntries, composablePresetMetaKey } from "@jfdevelops/react-layout-composables";
4
+
1
5
  //#region src/create-config/render-state.ts
2
6
  const deferredRenderStateSymbol = Symbol("deferredRenderState");
3
7
  const lazyRenderStateSymbol = Symbol("lazyRenderState");
@@ -15,7 +19,10 @@ function toFragment(definition) {
15
19
  enumerable: false,
16
20
  value: definition
17
21
  });
18
- return fragment;
22
+ return withStateComposable(fragment, {
23
+ input: definition,
24
+ name: definition.state ?? "default"
25
+ });
19
26
  }
20
27
  /**
21
28
  * Creates a state factory whose `props.include` keys are constrained by the
@@ -25,11 +32,93 @@ function createRenderStateBuilder(_arguments) {
25
32
  function createRenderState(input) {
26
33
  return toFragment(normalizeDefinition(input));
27
34
  }
35
+ createRenderState.fromState = (input) => {
36
+ const entry = isLazyRenderState(input.ref) ? input.ref : Object.values(input.ref)[0];
37
+ if (isLazyRenderState(entry)) {
38
+ const lazyState = { [lazyRenderStateSymbol]: async () => {
39
+ const source = await findDefinedRenderState(await entry[lazyRenderStateSymbol]());
40
+ return { Derived: createRenderState.fromState({
41
+ ...input,
42
+ ref: toFragment(source)
43
+ }) };
44
+ } };
45
+ const name = input.state ?? "default";
46
+ const fragment = { [name]: lazyState };
47
+ Object.defineProperty(fragment, definedRenderStateSymbol, { value: lazyState });
48
+ return withStateComposable(fragment, {
49
+ input: lazyState,
50
+ name
51
+ });
52
+ }
53
+ const source = isDeferredRenderState(entry) ? entry[deferredRenderStateSymbol] : definedRenderStateSymbol in input.ref ? input.ref[definedRenderStateSymbol] : void 0;
54
+ if (!source || typeof source.render !== "function") throw new LayoutConfigurationError("fromState requires a created render state");
55
+ const custom = input.props?.custom ?? {};
56
+ const includes = input.props?.include ?? Object.fromEntries(Object.entries({
57
+ ...source.props?.include,
58
+ ...Object.fromEntries(Object.entries(source.props?.custom ?? {}).map(([key, prop]) => [key, {
59
+ visibility: prop.visibility,
60
+ passthrough: "component"
61
+ }]))
62
+ }).filter(([key]) => !(key in custom)));
63
+ return toFragment({
64
+ state: input.state ?? "default",
65
+ props: {
66
+ custom,
67
+ include: includes
68
+ },
69
+ composables: (create, states) => {
70
+ const inherited = source.composables?.(create, states) ?? {};
71
+ const local = input.composables?.(create, states) ?? {};
72
+ if (Object.prototype.hasOwnProperty.call(local, "Ref")) throw new LayoutConfigurationError("Composable name \"Ref\" is reserved by fromState");
73
+ const schemas = Object.assign({}, ...collectComposablePresetEntries(inherited).map(({ props }) => props), source.props?.custom);
74
+ const selected = Object.fromEntries(Object.entries(schemas).filter(([key]) => key in includes));
75
+ const referenceSource = {
76
+ ...source,
77
+ props: {
78
+ ...source.props,
79
+ include: Object.fromEntries(Object.entries(source.props?.include ?? {}).map(([key, behavior]) => [key, {
80
+ visibility: behavior === "optional" || typeof behavior === "object" && behavior !== null && "visibility" in behavior && behavior.visibility === "optional" ? "optional" : "required",
81
+ passthrough: "component"
82
+ }]))
83
+ }
84
+ };
85
+ const Ref = createStateComposable({
86
+ input: input.lazy || isDeferredRenderState(entry) ? { [deferredRenderStateSymbol]: referenceSource } : referenceSource,
87
+ name: source.state ?? "default",
88
+ fallbackStateName: input.state
89
+ }, {
90
+ props: { include: Object.fromEntries(Object.keys(includes).map((key) => [key, true])) },
91
+ normalizeIncludedKeys: true
92
+ });
93
+ Object.defineProperty(Ref, composablePresetMetaKey, { value: {
94
+ key: "Ref",
95
+ props: selected
96
+ } });
97
+ return {
98
+ ...local,
99
+ Ref
100
+ };
101
+ },
102
+ render: input.render
103
+ });
104
+ };
28
105
  createRenderState.defer = (input) => {
29
106
  const definition = normalizeDefinition(input);
30
- return { [definition.state ?? "default"]: { [deferredRenderStateSymbol]: definition } };
107
+ const deferred = { [deferredRenderStateSymbol]: definition };
108
+ const fragment = { [definition.state ?? "default"]: deferred };
109
+ Object.defineProperty(fragment, definedRenderStateSymbol, { value: definition });
110
+ return withStateComposable(fragment, {
111
+ input: deferred,
112
+ name: definition.state ?? "default"
113
+ });
114
+ };
115
+ createRenderState.lazy = (load) => {
116
+ const lazyState = { [lazyRenderStateSymbol]: load };
117
+ return withStateComposable(lazyState, {
118
+ input: lazyState,
119
+ name: "lazy"
120
+ });
31
121
  };
32
- createRenderState.lazy = (load) => ({ [lazyRenderStateSymbol]: load });
33
122
  return createRenderState;
34
123
  }
35
124
  /** Type guard for states created with `createRenderState.defer(...)`. */
@@ -41,13 +130,14 @@ function isLazyRenderState(value) {
41
130
  return typeof value === "object" && value !== null && lazyRenderStateSymbol in value;
42
131
  }
43
132
  /**
44
- * Selects the single state definition exported by a lazy module. Throws when
45
- * the module exports none or more than one, avoiding ambiguous selection.
133
+ * Resolves the single state exported by a lazy module, including derived lazy
134
+ * states. Throws when a module exports none or more than one.
46
135
  */
47
- function findDefinedRenderState(module) {
136
+ async function findDefinedRenderState(module) {
48
137
  const definitions = Object.values(module).filter((value) => typeof value === "object" && value !== null && definedRenderStateSymbol in value);
49
138
  if (definitions.length !== 1) throw new Error(`A lazy render-state module must export exactly one defined render state; received ${definitions.length}.`);
50
- return definitions[0][definedRenderStateSymbol];
139
+ const definition = definitions[0][definedRenderStateSymbol];
140
+ return isLazyRenderState(definition) ? findDefinedRenderState(await definition[lazyRenderStateSymbol]()) : definition;
51
141
  }
52
142
 
53
143
  //#endregion