@web-widget/react 0.9.1 → 0.10.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.
@@ -4,36 +4,35 @@ import * as react from 'react';
4
4
  import { ReactNode, Component } from 'react';
5
5
  export * from '@web-widget/schema/client-helpers';
6
6
  export { useWidgetSyncState as useWidgetState } from '@web-widget/schema/client-helpers';
7
- import { WebWidgetContainerOptions, Loader } from '@web-widget/web-widget';
7
+ import { WebWidgetRendererOptions, Loader } from '@web-widget/web-widget';
8
8
 
9
9
  interface WebWidgetProps {
10
- base?: WebWidgetContainerOptions["base"];
10
+ base?: WebWidgetRendererOptions["base"];
11
11
  children?: ReactNode;
12
- data?: WebWidgetContainerOptions["data"];
13
- import?: WebWidgetContainerOptions["import"];
14
- inactive?: WebWidgetContainerOptions["inactive"];
12
+ data?: WebWidgetRendererOptions["data"];
13
+ import?: WebWidgetRendererOptions["import"];
14
+ inactive?: WebWidgetRendererOptions["inactive"];
15
15
  loader: Loader;
16
- meta?: WebWidgetContainerOptions["meta"];
17
- loading?: WebWidgetContainerOptions["loading"];
18
- name?: WebWidgetContainerOptions["name"];
19
- renderStage?: WebWidgetContainerOptions["renderStage"];
20
- renderTarget?: WebWidgetContainerOptions["renderTarget"];
16
+ meta?: WebWidgetRendererOptions["meta"];
17
+ loading?: WebWidgetRendererOptions["loading"];
18
+ name?: WebWidgetRendererOptions["name"];
19
+ renderStage?: WebWidgetRendererOptions["renderStage"];
20
+ renderTarget?: WebWidgetRendererOptions["renderTarget"];
21
21
  }
22
- declare function WebWidget({ children, loader, ...props }: WebWidgetProps): react.FunctionComponentElement<{}>;
23
22
  interface DefineWebWidgetOptions {
24
- base?: WebWidgetContainerOptions["base"];
25
- import?: WebWidgetContainerOptions["import"];
26
- loading?: WebWidgetContainerOptions["loading"];
27
- name?: WebWidgetContainerOptions["name"];
28
- renderStage?: WebWidgetContainerOptions["renderStage"];
29
- renderTarget?: WebWidgetContainerOptions["renderTarget"];
23
+ base?: WebWidgetRendererOptions["base"];
24
+ import?: WebWidgetRendererOptions["import"];
25
+ loading?: WebWidgetRendererOptions["loading"];
26
+ name?: WebWidgetRendererOptions["name"];
27
+ renderStage?: WebWidgetRendererOptions["renderStage"];
28
+ renderTarget?: WebWidgetRendererOptions["renderTarget"];
30
29
  }
31
30
  interface WebWidgetSuspenseProps {
32
31
  children?: ReactNode;
33
32
  fallback?: ReactNode;
34
- experimental_loading?: WebWidgetContainerOptions["loading"];
35
- renderStage?: WebWidgetContainerOptions["renderStage"];
36
- experimental_renderTarget?: WebWidgetContainerOptions["renderTarget"];
33
+ experimental_loading?: WebWidgetRendererOptions["loading"];
34
+ renderStage?: WebWidgetRendererOptions["renderStage"];
35
+ experimental_renderTarget?: WebWidgetRendererOptions["renderTarget"];
37
36
  }
38
37
  declare function defineWebWidget(loader: Loader, options: DefineWebWidgetOptions): ({ children, fallback, experimental_loading, renderStage, experimental_renderTarget, ...data }: WebWidgetSuspenseProps) => react.FunctionComponentElement<react.SuspenseProps>;
39
38
 
@@ -89,4 +88,4 @@ declare const render: (context: _web_widget_schema.ClientWidgetRenderContext<unk
89
88
  }) => void | Promise<void>) | undefined;
90
89
  }>;
91
90
 
92
- export { DefineWebWidgetOptions, WebWidget, WebWidgetProps, WebWidgetSuspenseProps, createReactRender, defineReactRender, defineWebWidget, render };
91
+ export { type DefineWebWidgetOptions, type WebWidgetProps, type WebWidgetSuspenseProps, createReactRender, defineReactRender, defineWebWidget, render };
@@ -41,10 +41,10 @@ export * from "@web-widget/schema/client-helpers";
41
41
  import { useWidgetSyncState } from "@web-widget/schema/client-helpers";
