@web-widget/vue 0.0.4 → 0.1.1

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.
@@ -1,7 +1,135 @@
1
1
  import * as _web_widget_schema from '@web-widget/schema';
2
- import { App, Component } from 'vue';
2
+ import * as vue from 'vue';
3
+ import { PropType, VNode, App, Component } from 'vue';
3
4
  import { RenderContext, ComponentProps } from '@web-widget/schema/client-helpers';
4
5
  export * from '@web-widget/schema/client-helpers';
6
+ import { Loader, WebWidgetContainerOptions } from '@web-widget/web-widget';
7
+
8
+ declare const __ENV__: {
9
+ server: boolean;
10
+ };
11
+ declare const WebWidget: vue.DefineComponent<{
12
+ base: {
13
+ type: PropType<string | undefined>;
14
+ };
15
+ data: {
16
+ type: PropType<{
17
+ [x: string]: string | number | boolean | {
18
+ [x: string]: string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | any)[])[])[])[])[])[])[])[])[])[])[];
19
+ } | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | any)[])[])[])[])[])[])[])[])[])[])[];
20
+ } | undefined>;
21
+ default: {};
22
+ };
23
+ import: {
24
+ type: PropType<string | undefined>;
25
+ };
26
+ inactive: {
27
+ type: PropType<boolean | undefined>;
28
+ default: undefined;
29
+ };
30
+ loader: {
31
+ type: PropType<Loader>;
32
+ required: true;
33
+ };
34
+ loading: {
35
+ type: PropType<string | undefined>;
36
+ };
37
+ meta: {
38
+ type: PropType<_web_widget_schema.Meta | undefined>;
39
+ };
40
+ name: {
41
+ type: PropType<string | undefined>;
42
+ };
43
+ renderStage: {
44
+ type: PropType<"server" | "client" | undefined>;
45
+ };
46
+ renderTarget: {
47
+ type: PropType<"light" | "shadow" | undefined>;
48
+ default: string;
49
+ };
50
+ }, () => VNode<vue.RendererNode, vue.RendererElement, {
51
+ [key: string]: any;
52
+ }>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
53
+ base: {
54
+ type: PropType<string | undefined>;
55
+ };
56
+ data: {
57
+ type: PropType<{
58
+ [x: string]: string | number | boolean | {
59
+ [x: string]: string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | any)[])[])[])[])[])[])[])[])[])[])[];
60
+ } | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | any)[])[])[])[])[])[])[])[])[])[])[];
61
+ } | undefined>;
62
+ default: {};
63
+ };
64
+ import: {
65
+ type: PropType<string | undefined>;
66
+ };
67
+ inactive: {
68
+ type: PropType<boolean | undefined>;
69
+ default: undefined;
70
+ };
71
+ loader: {
72
+ type: PropType<Loader>;
73
+ required: true;
74
+ };
75
+ loading: {
76
+ type: PropType<string | undefined>;
77
+ };
78
+ meta: {
79
+ type: PropType<_web_widget_schema.Meta | undefined>;
80
+ };
81
+ name: {
82
+ type: PropType<string | undefined>;
83
+ };
84
+ renderStage: {
85
+ type: PropType<"server" | "client" | undefined>;
86
+ };
87
+ renderTarget: {
88
+ type: PropType<"light" | "shadow" | undefined>;
89
+ default: string;
90
+ };
91
+ }>>, {
92
+ data: {
93
+ [x: string]: string | number | boolean | {
94
+ [x: string]: string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | any)[])[])[])[])[])[])[])[])[])[])[];
95
+ } | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | any)[])[])[])[])[])[])[])[])[])[])[];
96
+ } | undefined;
97
+ inactive: boolean | undefined;
98
+ renderTarget: "light" | "shadow" | undefined;
99
+ }, {}>;
100
+ interface DefineWebWidgetOptions {
101
+ base?: WebWidgetContainerOptions["base"];
102
+ import?: WebWidgetContainerOptions["import"];
103
+ loading?: WebWidgetContainerOptions["loading"];
104
+ name?: WebWidgetContainerOptions["name"];
105
+ renderStage?: WebWidgetContainerOptions["renderStage"];
106
+ renderTarget?: WebWidgetContainerOptions["renderTarget"];
107
+ }
108
+ declare function defineWebWidget(loader: Loader, options: DefineWebWidgetOptions): vue.DefineComponent<{
109
+ renderStage: {
110
+ type: PropType<"server" | "client" | undefined>;
111
+ default: "server" | "client" | undefined;
112
+ };
113
+ fallback: {
114
+ type: PropType<VNode<vue.RendererNode, vue.RendererElement, {
115
+ [key: string]: any;
116
+ }>>;
117
+ };
118
+ }, () => VNode<vue.RendererNode, vue.RendererElement, {
119
+ [key: string]: any;
120
+ }>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
121
+ renderStage: {
122
+ type: PropType<"server" | "client" | undefined>;
123
+ default: "server" | "client" | undefined;
124
+ };
125
+ fallback: {
126
+ type: PropType<VNode<vue.RendererNode, vue.RendererElement, {
127
+ [key: string]: any;
128
+ }>>;
129
+ };
130
+ }>>, {
131
+ renderStage: "server" | "client" | undefined;
132
+ }, {}>;
5
133
 
