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.
Files changed (48) hide show
  1. package/app.codegen +6 -135
  2. package/esm/components/ForeignComponentContainer.js +1 -1
  3. package/esm/components/ForeignComponentContainer.js.map +1 -1
  4. package/esm/defaults/navigator_v5.d.ts +6 -0
  5. package/esm/defaults/navigator_v5.js +77 -0
  6. package/esm/defaults/navigator_v5.js.map +1 -0
  7. package/esm/defaults/navigator_v6.d.ts +6 -0
  8. package/esm/defaults/navigator_v6.js +73 -0
  9. package/esm/defaults/navigator_v6.js.map +1 -0
  10. package/esm/modules/element.js +46 -2
  11. package/esm/modules/element.js.map +1 -1
  12. package/esm/types/navigation.d.ts +6 -2
  13. package/esm/utils/extension.d.ts +1 -1
  14. package/esm/utils/extension.js +1 -1
  15. package/esm/utils/extension.js.map +1 -1
  16. package/esm/utils/foreign.d.ts +3 -0
  17. package/esm/utils/foreign.js +5 -2
  18. package/esm/utils/foreign.js.map +1 -1
  19. package/lib/components/ForeignComponentContainer.js +1 -1
  20. package/lib/components/ForeignComponentContainer.js.map +1 -1
  21. package/lib/defaults/navigator_v5.d.ts +6 -0
  22. package/lib/defaults/navigator_v5.js +84 -0
  23. package/lib/defaults/navigator_v5.js.map +1 -0
  24. package/lib/defaults/navigator_v6.d.ts +6 -0
  25. package/lib/defaults/navigator_v6.js +80 -0
  26. package/lib/defaults/navigator_v6.js.map +1 -0
  27. package/lib/modules/element.js +45 -1
  28. package/lib/modules/element.js.map +1 -1
  29. package/lib/types/navigation.d.ts +6 -2
  30. package/lib/utils/extension.d.ts +1 -1
  31. package/lib/utils/extension.js +1 -1
  32. package/lib/utils/extension.js.map +1 -1
  33. package/lib/utils/foreign.d.ts +3 -0
  34. package/lib/utils/foreign.js +6 -3
  35. package/lib/utils/foreign.js.map +1 -1
  36. package/package.json +5 -4
  37. package/src/components/ForeignComponentContainer.test.tsx +1 -1
  38. package/src/components/ForeignComponentContainer.tsx +2 -1
  39. package/src/defaults/navigator_v5.tsx +96 -0
  40. package/src/defaults/navigator_v6.tsx +93 -0
  41. package/src/modules/element.test.ts +0 -10
  42. package/src/modules/element.ts +60 -2
  43. package/src/types/api.ts +1 -0
  44. package/src/types/navigation.ts +6 -2
  45. package/src/utils/extension.test.tsx +1 -1
  46. package/src/utils/extension.tsx +3 -2
  47. package/src/utils/foreign.test.ts +5 -5
  48. package/src/utils/foreign.ts +6 -2
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createNavigation = exports.createRedirect = exports.useCurrentNavigation = exports.useRouterContext = void 0;
4
+ const React = require("react");
5
+ const react_router_1 = require("react-router");
6
+ let _nav;
7
+ const _noop = () => { };
8
+ function useRouterContext() {
9
+ return React.useContext(react_router_1.__RouterContext);
10
+ }
11
+ exports.useRouterContext = useRouterContext;
12
+ function useCurrentNavigation() {
13
+ const ctx = useRouterContext();
14
+ const location = (0, react_router_1.useLocation)();
15
+ React.useEffect(() => {
16
+ if (_nav) {
17
+ window.dispatchEvent(new CustomEvent('piral-navigate', {
18
+ detail: {
19
+ location,
20
+ },
21
+ }));
22
+ }
23
+ }, [location]);
24
+ React.useEffect(() => {
25
+ _nav = ctx.history;
26
+ return () => {
27
+ _nav = undefined;
28
+ };
29
+ }, []);
30
+ }
31
+ exports.useCurrentNavigation = useCurrentNavigation;
32
+ function createRedirect(to) {
33
+ return () => React.createElement(react_router_1.Redirect, { to: to });
34
+ }
35
+ exports.createRedirect = createRedirect;
36
+ function createNavigation() {
37
+ const enhance = (location, action) => ({
38
+ action,
39
+ location: Object.assign({ get href() {
40
+ return _nav.createHref(location);
41
+ } }, location),
42
+ });
43
+ return {
44
+ get path() {
45
+ if (_nav) {
46
+ return _nav.location.pathname;
47
+ }
48
+ return location.pathname;
49
+ },
50
+ push(target, state) {
51
+ if (_nav) {
52
+ _nav.push(target, state);
53
+ }
54
+ },
55
+ replace(target, state) {
56
+ if (_nav) {
57
+ _nav.replace(target, state);
58
+ }
59
+ },
60
+ go(n) {
61
+ if (_nav) {
62
+ _nav.go(n);
63
+ }
64
+ },
65
+ block(blocker) {
66
+ if (!_nav) {
67
+ return _noop;
68
+ }
69
+ return _nav.block((location, action) => blocker(enhance(location, action)));
70
+ },
71
+ listen(listener) {
72
+ const handler = (e) => listener(enhance(e.detail, _nav.action));
73
+ window.addEventListener('piral-navigate', handler);
74
+ return () => {
75
+ window.removeEventListener('piral-navigate', handler);
76
+ };
77
+ },
78
+ router: {
79
+ history: _nav,
80
+ },
81
+ };
82
+ }
83
+ exports.createNavigation = createNavigation;
84
+ //# 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,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createNavigation = exports.createRedirect = exports.useCurrentNavigation = exports.useRouterContext = void 0;
4
+ const React = require("react");
5
+ //@ts-ignore
6
+ const react_router_1 = require("react-router");
7
+ let _nav;
8
+ const _noop = () => { };
9
+ function useRouterContext() {
10
+ return React.useContext(react_router_1.UNSAFE_NavigationContext);
11
+ }
12
+ exports.useRouterContext = useRouterContext;
13
+ function useCurrentNavigation() {
14
+ const ctx = useRouterContext();
15
+ const location = (0, react_router_1.useLocation)();
16
+ React.useEffect(() => {
17
+ if (_nav) {
18
+ window.dispatchEvent(new CustomEvent('piral-navigate', {
19
+ detail: {
20
+ location,
21
+ },
22
+ }));
23
+ }
24
+ }, [location]);
25
+ React.useEffect(() => {
26
+ _nav = ctx.navigator;
27
+ return () => {
28
+ _nav = undefined;
29
+ };
30
+ }, []);
31
+ }
32
+ exports.useCurrentNavigation = useCurrentNavigation;
33
+ function createRedirect(to) {
34
+ return () => React.createElement(react_router_1.Navigate, { to: to });
35
+ }
36
+ exports.createRedirect = createRedirect;
37
+ function createNavigation() {
38
+ const enhance = (info) => (Object.assign(Object.assign({}, info), { location: Object.assign({ get href() {
39
+ return _nav.createHref(info.location);
40
+ } }, info.location) }));
41
+ return {
42
+ get path() {
43
+ if (_nav) {
44
+ return _nav.location.pathname;
45
+ }
46
+ return location.pathname;
47
+ },
48
+ push(target, state) {
49
+ if (_nav) {
50
+ _nav.push(target, state);
51
+ }
52
+ },
53
+ replace(target, state) {
54
+ if (_nav) {
55
+ _nav.replace(target, state);
56
+ }
57
+ },
58
+ go(n) {
59
+ if (_nav) {
60
+ _nav.go(n);
61
+ }
62
+ },
63
+ block(blocker) {
64
+ if (!_nav) {
65
+ return _noop;
66
+ }
67
+ return _nav.block((transition) => blocker(enhance(transition)));
68
+ },
69
+ listen(listener) {
70
+ const handler = (e) => listener(enhance(e.detail));
71
+ window.addEventListener('piral-navigate', handler);
72
+ return () => {
73
+ window.removeEventListener('piral-navigate', handler);
74
+ };
75
+ },
76
+ router: _nav,
77
+ };
78
+ }
79
+ exports.createNavigation = createNavigation;
80
+ //# sourceMappingURL=navigator_v6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigator_v6.js","sourceRoot":"","sources":["../../src/defaults/navigator_v6.tsx"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,YAAY;AACZ,+CAAgG;AAGhG,IAAI,IAAS,CAAC;AACd,MAAM,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AAEvB,SAAgB,gBAAgB;IAC9B,OAAO,KAAK,CAAC,UAAU,CAAC,uCAAa,CAAC,CAAC;AACzC,CAAC;AAFD,4CAEC;AAED,SAAgB,oBAAoB;IAClC,MAAM,GAAG,GAAQ,gBAAgB,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAA,0BAAW,GAAE,CAAC;IAE/B,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,IAAI,EAAE;YACR,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAAC,gBAAgB,EAAE;gBAChC,MAAM,EAAE;oBACN,QAAQ;iBACT;aACF,CAAC,CACH,CAAC;SACH;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC;QAErB,OAAO,GAAG,EAAE;YACV,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAvBD,oDAuBC;AAED,SAAgB,cAAc,CAAC,EAAU;IACvC,OAAO,GAAG,EAAE,CAAC,oBAAC,uBAAQ,IAAC,EAAE,EAAE,EAAE,GAAI,CAAC;AACpC,CAAC;AAFD,wCAEC;AAED,SAAgB,gBAAgB;IAC9B,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,iCACrB,IAAI,KACP,QAAQ,kBACN,IAAI,IAAI;gBACN,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxC,CAAC,IACE,IAAI,CAAC,QAAQ,KAElB,CAAC;IAEH,OAAO;QACL,IAAI,IAAI;YACN,IAAI,IAAI,EAAE;gBACR,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;aAC/B;YAED,OAAO,QAAQ,CAAC,QAAQ,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,KAAK;YAChB,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;QACD,OAAO,CAAC,MAAM,EAAE,KAAK;YACnB,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;aAC7B;QACH,CAAC;QACD,EAAE,CAAC,CAAC;YACF,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACZ;QACH,CAAC;QACD,KAAK,CAAC,OAAO;YACX,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO,KAAK,CAAC;aACd;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,CAAC,QAAQ;YACb,MAAM,OAAO,GAAG,CAAC,CAAc,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAEhE,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YAEnD,OAAO,GAAG,EAAE;gBACV,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YACxD,CAAC,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,IAAI;KACb,CAAC;AACJ,CAAC;AAnDD,4CAmDC"}
@@ -4,6 +4,16 @@ exports.renderElement = void 0;
4
4
  const components_1 = require("../components");
