@jfdevelops/react-layout 1.6.1 → 2.0.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 (137) hide show
  1. package/dist/create-config/create-defined-resource-layout.cjs +18 -14
  2. package/dist/create-config/create-defined-resource-layout.cjs.map +1 -1
  3. package/dist/create-config/create-defined-resource-layout.d.cts +9 -5
  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 +9 -5
  6. package/dist/create-config/create-defined-resource-layout.d.mts.map +1 -1
  7. package/dist/create-config/create-defined-resource-layout.mjs +19 -15
  8. package/dist/create-config/create-defined-resource-layout.mjs.map +1 -1
  9. package/dist/create-config/define-layout.cjs +66 -39
  10. package/dist/create-config/define-layout.cjs.map +1 -1
  11. package/dist/create-config/define-layout.d.cts +0 -5
  12. package/dist/create-config/define-layout.d.cts.map +1 -1
  13. package/dist/create-config/define-layout.d.mts +0 -5
  14. package/dist/create-config/define-layout.d.mts.map +1 -1
  15. package/dist/create-config/define-layout.mjs +67 -40
  16. package/dist/create-config/define-layout.mjs.map +1 -1
  17. package/dist/create-config/for-resources/create-component.d.cts +39 -21
  18. package/dist/create-config/for-resources/create-component.d.cts.map +1 -1
  19. package/dist/create-config/for-resources/create-component.d.mts +39 -21
  20. package/dist/create-config/for-resources/create-component.d.mts.map +1 -1
  21. package/dist/create-config/for-resources/create-for-resources.cjs +62 -7
  22. package/dist/create-config/for-resources/create-for-resources.cjs.map +1 -1
  23. package/dist/create-config/for-resources/create-for-resources.mjs +62 -7
  24. package/dist/create-config/for-resources/create-for-resources.mjs.map +1 -1
  25. package/dist/create-config/for-resources/scoped-render.cjs +1 -0
  26. package/dist/create-config/for-resources/scoped-render.cjs.map +1 -1
  27. package/dist/create-config/for-resources/scoped-render.d.cts.map +1 -1
  28. package/dist/create-config/for-resources/scoped-render.d.mts.map +1 -1
  29. package/dist/create-config/for-resources/scoped-render.mjs +1 -0
  30. package/dist/create-config/for-resources/scoped-render.mjs.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/layout-name.cjs +1 -1
  34. package/dist/create-config/layout-name.mjs +1 -1
  35. package/dist/create-config/lazy-resource-layout.cjs +70 -86
  36. package/dist/create-config/lazy-resource-layout.cjs.map +1 -1
  37. package/dist/create-config/lazy-resource-layout.d.cts +9 -31
  38. package/dist/create-config/lazy-resource-layout.d.cts.map +1 -1
  39. package/dist/create-config/lazy-resource-layout.d.mts +9 -31
  40. package/dist/create-config/lazy-resource-layout.d.mts.map +1 -1
  41. package/dist/create-config/lazy-resource-layout.mjs +70 -86
  42. package/dist/create-config/lazy-resource-layout.mjs.map +1 -1
  43. package/dist/create-config/preview.cjs +1 -1
  44. package/dist/create-config/preview.d.cts +2 -0
  45. package/dist/create-config/preview.d.cts.map +1 -1
  46. package/dist/create-config/preview.d.mts +2 -0
  47. package/dist/create-config/preview.d.mts.map +1 -1
  48. package/dist/create-config/preview.mjs +1 -1
  49. package/dist/create-config/render-state.cjs +57 -18
  50. package/dist/create-config/render-state.cjs.map +1 -1
  51. package/dist/create-config/render-state.d.cts +18 -6
  52. package/dist/create-config/render-state.d.cts.map +1 -1
  53. package/dist/create-config/render-state.d.mts +18 -6
  54. package/dist/create-config/render-state.d.mts.map +1 -1
  55. package/dist/create-config/render-state.mjs +54 -18
  56. package/dist/create-config/render-state.mjs.map +1 -1
  57. package/dist/errors/lazy-resource-error.cjs +37 -0
  58. package/dist/errors/lazy-resource-error.cjs.map +1 -0
  59. package/dist/errors/lazy-resource-error.d.cts +26 -0
  60. package/dist/errors/lazy-resource-error.d.cts.map +1 -0
  61. package/dist/errors/lazy-resource-error.d.mts +26 -0
  62. package/dist/errors/lazy-resource-error.d.mts.map +1 -0
  63. package/dist/errors/lazy-resource-error.mjs +35 -0
  64. package/dist/errors/lazy-resource-error.mjs.map +1 -0
  65. package/dist/errors/react-layout-error.cjs +1 -1
  66. package/dist/errors/react-layout-error.mjs +1 -1
  67. package/dist/errors/resource-state-error.cjs +4 -1
  68. package/dist/errors/resource-state-error.cjs.map +1 -1
  69. package/dist/errors/resource-state-error.d.cts +1 -0
  70. package/dist/errors/resource-state-error.d.cts.map +1 -1
  71. package/dist/errors/resource-state-error.d.mts +1 -0
  72. package/dist/errors/resource-state-error.d.mts.map +1 -1
  73. package/dist/errors/resource-state-error.mjs +4 -1
  74. package/dist/errors/resource-state-error.mjs.map +1 -1
  75. package/dist/index.cjs +6 -2
  76. package/dist/index.d.cts +7 -4
  77. package/dist/index.d.mts +7 -4
  78. package/dist/index.mjs +4 -3
  79. package/dist/lazy/create-error-component.cjs +17 -0
  80. package/dist/lazy/create-error-component.cjs.map +1 -0
  81. package/dist/lazy/create-error-component.mjs +16 -0
  82. package/dist/lazy/create-error-component.mjs.map +1 -0
  83. package/dist/lazy/create-lazy-loader.cjs +78 -0
  84. package/dist/lazy/create-lazy-loader.cjs.map +1 -0
  85. package/dist/lazy/create-lazy-loader.d.cts +19 -0
  86. package/dist/lazy/create-lazy-loader.d.cts.map +1 -0
  87. package/dist/lazy/create-lazy-loader.d.mts +19 -0
  88. package/dist/lazy/create-lazy-loader.d.mts.map +1 -0
  89. package/dist/lazy/create-lazy-loader.mjs +78 -0
  90. package/dist/lazy/create-lazy-loader.mjs.map +1 -0
  91. package/dist/lazy/fallback-props.cjs +9 -0
  92. package/dist/lazy/fallback-props.cjs.map +1 -0
  93. package/dist/lazy/fallback-props.mjs +9 -0
  94. package/dist/lazy/fallback-props.mjs.map +1 -0
  95. package/dist/lazy/inspection.cjs +51 -0
  96. package/dist/lazy/inspection.cjs.map +1 -0
  97. package/dist/lazy/inspection.d.cts +28 -0
  98. package/dist/lazy/inspection.d.cts.map +1 -0
  99. package/dist/lazy/inspection.d.mts +28 -0
  100. package/dist/lazy/inspection.d.mts.map +1 -0
  101. package/dist/lazy/inspection.mjs +50 -0
  102. package/dist/lazy/inspection.mjs.map +1 -0
  103. package/dist/lazy/lazy-boundary.cjs +55 -0
  104. package/dist/lazy/lazy-boundary.cjs.map +1 -0
  105. package/dist/lazy/lazy-boundary.mjs +55 -0
  106. package/dist/lazy/lazy-boundary.mjs.map +1 -0
  107. package/dist/lazy/scoped-content.cjs +87 -0
  108. package/dist/lazy/scoped-content.cjs.map +1 -0
  109. package/dist/lazy/scoped-content.d.cts +19 -0
  110. package/dist/lazy/scoped-content.d.cts.map +1 -0
  111. package/dist/lazy/scoped-content.d.mts +19 -0
  112. package/dist/lazy/scoped-content.d.mts.map +1 -0
  113. package/dist/lazy/scoped-content.mjs +86 -0
  114. package/dist/lazy/scoped-content.mjs.map +1 -0
  115. package/dist/lazy/types.cjs +10 -0
  116. package/dist/lazy/types.cjs.map +1 -0
  117. package/dist/lazy/types.d.cts +39 -0
  118. package/dist/lazy/types.d.cts.map +1 -0
  119. package/dist/lazy/types.d.mts +39 -0
  120. package/dist/lazy/types.d.mts.map +1 -0
  121. package/dist/lazy/types.mjs +8 -0
  122. package/dist/lazy/types.mjs.map +1 -0
  123. package/dist/props.cjs +4 -2
  124. package/dist/props.cjs.map +1 -1
  125. package/dist/props.d.cts +6 -50
  126. package/dist/props.d.cts.map +1 -1
  127. package/dist/props.d.mts +6 -50
  128. package/dist/props.d.mts.map +1 -1
  129. package/dist/props.mjs +5 -2
  130. package/dist/props.mjs.map +1 -1
  131. package/dist/resource.cjs.map +1 -1
  132. package/dist/resource.d.cts +1 -1
  133. package/dist/resource.d.cts.map +1 -1
  134. package/dist/resource.d.mts +1 -1
  135. package/dist/resource.d.mts.map +1 -1
  136. package/dist/resource.mjs.map +1 -1
  137. package/package.json +3 -3
