@merkur/preact 0.38.0 → 0.40.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.
- package/README.md +1 -1
- package/lib/client/client.cjs +71 -53
- package/lib/client/client.js +71 -53
- package/lib/client/client.mjs +71 -53
- package/lib/server/server.cjs +53 -43
- package/lib/server/server.js +53 -43
- package/lib/server/server.mjs +53 -43
- package/package.json +5 -6
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<p align="center">
|
|
2
2
|
<a href="https://merkur.js.org/docs/getting-started" title="Getting started">
|
|
3
|
-
<img src="https://raw.githubusercontent.com/mjancarik/merkur/master/images/merkur-
|
|
3
|
+
<img src="https://raw.githubusercontent.com/mjancarik/merkur/master/images/merkur-logo.png" width="100px" height="100px" alt="Merkur illustration"/>
|
|
4
4
|
</a>
|
|
5
5
|
</p>
|
|
6
6
|
|
package/lib/client/client.cjs
CHANGED
|
@@ -7,59 +7,77 @@ var helpers = require('@merkur/plugin-component/helpers');
|
|
|
7
7
|
/**
|
|
8
8
|
* Client Factory for creating merkur widgets with preact renderer.
|
|
9
9
|
*/
|
|
10
|
-
function createPreactWidget({
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
10
|
+
function createPreactWidget({
|
|
11
|
+
name,
|
|
12
|
+
version,
|
|
13
|
+
$dependencies,
|
|
14
|
+
viewFactory,
|
|
15
|
+
...restProps
|
|
16
|
+
}) {
|
|
17
|
+
const widgetFactory = async widgetParams => core.createMerkurWidget({
|
|
18
|
+
...restProps,
|
|
19
|
+
...widgetParams,
|
|
20
|
+
$dependencies: {
|
|
21
|
+
...$dependencies,
|
|
22
|
+
render: preact.render,
|
|
23
|
+
hydrate: preact.hydrate
|
|
24
|
+
},
|
|
25
|
+
shouldHydrate(widget, {
|
|
26
|
+
container,
|
|
27
|
+
isSlot
|
|
28
|
+
}) {
|
|
29
|
+
return Boolean(container?.children?.length && !isSlot);
|
|
30
|
+
},
|
|
31
|
+
async mount(widget) {
|
|
32
|
+
await helpers.mapViews(widget, viewFactory, ({
|
|
33
|
+
View,
|
|
34
|
+
ErrorView,
|
|
35
|
+
container,
|
|
36
|
+
...rest
|
|
37
|
+
}) => {
|
|
38
|
+
if (!container) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const {
|
|
42
|
+
render,
|
|
43
|
+
hydrate
|
|
44
|
+
} = widget.$dependencies;
|
|
45
|
+
const renderView = widget.shouldHydrate({
|
|
46
|
+
View,
|
|
47
|
+
ErrorView,
|
|
48
|
+
container,
|
|
49
|
+
...rest
|
|
50
|
+
}) ? hydrate : render;
|
|
51
|
+
// @ts-expect-error the @merkur/plugin-error is optional
|
|
52
|
+
if (widget?.error?.status) {
|
|
53
|
+
return ErrorView ? renderView(ErrorView(widget), container) : render(null, container);
|
|
54
|
+
}
|
|
55
|
+
return renderView(View(widget), container);
|
|
56
|
+
});
|
|
57
|
+
},
|
|
58
|
+
async update(widget) {
|
|
59
|
+
await helpers.mapViews(widget, viewFactory, ({
|
|
60
|
+
View,
|
|
61
|
+
container
|
|
62
|
+
}) => container && widget.$dependencies.render(View(widget), container));
|
|
63
|
+
},
|
|
64
|
+
async unmount(widget) {
|
|
65
|
+
await helpers.mapViews(widget, viewFactory, ({
|
|
66
|
+
container
|
|
67
|
+
}) => {
|
|
68
|
+
if (container) {
|
|
69
|
+
widget.$dependencies.render(null, container);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
// Register widget factory on client
|
|
75
|
+
core.createMerkur().register({
|
|
76
|
+
name,
|
|
77
|
+
version,
|
|
78
|
+
createWidget: widgetFactory
|
|
79
|
+
});
|
|
80
|
+
return widgetFactory;
|
|
63
81
|
}
|
|
64
82
|
|
|
65
83
|
exports.createPreactWidget = createPreactWidget;
|
package/lib/client/client.js
CHANGED
|
@@ -7,59 +7,77 @@ var helpers = require('@merkur/plugin-component/helpers');
|
|
|
7
7
|
/**
|
|
8
8
|
* Client Factory for creating merkur widgets with preact renderer.
|
|
9
9
|
*/
|
|
10
|
-
function createPreactWidget({
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
10
|
+
function createPreactWidget({
|
|
11
|
+
name,
|
|
12
|
+
version,
|
|
13
|
+
$dependencies,
|
|
14
|
+
viewFactory,
|
|
15
|
+
...restProps
|
|
16
|
+
}) {
|
|
17
|
+
const widgetFactory = async widgetParams => core.createMerkurWidget({
|
|
18
|
+
...restProps,
|
|
19
|
+
...widgetParams,
|
|
20
|
+
$dependencies: {
|
|
21
|
+
...$dependencies,
|
|
22
|
+
render: preact.render,
|
|
23
|
+
hydrate: preact.hydrate
|
|
24
|
+
},
|
|
25
|
+
shouldHydrate(widget, {
|
|
26
|
+
container,
|
|
27
|
+
isSlot
|
|
28
|
+
}) {
|
|
29
|
+
return Boolean(container?.children?.length && !isSlot);
|
|
30
|
+
},
|
|
31
|
+
async mount(widget) {
|
|
32
|
+
await helpers.mapViews(widget, viewFactory, ({
|
|
33
|
+
View,
|
|
34
|
+
ErrorView,
|
|
35
|
+
container,
|
|
36
|
+
...rest
|
|
37
|
+
}) => {
|
|
38
|
+
if (!container) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const {
|
|
42
|
+
render,
|
|
43
|
+
hydrate
|
|
44
|
+
} = widget.$dependencies;
|
|
45
|
+
const renderView = widget.shouldHydrate({
|
|
46
|
+
View,
|
|
47
|
+
ErrorView,
|
|
48
|
+
container,
|
|
49
|
+
...rest
|
|
50
|
+
}) ? hydrate : render;
|
|
51
|
+
// @ts-expect-error the @merkur/plugin-error is optional
|
|
52
|
+
if (widget?.error?.status) {
|
|
53
|
+
return ErrorView ? renderView(ErrorView(widget), container) : render(null, container);
|
|
54
|
+
}
|
|
55
|
+
return renderView(View(widget), container);
|
|
56
|
+
});
|
|
57
|
+
},
|
|
58
|
+
async update(widget) {
|
|
59
|
+
await helpers.mapViews(widget, viewFactory, ({
|
|
60
|
+
View,
|
|
61
|
+
container
|
|
62
|
+
}) => container && widget.$dependencies.render(View(widget), container));
|
|
63
|
+
},
|
|
64
|
+
async unmount(widget) {
|
|
65
|
+
await helpers.mapViews(widget, viewFactory, ({
|
|
66
|
+
container
|
|
67
|
+
}) => {
|
|
68
|
+
if (container) {
|
|
69
|
+
widget.$dependencies.render(null, container);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
// Register widget factory on client
|
|
75
|
+
core.createMerkur().register({
|
|
76
|
+
name,
|
|
77
|
+
version,
|
|
78
|
+
createWidget: widgetFactory
|
|
79
|
+
});
|
|
80
|
+
return widgetFactory;
|
|
63
81
|
}
|
|
64
82
|
|
|
65
83
|
exports.createPreactWidget = createPreactWidget;
|
package/lib/client/client.mjs
CHANGED
|
@@ -5,59 +5,77 @@ import { mapViews } from '@merkur/plugin-component/helpers';
|
|
|
5
5
|
/**
|
|
6
6
|
* Client Factory for creating merkur widgets with preact renderer.
|
|
7
7
|
*/
|
|
8
|
-
function createPreactWidget({
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
8
|
+
function createPreactWidget({
|
|
9
|
+
name,
|
|
10
|
+
version,
|
|
11
|
+
$dependencies,
|
|
12
|
+
viewFactory,
|
|
13
|
+
...restProps
|
|
14
|
+
}) {
|
|
15
|
+
const widgetFactory = async widgetParams => createMerkurWidget({
|
|
16
|
+
...restProps,
|
|
17
|
+
...widgetParams,
|
|
18
|
+
$dependencies: {
|
|
19
|
+
...$dependencies,
|
|
20
|
+
render,
|
|
21
|
+
hydrate
|
|
22
|
+
},
|
|
23
|
+
shouldHydrate(widget, {
|
|
24
|
+
container,
|
|
25
|
+
isSlot
|
|
26
|
+
}) {
|
|
27
|
+
return Boolean(container?.children?.length && !isSlot);
|
|
28
|
+
},
|
|
29
|
+
async mount(widget) {
|
|
30
|
+
await mapViews(widget, viewFactory, ({
|
|
31
|
+
View,
|
|
32
|
+
ErrorView,
|
|
33
|
+
container,
|
|
34
|
+
...rest
|
|
35
|
+
}) => {
|
|
36
|
+
if (!container) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const {
|
|
40
|
+
render,
|
|
41
|
+
hydrate
|
|
42
|
+
} = widget.$dependencies;
|
|
43
|
+
const renderView = widget.shouldHydrate({
|
|
44
|
+
View,
|
|
45
|
+
ErrorView,
|
|
46
|
+
container,
|
|
47
|
+
...rest
|
|
48
|
+
}) ? hydrate : render;
|
|
49
|
+
// @ts-expect-error the @merkur/plugin-error is optional
|
|
50
|
+
if (widget?.error?.status) {
|
|
51
|
+
return ErrorView ? renderView(ErrorView(widget), container) : render(null, container);
|
|
52
|
+
}
|
|
53
|
+
return renderView(View(widget), container);
|
|
54
|
+
});
|
|
55
|
+
},
|
|
56
|
+
async update(widget) {
|
|
57
|
+
await mapViews(widget, viewFactory, ({
|
|
58
|
+
View,
|
|
59
|
+
container
|
|
60
|
+
}) => container && widget.$dependencies.render(View(widget), container));
|
|
61
|
+
},
|
|
62
|
+
async unmount(widget) {
|
|
63
|
+
await mapViews(widget, viewFactory, ({
|
|
64
|
+
container
|
|
65
|
+
}) => {
|
|
66
|
+
if (container) {
|
|
67
|
+
widget.$dependencies.render(null, container);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
// Register widget factory on client
|
|
73
|
+
createMerkur().register({
|
|
74
|
+
name,
|
|
75
|
+
version,
|
|
76
|
+
createWidget: widgetFactory
|
|
77
|
+
});
|
|
78
|
+
return widgetFactory;
|
|
61
79
|
}
|
|
62
80
|
|
|
63
81
|
export { createPreactWidget };
|
package/lib/server/server.cjs
CHANGED
|
@@ -6,49 +6,59 @@ var core = require('@merkur/core');
|
|
|
6
6
|
/**
|
|
7
7
|
* Server Factory for creating merkur widgets with preact renderer.
|
|
8
8
|
*/
|
|
9
|
-
function createPreactWidget({
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
9
|
+
function createPreactWidget({
|
|
10
|
+
viewFactory,
|
|
11
|
+
$dependencies,
|
|
12
|
+
...restProps
|
|
13
|
+
}) {
|
|
14
|
+
return widgetParams => core.createMerkurWidget({
|
|
15
|
+
...restProps,
|
|
16
|
+
...widgetParams,
|
|
17
|
+
$dependencies: {
|
|
18
|
+
...$dependencies,
|
|
19
|
+
// @ts-expect-error conflict with client types
|
|
20
|
+
render
|
|
21
|
+
},
|
|
22
|
+
async mount(widget) {
|
|
23
|
+
const {
|
|
24
|
+
render
|
|
25
|
+
} = widget.$dependencies;
|
|
26
|
+
const {
|
|
27
|
+
View: MainView,
|
|
28
|
+
ErrorView,
|
|
29
|
+
slot = {}
|
|
30
|
+
} = await viewFactory(widget);
|
|
31
|
+
/**
|
|
32
|
+
* Wrapper around $dependencies.render function which
|
|
33
|
+
* handles connection to ErrorView and error plugin when defined.
|
|
34
|
+
*/
|
|
35
|
+
const renderView = View => {
|
|
36
|
+
// @ts-expect-error the @merkur/plugin-error is optional
|
|
37
|
+
if (widget?.error?.status && ErrorView) {
|
|
38
|
+
// @ts-expect-error conflict with client types
|
|
39
|
+
return render(ErrorView(widget));
|
|
40
|
+
}
|
|
41
|
+
// @ts-expect-error the @merkur/plugin-error is optional
|
|
42
|
+
if (widget?.error?.status) {
|
|
43
|
+
// @ts-expect-error conflict with client types
|
|
44
|
+
return render(null);
|
|
45
|
+
}
|
|
46
|
+
// @ts-expect-error conflict with client types
|
|
47
|
+
return render(View(widget));
|
|
48
|
+
};
|
|
49
|
+
return {
|
|
50
|
+
html: renderView(MainView),
|
|
51
|
+
slot: Object.keys(slot).reduce((acc, cur) => {
|
|
52
|
+
acc[cur] = {
|
|
53
|
+
name: slot[cur].name,
|
|
54
|
+
containerSelector: slot[cur].containerSelector,
|
|
55
|
+
html: renderView(slot[cur].View)
|
|
56
|
+
};
|
|
57
|
+
return acc;
|
|
58
|
+
}, {})
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
});
|
|
52
62
|
}
|
|
53
63
|
|
|
54
64
|
exports.createPreactWidget = createPreactWidget;
|
package/lib/server/server.js
CHANGED
|
@@ -6,49 +6,59 @@ var core = require('@merkur/core');
|
|
|
6
6
|
/**
|
|
7
7
|
* Server Factory for creating merkur widgets with preact renderer.
|
|
8
8
|
*/
|
|
9
|
-
function createPreactWidget({
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
9
|
+
function createPreactWidget({
|
|
10
|
+
viewFactory,
|
|
11
|
+
$dependencies,
|
|
12
|
+
...restProps
|
|
13
|
+
}) {
|
|
14
|
+
return widgetParams => core.createMerkurWidget({
|
|
15
|
+
...restProps,
|
|
16
|
+
...widgetParams,
|
|
17
|
+
$dependencies: {
|
|
18
|
+
...$dependencies,
|
|
19
|
+
// @ts-expect-error conflict with client types
|
|
20
|
+
render
|
|
21
|
+
},
|
|
22
|
+
async mount(widget) {
|
|
23
|
+
const {
|
|
24
|
+
render
|
|
25
|
+
} = widget.$dependencies;
|
|
26
|
+
const {
|
|
27
|
+
View: MainView,
|
|
28
|
+
ErrorView,
|
|
29
|
+
slot = {}
|
|
30
|
+
} = await viewFactory(widget);
|
|
31
|
+
/**
|
|
32
|
+
* Wrapper around $dependencies.render function which
|
|
33
|
+
* handles connection to ErrorView and error plugin when defined.
|
|
34
|
+
*/
|
|
35
|
+
const renderView = View => {
|
|
36
|
+
// @ts-expect-error the @merkur/plugin-error is optional
|
|
37
|
+
if (widget?.error?.status && ErrorView) {
|
|
38
|
+
// @ts-expect-error conflict with client types
|
|
39
|
+
return render(ErrorView(widget));
|
|
40
|
+
}
|
|
41
|
+
// @ts-expect-error the @merkur/plugin-error is optional
|
|
42
|
+
if (widget?.error?.status) {
|
|
43
|
+
// @ts-expect-error conflict with client types
|
|
44
|
+
return render(null);
|
|
45
|
+
}
|
|
46
|
+
// @ts-expect-error conflict with client types
|
|
47
|
+
return render(View(widget));
|
|
48
|
+
};
|
|
49
|
+
return {
|
|
50
|
+
html: renderView(MainView),
|
|
51
|
+
slot: Object.keys(slot).reduce((acc, cur) => {
|
|
52
|
+
acc[cur] = {
|
|
53
|
+
name: slot[cur].name,
|
|
54
|
+
containerSelector: slot[cur].containerSelector,
|
|
55
|
+
html: renderView(slot[cur].View)
|
|
56
|
+
};
|
|
57
|
+
return acc;
|
|
58
|
+
}, {})
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
});
|
|
52
62
|
}
|
|
53
63
|
|
|
54
64
|
exports.createPreactWidget = createPreactWidget;
|
package/lib/server/server.mjs
CHANGED
|
@@ -4,49 +4,59 @@ import { createMerkurWidget } from '@merkur/core';
|
|
|
4
4
|
/**
|
|
5
5
|
* Server Factory for creating merkur widgets with preact renderer.
|
|
6
6
|
*/
|
|
7
|
-
function createPreactWidget({
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
7
|
+
function createPreactWidget({
|
|
8
|
+
viewFactory,
|
|
9
|
+
$dependencies,
|
|
10
|
+
...restProps
|
|
11
|
+
}) {
|
|
12
|
+
return widgetParams => createMerkurWidget({
|
|
13
|
+
...restProps,
|
|
14
|
+
...widgetParams,
|
|
15
|
+
$dependencies: {
|
|
16
|
+
...$dependencies,
|
|
17
|
+
// @ts-expect-error conflict with client types
|
|
18
|
+
render
|
|
19
|
+
},
|
|
20
|
+
async mount(widget) {
|
|
21
|
+
const {
|
|
22
|
+
render
|
|
23
|
+
} = widget.$dependencies;
|
|
24
|
+
const {
|
|
25
|
+
View: MainView,
|
|
26
|
+
ErrorView,
|
|
27
|
+
slot = {}
|
|
28
|
+
} = await viewFactory(widget);
|
|
29
|
+
/**
|
|
30
|
+
* Wrapper around $dependencies.render function which
|
|
31
|
+
* handles connection to ErrorView and error plugin when defined.
|
|
32
|
+
*/
|
|
33
|
+
const renderView = View => {
|
|
34
|
+
// @ts-expect-error the @merkur/plugin-error is optional
|
|
35
|
+
if (widget?.error?.status && ErrorView) {
|
|
36
|
+
// @ts-expect-error conflict with client types
|
|
37
|
+
return render(ErrorView(widget));
|
|
38
|
+
}
|
|
39
|
+
// @ts-expect-error the @merkur/plugin-error is optional
|
|
40
|
+
if (widget?.error?.status) {
|
|
41
|
+
// @ts-expect-error conflict with client types
|
|
42
|
+
return render(null);
|
|
43
|
+
}
|
|
44
|
+
// @ts-expect-error conflict with client types
|
|
45
|
+
return render(View(widget));
|
|
46
|
+
};
|
|
47
|
+
return {
|
|
48
|
+
html: renderView(MainView),
|
|
49
|
+
slot: Object.keys(slot).reduce((acc, cur) => {
|
|
50
|
+
acc[cur] = {
|
|
51
|
+
name: slot[cur].name,
|
|
52
|
+
containerSelector: slot[cur].containerSelector,
|
|
53
|
+
html: renderView(slot[cur].View)
|
|
54
|
+
};
|
|
55
|
+
return acc;
|
|
56
|
+
}, {})
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
});
|
|
50
60
|
}
|
|
51
61
|
|
|
52
62
|
export { createPreactWidget };
|
package/package.json
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@merkur/preact",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.40.0",
|
|
4
4
|
"description": "Collection of helpers to aid with Preact integration to @merkur",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "echo 'Tests pass.'",
|
|
7
7
|
"test:es:version": "echo 'Tests pass.'",
|
|
8
8
|
"build": "rollup -c rollup.config.mjs",
|
|
9
|
-
"prepare": "npm run build",
|
|
10
9
|
"dev": "rollup -c rollup.config.mjs -w"
|
|
11
10
|
},
|
|
12
11
|
"exports": {
|
|
@@ -45,9 +44,9 @@
|
|
|
45
44
|
"access": "public"
|
|
46
45
|
},
|
|
47
46
|
"dependencies": {
|
|
48
|
-
"@babel/preset-react": "^7.
|
|
49
|
-
"preact": "^10.
|
|
50
|
-
"preact-render-to-string": "^6.
|
|
47
|
+
"@babel/preset-react": "^7.28.5",
|
|
48
|
+
"preact": "^10.27.2",
|
|
49
|
+
"preact-render-to-string": "^6.6.3"
|
|
51
50
|
},
|
|
52
51
|
"peerDependencies": {
|
|
53
52
|
"@merkur/core": ">=0.34",
|
|
@@ -55,5 +54,5 @@
|
|
|
55
54
|
"@merkur/tool-webpack": ">=0.28",
|
|
56
55
|
"babel-loader": ">=9"
|
|
57
56
|
},
|
|
58
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "a7bf45d46a5c0fca7130ae6a86e1cd94e5894ca2"
|
|
59
58
|
}
|