piral-core 1.6.0-beta.7142 → 1.6.0-beta.7147

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.
@@ -2,6 +2,9 @@ import * as React from 'react';
2
2
  import { createPortal } from 'react-dom';
3
3
  import { useGlobalStateContext } from './hooks';
4
4
  import { renderElement } from './modules';
5
+ const renderHtmlEvent = 'render-html';
6
+ const renderContentEvent = 'render-content';
7
+ const forwardEventEvent = 'forward-event';
5
8
  export const RootListener = () => {
6
9
  const context = useGlobalStateContext();
7
10
  React.useLayoutEffect(() => {
@@ -21,11 +24,18 @@ export const RootListener = () => {
21
24
  context.showPortal(portalId, portal);
22
25
  target.dispose = dispose;
23
26
  };
24
- document.body.addEventListener('render-html', renderHtml, false);
25
- window.addEventListener('render-content', renderContent, false);
27
+ const forwardEvent = (ev) => {
28
+ ev.stopPropagation();
29
+ const { type, args } = ev.detail;
30
+ context.emit(type, args);
31
+ };
32
+ document.body.addEventListener(renderHtmlEvent, renderHtml, false);
33
+ document.body.addEventListener(forwardEventEvent, forwardEvent, false);
34
+ window.addEventListener(renderContentEvent, renderContent, false);
26
35
  return () => {
27
- document.body.removeEventListener('render-html', renderHtml, false);
28
- window.removeEventListener('render-content', renderContent, false);
36
+ document.body.removeEventListener(renderHtmlEvent, renderHtml, false);
37
+ document.body.removeEventListener(forwardEventEvent, forwardEvent, false);
38
+ window.removeEventListener(renderContentEvent, renderContent, false);
29
39
  };
30
40
  }
31
41
  }, [context]);
