piral-core 0.15.0-beta.4633 → 0.15.0-beta.4672
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/app.codegen +6 -135
- package/esm/components/ForeignComponentContainer.js +1 -1
- package/esm/components/ForeignComponentContainer.js.map +1 -1
- package/esm/defaults/navigator_v5.d.ts +6 -0
- package/esm/defaults/navigator_v5.js +77 -0
- package/esm/defaults/navigator_v5.js.map +1 -0
- package/esm/defaults/navigator_v6.d.ts +6 -0
- package/esm/defaults/navigator_v6.js +73 -0
- package/esm/defaults/navigator_v6.js.map +1 -0
- package/esm/modules/element.js +46 -2
- package/esm/modules/element.js.map +1 -1
- package/esm/types/navigation.d.ts +6 -2
- package/esm/utils/extension.d.ts +1 -1
- package/esm/utils/extension.js +1 -1
- package/esm/utils/extension.js.map +1 -1
- package/esm/utils/foreign.d.ts +3 -0
- package/esm/utils/foreign.js +5 -2
- package/esm/utils/foreign.js.map +1 -1
- package/lib/components/ForeignComponentContainer.js +1 -1
- package/lib/components/ForeignComponentContainer.js.map +1 -1
- package/lib/defaults/navigator_v5.d.ts +6 -0
- package/lib/defaults/navigator_v5.js +84 -0
- package/lib/defaults/navigator_v5.js.map +1 -0
- package/lib/defaults/navigator_v6.d.ts +6 -0
- package/lib/defaults/navigator_v6.js +80 -0
- package/lib/defaults/navigator_v6.js.map +1 -0
- package/lib/modules/element.js +45 -1
- package/lib/modules/element.js.map +1 -1
- package/lib/types/navigation.d.ts +6 -2
- package/lib/utils/extension.d.ts +1 -1
- package/lib/utils/extension.js +1 -1
- package/lib/utils/extension.js.map +1 -1
- package/lib/utils/foreign.d.ts +3 -0
- package/lib/utils/foreign.js +6 -3
- package/lib/utils/foreign.js.map +1 -1
- package/package.json +5 -4
- package/src/components/ForeignComponentContainer.test.tsx +1 -1
- package/src/components/ForeignComponentContainer.tsx +2 -1
- package/src/defaults/navigator_v5.tsx +96 -0
- package/src/defaults/navigator_v6.tsx +93 -0
- package/src/modules/element.test.ts +0 -10
- package/src/modules/element.ts +60 -2
- package/src/types/api.ts +1 -0
- package/src/types/navigation.ts +6 -2
- package/src/utils/extension.test.tsx +1 -1
- package/src/utils/extension.tsx +3 -2
- package/src/utils/foreign.test.ts +5 -5
- package/src/utils/foreign.ts +6 -2
package/app.codegen
CHANGED
|
@@ -65,132 +65,20 @@ function createDefaultState(imports, exports) {
|
|
|
65
65
|
imports.push(
|
|
66
66
|
`import { DefaultRouter } from 'piral-core/${cat}/defaults/DefaultRouter_v5';`,
|
|
67
67
|
`import { DefaultRouteSwitch } from 'piral-core/${cat}/defaults/DefaultRouteSwitch_v5';`,
|
|
68
|
-
`import {
|
|
68
|
+
`import { createRedirect, createNavigation, useCurrentNavigation, useRouterContext } from 'piral-core/${cat}/defaults/navigator_v5'`,
|
|
69
69
|
);
|
|
70
|
-
exports.push(`
|
|
71
|
-
function useCurrentNavigation() {
|
|
72
|
-
const ctx = useRouterContext();
|
|
73
|
-
|
|
74
|
-
useEffect(() => {
|
|
75
|
-
_nav = ctx.history;
|
|
76
|
-
return () => {
|
|
77
|
-
_nav = undefined;
|
|
78
|
-
};
|
|
79
|
-
}, []);
|
|
80
|
-
}
|
|
81
|
-
`);
|
|
82
|
-
|
|
83
|
-
exports.push(`
|
|
84
|
-
export function createNavigation() {
|
|
85
|
-
const enhance = info => ({
|
|
86
|
-
...info,
|
|
87
|
-
location: {
|
|
88
|
-
get href() {
|
|
89
|
-
return _nav.createHref(info.location);
|
|
90
|
-
},
|
|
91
|
-
...info.location,
|
|
92
|
-
},
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
return {
|
|
96
|
-
push(target, state) {
|
|
97
|
-
if (_nav) {
|
|
98
|
-
_nav.push(target, state);
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
replace(target, state) {
|
|
102
|
-
if (_nav) {
|
|
103
|
-
_nav.replace(target, state);
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
go(n) {
|
|
107
|
-
if (_nav) {
|
|
108
|
-
_nav.go(n);
|
|
109
|
-
}
|
|
110
|
-
},
|
|
111
|
-
block(blocker) {
|
|
112
|
-
if (!_nav) {
|
|
113
|
-
return _noop;
|
|
114
|
-
}
|
|
115
|
-
return _nav.block((location, action) => blocker(enhance({ location, action })));
|
|
116
|
-
},
|
|
117
|
-
listen(listener) {
|
|
118
|
-
if (!_nav) {
|
|
119
|
-
return _noop;
|
|
120
|
-
}
|
|
121
|
-
return _nav.listen((location, action) => listener(enhance({ location, action })));
|
|
122
|
-
},
|
|
123
|
-
router: {
|
|
124
|
-
history: _nav,
|
|
125
|
-
},
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
`);
|
|
129
70
|
} else {
|
|
130
71
|
imports.push(
|
|
131
72
|
`import { DefaultRouter } from 'piral-core/${cat}/defaults/DefaultRouter_v6';`,
|
|
132
73
|
`import { DefaultRouteSwitch } from 'piral-core/${cat}/defaults/DefaultRouteSwitch_v6';`,
|
|
133
|
-
`import {
|
|
74
|
+
`import { createRedirect, createNavigation, useCurrentNavigation, useRouterContext } from 'piral-core/${cat}/defaults/navigator_v6'`,
|
|
134
75
|
);
|
|
135
|
-
exports.push(`
|
|
136
|
-
function useCurrentNavigation() {
|
|
137
|
-
const ctx = useRouterContext();
|
|
138
|
-
|
|
139
|
-
useEffect(() => {
|
|
140
|
-
_nav = ctx.navigator;
|
|
141
|
-
return () => {
|
|
142
|
-
_nav = undefined;
|
|
143
|
-
};
|
|
144
|
-
}, []);
|
|
145
|
-
}
|
|
146
|
-
`);
|
|
147
|
-
|
|
148
|
-
exports.push(`
|
|
149
|
-
export function createNavigation() {
|
|
150
|
-
const enhance = info => ({
|
|
151
|
-
...info,
|
|
152
|
-
location: {
|
|
153
|
-
get href() {
|
|
154
|
-
return _nav.createHref(info.location);
|
|
155
|
-
},
|
|
156
|
-
...info.location,
|
|
157
|
-
},
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
return {
|
|
161
|
-
push(target, state) {
|
|
162
|
-
if (_nav) {
|
|
163
|
-
_nav.push(target, state);
|
|
164
|
-
}
|
|
165
|
-
},
|
|
166
|
-
replace(target, state) {
|
|
167
|
-
if (_nav) {
|
|
168
|
-
_nav.replace(target, state);
|
|
169
|
-
}
|
|
170
|
-
},
|
|
171
|
-
go(n) {
|
|
172
|
-
if (_nav) {
|
|
173
|
-
_nav.go(n);
|
|
174
|
-
}
|
|
175
|
-
},
|
|
176
|
-
block(blocker) {
|
|
177
|
-
if (!_nav) {
|
|
178
|
-
return _noop;
|
|
179
|
-
}
|
|
180
|
-
return _nav.block(transition => blocker(enhance(transition)));
|
|
181
|
-
},
|
|
182
|
-
listen(listener) {
|
|
183
|
-
if (!_nav) {
|
|
184
|
-
return _noop;
|
|
185
|
-
}
|
|
186
|
-
return _nav.listen(update => listener(enhance(update)));
|
|
187
|
-
},
|
|
188
|
-
router: _nav,
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
`);
|
|
192
76
|
}
|
|
193
77
|
|
|
78
|
+
exports.push(`
|
|
79
|
+
export { createRedirect, createNavigation, useRouterContext };
|
|
80
|
+
`);
|
|
81
|
+
|
|
194
82
|
exports.push(`
|
|
195
83
|
export const publicPath = ${JSON.stringify(publicPath)};
|
|
196
84
|
`);
|
|
@@ -246,8 +134,6 @@ function createRouteHandler(imports, exports) {
|
|
|
246
134
|
const assignments = [];
|
|
247
135
|
|
|
248
136
|
imports.push(
|
|
249
|
-
`import { useContext, useEffect, createElement } from 'react';`,
|
|
250
|
-
`import { Redirect } from 'react-router';`,
|
|
251
137
|
`import { useGlobalStateContext } from 'piral-core/${cat}/hooks/globalState';`,
|
|
252
138
|
);
|
|
253
139
|
|
|
@@ -262,18 +148,6 @@ function createRouteHandler(imports, exports) {
|
|
|
262
148
|
assignments.push('return paths;');
|
|
263
149
|
}
|
|
264
150
|
|
|
265
|
-
exports.push(`
|
|
266
|
-
export function createRedirect(to) {
|
|
267
|
-
return () => createElement(Redirect, { to });
|
|
268
|
-
}
|
|
269
|
-
`);
|
|
270
|
-
|
|
271
|
-
exports.push(`
|
|
272
|
-
export function useRouterContext() {
|
|
273
|
-
return useContext(RouterContext);
|
|
274
|
-
}
|
|
275
|
-
`);
|
|
276
|
-
|
|
277
151
|
exports.push(`
|
|
278
152
|
export function useRouteFilter(paths) {
|
|
279
153
|
${assignments.join('\n')}
|
|
@@ -293,9 +167,6 @@ module.exports = function () {
|
|
|
293
167
|
return `
|
|
294
168
|
${imports.join('\n')}
|
|
295
169
|
|
|
296
|
-
let _nav;
|
|
297
|
-
const _noop = () => {};
|
|
298
|
-
|
|
299
170
|
${exports.join('\n')}
|
|
300
171
|
`;
|
|
301
172
|
};
|
|
@@ -47,7 +47,7 @@ export class ForeignComponentContainer extends React.Component {
|
|
|
47
47
|
}
|
|
48
48
|
render() {
|
|
49
49
|
const { $portalId } = this.props;
|
|
50
|
-
return React.createElement("
|
|
50
|
+
return React.createElement("piral-portal", { pid: $portalId, ref: this.setNode });
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
//# sourceMappingURL=ForeignComponentContainer.js.map
|
|
@@ -1 +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;
|
|
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;;QACU,WAAM,GAAyB,EAAE,CAAC;QAGlC,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,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/C,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,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACpD;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,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3B,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,sCAAc,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,GAAI,CAAC;IAC7D,CAAC;CACF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { NavigationApi } from '../types';
|
|
3
|
+
export declare function useRouterContext(): import("react-router").RouteComponentProps<{}, import("react-router").StaticContext, unknown>;
|
|
4
|
+
export declare function useCurrentNavigation(): void;
|
|
5
|
+
export declare function createRedirect(to: string): () => JSX.Element;
|
|
6
|
+
export declare function createNavigation(): NavigationApi;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { __RouterContext as RouterContext, Redirect, useLocation } from 'react-router';
|
|
3
|
+
let _nav;
|
|
4
|
+
const _noop = () => { };
|
|
5
|
+
export function useRouterContext() {
|
|
6
|
+
return React.useContext(RouterContext);
|
|
7
|
+
}
|
|
8
|
+
export function useCurrentNavigation() {
|
|
9
|
+
const ctx = useRouterContext();
|
|
10
|
+
const location = useLocation();
|
|
11
|
+
React.useEffect(() => {
|
|
12
|
+
if (_nav) {
|
|
13
|
+
window.dispatchEvent(new CustomEvent('piral-navigate', {
|
|
14
|
+
detail: {
|
|
15
|
+
location,
|
|
16
|
+
},
|
|
17
|
+
}));
|
|
18
|
+
}
|
|
19
|
+
}, [location]);
|
|
20
|
+
React.useEffect(() => {
|
|
21
|
+
_nav = ctx.history;
|
|
22
|
+
return () => {
|
|
23
|
+
_nav = undefined;
|
|
24
|
+
};
|
|
25
|
+
}, []);
|
|
26
|
+
}
|
|
27
|
+
export function createRedirect(to) {
|
|
28
|
+
return () => React.createElement(Redirect, { to: to });
|
|
29
|
+
}
|
|
30
|
+
export function createNavigation() {
|
|
31
|
+
const enhance = (location, action) => ({
|
|
32
|
+
action,
|
|
33
|
+
location: Object.assign({ get href() {
|
|
34
|
+
return _nav.createHref(location);
|
|
35
|
+
} }, location),
|
|
36
|
+
});
|
|
37
|
+
return {
|
|
38
|
+
get path() {
|
|
39
|
+
if (_nav) {
|
|
40
|
+
return _nav.location.pathname;
|
|
41
|
+
}
|
|
42
|
+
return location.pathname;
|
|
43
|
+
},
|
|
44
|
+
push(target, state) {
|
|
45
|
+
if (_nav) {
|
|
46
|
+
_nav.push(target, state);
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
replace(target, state) {
|
|
50
|
+
if (_nav) {
|
|
51
|
+
_nav.replace(target, state);
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
go(n) {
|
|
55
|
+
if (_nav) {
|
|
56
|
+
_nav.go(n);
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
block(blocker) {
|
|
60
|
+
if (!_nav) {
|
|
61
|
+
return _noop;
|
|
62
|
+
}
|
|
63
|
+
return _nav.block((location, action) => blocker(enhance(location, action)));
|
|
64
|
+
},
|
|
65
|
+
listen(listener) {
|
|
66
|
+
const handler = (e) => listener(enhance(e.detail, _nav.action));
|
|
67
|
+
window.addEventListener('piral-navigate', handler);
|
|
68
|
+
return () => {
|
|
69
|
+
window.removeEventListener('piral-navigate', handler);
|
|
70
|
+
};
|
|
71
|
+
},
|
|
72
|
+
router: {
|
|
73
|
+
history: _nav,
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=navigator_v5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigator_v5.js","sourceRoot":"","sources":["../../src/defaults/navigator_v5.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { NavigationApi } from '../types';
|
|
3
|
+
export declare function useRouterContext(): unknown;
|
|
4
|
+
export declare function useCurrentNavigation(): void;
|
|
5
|
+
export declare function createRedirect(to: string): () => JSX.Element;
|
|
6
|
+
export declare function createNavigation(): NavigationApi;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
//@ts-ignore
|
|
3
|
+
import { UNSAFE_NavigationContext as RouterContext, Navigate, useLocation } from 'react-router';
|
|
4
|
+
let _nav;
|
|
5
|
+
const _noop = () => { };
|
|
6
|
+
export function useRouterContext() {
|
|
7
|
+
return React.useContext(RouterContext);
|
|
8
|
+
}
|
|
9
|
+
export function useCurrentNavigation() {
|
|
10
|
+
const ctx = useRouterContext();
|
|
11
|
+
const location = useLocation();
|
|
12
|
+
React.useEffect(() => {
|
|
13
|
+
if (_nav) {
|
|
14
|
+
window.dispatchEvent(new CustomEvent('piral-navigate', {
|
|
15
|
+
detail: {
|
|
16
|
+
location,
|
|
17
|
+
},
|
|
18
|
+
}));
|
|
19
|
+
}
|
|
20
|
+
}, [location]);
|
|
21
|
+
React.useEffect(() => {
|
|
22
|
+
_nav = ctx.navigator;
|
|
23
|
+
return () => {
|
|
24
|
+
_nav = undefined;
|
|
25
|
+
};
|
|
26
|
+
}, []);
|
|
27
|
+
}
|
|
28
|
+
export function createRedirect(to) {
|
|
29
|
+
return () => React.createElement(Navigate, { to: to });
|
|
30
|
+
}
|
|
31
|
+
export function createNavigation() {
|
|
32
|
+
const enhance = (info) => (Object.assign(Object.assign({}, info), { location: Object.assign({ get href() {
|
|
33
|
+
return _nav.createHref(info.location);
|
|
34
|
+
} }, info.location) }));
|
|
35
|
+
return {
|
|
36
|
+
get path() {
|
|
37
|
+
if (_nav) {
|
|
38
|
+
return _nav.location.pathname;
|
|
39
|
+
}
|
|
40
|
+
return location.pathname;
|
|
41
|
+
},
|
|
42
|
+
push(target, state) {
|
|
43
|
+
if (_nav) {
|
|
44
|
+
_nav.push(target, state);
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
replace(target, state) {
|
|
48
|
+
if (_nav) {
|
|
49
|
+
_nav.replace(target, state);
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
go(n) {
|
|
53
|
+
if (_nav) {
|
|
54
|
+
_nav.go(n);
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
block(blocker) {
|
|
58
|
+
if (!_nav) {
|
|
59
|
+
return _noop;
|
|
60
|
+
}
|
|
61
|
+
return _nav.block((transition) => blocker(enhance(transition)));
|
|
62
|
+
},
|
|
63
|
+
listen(listener) {
|
|
64
|
+
const handler = (e) => listener(enhance(e.detail));
|
|
65
|
+
window.addEventListener('piral-navigate', handler);
|
|
66
|
+
return () => {
|
|
67
|
+
window.removeEventListener('piral-navigate', handler);
|
|
68
|
+
};
|
|
69
|
+
},
|
|
70
|
+
router: _nav,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=navigator_v6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigator_v6.js","sourceRoot":"","sources":["../../src/defaults/navigator_v6.tsx"],"names":[],"mappings":"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"}
|
package/esm/modules/element.js
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { ExtensionSlot } from '../components';
|
|
2
|
-
import { tryParseJson, noop, reactifyContent, renderInDom, changeDomPortal } from '../utils';
|
|
2
|
+
import { tryParseJson, noop, reactifyContent, renderInDom, changeDomPortal, portalName, extensionName, slotName, } from '../utils';
|
|
3
3
|
if (typeof window !== 'undefined' && 'customElements' in window) {
|
|
4
|
+
/**
|
|
5
|
+
* This is a nice abstraction allowing anyone to actually use the extension system
|
|
6
|
+
* brought by Piral. Not all props of the extension system are actually exposed.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
*
|
|
10
|
+
* ```
|
|
11
|
+
* <piral-extension name="my-ext-name"></piral-extension>
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
4
14
|
class PiralExtension extends HTMLElement {
|
|
5
15
|
constructor() {
|
|
6
16
|
super(...arguments);
|
|
@@ -35,6 +45,7 @@ if (typeof window !== 'undefined' && 'customElements' in window) {
|
|
|
35
45
|
this.update(this.props);
|
|
36
46
|
}
|
|
37
47
|
connectedCallback() {
|
|
48
|
+
this.style.display = 'contents';
|
|
38
49
|
if (this.isConnected) {
|
|
39
50
|
this.dispatchEvent(new CustomEvent('render-html', {
|
|
40
51
|
bubbles: true,
|
|
@@ -64,7 +75,40 @@ if (typeof window !== 'undefined' && 'customElements' in window) {
|
|
|
64
75
|
return ['name', 'params'];
|
|
65
76
|
}
|
|
66
77
|
}
|
|
67
|
-
customElements.define(
|
|
78
|
+
customElements.define(extensionName, PiralExtension);
|
|
79
|
+
/**
|
|
80
|
+
* This is a boundary to host elements from other frameworks - effectively vanishing
|
|
81
|
+
* at runtime.
|
|
82
|
+
*
|
|
83
|
+
* Usage:
|
|
84
|
+
*
|
|
85
|
+
* ```
|
|
86
|
+
* <piral-portal pid="host-1234"></piral-portal>
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
class PiralPortal extends HTMLElement {
|
|
90
|
+
connectedCallback() {
|
|
91
|
+
this.style.display = 'contents';
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
customElements.define(portalName, PiralPortal);
|
|
95
|
+
/**
|
|
96
|
+
* This is a virtual element to aggregate rendering from other frameworks, mostly
|
|
97
|
+
* used like piral-portal, but without context-hosting capabilities. This would
|
|
98
|
+
* be used exclusively within a foreign framework, not from Piral to initiate.
|
|
99
|
+
*
|
|
100
|
+
* Usage:
|
|
101
|
+
*
|
|
102
|
+
* ```
|
|
103
|
+
* <piral-slot></piral-slot>
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
class PiralSlot extends HTMLElement {
|
|
107
|
+
connectedCallback() {
|
|
108
|
+
this.style.display = 'contents';
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
customElements.define(slotName, PiralSlot);
|
|
68
112
|
}
|
|
69
113
|
export function renderElement(context, element, props) {
|
|
70
114
|
if (typeof window !== 'undefined') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.js","sourceRoot":"","sources":["../../src/modules/element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"element.js","sourceRoot":"","sources":["../../src/modules/element.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,7 @@ export interface NavigationLocation {
|
|
|
34
34
|
* On the initial location, this will be the string default. On all subsequent
|
|
35
35
|
* locations, this string will be a unique identifier.
|
|
36
36
|
*/
|
|
37
|
-
key
|
|
37
|
+
key?: string;
|
|
38
38
|
}
|
|
39
39
|
export interface NavigationListener {
|
|
40
40
|
(update: NavigationUpdate): void;
|
|
@@ -47,7 +47,7 @@ export interface NavigationUpdate {
|
|
|
47
47
|
location: NavigationLocation;
|
|
48
48
|
}
|
|
49
49
|
export interface NavigationTransition extends NavigationUpdate {
|
|
50
|
-
retry(): void;
|
|
50
|
+
retry?(): void;
|
|
51
51
|
}
|
|
52
52
|
export interface NavigationApi {
|
|
53
53
|
/**
|
|
@@ -78,6 +78,10 @@ export interface NavigationApi {
|
|
|
78
78
|
* @returns The disposable for stopping the block.
|
|
79
79
|
*/
|
|
80
80
|
listen(listener: NavigationListener): Disposable;
|
|
81
|
+
/**
|
|
82
|
+
* Gets the current path.
|
|
83
|
+
*/
|
|
84
|
+
path: string;
|
|
81
85
|
/**
|
|
82
86
|
* The original router behind the navigation.
|
|
83
87
|
*/
|
package/esm/utils/extension.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { ExtensionComponentProps, WrappedComponent } from '../types';
|
|
2
|
+
import type { ExtensionComponentProps, WrappedComponent } from '../types';
|
|
3
3
|
/**
|
|
4
4
|
* Transforms the given component to an extension component.
|
|
5
5
|
* @param Component The component to transform.
|
package/esm/utils/extension.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../src/utils/extension.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../src/utils/extension.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,SAAS,SAAS,CAAC,KAAuB;IACxC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACzC,CAAC;AAMD,MAAM,WAAW,GAA+B,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAmB,CAAC;IAE7C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;;QACnB,MAAA,IAAI,CAAC,OAAO,0CAAE,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC;QAC/B,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,IAAI,KAAK,CAAC,MAAM,EAAE;QAChB,OAAO,oCAAY,GAAG,EAAE,IAAI,GAAI,CAAC;KAClC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAI,SAAiC;IAC9D,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAC,SAAS,oBAAK,KAAK,CAAC,MAAM,EAAI,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,UAAiC;IAC/D,MAAM,KAAK,GAAqB,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACjF,SAAS,CAAC,KAAK,CAAC,CAAC;IACjB,OAAO,oBAAC,WAAW,IAAC,KAAK,EAAE,KAAK,GAAI,CAAC;AACvC,CAAC"}
|
package/esm/utils/foreign.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { ComponentType, ReactPortal } from 'react';
|
|
2
2
|
import { GlobalStateContext, ForeignComponent } from '../types';
|
|
3
|
+
export declare const extensionName = "piral-extension";
|
|
4
|
+
export declare const portalName = "piral-portal";
|
|
5
|
+
export declare const slotName = "piral-slot";
|
|
3
6
|
export declare function attachDomPortal<TProps>(id: string, context: GlobalStateContext, element: HTMLElement | ShadowRoot, component: ComponentType<TProps>, props: TProps): [string, ReactPortal];
|
|
4
7
|
export declare function changeDomPortal<TProps>(id: string, current: ReactPortal, context: GlobalStateContext, element: HTMLElement | ShadowRoot, component: ComponentType<TProps>, props: TProps): [string, ReactPortal];
|
|
5
8
|
export declare function convertComponent<T extends {
|
package/esm/utils/foreign.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { createElement } from 'react';
|
|
2
2
|
import { createPortal } from 'react-dom';
|
|
3
|
+
export const extensionName = 'piral-extension';
|
|
4
|
+
export const portalName = 'piral-portal';
|
|
5
|
+
export const slotName = 'piral-slot';
|
|
3
6
|
export function attachDomPortal(id, context, element, component, props) {
|
|
4
7
|
const portal = createPortal(createElement(component, props), element);
|
|
5
8
|
context.showPortal(id, portal);
|
|
@@ -17,10 +20,10 @@ export function convertComponent(converter, component) {
|
|
|
17
20
|
return converter(component);
|
|
18
21
|
}
|
|
19
22
|
export function renderInDom(context, element, component, props) {
|
|
20
|
-
const portalId = '
|
|
23
|
+
const portalId = 'pid';
|
|
21
24
|
let parent = element;
|
|
22
25
|
while (parent) {
|
|
23
|
-
if (parent instanceof Element && parent.hasAttribute(portalId)) {
|
|
26
|
+
if (parent instanceof Element && parent.localName === portalName && parent.hasAttribute(portalId)) {
|
|
24
27
|
const id = parent.getAttribute(portalId);
|
|
25
28
|
return attachDomPortal(id, context, element, component, props);
|
|
26
29
|
}
|
package/esm/utils/foreign.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foreign.js","sourceRoot":"","sources":["../../src/utils/foreign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA8B,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,MAAM,UAAU,eAAe,CAC7B,EAAU,EACV,OAA2B,EAC3B,OAAiC,EACjC,SAAgC,EAChC,KAAa;IAEb,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,OAAsB,CAAC,CAAC;IACrF,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,EAAU,EACV,OAAoB,EACpB,OAA2B,EAC3B,OAAiC,EACjC,SAAgC,EAChC,KAAa;IAEb,MAAM,IAAI,GAAG,YAAY,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,OAAsB,CAAC,CAAC;IACnF,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,SAAgD,EAChD,SAAY;IAEZ,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;QACnC,MAAM,IAAI,KAAK,CAAC,uCAAuC,SAAS,CAAC,IAAI,eAAe,CAAC,CAAC;KACvF;IAED,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,OAA2B,EAC3B,OAAiC,EACjC,SAAgC,EAChC,KAAa;IAEb,MAAM,QAAQ,GAAG,
|
|
1
|
+
{"version":3,"file":"foreign.js","sourceRoot":"","sources":["../../src/utils/foreign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA8B,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,MAAM,CAAC,MAAM,aAAa,GAAG,iBAAiB,CAAC;AAC/C,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC;AACzC,MAAM,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC;AAErC,MAAM,UAAU,eAAe,CAC7B,EAAU,EACV,OAA2B,EAC3B,OAAiC,EACjC,SAAgC,EAChC,KAAa;IAEb,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,OAAsB,CAAC,CAAC;IACrF,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,EAAU,EACV,OAAoB,EACpB,OAA2B,EAC3B,OAAiC,EACjC,SAAgC,EAChC,KAAa;IAEb,MAAM,IAAI,GAAG,YAAY,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,OAAsB,CAAC,CAAC;IACnF,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,SAAgD,EAChD,SAAY;IAEZ,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;QACnC,MAAM,IAAI,KAAK,CAAC,uCAAuC,SAAS,CAAC,IAAI,eAAe,CAAC,CAAC;KACvF;IAED,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,OAA2B,EAC3B,OAAiC,EACjC,SAAgC,EAChC,KAAa;IAEb,MAAM,QAAQ,GAAG,KAAK,CAAC;IACvB,IAAI,MAAM,GAAS,OAAO,CAAC;IAE3B,OAAO,MAAM,EAAE;QACb,IAAI,MAAM,YAAY,OAAO,IAAI,MAAM,CAAC,SAAS,KAAK,UAAU,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;YACjG,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACzC,OAAO,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;SAChE;QAED,MAAM,GAAG,MAAM,CAAC,UAAU,IAAK,MAAqB,CAAC,IAAI,CAAC;KAC3D;IAED,OAAO,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -50,7 +50,7 @@ class ForeignComponentContainer extends React.Component {
|
|
|
50
50
|
}
|
|
51
51
|
render() {
|
|
52
52
|
const { $portalId } = this.props;
|
|
53
|
-
return React.createElement("
|
|
53
|
+
return React.createElement("piral-portal", { pid: $portalId, ref: this.setNode });
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
exports.ForeignComponentContainer = ForeignComponentContainer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForeignComponentContainer.js","sourceRoot":"","sources":["../../src/components/ForeignComponentContainer.tsx"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,2CAAoC;
|
|
1
|
+
{"version":3,"file":"ForeignComponentContainer.js","sourceRoot":"","sources":["../../src/components/ForeignComponentContainer.tsx"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,2CAAoC;AAWpC,MAAa,yBAA6B,SAAQ,KAAK,CAAC,SAA4C;IAApG;;QACU,WAAM,GAAyB,EAAE,CAAC;QAGlC,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,IAAA,mBAAM,EAAC,KAAK,CAAC,EAAE;YACzB,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/C,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,IAAA,mBAAM,EAAC,MAAM,CAAC,EAAE;YACzB,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACpD;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,IAAA,mBAAM,EAAC,OAAO,CAAC,EAAE;YAC3B,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3B,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,sCAAc,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,GAAI,CAAC;IAC7D,CAAC;CACF;AAzDD,8DAyDC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { NavigationApi } from '../types';
|
|
3
|
+
export declare function useRouterContext(): import("react-router").RouteComponentProps<{}, import("react-router").StaticContext, unknown>;
|
|
4
|
+
export declare function useCurrentNavigation(): void;
|
|
5
|
+
export declare function createRedirect(to: string): () => JSX.Element;
|
|
6
|
+
export declare function createNavigation(): NavigationApi;
|