5
5
  const utils_1 = require("../utils");
6
6
  if (typeof window !== 'undefined' && 'customElements' in window) {
7
+ /**
8
+ * This is a nice abstraction allowing anyone to actually use the extension system
9
+ * brought by Piral. Not all props of the extension system are actually exposed.
10
+ *
11
+ * Usage:
12
+ *
13
+ * ```
14
+ * <piral-extension name="my-ext-name"></piral-extension>
15
+ * ```
16
+ */
7
17
  class PiralExtension extends HTMLElement {
8
18
  constructor() {
9
19
  super(...arguments);
@@ -38,6 +48,7 @@ if (typeof window !== 'undefined' && 'customElements' in window) {
38
48
  this.update(this.props);
39
49
  }
40
50
  connectedCallback() {
51
+ this.style.display = 'contents';
41
52
  if (this.isConnected) {
42
53
  this.dispatchEvent(new CustomEvent('render-html', {
43
54
  bubbles: true,
@@ -67,7 +78,40 @@ if (typeof window !== 'undefined' && 'customElements' in window) {
67
78
  return ['name', 'params'];
68
79
  }
69
80
  }
70
- customElements.define('piral-extension', PiralExtension);
81
+ customElements.define(utils_1.extensionName, PiralExtension);
82
+ /**
83
+ * This is a boundary to host elements from other frameworks - effectively vanishing
84
+ * at runtime.
85
+ *
86
+ * Usage:
87
+ *
88
+ * ```
89
+ * <piral-portal pid="host-1234"></piral-portal>
90
+ * ```
91
+ */
92
+ class PiralPortal extends HTMLElement {
93
+ connectedCallback() {
94
+ this.style.display = 'contents';
95
+ }
96
+ }
97
+ customElements.define(utils_1.portalName, PiralPortal);
98
+ /**
99
+ * This is a virtual element to aggregate rendering from other frameworks, mostly
100
+ * used like piral-portal, but without context-hosting capabilities. This would
101
+ * be used exclusively within a foreign framework, not from Piral to initiate.
102
+ *
103
+ * Usage:
104
+ *
105
+ * ```
106
+ * <piral-slot></piral-slot>
107
+ * ```
108
+ */
109
+ class PiralSlot extends HTMLElement {
110
+ connectedCallback() {
111
+ this.style.display = 'contents';
112
+ }
113
+ }
114
+ customElements.define(utils_1.slotName, PiralSlot);
71
115
  }
72
116
  function renderElement(context, element, props) {
73
117
  if (typeof window !== 'undefined') {
@@ -1 +1 @@
1
- {"version":3,"file":"element.js","sourceRoot":"","sources":["../../src/modules/element.ts"],"names":[],"mappings":"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"}
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: string;
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
  */
@@ -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.
@@ -13,7 +13,7 @@ const SlotCarrier = ({ nodes }) => {
13
13
  return () => removeAll(nodes);
14
14
  }, [nodes]);
15
15
  if (nodes.length) {
16
- return React.createElement("slot", { ref: host });
16
+ return React.createElement("piral-slot", { ref: host });
17
17
  }
18
18
  return null;
19
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../src/utils/extension.tsx"],"names":[],"mappings":";;;AAAA,+BAA+B;AAG/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,8BAAM,GAAG,EAAE,IAAI,GAAI,CAAC;KAC5B;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;;GAIG;AACH,SAAgB,WAAW,CAAI,SAAiC;IAC9D,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAC,SAAS,oBAAK,KAAK,CAAC,MAAM,EAAI,CAAC;AACpD,CAAC;AAFD,kCAEC;AAED;;;;;;GAMG;AACH,SAAgB,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;AAJD,0CAIC"}
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../src/utils/extension.tsx"],"names":[],"mappings":";;;AAAA,+BAA+B;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,SAAgB,WAAW,CAAI,SAAiC;IAC9D,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAC,SAAS,oBAAK,KAAK,CAAC,MAAM,EAAI,CAAC;AACpD,CAAC;AAFD,kCAEC;AAED;;;;;;GAMG;AACH,SAAgB,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;AAJD,0CAIC"}
@@ -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 {
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renderInDom = exports.convertComponent = exports.changeDomPortal = exports.attachDomPortal = void 0;
3
+ exports.renderInDom = exports.convertComponent = exports.changeDomPortal = exports.attachDomPortal = exports.slotName = exports.portalName = exports.extensionName = void 0;
4
4
  const react_1 = require("react");
5
5
  const react_dom_1 = require("react-dom");
6
+ exports.extensionName = 'piral-extension';
7
+ exports.portalName = 'piral-portal';
8
+ exports.slotName = 'piral-slot';
6
9
  function attachDomPortal(id, context, element, component, props) {
7
10
  const portal = (0, react_dom_1.createPortal)((0, react_1.createElement)(component, props), element);
8
11
  context.showPortal(id, portal);
@@ -23,10 +26,10 @@ function convertComponent(converter, component) {
23
26
  }
24
27
  exports.convertComponent = convertComponent;
25
28
  function renderInDom(context, element, component, props) {
26
- const portalId = 'data-portal-id';
29
+ const portalId = 'pid';
27
30
  let parent = element;
28
31
  while (parent) {
29
- if (parent instanceof Element && parent.hasAttribute(portalId)) {
32
+ if (parent instanceof Element && parent.localName === exports.portalName && parent.hasAttribute(portalId)) {
30
33
  const id = parent.getAttribute(portalId);
31
34
  return attachDomPortal(id, context, element, component, props);
32
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"foreign.js","sourceRoot":"","sources":["../../src/utils/foreign.ts"],"names":[],"mappings":";;;AAAA,iCAAkE;AAClE,yCAAyC;AAGzC,SAAgB,eAAe,CAC7B,EAAU,EACV,OAA2B,EAC3B,OAAiC,EACjC,SAAgC,EAChC,KAAa;IAEb,MAAM,MAAM,GAAG,IAAA,wBAAY,EAAC,IAAA,qBAAa,EAAC,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;AAVD,0CAUC;AAED,SAAgB,eAAe,CAC7B,EAAU,EACV,OAAoB,EACpB,OAA2B,EAC3B,OAAiC,EACjC,SAAgC,EAChC,KAAa;IAEb,MAAM,IAAI,GAAG,IAAA,wBAAY,EAAC,IAAA,qBAAa,EAAC,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;AAXD,0CAWC;AAED,SAAgB,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;AATD,4CASC;AAED,SAAgB,WAAW,CACzB,OAA2B,EAC3B,OAAiC,EACjC,SAAgC,EAChC,KAAa;IAEb,MAAM,QAAQ,GAAG,gBAAgB,CAAC;IAClC,IAAI,MAAM,GAAS,OAAO,CAAC;IAE3B,OAAO,MAAM,EAAE;QACb,IAAI,MAAM,YAAY,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;YAC9D,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;AAnBD,kCAmBC"}
1
+ {"version":3,"file":"foreign.js","sourceRoot":"","sources":["../../src/utils/foreign.ts"],"names":[],"mappings":";;;AAAA,iCAAkE;AAClE,yCAAyC;AAG5B,QAAA,aAAa,GAAG,iBAAiB,CAAC;AAClC,QAAA,UAAU,GAAG,cAAc,CAAC;AAC5B,QAAA,QAAQ,GAAG,YAAY,CAAC;AAErC,SAAgB,eAAe,CAC7B,EAAU,EACV,OAA2B,EAC3B,OAAiC,EACjC,SAAgC,EAChC,KAAa;IAEb,MAAM,MAAM,GAAG,IAAA,wBAAY,EAAC,IAAA,qBAAa,EAAC,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;AAVD,0CAUC;AAED,SAAgB,eAAe,CAC7B,EAAU,EACV,OAAoB,EACpB,OAA2B,EAC3B,OAAiC,EACjC,SAAgC,EAChC,KAAa;IAEb,MAAM,IAAI,GAAG,IAAA,wBAAY,EAAC,IAAA,qBAAa,EAAC,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;AAXD,0CAWC;AAED,SAAgB,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;AATD,4CASC;AAED,SAAgB,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,kBAAU,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;AAnBD,kCAmBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "piral-core",
3
- "version": "0.15.0-beta.4633",
3
+ "version": "0.15.0-beta.4672",
4
4
  "description": "The core library for creating a Piral instance.",
5
5
  "keywords": [
6
6
  "portal",
@@ -70,8 +70,9 @@
70
70
  "test": "echo \"Error: run tests from root\" && exit 1"
71
71
  },
72
72
  "dependencies": {
73
- "piral-base": "0.15.0-beta.4633",
74
- "piral-debug-utils": "0.15.0-beta.4633",
73
+ "enhanced-resolve": "^5.10.0",
74
+ "piral-base": "0.15.0-beta.4672",
75
+ "piral-debug-utils": "0.15.0-beta.4672",
75
76
  "zustand": "^3.0.0"
76
77
  },
77
78
  "peerDependencies": {
@@ -97,5 +98,5 @@
97
98
  "react-router-dom",
98
99
  "tslib"
99
100
  ],
100
- "gitHead": "96b950f26e9673595f68518103508dfc76001761"
101
+ "gitHead": "cd1026b70c90290fa5ba3f9b86c038eb852595be"
101
102
  }
@@ -108,7 +108,7 @@ describe('ForeignComponentContainer component', () => {
108
108
  );
109
109
  await act(resolveAfter);
110
110
  expect(mount).toHaveBeenCalled();
111
- const node = document.querySelector('[data-portal-id=foo]');
111
+ const node = document.querySelector('piral-portal[pid=foo]');
112
112
  expect(renderHtmlExtension).not.toHaveBeenCalled();
113
113
  node?.dispatchEvent(new CustomEvent('render-html', { detail: {} }));
114
114
  await act(resolveAfter);
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { isfunc } from 'piral-base';
3
+ import type {} from 'piral-debug-utils';
3
4
  import type { ForeignComponent, BaseComponentProps, ComponentContext } from '../types';
4
5
 
5
6
  interface ForeignComponentContainerProps<T> {
@@ -64,6 +65,6 @@ export class ForeignComponentContainer<T> extends React.Component<ForeignCompone
64
65
 
65
66
  render() {
66
67
  const { $portalId } = this.props;
67
- return <div data-portal-id={$portalId} ref={this.setNode} />;
68
+ return <piral-portal pid={$portalId} ref={this.setNode} />;
68
69
  }
69
70
  }
@@ -0,0 +1,96 @@
1
+ import * as React from 'react';
2
+ import type { History, Location, Action } from 'history';
3
+ import { __RouterContext as RouterContext, Redirect, useLocation } from 'react-router';
4
+ import { NavigationApi } from '../types';
5
+
6
+ let _nav: History;
7
+ const _noop = () => {};
8
+
9
+ export function useRouterContext() {
10
+ return React.useContext(RouterContext);
11
+ }
12
+
13
+ export function useCurrentNavigation() {
14
+ const ctx = useRouterContext();
15
+ const location = useLocation();
16
+
17
+ React.useEffect(() => {
18
+ if (_nav) {
19
+ window.dispatchEvent(
20
+ new CustomEvent('piral-navigate', {
21
+ detail: {
22
+ location,
23
+ },
24
+ }),
25
+ );
26
+ }
27
+ }, [location]);
28
+
29
+ React.useEffect(() => {
30
+ _nav = ctx.history;
31
+
32
+ return () => {
33
+ _nav = undefined;
34
+ };
35
+ }, []);
36
+ }
37
+
38
+ export function createRedirect(to: string) {
39
+ return () => <Redirect to={to} />;
40
+ }
41
+
42
+ export function createNavigation(): NavigationApi {
43
+ const enhance = (location: Location, action: Action) => ({
44
+ action,
45
+ location: {
46
+ get href() {
47
+ return _nav.createHref(location);
48
+ },
49
+ ...location,
50
+ },
51
+ });
52
+
53
+ return {
54
+ get path() {
55
+ if (_nav) {
56
+ return _nav.location.pathname;
57
+ }
58
+
59
+ return location.pathname;
60
+ },
61
+ push(target, state) {
62
+ if (_nav) {
63
+ _nav.push(target, state);
64
+ }
65
+ },
66
+ replace(target, state) {
67
+ if (_nav) {
68
+ _nav.replace(target, state);
69
+ }
70
+ },
71
+ go(n) {
72
+ if (_nav) {
73
+ _nav.go(n);
74
+ }
75
+ },
76
+ block(blocker) {
77
+ if (!_nav) {
78
+ return _noop;
79
+ }
80
+
81
+ return _nav.block((location, action) => blocker(enhance(location, action)));
82
+ },
83
+ listen(listener) {
84
+ const handler = (e: CustomEvent) => listener(enhance(e.detail, _nav.action));
85
+
86
+ window.addEventListener('piral-navigate', handler);
87
+
88
+ return () => {
89
+ window.removeEventListener('piral-navigate', handler);
90
+ };
91
+ },
92
+ router: {
93
+ history: _nav,
94
+ },
95
+ };
96
+ }
@@ -0,0 +1,93 @@
1
+ import * as React from 'react';
2
+ //@ts-ignore
3
+ import { UNSAFE_NavigationContext as RouterContext, Navigate, useLocation } from 'react-router';
4
+ import { NavigationApi } from '../types';
5
+
6
+ let _nav: any;
7
+ const _noop = () => {};
8
+
9
+ export function useRouterContext() {
10
+ return React.useContext(RouterContext);
11
+ }
12
+
13
+ export function useCurrentNavigation() {
14
+ const ctx: any = useRouterContext();
15
+ const location = useLocation();
16
+
17
+ React.useEffect(() => {
18
+ if (_nav) {
19
+ window.dispatchEvent(
20
+ new CustomEvent('piral-navigate', {
21
+ detail: {
22
+ location,
23
+ },
24
+ }),
25
+ );
26
+ }
27
+ }, [location]);
28
+
29
+ React.useEffect(() => {
30
+ _nav = ctx.navigator;
31
+
32
+ return () => {
33
+ _nav = undefined;
34
+ };
35
+ }, []);
36
+ }
37
+
38
+ export function createRedirect(to: string) {
39
+ return () => <Navigate to={to} />;
40
+ }
41
+
42
+ export function createNavigation(): NavigationApi {
43
+ const enhance = (info) => ({
44
+ ...info,
45
+ location: {
46
+ get href() {
47
+ return _nav.createHref(info.location);
48
+ },
49
+ ...info.location,
50
+ },
51
+ });
52
+
53
+ return {
54
+ get path() {
55
+ if (_nav) {
56
+ return _nav.location.pathname;
57
+ }
58
+
59
+ return location.pathname;
60
+ },
61
+ push(target, state) {
62
+ if (_nav) {
63
+ _nav.push(target, state);
64
+ }
65
+ },
66
+ replace(target, state) {
67
+ if (_nav) {
68
+ _nav.replace(target, state);
69
+ }
70
+ },
71
+ go(n) {
72
+ if (_nav) {
73
+ _nav.go(n);
74
+ }
75
+ },
76
+ block(blocker) {
77
+ if (!_nav) {
78
+ return _noop;
79
+ }
80
+ return _nav.block((transition) => blocker(enhance(transition)));
81
+ },
82
+ listen(listener) {
83
+ const handler = (e: CustomEvent) => listener(enhance(e.detail));
84
+
85
+ window.addEventListener('piral-navigate', handler);
86
+
87
+ return () => {
88
+ window.removeEventListener('piral-navigate', handler);
89
+ };
90
+ },
91
+ router: _nav,
92
+ };
93
+ }
@@ -3,16 +3,6 @@ import { createListener } from 'piral-base';
3
3
  import { createActions } from '../state';
4
4
  import { renderElement } from './element';
5
5
 
6
- declare global {
7
- interface HTMLElementTagNameMap {
8
- "piral-extension": HTMLElement & {
9
- params: any;
10
- name: string;
11
- empty: any;
12
- };
13
- }
14
- }
15
-
16
6
  function createMockContext(): [any, any] {
17
7
  const state: any = create(() => ({
18
8
  portals: {},