6
134
  interface DefineVueRenderOptions {
7
135
  onCreatedApp?: (app: App, context: RenderContext, component: Component, props: ComponentProps) => void;
@@ -33,4 +161,4 @@ declare const render: (context: _web_widget_schema.ClientWidgetRenderContext<unk
33
161
  }) => void | Promise<void>) | undefined;
34
162
  }>;
35
163
 
36
- export { DefineVueRenderOptions, defineVueRender, render };
164
+ export { DefineVueRenderOptions, DefineWebWidgetOptions, WebWidget, __ENV__, defineVueRender, defineWebWidget, render };
@@ -1,7 +1,145 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
31
+ };
32
+
33
+ // src/web-widget.ts
34
+ import { parse } from "@web-widget/web-widget";
35
+ import { h, defineComponent, Suspense } from "vue";
36
+ var __ENV__ = {
37
+ server: true
38
+ };
39
+ var WebWidget = /* @__PURE__ */ defineComponent({
40
+ name: "WebWidget",
41
+ props: {
42
+ base: {
43
+ type: String
44
+ },
45
+ data: {
46
+ type: Object,
47
+ default: {}
48
+ },
49
+ import: {
50
+ type: String
51
+ },
52
+ inactive: {
53
+ type: Boolean,
54
+ // NOTE: If the default value is not set, it will be false here.
55
+ default: void 0
56
+ },
57
+ loader: {
58
+ type: Function,
59
+ required: true
60
+ },
61
+ loading: {
62
+ type: String
63
+ },
64
+ meta: {
65
+ type: Object
66
+ },
67
+ name: {
68
+ type: String
69
+ },
70
+ renderStage: {
71
+ type: String
72
+ },
73
+ renderTarget: {
74
+ type: String,
75
+ default: "light"
76
+ }
77
+ },
78
+ async setup(_a, { slots }) {
79
+ var _b = _a, { loader } = _b, props = __objRest(_b, ["loader"]);
80
+ if (!loader) {
81
+ throw new TypeError(`Missing loader.`);
82
+ }
83
+ if (Object.keys(slots).length > 0) {
84
+ throw new TypeError(`No support slot.`);
85
+ }
86
+ const children = "";
87
+ const [tag, attrs, innerHTML] = await parse(loader, __spreadProps(__spreadValues({}, props), {
88
+ children
89
+ }));
90
+ if (!__ENV__.server) {
91
+ console.warn(`Client components are experimental.`);
92
+ await customElements.whenDefined(tag);
93
+ const element = Object.assign(document.createElement(tag), props);
94
+ await element.bootstrap();
95
+ }
96
+ return () => h(tag, __spreadProps(__spreadValues({}, attrs), {
97
+ innerHTML
98
+ }));
99
+ }
100
+ });
101
+ function defineWebWidget(loader, options) {
102
+ options.renderTarget = "light";
103
+ return /* @__PURE__ */ defineComponent({
104
+ name: "WebWidgetSuspense",
105
+ props: {
106
+ renderStage: {
107
+ type: String,
108
+ default: options.renderStage
109
+ },
110
+ fallback: {
111
+ type: Object
112
+ }
113
+ },
114
+ setup(_a, { slots }) {
115
+ var _b = _a, { fallback, renderStage } = _b, data = __objRest(_b, ["fallback", "renderStage"]);
116
+ return () => h(
117
+ Suspense,
118
+ {},
119
+ {
120
+ default: h(
121
+ WebWidget,
122
+ __spreadProps(__spreadValues({}, options), {
123
+ data,
124
+ loader,
125
+ renderStage
126
+ }),
127
+ slots
128
+ ),
129
+ fallback
130
+ }
131
+ );
132
+ }
133
+ });
134
+ }
135
+
1
136
  // src/client.ts