@@ -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,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,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,UAAU,GAAG,CAAC,EAAe,EAAE,EAAE;gBACrC,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,MAAM,aAAa,GAAG,CAAC,EAAe,EAAE,EAAE;gBACxC,EAAE,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;gBAChD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC7C,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC3D,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACrC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;YAC3B,CAAC,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YACjE,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;YAEhE,OAAO,GAAG,EAAE;gBACV,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;gBACpE,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;YACrE,CAAC,CAAC;SACH;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
1
+ {"version":3,"file":"RootListener.js","sourceRoot":"","sources":["../src/RootListener.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,eAAe,GAAG,aAAa,CAAC;AACtC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAC5C,MAAM,iBAAiB,GAAG,eAAe,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,UAAU,GAAG,CAAC,EAAe,EAAE,EAAE;gBACrC,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,MAAM,aAAa,GAAG,CAAC,EAAe,EAAE,EAAE;gBACxC,EAAE,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;gBAChD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC7C,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC3D,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACrC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;YAC3B,CAAC,CAAC;YACF,MAAM,YAAY,GAAG,CAAC,EAAe,EAAE,EAAE;gBACvC,EAAE,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3B,CAAC,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YACnE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;YAElE,OAAO,GAAG,EAAE;gBACV,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;gBACtE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;gBAC1E,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;YACvE,CAAC,CAAC;SACH;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
@@ -15,7 +15,7 @@ export function ExtensionSlot(props) {
15
15
  const extensions = useGlobalState((s) => s.registry.extensions[name] || none);
16
16
  const isEmpty = extensions.length === 0 && isfunc(empty);
17
17
  const content = isEmpty
18
- ? [defaultRender(empty(), 'empty')]
18
+ ? [defaultRender(empty(params), 'empty')]
19
19
  : order(extensions).map(({ component: Component, reference, defaults = {} }, i) => (React.createElement(Component, { key: `${reference?.displayName || '_'}${i}`, children: children, params: {
20
20
  ...defaults,
21
21
  ...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;AAC1C,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAG/C,SAAS,YAAY,CAAC,UAAwC;IAC5D,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAmB,KAA4B;IAC1E,MAAM,EACJ,IAAI,EACJ,MAAM,GAAG,aAAa,EACtB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,gBAAgB,GAAG,KAAK,EACxB,KAAK,GAAG,YAAY,GACrB,GAAG,KAAK,CAAC;IACV,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,OAAO;QACrB,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAC/E,oBAAC,SAAS,IACR,GAAG,EAAE,GAAG,SAAS,EAAE,WAAW,IAAI,GAAG,GAAG,CAAC,EAAE,EAC3C,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE;gBACN,GAAG,QAAQ;gBACX,GAAG,MAAM;aACV,GACD,CACH,CAAC,CAAC;IAEP,IAAI,OAAO,IAAI,gBAAgB,EAAE;QAC/B,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;KACnB;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,aAAa,CAAC,WAAW,GAAG,eAAe,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,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAG/C,SAAS,YAAY,CAAC,UAAwC;IAC5D,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAmB,KAA4B;IAC1E,MAAM,EACJ,IAAI,EACJ,MAAM,GAAG,aAAa,EACtB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,gBAAgB,GAAG,KAAK,EACxB,KAAK,GAAG,YAAY,GACrB,GAAG,KAAK,CAAC;IACV,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,OAAO;QACrB,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAC/E,oBAAC,SAAS,IACR,GAAG,EAAE,GAAG,SAAS,EAAE,WAAW,IAAI,GAAG,GAAG,CAAC,EAAE,EAC3C,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE;gBACN,GAAG,QAAQ;gBACX,GAAG,MAAM;aACV,GACD,CACH,CAAC,CAAC;IAEP,IAAI,OAAO,IAAI,gBAAgB,EAAE;QAC/B,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;KACnB;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,aAAa,CAAC,WAAW,GAAG,eAAe,CAAC"}
@@ -18,7 +18,7 @@ export interface BaseExtensionSlotProps<TName, TParams> {
18
18
  * Defines what should be rendered when no components are available
19
19
  * for the specified extension.
20
20
  */
21
- empty?(): ReactNode;
21
+ empty?(props: TParams): ReactNode;
22
22
  /**
23
23
  * Determines if the `render` function should be called in case no
24
24
  * components are available for the specified extension.
@@ -6,6 +6,9 @@ const React = tslib_1.__importStar(require("react"));
6
6
  const react_dom_1 = require("react-dom");
7
7
  const hooks_1 = require("./hooks");
8
8
  const modules_1 = require("./modules");
9
+ const renderHtmlEvent = 'render-html';
10
+ const renderContentEvent = 'render-content';
11
+ const forwardEventEvent = 'forward-event';
9
12
  const RootListener = () => {
10
13
  const context = (0, hooks_1.useGlobalStateContext)();
11
14
  React.useLayoutEffect(() => {
@@ -25,11 +28,18 @@ const RootListener = () => {
25
28
  context.showPortal(portalId, portal);
26
29
  target.dispose = dispose;
27
30
  };
28
- document.body.addEventListener('render-html', renderHtml, false);
29
- window.addEventListener('render-content', renderContent, false);
31
+ const forwardEvent = (ev) => {
32
+ ev.stopPropagation();
33
+ const { type, args } = ev.detail;
34
+ context.emit(type, args);
35
+ };
36
+ document.body.addEventListener(renderHtmlEvent, renderHtml, false);
37
+ document.body.addEventListener(forwardEventEvent, forwardEvent, false);
38
+ window.addEventListener(renderContentEvent, renderContent, false);
30
39
  return () => {
31
- document.body.removeEventListener('render-html', renderHtml, false);
32
- window.removeEventListener('render-content', renderContent, false);
40
+ document.body.removeEventListener(renderHtmlEvent, renderHtml, false);
41
+ document.body.removeEventListener(forwardEventEvent, forwardEvent, false);
42
+ window.removeEventListener(renderContentEvent, renderContent, false);
33
43
  };
34
44
  }
35
45
  }, [context]);
@@ -1 +1 @@
1
- {"version":3,"file":"RootListener.js","sourceRoot":"","sources":["../src/RootListener.tsx"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAC/B,yCAAyC;AACzC,mCAAgD;AAChD,uCAA0C;AAEnC,MAAM,YAAY,GAAa,GAAG,EAAE;IACzC,MAAM,OAAO,GAAG,IAAA,6BAAqB,GAAE,CAAC;IAExC,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE;QACzB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC,MAAM,UAAU,GAAG,CAAC,EAAe,EAAE,EAAE;gBACrC,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,IAAA,uBAAa,EAAC,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,MAAM,aAAa,GAAG,CAAC,EAAe,EAAE,EAAE;gBACxC,EAAE,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;gBAChD,MAAM,MAAM,GAAG,IAAA,wBAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC7C,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC3D,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACrC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;YAC3B,CAAC,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YACjE,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;YAEhE,OAAO,GAAG,EAAE;gBACV,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;gBACpE,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;YACrE,CAAC,CAAC;SACH;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AA/BW,QAAA,YAAY,gBA+BvB"}
1
+ {"version":3,"file":"RootListener.js","sourceRoot":"","sources":["../src/RootListener.tsx"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAC/B,yCAAyC;AACzC,mCAAgD;AAChD,uCAA0C;AAE1C,MAAM,eAAe,GAAG,aAAa,CAAC;AACtC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAC5C,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEnC,MAAM,YAAY,GAAa,GAAG,EAAE;IACzC,MAAM,OAAO,GAAG,IAAA,6BAAqB,GAAE,CAAC;IAExC,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE;QACzB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC,MAAM,UAAU,GAAG,CAAC,EAAe,EAAE,EAAE;gBACrC,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,IAAA,uBAAa,EAAC,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,MAAM,aAAa,GAAG,CAAC,EAAe,EAAE,EAAE;gBACxC,EAAE,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;gBAChD,MAAM,MAAM,GAAG,IAAA,wBAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC7C,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC3D,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACrC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;YAC3B,CAAC,CAAC;YACF,MAAM,YAAY,GAAG,CAAC,EAAe,EAAE,EAAE;gBACvC,EAAE,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3B,CAAC,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YACnE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;YAElE,OAAO,GAAG,EAAE;gBACV,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;gBACtE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;gBAC1E,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;YACvE,CAAC,CAAC;SACH;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAtCW,QAAA,YAAY,gBAsCvB"}
@@ -19,7 +19,7 @@ function ExtensionSlot(props) {
19
19
  const extensions = (0, hooks_1.useGlobalState)((s) => s.registry.extensions[name] || utils_1.none);
20
20
  const isEmpty = extensions.length === 0 && (0, piral_base_1.isfunc)(empty);
21
21
  const content = isEmpty
22
- ? [(0, utils_1.defaultRender)(empty(), 'empty')]
22
+ ? [(0, utils_1.defaultRender)(empty(params), 'empty')]
23
23
  : order(extensions).map(({ component: Component, reference, defaults = {} }, i) => (React.createElement(Component, { key: `${reference?.displayName || '_'}${i}`, children: children, params: {
24
24
  ...defaults,
25
25
  ...params,
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionSlot.js","sourceRoot":"","sources":["../../src/components/ExtensionSlot.tsx"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAC/B,2CAAoC;AACpC,oCAA0C;AAC1C,oCAA+C;AAG/C,SAAS,YAAY,CAAC,UAAwC;IAC5D,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAmB,KAA4B;IAC1E,MAAM,EACJ,IAAI,EACJ,MAAM,GAAG,qBAAa,EACtB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,gBAAgB,GAAG,KAAK,EACxB,KAAK,GAAG,YAAY,GACrB,GAAG,KAAK,CAAC;IACV,MAAM,UAAU,GAAG,IAAA,sBAAc,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,YAAI,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,IAAA,mBAAM,EAAC,KAAK,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,OAAO;QACrB,CAAC,CAAC,CAAC,IAAA,qBAAa,EAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAC/E,oBAAC,SAAS,IACR,GAAG,EAAE,GAAG,SAAS,EAAE,WAAW,IAAI,GAAG,GAAG,CAAC,EAAE,EAC3C,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE;gBACN,GAAG,QAAQ;gBACX,GAAG,MAAM;aACV,GACD,CACH,CAAC,CAAC;IAEP,IAAI,OAAO,IAAI,gBAAgB,EAAE;QAC/B,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;KACnB;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AA9BD,sCA8BC;AAED,aAAa,CAAC,WAAW,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"ExtensionSlot.js","sourceRoot":"","sources":["../../src/components/ExtensionSlot.tsx"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAC/B,2CAAoC;AACpC,oCAA0C;AAC1C,oCAA+C;AAG/C,SAAS,YAAY,CAAC,UAAwC;IAC5D,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAmB,KAA4B;IAC1E,MAAM,EACJ,IAAI,EACJ,MAAM,GAAG,qBAAa,EACtB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,gBAAgB,GAAG,KAAK,EACxB,KAAK,GAAG,YAAY,GACrB,GAAG,KAAK,CAAC;IACV,MAAM,UAAU,GAAG,IAAA,sBAAc,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,YAAI,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,IAAA,mBAAM,EAAC,KAAK,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,OAAO;QACrB,CAAC,CAAC,CAAC,IAAA,qBAAa,EAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAC/E,oBAAC,SAAS,IACR,GAAG,EAAE,GAAG,SAAS,EAAE,WAAW,IAAI,GAAG,GAAG,CAAC,EAAE,EAC3C,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE;gBACN,GAAG,QAAQ;gBACX,GAAG,MAAM;aACV,GACD,CACH,CAAC,CAAC;IAEP,IAAI,OAAO,IAAI,gBAAgB,EAAE;QAC/B,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;KACnB;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AA9BD,sCA8BC;AAED,aAAa,CAAC,WAAW,GAAG,eAAe,CAAC"}
@@ -18,7 +18,7 @@ export interface BaseExtensionSlotProps<TName, TParams> {
18
18
  * Defines what should be rendered when no components are available
19
19
  * for the specified extension.
20
20
  */
21
- empty?(): ReactNode;
21
+ empty?(props: TParams): ReactNode;
22
22
  /**
23
23
  * Determines if the `render` function should be called in case no
24
24
  * components are available for the specified extension.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "piral-core",
3
- "version": "1.6.0-beta.7142",
3
+ "version": "1.6.0-beta.7147",
4
4
  "description": "The core library for creating a Piral instance.",
5
5
  "keywords": [
6
6
  "portal",
@@ -73,8 +73,8 @@
73
73
  },
74
74
  "dependencies": {
75
75
  "path-to-regexp": "^1.8.0",
76
- "piral-base": "1.6.0-beta.7142",
77
- "piral-debug-utils": "1.6.0-beta.7142",
76
+ "piral-base": "1.6.0-beta.7147",
77
+ "piral-debug-utils": "1.6.0-beta.7147",
78
78
  "zustand": "^3.0.0"
79
79
  },
80
80
  "devDependencies": {
@@ -94,5 +94,5 @@
94
94
  "react-router-dom",
95
95
  "tslib"
96
96
  ],
97
- "gitHead": "525efcc3dee8b4c649872008987efe9443c713bb"
97
+ "gitHead": "d626400cfcbc7585f89f3678f45a2211a35af2b0"
98
98
  }
@@ -3,6 +3,10 @@ import { createPortal } from 'react-dom';
3
3
  import { useGlobalStateContext } from './hooks';
4
4
  import { renderElement } from './modules';
5
5
 
6
+ const renderHtmlEvent = 'render-html';
7
+ const renderContentEvent = 'render-content';
8
+ const forwardEventEvent = 'forward-event';
9
+
6
10
  export const RootListener: React.FC = () => {
7
11
  const context = useGlobalStateContext();
8
12
 
@@ -23,12 +27,19 @@ export const RootListener: React.FC = () => {
23
27
  context.showPortal(portalId, portal);
24
28
  target.dispose = dispose;
25
29
  };
26
- document.body.addEventListener('render-html', renderHtml, false);
27
- window.addEventListener('render-content', renderContent, false);
30
+ const forwardEvent = (ev: CustomEvent) => {
31
+ ev.stopPropagation();
32
+ const { type, args } = ev.detail;
33
+ context.emit(type, args);
34
+ };
35
+ document.body.addEventListener(renderHtmlEvent, renderHtml, false);
36
+ document.body.addEventListener(forwardEventEvent, forwardEvent, false);
37
+ window.addEventListener(renderContentEvent, renderContent, false);
28
38
 
29
39
  return () => {
30
- document.body.removeEventListener('render-html', renderHtml, false);
31
- window.removeEventListener('render-content', renderContent, false);
40
+ document.body.removeEventListener(renderHtmlEvent, renderHtml, false);
41
+ document.body.removeEventListener(forwardEventEvent, forwardEvent, false);
42
+ window.removeEventListener(renderContentEvent, renderContent, false);
32
43
  };
33
44
  }
34
45
  }, [context]);
@@ -26,7 +26,7 @@ export function ExtensionSlot<T extends string>(props: ExtensionSlotProps<T>) {
26
26
  const extensions = useGlobalState((s) => s.registry.extensions[name] || none);
27
27
  const isEmpty = extensions.length === 0 && isfunc(empty);
28
28
  const content = isEmpty
29
- ? [defaultRender(empty(), 'empty')]
29
+ ? [defaultRender(empty(params), 'empty')]
30
30
  : order(extensions).map(({ component: Component, reference, defaults = {} }, i) => (
31
31
  <Component
32
32
  key={`${reference?.displayName || '_'}${i}`}
@@ -19,7 +19,7 @@ export interface BaseExtensionSlotProps<TName, TParams> {
19
19
  * Defines what should be rendered when no components are available
20
20
  * for the specified extension.
21
21
  */
22
- empty?(): ReactNode;
22
+ empty?(props: TParams): ReactNode;
23
23
  /**
24
24
  * Determines if the `render` function should be called in case no
25
25
  * components are available for the specified extension.