@web-widget/vue2 1.56.1 → 1.57.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.
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
// src/components.ts
|
|
2
2
|
import { WebWidgetRenderer } from "@web-widget/web-widget";
|
|
3
3
|
import Vue, { h, defineComponent, useAttrs, getCurrentInstance } from "vue";
|
|
4
|
-
import { IS_CLIENT } from "@web-widget/helpers/env";
|
|
5
4
|
Vue.config.ignoredElements = ["web-widget"];
|
|
6
|
-
Vue.config.warnHandler = (msg,
|
|
7
|
-
if (msg
|
|
5
|
+
Vue.config.warnHandler = (msg, _vm, trace) => {
|
|
6
|
+
if (msg.includes(`[object Promise]`)) {
|
|
8
7
|
return;
|
|
9
8
|
}
|
|
10
9
|
console.error("[Vue warn]: ".concat(msg).concat(trace));
|
|
11
10
|
};
|
|
12
11
|
function defineWebWidget(loader, options) {
|
|
13
12
|
var _a, _b;
|
|
13
|
+
if (!loader) {
|
|
14
|
+
throw new TypeError(`Missing loader.`);
|
|
15
|
+
}
|
|
14
16
|
return defineComponent({
|
|
15
17
|
name: "WebWidgetRoot",
|
|
16
18
|
inheritAttrs: false,
|
|
@@ -33,25 +35,9 @@ function defineWebWidget(loader, options) {
|
|
|
33
35
|
},
|
|
34
36
|
async serverPrefetch() {
|
|
35
37
|
const widget = this.$widget;
|
|
36
|
-
|
|
37
|
-
this.$innerHTML = innerHTML;
|
|
38
|
+
this.$innerHTML = await widget.renderInnerHTMLToString();
|
|
38
39
|
},
|
|
39
|
-
|
|
40
|
-
// if (!(this as any).$innerHTML) {
|
|
41
|
-
// const widget = (this as any).$widget as WebWidgetRenderer;
|
|
42
|
-
// const innerHTML = await widget.renderInnerHTMLToString();
|
|
43
|
-
// (this as any).$innerHTML = innerHTML;
|
|
44
|
-
// }
|
|
45
|
-
// },
|
|
46
|
-
setup({
|
|
47
|
-
fallback,
|
|
48
|
-
experimental_loading,
|
|
49
|
-
renderStage,
|
|
50
|
-
experimental_renderTarget
|
|
51
|
-
}, { slots }) {
|
|
52
|
-
if (!loader) {
|
|
53
|
-
throw new TypeError(`Missing loader.`);
|
|
54
|
-
}
|
|
40
|
+
setup(props, { slots }) {
|
|
55
41
|
if (Object.keys(slots).length > 0) {
|
|
56
42
|
throw new TypeError(`Slot not supported.`);
|
|
57
43
|
}
|
|
@@ -59,21 +45,17 @@ function defineWebWidget(loader, options) {
|
|
|
59
45
|
const widget = new WebWidgetRenderer(loader, {
|
|
60
46
|
...options,
|
|
61
47
|
data,
|
|
62
|
-
loading: experimental_loading,
|
|
63
|
-
renderStage,
|
|
64
|
-
renderTarget: experimental_renderTarget
|
|
48
|
+
loading: props.experimental_loading,
|
|
49
|
+
renderStage: props.renderStage,
|
|
50
|
+
renderTarget: props.experimental_renderTarget
|
|
65
51
|
});
|
|
66
52
|
const instance = getCurrentInstance();
|
|
67
53
|
instance.proxy.$widget = widget;
|
|
68
|
-
if (IS_CLIENT) {
|
|
69
|
-
}
|
|
70
54
|
return () => {
|
|
71
55
|
const innerHTML = instance.proxy.$innerHTML;
|
|
72
56
|
return h(widget.localName, {
|
|
73
57
|
attrs: widget.attributes,
|
|
74
|
-
domProps: {
|
|
75
|
-
innerHTML
|
|
76
|
-
}
|
|
58
|
+
domProps: { innerHTML }
|
|
77
59
|
});
|
|
78
60
|
};
|
|
79
61
|
}
|
|
@@ -3,7 +3,7 @@ import vue__default, { PropType, Component, ComponentPublicInstance } from 'vue'
|
|
|
3
3
|
import { WebWidgetRendererOptions, Loader } from '@web-widget/web-widget';
|
|
4
4
|
import { ReactWidgetComponent } from '@web-widget/react';
|
|
5
5
|
import { DefaultProps } from 'vue/types/options';
|
|
6
|
-
import {
|
|
6
|
+
import { SerializableValue } from '@web-widget/helpers';
|
|
7
7
|
|
|
8
8
|
interface DefineWebWidgetOptions {
|
|
9
9
|
base?: WebWidgetRendererOptions['base'];
|
|
@@ -59,10 +59,21 @@ interface SerializableObject {
|
|
|
59
59
|
[key: string]: SerializableValue;
|
|
60
60
|
}
|
|
61
61
|
interface CreateVueRenderOptions {
|
|
62
|
-
onBeforeCreateApp?: (context:
|
|
63
|
-
|
|
62
|
+
onBeforeCreateApp?: (context: {
|
|
63
|
+
container?: Element | DocumentFragment;
|
|
64
|
+
data: any;
|
|
65
|
+
progressive?: boolean;
|
|
66
|
+
recovering?: boolean;
|
|
67
|
+
}, component: Component, props: any) => Promise<any>;
|
|
68
|
+
onCreatedApp?: (app: vue__default, context: {
|
|
69
|
+
data: any;
|
|
70
|
+
}, component: Component, props: any) => Promise<void>;
|
|
64
71
|
/**@deprecated*/
|
|
65
|
-
onPrefetchData?: (context:
|
|
72
|
+
onPrefetchData?: (context: {
|
|
73
|
+
data: any;
|
|
74
|
+
}, component: Component,
|
|
75
|
+
/**@deprecated*/
|
|
76
|
+
props: any) => Promise<SerializableObject>;
|
|
66
77
|
}
|
|
67
78
|
|
|
68
79
|
export { type CreateVueRenderOptions as C, type DefineWebWidgetOptions as D, defineWebWidget as d, toReact as t };
|
package/dist/vue2.client.d.ts
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import * as _web_widget_helpers from '@web-widget/helpers';
|
|
2
2
|
export * from '@web-widget/helpers';
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import { Component } from 'vue';
|
|
4
|
+
import { C as CreateVueRenderOptions } from './types-4o3Qq_l9.js';
|
|
5
|
+
export { D as DefineWebWidgetOptions, d as defineWebWidget, t as toReact } from './types-4o3Qq_l9.js';
|
|
5
6
|
export { useWidgetSyncState as useWidgetState } from '@web-widget/helpers/state';
|
|
6
|
-
import 'vue';
|
|
7
7
|
import '@web-widget/web-widget';
|
|
8
8
|
import '@web-widget/react';
|
|
9
9
|
import 'vue/types/options';
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
type EnhancedComponent = Component & {
|
|
12
|
+
__name?: string;
|
|
13
|
+
};
|
|
14
|
+
declare const createVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchData, }?: CreateVueRenderOptions) => _web_widget_helpers.ClientRender<EnhancedComponent, unknown, _web_widget_helpers.ClientRenderOptions, void | _web_widget_helpers.ClientRenderResult<unknown>>;
|
|
12
15
|
/**@deprecated Please use `createVueRender` instead.*/
|
|
13
|
-
declare const defineVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchData, }?: CreateVueRenderOptions) =>
|
|
14
|
-
declare const render:
|
|
16
|
+
declare const defineVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchData, }?: CreateVueRenderOptions) => _web_widget_helpers.ClientRender<EnhancedComponent, unknown, _web_widget_helpers.ClientRenderOptions, void | _web_widget_helpers.ClientRenderResult<unknown>>;
|
|
17
|
+
declare const render: _web_widget_helpers.ClientRender<EnhancedComponent, unknown, _web_widget_helpers.ClientRenderOptions, void | _web_widget_helpers.ClientRenderResult<unknown>>;
|
|
15
18
|
|
|
16
19
|
export { createVueRender, defineVueRender, render };
|
package/dist/vue2.client.js
CHANGED
|
@@ -1,94 +1,99 @@
|
|
|
1
1
|
import {
|
|
2
2
|
defineWebWidget,
|
|
3
3
|
toReact
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-3ANIDHOH.js";
|
|
5
5
|
|
|
6
6
|
// src/client.ts
|
|
7
|
-
import {
|
|
7
|
+
import { defineClientRender } from "@web-widget/helpers";
|
|
8
8
|
import { cacheProviderIsLoading } from "@web-widget/helpers/cache";
|
|
9
9
|
import Vue from "vue";
|
|
10
10
|
export * from "@web-widget/helpers";
|
|
11
11
|
import { useWidgetSyncState } from "@web-widget/helpers/state";
|
|
12
|
+
function sanitizeComponentName(name) {
|
|
13
|
+
return name.replace("@", ".");
|
|
14
|
+
}
|
|
15
|
+
function clearContainerContent(container) {
|
|
16
|
+
if ("innerHTML" in container) {
|
|
17
|
+
container.innerHTML = "";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
12
20
|
var createVueRender = ({
|
|
13
21
|
onBeforeCreateApp = async () => ({}),
|
|
14
22
|
onCreatedApp = async () => {
|
|
15
23
|
},
|
|
16
24
|
onPrefetchData
|
|
17
25
|
} = {}) => {
|
|
18
|
-
return
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const stateContent = state ? JSON.parse(state.textContent) : onPrefetchData ? await onPrefetchData(context, component, props) : void 0;
|
|
41
|
-
if (!root) {
|
|
42
|
-
throw new Error(
|
|
43
|
-
`No element found for hydration: ${vue2ssrAttrSelector}`
|
|
26
|
+
return defineClientRender(
|
|
27
|
+
async (component, data, { recovering, container }) => {
|
|
28
|
+
if (!component) {
|
|
29
|
+
throw new TypeError(`Missing component.`);
|
|
30
|
+
}
|
|
31
|
+
if (!container) {
|
|
32
|
+
throw new Error(`Missing container.`);
|
|
33
|
+
}
|
|
34
|
+
if (component.__name) {
|
|
35
|
+
component.__name = sanitizeComponentName(component.__name);
|
|
36
|
+
}
|
|
37
|
+
let app;
|
|
38
|
+
const context = { data, recovering, container };
|
|
39
|
+
return {
|
|
40
|
+
async mount() {
|
|
41
|
+
let ssrRoot = container;
|
|
42
|
+
let mergedProps = data;
|
|
43
|
+
if (recovering) {
|
|
44
|
+
const vue2ssrAttrSelector = `[data-server-rendered="true"]`;
|
|
45
|
+
const root = container.querySelector(vue2ssrAttrSelector) || container.firstElementChild;
|
|
46
|
+
const state = container.querySelector(
|
|
47
|
+
"script[as=state]"
|
|
44
48
|
);
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
let loading;
|
|
51
|
-
app = new Vue({
|
|
52
|
-
render(h) {
|
|
53
|
-
return h(component, {
|
|
54
|
-
props: mergedProps
|
|
55
|
-
});
|
|
56
|
-
},
|
|
57
|
-
errorCaptured: (err, vm, info) => {
|
|
58
|
-
if (cacheProviderIsLoading(err)) {
|
|
59
|
-
loading = err;
|
|
60
|
-
return false;
|
|
61
|
-
} else {
|
|
62
|
-
throw err;
|
|
49
|
+
const stateContent = state ? JSON.parse(state.textContent) : onPrefetchData ? await onPrefetchData(context, component, data) : void 0;
|
|
50
|
+
if (!root) {
|
|
51
|
+
throw new Error(
|
|
52
|
+
`No element found for hydration: ${vue2ssrAttrSelector}`
|
|
53
|
+
);
|
|
63
54
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
app
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
55
|
+
ssrRoot = root;
|
|
56
|
+
mergedProps = stateContent ? Object.assign(stateContent, data) : data;
|
|
57
|
+
state == null ? void 0 : state.remove();
|
|
58
|
+
}
|
|
59
|
+
let loading;
|
|
60
|
+
app = new Vue({
|
|
61
|
+
render(h) {
|
|
62
|
+
return h(component, {
|
|
63
|
+
props: mergedProps
|
|
64
|
+
});
|
|
65
|
+
},
|
|
66
|
+
errorCaptured: (err, _vm, _info) => {
|
|
67
|
+
if (cacheProviderIsLoading(err)) {
|
|
68
|
+
loading = err;
|
|
69
|
+
return false;
|
|
70
|
+
} else {
|
|
71
|
+
throw err;
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
...await onBeforeCreateApp(context, component, mergedProps)
|
|
75
|
+
});
|
|
76
|
+
await onCreatedApp(app, context, component, mergedProps);
|
|
77
|
+
if (recovering) {
|
|
78
|
+
app.$mount(ssrRoot, recovering);
|
|
79
|
+
} else {
|
|
80
|
+
container.appendChild(app.$mount().$el);
|
|
81
|
+
}
|
|
82
|
+
if (loading) {
|
|
83
|
+
recovering = false;
|
|
84
|
+
clearContainerContent(container);
|
|
85
|
+
throw loading;
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
async unmount() {
|
|
89
|
+
app == null ? void 0 : app.$destroy();
|
|
90
|
+
clearContainerContent(container);
|
|
91
|
+
app = null;
|
|
77
92
|
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
clearInsterHTML(container);
|
|
82
|
-
app = null;
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
});
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
);
|
|
86
96
|
};
|
|
87
|
-
function clearInsterHTML(container) {
|
|
88
|
-
if ("innerHTML" in container) {
|
|
89
|
-
container.innerHTML = "";
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
97
|
var defineVueRender = createVueRender;
|
|
93
98
|
var render = createVueRender();
|
|
94
99
|
export {
|
package/dist/vue2.server.d.ts
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import * as _web_widget_helpers from '@web-widget/helpers';
|
|
2
2
|
export * from '@web-widget/helpers';
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import { Component } from 'vue';
|
|
4
|
+
import { C as CreateVueRenderOptions } from './types-4o3Qq_l9.js';
|
|
5
|
+
export { D as DefineWebWidgetOptions, d as defineWebWidget, t as toReact } from './types-4o3Qq_l9.js';
|
|
5
6
|
export { useWidgetSyncState as useWidgetState } from '@web-widget/helpers/state';
|
|
6
|
-
import 'vue';
|
|
7
7
|
import '@web-widget/web-widget';
|
|
8
8
|
import '@web-widget/react';
|
|
9
9
|
import 'vue/types/options';
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
type BuildedComponent = Component & {
|
|
12
|
+
__name?: string;
|
|
13
|
+
};
|
|
14
|
+
declare const createVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchData, }?: CreateVueRenderOptions) => _web_widget_helpers.ServerRender<BuildedComponent, unknown, _web_widget_helpers.ServerRenderOptions, _web_widget_helpers.ServerRenderResult>;
|
|
12
15
|
/**@deprecated Please use `createVueRender` instead.*/
|
|
13
|
-
declare const defineVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchData, }?: CreateVueRenderOptions) =>
|
|
14
|
-
declare const render:
|
|
16
|
+
declare const defineVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchData, }?: CreateVueRenderOptions) => _web_widget_helpers.ServerRender<BuildedComponent, unknown, _web_widget_helpers.ServerRenderOptions, _web_widget_helpers.ServerRenderResult>;
|
|
17
|
+
declare const render: _web_widget_helpers.ServerRender<BuildedComponent, unknown, _web_widget_helpers.ServerRenderOptions, _web_widget_helpers.ServerRenderResult>;
|
|
15
18
|
|
|
16
19
|
export { createVueRender, defineVueRender, render };
|
package/dist/vue2.server.js
CHANGED
|
@@ -1,31 +1,35 @@
|
|
|
1
1
|
import {
|
|
2
2
|
defineWebWidget,
|
|
3
3
|
toReact
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-3ANIDHOH.js";
|
|
5
5
|
|
|
6
6
|
// src/server.ts
|
|
7
|
-
import {
|
|
7
|
+
import { defineServerRender } from "@web-widget/helpers";
|
|
8
8
|
import { escapeJson } from "@web-widget/helpers/purify";
|
|
9
9
|
import Vue from "vue";
|
|
10
10
|
import { createRenderer } from "vue-server-renderer";
|
|
11
11
|
export * from "@web-widget/helpers";
|
|
12
12
|
import { useWidgetSyncState } from "@web-widget/helpers/state";
|
|
13
|
+
function sanitizeComponentName(name) {
|
|
14
|
+
return name.replace("@", "-");
|
|
15
|
+
}
|
|
13
16
|
var createVueRender = ({
|
|
14
17
|
onBeforeCreateApp = async () => ({}),
|
|
15
18
|
onCreatedApp = async () => {
|
|
16
19
|
},
|
|
17
20
|
onPrefetchData
|
|
18
21
|
} = {}) => {
|
|
19
|
-
return
|
|
20
|
-
async (
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
return defineServerRender(
|
|
23
|
+
async (component, data, { progressive }) => {
|
|
24
|
+
if (!component) {
|
|
25
|
+
throw new TypeError(`Missing component.`);
|
|
26
|
+
}
|
|
24
27
|
if (component.__name) {
|
|
25
|
-
component.__name = component.__name
|
|
28
|
+
component.__name = sanitizeComponentName(component.__name);
|
|
26
29
|
}
|
|
27
|
-
const
|
|
28
|
-
const
|
|
30
|
+
const context = { data, progressive };
|
|
31
|
+
const state = onPrefetchData ? await onPrefetchData(context, component, data) : void 0;
|
|
32
|
+
const mergedProps = state ? Object.assign({}, state, data) : data;
|
|
29
33
|
const renderer = createRenderer();
|
|
30
34
|
const app = new Vue({
|
|
31
35
|
render: (h) => h(component, {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@web-widget/vue2",
|
|
3
3
|
"description": "Vue2 adapter",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.57.0",
|
|
5
5
|
"homepage": "https://github.com/web-widget/web-widget#readme",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@rollup/pluginutils": "^5.1.4",
|
|
17
|
-
"@web-widget/helpers": "1.
|
|
18
|
-
"@web-widget/vite-plugin": "1.
|
|
19
|
-
"@web-widget/web-widget": "1.
|
|
20
|
-
"@web-widget/react": "1.
|
|
17
|
+
"@web-widget/helpers": "1.57.0",
|
|
18
|
+
"@web-widget/vite-plugin": "1.57.0",
|
|
19
|
+
"@web-widget/web-widget": "1.57.0",
|
|
20
|
+
"@web-widget/react": "1.57.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@types/node": "^22.2.0",
|