@@ -1,7 +1,11 @@
1
- const require_invalid_config = require('../errors/invalid-config.cjs');
2
- const require_missing_resource_provider = require('../errors/missing-resource-provider.cjs');
3
1
  const require_layout_configuration_error = require('../errors/layout-configuration-error.cjs');
4
2
  const require_resource_state_error = require('../errors/resource-state-error.cjs');
3
+ const require_lazy_resource_error = require('../errors/lazy-resource-error.cjs');
4
+ const require_lazy_boundary = require('../lazy/lazy-boundary.cjs');
5
+ const require_fallback_props = require('../lazy/fallback-props.cjs');
6
+ const require_types = require('../lazy/types.cjs');
7
+ const require_invalid_config = require('../errors/invalid-config.cjs');
8
+ const require_missing_resource_provider = require('../errors/missing-resource-provider.cjs');
5
9
  const require_capitalize = require('../utils/capitalize.cjs');
6
10
  const require_state_composable = require('./state-composable.cjs');
7
11
  const require_merge_layout_props = require('./merge-layout-props.cjs');
@@ -14,13 +18,13 @@ const require_component_keys = require('./component-keys.cjs');
14
18
  const require_get_component = require('./get-component.cjs');
15
19
  const require_create_resource_links = require('./create-resource-links.cjs');
