piral-inferno 1.0.0-pre.2107 → 1.0.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/LICENSE +1 -1
- package/README.md +9 -10
- package/convert.d.ts +16 -7
- package/convert.js +16 -11
- package/esm/converter.d.ts +13 -3
- package/esm/converter.js +16 -14
- package/esm/converter.js.map +1 -1
- package/esm/create.d.ts +2 -6
- package/esm/create.js +7 -13
- package/esm/create.js.map +1 -1
- package/esm/extension.d.ts +2 -2
- package/esm/extension.js +37 -17
- package/esm/extension.js.map +1 -1
- package/esm/mount.d.ts +1 -1
- package/esm/mount.js +11 -18
- package/esm/mount.js.map +1 -1
- package/esm/types.d.ts +2 -2
- package/lib/converter.d.ts +13 -3
- package/lib/converter.js +17 -15
- package/lib/converter.js.map +1 -1
- package/lib/create.d.ts +2 -6
- package/lib/create.js +8 -14
- package/lib/create.js.map +1 -1
- package/lib/extension.d.ts +2 -2
- package/lib/extension.js +42 -22
- package/lib/extension.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/mount.d.ts +1 -1
- package/lib/mount.js +16 -22
- package/lib/mount.js.map +1 -1
- package/lib/types.d.ts +2 -2
- package/package.json +26 -7
- package/src/converter.ts +26 -16
- package/src/create.ts +4 -13
- package/src/extension.ts +33 -2
- package/src/mount.ts +1 -1
- package/src/types.ts +2 -2
- package/convert.ts +0 -16
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
[](https://piral.io)
|
|
2
2
|
|
|
3
|
-
# [Piral Inferno](https://piral.io) · [](https://github.com/smapiot/piral/blob/
|
|
3
|
+
# [Piral Inferno](https://piral.io) · [](https://github.com/smapiot/piral/blob/main/LICENSE) [](https://www.npmjs.com/package/piral-inferno) [](https://jestjs.io) [](https://gitter.im/piral-io/community)
|
|
4
4
|
|
|
5
|
-
This is a plugin that only has a peer dependency to `
|
|
5
|
+
This is a plugin that only has a peer dependency to `inferno`. What `piral-inferno` brings to the table is a set of Pilet API extensions that can be used with `piral` or `piral-core`.
|
|
6
6
|
|
|
7
7
|
The set includes an Inferno converter for any component registration, as well as a `fromInferno` shortcut and a `InfernoExtension` component.
|
|
8
8
|
|
|
@@ -47,7 +47,7 @@ Alternatively, if `piral-inferno` has not been added to the Piral instance you c
|
|
|
47
47
|
|
|
48
48
|
```ts
|
|
49
49
|
import { PiletApi } from '<name-of-piral-instance>';
|
|
50
|
-
import { fromInferno } from 'piral-inferno';
|
|
50
|
+
import { fromInferno } from 'piral-inferno/convert';
|
|
51
51
|
import { InfernoPage } from './InfernoPage';
|
|
52
52
|
|
|
53
53
|
export function setup(piral: PiletApi) {
|
|
@@ -62,7 +62,6 @@ export function setup(piral: PiletApi) {
|
|
|
62
62
|
Using Inferno with Piral is as simple as installing `piral-inferno` and `inferno`.
|
|
63
63
|
|
|
64
64
|
```ts
|
|
65
|
-
import 'inferno';
|
|
66
65
|
import { createInfernoApi } from 'piral-inferno';
|
|
67
66
|
```
|
|
68
67
|
|
|
@@ -80,11 +79,11 @@ The `inferno` and `inferno-create-element` package should be shared with the pil
|
|
|
80
79
|
|
|
81
80
|
```json
|
|
82
81
|
{
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"inferno",
|
|
86
|
-
"inferno-create-element"
|
|
87
|
-
|
|
82
|
+
"importmap": {
|
|
83
|
+
"imports": {
|
|
84
|
+
"inferno": "",
|
|
85
|
+
"inferno-create-element": ""
|
|
86
|
+
}
|
|
88
87
|
}
|
|
89
88
|
}
|
|
90
89
|
```
|
package/convert.d.ts
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { createConverter } from './esm/converter';
|
|
2
|
+
export interface HtmlComponent<TProps> {
|
|
3
|
+
component: {
|
|
4
|
+
mount(element: HTMLElement, props: TProps, ctx: any, locals: any): void;
|
|
5
|
+
update?(element: HTMLElement, props: TProps, ctx: any, locals: any): void;
|
|
6
|
+
unmount?(element: HTMLElement, locals: any): void;
|
|
7
|
+
};
|
|
8
|
+
type: 'html';
|
|
9
|
+
}
|
|
4
10
|
export interface InfernoConverter {
|
|
5
|
-
(...params: Parameters<typeof
|
|
11
|
+
(...params: Parameters<ReturnType<typeof createConverter>>): HtmlComponent<any>;
|
|
6
12
|
}
|
|
7
|
-
export declare
|
|
8
|
-
|
|
9
|
-
|
|
13
|
+
export declare function createInfernoConverter(...params: Parameters<typeof createConverter>): {
|
|
14
|
+
from: InfernoConverter;
|
|
15
|
+
Extension: any;
|
|
16
|
+
};
|
|
17
|
+
declare const fromInferno: InfernoConverter, InfernoExtension: any;
|
|
18
|
+
export { fromInferno, InfernoExtension };
|
package/convert.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { createConverter } from './esm/converter';
|
|
2
|
+
export function createInfernoConverter() {
|
|
3
|
+
var params = [];
|
|
4
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
5
|
+
params[_i] = arguments[_i];
|
|
6
|
+
}
|
|
7
|
+
var convert = createConverter.apply(void 0, params);
|
|
8
|
+
var Extension = convert.Extension;
|
|
9
|
+
var from = function (root) { return ({
|
|
10
|
+
type: 'html',
|
|
11
|
+
component: convert(root),
|
|
12
|
+
}); };
|
|
13
|
+
return { from: from, Extension: Extension };
|
|
14
|
+
}
|
|
15
|
+
var _a = createInfernoConverter(), fromInferno = _a.from, InfernoExtension = _a.Extension;
|
|
16
|
+
export { fromInferno, InfernoExtension };
|
package/esm/converter.d.ts
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
-
import { ForeignComponent, BaseComponentProps } from 'piral-core';
|
|
2
|
-
import { ComponentType } from 'inferno';
|
|
3
|
-
export
|
|
1
|
+
import type { ForeignComponent, BaseComponentProps } from 'piral-core';
|
|
2
|
+
import type { ComponentType } from 'inferno';
|
|
3
|
+
export interface InfernoConverterOptions {
|
|
4
|
+
/**
|
|
5
|
+
* Defines the name of the root element.
|
|
6
|
+
* @default piral-slot
|
|
7
|
+
*/
|
|
8
|
+
rootName?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function createConverter(config?: InfernoConverterOptions): {
|
|
11
|
+
<TProps extends BaseComponentProps>(root: ComponentType<TProps>): ForeignComponent<TProps>;
|
|
12
|
+
Extension: import("inferno").Component<import("piral-core").ExtensionSlotProps, {}>;
|
|
13
|
+
};
|
package/esm/converter.js
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { mountInferno, unmountInferno } from './mount';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
2
|
+
import { createExtension } from './extension';
|
|
3
|
+
export function createConverter(config = {}) {
|
|
4
|
+
const { rootName = 'piral-slot' } = config;
|
|
5
|
+
const Extension = createExtension(rootName);
|
|
6
|
+
const convert = (root) => ({
|
|
7
|
+
mount(el, props, ctx) {
|
|
8
|
+
mountInferno(el, root, props, ctx);
|
|
9
|
+
},
|
|
10
|
+
update(el, props, ctx) {
|
|
11
|
+
mountInferno(el, root, props, ctx);
|
|
12
|
+
},
|
|
13
|
+
unmount(el) {
|
|
14
|
+
unmountInferno(el);
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
convert.Extension = Extension;
|
|
16
18
|
return convert;
|
|
17
19
|
}
|
|
18
20
|
//# sourceMappingURL=converter.js.map
|
package/esm/converter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAU9C,MAAM,UAAU,eAAe,CAAC,SAAkC,EAAE;IAClE,MAAM,EAAE,QAAQ,GAAG,YAAY,EAAE,GAAG,MAAM,CAAC;IAC3C,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,CAAoC,IAA2B,EAA4B,EAAE,CAAC,CAAC;QAC7G,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG;YAClB,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG;YACnB,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,CAAC,EAAE;YACR,cAAc,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;KACF,CAAC,CAAC;IACH,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAC9B,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/esm/create.d.ts
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import type { PiralPlugin } from 'piral-core';
|
|
2
|
+
import { InfernoConverterOptions } from './converter';
|
|
2
3
|
import type { PiletInfernoApi } from './types';
|
|
3
4
|
/**
|
|
4
5
|
* Available configuration options for the Inferno plugin.
|
|
5
6
|
*/
|
|
6
|
-
export interface InfernoConfig {
|
|
7
|
-
/**
|
|
8
|
-
* Defines the name of the root element.
|
|
9
|
-
* @default slot
|
|
10
|
-
*/
|
|
11
|
-
rootName?: string;
|
|
7
|
+
export interface InfernoConfig extends InfernoConverterOptions {
|
|
12
8
|
}
|
|
13
9
|
/**
|
|
14
10
|
* Creates Pilet API extensions for integrating Inferno.
|
package/esm/create.js
CHANGED
|
@@ -1,25 +1,19 @@
|
|
|
1
1
|
import { createConverter } from './converter';
|
|
2
|
-
import { createExtension } from './extension';
|
|
3
2
|
/**
|
|
4
3
|
* Creates Pilet API extensions for integrating Inferno.
|
|
5
4
|
*/
|
|
6
|
-
export function createInfernoApi(config) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var convert = createConverter();
|
|
11
|
-
context.converters.inferno = function (_a) {
|
|
12
|
-
var root = _a.root;
|
|
13
|
-
return convert(root);
|
|
14
|
-
};
|
|
5
|
+
export function createInfernoApi(config = {}) {
|
|
6
|
+
return (context) => {
|
|
7
|
+
const convert = createConverter(config);
|
|
8
|
+
context.converters.inferno = ({ root }) => convert(root);
|
|
15
9
|
return {
|
|
16
|
-
fromInferno
|
|
10
|
+
fromInferno(root) {
|
|
17
11
|
return {
|
|
18
12
|
type: 'inferno',
|
|
19
|
-
root
|
|
13
|
+
root,
|
|
20
14
|
};
|
|
21
15
|
},
|
|
22
|
-
InfernoExtension:
|
|
16
|
+
InfernoExtension: convert.Extension,
|
|
23
17
|
};
|
|
24
18
|
};
|
|
25
19
|
}
|
package/esm/create.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAA2B,MAAM,aAAa,CAAC;AAQvE;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAwB,EAAE;IACzD,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEzD,OAAO;YACL,WAAW,CAAC,IAAI;gBACd,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,IAAI;iBACL,CAAC;YACJ,CAAC;YACD,gBAAgB,EAAE,OAAO,CAAC,SAAS;SACpC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
package/esm/extension.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { ExtensionSlotProps } from 'piral-core';
|
|
1
|
+
import type { ExtensionSlotProps } from 'piral-core';
|
|
2
2
|
import { Component } from 'inferno';
|
|
3
|
-
export declare function createExtension(rootName
|
|
3
|
+
export declare function createExtension(rootName: string): Component<ExtensionSlotProps>;
|
package/esm/extension.js
CHANGED
|
@@ -1,34 +1,54 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { compare } from 'piral-core';
|
|
1
|
+
import { __setFunctionName } from "tslib";
|
|
3
2
|
import { Component } from 'inferno';
|
|
4
3
|
import { createElement } from 'inferno-create-element';
|
|
5
4
|
import { anyPropType } from './mount';
|
|
5
|
+
function compareObjects(a, b) {
|
|
6
|
+
for (const i in a) {
|
|
7
|
+
if (!(i in b)) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
for (const i in b) {
|
|
12
|
+
if (!compare(a[i], b[i])) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
function compare(a, b) {
|
|
19
|
+
if (a !== b) {
|
|
20
|
+
const ta = typeof a;
|
|
21
|
+
const tb = typeof b;
|
|
22
|
+
if (ta === tb && ta === 'object' && a && b) {
|
|
23
|
+
return compareObjects(a, b);
|
|
24
|
+
}
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
6
29
|
export function createExtension(rootName) {
|
|
7
30
|
var _a;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
13
|
-
_this.onRefChange = function (element) {
|
|
31
|
+
const InfernoExtension = (_a = class extends Component {
|
|
32
|
+
constructor() {
|
|
33
|
+
super(...arguments);
|
|
34
|
+
this.onRefChange = (element) => {
|
|
14
35
|
if (element) {
|
|
15
|
-
|
|
36
|
+
const { piral } = this.context;
|
|
16
37
|
element.innerHTML = '';
|
|
17
|
-
piral.renderHtmlExtension(element,
|
|
38
|
+
piral.renderHtmlExtension(element, this.props);
|
|
18
39
|
}
|
|
19
40
|
};
|
|
20
|
-
return _this;
|
|
21
41
|
}
|
|
22
|
-
|
|
42
|
+
shouldComponentUpdate(nextProps) {
|
|
23
43
|
return !compare(this.props, nextProps);
|
|
24
|
-
}
|
|
25
|
-
|
|
44
|
+
}
|
|
45
|
+
render() {
|
|
26
46
|
return createElement(rootName, {
|
|
27
47
|
ref: this.onRefChange,
|
|
28
48
|
});
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
__setFunctionName(_a, "InfernoExtension"),
|
|
32
52
|
_a.contextTypes = {
|
|
33
53
|
piral: anyPropType,
|
|
34
54
|
},
|
package/esm/extension.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,SAAS,cAAc,CAAC,CAAM,EAAE,CAAM;IACpC,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE;QACjB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;YACb,OAAO,KAAK,CAAC;SACd;KACF;IAED,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE;QACjB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,OAAO,KAAK,CAAC;SACd;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,OAAO,CAAI,CAAI,EAAE,CAAI;IAC5B,IAAI,CAAC,KAAK,CAAC,EAAE;QACX,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC;QACpB,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC;QAEpB,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE;YAC1C,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7B;QAED,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB;;IAC9C,MAAM,gBAAgB,SAAQ,KAAM,SAAQ,SAA6B;YAA3C;;gBAKpB,gBAAW,GAAG,CAAC,OAAoB,EAAE,EAAE;oBAC7C,IAAI,OAAO,EAAE;wBACX,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;wBAC/B,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC;wBACvB,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;qBAChD;gBACH,CAAC,CAAC;YAWJ,CAAC;YATC,qBAAqB,CAAC,SAA6B;gBACjD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACzC,CAAC;YAED,MAAM;gBACJ,OAAO,aAAa,CAAC,QAAQ,EAAE;oBAC7B,GAAG,EAAE,IAAI,CAAC,WAAW;iBACtB,CAAC,CAAC;YACL,CAAC;SACF;;QArBQ,eAAY,GAAG;YACpB,KAAK,EAAE,WAAW;SAClB;WAmBH,CAAC;IAEF,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
|
package/esm/mount.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ComponentType } from 'inferno';
|
|
2
|
-
import { BaseComponentProps } from 'piral-core';
|
|
2
|
+
import type { BaseComponentProps } from 'piral-core';
|
|
3
3
|
export declare const anyPropType: () => any;
|
|
4
4
|
export declare function mountInferno<T extends BaseComponentProps>(el: HTMLElement, root: ComponentType<T>, props: T, ctx?: any): void;
|
|
5
5
|
export declare function unmountInferno(el: HTMLElement): void;
|
package/esm/mount.js
CHANGED
|
@@ -1,28 +1,21 @@
|
|
|
1
|
-
import { __assign, __extends, __spreadArrays } from "tslib";
|
|
2
1
|
import { render, Component } from 'inferno';
|
|
3
2
|
import { createElement } from 'inferno-create-element';
|
|
4
3
|
// tslint:disable-next-line:no-null-keyword
|
|
5
|
-
export
|
|
6
|
-
export function mountInferno(el, root, props, ctx) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
__spreadArrays(['piral'], Object.keys(ctx)).forEach(function (key) {
|
|
4
|
+
export const anyPropType = () => null;
|
|
5
|
+
export function mountInferno(el, root, props, ctx = {}) {
|
|
6
|
+
const contextTypes = {};
|
|
7
|
+
['piral', ...Object.keys(ctx)].forEach((key) => {
|
|
10
8
|
contextTypes[key] = anyPropType;
|
|
11
9
|
});
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
10
|
+
class Provider extends Component {
|
|
11
|
+
getChildContext() {
|
|
12
|
+
return Object.assign({ piral: props.piral }, ctx);
|
|
16
13
|
}
|
|
17
|
-
|
|
18
|
-
return __assign({ piral: props.piral }, ctx);
|
|
19
|
-
};
|
|
20
|
-
Provider.prototype.render = function () {
|
|
14
|
+
render() {
|
|
21
15
|
return this.props.children;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}(Component));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
Provider.childContextTypes = contextTypes;
|
|
26
19
|
render(createElement(Provider, {}, createElement(root, props)), el);
|
|
27
20
|
}
|
|
28
21
|
export function unmountInferno(el) {
|
package/esm/mount.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiB,SAAS,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD,2CAA2C;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;AAEtC,MAAM,UAAU,YAAY,CAC1B,EAAe,EACf,IAAsB,EACtB,KAAQ,EACR,MAAW,EAAE;IAEb,MAAM,YAAY,GAAG,EAAE,CAAC;IAExB,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7C,YAAY,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,MAAM,QAAS,SAAQ,SAAS;QAG9B,eAAe;YACb,uBACE,KAAK,EAAE,KAAK,CAAC,KAAK,IACf,GAAG,EACN;QACJ,CAAC;QAED,MAAM;YACJ,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC7B,CAAC;;IAXM,0BAAiB,GAAG,YAAY,CAAC;IAc1C,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,aAAa,CAAC,IAAW,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAe;IAC5C,2CAA2C;IAC3C,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACnB,CAAC"}
|
package/esm/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ForeignComponent, ExtensionSlotProps } from 'piral-core';
|
|
2
|
-
import { Component, ComponentType } from 'inferno';
|
|
1
|
+
import type { ForeignComponent, ExtensionSlotProps } from 'piral-core';
|
|
2
|
+
import type { Component, ComponentType } from 'inferno';
|
|
3
3
|
declare module 'piral-core/lib/types/custom' {
|
|
4
4
|
interface PiletCustomApi extends PiletInfernoApi {
|
|
5
5
|
}
|
package/lib/converter.d.ts
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
-
import { ForeignComponent, BaseComponentProps } from 'piral-core';
|
|
2
|
-
import { ComponentType } from 'inferno';
|
|
3
|
-
export
|
|
1
|
+
import type { ForeignComponent, BaseComponentProps } from 'piral-core';
|
|
2
|
+
import type { ComponentType } from 'inferno';
|
|
3
|
+
export interface InfernoConverterOptions {
|
|
4
|
+
/**
|
|
5
|
+
* Defines the name of the root element.
|
|
6
|
+
* @default piral-slot
|
|
7
|
+
*/
|
|
8
|
+
rootName?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function createConverter(config?: InfernoConverterOptions): {
|
|
11
|
+
<TProps extends BaseComponentProps>(root: ComponentType<TProps>): ForeignComponent<TProps>;
|
|
12
|
+
Extension: import("inferno").Component<import("piral-core").ExtensionSlotProps, {}>;
|
|
13
|
+
};
|
package/lib/converter.js
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createConverter = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
4
|
+
const mount_1 = require("./mount");
|
|
5
|
+
const extension_1 = require("./extension");
|
|
6
|
+
function createConverter(config = {}) {
|
|
7
|
+
const { rootName = 'piral-slot' } = config;
|
|
8
|
+
const Extension = (0, extension_1.createExtension)(rootName);
|
|
9
|
+
const convert = (root) => ({
|
|
10
|
+
mount(el, props, ctx) {
|
|
11
|
+
(0, mount_1.mountInferno)(el, root, props, ctx);
|
|
12
|
+
},
|
|
13
|
+
update(el, props, ctx) {
|
|
14
|
+
(0, mount_1.mountInferno)(el, root, props, ctx);
|
|
15
|
+
},
|
|
16
|
+
unmount(el) {
|
|
17
|
+
(0, mount_1.unmountInferno)(el);
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
convert.Extension = Extension;
|
|
19
21
|
return convert;
|
|
20
22
|
}
|
|
21
23
|
exports.createConverter = createConverter;
|
package/lib/converter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":";;;AAEA,mCAAuD;AACvD,2CAA8C;AAU9C,SAAgB,eAAe,CAAC,SAAkC,EAAE;IAClE,MAAM,EAAE,QAAQ,GAAG,YAAY,EAAE,GAAG,MAAM,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAA,2BAAe,EAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,CAAoC,IAA2B,EAA4B,EAAE,CAAC,CAAC;QAC7G,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG;YAClB,IAAA,oBAAY,EAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG;YACnB,IAAA,oBAAY,EAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,CAAC,EAAE;YACR,IAAA,sBAAc,EAAC,EAAE,CAAC,CAAC;QACrB,CAAC;KACF,CAAC,CAAC;IACH,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAC9B,OAAO,OAAO,CAAC;AACjB,CAAC;AAhBD,0CAgBC"}
|
package/lib/create.d.ts
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import type { PiralPlugin } from 'piral-core';
|
|
2
|
+
import { InfernoConverterOptions } from './converter';
|
|
2
3
|
import type { PiletInfernoApi } from './types';
|
|
3
4
|
/**
|
|
4
5
|
* Available configuration options for the Inferno plugin.
|
|
5
6
|
*/
|
|
6
|
-
export interface InfernoConfig {
|
|
7
|
-
/**
|
|
8
|
-
* Defines the name of the root element.
|
|
9
|
-
* @default slot
|
|
10
|
-
*/
|
|
11
|
-
rootName?: string;
|
|
7
|
+
export interface InfernoConfig extends InfernoConverterOptions {
|
|
12
8
|
}
|
|
13
9
|
/**
|
|
14
10
|
* Creates Pilet API extensions for integrating Inferno.
|
package/lib/create.js
CHANGED
|
@@ -1,28 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createInfernoApi = void 0;
|
|
4
|
-
|
|
5
|
-
var extension_1 = require("./extension");
|
|
4
|
+
const converter_1 = require("./converter");
|
|
6
5
|
/**
|
|
7
6
|
* Creates Pilet API extensions for integrating Inferno.
|
|
8
7
|
*/
|
|
9
|
-
function createInfernoApi(config) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var convert = converter_1.createConverter();
|
|
14
|
-
context.converters.inferno = function (_a) {
|
|
15
|
-
var root = _a.root;
|
|
16
|
-
return convert(root);
|
|
17
|
-
};
|
|
8
|
+
function createInfernoApi(config = {}) {
|
|
9
|
+
return (context) => {
|
|
10
|
+
const convert = (0, converter_1.createConverter)(config);
|
|
11
|
+
context.converters.inferno = ({ root }) => convert(root);
|
|
18
12
|
return {
|
|
19
|
-
fromInferno
|
|
13
|
+
fromInferno(root) {
|
|
20
14
|
return {
|
|
21
15
|
type: 'inferno',
|
|
22
|
-
root
|
|
16
|
+
root,
|
|
23
17
|
};
|
|
24
18
|
},
|
|
25
|
-
InfernoExtension:
|
|
19
|
+
InfernoExtension: convert.Extension,
|
|
26
20
|
};
|
|
27
21
|
};
|
|
28
22
|
}
|
package/lib/create.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":";;;AACA,2CAAuE;AAQvE;;GAEG;AACH,SAAgB,gBAAgB,CAAC,SAAwB,EAAE;IACzD,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,OAAO,GAAG,IAAA,2BAAe,EAAC,MAAM,CAAC,CAAC;QACxC,OAAO,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEzD,OAAO;YACL,WAAW,CAAC,IAAI;gBACd,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,IAAI;iBACL,CAAC;YACJ,CAAC;YACD,gBAAgB,EAAE,OAAO,CAAC,SAAS;SACpC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAfD,4CAeC"}
|
package/lib/extension.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { ExtensionSlotProps } from 'piral-core';
|
|
1
|
+
import type { ExtensionSlotProps } from 'piral-core';
|
|
2
2
|
import { Component } from 'inferno';
|
|
3
|
-
export declare function createExtension(rootName
|
|
3
|
+
export declare function createExtension(rootName: string): Component<ExtensionSlotProps>;
|
package/lib/extension.js
CHANGED
|
@@ -1,37 +1,57 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createExtension = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const inferno_1 = require("inferno");
|
|
6
|
+
const inferno_create_element_1 = require("inferno-create-element");
|
|
7
|
+
const mount_1 = require("./mount");
|
|
8
|
+
function compareObjects(a, b) {
|
|
9
|
+
for (const i in a) {
|
|
10
|
+
if (!(i in b)) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
for (const i in b) {
|
|
15
|
+
if (!compare(a[i], b[i])) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
function compare(a, b) {
|
|
22
|
+
if (a !== b) {
|
|
23
|
+
const ta = typeof a;
|
|
24
|
+
const tb = typeof b;
|
|
25
|
+
if (ta === tb && ta === 'object' && a && b) {
|
|
26
|
+
return compareObjects(a, b);
|
|
27
|
+
}
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
9
32
|
function createExtension(rootName) {
|
|
10
33
|
var _a;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
16
|
-
_this.onRefChange = function (element) {
|
|
34
|
+
const InfernoExtension = (_a = class extends inferno_1.Component {
|
|
35
|
+
constructor() {
|
|
36
|
+
super(...arguments);
|
|
37
|
+
this.onRefChange = (element) => {
|
|
17
38
|
if (element) {
|
|
18
|
-
|
|
39
|
+
const { piral } = this.context;
|
|
19
40
|
element.innerHTML = '';
|
|
20
|
-
piral.renderHtmlExtension(element,
|
|
41
|
+
piral.renderHtmlExtension(element, this.props);
|
|
21
42
|
}
|
|
22
43
|
};
|
|
23
|
-
return _this;
|
|
24
44
|
}
|
|
25
|
-
|
|
26
|
-
return !
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
return inferno_create_element_1.createElement(rootName, {
|
|
45
|
+
shouldComponentUpdate(nextProps) {
|
|
46
|
+
return !compare(this.props, nextProps);
|
|
47
|
+
}
|
|
48
|
+
render() {
|
|
49
|
+
return (0, inferno_create_element_1.createElement)(rootName, {
|
|
30
50
|
ref: this.onRefChange,
|
|
31
51
|
});
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
tslib_1.__setFunctionName(_a, "InfernoExtension"),
|
|
35
55
|
_a.contextTypes = {
|
|
36
56
|
piral: mount_1.anyPropType,
|
|
37
57
|
},
|
package/lib/extension.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":";;;;AACA,qCAAoC;AACpC,mEAAuD;AACvD,mCAAsC;AAEtC,SAAS,cAAc,CAAC,CAAM,EAAE,CAAM;IACpC,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE;QACjB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;YACb,OAAO,KAAK,CAAC;SACd;KACF;IAED,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE;QACjB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,OAAO,KAAK,CAAC;SACd;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,OAAO,CAAI,CAAI,EAAE,CAAI;IAC5B,IAAI,CAAC,KAAK,CAAC,EAAE;QACX,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC;QACpB,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC;QAEpB,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE;YAC1C,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7B;QAED,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,eAAe,CAAC,QAAgB;;IAC9C,MAAM,gBAAgB,SAAQ,KAAM,SAAQ,mBAA6B;YAA3C;;gBAKpB,gBAAW,GAAG,CAAC,OAAoB,EAAE,EAAE;oBAC7C,IAAI,OAAO,EAAE;wBACX,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;wBAC/B,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC;wBACvB,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;qBAChD;gBACH,CAAC,CAAC;YAWJ,CAAC;YATC,qBAAqB,CAAC,SAA6B;gBACjD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACzC,CAAC;YAED,MAAM;gBACJ,OAAO,IAAA,sCAAa,EAAC,QAAQ,EAAE;oBAC7B,GAAG,EAAE,IAAI,CAAC,WAAW;iBACtB,CAAC,CAAC;YACL,CAAC;SACF;;QArBQ,eAAY,GAAG;YACpB,KAAK,EAAE,mBAAW;SAClB;WAmBH,CAAC;IAEF,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AA1BD,0CA0BC"}
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
4
|
tslib_1.__exportStar(require("./create"), exports);
|
|
5
5
|
tslib_1.__exportStar(require("./types"), exports);
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
package/lib/mount.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ComponentType } from 'inferno';
|
|
2
|
-
import { BaseComponentProps } from 'piral-core';
|
|
2
|
+
import type { BaseComponentProps } from 'piral-core';
|
|
3
3
|
export declare const anyPropType: () => any;
|
|
4
4
|
export declare function mountInferno<T extends BaseComponentProps>(el: HTMLElement, root: ComponentType<T>, props: T, ctx?: any): void;
|
|
5
5
|
export declare function unmountInferno(el: HTMLElement): void;
|
package/lib/mount.js
CHANGED
|
@@ -1,37 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.unmountInferno = exports.mountInferno = exports.anyPropType = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var inferno_create_element_1 = require("inferno-create-element");
|
|
4
|
+
const inferno_1 = require("inferno");
|
|
5
|
+
const inferno_create_element_1 = require("inferno-create-element");
|
|
7
6
|
// tslint:disable-next-line:no-null-keyword
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
const anyPropType = () => null;
|
|
8
|
+
exports.anyPropType = anyPropType;
|
|
9
|
+
function mountInferno(el, root, props, ctx = {}) {
|
|
10
|
+
const contextTypes = {};
|
|
11
|
+
['piral', ...Object.keys(ctx)].forEach((key) => {
|
|
13
12
|
contextTypes[key] = exports.anyPropType;
|
|
14
13
|
});
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
14
|
+
class Provider extends inferno_1.Component {
|
|
15
|
+
getChildContext() {
|
|
16
|
+
return Object.assign({ piral: props.piral }, ctx);
|
|
19
17
|
}
|
|
20
|
-
|
|
21
|
-
return tslib_1.__assign({ piral: props.piral }, ctx);
|
|
22
|
-
};
|
|
23
|
-
Provider.prototype.render = function () {
|
|
18
|
+
render() {
|
|
24
19
|
return this.props.children;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
inferno_1.render(inferno_create_element_1.createElement(Provider, {}, inferno_create_element_1.createElement(root, props)), el);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
Provider.childContextTypes = contextTypes;
|
|
23
|
+
(0, inferno_1.render)((0, inferno_create_element_1.createElement)(Provider, {}, (0, inferno_create_element_1.createElement)(root, props)), el);
|
|
30
24
|
}
|
|
31
25
|
exports.mountInferno = mountInferno;
|
|
32
26
|
function unmountInferno(el) {
|
|
33
27
|
// tslint:disable-next-line:no-null-keyword
|
|
34
|
-
inferno_1.render(null, el);
|
|
28
|
+
(0, inferno_1.render)(null, el);
|
|
35
29
|
}
|
|
36
30
|
exports.unmountInferno = unmountInferno;
|
|
37
31
|
//# sourceMappingURL=mount.js.map
|
package/lib/mount.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":";;;AAAA,qCAA2D;AAC3D,mEAAuD;AAGvD,2CAA2C;AACpC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;AAAzB,QAAA,WAAW,eAAc;AAEtC,SAAgB,YAAY,CAC1B,EAAe,EACf,IAAsB,EACtB,KAAQ,EACR,MAAW,EAAE;IAEb,MAAM,YAAY,GAAG,EAAE,CAAC;IAExB,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7C,YAAY,CAAC,GAAG,CAAC,GAAG,mBAAW,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,MAAM,QAAS,SAAQ,mBAAS;QAG9B,eAAe;YACb,uBACE,KAAK,EAAE,KAAK,CAAC,KAAK,IACf,GAAG,EACN;QACJ,CAAC;QAED,MAAM;YACJ,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC7B,CAAC;;IAXM,0BAAiB,GAAG,YAAY,CAAC;IAc1C,IAAA,gBAAM,EAAC,IAAA,sCAAa,EAAC,QAAQ,EAAE,EAAE,EAAE,IAAA,sCAAa,EAAC,IAAW,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC;AA5BD,oCA4BC;AAED,SAAgB,cAAc,CAAC,EAAe;IAC5C,2CAA2C;IAC3C,IAAA,gBAAM,EAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACnB,CAAC;AAHD,wCAGC"}
|
package/lib/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ForeignComponent, ExtensionSlotProps } from 'piral-core';
|
|
2
|
-
import { Component, ComponentType } from 'inferno';
|
|
1
|
+
import type { ForeignComponent, ExtensionSlotProps } from 'piral-core';
|
|
2
|
+
import type { Component, ComponentType } from 'inferno';
|
|
3
3
|
declare module 'piral-core/lib/types/custom' {
|
|
4
4
|
interface PiletCustomApi extends PiletInfernoApi {
|
|
5
5
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "piral-inferno",
|
|
3
|
-
"version": "1.0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Plugin for integrating Inferno components in Piral.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"piral",
|
|
@@ -19,13 +19,32 @@
|
|
|
19
19
|
"module": "esm/index.js",
|
|
20
20
|
"main": "lib/index.js",
|
|
21
21
|
"typings": "lib/index.d.ts",
|
|
22
|
+
"exports": {
|
|
23
|
+
".": {
|
|
24
|
+
"import": "./esm/index.js",
|
|
25
|
+
"require": "./lib/index.js"
|
|
26
|
+
},
|
|
27
|
+
"./convert": {
|
|
28
|
+
"import": "./convert.js"
|
|
29
|
+
},
|
|
30
|
+
"./esm/*": {
|
|
31
|
+
"import": "./esm/*"
|
|
32
|
+
},
|
|
33
|
+
"./lib/*": {
|
|
34
|
+
"require": "./lib/*"
|
|
35
|
+
},
|
|
36
|
+
"./_/*": {
|
|
37
|
+
"import": "./esm/*.js",
|
|
38
|
+
"require": "./lib/*.js"
|
|
39
|
+
},
|
|
40
|
+
"./package.json": "./package.json"
|
|
41
|
+
},
|
|
22
42
|
"sideEffects": false,
|
|
23
43
|
"files": [
|
|
24
44
|
"esm",
|
|
25
45
|
"lib",
|
|
26
46
|
"src",
|
|
27
47
|
"convert.d.ts",
|
|
28
|
-
"convert.ts",
|
|
29
48
|
"convert.js"
|
|
30
49
|
],
|
|
31
50
|
"repository": {
|
|
@@ -36,8 +55,9 @@
|
|
|
36
55
|
"url": "https://github.com/smapiot/piral/issues"
|
|
37
56
|
},
|
|
38
57
|
"scripts": {
|
|
58
|
+
"cleanup": "rimraf esm lib convert.d.ts convert.js",
|
|
39
59
|
"build": "yarn build:commonjs && yarn build:esnext && yarn build:convert",
|
|
40
|
-
"build:convert": "tsc convert.ts --skipLibCheck --declaration",
|
|
60
|
+
"build:convert": "tsc convert.ts --skipLibCheck --declaration --module esnext",
|
|
41
61
|
"build:commonjs": "tsc --project tsconfig.json --outDir lib --module commonjs",
|
|
42
62
|
"build:esnext": "tsc --project tsconfig.json --outDir esm --module esnext",
|
|
43
63
|
"typedoc": "typedoc --json ../../../docs/types/piral-inferno.json src --exclude \"src/**/*.test.*\"",
|
|
@@ -46,12 +66,11 @@
|
|
|
46
66
|
"devDependencies": {
|
|
47
67
|
"inferno": "^7.3.2",
|
|
48
68
|
"inferno-create-element": "^7.3.2",
|
|
49
|
-
"piral-core": "^1.0.0
|
|
69
|
+
"piral-core": "^1.0.0"
|
|
50
70
|
},
|
|
51
71
|
"peerDependencies": {
|
|
52
72
|
"inferno": "^7.0.0",
|
|
53
|
-
"inferno-create-element": "^7.0.0"
|
|
54
|
-
"piral-core": "1.x"
|
|
73
|
+
"inferno-create-element": "^7.0.0"
|
|
55
74
|
},
|
|
56
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "67d9a2920bd5231baf10bc87ae8985666b18fa3a"
|
|
57
76
|
}
|
package/src/converter.ts
CHANGED
|
@@ -1,20 +1,30 @@
|
|
|
1
|
-
import { ForeignComponent, BaseComponentProps } from 'piral-core';
|
|
2
|
-
import { ComponentType } from 'inferno';
|
|
1
|
+
import type { ForeignComponent, BaseComponentProps } from 'piral-core';
|
|
2
|
+
import type { ComponentType } from 'inferno';
|
|
3
3
|
import { mountInferno, unmountInferno } from './mount';
|
|
4
|
+
import { createExtension } from './extension';
|
|
4
5
|
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
6
|
+
export interface InfernoConverterOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Defines the name of the root element.
|
|
9
|
+
* @default piral-slot
|
|
10
|
+
*/
|
|
11
|
+
rootName?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function createConverter(config: InfernoConverterOptions = {}) {
|
|
15
|
+
const { rootName = 'piral-slot' } = config;
|
|
16
|
+
const Extension = createExtension(rootName);
|
|
17
|
+
const convert = <TProps extends BaseComponentProps>(root: ComponentType<TProps>): ForeignComponent<TProps> => ({
|
|
18
|
+
mount(el, props, ctx) {
|
|
19
|
+
mountInferno(el, root, props, ctx);
|
|
20
|
+
},
|
|
21
|
+
update(el, props, ctx) {
|
|
22
|
+
mountInferno(el, root, props, ctx);
|
|
23
|
+
},
|
|
24
|
+
unmount(el) {
|
|
25
|
+
unmountInferno(el);
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
convert.Extension = Extension;
|
|
19
29
|
return convert;
|
|
20
30
|
}
|
package/src/create.ts
CHANGED
|
@@ -1,27 +1,18 @@
|
|
|
1
1
|
import type { PiralPlugin } from 'piral-core';
|
|
2
|
-
import { createConverter } from './converter';
|
|
3
|
-
import { createExtension } from './extension';
|
|
2
|
+
import { createConverter, InfernoConverterOptions } from './converter';
|
|
4
3
|
import type { PiletInfernoApi } from './types';
|
|
5
4
|
|
|
6
5
|
/**
|
|
7
6
|
* Available configuration options for the Inferno plugin.
|
|
8
7
|
*/
|
|
9
|
-
export interface InfernoConfig {
|
|
10
|
-
/**
|
|
11
|
-
* Defines the name of the root element.
|
|
12
|
-
* @default slot
|
|
13
|
-
*/
|
|
14
|
-
rootName?: string;
|
|
15
|
-
}
|
|
8
|
+
export interface InfernoConfig extends InfernoConverterOptions {}
|
|
16
9
|
|
|
17
10
|
/**
|
|
18
11
|
* Creates Pilet API extensions for integrating Inferno.
|
|
19
12
|
*/
|
|
20
13
|
export function createInfernoApi(config: InfernoConfig = {}): PiralPlugin<PiletInfernoApi> {
|
|
21
|
-
const { rootName } = config;
|
|
22
|
-
|
|
23
14
|
return (context) => {
|
|
24
|
-
const convert = createConverter();
|
|
15
|
+
const convert = createConverter(config);
|
|
25
16
|
context.converters.inferno = ({ root }) => convert(root);
|
|
26
17
|
|
|
27
18
|
return {
|
|
@@ -31,7 +22,7 @@ export function createInfernoApi(config: InfernoConfig = {}): PiralPlugin<PiletI
|
|
|
31
22
|
root,
|
|
32
23
|
};
|
|
33
24
|
},
|
|
34
|
-
InfernoExtension:
|
|
25
|
+
InfernoExtension: convert.Extension,
|
|
35
26
|
};
|
|
36
27
|
};
|
|
37
28
|
}
|
package/src/extension.ts
CHANGED
|
@@ -1,9 +1,40 @@
|
|
|
1
|
-
import { ExtensionSlotProps
|
|
1
|
+
import type { ExtensionSlotProps } from 'piral-core';
|
|
2
2
|
import { Component } from 'inferno';
|
|
3
3
|
import { createElement } from 'inferno-create-element';
|
|
4
4
|
import { anyPropType } from './mount';
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
function compareObjects(a: any, b: any) {
|
|
7
|
+
for (const i in a) {
|
|
8
|
+
if (!(i in b)) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
for (const i in b) {
|
|
14
|
+
if (!compare(a[i], b[i])) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function compare<T>(a: T, b: T) {
|
|
23
|
+
if (a !== b) {
|
|
24
|
+
const ta = typeof a;
|
|
25
|
+
const tb = typeof b;
|
|
26
|
+
|
|
27
|
+
if (ta === tb && ta === 'object' && a && b) {
|
|
28
|
+
return compareObjects(a, b);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function createExtension(rootName: string): Component<ExtensionSlotProps> {
|
|
7
38
|
const InfernoExtension: any = class extends Component<ExtensionSlotProps> {
|
|
8
39
|
static contextTypes = {
|
|
9
40
|
piral: anyPropType,
|
package/src/mount.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { render, ComponentType, Component } from 'inferno';
|
|
2
2
|
import { createElement } from 'inferno-create-element';
|
|
3
|
-
import { BaseComponentProps } from 'piral-core';
|
|
3
|
+
import type { BaseComponentProps } from 'piral-core';
|
|
4
4
|
|
|
5
5
|
// tslint:disable-next-line:no-null-keyword
|
|
6
6
|
export const anyPropType = () => null;
|
package/src/types.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ForeignComponent, ExtensionSlotProps } from 'piral-core';
|
|
2
|
-
import { Component, ComponentType } from 'inferno';
|
|
1
|
+
import type { ForeignComponent, ExtensionSlotProps } from 'piral-core';
|
|
2
|
+
import type { Component, ComponentType } from 'inferno';
|
|
3
3
|
|
|
4
4
|
declare module 'piral-core/lib/types/custom' {
|
|
5
5
|
interface PiletCustomApi extends PiletInfernoApi {}
|
package/convert.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { HtmlComponent } from 'piral-core';
|
|
2
|
-
import { createConverter } from './lib/converter';
|
|
3
|
-
import { createExtension } from './lib/extension';
|
|
4
|
-
|
|
5
|
-
const convert = createConverter();
|
|
6
|
-
|
|
7
|
-
export interface InfernoConverter {
|
|
8
|
-
(...params: Parameters<typeof convert>): HtmlComponent<any>;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export const fromInferno: InfernoConverter = (root) => ({
|
|
12
|
-
type: 'html',
|
|
13
|
-
component: convert(root),
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
export const createInfernoExtension = createExtension;
|