@jfdevelops/react-layout 1.6.1 → 2.1.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.
- package/dist/create-config/create-defined-resource-layout.cjs +26 -14
- package/dist/create-config/create-defined-resource-layout.cjs.map +1 -1
- package/dist/create-config/create-defined-resource-layout.d.cts +12 -6
- package/dist/create-config/create-defined-resource-layout.d.cts.map +1 -1
- package/dist/create-config/create-defined-resource-layout.d.mts +12 -6
- package/dist/create-config/create-defined-resource-layout.d.mts.map +1 -1
- package/dist/create-config/create-defined-resource-layout.mjs +27 -15
- package/dist/create-config/create-defined-resource-layout.mjs.map +1 -1
- package/dist/create-config/define-layout.cjs +129 -58
- package/dist/create-config/define-layout.cjs.map +1 -1
- package/dist/create-config/define-layout.d.cts +9 -13
- package/dist/create-config/define-layout.d.cts.map +1 -1
- package/dist/create-config/define-layout.d.mts +9 -13
- package/dist/create-config/define-layout.d.mts.map +1 -1
- package/dist/create-config/define-layout.mjs +130 -59
- package/dist/create-config/define-layout.mjs.map +1 -1
- package/dist/create-config/for-resources/create-component.d.cts +62 -38
- package/dist/create-config/for-resources/create-component.d.cts.map +1 -1
- package/dist/create-config/for-resources/create-component.d.mts +62 -38
- package/dist/create-config/for-resources/create-component.d.mts.map +1 -1
- package/dist/create-config/for-resources/create-for-resources.cjs +88 -12
- package/dist/create-config/for-resources/create-for-resources.cjs.map +1 -1
- package/dist/create-config/for-resources/create-for-resources.mjs +88 -12
- package/dist/create-config/for-resources/create-for-resources.mjs.map +1 -1
- package/dist/create-config/for-resources/scoped-layout.d.cts +2 -2
- package/dist/create-config/for-resources/scoped-layout.d.cts.map +1 -1
- package/dist/create-config/for-resources/scoped-layout.d.mts +2 -2
- package/dist/create-config/for-resources/scoped-layout.d.mts.map +1 -1
- package/dist/create-config/for-resources/scoped-render.cjs +39 -4
- package/dist/create-config/for-resources/scoped-render.cjs.map +1 -1
- package/dist/create-config/for-resources/scoped-render.d.cts +8 -1
- package/dist/create-config/for-resources/scoped-render.d.cts.map +1 -1
- package/dist/create-config/for-resources/scoped-render.d.mts +8 -1
- package/dist/create-config/for-resources/scoped-render.d.mts.map +1 -1
- package/dist/create-config/for-resources/scoped-render.mjs +39 -4
- package/dist/create-config/for-resources/scoped-render.mjs.map +1 -1
- package/dist/create-config/index.d.cts +3 -2
- package/dist/create-config/index.d.mts +3 -2
- package/dist/create-config/layout-name.cjs +1 -1
- package/dist/create-config/layout-name.mjs +1 -1
- package/dist/create-config/lazy-resource-layout.cjs +70 -86
- package/dist/create-config/lazy-resource-layout.cjs.map +1 -1
- package/dist/create-config/lazy-resource-layout.d.cts +9 -31
- package/dist/create-config/lazy-resource-layout.d.cts.map +1 -1
- package/dist/create-config/lazy-resource-layout.d.mts +9 -31
- package/dist/create-config/lazy-resource-layout.d.mts.map +1 -1
- package/dist/create-config/lazy-resource-layout.mjs +70 -86
- package/dist/create-config/lazy-resource-layout.mjs.map +1 -1
- package/dist/create-config/preview.cjs +1 -1
- package/dist/create-config/preview.d.cts +2 -0
- package/dist/create-config/preview.d.cts.map +1 -1
- package/dist/create-config/preview.d.mts +2 -0
- package/dist/create-config/preview.d.mts.map +1 -1
- package/dist/create-config/preview.mjs +1 -1
- package/dist/create-config/render-state-context.cjs +24 -0
- package/dist/create-config/render-state-context.cjs.map +1 -0
- package/dist/create-config/render-state-context.mjs +22 -0
- package/dist/create-config/render-state-context.mjs.map +1 -0
- package/dist/create-config/render-state.cjs +58 -18
- package/dist/create-config/render-state.cjs.map +1 -1
- package/dist/create-config/render-state.d.cts +44 -21
- package/dist/create-config/render-state.d.cts.map +1 -1
- package/dist/create-config/render-state.d.mts +44 -21
- package/dist/create-config/render-state.d.mts.map +1 -1
- package/dist/create-config/render-state.mjs +55 -18
- package/dist/create-config/render-state.mjs.map +1 -1
- package/dist/create-config/state-composable.cjs +4 -2
- package/dist/create-config/state-composable.cjs.map +1 -1
- package/dist/create-config/state-composable.d.cts.map +1 -1
- package/dist/create-config/state-composable.d.mts.map +1 -1
- package/dist/create-config/state-composable.mjs +4 -2
- package/dist/create-config/state-composable.mjs.map +1 -1
- package/dist/errors/lazy-resource-error.cjs +37 -0
- package/dist/errors/lazy-resource-error.cjs.map +1 -0
- package/dist/errors/lazy-resource-error.d.cts +26 -0
- package/dist/errors/lazy-resource-error.d.cts.map +1 -0
- package/dist/errors/lazy-resource-error.d.mts +26 -0
- package/dist/errors/lazy-resource-error.d.mts.map +1 -0
- package/dist/errors/lazy-resource-error.mjs +35 -0
- package/dist/errors/lazy-resource-error.mjs.map +1 -0
- package/dist/errors/react-layout-error.cjs +1 -1
- package/dist/errors/react-layout-error.mjs +1 -1
- package/dist/errors/resource-state-error.cjs +4 -1
- package/dist/errors/resource-state-error.cjs.map +1 -1
- package/dist/errors/resource-state-error.d.cts +1 -0
- package/dist/errors/resource-state-error.d.cts.map +1 -1
- package/dist/errors/resource-state-error.d.mts +1 -0
- package/dist/errors/resource-state-error.d.mts.map +1 -1
- package/dist/errors/resource-state-error.mjs +4 -1
- package/dist/errors/resource-state-error.mjs.map +1 -1
- package/dist/index.cjs +6 -2
- package/dist/index.d.cts +9 -5
- package/dist/index.d.mts +9 -5
- package/dist/index.mjs +4 -3
- package/dist/lazy/create-lazy-loader.cjs +78 -0
- package/dist/lazy/create-lazy-loader.cjs.map +1 -0
- package/dist/lazy/create-lazy-loader.d.cts +19 -0
- package/dist/lazy/create-lazy-loader.d.cts.map +1 -0
- package/dist/lazy/create-lazy-loader.d.mts +19 -0
- package/dist/lazy/create-lazy-loader.d.mts.map +1 -0
- package/dist/lazy/create-lazy-loader.mjs +78 -0
- package/dist/lazy/create-lazy-loader.mjs.map +1 -0
- package/dist/lazy/create-render-state.cjs +59 -0
- package/dist/lazy/create-render-state.cjs.map +1 -0
- package/dist/lazy/create-render-state.d.cts +33 -0
- package/dist/lazy/create-render-state.d.cts.map +1 -0
- package/dist/lazy/create-render-state.d.mts +33 -0
- package/dist/lazy/create-render-state.d.mts.map +1 -0
- package/dist/lazy/create-render-state.mjs +59 -0
- package/dist/lazy/create-render-state.mjs.map +1 -0
- package/dist/lazy/fallback-props.cjs +9 -0
- package/dist/lazy/fallback-props.cjs.map +1 -0
- package/dist/lazy/fallback-props.mjs +9 -0
- package/dist/lazy/fallback-props.mjs.map +1 -0
- package/dist/lazy/inspection.cjs +51 -0
- package/dist/lazy/inspection.cjs.map +1 -0
- package/dist/lazy/inspection.d.cts +28 -0
- package/dist/lazy/inspection.d.cts.map +1 -0
- package/dist/lazy/inspection.d.mts +28 -0
- package/dist/lazy/inspection.d.mts.map +1 -0
- package/dist/lazy/inspection.mjs +50 -0
- package/dist/lazy/inspection.mjs.map +1 -0
- package/dist/lazy/lazy-boundary.cjs +63 -0
- package/dist/lazy/lazy-boundary.cjs.map +1 -0
- package/dist/lazy/lazy-boundary.mjs +63 -0
- package/dist/lazy/lazy-boundary.mjs.map +1 -0
- package/dist/lazy/scoped-content.cjs +87 -0
- package/dist/lazy/scoped-content.cjs.map +1 -0
- package/dist/lazy/scoped-content.d.cts +19 -0
- package/dist/lazy/scoped-content.d.cts.map +1 -0
- package/dist/lazy/scoped-content.d.mts +19 -0
- package/dist/lazy/scoped-content.d.mts.map +1 -0
- package/dist/lazy/scoped-content.mjs +86 -0
- package/dist/lazy/scoped-content.mjs.map +1 -0
- package/dist/lazy/types.cjs +10 -0
- package/dist/lazy/types.cjs.map +1 -0
- package/dist/lazy/types.d.cts +40 -0
- package/dist/lazy/types.d.cts.map +1 -0
- package/dist/lazy/types.d.mts +40 -0
- package/dist/lazy/types.d.mts.map +1 -0
- package/dist/lazy/types.mjs +8 -0
- package/dist/lazy/types.mjs.map +1 -0
- package/dist/props.cjs +4 -2
- package/dist/props.cjs.map +1 -1
- package/dist/props.d.cts +6 -50
- package/dist/props.d.cts.map +1 -1
- package/dist/props.d.mts +6 -50
- package/dist/props.d.mts.map +1 -1
- package/dist/props.mjs +5 -2
- package/dist/props.mjs.map +1 -1
- package/dist/resource.cjs.map +1 -1
- package/dist/resource.d.cts +1 -1
- package/dist/resource.d.cts.map +1 -1
- package/dist/resource.d.mts +1 -1
- package/dist/resource.d.mts.map +1 -1
- package/dist/resource.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { MissingResourceProviderError } from "../errors/missing-resource-provider.mjs";
|
|
1
|
+
import { ReferencedRenderStateContext, RenderStateFallback, RenderStateNameContext } from "./render-state-context.mjs";
|
|
3
2
|
import { LayoutConfigurationError } from "../errors/layout-configuration-error.mjs";
|
|
4
3
|
import { ResourceModuleLoadError, ResourceRenderError } from "../errors/resource-state-error.mjs";
|
|
4
|
+
import { LazyResourceStateNotFoundError } from "../errors/lazy-resource-error.mjs";
|
|
5
|
+
import { LazyBoundary } from "../lazy/lazy-boundary.mjs";
|
|
6
|
+
import { LazyFallbackPropsContext } from "../lazy/fallback-props.mjs";
|
|
7
|
+
import { lazyDefaultsSymbol, lazyStatesSymbol } from "../lazy/types.mjs";
|
|
8
|
+
import { InvalidConfigError } from "../errors/invalid-config.mjs";
|
|
9
|
+
import { MissingResourceProviderError } from "../errors/missing-resource-provider.mjs";
|
|
5
10
|
import { capitalize } from "../utils/capitalize.mjs";
|
|
6
11
|
import { StateComposableContext, createStateReferences, stateReferenceSource } from "./state-composable.mjs";
|
|
7
12
|
import { mergeLayoutProps } from "./merge-layout-props.mjs";
|
|
@@ -14,13 +19,13 @@ import { isResourceConfigComponentKey } from "./component-keys.mjs";
|
|
|
14
19
|
import { createResourceConfig } from "./get-component.mjs";
|
|
15
20
|
import { createResourceLinksFn } from "./create-resource-links.mjs";
|
|
16
21
|
import { createForResource } from "./for-resource.mjs";
|
|
22
|
+
import { deferredRenderStateSymbol, definedResourceLayoutComponentSymbol, isDeferredRenderState, isLazyRenderState, lazyInspectionSymbol, lazyLoaderSymbol, lazyOptionsSymbol } from "./render-state.mjs";
|
|
17
23
|
import { createForResources } from "./for-resources/create-for-resources.mjs";
|
|
18
24
|
import { ResourceLayoutShellPublisherContext, useResourceLayoutShellPublisher } from "./shell-context.mjs";
|
|
19
|
-
import { deferredRenderStateSymbol, definedResourceLayoutComponentSymbol, findDefinedRenderState, isDeferredRenderState, isLazyRenderState, lazyRenderStateSymbol } from "./render-state.mjs";
|
|
20
25
|
import { LayoutComposablePresetProvider, collectComposablePresetEntries, makeComposable, resolveLayoutComposables } from "@jfdevelops/react-layout-composables";
|
|
21
|
-
import { Component, Suspense, createContext, lazy, useCallback, useContext, useLayoutEffect, useMemo,
|
|
22
|
-
import { getLayoutDebug, inspectionId, layoutDebug, layoutPreviewFixtures } from "@jfdevelops/react-layout-devtools-core";
|
|
26
|
+
import { Component, Suspense, createContext, lazy, useCallback, useContext, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
23
27
|
import { Fragment, jsx } from "react/jsx-runtime";
|
|
28
|
+
import { getLayoutDebug, inspectionId, layoutDebug, layoutPreviewFixtures } from "@jfdevelops/react-layout-devtools-core";
|
|
24
29
|
import { attachComponentPropDefinitions, createPrimitivePropBuilder, createProp, resolvePropDefinitionValues, validateProps } from "@jfdevelops/react-layout-validator";
|
|
25
30
|
|
|
26
31
|
//#region src/create-config/define-layout.tsx
|
|
@@ -35,7 +40,10 @@ var RenderStateBoundary = class extends Component {
|
|
|
35
40
|
this.setState({ error: void 0 });
|
|
36
41
|
};
|
|
37
42
|
render() {
|
|
38
|
-
if (this.state.error !== void 0) return
|
|
43
|
+
if (this.state.error !== void 0) return /* @__PURE__ */ jsx(RenderStateFallback, {
|
|
44
|
+
state: "Error",
|
|
45
|
+
children: this.props.fallback(this.state.error, this.retry)
|
|
46
|
+
});
|
|
39
47
|
return this.props.children;
|
|
40
48
|
}
|
|
41
49
|
};
|
|
@@ -120,6 +128,28 @@ function resolveLayoutOptionDefaults(defaults, options) {
|
|
|
120
128
|
else resolved[key] = functionalUpdate(defaultValue, options[key]);
|
|
121
129
|
return resolved;
|
|
122
130
|
}
|
|
131
|
+
function optionalStateChildren(props) {
|
|
132
|
+
if (!props) return props;
|
|
133
|
+
const children = props.custom?.children;
|
|
134
|
+
const childrenInclude = props.include?.children;
|
|
135
|
+
return {
|
|
136
|
+
...props,
|
|
137
|
+
include: props.include && {
|
|
138
|
+
...props.include,
|
|
139
|
+
..."children" in props.include ? { children: typeof childrenInclude === "object" && childrenInclude !== null ? {
|
|
140
|
+
...childrenInclude,
|
|
141
|
+
required: false
|
|
142
|
+
} : childrenInclude === true || childrenInclude === "required" ? {
|
|
143
|
+
required: false,
|
|
144
|
+
suppliedVia: "config"
|
|
145
|
+
} : "optional" } : {}
|
|
146
|
+
},
|
|
147
|
+
custom: props.custom && {
|
|
148
|
+
...props.custom,
|
|
149
|
+
...children ? { children: children.visibility === "required" ? children.optional?.() ?? children : children } : {}
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
}
|
|
123
153
|
function getSynchronousRenderStateDefinition(input, fallbackProps) {
|
|
124
154
|
if (isLazyRenderState(input)) return;
|
|
125
155
|
if (isDeferredRenderState(input)) return input[deferredRenderStateSymbol];
|
|
@@ -139,8 +169,9 @@ function assertUnreservedResourceSlugs(resources, owner) {
|
|
|
139
169
|
if (typeof resource !== "string") assertUnreservedResourceSlugs(resource.subResources, slug);
|
|
140
170
|
}
|
|
141
171
|
}
|
|
142
|
-
function defineResourceLayoutImpl(options, inheritedStateScope, inheritedInspection) {
|
|
172
|
+
function defineResourceLayoutImpl(options, inheritedStateScope, inheritedInspection, renderStateName = "default") {
|
|
143
173
|
const { options: inProps = {}, resources, layout, namespace: defaultNamespace = false } = options;
|
|
174
|
+
const getLazyDefaults = options[lazyDefaultsSymbol] ?? (() => ({}));
|
|
144
175
|
const shellId = options.shellId;
|
|
145
176
|
const inspection = inheritedInspection ? void 0 : inspectDefinition(resources, getLayoutDebug(options)?.source ?? getLayoutDebug(layout)?.source);
|
|
146
177
|
if (inspection) inspection.store.node({
|
|
@@ -319,10 +350,10 @@ function defineResourceLayoutImpl(options, inheritedStateScope, inheritedInspect
|
|
|
319
350
|
}));
|
|
320
351
|
const mergedRenderContext = {
|
|
321
352
|
composables: resolvedComposables,
|
|
322
|
-
resource: layoutContext.resource,
|
|
323
353
|
resources: createLayoutRenderResourcesAccessor(resources, layoutContext.resource),
|
|
324
354
|
name: layoutContext.name,
|
|
325
|
-
inProps: splitInProps
|
|
355
|
+
inProps: splitInProps,
|
|
356
|
+
state: renderStateName
|
|
326
357
|
};
|
|
327
358
|
const stateComponents = {};
|
|
328
359
|
let CreatedDefaultStateComponent;
|
|
@@ -331,11 +362,20 @@ function defineResourceLayoutImpl(options, inheritedStateScope, inheritedInspect
|
|
|
331
362
|
if (CreatedDefaultStateComponent) return;
|
|
332
363
|
return inspectionStore.mount(activeInspection.layout, activeInspection.state, ...resourceId ? [resourceId] : []);
|
|
333
364
|
}, []);
|
|
334
|
-
|
|
335
|
-
return
|
|
365
|
+
const state = useContext(RenderStateNameContext);
|
|
366
|
+
if (CreatedDefaultStateComponent) return /* @__PURE__ */ jsx(ReferencedRenderStateContext.Provider, {
|
|
367
|
+
value: state,
|
|
368
|
+
children: /* @__PURE__ */ jsx(CreatedDefaultStateComponent, { ...renderProps })
|
|
369
|
+
});
|
|
370
|
+
return render(renderProps, {
|
|
371
|
+
...mergedRenderContext,
|
|
372
|
+
state
|
|
373
|
+
});
|
|
336
374
|
}
|
|
337
375
|
function Component(props) {
|
|
376
|
+
const state = useContext(ReferencedRenderStateContext) ?? renderStateName;
|
|
338
377
|
const publishResource = useResourceLayoutShellPublisher();
|
|
378
|
+
const fallbackOptions = useContext(LazyFallbackPropsContext);
|
|
339
379
|
useLayoutEffect(() => {
|
|
340
380
|
publishResource?.(layoutContext.resource, shellId);
|
|
341
381
|
return () => publishResource?.(void 0, shellId);
|
|
@@ -348,7 +388,7 @@ function defineResourceLayoutImpl(options, inheritedStateScope, inheritedInspect
|
|
|
348
388
|
const definition = mergedResolvedInProps[key];
|
|
349
389
|
const includeBehavior = includeLayoutProps?.[key];
|
|
350
390
|
const callSiteValue = allowsComponentPassthrough(includeBehavior) ? readLayoutOptionValue(key, definition, props) : void 0;
|
|
351
|
-
const layoutOptionValue = allowsConfigPassthrough(includeBehavior) ? readLayoutOptionValue(key, definition, layoutOptionValues) : void 0;
|
|
391
|
+
const layoutOptionValue = allowsConfigPassthrough(includeBehavior) ? readLayoutOptionValue(key, definition, fallbackOptions?.owner === activeInspection.layout ? fallbackOptions.props : layoutOptionValues) : void 0;
|
|
352
392
|
const splitValue = key in splitInProps ? splitInProps[key] : void 0;
|
|
353
393
|
const value = callSiteValue ?? layoutOptionValue ?? splitValue;
|
|
354
394
|
if (value !== void 0) includedPropValues[key] = value;
|
|
@@ -367,17 +407,23 @@ function defineResourceLayoutImpl(options, inheritedStateScope, inheritedInspect
|
|
|
367
407
|
...validatedProps,
|
|
368
408
|
...layoutRenderIncludedProps
|
|
369
409
|
};
|
|
370
|
-
const rendered = /* @__PURE__ */ jsx(
|
|
371
|
-
|
|
372
|
-
children: /* @__PURE__ */ jsx(
|
|
373
|
-
value:
|
|
374
|
-
children: /* @__PURE__ */ jsx(
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
410
|
+
const rendered = /* @__PURE__ */ jsx(ReferencedRenderStateContext.Provider, {
|
|
411
|
+
value: void 0,
|
|
412
|
+
children: /* @__PURE__ */ jsx(RenderStateNameContext.Provider, {
|
|
413
|
+
value: state,
|
|
414
|
+
children: /* @__PURE__ */ jsx(ResourceProvider, {
|
|
415
|
+
resource: layoutContext.resource,
|
|
416
|
+
children: /* @__PURE__ */ jsx(LayoutComposablePresetProvider, {
|
|
417
|
+
value: composablePresetProps,
|
|
418
|
+
children: /* @__PURE__ */ jsx(StateComposableContext.Provider, {
|
|
419
|
+
value: {
|
|
420
|
+
scope: stateScope,
|
|
421
|
+
props: layoutRenderProps,
|
|
422
|
+
definitions: mergedResolvedInProps
|
|
423
|
+
},
|
|
424
|
+
children: /* @__PURE__ */ jsx(RenderDefaultState, { renderProps: layoutRenderProps })
|
|
425
|
+
})
|
|
426
|
+
})
|
|
381
427
|
})
|
|
382
428
|
})
|
|
383
429
|
});
|
|
@@ -400,41 +446,38 @@ function defineResourceLayoutImpl(options, inheritedStateScope, inheritedInspect
|
|
|
400
446
|
function createStateComponent(stateName, input, validateStateName = true, fallbackStateName = stateName) {
|
|
401
447
|
const inspectedId = validateStateName ? stateIds.get(stateName) : getReferenceStateId(input, stateName);
|
|
402
448
|
if (isLazyRenderState(input)) {
|
|
403
|
-
const
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
449
|
+
const loader = input[lazyLoaderSymbol];
|
|
450
|
+
const lazyOptions = input[lazyOptionsSymbol];
|
|
451
|
+
const lazyInspection = input[lazyInspectionSymbol];
|
|
452
|
+
inspectionStore.connect(input);
|
|
453
|
+
inspectionStore.edge(inspectedId ?? layoutId, lazyInspection.id, "declares");
|
|
454
|
+
const label = `${layoutContext.resource}:${stateName}`;
|
|
455
|
+
lazyInspection.setLabel(label);
|
|
456
|
+
const map = (stateDefinition) => {
|
|
457
|
+
if (validateStateName && stateDefinition.state !== void 0 && stateDefinition.state !== stateName) throw new LazyResourceStateNotFoundError(label, stateName);
|
|
458
|
+
return createLoadedStateComponent(validateStateName ? stateName : stateDefinition.state ?? stateName, stateDefinition, inspectedId);
|
|
459
|
+
};
|
|
413
460
|
function LazyStateComponent(props) {
|
|
414
|
-
const
|
|
415
|
-
const LazyState = useRef(createLazyState());
|
|
416
|
-
const CurrentLazyState = LazyState.current;
|
|
461
|
+
const defaults = lazyOptions.defaults();
|
|
417
462
|
const LoadingComponent = fallbackStateName === "Loading" ? void 0 : stateComponents.Loading;
|
|
418
|
-
const
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
463
|
+
const ErrorState = fallbackStateName === "Error" ? void 0 : stateComponents.Error;
|
|
464
|
+
const LoadingDefault = defaults.Loading;
|
|
465
|
+
const ErrorComponent = ErrorState ? ({ error, retry }) => /* @__PURE__ */ jsx(RenderStateRetryContext.Provider, {
|
|
466
|
+
value: retry,
|
|
467
|
+
children: /* @__PURE__ */ jsx(ErrorState, {
|
|
468
|
+
error,
|
|
469
|
+
retry
|
|
470
|
+
})
|
|
471
|
+
}) : defaults.Error;
|
|
472
|
+
return /* @__PURE__ */ jsx(LazyBoundary, {
|
|
473
|
+
loader,
|
|
474
|
+
map,
|
|
475
|
+
resource: String(layoutContext.resource),
|
|
476
|
+
componentProps: props,
|
|
477
|
+
ErrorComponent,
|
|
478
|
+
onMount: lazyInspection.hooks.onMount,
|
|
479
|
+
fallback: lazyOptions.fallback !== void 0 ? lazyOptions.fallback : LoadingComponent ? /* @__PURE__ */ jsx(LoadingComponent, {}) : LoadingDefault ? /* @__PURE__ */ jsx(LoadingDefault, { resource: String(layoutContext.resource) }) : null
|
|
426
480
|
});
|
|
427
|
-
return ErrorComponent ? /* @__PURE__ */ jsx(RenderStateBoundary, {
|
|
428
|
-
fallback: (error, reset) => /* @__PURE__ */ jsx(RenderStateRetryContext.Provider, {
|
|
429
|
-
value: reset,
|
|
430
|
-
children: /* @__PURE__ */ jsx(ErrorComponent, {
|
|
431
|
-
error: toResourceStateError(String(layoutContext.resource), stateName, error),
|
|
432
|
-
retry: reset
|
|
433
|
-
})
|
|
434
|
-
}),
|
|
435
|
-
onRetry: retry,
|
|
436
|
-
children: rendered
|
|
437
|
-
}) : rendered;
|
|
438
481
|
}
|
|
439
482
|
return LazyStateComponent;
|
|
440
483
|
}
|
|
@@ -447,7 +490,10 @@ function defineResourceLayoutImpl(options, inheritedStateScope, inheritedInspect
|
|
|
447
490
|
const LoadingComponent = fallbackStateName === "Loading" ? void 0 : stateComponents.Loading;
|
|
448
491
|
const ErrorComponent = fallbackStateName === "Error" ? void 0 : stateComponents.Error;
|
|
449
492
|
const rendered = /* @__PURE__ */ jsx(Suspense, {
|
|
450
|
-
fallback:
|
|
493
|
+
fallback: /* @__PURE__ */ jsx(RenderStateFallback, {
|
|
494
|
+
state: "Loading",
|
|
495
|
+
children: LoadingComponent ? /* @__PURE__ */ jsx(LoadingComponent, {}) : null
|
|
496
|
+
}),
|
|
451
497
|
children: /* @__PURE__ */ jsx(DeferredState, { ...props })
|
|
452
498
|
});
|
|
453
499
|
return ErrorComponent ? /* @__PURE__ */ jsx(RenderStateBoundary, {
|
|
@@ -488,13 +534,13 @@ function defineResourceLayoutImpl(options, inheritedStateScope, inheritedInspect
|
|
|
488
534
|
options: inProps,
|
|
489
535
|
layout: {
|
|
490
536
|
composables: stateComposables,
|
|
491
|
-
props: mergeLayoutProps(legacyLayoutProps, definition.props),
|
|
537
|
+
props: optionalStateChildren(mergeLayoutProps(legacyLayoutProps, definition.props)),
|
|
492
538
|
render: stateRender
|
|
493
539
|
}
|
|
494
540
|
}, stateScope, {
|
|
495
541
|
...activeInspection,
|
|
496
542
|
state: inspectedState ?? getReferenceStateId(definition, stateName)
|
|
497
|
-
}).createResourceLayout({
|
|
543
|
+
}, stateName).createResourceLayout({
|
|
498
544
|
...layoutOptions,
|
|
499
545
|
name,
|
|
500
546
|
namespace: false
|
|
@@ -557,6 +603,17 @@ function defineResourceLayoutImpl(options, inheritedStateScope, inheritedInspect
|
|
|
557
603
|
name
|
|
558
604
|
}),
|
|
559
605
|
...exposedStates,
|
|
606
|
+
[lazyStatesSymbol]: {
|
|
607
|
+
owner: layoutId,
|
|
608
|
+
Loading: stateComponents.Loading,
|
|
609
|
+
Error: stateComponents.Error ? ({ error, retry }) => /* @__PURE__ */ jsx(RenderStateRetryContext.Provider, {
|
|
610
|
+
value: retry,
|
|
611
|
+
children: /* @__PURE__ */ jsx(stateComponents.Error, {
|
|
612
|
+
error,
|
|
613
|
+
retry
|
|
614
|
+
})
|
|
615
|
+
}) : void 0
|
|
616
|
+
},
|
|
560
617
|
[definedResourceLayoutComponentSymbol]: true
|
|
561
618
|
});
|
|
562
619
|
previewRoot = createdComponent;
|
|
@@ -618,7 +675,21 @@ function defineResourceLayoutImpl(options, inheritedStateScope, inheritedInspect
|
|
|
618
675
|
createLayoutForResource: createLayoutForResourceBuilder,
|
|
619
676
|
...layout.composables ? { createMakeComposableLayout: createTopLevelMakeComposable } : {},
|
|
620
677
|
createResourceLayout: definedResourceLayout,
|
|
621
|
-
getComponentPropDefinitions
|
|
678
|
+
getComponentPropDefinitions,
|
|
679
|
+
lazyEnvironment: {
|
|
680
|
+
store: inheritedInspection?.store ?? inspection.store,
|
|
681
|
+
parent: inheritedInspection?.layout ?? inspection.definition,
|
|
682
|
+
defaults: getLazyDefaults,
|
|
683
|
+
states(resource, props) {
|
|
684
|
+
if (typeof layout.render !== "object" || !layout.render || !("Loading" in layout.render || "Error" in layout.render)) return {};
|
|
685
|
+
return definedResourceLayout({
|
|
686
|
+
...props,
|
|
687
|
+
resource,
|
|
688
|
+
namespace: false,
|
|
689
|
+
name: capitalize(resource)
|
|
690
|
+
})[lazyStatesSymbol];
|
|
691
|
+
}
|
|
692
|
+
}
|
|
622
693
|
})
|
|
623
694
|
};
|
|
624
695
|
if (layout.composables) createResourceLayoutExtras.makeComposable = createTopLevelMakeComposable();
|