2
137
  import { createApp, createSSRApp } from "vue";
3
138
  import { defineRender } from "@web-widget/schema/client-helpers";
4
139
  export * from "@web-widget/schema/client-helpers";
140
+ Reflect.defineProperty(__ENV__, "server", {
141
+ value: false
142
+ });
5
143
  var defineVueRender = ({
6
144
  onCreatedApp = () => {
7
145
  }
@@ -31,6 +169,9 @@ var defineVueRender = ({
31
169
  };
32
170
  var render = defineVueRender();
33
171
  export {
172
+ WebWidget,
173
+ __ENV__,
34
174
  defineVueRender,
175
+ defineWebWidget,
35
176
  render
36
177
  };
@@ -1,7 +1,135 @@
1
1
  import * as _web_widget_schema from '@web-widget/schema';
2
- import { App, Component } from 'vue';
2
+ import * as vue from 'vue';
3
+ import { PropType, VNode, App, Component } from 'vue';
3
4
  import { RenderContext, ComponentProps } from '@web-widget/schema/server-helpers';
4
5
  export * from '@web-widget/schema/server-helpers';
6
+ import { Loader, WebWidgetContainerOptions } from '@web-widget/web-widget';
7
+
8
+ declare const __ENV__: {
9
+ server: boolean;
10
+ };
11
+ declare const WebWidget: vue.DefineComponent<{
12
+ base: {
13
+ type: PropType<string | undefined>;
14
+ };
15
+ data: {
16
+ type: PropType<{
17
+ [x: string]: string | number | boolean | {
18
+ [x: string]: string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | any)[])[])[])[])[])[])[])[])[])[])[];
19
+ } | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | any)[])[])[])[])[])[])[])[])[])[])[];
20
+ } | undefined>;
21
+ default: {};
22
+ };
23
+ import: {
24
+ type: PropType<string | undefined>;
25
+ };
26
+ inactive: {
27
+ type: PropType<boolean | undefined>;
28
+ default: undefined;
29
+ };
30
+ loader: {
31
+ type: PropType<Loader>;
32
+ required: true;
33
+ };
34
+ loading: {
35
+ type: PropType<string | undefined>;
36
+ };
37
+ meta: {
38
+ type: PropType<_web_widget_schema.Meta | undefined>;
39
+ };
40
+ name: {
41
+ type: PropType<string | undefined>;
42
+ };
43
+ renderStage: {
44
+ type: PropType<"server" | "client" | undefined>;
45
+ };
46
+ renderTarget: {
47
+ type: PropType<"light" | "shadow" | undefined>;
48
+ default: string;
49
+ };
50
+ }, () => VNode<vue.RendererNode, vue.RendererElement, {
51
+ [key: string]: any;
52
+ }>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
53
+ base: {
54
+ type: PropType<string | undefined>;
55
+ };
56
+ data: {
57
+ type: PropType<{
58
+ [x: string]: string | number | boolean | {
59
+ [x: string]: string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | any)[])[])[])[])[])[])[])[])[])[])[];
60
+ } | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | any)[])[])[])[])[])[])[])[])[])[])[];
61
+ } | undefined>;
62
+ default: {};
63
+ };
64
+ import: {
65
+ type: PropType<string | undefined>;
66
+ };
67
+ inactive: {
68
+ type: PropType<boolean | undefined>;
69
+ default: undefined;
70
+ };
71
+ loader: {
72
+ type: PropType<Loader>;
73
+ required: true;
74
+ };
75
+ loading: {
76
+ type: PropType<string | undefined>;
77
+ };
78
+ meta: {
79
+ type: PropType<_web_widget_schema.Meta | undefined>;
80
+ };
81
+ name: {
82
+ type: PropType<string | undefined>;
83
+ };
84
+ renderStage: {
85
+ type: PropType<"server" | "client" | undefined>;
86
+ };
87
+ renderTarget: {
88
+ type: PropType<"light" | "shadow" | undefined>;
89
+ default: string;
90
+ };
91
+ }>>, {
92
+ data: {
93
+ [x: string]: string | number | boolean | {
94
+ [x: string]: string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | any)[])[])[])[])[])[])[])[])[])[])[];
95
+ } | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | (string | number | boolean | any | any)[])[])[])[])[])[])[])[])[])[])[];
96
+ } | undefined;
97
+ inactive: boolean | undefined;
98
+ renderTarget: "light" | "shadow" | undefined;
99
+ }, {}>;
100
+ interface DefineWebWidgetOptions {
101
+ base?: WebWidgetContainerOptions["base"];
102
+ import?: WebWidgetContainerOptions["import"];
103
+ loading?: WebWidgetContainerOptions["loading"];
104
+ name?: WebWidgetContainerOptions["name"];
105
+ renderStage?: WebWidgetContainerOptions["renderStage"];
106
+ renderTarget?: WebWidgetContainerOptions["renderTarget"];
107
+ }
108
+ declare function defineWebWidget(loader: Loader, options: DefineWebWidgetOptions): vue.DefineComponent<{
109
+ renderStage: {
110
+ type: PropType<"server" | "client" | undefined>;
111
+ default: "server" | "client" | undefined;
112
+ };
113
+ fallback: {
114
+ type: PropType<VNode<vue.RendererNode, vue.RendererElement, {
115
+ [key: string]: any;
116
+ }>>;
117
+ };
118
+ }, () => VNode<vue.RendererNode, vue.RendererElement, {
119
+ [key: string]: any;
120
+ }>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
121
+ renderStage: {
122
+ type: PropType<"server" | "client" | undefined>;
123
+ default: "server" | "client" | undefined;
124
+ };
125
+ fallback: {
126
+ type: PropType<VNode<vue.RendererNode, vue.RendererElement, {
127
+ [key: string]: any;
128
+ }>>;
129
+ };
130
+ }>>, {
131
+ renderStage: "server" | "client" | undefined;
132
+ }, {}>;
5
133
 