42
42
 
43
43
  // src/components.ts
44
- import { parse } from "@web-widget/web-widget";
45
- import { Suspense, createElement, lazy } from "react";
44
+ import { WebWidgetRenderer } from "@web-widget/web-widget";
45
+ import { Suspense, createElement, use } from "react";
46
46
  import { IS_BROWSER } from "@web-widget/schema/helpers";
47
- function WebWidget(_a) {
47
+ var renderWebWidget = function(_a) {
48
48
  var _b = _a, {
49
49
  children,
50
50
  loader
@@ -58,29 +58,27 @@ function WebWidget(_a) {
58
58
  if (children) {
59
59
  throw new TypeError(`No support children.`);
60
60
  }
61
- return /* @__PURE__ */ createElement(
62
- lazy(async () => {
63
- const [tag, attrs, innerHTML] = await parse(loader, __spreadProps(__spreadValues({}, props), {
64
- // TODO Render children
65
- children: ""
66
- }));
67
- if (IS_BROWSER) {
68
- console.warn(`Client components are experimental.`);
69
- await customElements.whenDefined(tag);
70
- const element = Object.assign(document.createElement(tag), props);
71
- await element.bootstrap();
72
- }
73
- return {
74
- default: function WebWidgetContainer() {
75
- return createElement(tag, __spreadProps(__spreadValues({}, attrs), {
76
- dangerouslySetInnerHTML: {
77
- __html: innerHTML
78
- }
79
- }));
80
- }
81
- };
82
- })
83
- );
61
+ const widget = new WebWidgetRenderer(loader, __spreadProps(__spreadValues({}, props), {
62
+ // TODO children
63
+ children: ""
64
+ }));
65
+ const localName = widget.localName;
66
+ const attributes = widget.attributes;
67
+ const innerHTML = widget.renderInnerHTMLToString();
68
+ return {
69
+ localName,
70
+ attributes,
71
+ innerHTML
72
+ };
73
+ };
74
+ function WebWidget({ localName, attributes, innerHTML }) {
75
+ if (IS_BROWSER) {
76
+ }
77
+ return createElement(localName, __spreadProps(__spreadValues({}, attributes), {
78
+ dangerouslySetInnerHTML: {
79
+ __html: use(innerHTML)
80
+ }
81
+ }));
84
82
  }
85
83
  function defineWebWidget(loader, options) {
86
84
  return function WebWidgetSuspense(_c) {
@@ -99,14 +97,17 @@ function defineWebWidget(loader, options) {
99
97
  ]);
100
98
  return createElement(Suspense, {
101
99
  fallback,
102
- children: createElement(WebWidget, __spreadProps(__spreadValues({}, options), {
103
- children,
104
- data,
105
- loader,
106
- loading: experimental_loading,
107
- renderStage,
108
- renderTarget: experimental_renderTarget
109
- }))
100
+ children: createElement(
101
+ WebWidget,
102
+ renderWebWidget(__spreadProps(__spreadValues({}, options), {
103
+ children,
104
+ data,
105
+ loader,
106
+ loading: experimental_loading,
107
+ renderStage,
108
+ renderTarget: experimental_renderTarget
109
+ }))
110
+ )
110
111
  });
111
112
  };
112
113
  }
@@ -152,7 +153,6 @@ var createReactRender = ({
152
153
  var defineReactRender = createReactRender;
153
154
  var render = createReactRender();
154
155
  export {
155
- WebWidget,
156
156
  createReactRender,
157
157
  defineReactRender,
158
158
  defineWebWidget,
@@ -5,36 +5,35 @@ import * as react from 'react';
5
5
  import { ReactNode, Component } from 'react';
6
6
  export * from '@web-widget/schema/server-helpers';
7
7
  export { useWidgetSyncState as useWidgetState } from '@web-widget/schema/server-helpers';
8
- import { WebWidgetContainerOptions, Loader } from '@web-widget/web-widget';
8
+ import { WebWidgetRendererOptions, Loader } from '@web-widget/web-widget';
9
9
 
10
10
  interface WebWidgetProps {
11
- base?: WebWidgetContainerOptions["base"];
11
+ base?: WebWidgetRendererOptions["base"];
12
12
  children?: ReactNode;
13
- data?: WebWidgetContainerOptions["data"];
14
- import?: WebWidgetContainerOptions["import"];
15
- inactive?: WebWidgetContainerOptions["inactive"];
13
+ data?: WebWidgetRendererOptions["data"];
14
+ import?: WebWidgetRendererOptions["import"];
15
+ inactive?: WebWidgetRendererOptions["inactive"];
16
16
  loader: Loader;
17
- meta?: WebWidgetContainerOptions["meta"];
18
- loading?: WebWidgetContainerOptions["loading"];
19
- name?: WebWidgetContainerOptions["name"];
20
- renderStage?: WebWidgetContainerOptions["renderStage"];
21
- renderTarget?: WebWidgetContainerOptions["renderTarget"];
17
+ meta?: WebWidgetRendererOptions["meta"];
18
+ loading?: WebWidgetRendererOptions["loading"];
19
+ name?: WebWidgetRendererOptions["name"];
20
+ renderStage?: WebWidgetRendererOptions["renderStage"];
21
+ renderTarget?: WebWidgetRendererOptions["renderTarget"];
22
22
  }
23
- declare function WebWidget({ children, loader, ...props }: WebWidgetProps): react.FunctionComponentElement<{}>;
24
23
  interface DefineWebWidgetOptions {
25
- base?: WebWidgetContainerOptions["base"];
26
- import?: WebWidgetContainerOptions["import"];
27
- loading?: WebWidgetContainerOptions["loading"];
28
- name?: WebWidgetContainerOptions["name"];
29
- renderStage?: WebWidgetContainerOptions["renderStage"];
30
- renderTarget?: WebWidgetContainerOptions["renderTarget"];
24
+ base?: WebWidgetRendererOptions["base"];
25
+ import?: WebWidgetRendererOptions["import"];
26
+ loading?: WebWidgetRendererOptions["loading"];
27
+ name?: WebWidgetRendererOptions["name"];
28
+ renderStage?: WebWidgetRendererOptions["renderStage"];
29
+ renderTarget?: WebWidgetRendererOptions["renderTarget"];
31
30
  }
32
31
  interface WebWidgetSuspenseProps {
33
32
  children?: ReactNode;
34
33
  fallback?: ReactNode;
35
- experimental_loading?: WebWidgetContainerOptions["loading"];
36
- renderStage?: WebWidgetContainerOptions["renderStage"];
37
- experimental_renderTarget?: WebWidgetContainerOptions["renderTarget"];
34
+ experimental_loading?: WebWidgetRendererOptions["loading"];
35
+ renderStage?: WebWidgetRendererOptions["renderStage"];
36
+ experimental_renderTarget?: WebWidgetRendererOptions["renderTarget"];
38
37
  }
39
38
  declare function defineWebWidget(loader: Loader, options: DefineWebWidgetOptions): ({ children, fallback, experimental_loading, renderStage, experimental_renderTarget, ...data }: WebWidgetSuspenseProps) => react.FunctionComponentElement<react.SuspenseProps>;
40
39
 
@@ -59,4 +58,4 @@ declare const createReactRender: ({ onPrefetchData, }?: CreateReactRenderOptions
59
58
  declare const defineReactRender: ({ onPrefetchData, }?: CreateReactRenderOptions) => (context: _web_widget_schema.ServerWidgetRenderContext<unknown> | _web_widget_schema.ServerRouteRenderContext<unknown, Record<string, string>>, renderOptions: ResponseInit & ReactRenderOptions) => Promise<string | ReadableStream<any> | ReadableStream<any>>;
60
59
  declare const render: (context: _web_widget_schema.ServerWidgetRenderContext<unknown> | _web_widget_schema.ServerRouteRenderContext<unknown, Record<string, string>>, renderOptions: ResponseInit & ReactRenderOptions) => Promise<string | ReadableStream<any> | ReadableStream<any>>;
61
60
 
62
- export { DefineWebWidgetOptions, ReactRenderOptions, WebWidget, WebWidgetProps, WebWidgetSuspenseProps, createReactRender, defineReactRender, defineWebWidget, render };
61
+ export { type DefineWebWidgetOptions, type ReactRenderOptions, type WebWidgetProps, type WebWidgetSuspenseProps, createReactRender, defineReactRender, defineWebWidget, render };
@@ -41,10 +41,10 @@ export * from "@web-widget/schema/server-helpers";
41
41
  import { useWidgetSyncState } from "@web-widget/schema/server-helpers";
42
42
 
43
43
  // src/components.ts
44
- import { parse } from "@web-widget/web-widget";
45
- import { Suspense, createElement, lazy } from "react";
44
+ import { WebWidgetRenderer } from "@web-widget/web-widget";
45
+ import { Suspense, createElement, use } from "react";
46
46
  import { IS_BROWSER } from "@web-widget/schema/helpers";
47
- function WebWidget(_a) {
47
+ var renderWebWidget = function(_a) {
48
48
  var _b = _a, {
49
49
  children,
50
50
  loader
@@ -58,29 +58,27 @@ function WebWidget(_a) {
58
58
  if (children) {
59
59
  throw new TypeError(`No support children.`);
60
60
  }
61
- return /* @__PURE__ */ createElement(
62
- lazy(async () => {
63
- const [tag, attrs, innerHTML] = await parse(loader, __spreadProps(__spreadValues({}, props), {
64
- // TODO Render children
65
- children: ""
66
- }));
67
- if (IS_BROWSER) {
68
- console.warn(`Client components are experimental.`);
69
- await customElements.whenDefined(tag);
70
- const element = Object.assign(document.createElement(tag), props);
71
- await element.bootstrap();
72
- }
73
- return {
74
- default: function WebWidgetContainer() {
75
- return createElement(tag, __spreadProps(__spreadValues({}, attrs), {
76
- dangerouslySetInnerHTML: {
77
- __html: innerHTML
78
- }
79
- }));
80
- }
81
- };
82
- })
83
- );
61
+ const widget = new WebWidgetRenderer(loader, __spreadProps(__spreadValues({}, props), {
62
+ // TODO children
63
+ children: ""
64
+ }));
65
+ const localName = widget.localName;
66
+ const attributes = widget.attributes;
67
+ const innerHTML = widget.renderInnerHTMLToString();
68
+ return {
69
+ localName,
70
+ attributes,
71
+ innerHTML
72
+ };
73
+ };
74
+ function WebWidget({ localName, attributes, innerHTML }) {
75
+ if (IS_BROWSER) {
76
+ }
77
+ return createElement(localName, __spreadProps(__spreadValues({}, attributes), {
78
+ dangerouslySetInnerHTML: {
79
+ __html: use(innerHTML)
80
+ }
81
+ }));
84
82
  }
85
83
  function defineWebWidget(loader, options) {
86
84
  return function WebWidgetSuspense(_c) {
@@ -99,14 +97,17 @@ function defineWebWidget(loader, options) {
99
97
  ]);
100
98
  return createElement(Suspense, {
101
99
  fallback,
102
- children: createElement(WebWidget, __spreadProps(__spreadValues({}, options), {
103
- children,
104
- data,
105
- loader,
106
- loading: experimental_loading,
107
- renderStage,
108
- renderTarget: experimental_renderTarget
109
- }))
100
+ children: createElement(
101
+ WebWidget,
102
+ renderWebWidget(__spreadProps(__spreadValues({}, options), {
103
+ children,
104
+ data,
105
+ loader,
106
+ loading: experimental_loading,
107
+ renderStage,
108
+ renderTarget: experimental_renderTarget
109
+ }))
110
+ )
110
111
  });
111
112
  };
112
113
  }
@@ -177,7 +178,6 @@ var createReactRender = ({
177
178
  var defineReactRender = createReactRender;
178
179
  var render = createReactRender();
179
180
  export {
180
- WebWidget,
181
181
  createReactRender,
182
182
  defineReactRender,
183
183
  defineWebWidget,
package/dist/vite.cjs CHANGED
@@ -40,17 +40,17 @@ module.exports = __toCommonJS(vite_exports);
40
40
  var import_vite = require("@web-widget/vite");
41
41
  function reactWebWidgetPlugin({
42
42
  provide = "@web-widget/react",
43
- toWebWidgets = {},
44
- toComponents = {}
43
+ export: exportWidget = {},
44
+ import: importWidget = {}
45
45
  } = {}) {
46
46
  return (0, import_vite.webWidgetPlugin)({
47
47
  provide,
48
- toWebWidgets: __spreadValues({
49
- include: /(?:\.|@)(?:route|widget).*\.tsx(\?.*)?$/
50
- }, toWebWidgets),
51
- toComponents: __spreadValues({
52
- include: /(?:\.|@)widget\.[^.]*$/,
53
- includeImporter: ["**/*.tsx"]
54
- }, toComponents)
48
+ export: __spreadValues({
49
+ include: /(?:\.|@)(?:route|widget)\.(?:tsx|jsx)(?:\?.*)?$/
50
+ }, exportWidget),
51
+ import: __spreadValues({
52
+ include: /(?:\.|@)widget\..*$/,
53
+ includeImporter: /.*\.(?:tsx|jsx)(?:\?.*)?$/
54
+ }, importWidget)
55
55
  });
56
56
  }
@@ -0,0 +1,8 @@
1
+ import { Plugin } from 'vite';
2
+ import { WebWidgetPluginOptions } from '@web-widget/vite';
3
+
4
+ interface ReactWebWidgetPluginOptions extends WebWidgetPluginOptions {
5
+ }
6
+ declare function reactWebWidgetPlugin({ provide, export: exportWidget, import: importWidget, }?: ReactWebWidgetPluginOptions): Plugin[];
7
+
8
+ export { type ReactWebWidgetPluginOptions, reactWebWidgetPlugin as default };
package/dist/vite.d.ts CHANGED
@@ -3,6 +3,6 @@ import { WebWidgetPluginOptions } from '@web-widget/vite';
3
3
 
4
4
  interface ReactWebWidgetPluginOptions extends WebWidgetPluginOptions {
5
5
  }
6
- declare function reactWebWidgetPlugin({ provide, toWebWidgets, toComponents, }?: ReactWebWidgetPluginOptions): Plugin[];
6
+ declare function reactWebWidgetPlugin({ provide, export: exportWidget, import: importWidget, }?: ReactWebWidgetPluginOptions): Plugin[];
7
7
 
8
- export { ReactWebWidgetPluginOptions, reactWebWidgetPlugin as default };
8
+ export { type ReactWebWidgetPluginOptions, reactWebWidgetPlugin as default };
package/dist/vite.js CHANGED
@@ -19,18 +19,18 @@ var __spreadValues = (a, b) => {
19
19
  import { webWidgetPlugin } from "@web-widget/vite";
20
20
  function reactWebWidgetPlugin({
21
21
  provide = "@web-widget/react",
22
- toWebWidgets = {},
23
- toComponents = {}
22
+ export: exportWidget = {},
23
+ import: importWidget = {}
24
24
  } = {}) {
25
25
  return webWidgetPlugin({
26
26
  provide,
27
- toWebWidgets: __spreadValues({
28
- include: /(?:\.|@)(?:route|widget).*\.tsx(\?.*)?$/
29
- }, toWebWidgets),
30
- toComponents: __spreadValues({
31
- include: /(?:\.|@)widget\.[^.]*$/,
32
- includeImporter: ["**/*.tsx"]
33
- }, toComponents)
27
+ export: __spreadValues({
28
+ include: /(?:\.|@)(?:route|widget)\.(?:tsx|jsx)(?:\?.*)?$/
29
+ }, exportWidget),
30
+ import: __spreadValues({
31
+ include: /(?:\.|@)widget\..*$/,
32
+ includeImporter: /.*\.(?:tsx|jsx)(?:\?.*)?$/
33
+ }, importWidget)
34
34
  });
35
35
  }
36
36
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@web-widget/react",
3
- "version": "0.9.1",
3
+ "version": "0.10.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -30,21 +30,25 @@
30
30
  "dist",
31
31
  "globals.d.ts"
32
32
  ],
33
- "dependencies": {
34
- "@web-widget/vite": "2.10.0",
35
- "@web-widget/schema": "0.4.3",
36
- "@web-widget/web-widget": "1.7.2"
37
- },
33
+ "dependencies": {},
38
34
  "devDependencies": {
39
- "@types/react": "^18.2.46",
35
+ "@types/react": "^18.2.47",
40
36
  "@types/react-dom": "^18.2.18",
41
- "tsup": "^7.0.0",
42
- "typescript": "^5.0.4",
43
- "vite": "^4.4.9"
37
+ "@web-widget/schema": "0.4.3",
38
+ "@web-widget/vite": "2.11.0",
39
+ "@web-widget/web-widget": "1.8.0",
40
+ "react": "canary",
41
+ "react-dom": "canary",
42
+ "tsup": "^8.0.1",
43
+ "typescript": "^5.3.3",
44
+ "vite": "^5.0.11"
44
45
  },
45
46
  "peerDependencies": {
46
- "react": "^18.2.0",
47
- "react-dom": "^18.2.0"
47
+ "@web-widget/schema": "0.4.3",
48
+ "@web-widget/vite": "2.11.0",
49
+ "@web-widget/web-widget": "1.8.0",
50
+ "react": "canary",
51
+ "react-dom": "canary"
48
52
  },
49
53
  "publishConfig": {
50
54
  "access": "public"