@teambit/lanes 0.0.649 → 0.0.650

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.
@@ -15,6 +15,17 @@ import { LaneId } from '@teambit/lane-id';
15
15
  import { ComponentCompareUI } from '@teambit/component-compare';
16
16
  export declare type LaneCompareProps = Partial<DefaultLaneCompareProps>;
17
17
  export declare type LaneProviderIgnoreSlot = SlotRegistry<IgnoreDerivingFromUrl>;
18
+ export declare function useComponentFilters(): {
19
+ loading: boolean;
20
+ log?: undefined;
21
+ } | {
22
+ loading: boolean;
23
+ log: {
24
+ logHead: string;
25
+ };
26
+ };
27
+ export declare function useLaneComponentIdFromUrl(): ComponentID | undefined | null;
28
+ export declare function useComponentId(): string | undefined;
18
29
  export declare class LanesUI {
19
30
  private componentUI;
20
31
  private componentCompareUI;
@@ -51,13 +62,6 @@ export declare class LanesUI {
51
62
  getLaneUrl: (laneId: LaneId, relative?: boolean) => string;
52
63
  getLaneComponentUrl: (componentId: ComponentID, laneId: LaneId) => string;
53
64
  }): void;
54
- getLaneComponentIdFromUrl: () => ComponentID | undefined;
55
- useComponentId: () => string | undefined;
56
- useComponentFilters: () => {
57
- log: {
58
- logHead: string;
59
- } | undefined;
60
- };
61
65
  getLaneComponent(): JSX.Element;
62
66
  getLaneComponentMenu(): JSX.Element;
63
67
  getLaneOverview(): JSX.Element;
@@ -7,6 +7,9 @@ Object.defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
9
  exports.default = exports.LanesUI = void 0;