16
20
  const require_for_resource = require('./for-resource.cjs');
21
+ const require_render_state = require('./render-state.cjs');
17
22
  const require_create_for_resources = require('./for-resources/create-for-resources.cjs');
18
23
  const require_shell_context = require('./shell-context.cjs');
19
- const require_render_state = require('./render-state.cjs');
20
24
  let _jfdevelops_react_layout_composables = require("@jfdevelops/react-layout-composables");
21
25
  let react = require("react");
22
- let _jfdevelops_react_layout_devtools_core = require("@jfdevelops/react-layout-devtools-core");
23
26
  let react_jsx_runtime = require("react/jsx-runtime");
27
+ let _jfdevelops_react_layout_devtools_core = require("@jfdevelops/react-layout-devtools-core");
24
28
  let _jfdevelops_react_layout_validator = require("@jfdevelops/react-layout-validator");
25
29
 
26
30
  //#region src/create-config/define-layout.tsx
@@ -141,6 +145,7 @@ function assertUnreservedResourceSlugs(resources, owner) {
141
145
  }
142
146
  function defineResourceLayoutImpl(options, inheritedStateScope, inheritedInspection) {
143
147
  const { options: inProps = {}, resources, layout, namespace: defaultNamespace = false } = options;
148
+ const getLazyDefaults = options[require_types.lazyDefaultsSymbol] ?? (() => ({}));
144
149
  const shellId = options.shellId;
145
150
  const inspection = inheritedInspection ? void 0 : require_inspection.inspectDefinition(resources, (0, _jfdevelops_react_layout_devtools_core.getLayoutDebug)(options)?.source ?? (0, _jfdevelops_react_layout_devtools_core.getLayoutDebug)(layout)?.source);
146
151
  if (inspection) inspection.store.node({
@@ -319,7 +324,6 @@ function defineResourceLayoutImpl(options, inheritedStateScope, inheritedInspect
319
324
  }));
320
325
  const mergedRenderContext = {
321
326
  composables: resolvedComposables,
322
- resource: layoutContext.resource,
323
327
  resources: createLayoutRenderResourcesAccessor(resources, layoutContext.resource),
324
328
  name: layoutContext.name,
325
329
  inProps: splitInProps
@@ -336,6 +340,7 @@ function defineResourceLayoutImpl(options, inheritedStateScope, inheritedInspect
336
340
  }
337
341
  function Component(props) {
338
342
  const publishResource = require_shell_context.useResourceLayoutShellPublisher();
343
+ const fallbackOptions = (0, react.useContext)(require_fallback_props.LazyFallbackPropsContext);
339
344
  (0, react.useLayoutEffect)(() => {
340
345
  publishResource?.(layoutContext.resource, shellId);
341
346
  return () => publishResource?.(void 0, shellId);
@@ -348,7 +353,7 @@ function defineResourceLayoutImpl(options, inheritedStateScope, inheritedInspect
348
353
  const definition = mergedResolvedInProps[key];
349
354
  const includeBehavior = includeLayoutProps?.[key];
350
355
  const callSiteValue = allowsComponentPassthrough(includeBehavior) ? readLayoutOptionValue(key, definition, props) : void 0;
351
- const layoutOptionValue = allowsConfigPassthrough(includeBehavior) ? readLayoutOptionValue(key, definition, layoutOptionValues) : void 0;
356
+ const layoutOptionValue = allowsConfigPassthrough(includeBehavior) ? readLayoutOptionValue(key, definition, fallbackOptions?.owner === activeInspection.layout ? fallbackOptions.props : layoutOptionValues) : void 0;
352
357
  const splitValue = key in splitInProps ? splitInProps[key] : void 0;
353
358
  const value = callSiteValue ?? layoutOptionValue ?? splitValue;
354
359
  if (value !== void 0) includedPropValues[key] = value;
@@ -400,41 +405,38 @@ function defineResourceLayoutImpl(options, inheritedStateScope, inheritedInspect
400
405
  function createStateComponent(stateName, input, validateStateName = true, fallbackStateName = stateName) {
401
406
  const inspectedId = validateStateName ? stateIds.get(stateName) : getReferenceStateId(input, stateName);
402
407
  if (require_render_state.isLazyRenderState(input)) {
403
- const loadState = input[require_render_state.lazyRenderStateSymbol];
404
- function createLazyState() {
405
- return (0, react.lazy)(async () => {
406
- const stateDefinition = await require_render_state.findDefinedRenderState(await loadState().catch((error) => {
407
- throw new require_resource_state_error.ResourceModuleLoadError(String(layoutContext.resource), error);
408
- }));
409
- if (validateStateName && stateDefinition.state !== void 0 && stateDefinition.state !== stateName) throw new require_layout_configuration_error.LayoutConfigurationError(`Lazy render state "${stateDefinition.state}" cannot be used as "${stateName}"`);
410
- return { default: createLoadedStateComponent(validateStateName ? stateName : stateDefinition.state ?? stateName, stateDefinition, inspectedId) };
411
- });
412
- }
408
+ const loader = input[require_render_state.lazyLoaderSymbol];
409
+ const lazyOptions = input[require_render_state.lazyOptionsSymbol];
410
+ const lazyInspection = input[require_render_state.lazyInspectionSymbol];
411
+ inspectionStore.connect(input);
412
+ inspectionStore.edge(inspectedId ?? layoutId, lazyInspection.id, "declares");
413
+ const label = `${layoutContext.resource}:${stateName}`;
414
+ lazyInspection.setLabel(label);
415
+ const map = (stateDefinition) => {
416
+ if (validateStateName && stateDefinition.state !== void 0 && stateDefinition.state !== stateName) throw new require_lazy_resource_error.LazyResourceStateNotFoundError(label, stateName);
417
+ return createLoadedStateComponent(validateStateName ? stateName : stateDefinition.state ?? stateName, stateDefinition, inspectedId);
418
+ };
413
419
  function LazyStateComponent(props) {
414
- const [, rerender] = (0, react.useReducer)((version) => version + 1, 0);
415
- const LazyState = (0, react.useRef)(createLazyState());
416
- const CurrentLazyState = LazyState.current;
420
+ const defaults = lazyOptions.defaults();
417
421
  const LoadingComponent = fallbackStateName === "Loading" ? void 0 : stateComponents.Loading;
418
- const ErrorComponent = fallbackStateName === "Error" ? void 0 : stateComponents.Error;
419
- function retry() {
420
- LazyState.current = createLazyState();
421
- rerender();
422
- }
423
- const rendered = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react.Suspense, {
424
- fallback: LoadingComponent ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LoadingComponent, {}) : null,
425
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CurrentLazyState, { ...props })
422
+ const ErrorState = fallbackStateName === "Error" ? void 0 : stateComponents.Error;
423
+ const LoadingDefault = defaults.Loading;
424
+ const ErrorComponent = ErrorState ? ({ error, retry }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RenderStateRetryContext.Provider, {
425
+ value: retry,
426
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ErrorState, {
427
+ error,
428
+ retry
429
+ })
430
+ }) : defaults.Error;
431
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_lazy_boundary.LazyBoundary, {
432
+ loader,
433
+ map,
434
+ resource: String(layoutContext.resource),
435
+ componentProps: props,
436
+ ErrorComponent,
437
+ onMount: lazyInspection.hooks.onMount,
438
+ fallback: lazyOptions.fallback !== void 0 ? lazyOptions.fallback : LoadingComponent ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LoadingComponent, {}) : LoadingDefault ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LoadingDefault, { resource: String(layoutContext.resource) }) : null
426
439
  });
427
- return ErrorComponent ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RenderStateBoundary, {
428
- fallback: (error, reset) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RenderStateRetryContext.Provider, {
429
- value: reset,
430
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ErrorComponent, {
431
- error: toResourceStateError(String(layoutContext.resource), stateName, error),
432
- retry: reset
433
- })
434
- }),
435
- onRetry: retry,
436
- children: rendered
437
- }) : rendered;
438
440
  }
439
441
  return LazyStateComponent;
440
442
  }
