@teambit/ui 1.0.1211 → 1.0.1213

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.
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>bit</title><script>!function(){try{var e=null,t=new URL(window.location.href).searchParams.get("theme");if(t&&(e=t),!e)try{e=sessionStorage.getItem("workspace-theme")}catch(e){}if(!e)try{e=localStorage.getItem("workspace-theme")}catch(e){}"dark"===e?(document.documentElement.dataset.theme="dark",document.documentElement.style.backgroundColor="#060414"):"light"===e&&(document.documentElement.dataset.theme="light",document.documentElement.style.backgroundColor="#fdfdff")}catch(e){}}();try{window.__REACT_DEVTOOLS_GLOBAL_HOOK__=window.parent.__REACT_DEVTOOLS_GLOBAL_HOOK__}catch{}</script><script defer src="/static/js/runtime-workspace.8653589e.js"></script><script defer src="/static/js/528.fb38fc7c.js"></script><script defer src="/static/js/83.cf263ce5.js"></script><script defer src="/static/js/workspace.f4d90629.js"></script><link href="/static/css/528.61ff347f.css" rel="stylesheet"></head><body><div id="root"></div></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>bit</title><script>!function(){try{var e=null,t=new URL(window.location.href).searchParams.get("theme");if(t&&(e=t),!e)try{e=sessionStorage.getItem("workspace-theme")}catch(e){}if(!e)try{e=localStorage.getItem("workspace-theme")}catch(e){}"dark"===e?(document.documentElement.dataset.theme="dark",document.documentElement.style.backgroundColor="#060414"):"light"===e&&(document.documentElement.dataset.theme="light",document.documentElement.style.backgroundColor="#fdfdff")}catch(e){}}();try{window.__REACT_DEVTOOLS_GLOBAL_HOOK__=window.parent.__REACT_DEVTOOLS_GLOBAL_HOOK__}catch{}</script><script defer src="/static/js/runtime-workspace.8653589e.js"></script><script defer src="/static/js/528.c5605292.js"></script><script defer src="/static/js/83.cf263ce5.js"></script><script defer src="/static/js/workspace.f4d90629.js"></script><link href="/static/css/528.0133ac1e.css" rel="stylesheet"></head><body><div id="root"></div></body></html>
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.ui-foundation_ui@1.0.1211/dist/ui.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.ui-foundation_ui@1.0.1211/dist/ui.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.ui-foundation_ui@1.0.1213/dist/ui.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.ui-foundation_ui@1.0.1213/dist/ui.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -1,4 +1,5 @@
1
1
  import type { GraphqlUI } from '@teambit/graphql';
2
+ import type { PubsubUI } from '@teambit/pubsub';
2
3
  import type { SlotRegistry } from '@teambit/harmony';
3
4
  import type { ReactRouterUI } from '@teambit/react-router';
4
5
  import type { SsrSession, RenderPlugin, ContextProps } from '@teambit/react.rendering.ssr';
@@ -23,6 +24,8 @@ export declare class UiUI {
23
24
  private hudSlot;
24
25
  /** hooks into the ssr render process */
25
26
  private renderPluginsSlot;
27
+ /** render hooks of ui's own dependencies (graphql, pubsub), rendered before the registered ones */
28
+ private dependenciesRenderPlugins;
26
29
  constructor(
27
30
  /**
28
31
  * react-router extension.
@@ -35,7 +38,9 @@ export declare class UiUI {
35
38
  /** slot for overlay ui elements */
36
39
  hudSlot: HudSlot,
37
40
  /** hooks into the ssr render process */
38
- renderPluginsSlot: RenderPluginsSlot);
41
+ renderPluginsSlot: RenderPluginsSlot,
42
+ /** render hooks of ui's own dependencies (graphql, pubsub), rendered before the registered ones */
43
+ dependenciesRenderPlugins: RenderPlugin<any, any>[]);
39
44
  /** render and rehydrate client-side */
40
45
  render(rootExtension: string): Promise<void>;
41
46
  /** render dehydrated server-side */