10
+ exports.useComponentFilters = useComponentFilters;
11
+ exports.useComponentId = useComponentId;
12
+ exports.useLaneComponentIdFromUrl = useLaneComponentIdFromUrl;
10
13
  function _extends2() {
11
14
  const data = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
12
15
  _extends2 = function () {
@@ -105,6 +108,13 @@ function _lanesUiMenus() {
105
108
  };
106
109
  return data;
107
110
  }
111
+ function _uiFoundationUiReactRouter() {
112
+ const data = require("@teambit/ui-foundation.ui.react-router.use-query");
113
+ _uiFoundationUiReactRouter = function () {
114
+ return data;
115
+ };
116
+ return data;
117
+ }
108
118
  function _lanesUiMenus2() {
109
119
  const data = require("@teambit/lanes.ui.menus.use-lanes-menu");
110
120
  _lanesUiMenus2 = function () {
@@ -170,6 +180,48 @@ function _lanesUiModule() {
170
180
  }
171
181
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
172
182
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
183
+ function useComponentFilters() {
184
+ var _lanesModel$resolveCo;
185
+ const idFromLocation = (0, _component().useIdFromLocation)();
186
+ const {
187
+ lanesModel,
188
+ loading
189
+ } = (0, _lanesHooks().useLanes)();
190
+ const laneFromUrl = (0, _lanesHooks2().useViewedLaneFromUrl)();
191
+ const laneComponentId = idFromLocation && !(laneFromUrl !== null && laneFromUrl !== void 0 && laneFromUrl.isDefault()) ? (_lanesModel$resolveCo = lanesModel === null || lanesModel === void 0 ? void 0 : lanesModel.resolveComponentFromUrl(idFromLocation, laneFromUrl)) !== null && _lanesModel$resolveCo !== void 0 ? _lanesModel$resolveCo : null : null;
192
+ if (laneComponentId === null || loading) {
193
+ return {
194
+ loading: true
195
+ };
196
+ }
197
+ return {
198
+ loading: false,
199
+ log: {
200
+ logHead: laneComponentId.version
201
+ }
202
+ };
203
+ }
204
+ function useLaneComponentIdFromUrl() {
205
+ var _lanesModel$resolveCo2;
206
+ const idFromLocation = (0, _component().useIdFromLocation)();
207
+ const {
208
+ lanesModel,
209
+ loading
210
+ } = (0, _lanesHooks().useLanes)();
211
+ const laneFromUrl = (0, _lanesHooks2().useViewedLaneFromUrl)();
212
+ const query = (0, _uiFoundationUiReactRouter().useQuery)();
213
+ const componentVersion = query.get('version');
214
+ if (componentVersion && laneFromUrl) {
215
+ const componentId = _component().ComponentID.fromString(`${idFromLocation}@${componentVersion}`);
216
+ return componentId;
217
+ }
218
+ const laneComponentId = idFromLocation && !(laneFromUrl !== null && laneFromUrl !== void 0 && laneFromUrl.isDefault()) ? (_lanesModel$resolveCo2 = lanesModel === null || lanesModel === void 0 ? void 0 : lanesModel.resolveComponentFromUrl(idFromLocation, laneFromUrl)) !== null && _lanesModel$resolveCo2 !== void 0 ? _lanesModel$resolveCo2 : null : null;
219
+ return loading ? undefined : laneComponentId;
220
+ }
221
+ function useComponentId() {
222
+ var _useLaneComponentIdFr;
223
+ return (_useLaneComponentIdFr = useLaneComponentIdFromUrl()) === null || _useLaneComponentIdFr === void 0 ? void 0 : _useLaneComponentIdFr.toString();
224
+ }
173
225
  class LanesUI {
174
226
  constructor(componentUI, componentCompareUI, routeSlot, navSlot, menuWidgetSlot,
175
227
  /**
@@ -188,27 +240,6 @@ class LanesUI {
188
240
  (0, _defineProperty2().default)(this, "lanesHost", void 0);
189
241
  (0, _defineProperty2().default)(this, "hostAspect", void 0);
190
242
  (0, _defineProperty2().default)(this, "host", void 0);
191
- (0, _defineProperty2().default)(this, "getLaneComponentIdFromUrl", () => {
192
- const idFromLocation = (0, _component().useIdFromLocation)();
193
- const {
194
- lanesModel
195
- } = (0, _lanesHooks().useLanes)();
196
- const laneFromUrl = (0, _lanesHooks2().useViewedLaneFromUrl)();
197
- const laneComponentId = idFromLocation && !(laneFromUrl !== null && laneFromUrl !== void 0 && laneFromUrl.isDefault()) ? lanesModel === null || lanesModel === void 0 ? void 0 : lanesModel.resolveComponentFromUrl(idFromLocation, laneFromUrl) : undefined;
198
- return laneComponentId;
199
- });
200
- (0, _defineProperty2().default)(this, "useComponentId", () => {
201
- var _this$getLaneComponen;
202
- return (_this$getLaneComponen = this.getLaneComponentIdFromUrl()) === null || _this$getLaneComponen === void 0 ? void 0 : _this$getLaneComponen.toString();
203
- });
204
- (0, _defineProperty2().default)(this, "useComponentFilters", () => {
205
- const laneComponentId = this.getLaneComponentIdFromUrl();
206
- return {
207
- log: laneComponentId && {
208
- logHead: laneComponentId.version
209
- }
210
- };
211
- });
212
243
  (0, _defineProperty2().default)(this, "renderContext", ({
213
244
  children
214
245
  }) => {
@@ -280,14 +311,14 @@ class LanesUI {
280
311
 
281
312
  getLaneComponent() {
282
313
  return this.componentUI.getComponentUI(this.host, {
283
- componentId: this.useComponentId,
284
- useComponentFilters: this.useComponentFilters
314
+ componentId: useComponentId,
315
+ useComponentFilters
285
316
  });
286
317
  }
287
318
  getLaneComponentMenu() {
288
319
  return this.componentUI.getMenu(this.host, {
289
- componentId: this.useComponentId,
290
- useComponentFilters: this.useComponentFilters
320
+ componentId: useComponentId,
321
+ useComponentFilters
291
322
  });
292
323
  }
293
324
  getLaneOverview() {
@@ -384,7 +415,7 @@ class LanesUI {
384
415
  const LanesSwitcher = /*#__PURE__*/_react().default.createElement(_lanesUiNavigation().LaneSwitcher, {
385
416
  groupByScope: this.lanesHost === 'workspace',
386
417
  mainIcon: this.lanesHost === 'scope' ? mainIcon : undefined,
387
- useLanes: this.getUseLanes()
418
+ useLanes: _lanesHooks().useLanes
388
419
  });
389
420
  return LanesSwitcher;
390
421
  }
@@ -1 +1 @@
1
- {"version":3,"names":["LanesUI","constructor","componentUI","componentCompareUI","routeSlot","navSlot","menuWidgetSlot","overviewSlot","laneProviderIgnoreSlot","workspace","scope","idFromLocation","useIdFromLocation","lanesModel","useLanes","laneFromUrl","useViewedLaneFromUrl","laneComponentId","isDefault","resolveComponentFromUrl","undefined","getLaneComponentIdFromUrl","toString","log","logHead","version","children","ignoreFns","values","props","tabs","base","compare","host","hostAspect","lanesHost","WorkspaceAspect","id","ScopeAspect","registerHostAspectRoutes","registerRoutes","getLaneRoutes","registerMenuRoutes","getMenuRoutes","path","LanesModel","lanesPrefix","lanePath","getLaneOverview","getLaneComponent","getLanesComparePage","overrideComputeLaneUrl","fn","prefix","getLaneComponentUrl","getLaneIdFromPathname","getLaneUrl","getComponentUI","componentId","useComponentId","useComponentFilters","getLaneComponentMenu","getMenu","getLaneCompare","getLanesOverviewMenu","registerMenuWidget","menuItems","register","registerLaneProviderIgnoreSlot","ignoreFn","registerLanesRoutes","registerNavigation","href","exact","order","hide","viewedLane","lanes","length","getLanesSwitcher","mainIcon","useContext","ScopeContext","icon","backgroundIconColor","styles","mainLaneIcon","LanesSwitcher","getUseLanes","getLanesProvider","LanesProvider","registerLanesDropdown","registerSidebarLink","component","Gallery","weight","registerRoute","route","registerOverviewLine","lines","routes","provider","uiUi","workspaceUi","scopeUi","_","harmony","config","String","get","lanesUi","registerRenderHooks","reactContext","renderContext","currentLane","UIAspect","ComponentAspect","ComponentCompareAspect","UIRuntime","Slot","withType","LanesAspect","addRuntime"],"sources":["lanes.ui.runtime.tsx"],"sourcesContent":["import React, { ReactNode, useContext } from 'react';\nimport { Route, RouteProps } from 'react-router-dom';\nimport { Slot, Harmony, SlotRegistry } from '@teambit/harmony';\nimport { LaneCompare, LaneCompareProps as DefaultLaneCompareProps } from '@teambit/lanes.ui.compare.lane-compare';\nimport { UIRuntime, UiUI, UIAspect } from '@teambit/ui';\nimport { LanesAspect } from '@teambit/lanes';\nimport { NavigationSlot, RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { NotFoundPage } from '@teambit/design.ui.pages.not-found';\nimport ScopeAspect, { ScopeContext, ScopeUI } from '@teambit/scope';\nimport WorkspaceAspect, { WorkspaceUI } from '@teambit/workspace';\nimport ComponentAspect, { ComponentUI, useIdFromLocation, ComponentID } from '@teambit/component';\nimport { MenuWidget, MenuWidgetSlot } from '@teambit/ui-foundation.ui.menu';\nimport { LaneOverview, LaneOverviewLine, LaneOverviewLineSlot } from '@teambit/lanes.ui.lane-overview';\nimport {\n LanesNavPlugin,\n LanesOrderedNavigationSlot,\n LanesOverviewMenu,\n} from '@teambit/lanes.ui.menus.lanes-overview-menu';\nimport { UseLaneMenu } from '@teambit/lanes.ui.menus.use-lanes-menu';\nimport { LanesHost, LanesModel } from '@teambit/lanes.ui.models.lanes-model';\nimport { LanesProvider, useLanes, IgnoreDerivingFromUrl } from '@teambit/lanes.hooks.use-lanes';\nimport { LaneSwitcher } from '@teambit/lanes.ui.navigation.lane-switcher';\nimport { LaneId } from '@teambit/lane-id';\nimport { useViewedLaneFromUrl } from '@teambit/lanes.hooks.use-viewed-lane-from-url';\nimport { ComponentCompareAspect, ComponentCompareUI } from '@teambit/component-compare';\nimport { LaneComparePage } from '@teambit/lanes.ui.compare.lane-compare-page';\nimport { ScopeIcon } from '@teambit/scope.ui.scope-icon';\n\nimport styles from './lanes.ui.module.scss';\n\nexport type LaneCompareProps = Partial<DefaultLaneCompareProps>;\nexport type LaneProviderIgnoreSlot = SlotRegistry<IgnoreDerivingFromUrl>;\n\nexport class LanesUI {\n static dependencies = [UIAspect, ComponentAspect, WorkspaceAspect, ScopeAspect, ComponentCompareAspect];\n\n static runtime = UIRuntime;\n static slots = [\n Slot.withType<RouteProps>(),\n Slot.withType<LaneOverviewLineSlot>(),\n Slot.withType<NavigationSlot>(),\n Slot.withType<MenuWidgetSlot>(),\n Slot.withType<LaneProviderIgnoreSlot>(),\n ];\n\n constructor(\n private componentUI: ComponentUI,\n private componentCompareUI: ComponentCompareUI,\n private routeSlot: RouteSlot,\n private navSlot: LanesOrderedNavigationSlot,\n private menuWidgetSlot: MenuWidgetSlot,\n /**\n * overview line slot to add new lines beneath the overview section\n */\n private overviewSlot: LaneOverviewLineSlot,\n private laneProviderIgnoreSlot: LaneProviderIgnoreSlot,\n private workspace?: WorkspaceUI,\n private scope?: ScopeUI\n ) {\n this.hostAspect = workspace || scope;\n this.lanesHost = workspace ? 'workspace' : 'scope';\n this.host = workspace ? WorkspaceAspect.id : ScopeAspect.id;\n }\n\n private readonly lanesHost: LanesHost;\n private readonly hostAspect?: WorkspaceUI | ScopeUI;\n private readonly host: string;\n\n private registerHostAspectRoutes() {\n if (!this.hostAspect) return;\n this.hostAspect.registerRoutes(this.getLaneRoutes());\n this.hostAspect.registerMenuRoutes(this.getMenuRoutes());\n }\n\n getLaneRoutes() {\n return [\n {\n path: LanesModel.lanesPrefix,\n children: (\n <>\n <Route path={LanesModel.lanePath}>\n <Route index element={this.getLaneOverview()} />\n <Route path=\"~component/*\" element={this.getLaneComponent()} />\n <Route path=\"~compare/*\" element={this.getLanesComparePage()} />\n <Route path=\"*\" element={<NotFoundPage />} />\n </Route>\n <Route path=\"*\" element={<NotFoundPage />} />\n </>\n ),\n },\n ];\n }\n\n overrideComputeLaneUrl(\n fn: () => {\n prefix: string;\n path: string;\n getLaneIdFromPathname: (pathname: string) => LaneId | undefined;\n getLaneUrl: (laneId: LaneId, relative?: boolean) => string;\n getLaneComponentUrl: (componentId: ComponentID, laneId: LaneId) => string;\n }\n ) {\n const { prefix, path, getLaneComponentUrl, getLaneIdFromPathname, getLaneUrl } = fn();\n LanesModel.lanesPrefix = prefix;\n LanesModel.lanePath = path;\n LanesModel.getLaneComponentUrl = getLaneComponentUrl;\n LanesModel.getLaneUrl = getLaneUrl;\n LanesModel.getLaneIdFromPathname = getLaneIdFromPathname;\n }\n\n // getLaneReadme() {\n // return <LaneReadmeOverview host={this.host} overviewSlot={this.overviewSlot} routeSlot={this.routeSlot} />;\n // }\n\n getLaneComponentIdFromUrl = () => {\n const idFromLocation = useIdFromLocation();\n const { lanesModel } = useLanes();\n const laneFromUrl = useViewedLaneFromUrl();\n const laneComponentId =\n idFromLocation && !laneFromUrl?.isDefault()\n ? lanesModel?.resolveComponentFromUrl(idFromLocation, laneFromUrl)\n : undefined;\n return laneComponentId;\n };\n\n useComponentId = () => {\n return this.getLaneComponentIdFromUrl()?.toString();\n };\n\n useComponentFilters = () => {\n const laneComponentId = this.getLaneComponentIdFromUrl();\n\n return {\n log: laneComponentId && {\n logHead: laneComponentId.version,\n },\n };\n };\n\n getLaneComponent() {\n return this.componentUI.getComponentUI(this.host, {\n componentId: this.useComponentId,\n useComponentFilters: this.useComponentFilters,\n });\n }\n\n getLaneComponentMenu() {\n return this.componentUI.getMenu(this.host, {\n componentId: this.useComponentId,\n useComponentFilters: this.useComponentFilters,\n });\n }\n\n getLaneOverview() {\n return (\n <LaneOverview\n routeSlot={this.routeSlot}\n overviewSlot={this.overviewSlot}\n host={this.lanesHost}\n useLanes={useLanes}\n />\n );\n }\n\n getLanesComparePage() {\n return <LaneComparePage getLaneCompare={this.getLaneCompare} groupByScope={this.lanesHost === 'workspace'} />;\n }\n\n getMenuRoutes() {\n return [\n {\n path: LanesModel.lanesPrefix,\n children: (\n <Route path={`${LanesModel.lanePath}/*`}>\n <Route path={'*'} element={this.getLanesOverviewMenu()} />\n <Route path=\"~component/*\" element={this.getLaneComponentMenu()} />\n </Route>\n ),\n },\n ];\n }\n\n getLanesOverviewMenu() {\n return <LanesOverviewMenu navigationSlot={this.navSlot} widgetSlot={this.menuWidgetSlot} />;\n }\n\n registerMenuWidget(...menuItems: MenuWidget[]) {\n this.menuWidgetSlot.register(menuItems);\n return this;\n }\n\n registerLaneProviderIgnoreSlot(ignoreFn: IgnoreDerivingFromUrl) {\n this.laneProviderIgnoreSlot.register(ignoreFn);\n return this;\n }\n\n private registerLanesRoutes() {\n this.registerNavigation([\n // {\n // props: {\n // href: '.',\n // exact: true,\n // children: 'README',\n // },\n // order: 1,\n // hide: () => {\n // const { lanesModel } = useLanes();\n // return !lanesModel?.viewedLane?.readmeComponent;\n // },\n // },\n {\n props: {\n href: '.',\n exact: true,\n children: 'Overview',\n },\n order: 1,\n },\n {\n props: {\n href: '~compare',\n children: 'Compare',\n },\n order: 2,\n hide: () => {\n const { lanesModel } = useLanes();\n return !lanesModel?.viewedLane || lanesModel?.lanes.length < 2;\n },\n },\n ]);\n }\n\n private registerRoutes() {\n this.registerHostAspectRoutes();\n this.registerLanesRoutes();\n }\n\n getLanesSwitcher() {\n const mainIcon = () => {\n const scope = useContext(ScopeContext);\n return (\n <ScopeIcon\n size={24}\n scopeImage={scope.icon}\n bgColor={scope.backgroundIconColor}\n className={styles.mainLaneIcon}\n />\n );\n };\n\n const LanesSwitcher = (\n <LaneSwitcher\n groupByScope={this.lanesHost === 'workspace'}\n mainIcon={this.lanesHost === 'scope' ? mainIcon : undefined}\n useLanes={this.getUseLanes()}\n />\n );\n\n return LanesSwitcher;\n }\n\n getLanesProvider() {\n return LanesProvider;\n }\n\n getUseLanes() {\n return useLanes;\n }\n\n private registerLanesDropdown() {\n const LanesSwitcher = this.getLanesSwitcher();\n\n this.hostAspect?.registerSidebarLink({\n component: function Gallery() {\n return LanesSwitcher;\n },\n weight: 1000,\n });\n }\n\n private renderContext = ({ children }: { children: ReactNode }) => {\n const ignoreFns = this.laneProviderIgnoreSlot.values();\n\n return <LanesProvider ignoreDerivingFromUrl={ignoreFns}>{children}</LanesProvider>;\n };\n\n registerRoute(route: RouteProps) {\n this.routeSlot.register(route);\n return this;\n }\n\n /**\n * register a new line beneath the lane overview section.\n */\n registerOverviewLine(...lines: LaneOverviewLine[]) {\n this.overviewSlot.register(lines);\n return this;\n }\n\n registerNavigation(routes: LanesNavPlugin[]) {\n this.navSlot.register(routes);\n }\n\n getLaneCompare = (props: LaneCompareProps) => {\n const tabs = this.componentCompareUI.tabs;\n\n if (!props.base || !props.compare) return null;\n\n return (\n <LaneCompare\n {...props}\n base={props.base}\n compare={props.compare}\n host={props.host || this.host}\n tabs={props.tabs || tabs}\n />\n );\n };\n\n static async provider(\n [uiUi, componentUI, workspaceUi, scopeUi, componentCompareUI]: [\n UiUI,\n ComponentUI,\n WorkspaceUI,\n ScopeUI,\n ComponentCompareUI\n ],\n _,\n [routeSlot, overviewSlot, navSlot, menuWidgetSlot, laneProviderIgnoreSlot]: [\n RouteSlot,\n LaneOverviewLineSlot,\n LanesOrderedNavigationSlot,\n MenuWidgetSlot,\n LaneProviderIgnoreSlot\n ],\n harmony: Harmony\n ) {\n const { config } = harmony;\n const host = String(config.get('teambit.harmony/bit'));\n let workspace: WorkspaceUI | undefined;\n let scope: ScopeUI | undefined;\n if (host === WorkspaceAspect.id) {\n workspace = workspaceUi;\n }\n if (host === ScopeAspect.id) {\n scope = scopeUi;\n }\n const lanesUi = new LanesUI(\n componentUI,\n componentCompareUI,\n routeSlot,\n navSlot,\n overviewSlot,\n menuWidgetSlot,\n laneProviderIgnoreSlot,\n workspace,\n scope\n );\n if (uiUi) uiUi.registerRenderHooks({ reactContext: lanesUi.renderContext });\n lanesUi.registerRoutes();\n lanesUi.registerMenuWidget(() => {\n const { lanesModel } = useLanes();\n if (!lanesModel?.viewedLane) return null;\n const { viewedLane, currentLane } = lanesModel;\n return (\n <UseLaneMenu\n actionName={'Import'}\n actionIcon={'terminal'}\n host={lanesUi.lanesHost}\n viewedLaneId={viewedLane.id}\n currentLaneId={currentLane?.id}\n />\n );\n });\n lanesUi.registerLanesDropdown();\n return lanesUi;\n }\n}\n\nexport default LanesUI;\n\nLanesAspect.addRuntime(LanesUI);\n"],"mappings":"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"}
1
+ {"version":3,"names":["useComponentFilters","idFromLocation","useIdFromLocation","lanesModel","loading","useLanes","laneFromUrl","useViewedLaneFromUrl","laneComponentId","isDefault","resolveComponentFromUrl","log","logHead","version","useLaneComponentIdFromUrl","query","useQuery","componentVersion","get","componentId","ComponentID","fromString","undefined","useComponentId","toString","LanesUI","constructor","componentUI","componentCompareUI","routeSlot","navSlot","menuWidgetSlot","overviewSlot","laneProviderIgnoreSlot","workspace","scope","children","ignoreFns","values","props","tabs","base","compare","host","hostAspect","lanesHost","WorkspaceAspect","id","ScopeAspect","registerHostAspectRoutes","registerRoutes","getLaneRoutes","registerMenuRoutes","getMenuRoutes","path","LanesModel","lanesPrefix","lanePath","getLaneOverview","getLaneComponent","getLanesComparePage","overrideComputeLaneUrl","fn","prefix","getLaneComponentUrl","getLaneIdFromPathname","getLaneUrl","getComponentUI","getLaneComponentMenu","getMenu","getLaneCompare","getLanesOverviewMenu","registerMenuWidget","menuItems","register","registerLaneProviderIgnoreSlot","ignoreFn","registerLanesRoutes","registerNavigation","href","exact","order","hide","viewedLane","lanes","length","getLanesSwitcher","mainIcon","useContext","ScopeContext","icon","backgroundIconColor","styles","mainLaneIcon","LanesSwitcher","getLanesProvider","LanesProvider","getUseLanes","registerLanesDropdown","registerSidebarLink","component","Gallery","weight","registerRoute","route","registerOverviewLine","lines","routes","provider","uiUi","workspaceUi","scopeUi","_","harmony","config","String","lanesUi","registerRenderHooks","reactContext","renderContext","currentLane","UIAspect","ComponentAspect","ComponentCompareAspect","UIRuntime","Slot","withType","LanesAspect","addRuntime"],"sources":["lanes.ui.runtime.tsx"],"sourcesContent":["import React, { ReactNode, useContext } from 'react';\nimport { Route, RouteProps } from 'react-router-dom';\nimport { Slot, Harmony, SlotRegistry } from '@teambit/harmony';\nimport { LaneCompare, LaneCompareProps as DefaultLaneCompareProps } from '@teambit/lanes.ui.compare.lane-compare';\nimport { UIRuntime, UiUI, UIAspect } from '@teambit/ui';\nimport { LanesAspect } from '@teambit/lanes';\nimport { NavigationSlot, RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { NotFoundPage } from '@teambit/design.ui.pages.not-found';\nimport ScopeAspect, { ScopeContext, ScopeUI } from '@teambit/scope';\nimport WorkspaceAspect, { WorkspaceUI } from '@teambit/workspace';\nimport ComponentAspect, { ComponentUI, useIdFromLocation, ComponentID } from '@teambit/component';\nimport { MenuWidget, MenuWidgetSlot } from '@teambit/ui-foundation.ui.menu';\nimport { LaneOverview, LaneOverviewLine, LaneOverviewLineSlot } from '@teambit/lanes.ui.lane-overview';\nimport {\n LanesNavPlugin,\n LanesOrderedNavigationSlot,\n LanesOverviewMenu,\n} from '@teambit/lanes.ui.menus.lanes-overview-menu';\nimport { useQuery } from '@teambit/ui-foundation.ui.react-router.use-query';\nimport { UseLaneMenu } from '@teambit/lanes.ui.menus.use-lanes-menu';\nimport { LanesHost, LanesModel } from '@teambit/lanes.ui.models.lanes-model';\nimport { LanesProvider, useLanes, IgnoreDerivingFromUrl } from '@teambit/lanes.hooks.use-lanes';\nimport { LaneSwitcher } from '@teambit/lanes.ui.navigation.lane-switcher';\nimport { LaneId } from '@teambit/lane-id';\nimport { useViewedLaneFromUrl } from '@teambit/lanes.hooks.use-viewed-lane-from-url';\nimport { ComponentCompareAspect, ComponentCompareUI } from '@teambit/component-compare';\nimport { LaneComparePage } from '@teambit/lanes.ui.compare.lane-compare-page';\nimport { ScopeIcon } from '@teambit/scope.ui.scope-icon';\n\nimport styles from './lanes.ui.module.scss';\n\nexport type LaneCompareProps = Partial<DefaultLaneCompareProps>;\nexport type LaneProviderIgnoreSlot = SlotRegistry<IgnoreDerivingFromUrl>;\nexport function useComponentFilters() {\n const idFromLocation = useIdFromLocation();\n const { lanesModel, loading } = useLanes();\n const laneFromUrl = useViewedLaneFromUrl();\n const laneComponentId =\n idFromLocation && !laneFromUrl?.isDefault()\n ? lanesModel?.resolveComponentFromUrl(idFromLocation, laneFromUrl) ?? null\n : null;\n\n if (laneComponentId === null || loading) {\n return {\n loading: true,\n };\n }\n\n return {\n loading: false,\n log: {\n logHead: laneComponentId.version,\n },\n };\n}\nexport function useLaneComponentIdFromUrl(): ComponentID | undefined | null {\n const idFromLocation = useIdFromLocation();\n const { lanesModel, loading } = useLanes();\n const laneFromUrl = useViewedLaneFromUrl();\n const query = useQuery();\n const componentVersion = query.get('version');\n\n if (componentVersion && laneFromUrl) {\n const componentId = ComponentID.fromString(`${idFromLocation}@${componentVersion}`);\n return componentId;\n }\n const laneComponentId =\n idFromLocation && !laneFromUrl?.isDefault()\n ? lanesModel?.resolveComponentFromUrl(idFromLocation, laneFromUrl) ?? null\n : null;\n\n return loading ? undefined : laneComponentId;\n}\n\nexport function useComponentId() {\n return useLaneComponentIdFromUrl()?.toString();\n}\n\nexport class LanesUI {\n static dependencies = [UIAspect, ComponentAspect, WorkspaceAspect, ScopeAspect, ComponentCompareAspect];\n\n static runtime = UIRuntime;\n static slots = [\n Slot.withType<RouteProps>(),\n Slot.withType<LaneOverviewLineSlot>(),\n Slot.withType<NavigationSlot>(),\n Slot.withType<MenuWidgetSlot>(),\n Slot.withType<LaneProviderIgnoreSlot>(),\n ];\n\n constructor(\n private componentUI: ComponentUI,\n private componentCompareUI: ComponentCompareUI,\n private routeSlot: RouteSlot,\n private navSlot: LanesOrderedNavigationSlot,\n private menuWidgetSlot: MenuWidgetSlot,\n /**\n * overview line slot to add new lines beneath the overview section\n */\n private overviewSlot: LaneOverviewLineSlot,\n private laneProviderIgnoreSlot: LaneProviderIgnoreSlot,\n private workspace?: WorkspaceUI,\n private scope?: ScopeUI\n ) {\n this.hostAspect = workspace || scope;\n this.lanesHost = workspace ? 'workspace' : 'scope';\n this.host = workspace ? WorkspaceAspect.id : ScopeAspect.id;\n }\n\n private readonly lanesHost: LanesHost;\n private readonly hostAspect?: WorkspaceUI | ScopeUI;\n private readonly host: string;\n\n private registerHostAspectRoutes() {\n if (!this.hostAspect) return;\n this.hostAspect.registerRoutes(this.getLaneRoutes());\n this.hostAspect.registerMenuRoutes(this.getMenuRoutes());\n }\n\n getLaneRoutes() {\n return [\n {\n path: LanesModel.lanesPrefix,\n children: (\n <>\n <Route path={LanesModel.lanePath}>\n <Route index element={this.getLaneOverview()} />\n <Route path=\"~component/*\" element={this.getLaneComponent()} />\n <Route path=\"~compare/*\" element={this.getLanesComparePage()} />\n <Route path=\"*\" element={<NotFoundPage />} />\n </Route>\n <Route path=\"*\" element={<NotFoundPage />} />\n </>\n ),\n },\n ];\n }\n\n overrideComputeLaneUrl(\n fn: () => {\n prefix: string;\n path: string;\n getLaneIdFromPathname: (pathname: string) => LaneId | undefined;\n getLaneUrl: (laneId: LaneId, relative?: boolean) => string;\n getLaneComponentUrl: (componentId: ComponentID, laneId: LaneId) => string;\n }\n ) {\n const { prefix, path, getLaneComponentUrl, getLaneIdFromPathname, getLaneUrl } = fn();\n LanesModel.lanesPrefix = prefix;\n LanesModel.lanePath = path;\n LanesModel.getLaneComponentUrl = getLaneComponentUrl;\n LanesModel.getLaneUrl = getLaneUrl;\n LanesModel.getLaneIdFromPathname = getLaneIdFromPathname;\n }\n\n // getLaneReadme() {\n // return <LaneReadmeOverview host={this.host} overviewSlot={this.overviewSlot} routeSlot={this.routeSlot} />;\n // }\n\n getLaneComponent() {\n return this.componentUI.getComponentUI(this.host, {\n componentId: useComponentId,\n useComponentFilters,\n });\n }\n\n getLaneComponentMenu() {\n return this.componentUI.getMenu(this.host, {\n componentId: useComponentId,\n useComponentFilters,\n });\n }\n\n getLaneOverview() {\n return (\n <LaneOverview\n routeSlot={this.routeSlot}\n overviewSlot={this.overviewSlot}\n host={this.lanesHost}\n useLanes={useLanes}\n />\n );\n }\n\n getLanesComparePage() {\n return <LaneComparePage getLaneCompare={this.getLaneCompare} groupByScope={this.lanesHost === 'workspace'} />;\n }\n\n getMenuRoutes() {\n return [\n {\n path: LanesModel.lanesPrefix,\n children: (\n <Route path={`${LanesModel.lanePath}/*`}>\n <Route path={'*'} element={this.getLanesOverviewMenu()} />\n <Route path=\"~component/*\" element={this.getLaneComponentMenu()} />\n </Route>\n ),\n },\n ];\n }\n\n getLanesOverviewMenu() {\n return <LanesOverviewMenu navigationSlot={this.navSlot} widgetSlot={this.menuWidgetSlot} />;\n }\n\n registerMenuWidget(...menuItems: MenuWidget[]) {\n this.menuWidgetSlot.register(menuItems);\n return this;\n }\n\n registerLaneProviderIgnoreSlot(ignoreFn: IgnoreDerivingFromUrl) {\n this.laneProviderIgnoreSlot.register(ignoreFn);\n return this;\n }\n\n private registerLanesRoutes() {\n this.registerNavigation([\n // {\n // props: {\n // href: '.',\n // exact: true,\n // children: 'README',\n // },\n // order: 1,\n // hide: () => {\n // const { lanesModel } = useLanes();\n // return !lanesModel?.viewedLane?.readmeComponent;\n // },\n // },\n {\n props: {\n href: '.',\n exact: true,\n children: 'Overview',\n },\n order: 1,\n },\n {\n props: {\n href: '~compare',\n children: 'Compare',\n },\n order: 2,\n hide: () => {\n const { lanesModel } = useLanes();\n return !lanesModel?.viewedLane || lanesModel?.lanes.length < 2;\n },\n },\n ]);\n }\n\n private registerRoutes() {\n this.registerHostAspectRoutes();\n this.registerLanesRoutes();\n }\n\n getLanesSwitcher() {\n const mainIcon = () => {\n const scope = useContext(ScopeContext);\n return (\n <ScopeIcon\n size={24}\n scopeImage={scope.icon}\n bgColor={scope.backgroundIconColor}\n className={styles.mainLaneIcon}\n />\n );\n };\n\n const LanesSwitcher = (\n <LaneSwitcher\n groupByScope={this.lanesHost === 'workspace'}\n mainIcon={this.lanesHost === 'scope' ? mainIcon : undefined}\n useLanes={useLanes}\n />\n );\n\n return LanesSwitcher;\n }\n\n getLanesProvider() {\n return LanesProvider;\n }\n\n getUseLanes() {\n return useLanes;\n }\n\n private registerLanesDropdown() {\n const LanesSwitcher = this.getLanesSwitcher();\n\n this.hostAspect?.registerSidebarLink({\n component: function Gallery() {\n return LanesSwitcher;\n },\n weight: 1000,\n });\n }\n\n private renderContext = ({ children }: { children: ReactNode }) => {\n const ignoreFns = this.laneProviderIgnoreSlot.values();\n\n return <LanesProvider ignoreDerivingFromUrl={ignoreFns}>{children}</LanesProvider>;\n };\n\n registerRoute(route: RouteProps) {\n this.routeSlot.register(route);\n return this;\n }\n\n /**\n * register a new line beneath the lane overview section.\n */\n registerOverviewLine(...lines: LaneOverviewLine[]) {\n this.overviewSlot.register(lines);\n return this;\n }\n\n registerNavigation(routes: LanesNavPlugin[]) {\n this.navSlot.register(routes);\n }\n\n getLaneCompare = (props: LaneCompareProps) => {\n const tabs = this.componentCompareUI.tabs;\n\n if (!props.base || !props.compare) return null;\n\n return (\n <LaneCompare\n {...props}\n base={props.base}\n compare={props.compare}\n host={props.host || this.host}\n tabs={props.tabs || tabs}\n />\n );\n };\n\n static async provider(\n [uiUi, componentUI, workspaceUi, scopeUi, componentCompareUI]: [\n UiUI,\n ComponentUI,\n WorkspaceUI,\n ScopeUI,\n ComponentCompareUI\n ],\n _,\n [routeSlot, overviewSlot, navSlot, menuWidgetSlot, laneProviderIgnoreSlot]: [\n RouteSlot,\n LaneOverviewLineSlot,\n LanesOrderedNavigationSlot,\n MenuWidgetSlot,\n LaneProviderIgnoreSlot\n ],\n harmony: Harmony\n ) {\n const { config } = harmony;\n const host = String(config.get('teambit.harmony/bit'));\n let workspace: WorkspaceUI | undefined;\n let scope: ScopeUI | undefined;\n if (host === WorkspaceAspect.id) {\n workspace = workspaceUi;\n }\n if (host === ScopeAspect.id) {\n scope = scopeUi;\n }\n const lanesUi = new LanesUI(\n componentUI,\n componentCompareUI,\n routeSlot,\n navSlot,\n overviewSlot,\n menuWidgetSlot,\n laneProviderIgnoreSlot,\n workspace,\n scope\n );\n if (uiUi) uiUi.registerRenderHooks({ reactContext: lanesUi.renderContext });\n lanesUi.registerRoutes();\n lanesUi.registerMenuWidget(() => {\n const { lanesModel } = useLanes();\n if (!lanesModel?.viewedLane) return null;\n const { viewedLane, currentLane } = lanesModel;\n return (\n <UseLaneMenu\n actionName={'Import'}\n actionIcon={'terminal'}\n host={lanesUi.lanesHost}\n viewedLaneId={viewedLane.id}\n currentLaneId={currentLane?.id}\n />\n );\n });\n lanesUi.registerLanesDropdown();\n return lanesUi;\n }\n}\n\nexport default LanesUI;\n\nLanesAspect.addRuntime(LanesUI);\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.lanes_lanes@0.0.649/dist/lanes.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.lanes_lanes@0.0.649/dist/lanes.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.lanes_lanes@0.0.650/dist/lanes.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.lanes_lanes@0.0.650/dist/lanes.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -16,6 +16,7 @@ import {
16
16
  LanesOrderedNavigationSlot,
17
17
  LanesOverviewMenu,
18
18
  } from '@teambit/lanes.ui.menus.lanes-overview-menu';
19
+ import { useQuery } from '@teambit/ui-foundation.ui.react-router.use-query';
19
20
  import { UseLaneMenu } from '@teambit/lanes.ui.menus.use-lanes-menu';
20
21
  import { LanesHost, LanesModel } from '@teambit/lanes.ui.models.lanes-model';
21
22
  import { LanesProvider, useLanes, IgnoreDerivingFromUrl } from '@teambit/lanes.hooks.use-lanes';
@@ -30,6 +31,50 @@ import styles from './lanes.ui.module.scss';
30
31
 
31
32
  export type LaneCompareProps = Partial<DefaultLaneCompareProps>;
32
33
  export type LaneProviderIgnoreSlot = SlotRegistry<IgnoreDerivingFromUrl>;
34
+ export function useComponentFilters() {
35
+ const idFromLocation = useIdFromLocation();
36
+ const { lanesModel, loading } = useLanes();
37
+ const laneFromUrl = useViewedLaneFromUrl();
38
+ const laneComponentId =
39
+ idFromLocation && !laneFromUrl?.isDefault()
40
+ ? lanesModel?.resolveComponentFromUrl(idFromLocation, laneFromUrl) ?? null
41
+ : null;
42
+
43
+ if (laneComponentId === null || loading) {
44
+ return {
45
+ loading: true,
46
+ };
47
+ }
48
+
49
+ return {
50
+ loading: false,
51
+ log: {
52
+ logHead: laneComponentId.version,
53
+ },
54
+ };
55
+ }
56
+ export function useLaneComponentIdFromUrl(): ComponentID | undefined | null {
57
+ const idFromLocation = useIdFromLocation();
58
+ const { lanesModel, loading } = useLanes();
59
+ const laneFromUrl = useViewedLaneFromUrl();
60
+ const query = useQuery();
61
+ const componentVersion = query.get('version');
62
+
63
+ if (componentVersion && laneFromUrl) {
64
+ const componentId = ComponentID.fromString(`${idFromLocation}@${componentVersion}`);
65
+ return componentId;
66
+ }
67
+ const laneComponentId =
68
+ idFromLocation && !laneFromUrl?.isDefault()
69
+ ? lanesModel?.resolveComponentFromUrl(idFromLocation, laneFromUrl) ?? null
70
+ : null;
71
+
72
+ return loading ? undefined : laneComponentId;
73
+ }
74
+
75
+ export function useComponentId() {
76
+ return useLaneComponentIdFromUrl()?.toString();
77
+ }
33
78
 
34
79
  export class LanesUI {
35
80
  static dependencies = [UIAspect, ComponentAspect, WorkspaceAspect, ScopeAspect, ComponentCompareAspect];
@@ -112,42 +157,17 @@ export class LanesUI {
112
157
  // return <LaneReadmeOverview host={this.host} overviewSlot={this.overviewSlot} routeSlot={this.routeSlot} />;
113
158
  // }
114
159
 
115
- getLaneComponentIdFromUrl = () => {
116
- const idFromLocation = useIdFromLocation();
117
- const { lanesModel } = useLanes();
118
- const laneFromUrl = useViewedLaneFromUrl();
119
- const laneComponentId =
120
- idFromLocation && !laneFromUrl?.isDefault()
121
- ? lanesModel?.resolveComponentFromUrl(idFromLocation, laneFromUrl)
122
- : undefined;
123
- return laneComponentId;
124
- };
125
-
126
- useComponentId = () => {
127
- return this.getLaneComponentIdFromUrl()?.toString();
128
- };
129
-
130
- useComponentFilters = () => {
131
- const laneComponentId = this.getLaneComponentIdFromUrl();
132
-
133
- return {
134
- log: laneComponentId && {
135
- logHead: laneComponentId.version,
136
- },
137
- };
138
- };
139
-
140
160
  getLaneComponent() {
141
161
  return this.componentUI.getComponentUI(this.host, {
142
- componentId: this.useComponentId,
143
- useComponentFilters: this.useComponentFilters,
162
+ componentId: useComponentId,
163
+ useComponentFilters,
144
164
  });
145
165
  }
146
166
 
147
167
  getLaneComponentMenu() {
148
168
  return this.componentUI.getMenu(this.host, {
149
- componentId: this.useComponentId,
150
- useComponentFilters: this.useComponentFilters,
169
+ componentId: useComponentId,
170
+ useComponentFilters,
151
171
  });
152
172
  }
153
173
 
@@ -252,7 +272,7 @@ export class LanesUI {
252
272
  <LaneSwitcher
253
273
  groupByScope={this.lanesHost === 'workspace'}
254
274
  mainIcon={this.lanesHost === 'scope' ? mainIcon : undefined}
255
- useLanes={this.getUseLanes()}
275
+ useLanes={useLanes}
256
276
  />
257
277
  );
258
278
 
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/lanes",
3
- "version": "0.0.649",
3
+ "version": "0.0.650",
4
4
  "homepage": "https://bit.cloud/teambit/lanes/lanes",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.lanes",
8
8
  "name": "lanes",
9
- "version": "0.0.649"
9
+ "version": "0.0.650"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
@@ -22,35 +22,36 @@
22
22
  "@teambit/scope.ui.scope-icon": "0.0.91",
23
23
  "@teambit/bit-error": "0.0.402",
24
24
  "@teambit/component-version": "0.0.408",
25
- "@teambit/lane-id": "0.0.242",
26
- "@teambit/scope": "0.0.1077",
27
- "@teambit/snapping": "0.0.392",
28
- "@teambit/lanes.ui.models.lanes-model": "0.0.142",
29
- "@teambit/cli": "0.0.725",
30
- "@teambit/workspace": "0.0.1077",
31
- "@teambit/express": "0.0.823",
32
- "@teambit/logger": "0.0.818",
33
- "@teambit/graphql": "0.0.1077",
34
- "@teambit/component-compare": "0.0.325",
35
- "@teambit/component-writer": "0.0.113",
36
- "@teambit/component": "0.0.1077",
37
- "@teambit/export": "0.0.1077",
38
- "@teambit/importer": "0.0.506",
39
- "@teambit/lanes.entities.lane-diff": "0.0.87",
40
- "@teambit/lanes.modules.diff": "0.0.360",
41
- "@teambit/merging": "0.0.392",
42
- "@teambit/lanes.hooks.use-lanes": "0.0.189",
43
- "@teambit/lanes.hooks.use-viewed-lane-from-url": "0.0.151",
44
- "@teambit/lanes.ui.compare.lane-compare-page": "0.0.83",
45
- "@teambit/lanes.ui.compare.lane-compare": "0.0.99",
46
- "@teambit/lanes.ui.lane-overview": "0.0.143",
25
+ "@teambit/lane-id": "0.0.243",
26
+ "@teambit/scope": "0.0.1078",
27
+ "@teambit/snapping": "0.0.393",
28
+ "@teambit/lanes.ui.models.lanes-model": "0.0.143",
29
+ "@teambit/cli": "0.0.726",
30
+ "@teambit/workspace": "0.0.1078",
31
+ "@teambit/express": "0.0.824",
32
+ "@teambit/logger": "0.0.819",
33
+ "@teambit/graphql": "0.0.1078",
34
+ "@teambit/component-compare": "0.0.326",
35
+ "@teambit/component-writer": "0.0.114",
36
+ "@teambit/component": "0.0.1078",
37
+ "@teambit/export": "0.0.1078",
38
+ "@teambit/importer": "0.0.507",
39
+ "@teambit/lanes.entities.lane-diff": "0.0.88",
40
+ "@teambit/lanes.modules.diff": "0.0.361",
41
+ "@teambit/merging": "0.0.393",
42
+ "@teambit/lanes.hooks.use-lanes": "0.0.190",
43
+ "@teambit/lanes.hooks.use-viewed-lane-from-url": "0.0.152",
44
+ "@teambit/lanes.ui.compare.lane-compare-page": "0.0.84",
45
+ "@teambit/lanes.ui.compare.lane-compare": "0.0.100",
46
+ "@teambit/lanes.ui.lane-overview": "0.0.144",
47
47
  "@teambit/lanes.ui.menus.lanes-overview-menu": "0.0.5",
48
- "@teambit/lanes.ui.menus.use-lanes-menu": "0.0.142",
49
- "@teambit/lanes.ui.navigation.lane-switcher": "0.0.144",
48
+ "@teambit/lanes.ui.menus.use-lanes-menu": "0.0.143",
49
+ "@teambit/lanes.ui.navigation.lane-switcher": "0.0.145",
50
50
  "@teambit/ui-foundation.ui.menu": "0.0.497",
51
51
  "@teambit/ui-foundation.ui.react-router.slot-router": "0.0.501",
52
- "@teambit/ui": "0.0.1077",
53
- "@teambit/checkout": "0.0.246"
52
+ "@teambit/ui-foundation.ui.react-router.use-query": "0.0.496",
53
+ "@teambit/ui": "0.0.1078",
54
+ "@teambit/checkout": "0.0.247"
54
55
  },
55
56
  "devDependencies": {
56
57
  "@types/react": "^17.0.8",
@@ -62,13 +63,13 @@
62
63
  "@types/react-dom": "^17.0.5",
63
64
  "@types/jest": "^26.0.0",
64
65
  "@types/testing-library__jest-dom": "5.9.5",
65
- "@teambit/component.testing.mock-components": "0.0.89",
66
- "@teambit/harmony.testing.load-aspect": "0.0.88",
66
+ "@teambit/component.testing.mock-components": "0.0.90",
67
+ "@teambit/harmony.testing.load-aspect": "0.0.89",
67
68
  "@teambit/workspace.testing.mock-workspace": "0.0.14"
68
69
  },
69
70
  "peerDependencies": {
70
71
  "react-router-dom": "^6.0.0",
71
- "@teambit/legacy": "1.0.505",
72
+ "@teambit/legacy": "1.0.506",
72
73
  "react": "^16.8.0 || ^17.0.0",
73
74
  "react-dom": "^16.8.0 || ^17.0.0"
74
75
  },