@@ -557,6 +559,17 @@ function defineResourceLayoutImpl(options, inheritedStateScope, inheritedInspect
557
559
  name
558
560
  }),
559
561
  ...exposedStates,
562
+ [require_types.lazyStatesSymbol]: {
563
+ owner: layoutId,
564
+ Loading: stateComponents.Loading,
565
+ Error: stateComponents.Error ? ({ error, retry }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RenderStateRetryContext.Provider, {
566
+ value: retry,
567
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(stateComponents.Error, {
568
+ error,
569
+ retry
570
+ })
571
+ }) : void 0
572
+ },
560
573
  [require_render_state.definedResourceLayoutComponentSymbol]: true
561
574
  });
562
575
  previewRoot = createdComponent;
@@ -618,7 +631,21 @@ function defineResourceLayoutImpl(options, inheritedStateScope, inheritedInspect
618
631
  createLayoutForResource: createLayoutForResourceBuilder,
619
632
  ...layout.composables ? { createMakeComposableLayout: createTopLevelMakeComposable } : {},
620
633
  createResourceLayout: definedResourceLayout,
621
- getComponentPropDefinitions
634
+ getComponentPropDefinitions,
635
+ lazyEnvironment: {
636
+ store: inheritedInspection?.store ?? inspection.store,
637
+ parent: inheritedInspection?.layout ?? inspection.definition,
638
+ defaults: getLazyDefaults,
639
+ states(resource, props) {
640
+ if (typeof layout.render !== "object" || !layout.render || !("Loading" in layout.render || "Error" in layout.render)) return {};
641
+ return definedResourceLayout({
642
+ ...props,
643
+ resource,
644
+ namespace: false,
645
+ name: require_capitalize.capitalize(resource)
646
+ })[require_types.lazyStatesSymbol];
647
+ }
648
+ }
622
649
  })
623
650
  };
624
651
  if (layout.composables) createResourceLayoutExtras.makeComposable = createTopLevelMakeComposable();