@@ -54,6 +59,6 @@ export declare class UiUI {
54
59
  static slots: (((registerFn: () => string) => SlotRegistry<RenderPlugin<unknown, unknown>>) | ((registerFn: () => string) => SlotRegistry<UIRootFactory>) | ((registerFn: () => string) => SlotRegistry<ReactNode>))[];
55
60
  static dependencies: import("@teambit/harmony").Aspect[];
56
61
  static runtime: import("@teambit/harmony").RuntimeDefinition;
57
- static provider([GraphqlUi, router]: [GraphqlUI, ReactRouterUI], config: any, [uiRootSlot, hudSlot, renderLifecycleSlot]: [UIRootRegistry, HudSlot, RenderPluginsSlot]): Promise<UiUI>;
62
+ static provider([GraphqlUi, router, pubsubUI]: [GraphqlUI, ReactRouterUI, PubsubUI], config: any, [uiRootSlot, hudSlot, renderLifecycleSlot]: [UIRootRegistry, HudSlot, RenderPluginsSlot]): Promise<UiUI>;
58
63
  }
59
64
  export {};
@@ -11,6 +11,13 @@ function _graphql() {
11
11
  };
12
12
  return data;
13
13
  }
14
+ function _pubsub() {
15
+ const data = require("@teambit/pubsub");
16
+ _pubsub = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
14
21
  function _harmony() {
15
22
  const data = require("@teambit/harmony");
16
23
  _harmony = function () {
@@ -80,11 +87,13 @@ class UiUI {
80
87
  */
81
88
  uiRootSlot, /** slot for overlay ui elements */
82
89
  hudSlot, /** hooks into the ssr render process */
83
- renderPluginsSlot) {
90
+ renderPluginsSlot, /** render hooks of ui's own dependencies (graphql, pubsub), rendered before the registered ones */
91
+ dependenciesRenderPlugins) {
84
92
  this.router = router;
85
93
  this.uiRootSlot = uiRootSlot;
86
94
  this.hudSlot = hudSlot;
87
95
  this.renderPluginsSlot = renderPluginsSlot;
96
+ this.dependenciesRenderPlugins = dependenciesRenderPlugins;
88
97
  /** adds elements to the Heads Up Display */
89
98
  _defineProperty(this, "registerHudItem", element => {
90
99
  this.hudSlot.register(element);
@@ -143,7 +152,7 @@ class UiUI {
143
152
  return this.renderPluginsSlot.register(plugin);
144
153
  }
145
154
  getLifecyclePlugins() {
146
- const lifecyclePlugins = this.renderPluginsSlot.toArray().map(([key, plugin]) => {
155
+ const registeredPlugins = this.renderPluginsSlot.toArray().map(([key, plugin]) => {
147
156
  if (plugin.key) return plugin;
148
157
 
149
158
  // for backward compatibility
@@ -151,23 +160,22 @@ class UiUI {
151
160
  key
152
161
  });
153
162
  });
154
-
155
- // react-router should register its plugin, when we can reverse it's dependency to depend on Ui
156
- lifecyclePlugins.unshift(this.router.renderPlugin);
157
- return lifecyclePlugins;
163
+ return [this.router.renderPlugin, ...this.dependenciesRenderPlugins, ...registeredPlugins];
158
164
  }
159
165
  getRoot(rootExtension) {
160
166
  return this.uiRootSlot.get(rootExtension);
161
167
  }
162
- static async provider([GraphqlUi, router], config, [uiRootSlot, hudSlot, renderLifecycleSlot]) {
163
- const uiUi = new UiUI(router, uiRootSlot, hudSlot, renderLifecycleSlot);
164
- if (GraphqlUi) uiUi.registerRenderHooks(GraphqlUi.renderPlugins);
165
- return uiUi;
168
+ static async provider([GraphqlUi, router, pubsubUI], config, [uiRootSlot, hudSlot, renderLifecycleSlot]) {
169
+ const dependenciesRenderPlugins = [GraphqlUi.renderPlugins, {
170
+ key: _pubsub().PubsubAspect.id,
171
+ reactContext: pubsubUI.getPubSubContext()
172
+ }];
173
+ return new UiUI(router, uiRootSlot, hudSlot, renderLifecycleSlot, dependenciesRenderPlugins);
166
174
  }
167
175
  }
168
176
  exports.UiUI = UiUI;
169
177
  _defineProperty(UiUI, "slots", [_harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType()]);
170
- _defineProperty(UiUI, "dependencies", [_graphql().GraphqlAspect, _reactRouter().ReactRouterAspect]);
178
+ _defineProperty(UiUI, "dependencies", [_graphql().GraphqlAspect, _reactRouter().ReactRouterAspect, _pubsub().PubsubAspect]);
171
179
  _defineProperty(UiUI, "runtime", _ui().UIRuntime);
172
180
  _ui().UIAspect.addRuntime(UiUI);
173
181
 
@@ -1 +1 @@
1
- {"version":3,"names":["_graphql","data","require","_harmony","_reactRouter","_reactRendering","_uiFoundationUiHooks","_react","_interopRequireDefault","_ui","_clientContext","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","UiUI","constructor","router","uiRootSlot","hudSlot","renderPluginsSlot","element","register","render","rootExtension","rootFactory","getRoot","Error","uiRoot","routes","renderRoutes","hudItems","values","lifecyclePlugins","getLifecyclePlugins","reactSsr","BrowserRenderer","undefined","createElement","ClientContext","renderSsr","ssrContent","ServerRenderer","fullHtml","SSRBrowserProvider","browser","registerContext","context","reactContext","registerRoot","registerRenderHooks","plugin","toArray","map","key","unshift","renderPlugin","get","provider","GraphqlUi","config","renderLifecycleSlot","uiUi","renderPlugins","exports","Slot","withType","GraphqlAspect","ReactRouterAspect","UIRuntime","UIAspect","addRuntime"],"sources":["ui.ui.runtime.tsx"],"sourcesContent":["import type { GraphqlUI } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type { ReactRouterUI } from '@teambit/react-router';\nimport { ReactRouterAspect } from '@teambit/react-router';\nimport { ServerRenderer, BrowserRenderer } from '@teambit/react.rendering.ssr';\nimport { SSRBrowserProvider } from '@teambit/ui-foundation.ui.hooks.use-user-agent';\nimport type { SsrSession, RenderPlugin, ContextProps } from '@teambit/react.rendering.ssr';\n\nimport type { ReactNode, ComponentType } from 'react';\nimport React from 'react';\n\nimport type { UIRootFactory } from './ui-root.ui';\nimport { UIAspect, UIRuntime } from './ui.aspect';\nimport { ClientContext } from './ui/client-context';\n\ntype HudSlot = SlotRegistry<ReactNode>;\ntype RenderPluginsSlot = SlotRegistry<RenderPlugin<any, any>>;\ntype UIRootRegistry = SlotRegistry<UIRootFactory>;\n\n/**\n * extension\n */\nexport class UiUI {\n constructor(\n /**\n * react-router extension.\n */\n private router: ReactRouterUI,\n /**\n * ui root registry.\n */\n private uiRootSlot: UIRootRegistry,\n /** slot for overlay ui elements */\n private hudSlot: HudSlot,\n /** hooks into the ssr render process */\n private renderPluginsSlot: RenderPluginsSlot\n ) {}\n\n /** render and rehydrate client-side */\n async render(rootExtension: string): Promise<void> {\n const rootFactory = this.getRoot(rootExtension);\n if (!rootFactory) throw new Error(`root: ${rootExtension} was not found`);\n const uiRoot = rootFactory();\n const routes = this.router.renderRoutes(uiRoot.routes);\n const hudItems = this.hudSlot.values();\n const lifecyclePlugins = this.getLifecyclePlugins();\n\n const reactSsr = new BrowserRenderer(lifecyclePlugins, undefined, rootExtension);\n await reactSsr.render(\n <ClientContext>\n {hudItems}\n {routes}\n </ClientContext>\n );\n }\n\n /** render dehydrated server-side */\n async renderSsr(rootExtension: string, ssrContent: SsrSession): Promise<string> {\n const rootFactory = this.getRoot(rootExtension);\n if (!rootFactory) throw new Error(`root: ${rootExtension} was not found`);\n\n const uiRoot = rootFactory();\n const routes = this.router.renderRoutes(uiRoot.routes);\n const hudItems = this.hudSlot.values();\n const lifecyclePlugins = this.getLifecyclePlugins();\n\n const reactSsr = new ServerRenderer(lifecyclePlugins);\n const fullHtml = await reactSsr.render(\n // `SSRBrowserProvider` wraps `ClientContext`, not the other way round. `useUserAgent` reads\n // this context and, finding nothing, falls back to `window.navigator` - which on the server\n // throws `ReferenceError: window is not defined` and takes the whole render down (the ssr\n // middleware then silently serves the empty client shell). Anything rendered outside this\n // provider is therefore a latent server crash, and `ClientContext` renders real UI of its\n // own - icons, the theme switcher, the loader ribbon, the tooltip mount point - so it has to\n // be inside. Nesting it the other way only appeared to work while nothing in that subtree\n // happened to call `useIsMobile`.\n <SSRBrowserProvider value={ssrContent.browser}>\n <ClientContext>\n {hudItems}\n {routes}\n </ClientContext>\n </SSRBrowserProvider>,\n ssrContent\n );\n\n return fullHtml;\n }\n\n /** adds elements to the Heads Up Display */\n registerHudItem = (element: ReactNode) => {\n this.hudSlot.register(element);\n };\n\n /**\n * adds global context at the ui root\n * @deprecated replace with `.registerRenderHooks({ reactContext })`.\n */\n registerContext<T>(context: ComponentType<ContextProps<T>>) {\n this.renderPluginsSlot.register({ reactContext: context });\n }\n\n registerRoot(uiRoot: UIRootFactory) {\n return this.uiRootSlot.register(uiRoot);\n }\n\n registerRenderHooks<T, Y>(plugin: RenderPlugin<T, Y>) {\n return this.renderPluginsSlot.register(plugin);\n }\n\n private getLifecyclePlugins() {\n const lifecyclePlugins = this.renderPluginsSlot.toArray().map(([key, plugin]) => {\n if (plugin.key) return plugin;\n\n // for backward compatibility\n return { ...plugin, key };\n });\n\n // react-router should register its plugin, when we can reverse it's dependency to depend on Ui\n lifecyclePlugins.unshift(this.router.renderPlugin);\n\n return lifecyclePlugins;\n }\n\n private getRoot(rootExtension: string) {\n return this.uiRootSlot.get(rootExtension);\n }\n\n static slots = [Slot.withType<UIRootFactory>(), Slot.withType<ReactNode>(), Slot.withType<RenderPlugin>()];\n\n static dependencies = [GraphqlAspect, ReactRouterAspect];\n\n static runtime = UIRuntime;\n\n static async provider(\n [GraphqlUi, router]: [GraphqlUI, ReactRouterUI],\n config,\n [uiRootSlot, hudSlot, renderLifecycleSlot]: [UIRootRegistry, HudSlot, RenderPluginsSlot]\n ) {\n const uiUi = new UiUI(router, uiRootSlot, hudSlot, renderLifecycleSlot);\n\n if (GraphqlUi) uiUi.registerRenderHooks(GraphqlUi.renderPlugins);\n\n return uiUi;\n }\n}\n\nUIAspect.addRuntime(UiUI);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_graphql","data","require","_pubsub","_harmony","_reactRouter","_reactRendering","_uiFoundationUiHooks","_react","_interopRequireDefault","_ui","_clientContext","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","UiUI","constructor","router","uiRootSlot","hudSlot","renderPluginsSlot","dependenciesRenderPlugins","element","register","render","rootExtension","rootFactory","getRoot","Error","uiRoot","routes","renderRoutes","hudItems","values","lifecyclePlugins","getLifecyclePlugins","reactSsr","BrowserRenderer","undefined","createElement","ClientContext","renderSsr","ssrContent","ServerRenderer","fullHtml","SSRBrowserProvider","browser","registerContext","context","reactContext","registerRoot","registerRenderHooks","plugin","registeredPlugins","toArray","map","key","renderPlugin","get","provider","GraphqlUi","pubsubUI","config","renderLifecycleSlot","renderPlugins","PubsubAspect","id","getPubSubContext","exports","Slot","withType","GraphqlAspect","ReactRouterAspect","UIRuntime","UIAspect","addRuntime"],"sources":["ui.ui.runtime.tsx"],"sourcesContent":["import type { GraphqlUI } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport type { PubsubUI } from '@teambit/pubsub';\nimport { PubsubAspect } from '@teambit/pubsub';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type { ReactRouterUI } from '@teambit/react-router';\nimport { ReactRouterAspect } from '@teambit/react-router';\nimport { ServerRenderer, BrowserRenderer } from '@teambit/react.rendering.ssr';\nimport { SSRBrowserProvider } from '@teambit/ui-foundation.ui.hooks.use-user-agent';\nimport type { SsrSession, RenderPlugin, ContextProps } from '@teambit/react.rendering.ssr';\n\nimport type { ReactNode, ComponentType } from 'react';\nimport React from 'react';\n\nimport type { UIRootFactory } from './ui-root.ui';\nimport { UIAspect, UIRuntime } from './ui.aspect';\nimport { ClientContext } from './ui/client-context';\n\ntype HudSlot = SlotRegistry<ReactNode>;\ntype RenderPluginsSlot = SlotRegistry<RenderPlugin<any, any>>;\ntype UIRootRegistry = SlotRegistry<UIRootFactory>;\n\n/**\n * extension\n */\nexport class UiUI {\n constructor(\n /**\n * react-router extension.\n */\n private router: ReactRouterUI,\n /**\n * ui root registry.\n */\n private uiRootSlot: UIRootRegistry,\n /** slot for overlay ui elements */\n private hudSlot: HudSlot,\n /** hooks into the ssr render process */\n private renderPluginsSlot: RenderPluginsSlot,\n /** render hooks of ui's own dependencies (graphql, pubsub), rendered before the registered ones */\n private dependenciesRenderPlugins: RenderPlugin<any, any>[]\n ) {}\n\n /** render and rehydrate client-side */\n async render(rootExtension: string): Promise<void> {\n const rootFactory = this.getRoot(rootExtension);\n if (!rootFactory) throw new Error(`root: ${rootExtension} was not found`);\n const uiRoot = rootFactory();\n const routes = this.router.renderRoutes(uiRoot.routes);\n const hudItems = this.hudSlot.values();\n const lifecyclePlugins = this.getLifecyclePlugins();\n\n const reactSsr = new BrowserRenderer(lifecyclePlugins, undefined, rootExtension);\n await reactSsr.render(\n <ClientContext>\n {hudItems}\n {routes}\n </ClientContext>\n );\n }\n\n /** render dehydrated server-side */\n async renderSsr(rootExtension: string, ssrContent: SsrSession): Promise<string> {\n const rootFactory = this.getRoot(rootExtension);\n if (!rootFactory) throw new Error(`root: ${rootExtension} was not found`);\n\n const uiRoot = rootFactory();\n const routes = this.router.renderRoutes(uiRoot.routes);\n const hudItems = this.hudSlot.values();\n const lifecyclePlugins = this.getLifecyclePlugins();\n\n const reactSsr = new ServerRenderer(lifecyclePlugins);\n const fullHtml = await reactSsr.render(\n // `SSRBrowserProvider` wraps `ClientContext`, not the other way round. `useUserAgent` reads\n // this context and, finding nothing, falls back to `window.navigator` - which on the server\n // throws `ReferenceError: window is not defined` and takes the whole render down (the ssr\n // middleware then silently serves the empty client shell). Anything rendered outside this\n // provider is therefore a latent server crash, and `ClientContext` renders real UI of its\n // own - icons, the theme switcher, the loader ribbon, the tooltip mount point - so it has to\n // be inside. Nesting it the other way only appeared to work while nothing in that subtree\n // happened to call `useIsMobile`.\n <SSRBrowserProvider value={ssrContent.browser}>\n <ClientContext>\n {hudItems}\n {routes}\n </ClientContext>\n </SSRBrowserProvider>,\n ssrContent\n );\n\n return fullHtml;\n }\n\n /** adds elements to the Heads Up Display */\n registerHudItem = (element: ReactNode) => {\n this.hudSlot.register(element);\n };\n\n /**\n * adds global context at the ui root\n * @deprecated replace with `.registerRenderHooks({ reactContext })`.\n */\n registerContext<T>(context: ComponentType<ContextProps<T>>) {\n this.renderPluginsSlot.register({ reactContext: context });\n }\n\n registerRoot(uiRoot: UIRootFactory) {\n return this.uiRootSlot.register(uiRoot);\n }\n\n registerRenderHooks<T, Y>(plugin: RenderPlugin<T, Y>) {\n return this.renderPluginsSlot.register(plugin);\n }\n\n private getLifecyclePlugins() {\n const registeredPlugins = this.renderPluginsSlot.toArray().map(([key, plugin]) => {\n if (plugin.key) return plugin;\n\n // for backward compatibility\n return { ...plugin, key };\n });\n\n return [this.router.renderPlugin, ...this.dependenciesRenderPlugins, ...registeredPlugins];\n }\n\n private getRoot(rootExtension: string) {\n return this.uiRootSlot.get(rootExtension);\n }\n\n static slots = [Slot.withType<UIRootFactory>(), Slot.withType<ReactNode>(), Slot.withType<RenderPlugin>()];\n\n static dependencies = [GraphqlAspect, ReactRouterAspect, PubsubAspect];\n\n static runtime = UIRuntime;\n\n static async provider(\n [GraphqlUi, router, pubsubUI]: [GraphqlUI, ReactRouterUI, PubsubUI],\n config,\n [uiRootSlot, hudSlot, renderLifecycleSlot]: [UIRootRegistry, HudSlot, RenderPluginsSlot]\n ) {\n const dependenciesRenderPlugins = [\n GraphqlUi.renderPlugins,\n { key: PubsubAspect.id, reactContext: pubsubUI.getPubSubContext() },\n ];\n return new UiUI(router, uiRootSlot, hudSlot, renderLifecycleSlot, dependenciesRenderPlugins);\n }\n}\n\nUIAspect.addRuntime(UiUI);\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/ui",
3
- "version": "1.0.1211",
3
+ "version": "1.0.1213",
4
4
  "homepage": "https://bit.cloud/teambit/ui-foundation/ui",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.ui-foundation",
8
8
  "name": "ui",
9
- "version": "1.0.1211"
9
+ "version": "1.0.1213"
10
10
  },
11
11
  "dependencies": {
12
12
  "p-map-series": "2.1.0",
@@ -40,7 +40,7 @@
40
40
  "@teambit/react.rendering.ssr": "1.0.5",
41
41
  "@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.512",
42
42
  "@teambit/bit-error": "0.0.404",
43
- "@teambit/cli": "0.0.1411",
43
+ "@teambit/cli": "0.0.1412",
44
44
  "@teambit/legacy.constants": "0.0.49",
45
45
  "@teambit/express": "0.0.1504",
46
46
  "@teambit/graphql": "1.0.1205",
@@ -73,12 +73,12 @@
73
73
  "@teambit/design.themes.base-theme": "0.1.60",
74
74
  "@teambit/design.themes.dark-theme": "1.91.64",
75
75
  "@teambit/design.themes.light-theme": "0.1.61",
76
- "@teambit/builder": "1.0.1211",
77
- "@teambit/isolator": "1.0.1211",
78
- "@teambit/aspect-loader": "1.0.1211",
79
- "@teambit/bundler": "1.0.1211",
80
- "@teambit/component": "1.0.1211",
81
- "@teambit/pubsub": "1.0.1211"
76
+ "@teambit/builder": "1.0.1213",
77
+ "@teambit/isolator": "1.0.1213",
78
+ "@teambit/aspect-loader": "1.0.1213",
79
+ "@teambit/bundler": "1.0.1213",
80
+ "@teambit/component": "1.0.1213",
81
+ "@teambit/pubsub": "1.0.1213"
82
82
  },
83
83
  "devDependencies": {
84
84
  "@types/express": "^4.17.21",
package/ui.ui.runtime.tsx CHANGED
@@ -1,5 +1,7 @@
1
1
  import type { GraphqlUI } from '@teambit/graphql';
2
2
  import { GraphqlAspect } from '@teambit/graphql';
3
+ import type { PubsubUI } from '@teambit/pubsub';
4
+ import { PubsubAspect } from '@teambit/pubsub';
3
5
  import type { SlotRegistry } from '@teambit/harmony';
4
6
  import { Slot } from '@teambit/harmony';
5
7
  import type { ReactRouterUI } from '@teambit/react-router';
@@ -35,7 +37,9 @@ export class UiUI {
35
37
  /** slot for overlay ui elements */
36
38
  private hudSlot: HudSlot,
37
39
  /** hooks into the ssr render process */
38
- private renderPluginsSlot: RenderPluginsSlot
40
+ private renderPluginsSlot: RenderPluginsSlot,
41
+ /** render hooks of ui's own dependencies (graphql, pubsub), rendered before the registered ones */
42
+ private dependenciesRenderPlugins: RenderPlugin<any, any>[]
39
43
  ) {}
40
44
 
41
45
  /** render and rehydrate client-side */
@@ -110,17 +114,14 @@ export class UiUI {
110
114
  }
111
115
 
112
116
  private getLifecyclePlugins() {
113
- const lifecyclePlugins = this.renderPluginsSlot.toArray().map(([key, plugin]) => {
117
+ const registeredPlugins = this.renderPluginsSlot.toArray().map(([key, plugin]) => {
114
118
  if (plugin.key) return plugin;
115
119
 
116
120
  // for backward compatibility
117
121
  return { ...plugin, key };
118
122
  });
119
123
 
120
- // react-router should register its plugin, when we can reverse it's dependency to depend on Ui
121
- lifecyclePlugins.unshift(this.router.renderPlugin);
122
-
123
- return lifecyclePlugins;
124
+ return [this.router.renderPlugin, ...this.dependenciesRenderPlugins, ...registeredPlugins];
124
125
  }
125
126
 
126
127
  private getRoot(rootExtension: string) {
@@ -129,20 +130,20 @@ export class UiUI {
129
130
 
130
131
  static slots = [Slot.withType<UIRootFactory>(), Slot.withType<ReactNode>(), Slot.withType<RenderPlugin>()];
131
132
 
132
- static dependencies = [GraphqlAspect, ReactRouterAspect];
133
+ static dependencies = [GraphqlAspect, ReactRouterAspect, PubsubAspect];
133
134
 
134
135
  static runtime = UIRuntime;
135
136
 
136
137
  static async provider(
137
- [GraphqlUi, router]: [GraphqlUI, ReactRouterUI],
138
+ [GraphqlUi, router, pubsubUI]: [GraphqlUI, ReactRouterUI, PubsubUI],
138
139
  config,
139
140
  [uiRootSlot, hudSlot, renderLifecycleSlot]: [UIRootRegistry, HudSlot, RenderPluginsSlot]
140
141
  ) {
141
- const uiUi = new UiUI(router, uiRootSlot, hudSlot, renderLifecycleSlot);
142
-
143
- if (GraphqlUi) uiUi.registerRenderHooks(GraphqlUi.renderPlugins);
144
-
145
- return uiUi;
142
+ const dependenciesRenderPlugins = [
143
+ GraphqlUi.renderPlugins,
144
+ { key: PubsubAspect.id, reactContext: pubsubUI.getPubSubContext() },
145
+ ];
146
+ return new UiUI(router, uiRootSlot, hudSlot, renderLifecycleSlot, dependenciesRenderPlugins);
146
147
  }
147
148
  }
148
149