@web-widget/vue 0.1.0 → 0.1.2
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/vue.client.d.ts +53 -27
- package/dist/vue.client.js +30 -17
- package/dist/vue.server.d.ts +53 -27
- package/dist/vue.server.js +51 -17
- package/package.json +4 -3
package/dist/vue.client.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as _web_widget_schema from '@web-widget/schema';
|
|
2
|
+
import { RenderContext, ComponentProps } from '@web-widget/schema';
|
|
2
3
|
import * as vue from 'vue';
|
|
3
|
-
import { PropType, VNode,
|
|
4
|
-
import { RenderContext, ComponentProps } from '@web-widget/schema/client-helpers';
|
|
4
|
+
import { PropType, VNode, Component, App } from 'vue';
|
|
5
5
|
export * from '@web-widget/schema/client-helpers';
|
|
6
|
-
import { Loader,
|
|
6
|
+
import { Loader, WebWidgetContainerOptions } from '@web-widget/web-widget';
|
|
7
7
|
|
|
8
8
|
declare const __ENV__: {
|
|
9
9
|
server: boolean;
|
|
@@ -23,6 +23,10 @@ declare const WebWidget: vue.DefineComponent<{
|
|
|
23
23
|
import: {
|
|
24
24
|
type: PropType<string | undefined>;
|
|
25
25
|
};
|
|
26
|
+
inactive: {
|
|
27
|
+
type: PropType<boolean | undefined>;
|
|
28
|
+
default: undefined;
|
|
29
|
+
};
|
|
26
30
|
loader: {
|
|
27
31
|
type: PropType<Loader>;
|
|
28
32
|
required: true;
|
|
@@ -30,11 +34,14 @@ declare const WebWidget: vue.DefineComponent<{
|
|
|
30
34
|
loading: {
|
|
31
35
|
type: PropType<string | undefined>;
|
|
32
36
|
};
|
|
37
|
+
meta: {
|
|
38
|
+
type: PropType<_web_widget_schema.Meta | undefined>;
|
|
39
|
+
};
|
|
33
40
|
name: {
|
|
34
41
|
type: PropType<string | undefined>;
|
|
35
42
|
};
|
|
36
|
-
|
|
37
|
-
type: PropType<
|
|
43
|
+
renderStage: {
|
|
44
|
+
type: PropType<"server" | "client" | undefined>;
|
|
38
45
|
};
|
|
39
46
|
renderTarget: {
|
|
40
47
|
type: PropType<"light" | "shadow" | undefined>;
|
|
@@ -57,6 +64,10 @@ declare const WebWidget: vue.DefineComponent<{
|
|
|
57
64
|
import: {
|
|
58
65
|
type: PropType<string | undefined>;
|
|
59
66
|
};
|
|
67
|
+
inactive: {
|
|
68
|
+
type: PropType<boolean | undefined>;
|
|
69
|
+
default: undefined;
|
|
70
|
+
};
|
|
60
71
|
loader: {
|
|
61
72
|
type: PropType<Loader>;
|
|
62
73
|
required: true;
|
|
@@ -64,11 +75,14 @@ declare const WebWidget: vue.DefineComponent<{
|
|
|
64
75
|
loading: {
|
|
65
76
|
type: PropType<string | undefined>;
|
|
66
77
|
};
|
|
78
|
+
meta: {
|
|
79
|
+
type: PropType<_web_widget_schema.Meta | undefined>;
|
|
80
|
+
};
|
|
67
81
|
name: {
|
|
68
82
|
type: PropType<string | undefined>;
|
|
69
83
|
};
|
|
70
|
-
|
|
71
|
-
type: PropType<
|
|
84
|
+
renderStage: {
|
|
85
|
+
type: PropType<"server" | "client" | undefined>;
|
|
72
86
|
};
|
|
73
87
|
renderTarget: {
|
|
74
88
|
type: PropType<"light" | "shadow" | undefined>;
|
|
@@ -80,44 +94,56 @@ declare const WebWidget: vue.DefineComponent<{
|
|
|
80
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)[])[])[])[])[])[])[])[])[])[])[];
|
|
81
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)[])[])[])[])[])[])[])[])[])[])[];
|
|
82
96
|
} | undefined;
|
|
97
|
+
inactive: boolean | undefined;
|
|
83
98
|
renderTarget: "light" | "shadow" | undefined;
|
|
84
99
|
}, {}>;
|
|
85
100
|
interface DefineWebWidgetOptions {
|
|
86
|
-
base?:
|
|
87
|
-
import?:
|
|
88
|
-
loading?:
|
|
89
|
-
name?:
|
|
90
|
-
|
|
91
|
-
renderTarget?:
|
|
101
|
+
base?: WebWidgetContainerOptions["base"];
|
|
102
|
+
import?: WebWidgetContainerOptions["import"];
|
|
103
|
+
loading?: WebWidgetContainerOptions["loading"];
|
|
104
|
+
name?: WebWidgetContainerOptions["name"];
|
|
105
|
+
renderStage?: WebWidgetContainerOptions["renderStage"];
|
|
106
|
+
renderTarget?: WebWidgetContainerOptions["renderTarget"];
|
|
92
107
|
}
|
|
93
108
|
declare function defineWebWidget(loader: Loader, options: DefineWebWidgetOptions): vue.DefineComponent<{
|
|
94
|
-
|
|
95
|
-
type:
|
|
96
|
-
default:
|
|
109
|
+
renderStage: {
|
|
110
|
+
type: PropType<"server" | "client" | undefined>;
|
|
111
|
+
default: "server" | "client" | undefined;
|
|
97
112
|
};
|
|
98
113
|
fallback: {
|
|
99
|
-
type:
|
|
100
|
-
|
|
114
|
+
type: PropType<VNode<vue.RendererNode, vue.RendererElement, {
|
|
115
|
+
[key: string]: any;
|
|
116
|
+
}>>;
|
|
101
117
|
};
|
|
102
118
|
}, () => VNode<vue.RendererNode, vue.RendererElement, {
|
|
103
119
|
[key: string]: any;
|
|
104
120
|
}>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
|
|
105
|
-
|
|
106
|
-
type:
|
|
107
|
-
default:
|
|
121
|
+
renderStage: {
|
|
122
|
+
type: PropType<"server" | "client" | undefined>;
|
|
123
|
+
default: "server" | "client" | undefined;
|
|
108
124
|
};
|
|
109
125
|
fallback: {
|
|
110
|
-
type:
|
|
111
|
-
|
|
126
|
+
type: PropType<VNode<vue.RendererNode, vue.RendererElement, {
|
|
127
|
+
[key: string]: any;
|
|
128
|
+
}>>;
|
|
112
129
|
};
|
|
113
130
|
}>>, {
|
|
114
|
-
|
|
131
|
+
renderStage: "server" | "client" | undefined;
|
|
115
132
|
}, {}>;
|
|
116
133
|
|
|
134
|
+
type JSONValue = string | number | boolean | {
|
|
135
|
+
[x: string]: JSONValue;
|
|
136
|
+
} | Array<JSONValue>;
|
|
137
|
+
type JSONProps = {
|
|
138
|
+
[x: string]: JSONValue;
|
|
139
|
+
};
|
|
117
140
|
interface DefineVueRenderOptions {
|
|
118
|
-
|
|
141
|
+
onBeforeCreateApp?: (context: RenderContext, component: Component, props: ComponentProps) => any;
|
|
142
|
+
onCreatedApp?: (app: App<Element>, context: RenderContext, component: Component, props: ComponentProps) => void;
|
|
143
|
+
onPrefetchData?: (context: RenderContext, component: Component, props: ComponentProps) => Promise<JSONProps>;
|
|
119
144
|
}
|
|
120
|
-
|
|
145
|
+
|
|
146
|
+
declare const defineVueRender: ({ onCreatedApp, onPrefetchData, }?: DefineVueRenderOptions) => (context: _web_widget_schema.ClientWidgetRenderContext<unknown> | _web_widget_schema.ClientRouteRenderContext<unknown, Record<string, string>>) => Promise<void | {
|
|
121
147
|
mount?: (() => void | Promise<void>) | undefined;
|
|
122
148
|
unmount?: (() => void | Promise<void>) | undefined;
|
|
123
149
|
update?: (({ data }: {
|
|
@@ -144,4 +170,4 @@ declare const render: (context: _web_widget_schema.ClientWidgetRenderContext<unk
|
|
|
144
170
|
}) => void | Promise<void>) | undefined;
|
|
145
171
|
}>;
|
|
146
172
|
|
|
147
|
-
export {
|
|
173
|
+
export { DefineWebWidgetOptions, WebWidget, __ENV__, defineVueRender, defineWebWidget, render };
|
package/dist/vue.client.js
CHANGED
|
@@ -49,6 +49,11 @@ var WebWidget = /* @__PURE__ */ defineComponent({
|
|
|
49
49
|
import: {
|
|
50
50
|
type: String
|
|
51
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
|
+
},
|
|
52
57
|
loader: {
|
|
53
58
|
type: Function,
|
|
54
59
|
required: true
|
|
@@ -56,11 +61,14 @@ var WebWidget = /* @__PURE__ */ defineComponent({
|
|
|
56
61
|
loading: {
|
|
57
62
|
type: String
|
|
58
63
|
},
|
|
64
|
+
meta: {
|
|
65
|
+
type: Object
|
|
66
|
+
},
|
|
59
67
|
name: {
|
|
60
68
|
type: String
|
|
61
69
|
},
|
|
62
|
-
|
|
63
|
-
type:
|
|
70
|
+
renderStage: {
|
|
71
|
+
type: String
|
|
64
72
|
},
|
|
65
73
|
renderTarget: {
|
|
66
74
|
type: String,
|
|
@@ -69,7 +77,7 @@ var WebWidget = /* @__PURE__ */ defineComponent({
|
|
|
69
77
|
},
|
|
70
78
|
async setup(_a, { slots }) {
|
|
71
79
|
var _b = _a, { loader } = _b, props = __objRest(_b, ["loader"]);
|
|
72
|
-
if (
|
|
80
|
+
if (!loader) {
|
|
73
81
|
throw new TypeError(`Missing loader.`);
|
|
74
82
|
}
|
|
75
83
|
if (Object.keys(slots).length > 0) {
|
|
@@ -95,17 +103,16 @@ function defineWebWidget(loader, options) {
|
|
|
95
103
|
return /* @__PURE__ */ defineComponent({
|
|
96
104
|
name: "WebWidgetSuspense",
|
|
97
105
|
props: {
|
|
98
|
-
|
|
99
|
-
type:
|
|
100
|
-
default:
|
|
106
|
+
renderStage: {
|
|
107
|
+
type: String,
|
|
108
|
+
default: options.renderStage
|
|
101
109
|
},
|
|
102
110
|
fallback: {
|
|
103
|
-
type: Object
|
|
104
|
-
required: false
|
|
111
|
+
type: Object
|
|
105
112
|
}
|
|
106
113
|
},
|
|
107
114
|
setup(_a, { slots }) {
|
|
108
|
-
var _b = _a, {
|
|
115
|
+
var _b = _a, { fallback, renderStage } = _b, data = __objRest(_b, ["fallback", "renderStage"]);
|
|
109
116
|
return () => h(
|
|
110
117
|
Suspense,
|
|
111
118
|
{},
|
|
@@ -113,9 +120,9 @@ function defineWebWidget(loader, options) {
|
|
|
113
120
|
default: h(
|
|
114
121
|
WebWidget,
|
|
115
122
|
__spreadProps(__spreadValues({}, options), {
|
|
116
|
-
loader,
|
|
117
123
|
data,
|
|
118
|
-
|
|
124
|
+
loader,
|
|
125
|
+
renderStage
|
|
119
126
|
}),
|
|
120
127
|
slots
|
|
121
128
|
),
|
|
@@ -135,7 +142,8 @@ Reflect.defineProperty(__ENV__, "server", {
|
|
|
135
142
|
});
|
|
136
143
|
var defineVueRender = ({
|
|
137
144
|
onCreatedApp = () => {
|
|
138
|
-
}
|
|
145
|
+
},
|
|
146
|
+
onPrefetchData
|
|
139
147
|
} = {}) => {
|
|
140
148
|
return defineRender(async (context, component, props) => {
|
|
141
149
|
if (!context.container) {
|
|
@@ -144,14 +152,19 @@ var defineVueRender = ({
|
|
|
144
152
|
let app;
|
|
145
153
|
return {
|
|
146
154
|
async mount() {
|
|
147
|
-
const
|
|
155
|
+
const shell = context.recovering && context.container.querySelector("[webwidgetshell]") || context.container;
|
|
156
|
+
const state = context.recovering ? context.container.querySelector(
|
|
157
|
+
"[webwidgetstate]"
|
|
158
|
+
) : null;
|
|
159
|
+
const stateContent = context.recovering && state ? JSON.parse(state.textContent) : onPrefetchData ? await onPrefetchData(context, component, props) : void 0;
|
|
160
|
+
const mergedProps = stateContent ? Object.assign({}, stateContent, props) : props;
|
|
148
161
|
if (context.recovering) {
|
|
149
|
-
app = createSSRApp(component,
|
|
162
|
+
app = createSSRApp(component, mergedProps);
|
|
150
163
|
} else {
|
|
151
|
-
app = createApp(component,
|
|
164
|
+
app = createApp(component, mergedProps);
|
|
152
165
|
}
|
|
153
|
-
onCreatedApp(app, context, component,
|
|
154
|
-
app.mount(
|
|
166
|
+
onCreatedApp(app, context, component, mergedProps);
|
|
167
|
+
app.mount(shell);
|
|
155
168
|
},
|
|
156
169
|
async unmount() {
|
|
157
170
|
app == null ? void 0 : app.unmount();
|
package/dist/vue.server.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as _web_widget_schema from '@web-widget/schema';
|
|
2
|
+
import { RenderContext, ComponentProps } from '@web-widget/schema';
|
|
2
3
|
import * as vue from 'vue';
|
|
3
|
-
import { PropType, VNode,
|
|
4
|
-
import { RenderContext, ComponentProps } from '@web-widget/schema/server-helpers';
|
|
4
|
+
import { PropType, VNode, Component, App } from 'vue';
|
|
5
5
|
export * from '@web-widget/schema/server-helpers';
|
|
6
|
-
import { Loader,
|
|
6
|
+
import { Loader, WebWidgetContainerOptions } from '@web-widget/web-widget';
|
|
7
7
|
|
|
8
8
|
declare const __ENV__: {
|
|
9
9
|
server: boolean;
|
|
@@ -23,6 +23,10 @@ declare const WebWidget: vue.DefineComponent<{
|
|
|
23
23
|
import: {
|
|
24
24
|
type: PropType<string | undefined>;
|
|
25
25
|
};
|
|
26
|
+
inactive: {
|
|
27
|
+
type: PropType<boolean | undefined>;
|
|
28
|
+
default: undefined;
|
|
29
|
+
};
|
|
26
30
|
loader: {
|
|
27
31
|
type: PropType<Loader>;
|
|
28
32
|
required: true;
|
|
@@ -30,11 +34,14 @@ declare const WebWidget: vue.DefineComponent<{
|
|
|
30
34
|
loading: {
|
|
31
35
|
type: PropType<string | undefined>;
|
|
32
36
|
};
|
|
37
|
+
meta: {
|
|
38
|
+
type: PropType<_web_widget_schema.Meta | undefined>;
|
|
39
|
+
};
|
|
33
40
|
name: {
|
|
34
41
|
type: PropType<string | undefined>;
|
|
35
42
|
};
|
|
36
|
-
|
|
37
|
-
type: PropType<
|
|
43
|
+
renderStage: {
|
|
44
|
+
type: PropType<"server" | "client" | undefined>;
|
|
38
45
|
};
|
|
39
46
|
renderTarget: {
|
|
40
47
|
type: PropType<"light" | "shadow" | undefined>;
|
|
@@ -57,6 +64,10 @@ declare const WebWidget: vue.DefineComponent<{
|
|
|
57
64
|
import: {
|
|
58
65
|
type: PropType<string | undefined>;
|
|
59
66
|
};
|
|
67
|
+
inactive: {
|
|
68
|
+
type: PropType<boolean | undefined>;
|
|
69
|
+
default: undefined;
|
|
70
|
+
};
|
|
60
71
|
loader: {
|
|
61
72
|
type: PropType<Loader>;
|
|
62
73
|
required: true;
|
|
@@ -64,11 +75,14 @@ declare const WebWidget: vue.DefineComponent<{
|
|
|
64
75
|
loading: {
|
|
65
76
|
type: PropType<string | undefined>;
|
|
66
77
|
};
|
|
78
|
+
meta: {
|
|
79
|
+
type: PropType<_web_widget_schema.Meta | undefined>;
|
|
80
|
+
};
|
|
67
81
|
name: {
|
|
68
82
|
type: PropType<string | undefined>;
|
|
69
83
|
};
|
|
70
|
-
|
|
71
|
-
type: PropType<
|
|
84
|
+
renderStage: {
|
|
85
|
+
type: PropType<"server" | "client" | undefined>;
|
|
72
86
|
};
|
|
73
87
|
renderTarget: {
|
|
74
88
|
type: PropType<"light" | "shadow" | undefined>;
|
|
@@ -80,44 +94,56 @@ declare const WebWidget: vue.DefineComponent<{
|
|
|
80
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)[])[])[])[])[])[])[])[])[])[])[];
|
|
81
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)[])[])[])[])[])[])[])[])[])[])[];
|
|
82
96
|
} | undefined;
|
|
97
|
+
inactive: boolean | undefined;
|
|
83
98
|
renderTarget: "light" | "shadow" | undefined;
|
|
84
99
|
}, {}>;
|
|
85
100
|
interface DefineWebWidgetOptions {
|
|
86
|
-
base?:
|
|
87
|
-
import?:
|
|
88
|
-
loading?:
|
|
89
|
-
name?:
|
|
90
|
-
|
|
91
|
-
renderTarget?:
|
|
101
|
+
base?: WebWidgetContainerOptions["base"];
|
|
102
|
+
import?: WebWidgetContainerOptions["import"];
|
|
103
|
+
loading?: WebWidgetContainerOptions["loading"];
|
|
104
|
+
name?: WebWidgetContainerOptions["name"];
|
|
105
|
+
renderStage?: WebWidgetContainerOptions["renderStage"];
|
|
106
|
+
renderTarget?: WebWidgetContainerOptions["renderTarget"];
|
|
92
107
|
}
|
|
93
108
|
declare function defineWebWidget(loader: Loader, options: DefineWebWidgetOptions): vue.DefineComponent<{
|
|
94
|
-
|
|
95
|
-
type:
|
|
96
|
-
default:
|
|
109
|
+
renderStage: {
|
|
110
|
+
type: PropType<"server" | "client" | undefined>;
|
|
111
|
+
default: "server" | "client" | undefined;
|
|
97
112
|
};
|
|
98
113
|
fallback: {
|
|
99
|
-
type:
|
|
100
|
-
|
|
114
|
+
type: PropType<VNode<vue.RendererNode, vue.RendererElement, {
|
|
115
|
+
[key: string]: any;
|
|
116
|
+
}>>;
|
|
101
117
|
};
|
|
102
118
|
}, () => VNode<vue.RendererNode, vue.RendererElement, {
|
|
103
119
|
[key: string]: any;
|
|
104
120
|
}>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
|
|
105
|
-
|
|
106
|
-
type:
|
|
107
|
-
default:
|
|
121
|
+
renderStage: {
|
|
122
|
+
type: PropType<"server" | "client" | undefined>;
|
|
123
|
+
default: "server" | "client" | undefined;
|
|
108
124
|
};
|
|
109
125
|
fallback: {
|
|
110
|
-
type:
|
|
111
|
-
|
|
126
|
+
type: PropType<VNode<vue.RendererNode, vue.RendererElement, {
|
|
127
|
+
[key: string]: any;
|
|
128
|
+
}>>;
|
|
112
129
|
};
|
|
113
130
|
}>>, {
|
|
114
|
-
|
|
131
|
+
renderStage: "server" | "client" | undefined;
|
|
115
132
|
}, {}>;
|
|
116
133
|
|
|
134
|
+
type JSONValue = string | number | boolean | {
|
|
135
|
+
[x: string]: JSONValue;
|
|
136
|
+
} | Array<JSONValue>;
|
|
137
|
+
type JSONProps = {
|
|
138
|
+
[x: string]: JSONValue;
|
|
139
|
+
};
|
|
117
140
|
interface DefineVueRenderOptions {
|
|
118
|
-
|
|
141
|
+
onBeforeCreateApp?: (context: RenderContext, component: Component, props: ComponentProps) => any;
|
|
142
|
+
onCreatedApp?: (app: App<Element>, context: RenderContext, component: Component, props: ComponentProps) => void;
|
|
143
|
+
onPrefetchData?: (context: RenderContext, component: Component, props: ComponentProps) => Promise<JSONProps>;
|
|
119
144
|
}
|
|
120
|
-
|
|
145
|
+
|
|
146
|
+
declare const defineVueRender: ({ onCreatedApp, onPrefetchData, }?: DefineVueRenderOptions) => (context: _web_widget_schema.ServerWidgetRenderContext<unknown> | _web_widget_schema.ServerRouteRenderContext<unknown, Record<string, string>>) => Promise<string | ReadableStream<any>>;
|
|
121
147
|
declare const render: (context: _web_widget_schema.ServerWidgetRenderContext<unknown> | _web_widget_schema.ServerRouteRenderContext<unknown, Record<string, string>>) => Promise<string | ReadableStream<any>>;
|
|
122
148
|
|
|
123
|
-
export {
|
|
149
|
+
export { DefineWebWidgetOptions, WebWidget, __ENV__, defineVueRender, defineWebWidget, render };
|
package/dist/vue.server.js
CHANGED
|
@@ -49,6 +49,11 @@ var WebWidget = /* @__PURE__ */ defineComponent({
|
|
|
49
49
|
import: {
|
|
50
50
|
type: String
|
|
51
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
|
+
},
|
|
52
57
|
loader: {
|
|
53
58
|
type: Function,
|
|
54
59
|
required: true
|
|
@@ -56,11 +61,14 @@ var WebWidget = /* @__PURE__ */ defineComponent({
|
|
|
56
61
|
loading: {
|
|
57
62
|
type: String
|
|
58
63
|
},
|
|
64
|
+
meta: {
|
|
65
|
+
type: Object
|
|
66
|
+
},
|
|
59
67
|
name: {
|
|
60
68
|
type: String
|
|
61
69
|
},
|
|
62
|
-
|
|
63
|
-
type:
|
|
70
|
+
renderStage: {
|
|
71
|
+
type: String
|
|
64
72
|
},
|
|
65
73
|
renderTarget: {
|
|
66
74
|
type: String,
|
|
@@ -69,7 +77,7 @@ var WebWidget = /* @__PURE__ */ defineComponent({
|
|
|
69
77
|
},
|
|
70
78
|
async setup(_a, { slots }) {
|
|
71
79
|
var _b = _a, { loader } = _b, props = __objRest(_b, ["loader"]);
|
|
72
|
-
if (
|
|
80
|
+
if (!loader) {
|
|
73
81
|
throw new TypeError(`Missing loader.`);
|
|
74
82
|
}
|
|
75
83
|
if (Object.keys(slots).length > 0) {
|
|
@@ -95,17 +103,16 @@ function defineWebWidget(loader, options) {
|
|
|
95
103
|
return /* @__PURE__ */ defineComponent({
|
|
96
104
|
name: "WebWidgetSuspense",
|
|
97
105
|
props: {
|
|
98
|
-
|
|
99
|
-
type:
|
|
100
|
-
default:
|
|
106
|
+
renderStage: {
|
|
107
|
+
type: String,
|
|
108
|
+
default: options.renderStage
|
|
101
109
|
},
|
|
102
110
|
fallback: {
|
|
103
|
-
type: Object
|
|
104
|
-
required: false
|
|
111
|
+
type: Object
|
|
105
112
|
}
|
|
106
113
|
},
|
|
107
114
|
setup(_a, { slots }) {
|
|
108
|
-
var _b = _a, {
|
|
115
|
+
var _b = _a, { fallback, renderStage } = _b, data = __objRest(_b, ["fallback", "renderStage"]);
|
|
109
116
|
return () => h(
|
|
110
117
|
Suspense,
|
|
111
118
|
{},
|
|
@@ -113,9 +120,9 @@ function defineWebWidget(loader, options) {
|
|
|
113
120
|
default: h(
|
|
114
121
|
WebWidget,
|
|
115
122
|
__spreadProps(__spreadValues({}, options), {
|
|
116
|
-
loader,
|
|
117
123
|
data,
|
|
118
|
-
|
|
124
|
+
loader,
|
|
125
|
+
renderStage
|
|
119
126
|
}),
|
|
120
127
|
slots
|
|
121
128
|
),
|
|
@@ -127,22 +134,49 @@ function defineWebWidget(loader, options) {
|
|
|
127
134
|
}
|
|
128
135
|
|
|
129
136
|
// src/server.ts
|
|
130
|
-
import { createSSRApp } from "vue";
|
|
137
|
+
import { createSSRApp, h as h2, Fragment } from "vue";
|
|
131
138
|
import { defineRender } from "@web-widget/schema/server-helpers";
|
|
132
139
|
import { renderToWebStream } from "vue/server-renderer";
|
|
133
140
|
export * from "@web-widget/schema/server-helpers";
|
|
134
141
|
Reflect.defineProperty(__ENV__, "server", {
|
|
135
142
|
value: true
|
|
136
143
|
});
|
|
144
|
+
var ESCAPE_LOOKUP = {
|
|
145
|
+
">": "\\u003e",
|
|
146
|
+
"<": "\\u003c",
|
|
147
|
+
"\u2028": "\\u2028",
|
|
148
|
+
"\u2029": "\\u2029"
|
|
149
|
+
};
|
|
150
|
+
var ESCAPE_REGEX = /[><\u2028\u2029]/g;
|
|
151
|
+
function htmlEscapeJsonString(str) {
|
|
152
|
+
return str.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);
|
|
153
|
+
}
|
|
137
154
|
var defineVueRender = ({
|
|
138
155
|
onCreatedApp = () => {
|
|
139
|
-
}
|
|
156
|
+
},
|
|
157
|
+
onPrefetchData
|
|
140
158
|
} = {}) => {
|
|
141
159
|
return defineRender(async (context, component, props) => {
|
|
142
|
-
const
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
|
|
160
|
+
const state = onPrefetchData ? await onPrefetchData(context, component, props) : void 0;
|
|
161
|
+
const mergedProps = state ? Object.assign({}, state, props) : props;
|
|
162
|
+
if (state) {
|
|
163
|
+
const stateStringify = htmlEscapeJsonString(JSON.stringify(state));
|
|
164
|
+
const vNode = h2(Fragment, null, [
|
|
165
|
+
h2(component, mergedProps),
|
|
166
|
+
h2("script", {
|
|
167
|
+
webwidgetstate: "",
|
|
168
|
+
type: "application/json",
|
|
169
|
+
innerHTML: stateStringify
|
|
170
|
+
})
|
|
171
|
+
]);
|
|
172
|
+
const app = createSSRApp(vNode);
|
|
173
|
+
onCreatedApp(app, context, component, props);
|
|
174
|
+
return renderToWebStream(app);
|
|
175
|
+
} else {
|
|
176
|
+
const app = createSSRApp(component, mergedProps);
|
|
177
|
+
onCreatedApp(app, context, component, props);
|
|
178
|
+
return renderToWebStream(app);
|
|
179
|
+
}
|
|
146
180
|
});
|
|
147
181
|
};
|
|
148
182
|
var render = defineVueRender();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@web-widget/vue",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -22,8 +22,9 @@
|
|
|
22
22
|
"dist"
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@web-widget/
|
|
26
|
-
"@web-widget/
|
|
25
|
+
"@web-widget/html": "0.0.4",
|
|
26
|
+
"@web-widget/schema": "0.0.9",
|
|
27
|
+
"@web-widget/web-widget": "1.0.0-alpha.7"
|
|
27
28
|
},
|
|
28
29
|
"peerDependencies": {
|
|
29
30
|
"vue": ">3.3.3"
|