@teambit/lanes 0.0.649 → 0.0.651
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lanes.ui.runtime.d.ts +11 -7
- package/dist/lanes.ui.runtime.js +57 -26
- package/dist/lanes.ui.runtime.js.map +1 -1
- package/dist/{preview-1686712699037.js → preview-1686886045563.js} +2 -2
- package/lanes.ui.runtime.tsx +50 -30
- package/package-tar/teambit-lanes-0.0.651.tgz +0 -0
- package/package.json +32 -31
- package/package-tar/teambit-lanes-0.0.649.tgz +0 -0
@@ -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;
|
package/dist/lanes.ui.runtime.js
CHANGED
@@ -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:
|
284
|
-
useComponentFilters
|
314
|
+
componentId: useComponentId,
|
315
|
+
useComponentFilters
|
285
316
|
});
|
286
317
|
}
|
287
318
|
getLaneComponentMenu() {
|
288
319
|
return this.componentUI.getMenu(this.host, {
|
289
|
-
componentId:
|
290
|
-
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:
|
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":";;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAKA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA4C;AAAA;AAKrC,MAAMA,OAAO,CAAC;EAYnBC,WAAW,CACDC,WAAwB,EACxBC,kBAAsC,EACtCC,SAAoB,EACpBC,OAAmC,EACnCC,cAA8B;EACtC;AACJ;AACA;EACYC,YAAkC,EAClCC,sBAA8C,EAC9CC,SAAuB,EACvBC,KAAe,EACvB;IAAA,KAZQR,WAAwB,GAAxBA,WAAwB;IAAA,KACxBC,kBAAsC,GAAtCA,kBAAsC;IAAA,KACtCC,SAAoB,GAApBA,SAAoB;IAAA,KACpBC,OAAmC,GAAnCA,OAAmC;IAAA,KACnCC,cAA8B,GAA9BA,cAA8B;IAAA,KAI9BC,YAAkC,GAAlCA,YAAkC;IAAA,KAClCC,sBAA8C,GAA9CA,sBAA8C;IAAA,KAC9CC,SAAuB,GAAvBA,SAAuB;IAAA,KACvBC,KAAe,GAAfA,KAAe;IAAA;IAAA;IAAA;IAAA,mEAyDG,MAAM;MAChC,MAAMC,cAAc,GAAG,IAAAC,8BAAiB,GAAE;MAC1C,MAAM;QAAEC;MAAW,CAAC,GAAG,IAAAC,sBAAQ,GAAE;MACjC,MAAMC,WAAW,GAAG,IAAAC,mCAAoB,GAAE;MAC1C,MAAMC,eAAe,GACnBN,cAAc,IAAI,EAACI,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEG,SAAS,EAAE,IACvCL,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEM,uBAAuB,CAACR,cAAc,EAAEI,WAAW,CAAC,GAChEK,SAAS;MACf,OAAOH,eAAe;IACxB,CAAC;IAAA,wDAEgB,MAAM;MAAA;MACrB,gCAAO,IAAI,CAACI,yBAAyB,EAAE,0DAAhC,sBAAkCC,QAAQ,EAAE;IACrD,CAAC;IAAA,6DAEqB,MAAM;MAC1B,MAAML,eAAe,GAAG,IAAI,CAACI,yBAAyB,EAAE;MAExD,OAAO;QACLE,GAAG,EAAEN,eAAe,IAAI;UACtBO,OAAO,EAAEP,eAAe,CAACQ;QAC3B;MACF,CAAC;IACH,CAAC;IAAA,uDA+IuB,CAAC;MAAEC;IAAkC,CAAC,KAAK;MACjE,MAAMC,SAAS,GAAG,IAAI,CAACnB,sBAAsB,CAACoB,MAAM,EAAE;MAEtD,oBAAO,+BAAC,2BAAa;QAAC,qBAAqB,EAAED;MAAU,GAAED,QAAQ,CAAiB;IACpF,CAAC;IAAA,wDAmBiBG,KAAuB,IAAK;MAC5C,MAAMC,IAAI,GAAG,IAAI,CAAC3B,kBAAkB,CAAC2B,IAAI;MAEzC,IAAI,CAACD,KAAK,CAACE,IAAI,IAAI,CAACF,KAAK,CAACG,OAAO,EAAE,OAAO,IAAI;MAE9C,oBACE,+BAAC,6BAAW,+BACNH,KAAK;QACT,IAAI,EAAEA,KAAK,CAACE,IAAK;QACjB,OAAO,EAAEF,KAAK,CAACG,OAAQ;QACvB,IAAI,EAAEH,KAAK,CAACI,IAAI,IAAI,IAAI,CAACA,IAAK;QAC9B,IAAI,EAAEJ,KAAK,CAACC,IAAI,IAAIA;MAAK,GACzB;IAEN,CAAC;IAlQC,IAAI,CAACI,UAAU,GAAGzB,SAAS,IAAIC,KAAK;IACpC,IAAI,CAACyB,SAAS,GAAG1B,SAAS,GAAG,WAAW,GAAG,OAAO;IAClD,IAAI,CAACwB,IAAI,GAAGxB,SAAS,GAAG2B,oBAAe,CAACC,EAAE,GAAGC,gBAAW,CAACD,EAAE;EAC7D;EAMQE,wBAAwB,GAAG;IACjC,IAAI,CAAC,IAAI,CAACL,UAAU,EAAE;IACtB,IAAI,CAACA,UAAU,CAACM,cAAc,CAAC,IAAI,CAACC,aAAa,EAAE,CAAC;IACpD,IAAI,CAACP,UAAU,CAACQ,kBAAkB,CAAC,IAAI,CAACC,aAAa,EAAE,CAAC;EAC1D;EAEAF,aAAa,GAAG;IACd,OAAO,CACL;MACEG,IAAI,EAAEC,2BAAU,CAACC,WAAW;MAC5BpB,QAAQ,eACN,6EACE,+BAAC,uBAAK;QAAC,IAAI,EAAEmB,2BAAU,CAACE;MAAS,gBAC/B,+BAAC,uBAAK;QAAC,KAAK;QAAC,OAAO,EAAE,IAAI,CAACC,eAAe;MAAG,EAAG,eAChD,+BAAC,uBAAK;QAAC,IAAI,EAAC,cAAc;QAAC,OAAO,EAAE,IAAI,CAACC,gBAAgB;MAAG,EAAG,eAC/D,+BAAC,uBAAK;QAAC,IAAI,EAAC,YAAY;QAAC,OAAO,EAAE,IAAI,CAACC,mBAAmB;MAAG,EAAG,eAChE,+BAAC,uBAAK;QAAC,IAAI,EAAC,GAAG;QAAC,OAAO,eAAE,+BAAC,6BAAY;MAAI,EAAG,CACvC,eACR,+BAAC,uBAAK;QAAC,IAAI,EAAC,GAAG;QAAC,OAAO,eAAE,+BAAC,6BAAY;MAAI,EAAG;IAGnD,CAAC,CACF;EACH;EAEAC,sBAAsB,CACpBC,EAMC,EACD;IACA,MAAM;MAAEC,MAAM;MAAET,IAAI;MAAEU,mBAAmB;MAAEC,qBAAqB;MAAEC;IAAW,CAAC,GAAGJ,EAAE,EAAE;IACrFP,2BAAU,CAACC,WAAW,GAAGO,MAAM;IAC/BR,2BAAU,CAACE,QAAQ,GAAGH,IAAI;IAC1BC,2BAAU,CAACS,mBAAmB,GAAGA,mBAAmB;IACpDT,2BAAU,CAACW,UAAU,GAAGA,UAAU;IAClCX,2BAAU,CAACU,qBAAqB,GAAGA,qBAAqB;EAC1D;;EAEA;EACA;EACA;;EA2BAN,gBAAgB,GAAG;IACjB,OAAO,IAAI,CAAC/C,WAAW,CAACuD,cAAc,CAAC,IAAI,CAACxB,IAAI,EAAE;MAChDyB,WAAW,EAAE,IAAI,CAACC,cAAc;MAChCC,mBAAmB,EAAE,IAAI,CAACA;IAC5B,CAAC,CAAC;EACJ;EAEAC,oBAAoB,GAAG;IACrB,OAAO,IAAI,CAAC3D,WAAW,CAAC4D,OAAO,CAAC,IAAI,CAAC7B,IAAI,EAAE;MACzCyB,WAAW,EAAE,IAAI,CAACC,cAAc;MAChCC,mBAAmB,EAAE,IAAI,CAACA;IAC5B,CAAC,CAAC;EACJ;EAEAZ,eAAe,GAAG;IAChB,oBACE,+BAAC,uBAAY;MACX,SAAS,EAAE,IAAI,CAAC5C,SAAU;MAC1B,YAAY,EAAE,IAAI,CAACG,YAAa;MAChC,IAAI,EAAE,IAAI,CAAC4B,SAAU;MACrB,QAAQ,EAAErB;IAAS,EACnB;EAEN;EAEAoC,mBAAmB,GAAG;IACpB,oBAAO,+BAAC,kCAAe;MAAC,cAAc,EAAE,IAAI,CAACa,cAAe;MAAC,YAAY,EAAE,IAAI,CAAC5B,SAAS,KAAK;IAAY,EAAG;EAC/G;EAEAQ,aAAa,GAAG;IACd,OAAO,CACL;MACEC,IAAI,EAAEC,2BAAU,CAACC,WAAW;MAC5BpB,QAAQ,eACN,+BAAC,uBAAK;QAAC,IAAI,EAAG,GAAEmB,2BAAU,CAACE,QAAS;MAAI,gBACtC,+BAAC,uBAAK;QAAC,IAAI,EAAE,GAAI;QAAC,OAAO,EAAE,IAAI,CAACiB,oBAAoB;MAAG,EAAG,eAC1D,+BAAC,uBAAK;QAAC,IAAI,EAAC,cAAc;QAAC,OAAO,EAAE,IAAI,CAACH,oBAAoB;MAAG,EAAG;IAGzE,CAAC,CACF;EACH;EAEAG,oBAAoB,GAAG;IACrB,oBAAO,+BAAC,iCAAiB;MAAC,cAAc,EAAE,IAAI,CAAC3D,OAAQ;MAAC,UAAU,EAAE,IAAI,CAACC;IAAe,EAAG;EAC7F;EAEA2D,kBAAkB,CAAC,GAAGC,SAAuB,EAAE;IAC7C,IAAI,CAAC5D,cAAc,CAAC6D,QAAQ,CAACD,SAAS,CAAC;IACvC,OAAO,IAAI;EACb;EAEAE,8BAA8B,CAACC,QAA+B,EAAE;IAC9D,IAAI,CAAC7D,sBAAsB,CAAC2D,QAAQ,CAACE,QAAQ,CAAC;IAC9C,OAAO,IAAI;EACb;EAEQC,mBAAmB,GAAG;IAC5B,IAAI,CAACC,kBAAkB,CAAC;IACtB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;MACE1C,KAAK,EAAE;QACL2C,IAAI,EAAE,GAAG;QACTC,KAAK,EAAE,IAAI;QACX/C,QAAQ,EAAE;MACZ,CAAC;MACDgD,KAAK,EAAE;IACT,CAAC,EACD;MACE7C,KAAK,EAAE;QACL2C,IAAI,EAAE,UAAU;QAChB9C,QAAQ,EAAE;MACZ,CAAC;MACDgD,KAAK,EAAE,CAAC;MACRC,IAAI,EAAE,MAAM;QACV,MAAM;UAAE9D;QAAW,CAAC,GAAG,IAAAC,sBAAQ,GAAE;QACjC,OAAO,EAACD,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAE+D,UAAU,KAAI,CAAA/D,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEgE,KAAK,CAACC,MAAM,IAAG,CAAC;MAChE;IACF,CAAC,CACF,CAAC;EACJ;EAEQtC,cAAc,GAAG;IACvB,IAAI,CAACD,wBAAwB,EAAE;IAC/B,IAAI,CAAC+B,mBAAmB,EAAE;EAC5B;EAEAS,gBAAgB,GAAG;IACjB,MAAMC,QAAQ,GAAG,MAAM;MACrB,MAAMtE,KAAK,GAAG,IAAAuE,mBAAU,EAACC,qBAAY,CAAC;MACtC,oBACE,+BAAC,oBAAS;QACR,IAAI,EAAE,EAAG;QACT,UAAU,EAAExE,KAAK,CAACyE,IAAK;QACvB,OAAO,EAAEzE,KAAK,CAAC0E,mBAAoB;QACnC,SAAS,EAAEC,wBAAM,CAACC;MAAa,EAC/B;IAEN,CAAC;IAED,MAAMC,aAAa,gBACjB,+BAAC,iCAAY;MACX,YAAY,EAAE,IAAI,CAACpD,SAAS,KAAK,WAAY;MAC7C,QAAQ,EAAE,IAAI,CAACA,SAAS,KAAK,OAAO,GAAG6C,QAAQ,GAAG5D,SAAU;MAC5D,QAAQ,EAAE,IAAI,CAACoE,WAAW;IAAG,EAEhC;IAED,OAAOD,aAAa;EACtB;EAEAE,gBAAgB,GAAG;IACjB,OAAOC,2BAAa;EACtB;EAEAF,WAAW,GAAG;IACZ,OAAO1E,sBAAQ;EACjB;EAEQ6E,qBAAqB,GAAG;IAAA;IAC9B,MAAMJ,aAAa,GAAG,IAAI,CAACR,gBAAgB,EAAE;IAE7C,wBAAI,CAAC7C,UAAU,qDAAf,iBAAiB0D,mBAAmB,CAAC;MACnCC,SAAS,EAAE,SAASC,OAAO,GAAG;QAC5B,OAAOP,aAAa;MACtB,CAAC;MACDQ,MAAM,EAAE;IACV,CAAC,CAAC;EACJ;EAQAC,aAAa,CAACC,KAAiB,EAAE;IAC/B,IAAI,CAAC7F,SAAS,CAAC+D,QAAQ,CAAC8B,KAAK,CAAC;IAC9B,OAAO,IAAI;EACb;;EAEA;AACF;AACA;EACEC,oBAAoB,CAAC,GAAGC,KAAyB,EAAE;IACjD,IAAI,CAAC5F,YAAY,CAAC4D,QAAQ,CAACgC,KAAK,CAAC;IACjC,OAAO,IAAI;EACb;EAEA5B,kBAAkB,CAAC6B,MAAwB,EAAE;IAC3C,IAAI,CAAC/F,OAAO,CAAC8D,QAAQ,CAACiC,MAAM,CAAC;EAC/B;EAkBA,aAAaC,QAAQ,CACnB,CAACC,IAAI,EAAEpG,WAAW,EAAEqG,WAAW,EAAEC,OAAO,EAAErG,kBAAkB,CAM3D,EACDsG,CAAC,EACD,CAACrG,SAAS,EAAEG,YAAY,EAAEF,OAAO,EAAEC,cAAc,EAAEE,sBAAsB,CAMxE,EACDkG,OAAgB,EAChB;IACA,MAAM;MAAEC;IAAO,CAAC,GAAGD,OAAO;IAC1B,MAAMzE,IAAI,GAAG2E,MAAM,CAACD,MAAM,CAACE,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACtD,IAAIpG,SAAkC;IACtC,IAAIC,KAA0B;IAC9B,IAAIuB,IAAI,KAAKG,oBAAe,CAACC,EAAE,EAAE;MAC/B5B,SAAS,GAAG8F,WAAW;IACzB;IACA,IAAItE,IAAI,KAAKK,gBAAW,CAACD,EAAE,EAAE;MAC3B3B,KAAK,GAAG8F,OAAO;IACjB;IACA,MAAMM,OAAO,GAAG,IAAI9G,OAAO,CACzBE,WAAW,EACXC,kBAAkB,EAClBC,SAAS,EACTC,OAAO,EACPE,YAAY,EACZD,cAAc,EACdE,sBAAsB,EACtBC,SAAS,EACTC,KAAK,CACN;IACD,IAAI4F,IAAI,EAAEA,IAAI,CAACS,mBAAmB,CAAC;MAAEC,YAAY,EAAEF,OAAO,CAACG;IAAc,CAAC,CAAC;IAC3EH,OAAO,CAACtE,cAAc,EAAE;IACxBsE,OAAO,CAAC7C,kBAAkB,CAAC,MAAM;MAC/B,MAAM;QAAEpD;MAAW,CAAC,GAAG,IAAAC,sBAAQ,GAAE;MACjC,IAAI,EAACD,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAE+D,UAAU,GAAE,OAAO,IAAI;MACxC,MAAM;QAAEA,UAAU;QAAEsC;MAAY,CAAC,GAAGrG,UAAU;MAC9C,oBACE,+BAAC,4BAAW;QACV,UAAU,EAAE,QAAS;QACrB,UAAU,EAAE,UAAW;QACvB,IAAI,EAAEiG,OAAO,CAAC3E,SAAU;QACxB,YAAY,EAAEyC,UAAU,CAACvC,EAAG;QAC5B,aAAa,EAAE6E,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAE7E;MAAG,EAC/B;IAEN,CAAC,CAAC;IACFyE,OAAO,CAACnB,qBAAqB,EAAE;IAC/B,OAAOmB,OAAO;EAChB;AACF;AAAC;AAAA,gCAxVY9G,OAAO,kBACI,CAACmH,cAAQ,EAAEC,oBAAe,EAAEhF,oBAAe,EAAEE,gBAAW,EAAE+E,0CAAsB,CAAC;AAAA,gCAD5FrH,OAAO,aAGDsH,eAAS;AAAA,gCAHftH,OAAO,WAIH,CACbuH,eAAI,CAACC,QAAQ,EAAc,EAC3BD,eAAI,CAACC,QAAQ,EAAwB,EACrCD,eAAI,CAACC,QAAQ,EAAkB,EAC/BD,eAAI,CAACC,QAAQ,EAAkB,EAC/BD,eAAI,CAACC,QAAQ,EAA0B,CACxC;AAAA,eAgVYxH,OAAO;AAAA;AAEtByH,oBAAW,CAACC,UAAU,CAAC1H,OAAO,CAAC"}
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAKA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA4C;AAAA;AAIrC,SAASA,mBAAmB,GAAG;EAAA;EACpC,MAAMC,cAAc,GAAG,IAAAC,8BAAiB,GAAE;EAC1C,MAAM;IAAEC,UAAU;IAAEC;EAAQ,CAAC,GAAG,IAAAC,sBAAQ,GAAE;EAC1C,MAAMC,WAAW,GAAG,IAAAC,mCAAoB,GAAE;EAC1C,MAAMC,eAAe,GACnBP,cAAc,IAAI,EAACK,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEG,SAAS,EAAE,6BACvCN,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEO,uBAAuB,CAACT,cAAc,EAAEK,WAAW,CAAC,yEAAI,IAAI,GACxE,IAAI;EAEV,IAAIE,eAAe,KAAK,IAAI,IAAIJ,OAAO,EAAE;IACvC,OAAO;MACLA,OAAO,EAAE;IACX,CAAC;EACH;EAEA,OAAO;IACLA,OAAO,EAAE,KAAK;IACdO,GAAG,EAAE;MACHC,OAAO,EAAEJ,eAAe,CAACK;IAC3B;EACF,CAAC;AACH;AACO,SAASC,yBAAyB,GAAmC;EAAA;EAC1E,MAAMb,cAAc,GAAG,IAAAC,8BAAiB,GAAE;EAC1C,MAAM;IAAEC,UAAU;IAAEC;EAAQ,CAAC,GAAG,IAAAC,sBAAQ,GAAE;EAC1C,MAAMC,WAAW,GAAG,IAAAC,mCAAoB,GAAE;EAC1C,MAAMQ,KAAK,GAAG,IAAAC,qCAAQ,GAAE;EACxB,MAAMC,gBAAgB,GAAGF,KAAK,CAACG,GAAG,CAAC,SAAS,CAAC;EAE7C,IAAID,gBAAgB,IAAIX,WAAW,EAAE;IACnC,MAAMa,WAAW,GAAGC,wBAAW,CAACC,UAAU,CAAE,GAAEpB,cAAe,IAAGgB,gBAAiB,EAAC,CAAC;IACnF,OAAOE,WAAW;EACpB;EACA,MAAMX,eAAe,GACnBP,cAAc,IAAI,EAACK,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEG,SAAS,EAAE,8BACvCN,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEO,uBAAuB,CAACT,cAAc,EAAEK,WAAW,CAAC,2EAAI,IAAI,GACxE,IAAI;EAEV,OAAOF,OAAO,GAAGkB,SAAS,GAAGd,eAAe;AAC9C;AAEO,SAASe,cAAc,GAAG;EAAA;EAC/B,gCAAOT,yBAAyB,EAAE,0DAA3B,sBAA6BU,QAAQ,EAAE;AAChD;AAEO,MAAMC,OAAO,CAAC;EAYnBC,WAAW,CACDC,WAAwB,EACxBC,kBAAsC,EACtCC,SAAoB,EACpBC,OAAmC,EACnCC,cAA8B;EACtC;AACJ;AACA;EACYC,YAAkC,EAClCC,sBAA8C,EAC9CC,SAAuB,EACvBC,KAAe,EACvB;IAAA,KAZQR,WAAwB,GAAxBA,WAAwB;IAAA,KACxBC,kBAAsC,GAAtCA,kBAAsC;IAAA,KACtCC,SAAoB,GAApBA,SAAoB;IAAA,KACpBC,OAAmC,GAAnCA,OAAmC;IAAA,KACnCC,cAA8B,GAA9BA,cAA8B;IAAA,KAI9BC,YAAkC,GAAlCA,YAAkC;IAAA,KAClCC,sBAA8C,GAA9CA,sBAA8C;IAAA,KAC9CC,SAAuB,GAAvBA,SAAuB;IAAA,KACvBC,KAAe,GAAfA,KAAe;IAAA;IAAA;IAAA;IAAA,uDAsMD,CAAC;MAAEC;IAAkC,CAAC,KAAK;MACjE,MAAMC,SAAS,GAAG,IAAI,CAACJ,sBAAsB,CAACK,MAAM,EAAE;MAEtD,oBAAO,+BAAC,2BAAa;QAAC,qBAAqB,EAAED;MAAU,GAAED,QAAQ,CAAiB;IACpF,CAAC;IAAA,wDAmBiBG,KAAuB,IAAK;MAC5C,MAAMC,IAAI,GAAG,IAAI,CAACZ,kBAAkB,CAACY,IAAI;MAEzC,IAAI,CAACD,KAAK,CAACE,IAAI,IAAI,CAACF,KAAK,CAACG,OAAO,EAAE,OAAO,IAAI;MAE9C,oBACE,+BAAC,6BAAW,+BACNH,KAAK;QACT,IAAI,EAAEA,KAAK,CAACE,IAAK;QACjB,OAAO,EAAEF,KAAK,CAACG,OAAQ;QACvB,IAAI,EAAEH,KAAK,CAACI,IAAI,IAAI,IAAI,CAACA,IAAK;QAC9B,IAAI,EAAEJ,KAAK,CAACC,IAAI,IAAIA;MAAK,GACzB;IAEN,CAAC;IAzOC,IAAI,CAACI,UAAU,GAAGV,SAAS,IAAIC,KAAK;IACpC,IAAI,CAACU,SAAS,GAAGX,SAAS,GAAG,WAAW,GAAG,OAAO;IAClD,IAAI,CAACS,IAAI,GAAGT,SAAS,GAAGY,oBAAe,CAACC,EAAE,GAAGC,gBAAW,CAACD,EAAE;EAC7D;EAMQE,wBAAwB,GAAG;IACjC,IAAI,CAAC,IAAI,CAACL,UAAU,EAAE;IACtB,IAAI,CAACA,UAAU,CAACM,cAAc,CAAC,IAAI,CAACC,aAAa,EAAE,CAAC;IACpD,IAAI,CAACP,UAAU,CAACQ,kBAAkB,CAAC,IAAI,CAACC,aAAa,EAAE,CAAC;EAC1D;EAEAF,aAAa,GAAG;IACd,OAAO,CACL;MACEG,IAAI,EAAEC,2BAAU,CAACC,WAAW;MAC5BpB,QAAQ,eACN,6EACE,+BAAC,uBAAK;QAAC,IAAI,EAAEmB,2BAAU,CAACE;MAAS,gBAC/B,+BAAC,uBAAK;QAAC,KAAK;QAAC,OAAO,EAAE,IAAI,CAACC,eAAe;MAAG,EAAG,eAChD,+BAAC,uBAAK;QAAC,IAAI,EAAC,cAAc;QAAC,OAAO,EAAE,IAAI,CAACC,gBAAgB;MAAG,EAAG,eAC/D,+BAAC,uBAAK;QAAC,IAAI,EAAC,YAAY;QAAC,OAAO,EAAE,IAAI,CAACC,mBAAmB;MAAG,EAAG,eAChE,+BAAC,uBAAK;QAAC,IAAI,EAAC,GAAG;QAAC,OAAO,eAAE,+BAAC,6BAAY;MAAI,EAAG,CACvC,eACR,+BAAC,uBAAK;QAAC,IAAI,EAAC,GAAG;QAAC,OAAO,eAAE,+BAAC,6BAAY;MAAI,EAAG;IAGnD,CAAC,CACF;EACH;EAEAC,sBAAsB,CACpBC,EAMC,EACD;IACA,MAAM;MAAEC,MAAM;MAAET,IAAI;MAAEU,mBAAmB;MAAEC,qBAAqB;MAAEC;IAAW,CAAC,GAAGJ,EAAE,EAAE;IACrFP,2BAAU,CAACC,WAAW,GAAGO,MAAM;IAC/BR,2BAAU,CAACE,QAAQ,GAAGH,IAAI;IAC1BC,2BAAU,CAACS,mBAAmB,GAAGA,mBAAmB;IACpDT,2BAAU,CAACW,UAAU,GAAGA,UAAU;IAClCX,2BAAU,CAACU,qBAAqB,GAAGA,qBAAqB;EAC1D;;EAEA;EACA;EACA;;EAEAN,gBAAgB,GAAG;IACjB,OAAO,IAAI,CAAChC,WAAW,CAACwC,cAAc,CAAC,IAAI,CAACxB,IAAI,EAAE;MAChDxB,WAAW,EAAEI,cAAc;MAC3BvB;IACF,CAAC,CAAC;EACJ;EAEAoE,oBAAoB,GAAG;IACrB,OAAO,IAAI,CAACzC,WAAW,CAAC0C,OAAO,CAAC,IAAI,CAAC1B,IAAI,EAAE;MACzCxB,WAAW,EAAEI,cAAc;MAC3BvB;IACF,CAAC,CAAC;EACJ;EAEA0D,eAAe,GAAG;IAChB,oBACE,+BAAC,uBAAY;MACX,SAAS,EAAE,IAAI,CAAC7B,SAAU;MAC1B,YAAY,EAAE,IAAI,CAACG,YAAa;MAChC,IAAI,EAAE,IAAI,CAACa,SAAU;MACrB,QAAQ,EAAExC;IAAS,EACnB;EAEN;EAEAuD,mBAAmB,GAAG;IACpB,oBAAO,+BAAC,kCAAe;MAAC,cAAc,EAAE,IAAI,CAACU,cAAe;MAAC,YAAY,EAAE,IAAI,CAACzB,SAAS,KAAK;IAAY,EAAG;EAC/G;EAEAQ,aAAa,GAAG;IACd,OAAO,CACL;MACEC,IAAI,EAAEC,2BAAU,CAACC,WAAW;MAC5BpB,QAAQ,eACN,+BAAC,uBAAK;QAAC,IAAI,EAAG,GAAEmB,2BAAU,CAACE,QAAS;MAAI,gBACtC,+BAAC,uBAAK;QAAC,IAAI,EAAE,GAAI;QAAC,OAAO,EAAE,IAAI,CAACc,oBAAoB;MAAG,EAAG,eAC1D,+BAAC,uBAAK;QAAC,IAAI,EAAC,cAAc;QAAC,OAAO,EAAE,IAAI,CAACH,oBAAoB;MAAG,EAAG;IAGzE,CAAC,CACF;EACH;EAEAG,oBAAoB,GAAG;IACrB,oBAAO,+BAAC,iCAAiB;MAAC,cAAc,EAAE,IAAI,CAACzC,OAAQ;MAAC,UAAU,EAAE,IAAI,CAACC;IAAe,EAAG;EAC7F;EAEAyC,kBAAkB,CAAC,GAAGC,SAAuB,EAAE;IAC7C,IAAI,CAAC1C,cAAc,CAAC2C,QAAQ,CAACD,SAAS,CAAC;IACvC,OAAO,IAAI;EACb;EAEAE,8BAA8B,CAACC,QAA+B,EAAE;IAC9D,IAAI,CAAC3C,sBAAsB,CAACyC,QAAQ,CAACE,QAAQ,CAAC;IAC9C,OAAO,IAAI;EACb;EAEQC,mBAAmB,GAAG;IAC5B,IAAI,CAACC,kBAAkB,CAAC;IACtB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;MACEvC,KAAK,EAAE;QACLwC,IAAI,EAAE,GAAG;QACTC,KAAK,EAAE,IAAI;QACX5C,QAAQ,EAAE;MACZ,CAAC;MACD6C,KAAK,EAAE;IACT,CAAC,EACD;MACE1C,KAAK,EAAE;QACLwC,IAAI,EAAE,UAAU;QAChB3C,QAAQ,EAAE;MACZ,CAAC;MACD6C,KAAK,EAAE,CAAC;MACRC,IAAI,EAAE,MAAM;QACV,MAAM;UAAE/E;QAAW,CAAC,GAAG,IAAAE,sBAAQ,GAAE;QACjC,OAAO,EAACF,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAEgF,UAAU,KAAI,CAAAhF,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEiF,KAAK,CAACC,MAAM,IAAG,CAAC;MAChE;IACF,CAAC,CACF,CAAC;EACJ;EAEQnC,cAAc,GAAG;IACvB,IAAI,CAACD,wBAAwB,EAAE;IAC/B,IAAI,CAAC4B,mBAAmB,EAAE;EAC5B;EAEAS,gBAAgB,GAAG;IACjB,MAAMC,QAAQ,GAAG,MAAM;MACrB,MAAMpD,KAAK,GAAG,IAAAqD,mBAAU,EAACC,qBAAY,CAAC;MACtC,oBACE,+BAAC,oBAAS;QACR,IAAI,EAAE,EAAG;QACT,UAAU,EAAEtD,KAAK,CAACuD,IAAK;QACvB,OAAO,EAAEvD,KAAK,CAACwD,mBAAoB;QACnC,SAAS,EAAEC,wBAAM,CAACC;MAAa,EAC/B;IAEN,CAAC;IAED,MAAMC,aAAa,gBACjB,+BAAC,iCAAY;MACX,YAAY,EAAE,IAAI,CAACjD,SAAS,KAAK,WAAY;MAC7C,QAAQ,EAAE,IAAI,CAACA,SAAS,KAAK,OAAO,GAAG0C,QAAQ,GAAGjE,SAAU;MAC5D,QAAQ,EAAEjB;IAAS,EAEtB;IAED,OAAOyF,aAAa;EACtB;EAEAC,gBAAgB,GAAG;IACjB,OAAOC,2BAAa;EACtB;EAEAC,WAAW,GAAG;IACZ,OAAO5F,sBAAQ;EACjB;EAEQ6F,qBAAqB,GAAG;IAAA;IAC9B,MAAMJ,aAAa,GAAG,IAAI,CAACR,gBAAgB,EAAE;IAE7C,wBAAI,CAAC1C,UAAU,qDAAf,iBAAiBuD,mBAAmB,CAAC;MACnCC,SAAS,EAAE,SAASC,OAAO,GAAG;QAC5B,OAAOP,aAAa;MACtB,CAAC;MACDQ,MAAM,EAAE;IACV,CAAC,CAAC;EACJ;EAQAC,aAAa,CAACC,KAAiB,EAAE;IAC/B,IAAI,CAAC3E,SAAS,CAAC6C,QAAQ,CAAC8B,KAAK,CAAC;IAC9B,OAAO,IAAI;EACb;;EAEA;AACF;AACA;EACEC,oBAAoB,CAAC,GAAGC,KAAyB,EAAE;IACjD,IAAI,CAAC1E,YAAY,CAAC0C,QAAQ,CAACgC,KAAK,CAAC;IACjC,OAAO,IAAI;EACb;EAEA5B,kBAAkB,CAAC6B,MAAwB,EAAE;IAC3C,IAAI,CAAC7E,OAAO,CAAC4C,QAAQ,CAACiC,MAAM,CAAC;EAC/B;EAkBA,aAAaC,QAAQ,CACnB,CAACC,IAAI,EAAElF,WAAW,EAAEmF,WAAW,EAAEC,OAAO,EAAEnF,kBAAkB,CAM3D,EACDoF,CAAC,EACD,CAACnF,SAAS,EAAEG,YAAY,EAAEF,OAAO,EAAEC,cAAc,EAAEE,sBAAsB,CAMxE,EACDgF,OAAgB,EAChB;IACA,MAAM;MAAEC;IAAO,CAAC,GAAGD,OAAO;IAC1B,MAAMtE,IAAI,GAAGwE,MAAM,CAACD,MAAM,CAAChG,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACtD,IAAIgB,SAAkC;IACtC,IAAIC,KAA0B;IAC9B,IAAIQ,IAAI,KAAKG,oBAAe,CAACC,EAAE,EAAE;MAC/Bb,SAAS,GAAG4E,WAAW;IACzB;IACA,IAAInE,IAAI,KAAKK,gBAAW,CAACD,EAAE,EAAE;MAC3BZ,KAAK,GAAG4E,OAAO;IACjB;IACA,MAAMK,OAAO,GAAG,IAAI3F,OAAO,CACzBE,WAAW,EACXC,kBAAkB,EAClBC,SAAS,EACTC,OAAO,EACPE,YAAY,EACZD,cAAc,EACdE,sBAAsB,EACtBC,SAAS,EACTC,KAAK,CACN;IACD,IAAI0E,IAAI,EAAEA,IAAI,CAACQ,mBAAmB,CAAC;MAAEC,YAAY,EAAEF,OAAO,CAACG;IAAc,CAAC,CAAC;IAC3EH,OAAO,CAAClE,cAAc,EAAE;IACxBkE,OAAO,CAAC5C,kBAAkB,CAAC,MAAM;MAC/B,MAAM;QAAErE;MAAW,CAAC,GAAG,IAAAE,sBAAQ,GAAE;MACjC,IAAI,EAACF,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAEgF,UAAU,GAAE,OAAO,IAAI;MACxC,MAAM;QAAEA,UAAU;QAAEqC;MAAY,CAAC,GAAGrH,UAAU;MAC9C,oBACE,+BAAC,4BAAW;QACV,UAAU,EAAE,QAAS;QACrB,UAAU,EAAE,UAAW;QACvB,IAAI,EAAEiH,OAAO,CAACvE,SAAU;QACxB,YAAY,EAAEsC,UAAU,CAACpC,EAAG;QAC5B,aAAa,EAAEyE,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEzE;MAAG,EAC/B;IAEN,CAAC,CAAC;IACFqE,OAAO,CAAClB,qBAAqB,EAAE;IAC/B,OAAOkB,OAAO;EAChB;AACF;AAAC;AAAA,gCA/TY3F,OAAO,kBACI,CAACgG,cAAQ,EAAEC,oBAAe,EAAE5E,oBAAe,EAAEE,gBAAW,EAAE2E,0CAAsB,CAAC;AAAA,gCAD5FlG,OAAO,aAGDmG,eAAS;AAAA,gCAHfnG,OAAO,WAIH,CACboG,eAAI,CAACC,QAAQ,EAAc,EAC3BD,eAAI,CAACC,QAAQ,EAAwB,EACrCD,eAAI,CAACC,QAAQ,EAAkB,EAC/BD,eAAI,CAACC,QAAQ,EAAkB,EAC/BD,eAAI,CAACC,QAAQ,EAA0B,CACxC;AAAA,eAuTYrG,OAAO;AAAA;AAEtBsG,oBAAW,CAACC,UAAU,CAACvG,OAAO,CAAC"}
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.lanes_lanes@0.0.
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.lanes_lanes@0.0.
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.lanes_lanes@0.0.651/dist/lanes.composition.js';
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.lanes_lanes@0.0.651/dist/lanes.docs.mdx';
|
3
3
|
|
4
4
|
export const compositions = [compositions_0];
|
5
5
|
export const overview = [overview_0];
|
package/lanes.ui.runtime.tsx
CHANGED
@@ -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:
|
143
|
-
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:
|
150
|
-
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={
|
275
|
+
useLanes={useLanes}
|
256
276
|
/>
|
257
277
|
);
|
258
278
|
|
Binary file
|
package/package.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "@teambit/lanes",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.651",
|
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.
|
9
|
+
"version": "0.0.651"
|
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.
|
26
|
-
"@teambit/scope": "0.0.
|
27
|
-
"@teambit/snapping": "0.0.
|
28
|
-
"@teambit/lanes.ui.models.lanes-model": "0.0.
|
29
|
-
"@teambit/cli": "0.0.
|
30
|
-
"@teambit/workspace": "0.0.
|
31
|
-
"@teambit/express": "0.0.
|
32
|
-
"@teambit/logger": "0.0.
|
33
|
-
"@teambit/graphql": "0.0.
|
34
|
-
"@teambit/component-compare": "0.0.
|
35
|
-
"@teambit/component-writer": "0.0.
|
36
|
-
"@teambit/component": "0.0.
|
37
|
-
"@teambit/export": "0.0.
|
38
|
-
"@teambit/importer": "0.0.
|
39
|
-
"@teambit/lanes.entities.lane-diff": "0.0.
|
40
|
-
"@teambit/lanes.modules.diff": "0.0.
|
41
|
-
"@teambit/merging": "0.0.
|
42
|
-
"@teambit/lanes.hooks.use-lanes": "0.0.
|
43
|
-
"@teambit/lanes.hooks.use-viewed-lane-from-url": "0.0.
|
44
|
-
"@teambit/lanes.ui.compare.lane-compare-page": "0.0.
|
45
|
-
"@teambit/lanes.ui.compare.lane-compare": "0.0.
|
46
|
-
"@teambit/lanes.ui.lane-overview": "0.0.
|
25
|
+
"@teambit/lane-id": "0.0.244",
|
26
|
+
"@teambit/scope": "0.0.1079",
|
27
|
+
"@teambit/snapping": "0.0.394",
|
28
|
+
"@teambit/lanes.ui.models.lanes-model": "0.0.144",
|
29
|
+
"@teambit/cli": "0.0.727",
|
30
|
+
"@teambit/workspace": "0.0.1079",
|
31
|
+
"@teambit/express": "0.0.825",
|
32
|
+
"@teambit/logger": "0.0.820",
|
33
|
+
"@teambit/graphql": "0.0.1079",
|
34
|
+
"@teambit/component-compare": "0.0.327",
|
35
|
+
"@teambit/component-writer": "0.0.115",
|
36
|
+
"@teambit/component": "0.0.1079",
|
37
|
+
"@teambit/export": "0.0.1079",
|
38
|
+
"@teambit/importer": "0.0.508",
|
39
|
+
"@teambit/lanes.entities.lane-diff": "0.0.89",
|
40
|
+
"@teambit/lanes.modules.diff": "0.0.362",
|
41
|
+
"@teambit/merging": "0.0.394",
|
42
|
+
"@teambit/lanes.hooks.use-lanes": "0.0.191",
|
43
|
+
"@teambit/lanes.hooks.use-viewed-lane-from-url": "0.0.153",
|
44
|
+
"@teambit/lanes.ui.compare.lane-compare-page": "0.0.85",
|
45
|
+
"@teambit/lanes.ui.compare.lane-compare": "0.0.101",
|
46
|
+
"@teambit/lanes.ui.lane-overview": "0.0.145",
|
47
47
|
"@teambit/lanes.ui.menus.lanes-overview-menu": "0.0.5",
|
48
|
-
"@teambit/lanes.ui.menus.use-lanes-menu": "0.0.
|
49
|
-
"@teambit/lanes.ui.navigation.lane-switcher": "0.0.
|
48
|
+
"@teambit/lanes.ui.menus.use-lanes-menu": "0.0.144",
|
49
|
+
"@teambit/lanes.ui.navigation.lane-switcher": "0.0.146",
|
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.
|
53
|
-
"@teambit/
|
52
|
+
"@teambit/ui-foundation.ui.react-router.use-query": "0.0.496",
|
53
|
+
"@teambit/ui": "0.0.1079",
|
54
|
+
"@teambit/checkout": "0.0.248"
|
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.
|
66
|
-
"@teambit/harmony.testing.load-aspect": "0.0.
|
66
|
+
"@teambit/component.testing.mock-components": "0.0.91",
|
67
|
+
"@teambit/harmony.testing.load-aspect": "0.0.90",
|
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.
|
72
|
+
"@teambit/legacy": "1.0.507",
|
72
73
|
"react": "^16.8.0 || ^17.0.0",
|
73
74
|
"react-dom": "^16.8.0 || ^17.0.0"
|
74
75
|
},
|
Binary file
|