@web-widget/react 3.0.0-beta.2 → 3.0.0-beta.3

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.
@@ -32,16 +32,34 @@ var renderWebWidget = function({
32
32
  );
33
33
  return {
34
34
  localName,
35
+ pendingLocalName: widget.pendingLocalName,
35
36
  attributes,
36
37
  innerHTML
37
38
  };
38
39
  };
39
40
  function WebWidget({
40
41
  localName,
42
+ pendingLocalName,
41
43
  attributes,
42
44
  innerHTML,
43
- errorFallback
45
+ errorFallback,
46
+ pendingFallback,
47
+ clientOnly
44
48
  }) {
49
+ if (clientOnly && typeof window === "undefined" && pendingFallback != null) {
50
+ return createElement(
51
+ localName,
52
+ { ...attributes, suppressHydrationWarning: true },
53
+ createElement(
54
+ pendingLocalName,
55
+ {
56
+ "aria-busy": "true",
57
+ style: { display: "contents" }
58
+ },
59
+ pendingFallback
60
+ )
61
+ );
62
+ }
45
63
  const html = use(innerHTML);
46
64
  if (html instanceof Error) {
47
65
  console.error("[ReactWidget] Rendering error:", html);
@@ -109,7 +127,9 @@ function container(loader, options = {}) {
109
127
  createElement(Suspense, {
110
128
  fallback: pendingFallback,
111
129
  children: createElement(WebWidget, {
130
+ clientOnly,
112
131
  errorFallback,
132
+ pendingFallback,
113
133
  ...renderWebWidget({
114
134
  ...options,
115
135
  children,
@@ -43,12 +43,14 @@ declare function resolveFallback(fallback: WidgetFallback | undefined): {
43
43
  };
44
44
  type WidgetContainerConfig = {
45
45
  /**
46
- * Fallback UI for loading and error states.
46
+ * Fallback UI for pending and error states.
47
47
  *
48
- * Only effective during server-side rendering: loading UI shows while the
48
+ * Only effective during server-side rendering: pending UI shows while the
49
49
  * widget module renders; error UI shows if rendering fails. Both are
50
50
  * serialized into the HTML stream — no client-side retry exists in the
51
51
  * islands architecture.
52
+ * For `clientOnly`, pending UI is rendered inside the `<web-widget>` element
53
+ * and removed immediately before its client mount begins.
52
54
  *
53
55
  * - `ReactNode` — used for both pending (Suspense) and error (ErrorBoundary).
54
56
  * - `{ pending?, error? }` — specify independently; `error` defaults to `pending`.
@@ -1,7 +1,7 @@
1
1
  import * as _web_widget_schema from '@web-widget/schema';
2
2
  import { FunctionComponent } from 'react';
3
3
  export * from '@web-widget/helpers';
4
- export { D as DefineWebWidgetOptions, R as ReactWidgetComponent, a as ReactWidgetProps, W as WebWidgetProps, b as WidgetContainerConfig, c as WidgetFallback, d as container, r as resolveFallback } from './components-BdC3VZlV.js';
4
+ export { D as DefineWebWidgetOptions, R as ReactWidgetComponent, a as ReactWidgetProps, W as WebWidgetProps, b as WidgetContainerConfig, c as WidgetFallback, d as container, r as resolveFallback } from './components-BJFkwrpt.js';
5
5
  import '@web-widget/web-widget';
6
6
 
7
7
  declare const render: _web_widget_schema.ClientRender<FunctionComponent<{}>, unknown, _web_widget_schema.ClientRenderOptions, void | _web_widget_schema.ClientRenderResult<unknown>>;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  container,
3
3
  resolveFallback
4
- } from "./chunk-VQFEYZQS.js";
4
+ } from "./chunk-DMZJIDPG.js";
5
5
 
6
6
  // src/adapter.client.ts
7
7
  import { defineClientRender } from "@web-widget/helpers";
@@ -2,7 +2,7 @@ import * as _web_widget_schema from '@web-widget/schema';
2
2
  import { FunctionComponent } from 'react';
3
3
  import { PrerenderOptions } from 'react-dom/static';
4
4
  export * from '@web-widget/helpers';
5
- export { D as DefineWebWidgetOptions, R as ReactWidgetComponent, a as ReactWidgetProps, W as WebWidgetProps, b as WidgetContainerConfig, c as WidgetFallback, d as container, r as resolveFallback } from './components-BdC3VZlV.js';
5
+ export { D as DefineWebWidgetOptions, R as ReactWidgetComponent, a as ReactWidgetProps, W as WebWidgetProps, b as WidgetContainerConfig, c as WidgetFallback, d as container, r as resolveFallback } from './components-BJFkwrpt.js';
6
6
  import { RenderToReadableStreamOptions } from 'react-dom/server';
7
7
  import '@web-widget/web-widget';
8
8
 
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  container,
3
3
  resolveFallback
4
- } from "./chunk-VQFEYZQS.js";
4
+ } from "./chunk-DMZJIDPG.js";
5
5
 
6
6
  // src/adapter.server.ts
7
7
  import { defineServerRender } from "@web-widget/helpers";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@web-widget/react",
3
3
  "description": "React adapter",
4
- "version": "3.0.0-beta.2",
4
+ "version": "3.0.0-beta.3",
5
5
  "homepage": "https://github.com/web-widget/web-widget#readme",
6
6
  "repository": {
7
7
  "type": "git",
@@ -13,9 +13,9 @@
13
13
  },
14
14
  "license": "MIT",
15
15
  "dependencies": {
16
- "@web-widget/helpers": "3.0.0-beta.2",
17
- "@web-widget/schema": "3.0.0-beta.2",
18
- "@web-widget/web-widget": "3.0.0-beta.2"
16
+ "@web-widget/helpers": "3.0.0-beta.3",
17
+ "@web-widget/schema": "3.0.0-beta.3",
18
+ "@web-widget/web-widget": "3.0.0-beta.3"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@types/jest": "^29.5.12",