6
134
  interface DefineVueRenderOptions {
7
135
  onCreatedApp?: (app: App, context: RenderContext, component: Component, props: ComponentProps) => void;
@@ -9,4 +137,4 @@ interface DefineVueRenderOptions {
9
137
  declare const defineVueRender: ({ onCreatedApp, }?: DefineVueRenderOptions) => (context: _web_widget_schema.ServerWidgetRenderContext<unknown> | _web_widget_schema.ServerRouteRenderContext<unknown, Record<string, string>>) => Promise<string | ReadableStream<any>>;
10
138
  declare const render: (context: _web_widget_schema.ServerWidgetRenderContext<unknown> | _web_widget_schema.ServerRouteRenderContext<unknown, Record<string, string>>) => Promise<string | ReadableStream<any>>;
11
139
 
12
- export { DefineVueRenderOptions, defineVueRender, render };
140
+ export { DefineVueRenderOptions, DefineWebWidgetOptions, WebWidget, __ENV__, defineVueRender, defineWebWidget, render };
@@ -1,8 +1,146 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
31
+ };
32
+
33
+ // src/web-widget.ts
34
+ import { parse } from "@web-widget/web-widget";
35
+ import { h, defineComponent, Suspense } from "vue";
36
+ var __ENV__ = {
37
+ server: true
38
+ };
39
+ var WebWidget = /* @__PURE__ */ defineComponent({
40
+ name: "WebWidget",
41
+ props: {
42
+ base: {
43
+ type: String
44
+ },
45
+ data: {
46
+ type: Object,
47
+ default: {}
48
+ },
49
+ import: {
50
+ type: String
51
+ },
52
+ inactive: {
53
+ type: Boolean,
54
+ // NOTE: If the default value is not set, it will be false here.
55
+ default: void 0
56
+ },
57
+ loader: {
58
+ type: Function,
59
+ required: true
60
+ },
61
+ loading: {
62
+ type: String
63
+ },
64
+ meta: {
65
+ type: Object
66
+ },
67
+ name: {
68
+ type: String
69
+ },
70
+ renderStage: {
71
+ type: String
72
+ },
73
+ renderTarget: {
74
+ type: String,
75
+ default: "light"
76
+ }
77
+ },
78
+ async setup(_a, { slots }) {
79
+ var _b = _a, { loader } = _b, props = __objRest(_b, ["loader"]);
80
+ if (!loader) {
81
+ throw new TypeError(`Missing loader.`);
82
+ }
83
+ if (Object.keys(slots).length > 0) {
84
+ throw new TypeError(`No support slot.`);
85
+ }
86
+ const children = "";
87
+ const [tag, attrs, innerHTML] = await parse(loader, __spreadProps(__spreadValues({}, props), {
88
+ children
89
+ }));
90
+ if (!__ENV__.server) {
91
+ console.warn(`Client components are experimental.`);
92
+ await customElements.whenDefined(tag);
93
+ const element = Object.assign(document.createElement(tag), props);
94
+ await element.bootstrap();
95
+ }
96
+ return () => h(tag, __spreadProps(__spreadValues({}, attrs), {
97
+ innerHTML
98
+ }));
99
+ }
100
+ });
101
+ function defineWebWidget(loader, options) {
102
+ options.renderTarget = "light";
103
+ return /* @__PURE__ */ defineComponent({
104
+ name: "WebWidgetSuspense",
105
+ props: {
106
+ renderStage: {
107
+ type: String,
108
+ default: options.renderStage
109
+ },
110
+ fallback: {
111
+ type: Object
112
+ }
113
+ },
114
+ setup(_a, { slots }) {
115
+ var _b = _a, { fallback, renderStage } = _b, data = __objRest(_b, ["fallback", "renderStage"]);
116
+ return () => h(
117
+ Suspense,
118
+ {},
119
+ {
120
+ default: h(
121
+ WebWidget,
122
+ __spreadProps(__spreadValues({}, options), {
123
+ data,
124
+ loader,
125
+ renderStage
126
+ }),
127
+ slots
128
+ ),
129
+ fallback
130
+ }
131
+ );
132
+ }
133
+ });
134
+ }
135
+
1
136
  // src/server.ts
2
137
  import { createSSRApp } from "vue";
3
138
  import { defineRender } from "@web-widget/schema/server-helpers";
4
139
  import { renderToWebStream } from "vue/server-renderer";
5
140
  export * from "@web-widget/schema/server-helpers";
141
+ Reflect.defineProperty(__ENV__, "server", {
142
+ value: true
143
+ });
6
144
  var defineVueRender = ({
7
145
  onCreatedApp = () => {
8
146
  }
@@ -16,6 +154,9 @@ var defineVueRender = ({
16
154
  };
17
155
  var render = defineVueRender();
18
156
  export {
157
+ WebWidget,
158
+ __ENV__,
19
159
  defineVueRender,
160
+ defineWebWidget,
20
161
  render
21
162
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@web-widget/vue",
3
- "version": "0.0.4",
3
+ "version": "0.1.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -22,10 +22,11 @@
22
22
  "dist"
23
23
  ],
24
24
  "dependencies": {
25
- "@web-widget/schema": "0.0.7"
25
+ "@web-widget/schema": "0.0.9",
26
+ "@web-widget/web-widget": "1.0.0-alpha.7"
26
27
  },
27
28
  "peerDependencies": {
28
- "vue": "^3.3.4"
29
+ "vue": ">3.3.3"
29
30
  },
30
31
  "devDependencies": {
31
32
  "tsup": "^7.0.0",