piral-core 0.15.0-alpha.3555 → 0.15.0-alpha.3640
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/debug.codegen +24 -0
- package/debug.codegen.d.ts +11 -0
- package/dependencies.codegen +6 -4
- package/dependencies.codegen.d.ts +1 -0
- package/dependencies.codegen.native.js +1 -1
- package/esm/RootListener.js +1 -1
- package/esm/RootListener.js.map +1 -1
- package/esm/components/ErrorBoundary.d.ts +12 -33
- package/esm/components/ErrorBoundary.js +12 -14
- package/esm/components/ErrorBoundary.js.map +1 -1
- package/esm/components/ExtensionSlot.js +20 -2
- package/esm/components/ExtensionSlot.js.map +1 -1
- package/esm/components/ForeignComponentContainer.d.ts +19 -0
- package/esm/components/ForeignComponentContainer.js +52 -0
- package/esm/components/ForeignComponentContainer.js.map +1 -0
- package/esm/components/index.d.ts +1 -0
- package/esm/components/index.js +1 -0
- package/esm/components/index.js.map +1 -1
- package/esm/components/wrapComponent.d.ts +7 -0
- package/esm/components/wrapComponent.js +42 -0
- package/esm/components/wrapComponent.js.map +1 -0
- package/esm/createInstance.js +1 -1
- package/esm/createInstance.js.map +1 -1
- package/esm/debugger.d.ts +4 -0
- package/esm/debugger.js +52 -0
- package/esm/debugger.js.map +1 -0
- package/esm/emulator.d.ts +3 -0
- package/esm/emulator.js +8 -0
- package/esm/emulator.js.map +1 -0
- package/esm/helpers.d.ts +1 -1
- package/esm/helpers.js +3 -10
- package/esm/helpers.js.map +1 -1
- package/esm/modules/core.js +8 -6
- package/esm/modules/core.js.map +1 -1
- package/esm/modules/dependencies.js +3 -23
- package/esm/modules/dependencies.js.map +1 -1
- package/esm/state/withApi.d.ts +1 -1
- package/esm/state/withApi.js +17 -103
- package/esm/state/withApi.js.map +1 -1
- package/esm/types/api.d.ts +14 -10
- package/esm/types/extension.d.ts +5 -1
- package/esm/utils/index.d.ts +1 -0
- package/esm/utils/index.js +1 -0
- package/esm/utils/index.js.map +1 -1
- package/lib/RootListener.js +2 -2
- package/lib/RootListener.js.map +1 -1
- package/lib/components/ErrorBoundary.d.ts +12 -33
- package/lib/components/ErrorBoundary.js +12 -14
- package/lib/components/ErrorBoundary.js.map +1 -1
- package/lib/components/ExtensionSlot.js +19 -1
- package/lib/components/ExtensionSlot.js.map +1 -1
- package/lib/components/ForeignComponentContainer.d.ts +19 -0
- package/lib/components/ForeignComponentContainer.js +56 -0
- package/lib/components/ForeignComponentContainer.js.map +1 -0
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.js +1 -0
- package/lib/components/index.js.map +1 -1
- package/lib/components/wrapComponent.d.ts +7 -0
- package/lib/components/wrapComponent.js +46 -0
- package/lib/components/wrapComponent.js.map +1 -0
- package/lib/createInstance.js +1 -1
- package/lib/createInstance.js.map +1 -1
- package/lib/debugger.d.ts +4 -0
- package/lib/debugger.js +56 -0
- package/lib/debugger.js.map +1 -0
- package/lib/emulator.d.ts +3 -0
- package/lib/emulator.js +12 -0
- package/lib/emulator.js.map +1 -0
- package/lib/helpers.d.ts +1 -1
- package/lib/helpers.js +3 -10
- package/lib/helpers.js.map +1 -1
- package/lib/modules/core.js +8 -6
- package/lib/modules/core.js.map +1 -1
- package/lib/modules/dependencies.js +3 -23
- package/lib/modules/dependencies.js.map +1 -1
- package/lib/state/withApi.d.ts +1 -1
- package/lib/state/withApi.js +15 -101
- package/lib/state/withApi.js.map +1 -1
- package/lib/types/api.d.ts +14 -10
- package/lib/types/extension.d.ts +5 -1
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.js +4 -0
- package/lib/utils/index.js.map +1 -1
- package/package.json +12 -12
- package/src/RootListener.tsx +1 -1
- package/src/components/ErrorBoundary.tsx +19 -51
- package/src/components/ExtensionSlot.tsx +25 -3
- package/src/components/ForeignComponentContainer.tsx +69 -0
- package/src/components/index.ts +1 -0
- package/src/components/wrapComponent.tsx +74 -0
- package/src/createInstance.tsx +1 -1
- package/src/debugger.ts +82 -0
- package/src/emulator.ts +10 -0
- package/src/helpers.tsx +4 -12
- package/src/modules/core.ts +10 -8
- package/src/modules/dependencies.ts +3 -22
- package/src/state/withApi.test.tsx +20 -4
- package/src/state/withApi.tsx +31 -157
- package/src/types/api.ts +25 -11
- package/src/types/extension.ts +12 -3
- package/src/utils/index.ts +2 -0
- package/debug-pilet.d.ts +0 -3
- package/debug-pilet.js +0 -11
- package/debug-piral.d.ts +0 -4
- package/debug-piral.js +0 -72
package/debug.codegen
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module.exports = function () {
|
|
2
|
+
const imports = [];
|
|
3
|
+
const exports = [];
|
|
4
|
+
|
|
5
|
+
// if we build the debug version of piral (debug and emulator build)
|
|
6
|
+
if (process.env.DEBUG_PIRAL) {
|
|
7
|
+
imports.push('import { integrateDebugger } from "./esm/debugger"');
|
|
8
|
+
exports.push(`export { integrateDebugger }`);
|
|
9
|
+
} else {
|
|
10
|
+
exports.push(`export function integrateDebugger() {}`);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// if we build the emulator version of piral (shipped to pilets)
|
|
14
|
+
if (process.env.DEBUG_PILET) {
|
|
15
|
+
imports.push('import { integrateEmulator } from "./esm/debugger"');
|
|
16
|
+
exports.push(`export { integrateEmulator }`);
|
|
17
|
+
} else {
|
|
18
|
+
exports.push(`export function integrateEmulator() {}`);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return `${imports.join(';\n')}
|
|
22
|
+
${exports.join('\n')}
|
|
23
|
+
`;
|
|
24
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { LoadPiletsOptions } from 'prial-base';
|
|
2
|
+
import type { DebuggerExtensionOptions } from 'piral-debug-utils';
|
|
3
|
+
import type { GlobalStateContext } from './src/types';
|
|
4
|
+
|
|
5
|
+
export function integrateDebugger(
|
|
6
|
+
context: GlobalStateContext,
|
|
7
|
+
options: LoadPiletsOptions,
|
|
8
|
+
debug?: DebuggerExtensionOptions,
|
|
9
|
+
): void;
|
|
10
|
+
|
|
11
|
+
export function integrateEmulator(context: GlobalStateContext, options, debug?: DebuggerExtensionOptions): void;
|
package/dependencies.codegen
CHANGED
|
@@ -16,6 +16,7 @@ module.exports = function () {
|
|
|
16
16
|
const appName = process.env.BUILD_PCKG_NAME || '';
|
|
17
17
|
const externals = (process.env.SHARED_DEPENDENCIES || '').split(',').filter(Boolean);
|
|
18
18
|
const assignments = [];
|
|
19
|
+
const imports = [];
|
|
19
20
|
|
|
20
21
|
if (appName) {
|
|
21
22
|
assignments.push(`deps['${appName}']={}`);
|
|
@@ -23,13 +24,14 @@ module.exports = function () {
|
|
|
23
24
|
|
|
24
25
|
for (const name of externals) {
|
|
25
26
|
const identifiers = getIdentifiers(name);
|
|
27
|
+
const ref = `_${imports.length}`;
|
|
28
|
+
imports.push(`import * as ${ref} from ${JSON.stringify(name)}`);
|
|
26
29
|
|
|
27
30
|
for (const id of identifiers) {
|
|
28
|
-
assignments.push(`deps[${JSON.stringify(id)}]
|
|
31
|
+
assignments.push(`deps[${JSON.stringify(id)}]=${ref}`);
|
|
29
32
|
}
|
|
30
33
|
}
|
|
31
34
|
|
|
32
|
-
return
|
|
33
|
-
|
|
34
|
-
}`;
|
|
35
|
+
return `${imports.join(';\n')}
|
|
36
|
+
export default function(deps) {${assignments.join(';')}}`;
|
|
35
37
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function (deps: Record<string, any>): void;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// required for piral-native; otherwise non-essential
|
|
2
|
-
|
|
2
|
+
export default function() {};
|
package/esm/RootListener.js
CHANGED
package/esm/RootListener.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RootListener.js","sourceRoot":"","sources":["../src/RootListener.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"RootListener.js","sourceRoot":"","sources":["../src/RootListener.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,YAAY,GAAa,GAAG,EAAE;IACzC,MAAM,OAAO,GAAG,qBAAqB,EAAE,CAAC;IAExC,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE;QACzB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC,MAAM,OAAO,GAAG,CAAC,EAAe,EAAE,EAAE;gBAClC,EAAE,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;gBACpC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;gBAChE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;gBACzB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YACzB,CAAC,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAE9D,OAAO,GAAG,EAAE;gBACV,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YACnE,CAAC,CAAC;SACH;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -1,38 +1,15 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
*/
|
|
5
|
-
export interface ErrorBoundaryOptions<T> {
|
|
6
|
-
/**
|
|
7
|
-
* Callback to be used in case of an emitted error.
|
|
8
|
-
* @param error The error caught by the boundary.
|
|
9
|
-
*/
|
|
10
|
-
onError(error: Error): void;
|
|
2
|
+
import { Errors, PiletApi } from '../types';
|
|
3
|
+
export interface ErrorBoundaryProps {
|
|
11
4
|
/**
|
|
12
|
-
*
|
|
13
|
-
* @param error The error caught by the boundary.
|
|
14
|
-
* @param props The props used by the boundary.
|
|
5
|
+
* The type of error to indicate when caught.
|
|
15
6
|
*/
|
|
16
|
-
|
|
7
|
+
errorType: keyof Errors;
|
|
17
8
|
/**
|
|
18
|
-
*
|
|
19
|
-
* @param children The standard children to render.
|
|
20
|
-
* @param props The props used by the boundary.
|
|
9
|
+
* The associated pilet api for the metadata.
|
|
21
10
|
*/
|
|
22
|
-
|
|
11
|
+
piral: PiletApi;
|
|
23
12
|
}
|
|
24
|
-
/**
|
|
25
|
-
* The props of the ErrorBoundary component.
|
|
26
|
-
*/
|
|
27
|
-
export interface ErrorBoundaryProps<T> extends ErrorBoundaryOptions<T> {
|
|
28
|
-
/**
|
|
29
|
-
* The render props for the specific ErrorBoundary.
|
|
30
|
-
*/
|
|
31
|
-
renderProps: T;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* The state of the ErrorBoundary component.
|
|
35
|
-
*/
|
|
36
13
|
export interface ErrorBoundaryState {
|
|
37
14
|
/**
|
|
38
15
|
* The current error (if any) caught by the boundary.
|
|
@@ -40,10 +17,12 @@ export interface ErrorBoundaryState {
|
|
|
40
17
|
error?: Error;
|
|
41
18
|
}
|
|
42
19
|
/**
|
|
43
|
-
* The
|
|
20
|
+
* The component for catching errors and displaying error information.
|
|
44
21
|
*/
|
|
45
|
-
export declare class ErrorBoundary
|
|
46
|
-
|
|
22
|
+
export declare class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {
|
|
23
|
+
state: {
|
|
24
|
+
error: any;
|
|
25
|
+
};
|
|
47
26
|
componentDidCatch(error: Error): void;
|
|
48
|
-
render():
|
|
27
|
+
render(): JSX.Element;
|
|
49
28
|
}
|
|
@@ -1,34 +1,32 @@
|
|
|
1
|
+
import { __rest } from "tslib";
|
|
1
2
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
3
|
+
import { PiralError, PiralLoadingIndicator } from './components';
|
|
3
4
|
/**
|
|
4
|
-
* The
|
|
5
|
+
* The component for catching errors and displaying error information.
|
|
5
6
|
*/
|
|
6
7
|
export class ErrorBoundary extends React.Component {
|
|
7
|
-
constructor(
|
|
8
|
-
super(
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
9
10
|
this.state = {
|
|
10
11
|
error: undefined,
|
|
11
12
|
};
|
|
12
13
|
}
|
|
13
14
|
componentDidCatch(error) {
|
|
14
|
-
const {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
15
|
+
const { piral, errorType } = this.props;
|
|
16
|
+
const pilet = piral.meta.name;
|
|
17
|
+
console.error(`[${pilet}] Exception in component of type "${errorType}".`, error);
|
|
18
18
|
this.setState({
|
|
19
19
|
error,
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
22
|
render() {
|
|
23
|
-
const { children,
|
|
23
|
+
const _a = this.props, { children, piral, errorType } = _a, renderProps = __rest(_a, ["children", "piral", "errorType"]);
|
|
24
24
|
const { error } = this.state;
|
|
25
|
+
const rest = renderProps;
|
|
25
26
|
if (error) {
|
|
26
|
-
|
|
27
|
-
return renderError(error, renderProps);
|
|
28
|
-
}
|
|
29
|
-
return React.createElement("div", { style: { whiteSpace: 'pre-wrap' } }, error && error.message);
|
|
27
|
+
return React.createElement(PiralError, Object.assign({ type: errorType, error: error }, rest));
|
|
30
28
|
}
|
|
31
|
-
return
|
|
29
|
+
return React.createElement(React.Suspense, { fallback: React.createElement(PiralLoadingIndicator, null) }, children);
|
|
32
30
|
}
|
|
33
31
|
}
|
|
34
32
|
//# sourceMappingURL=ErrorBoundary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../src/components/ErrorBoundary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../src/components/ErrorBoundary.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAqBjE;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK,CAAC,SAAiD;IAA1F;;QACE,UAAK,GAAG;YACN,KAAK,EAAE,SAAS;SACjB,CAAC;IAuBJ,CAAC;IArBC,iBAAiB,CAAC,KAAY;QAC5B,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,qCAAqC,SAAS,IAAI,EAAE,KAAK,CAAC,CAAC;QAElF,IAAI,CAAC,QAAQ,CAAC;YACZ,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,MAAM,KAAiD,IAAI,CAAC,KAAK,EAA3D,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,OAA+B,EAA1B,WAAW,cAA5C,kCAA8C,CAAa,CAAC;QAClE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7B,MAAM,IAAI,GAAQ,WAAW,CAAC;QAE9B,IAAI,KAAK,EAAE;YACT,OAAO,oBAAC,UAAU,kBAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,IAAM,IAAI,EAAI,CAAC;SAChE;QAED,OAAO,oBAAC,KAAK,CAAC,QAAQ,IAAC,QAAQ,EAAE,oBAAC,qBAAqB,OAAG,IAAG,QAAQ,CAAkB,CAAC;IAC1F,CAAC;CACF"}
|
|
@@ -1,7 +1,25 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { isfunc } from 'piral-base';
|
|
3
|
-
import {
|
|
3
|
+
import { wrapComponent } from './wrapComponent';
|
|
4
|
+
import { useGlobalState, useGlobalStateContext } from '../hooks';
|
|
4
5
|
import { defaultRender, none } from '../utils';
|
|
6
|
+
const renderExtensions = [
|
|
7
|
+
{
|
|
8
|
+
component: (props) => {
|
|
9
|
+
const context = useGlobalStateContext();
|
|
10
|
+
const converters = context.converters;
|
|
11
|
+
const piral = context.apis._;
|
|
12
|
+
const { component, props: args } = props.params;
|
|
13
|
+
const Component = React.useMemo(() => wrapComponent(converters, component, { piral }, defaultRender), [component]);
|
|
14
|
+
return React.createElement(Component, Object.assign({}, args));
|
|
15
|
+
},
|
|
16
|
+
defaults: {},
|
|
17
|
+
pilet: '',
|
|
18
|
+
reference: {
|
|
19
|
+
displayName: 'RenderExtension',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
];
|
|
5
23
|
/**
|
|
6
24
|
* The extension slot component to be used when the available
|
|
7
25
|
* extensions of a given name should be rendered at a specific
|
|
@@ -9,7 +27,7 @@ import { defaultRender, none } from '../utils';
|
|
|
9
27
|
*/
|
|
10
28
|
export function ExtensionSlot(props) {
|
|
11
29
|
const { name, render = defaultRender, empty, params, children } = props;
|
|
12
|
-
const extensions = useGlobalState((s) => s.registry.extensions[name] || none);
|
|
30
|
+
const extensions = useGlobalState((s) => (name ? s.registry.extensions[name] || none : renderExtensions));
|
|
13
31
|
return render(extensions.length === 0 && isfunc(empty)
|
|
14
32
|
? [defaultRender(empty(), 'empty')]
|
|
15
33
|
: extensions.map(({ component: Component, reference, defaults = {} }, i) => (React.createElement(Component, { key: `${(reference === null || reference === void 0 ? void 0 : reference.displayName) || '_'}${i}`, children: children, params: Object.assign(Object.assign({}, defaults), (params || {})) }))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtensionSlot.js","sourceRoot":"","sources":["../../src/components/ExtensionSlot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ExtensionSlot.js","sourceRoot":"","sources":["../../src/components/ExtensionSlot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAG/C,MAAM,gBAAgB,GAA4B;IAChD;QACE,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,MAAM,OAAO,GAAG,qBAAqB,EAAE,CAAC;YACxC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACtC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7B,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;YAChD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAC7B,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,aAAa,CAAC,EACpE,CAAC,SAAS,CAAC,CACZ,CAAC;YACF,OAAO,oBAAC,SAAS,oBAAK,IAAI,EAAI,CAAC;QACjC,CAAC;QACD,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,EAAE;QACT,SAAS,EAAE;YACT,WAAW,EAAE,iBAAiB;SAC/B;KACF;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAmB,KAA4B;IAC1E,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACxE,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1G,OAAO,MAAM,CACX,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC;QACtC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CACxE,oBAAC,SAAS,IACR,GAAG,EAAE,GAAG,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,KAAI,GAAG,GAAG,CAAC,EAAE,EAC3C,QAAQ,EAAE,QAAQ,EAClB,MAAM,kCACD,QAAQ,GACR,CAAC,MAAM,IAAI,EAAE,CAAC,IAEnB,CACH,CAAC,CACP,CAAC;AACJ,CAAC;AAED,aAAa,CAAC,WAAW,GAAG,eAAe,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ForeignComponent, BaseComponentProps, ComponentContext } from '../types';
|
|
3
|
+
interface ForeignComponentContainerProps<T> {
|
|
4
|
+
$portalId: string;
|
|
5
|
+
$component: ForeignComponent<T>;
|
|
6
|
+
$context: ComponentContext;
|
|
7
|
+
innerProps: T & BaseComponentProps;
|
|
8
|
+
}
|
|
9
|
+
export declare class ForeignComponentContainer<T> extends React.Component<ForeignComponentContainerProps<T>> {
|
|
10
|
+
private current?;
|
|
11
|
+
private previous?;
|
|
12
|
+
private handler;
|
|
13
|
+
private setNode;
|
|
14
|
+
componentDidMount(): void;
|
|
15
|
+
componentDidUpdate(): void;
|
|
16
|
+
componentWillUnmount(): void;
|
|
17
|
+
render(): JSX.Element;
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { isfunc } from 'piral-base';
|
|
3
|
+
export class ForeignComponentContainer extends React.Component {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(...arguments);
|
|
6
|
+
this.handler = (ev) => {
|
|
7
|
+
const { innerProps } = this.props;
|
|
8
|
+
ev.stopPropagation();
|
|
9
|
+
innerProps.piral.renderHtmlExtension(ev.detail.target, ev.detail.props);
|
|
10
|
+
};
|
|
11
|
+
this.setNode = (node) => {
|
|
12
|
+
this.current = node;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
componentDidMount() {
|
|
16
|
+
const node = this.current;
|
|
17
|
+
const { $component, $context, innerProps } = this.props;
|
|
18
|
+
const { mount } = $component;
|
|
19
|
+
if (node && isfunc(mount)) {
|
|
20
|
+
mount(node, innerProps, $context);
|
|
21
|
+
node.addEventListener('render-html', this.handler, false);
|
|
22
|
+
}
|
|
23
|
+
this.previous = node;
|
|
24
|
+
}
|
|
25
|
+
componentDidUpdate() {
|
|
26
|
+
const { current, previous } = this;
|
|
27
|
+
const { $component, $context, innerProps } = this.props;
|
|
28
|
+
const { update } = $component;
|
|
29
|
+
if (current !== previous) {
|
|
30
|
+
previous && this.componentWillUnmount();
|
|
31
|
+
current && this.componentDidMount();
|
|
32
|
+
}
|
|
33
|
+
else if (isfunc(update)) {
|
|
34
|
+
update(current, innerProps, $context);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
componentWillUnmount() {
|
|
38
|
+
const node = this.previous;
|
|
39
|
+
const { $component } = this.props;
|
|
40
|
+
const { unmount } = $component;
|
|
41
|
+
if (node && isfunc(unmount)) {
|
|
42
|
+
unmount(node);
|
|
43
|
+
node.removeEventListener('render-html', this.handler, false);
|
|
44
|
+
}
|
|
45
|
+
this.previous = undefined;
|
|
46
|
+
}
|
|
47
|
+
render() {
|
|
48
|
+
const { $portalId } = this.props;
|
|
49
|
+
return React.createElement("div", { "data-portal-id": $portalId, ref: this.setNode });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=ForeignComponentContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ForeignComponentContainer.js","sourceRoot":"","sources":["../../src/components/ForeignComponentContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAWpC,MAAM,OAAO,yBAA6B,SAAQ,KAAK,CAAC,SAA4C;IAApG;;QAGU,YAAO,GAAG,CAAC,EAAe,EAAE,EAAE;YACpC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAClC,EAAE,CAAC,eAAe,EAAE,CAAC;YACrB,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1E,CAAC,CAAC;QAEM,YAAO,GAAG,CAAC,IAAoB,EAAE,EAAE;YACzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC,CAAC;IA6CJ,CAAC;IA3CC,iBAAiB;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACxD,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC;QAE7B,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;YACzB,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YAClC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SAC3D;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,kBAAkB;QAChB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QACnC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACxD,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;QAE9B,IAAI,OAAO,KAAK,QAAQ,EAAE;YACxB,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACxC,OAAO,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;SACrC;aAAM,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;YACzB,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;SACvC;IACH,CAAC;IAED,oBAAoB;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAClC,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;QAE/B,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SAC9D;QAED,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACjC,OAAO,+CAAqB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,GAAI,CAAC;IAC/D,CAAC;CACF"}
|
package/esm/components/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { AnyComponent, ComponentConverters, PiletApi, BaseComponentProps } from '../types';
|
|
3
|
+
interface CapturedProps {
|
|
4
|
+
piral: PiletApi;
|
|
5
|
+
}
|
|
6
|
+
export declare function wrapComponent<T>(converters: ComponentConverters<T & BaseComponentProps>, component: AnyComponent<T & BaseComponentProps>, captured: CapturedProps, Wrapper: React.FC<T>): React.MemoExoticComponent<(props: T) => JSX.Element> | React.ComponentType<T>;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { __RouterContext } from 'react-router';
|
|
3
|
+
import { PortalRenderer } from './PortalRenderer';
|
|
4
|
+
import { ForeignComponentContainer } from './ForeignComponentContainer';
|
|
5
|
+
import { useGlobalStateContext } from '../hooks';
|
|
6
|
+
import { convertComponent, none } from '../utils';
|
|
7
|
+
// this is an arbitrary start number to have 6 digits
|
|
8
|
+
let portalIdBase = 123456;
|
|
9
|
+
function wrapReactComponent(Component, captured, Wrapper) {
|
|
10
|
+
return (props) => (React.createElement(Wrapper, Object.assign({}, props),
|
|
11
|
+
React.createElement(Component, Object.assign({}, props, captured))));
|
|
12
|
+
}
|
|
13
|
+
function wrapForeignComponent(component, captured, Wrapper) {
|
|
14
|
+
return React.memo((props) => {
|
|
15
|
+
const { state, readState, destroyPortal } = useGlobalStateContext();
|
|
16
|
+
const router = React.useContext(__RouterContext);
|
|
17
|
+
const id = React.useMemo(() => (portalIdBase++).toString(26), none);
|
|
18
|
+
const context = React.useMemo(() => ({ router, state, readState }), [router, state]);
|
|
19
|
+
const innerProps = React.useMemo(() => (Object.assign(Object.assign({}, props), captured)), [props]);
|
|
20
|
+
React.useEffect(() => () => destroyPortal(id), none);
|
|
21
|
+
return (React.createElement(Wrapper, Object.assign({}, props),
|
|
22
|
+
React.createElement(PortalRenderer, { id: id }),
|
|
23
|
+
React.createElement(ForeignComponentContainer, { innerProps: innerProps, "$portalId": id, "$component": component, "$context": context })));
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function isNotExotic(component) {
|
|
27
|
+
return !component.$$typeof;
|
|
28
|
+
}
|
|
29
|
+
export function wrapComponent(converters, component, captured, Wrapper) {
|
|
30
|
+
if (!component) {
|
|
31
|
+
const pilet = captured.piral.meta.name;
|
|
32
|
+
console.error(`[${pilet}] The given value is not a valid component.`);
|
|
33
|
+
// tslint:disable-next-line:no-null-keyword
|
|
34
|
+
component = () => null;
|
|
35
|
+
}
|
|
36
|
+
if (typeof component === 'object' && isNotExotic(component)) {
|
|
37
|
+
const result = convertComponent(converters[component.type], component);
|
|
38
|
+
return wrapForeignComponent(result, captured, Wrapper);
|
|
39
|
+
}
|
|
40
|
+
return wrapReactComponent(component, captured, Wrapper);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=wrapComponent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrapComponent.js","sourceRoot":"","sources":["../../src/components/wrapComponent.tsx"],"names":[],"mappings":"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"}
|
package/esm/createInstance.js
CHANGED
|
@@ -33,7 +33,7 @@ export function createInstance(config = {}) {
|
|
|
33
33
|
const usedPlugins = Array.isArray(definedPlugins) ? definedPlugins : [definedPlugins];
|
|
34
34
|
const createApi = apiFactory(context, usedPlugins);
|
|
35
35
|
const root = createApi({
|
|
36
|
-
name: '
|
|
36
|
+
name: '_',
|
|
37
37
|
version: process.env.BUILD_PCKG_VERSION || '1.0.0',
|
|
38
38
|
spec: 'v0',
|
|
39
39
|
basePath: '',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createInstance.js","sourceRoot":"","sources":["../src/createInstance.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,cAAc,CAAC,SAA+B,EAAE;IAC9D,MAAM,EACJ,EAAE,GAAG,UAAU,EAAE,EACjB,KAAK,EACL,OAAO,EACP,eAAe,GAAG,EAAE,EACpB,OAAO,EACP,aAAa,GAAG,sBAAsB,EACtC,YAAY,EACZ,KAAK,GAAG,KAAK,EACb,iBAAiB,GAAG,yBAAyB,EAC7C,SAAS,EACT,OAAO,EACP,KAAK,EACL,UAAU,GAAG,iBAAiB,GAC/B,GAAG,MAAM,CAAC;IACX,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,OAAO,IAAI,EAAE,CAAC;IACrC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,SAAS,CAAC;QACrB,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"createInstance.js","sourceRoot":"","sources":["../src/createInstance.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,cAAc,CAAC,SAA+B,EAAE;IAC9D,MAAM,EACJ,EAAE,GAAG,UAAU,EAAE,EACjB,KAAK,EACL,OAAO,EACP,eAAe,GAAG,EAAE,EACpB,OAAO,EACP,aAAa,GAAG,sBAAsB,EACtC,YAAY,EACZ,KAAK,GAAG,KAAK,EACb,iBAAiB,GAAG,yBAAyB,EAC7C,SAAS,EACT,OAAO,EACP,KAAK,EACL,UAAU,GAAG,iBAAiB,GAC/B,GAAG,MAAM,CAAC;IACX,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,OAAO,IAAI,EAAE,CAAC;IACrC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,SAAS,CAAC;QACrB,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO;QAClD,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,EAAE;QACV,YAAY,EAAE,EAAE;KACjB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,kBAAkB,CAAC;QACjC,OAAO;QACP,SAAS;QACT,OAAO;QACP,SAAS;QACT,eAAe;QACf,YAAY;QACZ,iBAAiB;QACjB,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB;QAC5E,aAAa;QACb,KAAK;KACN,CAAC,CAAC;IAEH,IAAI,OAAO,EAAE;QACX,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KAClC;IAED,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;IAE1B,OAAO,QAAQ,CAAC,MAAM,EAAE;QACtB,EAAE;QACF,SAAS;QACT,OAAO;QACP,IAAI;QACJ,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { LoadPiletsOptions } from 'piral-base';
|
|
2
|
+
import { DebuggerExtensionOptions } from 'piral-debug-utils';
|
|
3
|
+
import { GlobalStateContext } from './types';
|
|
4
|
+
export declare function integrateDebugger(context: GlobalStateContext, options: LoadPiletsOptions, debug?: DebuggerExtensionOptions): void;
|
package/esm/debugger.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { addChangeHandler } from '@dbeining/react-atom';
|
|
2
|
+
import { installPiralDebug } from 'piral-debug-utils';
|
|
3
|
+
export function integrateDebugger(context, options, debug = {}) {
|
|
4
|
+
installPiralDebug(Object.assign(Object.assign({}, debug), { addPilet: context.addPilet, removePilet: context.removePilet, updatePilet(pilet) {
|
|
5
|
+
if (!pilet.disabled) {
|
|
6
|
+
const { createApi } = options;
|
|
7
|
+
const newApi = createApi(pilet);
|
|
8
|
+
try {
|
|
9
|
+
context.injectPilet(pilet);
|
|
10
|
+
pilet.setup(newApi);
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
console.error(error);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
context.injectPilet(pilet);
|
|
18
|
+
}
|
|
19
|
+
}, fireEvent: context.emit, getDependencies() {
|
|
20
|
+
return Object.keys(options.dependencies);
|
|
21
|
+
},
|
|
22
|
+
getExtensions() {
|
|
23
|
+
return context.readState((s) => Object.keys(s.registry.extensions));
|
|
24
|
+
},
|
|
25
|
+
getRoutes() {
|
|
26
|
+
const registeredRoutes = context.readState((state) => Object.keys(state.registry.pages));
|
|
27
|
+
const componentRoutes = context.readState((state) => Object.keys(state.routes));
|
|
28
|
+
return [...componentRoutes, ...registeredRoutes];
|
|
29
|
+
},
|
|
30
|
+
getGlobalState() {
|
|
31
|
+
return context.readState((s) => s);
|
|
32
|
+
},
|
|
33
|
+
getPilets() {
|
|
34
|
+
return context.readState((s) => s.modules);
|
|
35
|
+
},
|
|
36
|
+
integrate(dbg) {
|
|
37
|
+
context.dispatch((s) => (Object.assign(Object.assign({}, s), { components: Object.assign(Object.assign({}, s.components), dbg.components), routes: Object.assign(Object.assign({}, s.routes), dbg.routes), registry: Object.assign(Object.assign({}, s.registry), { wrappers: Object.assign(Object.assign({}, s.registry.wrappers), dbg.wrappers) }) })));
|
|
38
|
+
addChangeHandler(context.state, 'debugging', ({ previous, current }) => {
|
|
39
|
+
const pilets = current.modules !== previous.modules;
|
|
40
|
+
const pages = current.registry.pages !== previous.registry.pages || current.routes !== previous.routes;
|
|
41
|
+
const extensions = current.registry.extensions !== previous.registry.extensions;
|
|
42
|
+
const state = current !== previous;
|
|
43
|
+
dbg.onChange(previous, current, {
|
|
44
|
+
pilets,
|
|
45
|
+
pages,
|
|
46
|
+
extensions,
|
|
47
|
+
state,
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
} }));
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=debugger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debugger.js","sourceRoot":"","sources":["../src/debugger.ts"],"names":[],"mappings":"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"}
|
package/esm/emulator.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { withEmulatorPilets } from 'piral-debug-utils';
|
|
2
|
+
export function integrateEmulator(context, options) {
|
|
3
|
+
options.fetchPilets = withEmulatorPilets(options.fetchPilets, {
|
|
4
|
+
addPilet: context.addPilet,
|
|
5
|
+
removePilet: context.removePilet,
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=emulator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emulator.js","sourceRoot":"","sources":["../src/emulator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD,MAAM,UAAU,iBAAiB,CAAC,OAA2B,EAAE,OAA0B;IACvF,OAAO,CAAC,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,WAAW,EAAE;QAC5D,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC,CAAC;AACL,CAAC"}
|
package/esm/helpers.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PiletApiCreator, LoadPiletsOptions, CustomSpecLoaders, DefaultLoaderConfig, PiletLoader, PiletLifecycleHooks } from 'piral-base';
|
|
2
|
-
import { DebuggerExtensionOptions } from 'piral-debug-utils';
|
|
2
|
+
import type { DebuggerExtensionOptions } from 'piral-debug-utils';
|
|
3
3
|
import type { Pilet, PiletRequester, GlobalStateContext, PiletLoadingStrategy, DependencySelector } from './types';
|
|
4
4
|
export interface PiletOptionsConfig {
|
|
5
5
|
context: GlobalStateContext;
|
package/esm/helpers.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { getDefaultLoader, extendLoader, } from 'piral-base';
|
|
2
2
|
import { globalDependencies } from './modules';
|
|
3
|
+
import { integrateDebugger, integrateEmulator } from '../debug.codegen';
|
|
3
4
|
export function createPiletOptions({ hooks, context, loaders, loaderConfig, availablePilets, strategy, createApi, loadPilet, requestPilets, shareDependencies, debug, }) {
|
|
4
5
|
const options = {
|
|
5
6
|
config: loaderConfig,
|
|
@@ -11,16 +12,8 @@ export function createPiletOptions({ hooks, context, loaders, loaderConfig, avai
|
|
|
11
12
|
hooks,
|
|
12
13
|
dependencies: shareDependencies(globalDependencies),
|
|
13
14
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const { integrate } = require('../debug-piral');
|
|
17
|
-
integrate(context, options, debug);
|
|
18
|
-
}
|
|
19
|
-
// if we build the emulator version of piral (shipped to pilets)
|
|
20
|
-
if (process.env.DEBUG_PILET) {
|
|
21
|
-
const { integrate } = require('../debug-pilet');
|
|
22
|
-
integrate(context, options);
|
|
23
|
-
}
|
|
15
|
+
integrateDebugger(context, options, debug);
|
|
16
|
+
integrateEmulator(context, options, debug);
|
|
24
17
|
return options;
|
|
25
18
|
}
|
|
26
19
|
//# sourceMappingURL=helpers.js.map
|
package/esm/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,gBAAgB,EAChB,YAAY,GAGb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,gBAAgB,EAChB,YAAY,GAGb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAgBxE,MAAM,UAAU,kBAAkB,CAAC,EACjC,KAAK,EACL,OAAO,EACP,OAAO,EACP,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,SAAS,EACT,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,KAAK,GACc;IACnB,MAAM,OAAO,GAAsB;QACjC,MAAM,EAAE,YAAY;QACpB,QAAQ;QACR,SAAS,EAAE,YAAY,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,gBAAgB,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;QAC7E,SAAS;QACT,MAAM,EAAE,eAAe;QACvB,WAAW,EAAE,aAAa;QAC1B,KAAK;QACL,YAAY,EAAE,iBAAiB,CAAC,kBAAkB,CAAC;KACpD,CAAC;IAEF,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3C,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAE3C,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/esm/modules/core.js
CHANGED
|
@@ -14,25 +14,27 @@ export function createCoreApi(context) {
|
|
|
14
14
|
const expiration = getDataExpiration(expires);
|
|
15
15
|
return context.tryWriteDataItem(name, value, pilet, target, expiration);
|
|
16
16
|
},
|
|
17
|
-
registerPage(route, arg, meta) {
|
|
17
|
+
registerPage(route, arg, meta = {}) {
|
|
18
|
+
const component = withApi(context, arg, api, 'page', undefined, { meta });
|
|
18
19
|
context.registerPage(route, {
|
|
19
20
|
pilet,
|
|
20
21
|
meta,
|
|
21
|
-
component
|
|
22
|
+
component,
|
|
22
23
|
});
|
|
23
24
|
return () => api.unregisterPage(route);
|
|
24
25
|
},
|
|
25
26
|
unregisterPage(route) {
|
|
26
27
|
context.unregisterPage(route);
|
|
27
28
|
},
|
|
28
|
-
registerExtension(name,
|
|
29
|
+
registerExtension(name, reference, defaults) {
|
|
30
|
+
const component = withApi(context, reference, api, 'extension');
|
|
29
31
|
context.registerExtension(name, {
|
|
30
32
|
pilet,
|
|
31
|
-
component
|
|
32
|
-
reference
|
|
33
|
+
component,
|
|
34
|
+
reference,
|
|
33
35
|
defaults,
|
|
34
36
|
});
|
|
35
|
-
return () => api.unregisterExtension(name,
|
|
37
|
+
return () => api.unregisterExtension(name, reference);
|
|
36
38
|
},
|
|
37
39
|
unregisterExtension(name, arg) {
|
|
38
40
|
context.unregisterExtension(name, arg);
|
package/esm/modules/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/modules/core.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGhE,MAAM,UAAU,aAAa,CAAC,OAA2B;IACvD,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QACxB,OAAO;YACL,OAAO,CAAC,IAAI;gBACV,OAAO,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;YACD,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO;gBAC1B,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAClE,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAC9C,OAAO,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAC1E,CAAC;YACD,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/modules/core.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGhE,MAAM,UAAU,aAAa,CAAC,OAA2B;IACvD,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QACxB,OAAO;YACL,OAAO,CAAC,IAAI;gBACV,OAAO,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;YACD,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO;gBAC1B,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAClE,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAC9C,OAAO,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAC1E,CAAC;YACD,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE;gBAChC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1E,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE;oBAC1B,KAAK;oBACL,IAAI;oBACJ,SAAS;iBACV,CAAC,CAAC;gBACH,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;YACD,cAAc,CAAC,KAAK;gBAClB,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YACD,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ;gBACzC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;gBAChE,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE;oBAC9B,KAAK;oBACL,SAAS;oBACT,SAAS;oBACT,QAAQ;iBACT,CAAC,CAAC;gBACH,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACxD,CAAC;YACD,mBAAmB,CAAC,IAAI,EAAE,GAAG;gBAC3B,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACzC,CAAC;YACD,mBAAmB,CAAC,OAAO,EAAE,KAAK;gBAChC,MAAM,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBACzD,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,SAAS,EAAE,aAAa;SACzB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|