@teambit/workspace 0.0.867 → 0.0.869

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.
@@ -18,7 +18,7 @@ function _extends2() {
18
18
  }
19
19
 
20
20
  function _react() {
21
- const data = _interopRequireWildcard(require("react"));
21
+ const data = _interopRequireDefault(require("react"));
22
22
 
23
23
  _react = function () {
24
24
  return data;
@@ -47,19 +47,25 @@ function _uiFoundationUi() {
47
47
  return data;
48
48
  }
49
49
 
50
- function _workspaceContext() {
51
- const data = require("./ui/workspace/workspace-context");
50
+ function _lanesHooks() {
51
+ const data = require("@teambit/lanes.hooks.use-lanes");
52
52
 
53
- _workspaceContext = function () {
53
+ _lanesHooks = function () {
54
54
  return data;
55
55
  };
56
56
 
57
57
  return data;
58
58
  }
59
59
 
60
- 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); }
60
+ function _lanesHooks2() {
61
+ const data = require("@teambit/lanes.hooks.use-lane-components");
61
62
 
62
- 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; }
63
+ _lanesHooks2 = function () {
64
+ return data;
65
+ };
66
+
67
+ return data;
68
+ }
63
69
 
64
70
  const workspaceDrawer = ({
65
71
  treeWidgets,
@@ -87,14 +93,39 @@ const workspaceDrawer = ({
87
93
  },
88
94
  emptyMessage: 'Workspace is empty',
89
95
  useComponents: () => {
90
- const workspace = (0, _react().useContext)(_workspaceContext().WorkspaceContext);
96
+ var _lanesModel$viewedLan;
97
+
98
+ const {
99
+ lanesModel,
100
+ loading: lanesLoading
101
+ } = (0, _lanesHooks().useLanes)();
102
+ const viewedLaneId = lanesModel === null || lanesModel === void 0 ? void 0 : (_lanesModel$viewedLan = lanesModel.viewedLane) === null || _lanesModel$viewedLan === void 0 ? void 0 : _lanesModel$viewedLan.id;
103
+ const defaultLane = lanesModel === null || lanesModel === void 0 ? void 0 : lanesModel.getDefaultLane();
104
+ const isViewingDefaultLane = viewedLaneId && (defaultLane === null || defaultLane === void 0 ? void 0 : defaultLane.id.isEqual(viewedLaneId));
105
+ const {
106
+ components: laneComponents = [],
107
+ loading: laneCompsLoading
108
+ } = (0, _lanesHooks2().useLaneComponents)(viewedLaneId);
109
+ const {
110
+ components: mainComponents = [],
111
+ loading: mainCompsLoading
112
+ } = (0, _lanesHooks2().useLaneComponents)(!isViewingDefaultLane ? defaultLane === null || defaultLane === void 0 ? void 0 : defaultLane.id : undefined); // lane components + main components
113
+
114
+ const components = isViewingDefaultLane ? laneComponents : mergeComponents(mainComponents, laneComponents);
91
115
  return {
92
- loading: !workspace,
93
- components: workspace.components || []
116
+ loading: lanesLoading || laneCompsLoading || mainCompsLoading,
117
+ components
94
118
  };
95
119
  }
96
120
  });
97
121
 
98
122
  exports.workspaceDrawer = workspaceDrawer;
99
123
 
124
+ function mergeComponents(mainComponents, laneComponents) {
125
+ const mainComponentsThatAreNotOnLane = mainComponents.filter(mainComponent => {
126
+ return !laneComponents.find(laneComponent => laneComponent.id.toStringWithoutVersion() === mainComponent.id.toStringWithoutVersion());
127
+ });
128
+ return laneComponents.concat(mainComponentsThatAreNotOnLane);
129
+ }
130
+
100
131
  //# sourceMappingURL=workspace.ui.drawer.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["workspaceDrawer","treeWidgets","filtersSlot","drawerWidgetSlot","ComponentsDrawer","order","id","name","plugins","tree","widgets","customRenderer","treeNodeSlot","TreeNode","props","children","node","payload","ScopePayload","filters","drawerWidgets","emptyMessage","useComponents","workspace","useContext","WorkspaceContext","loading","components"],"sources":["workspace.ui.drawer.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { ComponentsDrawer, ComponentFiltersSlot, DrawerWidgetSlot } from '@teambit/component.ui.component-drawer';\nimport {\n ComponentView,\n NamespaceTreeNode,\n PayloadType,\n ScopePayload,\n ScopeTreeNode,\n} from '@teambit/ui-foundation.ui.side-bar';\nimport { TreeNodeProps } from '@teambit/design.ui.tree';\nimport { WorkspaceContext } from './ui/workspace/workspace-context';\nimport { SidebarWidgetSlot } from './workspace.ui.runtime';\n\nexport type WorkspaceDrawerProps = {\n treeWidgets: SidebarWidgetSlot;\n filtersSlot: ComponentFiltersSlot;\n drawerWidgetSlot: DrawerWidgetSlot;\n};\n\nexport const workspaceDrawer = ({ treeWidgets, filtersSlot, drawerWidgetSlot }: WorkspaceDrawerProps) =>\n new ComponentsDrawer({\n order: 0,\n id: 'workspace-components-drawer',\n name: 'COMPONENTS',\n plugins: {\n tree: {\n widgets: treeWidgets,\n customRenderer: (treeNodeSlot) =>\n function TreeNode(props: TreeNodeProps<PayloadType>) {\n const children = props.node.children;\n\n if (!children) return <ComponentView {...props} treeNodeSlot={treeNodeSlot} />; // non collapse\n\n if (props.node.payload instanceof ScopePayload) return <ScopeTreeNode {...props} />;\n\n return <NamespaceTreeNode {...props} />;\n },\n },\n filters: filtersSlot,\n drawerWidgets: drawerWidgetSlot,\n },\n emptyMessage: 'Workspace is empty',\n useComponents: () => {\n const workspace = useContext(WorkspaceContext);\n return {\n loading: !workspace,\n components: workspace.components || [],\n };\n },\n });\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAQA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;;;;;AASO,MAAMA,eAAe,GAAG,CAAC;EAAEC,WAAF;EAAeC,WAAf;EAA4BC;AAA5B,CAAD,KAC7B,KAAIC,+BAAJ,EAAqB;EACnBC,KAAK,EAAE,CADY;EAEnBC,EAAE,EAAE,6BAFe;EAGnBC,IAAI,EAAE,YAHa;EAInBC,OAAO,EAAE;IACPC,IAAI,EAAE;MACJC,OAAO,EAAET,WADL;MAEJU,cAAc,EAAGC,YAAD,IACd,SAASC,QAAT,CAAkBC,KAAlB,EAAqD;QACnD,MAAMC,QAAQ,GAAGD,KAAK,CAACE,IAAN,CAAWD,QAA5B;QAEA,IAAI,CAACA,QAAL,EAAe,oBAAO,+BAAC,+BAAD,+BAAmBD,KAAnB;UAA0B,YAAY,EAAEF;QAAxC,GAAP,CAHoC,CAG6B;;QAEhF,IAAIE,KAAK,CAACE,IAAN,CAAWC,OAAX,YAA8BC,8BAAlC,EAAgD,oBAAO,+BAAC,+BAAD,EAAmBJ,KAAnB,CAAP;QAEhD,oBAAO,+BAAC,mCAAD,EAAuBA,KAAvB,CAAP;MACD;IAXC,CADC;IAcPK,OAAO,EAAEjB,WAdF;IAePkB,aAAa,EAAEjB;EAfR,CAJU;EAqBnBkB,YAAY,EAAE,oBArBK;EAsBnBC,aAAa,EAAE,MAAM;IACnB,MAAMC,SAAS,GAAG,IAAAC,mBAAA,EAAWC,oCAAX,CAAlB;IACA,OAAO;MACLC,OAAO,EAAE,CAACH,SADL;MAELI,UAAU,EAAEJ,SAAS,CAACI,UAAV,IAAwB;IAF/B,CAAP;EAID;AA5BkB,CAArB,CADK"}
1
+ {"version":3,"names":["workspaceDrawer","treeWidgets","filtersSlot","drawerWidgetSlot","ComponentsDrawer","order","id","name","plugins","tree","widgets","customRenderer","treeNodeSlot","TreeNode","props","children","node","payload","ScopePayload","filters","drawerWidgets","emptyMessage","useComponents","lanesModel","loading","lanesLoading","useLanes","viewedLaneId","viewedLane","defaultLane","getDefaultLane","isViewingDefaultLane","isEqual","components","laneComponents","laneCompsLoading","useLaneComponents","mainComponents","mainCompsLoading","undefined","mergeComponents","mainComponentsThatAreNotOnLane","filter","mainComponent","find","laneComponent","toStringWithoutVersion","concat"],"sources":["workspace.ui.drawer.tsx"],"sourcesContent":["import React from 'react';\nimport { ComponentsDrawer, ComponentFiltersSlot, DrawerWidgetSlot } from '@teambit/component.ui.component-drawer';\nimport {\n ComponentView,\n NamespaceTreeNode,\n PayloadType,\n ScopePayload,\n ScopeTreeNode,\n} from '@teambit/ui-foundation.ui.side-bar';\nimport { useLanes } from '@teambit/lanes.hooks.use-lanes';\nimport { useLaneComponents } from '@teambit/lanes.hooks.use-lane-components';\nimport { TreeNodeProps } from '@teambit/design.ui.tree';\nimport { ComponentModel } from '@teambit/component';\nimport { SidebarWidgetSlot } from './workspace.ui.runtime';\n\nexport type WorkspaceDrawerProps = {\n treeWidgets: SidebarWidgetSlot;\n filtersSlot: ComponentFiltersSlot;\n drawerWidgetSlot: DrawerWidgetSlot;\n};\n\nexport const workspaceDrawer = ({ treeWidgets, filtersSlot, drawerWidgetSlot }: WorkspaceDrawerProps) =>\n new ComponentsDrawer({\n order: 0,\n id: 'workspace-components-drawer',\n name: 'COMPONENTS',\n plugins: {\n tree: {\n widgets: treeWidgets,\n customRenderer: (treeNodeSlot) =>\n function TreeNode(props: TreeNodeProps<PayloadType>) {\n const children = props.node.children;\n\n if (!children) return <ComponentView {...props} treeNodeSlot={treeNodeSlot} />; // non collapse\n\n if (props.node.payload instanceof ScopePayload) return <ScopeTreeNode {...props} />;\n\n return <NamespaceTreeNode {...props} />;\n },\n },\n filters: filtersSlot,\n drawerWidgets: drawerWidgetSlot,\n },\n emptyMessage: 'Workspace is empty',\n useComponents: () => {\n const { lanesModel, loading: lanesLoading } = useLanes();\n const viewedLaneId = lanesModel?.viewedLane?.id;\n const defaultLane = lanesModel?.getDefaultLane();\n const isViewingDefaultLane = viewedLaneId && defaultLane?.id.isEqual(viewedLaneId);\n\n const { components: laneComponents = [], loading: laneCompsLoading } = useLaneComponents(viewedLaneId);\n const { components: mainComponents = [], loading: mainCompsLoading } = useLaneComponents(\n !isViewingDefaultLane ? defaultLane?.id : undefined\n );\n\n // lane components + main components\n const components = isViewingDefaultLane ? laneComponents : mergeComponents(mainComponents, laneComponents);\n\n return {\n loading: lanesLoading || laneCompsLoading || mainCompsLoading,\n components,\n };\n },\n });\n\nfunction mergeComponents(mainComponents: ComponentModel[], laneComponents: ComponentModel[]): ComponentModel[] {\n const mainComponentsThatAreNotOnLane = mainComponents.filter((mainComponent) => {\n return !laneComponents.find(\n (laneComponent) => laneComponent.id.toStringWithoutVersion() === mainComponent.id.toStringWithoutVersion()\n );\n });\n return laneComponents.concat(mainComponentsThatAreNotOnLane);\n}\n"],"mappings":"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"}
@@ -151,6 +151,16 @@ function _componentUiComponentFilters2() {
151
151
  return data;
152
152
  }
153
153
 
154
+ function _componentUiComponentFilters3() {
155
+ const data = require("@teambit/component.ui.component-filters.show-main-filter");
156
+
157
+ _componentUiComponentFilters3 = function () {
158
+ return data;
159
+ };
160
+
161
+ return data;
162
+ }
163
+
154
164
  function _componentUi() {
155
165
  const data = require("@teambit/component.ui.component-drawer");
156
166
 
@@ -330,7 +340,7 @@ class WorkspaceUI {
330
340
  sidebarSlot.register(new (_componentTree2().ComponentTreeWidget)());
331
341
  graphUI.registerComponentWidget(new (_componentTree2().ComponentTreeWidget)().widget);
332
342
  const workspaceUI = new WorkspaceUI(routeSlot, componentUi, menuSlot, menuItemSlot, sidebar, sidebarSlot, sidebarItemSlot, drawerWidgetSlot, drawerComponentsFiltersSlot, commandBarUI);
333
- workspaceUI.registerDrawerComponentFilters([_componentUiComponentFilters().DeprecateFilter, _componentUiComponentFilters2().EnvsFilter]);
343
+ workspaceUI.registerDrawerComponentFilters([_componentUiComponentFilters().DeprecateFilter, _componentUiComponentFilters2().EnvsFilter, (0, _componentUiComponentFilters3().ShowMainFilter)(true)]);
334
344
  workspaceUI.registerDrawerWidgets([/*#__PURE__*/_react().default.createElement(_componentUi().FilterWidget, {
335
345
  key: 'workspace-filter-widget'
336
346
  }), /*#__PURE__*/_react().default.createElement(_componentUi().TreeToggleWidget, {
@@ -344,7 +354,7 @@ class WorkspaceUI {
344
354
  exact: true,
345
355
  href: "/",
346
356
  icon: "comps"
347
- }, "Gallery");
357
+ }, "Workspace Overview");
348
358
  }
349
359
  });
350
360
  workspaceUI.registerMenuRoutes([{
@@ -1 +1 @@
1
- {"version":3,"names":["WorkspaceUI","constructor","routeSlot","componentUi","menuSlot","menuItemSlot","sidebar","sidebarSlot","sidebarItemSlot","drawerWidgetSlot","drawerComponentsFiltersSlot","commandBarUI","menuItems","register","routes","components","updateComponents","links","filters","widgets","category","title","keyChar","handler","run","registerRoutes","registerDrawers","drawers","registerDrawer","registerSidebarWidget","componentTreeNode","uiRoot","workspaceDrawer","treeWidgets","filtersSlot","setKeyBindHandler","addCommand","id","action","displayName","keybinding","path","element","listSidebarItems","items","flatten","values","compact","map","item","component","provider","ui","componentTree","graphUI","config","registerTreeNode","ComponentTreeWidget","registerComponentWidget","widget","workspaceUI","registerDrawerComponentFilters","DeprecateFilter","EnvsFilter","registerDrawerWidgets","registerRoot","bind","registerMenuItem","registerSidebarLink","Gallery","registerMenuRoutes","routePath","getMenu","WorkspaceAspect","getComponentUI","UIAspect","ComponentAspect","SidebarAspect","ComponentTreeAspect","CommandBarAspect","GraphAspect","UIRuntime","Slot","withType","addRuntime"],"sources":["workspace.ui.runtime.tsx"],"sourcesContent":["import { ComponentAspect, ComponentUI, ComponentModel } from '@teambit/component';\nimport { compact, flatten } from 'lodash';\nimport { ComponentTreeAspect, ComponentTreeUI, ComponentTreeNode } from '@teambit/component-tree';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { Menu } from '@teambit/ui-foundation.ui.menu';\nimport SidebarAspect, { SidebarUI, SidebarItem, SidebarItemSlot } from '@teambit/sidebar';\nimport { MenuItemSlot, MenuItem } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { UIAspect, UIRootUI as UIRoot, UIRuntime, UiUI } from '@teambit/ui';\nimport { GraphAspect, GraphUI } from '@teambit/graph';\nimport React, { ReactNode } from 'react';\nimport { RouteProps } from 'react-router-dom';\nimport CommandBarAspect, { CommandBarUI, CommandHandler } from '@teambit/command-bar';\nimport { MenuLinkItem } from '@teambit/design.ui.surfaces.menu.link-item';\nimport type { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';\nimport { ComponentFilters } from '@teambit/component.ui.component-filters.component-filter-context';\nimport { DeprecateFilter } from '@teambit/component.ui.component-filters.deprecate-filter';\nimport { EnvsFilter } from '@teambit/component.ui.component-filters.env-filter';\n\nimport {\n DrawerWidgetSlot,\n FilterWidget,\n TreeToggleWidget,\n ComponentFiltersSlot,\n} from '@teambit/component.ui.component-drawer';\nimport { ComponentTreeWidget } from './component-tree.widget';\nimport { Workspace } from './ui';\nimport { WorkspaceAspect } from './workspace.aspect';\nimport { workspaceDrawer } from './workspace.ui.drawer';\n\nexport type SidebarWidgetSlot = SlotRegistry<ComponentTreeNode>;\n\nexport class WorkspaceUI {\n constructor(\n /**\n * route slot.\n */\n private routeSlot: RouteSlot,\n\n /**\n * component ui extension.\n */\n private componentUi: ComponentUI,\n\n /**\n * menu slot\n */\n private menuSlot: RouteSlot,\n\n private menuItemSlot: MenuItemSlot,\n\n private sidebar: SidebarUI,\n\n private sidebarSlot: SidebarWidgetSlot,\n\n /**\n * sidebar link slot\n */\n private sidebarItemSlot: SidebarItemSlot,\n\n private drawerWidgetSlot: DrawerWidgetSlot,\n\n private drawerComponentsFiltersSlot: ComponentFiltersSlot,\n\n private commandBarUI: CommandBarUI\n ) {}\n\n private setKeyBindHandler: (updated: CommandHandler) => void = () => {};\n\n /**\n * register a route to the workspace.\n */\n registerRoutes(routes: RouteProps[]) {\n this.routeSlot.register(routes);\n return this;\n }\n\n registerDrawers(...drawers: DrawerType[]) {\n this.sidebar.registerDrawer(...drawers);\n return this;\n }\n\n registerSidebarWidget(componentTreeNode: ComponentTreeNode) {\n this.sidebarSlot.register(componentTreeNode);\n return this;\n }\n\n registerMenuItem = (menuItems: MenuItem[]) => {\n this.menuItemSlot.register(menuItems);\n };\n\n registerMenuRoutes = (routes: RouteProps[]) => {\n this.menuSlot.register(routes);\n return this;\n };\n\n setComponents = (components: ComponentModel[]) => {\n this.componentUi.updateComponents(components);\n };\n\n registerSidebarLink = (...links: SidebarItem[]) => {\n this.sidebarItemSlot.register(links);\n };\n\n /**\n * register component filters\n */\n registerDrawerComponentFilters = (filters: ComponentFilters) => {\n this.drawerComponentsFiltersSlot.register(filters);\n };\n\n registerDrawerWidgets = (widgets: ReactNode[]) => {\n this.drawerWidgetSlot.register(widgets);\n };\n\n uiRoot(): UIRoot {\n this.registerDrawers(\n workspaceDrawer({\n treeWidgets: this.sidebarSlot,\n drawerWidgetSlot: this.drawerWidgetSlot,\n filtersSlot: this.drawerComponentsFiltersSlot,\n })\n );\n\n const [setKeyBindHandler] = this.commandBarUI.addCommand({\n id: 'sidebar.toggle', // TODO - extract to a component!\n action: () => {},\n displayName: 'Toggle component list',\n keybinding: 'alt+s',\n });\n this.setKeyBindHandler = setKeyBindHandler;\n\n return {\n routes: [\n {\n path: '/*',\n element: (\n <Workspace\n menuSlot={this.menuSlot}\n routeSlot={this.routeSlot}\n sidebar={<this.sidebar.render items={this.listSidebarItems()} />}\n workspaceUI={this}\n onSidebarTogglerChange={this.setKeyBindHandler}\n />\n ),\n },\n ],\n };\n }\n\n listSidebarItems() {\n const items = flatten(this.sidebarItemSlot.values());\n return compact(items.map((item) => {\n return item.component;\n }));\n }\n\n private menuItems: MenuItem[] = [\n {\n category: 'general',\n title: 'Open command bar',\n keyChar: 'mod+k',\n handler: () => this.commandBarUI?.run('command-bar.open'),\n },\n {\n category: 'general',\n title: 'Toggle component list',\n keyChar: 'alt+s',\n handler: () => this.commandBarUI?.run('sidebar.toggle'),\n },\n ];\n\n static dependencies = [UIAspect, ComponentAspect, SidebarAspect, ComponentTreeAspect, CommandBarAspect, GraphAspect];\n\n static runtime = UIRuntime;\n\n static slots = [\n Slot.withType<RouteProps>(),\n Slot.withType<RouteProps>(),\n Slot.withType<ComponentTreeNode>(),\n Slot.withType<MenuItemSlot>(),\n Slot.withType<SidebarItemSlot>(),\n Slot.withType<DrawerWidgetSlot>(),\n Slot.withType<ComponentFiltersSlot>(),\n ];\n\n static async provider(\n [ui, componentUi, sidebar, componentTree, commandBarUI, graphUI]: [\n UiUI,\n ComponentUI,\n SidebarUI,\n ComponentTreeUI,\n CommandBarUI,\n GraphUI\n ],\n config,\n [routeSlot, menuSlot, menuItemSlot, sidebarSlot, sidebarItemSlot, drawerWidgetSlot, drawerComponentsFiltersSlot]: [\n RouteSlot,\n RouteSlot,\n MenuItemSlot,\n SidebarWidgetSlot,\n SidebarItemSlot,\n DrawerWidgetSlot,\n ComponentFiltersSlot\n ]\n ) {\n componentTree.registerTreeNode(new ComponentTreeWidget());\n sidebarSlot.register(new ComponentTreeWidget());\n graphUI.registerComponentWidget(new ComponentTreeWidget().widget);\n\n const workspaceUI = new WorkspaceUI(\n routeSlot,\n componentUi,\n menuSlot,\n menuItemSlot,\n sidebar,\n sidebarSlot,\n sidebarItemSlot,\n drawerWidgetSlot,\n drawerComponentsFiltersSlot,\n commandBarUI\n );\n\n workspaceUI.registerDrawerComponentFilters([DeprecateFilter, EnvsFilter]);\n workspaceUI.registerDrawerWidgets([\n <FilterWidget key={'workspace-filter-widget'} />,\n <TreeToggleWidget key={'workspace-tree-toggle-widget'} />,\n ]);\n ui.registerRoot(workspaceUI.uiRoot.bind(workspaceUI));\n workspaceUI.registerMenuItem(workspaceUI.menuItems);\n\n workspaceUI.registerSidebarLink({\n component: function Gallery() {\n return <MenuLinkItem exact href=\"/\" icon=\"comps\">\n Gallery\n </MenuLinkItem>;\n },\n });\n\n workspaceUI.registerMenuRoutes([\n {\n path: '/',\n element: <Menu menuItemSlot={workspaceUI.menuItemSlot} />,\n },\n {\n path: workspaceUI.componentUi.routePath,\n element: workspaceUI.componentUi.getMenu(WorkspaceAspect.id),\n },\n ]);\n\n workspaceUI.registerRoutes([\n {\n path: workspaceUI.componentUi.routePath,\n element: workspaceUI.componentUi.getComponentUI(WorkspaceAspect.id),\n },\n ]);\n\n return workspaceUI;\n }\n}\n\nexport default WorkspaceUI;\n\nWorkspaceAspect.addRuntime(WorkspaceUI);\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;;AAEA;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;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAMA;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;;AAIO,MAAMA,WAAN,CAAkB;EACvBC,WAAW;EACT;AACJ;AACA;EACYC,SAJC;EAMT;AACJ;AACA;EACYC,WATC;EAWT;AACJ;AACA;EACYC,QAdC,EAgBDC,YAhBC,EAkBDC,OAlBC,EAoBDC,WApBC;EAsBT;AACJ;AACA;EACYC,eAzBC,EA2BDC,gBA3BC,EA6BDC,2BA7BC,EA+BDC,YA/BC,EAgCT;IAAA,KA5BQT,SA4BR,GA5BQA,SA4BR;IAAA,KAvBQC,WAuBR,GAvBQA,WAuBR;IAAA,KAlBQC,QAkBR,GAlBQA,QAkBR;IAAA,KAhBQC,YAgBR,GAhBQA,YAgBR;IAAA,KAdQC,OAcR,GAdQA,OAcR;IAAA,KAZQC,WAYR,GAZQA,WAYR;IAAA,KAPQC,eAOR,GAPQA,eAOR;IAAA,KALQC,gBAKR,GALQA,gBAKR;IAAA,KAHQC,2BAGR,GAHQA,2BAGR;IAAA,KADQC,YACR,GADQA,YACR;IAAA,2DAE6D,MAAM,CAAE,CAFrE;IAAA,0DAsBkBC,SAAD,IAA2B;MAC5C,KAAKP,YAAL,CAAkBQ,QAAlB,CAA2BD,SAA3B;IACD,CAxBC;IAAA,4DA0BoBE,MAAD,IAA0B;MAC7C,KAAKV,QAAL,CAAcS,QAAd,CAAuBC,MAAvB;MACA,OAAO,IAAP;IACD,CA7BC;IAAA,uDA+BeC,UAAD,IAAkC;MAChD,KAAKZ,WAAL,CAAiBa,gBAAjB,CAAkCD,UAAlC;IACD,CAjCC;IAAA,6DAmCoB,CAAC,GAAGE,KAAJ,KAA6B;MACjD,KAAKT,eAAL,CAAqBK,QAArB,CAA8BI,KAA9B;IACD,CArCC;IAAA,wEA0CgCC,OAAD,IAA+B;MAC9D,KAAKR,2BAAL,CAAiCG,QAAjC,CAA0CK,OAA1C;IACD,CA5CC;IAAA,+DA8CuBC,OAAD,IAA0B;MAChD,KAAKV,gBAAL,CAAsBI,QAAtB,CAA+BM,OAA/B;IACD,CAhDC;IAAA,mDA4F8B,CAC9B;MACEC,QAAQ,EAAE,SADZ;MAEEC,KAAK,EAAE,kBAFT;MAGEC,OAAO,EAAE,OAHX;MAIEC,OAAO,EAAE;QAAA;;QAAA,6BAAM,KAAKZ,YAAX,uDAAM,mBAAmBa,GAAnB,CAAuB,kBAAvB,CAAN;MAAA;IAJX,CAD8B,EAO9B;MACEJ,QAAQ,EAAE,SADZ;MAEEC,KAAK,EAAE,uBAFT;MAGEC,OAAO,EAAE,OAHX;MAIEC,OAAO,EAAE;QAAA;;QAAA,8BAAM,KAAKZ,YAAX,wDAAM,oBAAmBa,GAAnB,CAAuB,gBAAvB,CAAN;MAAA;IAJX,CAP8B,CA5F9B;EAAE;;EAIJ;AACF;AACA;EACEC,cAAc,CAACX,MAAD,EAAuB;IACnC,KAAKZ,SAAL,CAAeW,QAAf,CAAwBC,MAAxB;IACA,OAAO,IAAP;EACD;;EAEDY,eAAe,CAAC,GAAGC,OAAJ,EAA2B;IACxC,KAAKrB,OAAL,CAAasB,cAAb,CAA4B,GAAGD,OAA/B;IACA,OAAO,IAAP;EACD;;EAEDE,qBAAqB,CAACC,iBAAD,EAAuC;IAC1D,KAAKvB,WAAL,CAAiBM,QAAjB,CAA0BiB,iBAA1B;IACA,OAAO,IAAP;EACD;;EA8BDC,MAAM,GAAW;IACf,KAAKL,eAAL,CACE,IAAAM,8BAAA,EAAgB;MACdC,WAAW,EAAE,KAAK1B,WADJ;MAEdE,gBAAgB,EAAE,KAAKA,gBAFT;MAGdyB,WAAW,EAAE,KAAKxB;IAHJ,CAAhB,CADF;IAQA,MAAM,CAACyB,iBAAD,IAAsB,KAAKxB,YAAL,CAAkByB,UAAlB,CAA6B;MACvDC,EAAE,EAAE,gBADmD;MACjC;MACtBC,MAAM,EAAE,MAAM,CAAE,CAFuC;MAGvDC,WAAW,EAAE,uBAH0C;MAIvDC,UAAU,EAAE;IAJ2C,CAA7B,CAA5B;IAMA,KAAKL,iBAAL,GAAyBA,iBAAzB;IAEA,OAAO;MACLrB,MAAM,EAAE,CACN;QACE2B,IAAI,EAAE,IADR;QAEEC,OAAO,eACL,+BAAC,gBAAD;UACE,QAAQ,EAAE,KAAKtC,QADjB;UAEE,SAAS,EAAE,KAAKF,SAFlB;UAGE,OAAO,eAAE,oCAAM,OAAN,CAAc,MAAd;YAAqB,KAAK,EAAE,KAAKyC,gBAAL;UAA5B,EAHX;UAIE,WAAW,EAAE,IAJf;UAKE,sBAAsB,EAAE,KAAKR;QAL/B;MAHJ,CADM;IADH,CAAP;EAgBD;;EAEDQ,gBAAgB,GAAG;IACjB,MAAMC,KAAK,GAAG,IAAAC,iBAAA,EAAQ,KAAKrC,eAAL,CAAqBsC,MAArB,EAAR,CAAd;IACA,OAAO,IAAAC,iBAAA,EAAQH,KAAK,CAACI,GAAN,CAAWC,IAAD,IAAU;MACjC,OAAOA,IAAI,CAACC,SAAZ;IACD,CAFc,CAAR,CAAP;EAGD;;EA+BoB,aAARC,QAAQ,CACnB,CAACC,EAAD,EAAKjD,WAAL,EAAkBG,OAAlB,EAA2B+C,aAA3B,EAA0C1C,YAA1C,EAAwD2C,OAAxD,CADmB,EASnBC,MATmB,EAUnB,CAACrD,SAAD,EAAYE,QAAZ,EAAsBC,YAAtB,EAAoCE,WAApC,EAAiDC,eAAjD,EAAkEC,gBAAlE,EAAoFC,2BAApF,CAVmB,EAmBnB;IACA2C,aAAa,CAACG,gBAAd,CAA+B,KAAIC,qCAAJ,GAA/B;IACAlD,WAAW,CAACM,QAAZ,CAAqB,KAAI4C,qCAAJ,GAArB;IACAH,OAAO,CAACI,uBAAR,CAAgC,KAAID,qCAAJ,IAA0BE,MAA1D;IAEA,MAAMC,WAAW,GAAG,IAAI5D,WAAJ,CAClBE,SADkB,EAElBC,WAFkB,EAGlBC,QAHkB,EAIlBC,YAJkB,EAKlBC,OALkB,EAMlBC,WANkB,EAOlBC,eAPkB,EAQlBC,gBARkB,EASlBC,2BATkB,EAUlBC,YAVkB,CAApB;IAaAiD,WAAW,CAACC,8BAAZ,CAA2C,CAACC,8CAAD,EAAkBC,0CAAlB,CAA3C;IACAH,WAAW,CAACI,qBAAZ,CAAkC,cAChC,+BAAC,2BAAD;MAAc,GAAG,EAAE;IAAnB,EADgC,eAEhC,+BAAC,+BAAD;MAAkB,GAAG,EAAE;IAAvB,EAFgC,CAAlC;IAIAZ,EAAE,CAACa,YAAH,CAAgBL,WAAW,CAAC7B,MAAZ,CAAmBmC,IAAnB,CAAwBN,WAAxB,CAAhB;IACAA,WAAW,CAACO,gBAAZ,CAA6BP,WAAW,CAAChD,SAAzC;IAEAgD,WAAW,CAACQ,mBAAZ,CAAgC;MAC9BlB,SAAS,EAAE,SAASmB,OAAT,GAAmB;QAC5B,oBAAO,+BAAC,oCAAD;UAAc,KAAK,MAAnB;UAAoB,IAAI,EAAC,GAAzB;UAA6B,IAAI,EAAC;QAAlC,aAAP;MAGD;IAL6B,CAAhC;IAQAT,WAAW,CAACU,kBAAZ,CAA+B,CAC7B;MACE7B,IAAI,EAAE,GADR;MAEEC,OAAO,eAAE,+BAAC,sBAAD;QAAM,YAAY,EAAEkB,WAAW,CAACvD;MAAhC;IAFX,CAD6B,EAK7B;MACEoC,IAAI,EAAEmB,WAAW,CAACzD,WAAZ,CAAwBoE,SADhC;MAEE7B,OAAO,EAAEkB,WAAW,CAACzD,WAAZ,CAAwBqE,OAAxB,CAAgCC,4BAAA,CAAgBpC,EAAhD;IAFX,CAL6B,CAA/B;IAWAuB,WAAW,CAACnC,cAAZ,CAA2B,CACzB;MACEgB,IAAI,EAAEmB,WAAW,CAACzD,WAAZ,CAAwBoE,SADhC;MAEE7B,OAAO,EAAEkB,WAAW,CAACzD,WAAZ,CAAwBuE,cAAxB,CAAuCD,4BAAA,CAAgBpC,EAAvD;IAFX,CADyB,CAA3B;IAOA,OAAOuB,WAAP;EACD;;AAlOsB;;;gCAAZ5D,W,kBA4IW,CAAC2E,cAAD,EAAWC,4BAAX,EAA4BC,kBAA5B,EAA2CC,oCAA3C,EAAgEC,qBAAhE,EAAkFC,oBAAlF,C;gCA5IXhF,W,aA8IMiF,e;gCA9INjF,W,WAgJI,CACbkF,eAAA,CAAKC,QAAL,EADa,EAEbD,eAAA,CAAKC,QAAL,EAFa,EAGbD,eAAA,CAAKC,QAAL,EAHa,EAIbD,eAAA,CAAKC,QAAL,EAJa,EAKbD,eAAA,CAAKC,QAAL,EALa,EAMbD,eAAA,CAAKC,QAAL,EANa,EAObD,eAAA,CAAKC,QAAL,EAPa,C;eAqFFnF,W;;;AAEfyE,4BAAA,CAAgBW,UAAhB,CAA2BpF,WAA3B"}
1
+ {"version":3,"names":["WorkspaceUI","constructor","routeSlot","componentUi","menuSlot","menuItemSlot","sidebar","sidebarSlot","sidebarItemSlot","drawerWidgetSlot","drawerComponentsFiltersSlot","commandBarUI","menuItems","register","routes","components","updateComponents","links","filters","widgets","category","title","keyChar","handler","run","registerRoutes","registerDrawers","drawers","registerDrawer","registerSidebarWidget","componentTreeNode","uiRoot","workspaceDrawer","treeWidgets","filtersSlot","setKeyBindHandler","addCommand","id","action","displayName","keybinding","path","element","listSidebarItems","items","flatten","values","compact","map","item","component","provider","ui","componentTree","graphUI","config","registerTreeNode","ComponentTreeWidget","registerComponentWidget","widget","workspaceUI","registerDrawerComponentFilters","DeprecateFilter","EnvsFilter","ShowMainFilter","registerDrawerWidgets","registerRoot","bind","registerMenuItem","registerSidebarLink","Gallery","registerMenuRoutes","routePath","getMenu","WorkspaceAspect","getComponentUI","UIAspect","ComponentAspect","SidebarAspect","ComponentTreeAspect","CommandBarAspect","GraphAspect","UIRuntime","Slot","withType","addRuntime"],"sources":["workspace.ui.runtime.tsx"],"sourcesContent":["import { ComponentAspect, ComponentUI, ComponentModel } from '@teambit/component';\nimport { compact, flatten } from 'lodash';\nimport { ComponentTreeAspect, ComponentTreeUI, ComponentTreeNode } from '@teambit/component-tree';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { Menu } from '@teambit/ui-foundation.ui.menu';\nimport SidebarAspect, { SidebarUI, SidebarItem, SidebarItemSlot } from '@teambit/sidebar';\nimport { MenuItemSlot, MenuItem } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { UIAspect, UIRootUI as UIRoot, UIRuntime, UiUI } from '@teambit/ui';\nimport { GraphAspect, GraphUI } from '@teambit/graph';\nimport React, { ReactNode } from 'react';\nimport { RouteProps } from 'react-router-dom';\nimport CommandBarAspect, { CommandBarUI, CommandHandler } from '@teambit/command-bar';\nimport { MenuLinkItem } from '@teambit/design.ui.surfaces.menu.link-item';\nimport type { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';\nimport { ComponentFilters } from '@teambit/component.ui.component-filters.component-filter-context';\nimport { DeprecateFilter } from '@teambit/component.ui.component-filters.deprecate-filter';\nimport { EnvsFilter } from '@teambit/component.ui.component-filters.env-filter';\nimport { ShowMainFilter } from '@teambit/component.ui.component-filters.show-main-filter';\nimport {\n DrawerWidgetSlot,\n FilterWidget,\n TreeToggleWidget,\n ComponentFiltersSlot,\n} from '@teambit/component.ui.component-drawer';\nimport { ComponentTreeWidget } from './component-tree.widget';\nimport { Workspace } from './ui';\nimport { WorkspaceAspect } from './workspace.aspect';\nimport { workspaceDrawer } from './workspace.ui.drawer';\n\nexport type SidebarWidgetSlot = SlotRegistry<ComponentTreeNode>;\n\nexport class WorkspaceUI {\n constructor(\n /**\n * route slot.\n */\n private routeSlot: RouteSlot,\n\n /**\n * component ui extension.\n */\n private componentUi: ComponentUI,\n\n /**\n * menu slot\n */\n private menuSlot: RouteSlot,\n\n private menuItemSlot: MenuItemSlot,\n\n private sidebar: SidebarUI,\n\n private sidebarSlot: SidebarWidgetSlot,\n\n /**\n * sidebar link slot\n */\n private sidebarItemSlot: SidebarItemSlot,\n\n private drawerWidgetSlot: DrawerWidgetSlot,\n\n private drawerComponentsFiltersSlot: ComponentFiltersSlot,\n\n private commandBarUI: CommandBarUI\n ) {}\n\n private setKeyBindHandler: (updated: CommandHandler) => void = () => {};\n\n /**\n * register a route to the workspace.\n */\n registerRoutes(routes: RouteProps[]) {\n this.routeSlot.register(routes);\n return this;\n }\n\n registerDrawers(...drawers: DrawerType[]) {\n this.sidebar.registerDrawer(...drawers);\n return this;\n }\n\n registerSidebarWidget(componentTreeNode: ComponentTreeNode) {\n this.sidebarSlot.register(componentTreeNode);\n return this;\n }\n\n registerMenuItem = (menuItems: MenuItem[]) => {\n this.menuItemSlot.register(menuItems);\n };\n\n registerMenuRoutes = (routes: RouteProps[]) => {\n this.menuSlot.register(routes);\n return this;\n };\n\n setComponents = (components: ComponentModel[]) => {\n this.componentUi.updateComponents(components);\n };\n\n registerSidebarLink = (...links: SidebarItem[]) => {\n this.sidebarItemSlot.register(links);\n };\n\n /**\n * register component filters\n */\n registerDrawerComponentFilters = (filters: ComponentFilters) => {\n this.drawerComponentsFiltersSlot.register(filters);\n };\n\n registerDrawerWidgets = (widgets: ReactNode[]) => {\n this.drawerWidgetSlot.register(widgets);\n };\n\n uiRoot(): UIRoot {\n this.registerDrawers(\n workspaceDrawer({\n treeWidgets: this.sidebarSlot,\n drawerWidgetSlot: this.drawerWidgetSlot,\n filtersSlot: this.drawerComponentsFiltersSlot,\n })\n );\n\n const [setKeyBindHandler] = this.commandBarUI.addCommand({\n id: 'sidebar.toggle', // TODO - extract to a component!\n action: () => {},\n displayName: 'Toggle component list',\n keybinding: 'alt+s',\n });\n this.setKeyBindHandler = setKeyBindHandler;\n\n return {\n routes: [\n {\n path: '/*',\n element: (\n <Workspace\n menuSlot={this.menuSlot}\n routeSlot={this.routeSlot}\n sidebar={<this.sidebar.render items={this.listSidebarItems()} />}\n workspaceUI={this}\n onSidebarTogglerChange={this.setKeyBindHandler}\n />\n ),\n },\n ],\n };\n }\n\n listSidebarItems() {\n const items = flatten(this.sidebarItemSlot.values());\n return compact(\n items.map((item) => {\n return item.component;\n })\n );\n }\n\n private menuItems: MenuItem[] = [\n {\n category: 'general',\n title: 'Open command bar',\n keyChar: 'mod+k',\n handler: () => this.commandBarUI?.run('command-bar.open'),\n },\n {\n category: 'general',\n title: 'Toggle component list',\n keyChar: 'alt+s',\n handler: () => this.commandBarUI?.run('sidebar.toggle'),\n },\n ];\n\n static dependencies = [UIAspect, ComponentAspect, SidebarAspect, ComponentTreeAspect, CommandBarAspect, GraphAspect];\n\n static runtime = UIRuntime;\n\n static slots = [\n Slot.withType<RouteProps>(),\n Slot.withType<RouteProps>(),\n Slot.withType<ComponentTreeNode>(),\n Slot.withType<MenuItemSlot>(),\n Slot.withType<SidebarItemSlot>(),\n Slot.withType<DrawerWidgetSlot>(),\n Slot.withType<ComponentFiltersSlot>(),\n ];\n\n static async provider(\n [ui, componentUi, sidebar, componentTree, commandBarUI, graphUI]: [\n UiUI,\n ComponentUI,\n SidebarUI,\n ComponentTreeUI,\n CommandBarUI,\n GraphUI\n ],\n config,\n [routeSlot, menuSlot, menuItemSlot, sidebarSlot, sidebarItemSlot, drawerWidgetSlot, drawerComponentsFiltersSlot]: [\n RouteSlot,\n RouteSlot,\n MenuItemSlot,\n SidebarWidgetSlot,\n SidebarItemSlot,\n DrawerWidgetSlot,\n ComponentFiltersSlot\n ]\n ) {\n componentTree.registerTreeNode(new ComponentTreeWidget());\n sidebarSlot.register(new ComponentTreeWidget());\n graphUI.registerComponentWidget(new ComponentTreeWidget().widget);\n\n const workspaceUI = new WorkspaceUI(\n routeSlot,\n componentUi,\n menuSlot,\n menuItemSlot,\n sidebar,\n sidebarSlot,\n sidebarItemSlot,\n drawerWidgetSlot,\n drawerComponentsFiltersSlot,\n commandBarUI\n );\n\n workspaceUI.registerDrawerComponentFilters([DeprecateFilter, EnvsFilter, ShowMainFilter(true)]);\n workspaceUI.registerDrawerWidgets([\n <FilterWidget key={'workspace-filter-widget'} />,\n <TreeToggleWidget key={'workspace-tree-toggle-widget'} />,\n ]);\n ui.registerRoot(workspaceUI.uiRoot.bind(workspaceUI));\n workspaceUI.registerMenuItem(workspaceUI.menuItems);\n\n workspaceUI.registerSidebarLink({\n component: function Gallery() {\n return (\n <MenuLinkItem exact href=\"/\" icon=\"comps\">\n Workspace Overview\n </MenuLinkItem>\n );\n },\n });\n\n workspaceUI.registerMenuRoutes([\n {\n path: '/',\n element: <Menu menuItemSlot={workspaceUI.menuItemSlot} />,\n },\n {\n path: workspaceUI.componentUi.routePath,\n element: workspaceUI.componentUi.getMenu(WorkspaceAspect.id),\n },\n ]);\n\n workspaceUI.registerRoutes([\n {\n path: workspaceUI.componentUi.routePath,\n element: workspaceUI.componentUi.getComponentUI(WorkspaceAspect.id),\n },\n ]);\n\n return workspaceUI;\n }\n}\n\nexport default WorkspaceUI;\n\nWorkspaceAspect.addRuntime(WorkspaceUI);\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/workspace",
3
- "version": "0.0.867",
3
+ "version": "0.0.869",
4
4
  "homepage": "https://bit.dev/teambit/workspace/workspace",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.workspace",
8
8
  "name": "workspace",
9
- "version": "0.0.867"
9
+ "version": "0.0.869"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash": "4.17.21",
@@ -34,46 +34,48 @@
34
34
  "@teambit/base-ui.surfaces.split-pane.split-pane": "1.0.0",
35
35
  "@teambit/bit-error": "0.0.400",
36
36
  "@teambit/component-id": "0.0.417",
37
- "@teambit/lane-id": "0.0.96",
37
+ "@teambit/lane-id": "0.0.98",
38
38
  "@teambit/legacy-bit-id": "0.0.414",
39
- "@teambit/logger": "0.0.671",
40
- "@teambit/scope": "0.0.867",
41
- "@teambit/cli": "0.0.578",
42
- "@teambit/isolator": "0.0.867",
43
- "@teambit/component-tree": "0.0.655",
44
- "@teambit/component.ui.component-status-resolver": "0.0.499",
45
- "@teambit/lanes.hooks.use-lanes": "0.0.38",
39
+ "@teambit/logger": "0.0.673",
40
+ "@teambit/scope": "0.0.869",
41
+ "@teambit/cli": "0.0.580",
42
+ "@teambit/isolator": "0.0.869",
43
+ "@teambit/component-tree": "0.0.657",
44
+ "@teambit/component.ui.component-status-resolver": "0.0.500",
45
+ "@teambit/lanes.hooks.use-lanes": "0.0.40",
46
46
  "@teambit/harmony.modules.resolved-component": "0.0.490",
47
- "@teambit/compiler": "0.0.867",
48
- "@teambit/component": "0.0.867",
49
- "@teambit/graphql": "0.0.867",
50
- "@teambit/aspect-loader": "0.0.867",
51
- "@teambit/bundler": "0.0.867",
52
- "@teambit/dependency-resolver": "0.0.867",
53
- "@teambit/envs": "0.0.867",
54
- "@teambit/pubsub": "0.0.867",
55
- "@teambit/ui": "0.0.867",
56
- "@teambit/variants": "0.0.681",
47
+ "@teambit/compiler": "0.0.869",
48
+ "@teambit/component": "0.0.869",
49
+ "@teambit/graphql": "0.0.869",
50
+ "@teambit/aspect-loader": "0.0.869",
51
+ "@teambit/bundler": "0.0.869",
52
+ "@teambit/dependency-resolver": "0.0.869",
53
+ "@teambit/envs": "0.0.869",
54
+ "@teambit/pubsub": "0.0.869",
55
+ "@teambit/ui": "0.0.869",
56
+ "@teambit/variants": "0.0.683",
57
57
  "@teambit/component-issues": "0.0.72",
58
- "@teambit/config": "0.0.591",
58
+ "@teambit/config": "0.0.593",
59
59
  "@teambit/harmony.modules.requireable-component": "0.0.490",
60
60
  "@teambit/workspace.modules.match-pattern": "0.0.495",
61
- "@teambit/component.ui.component-drawer": "0.0.132",
61
+ "@teambit/component.ui.component-drawer": "0.0.134",
62
62
  "@teambit/design.ui.tree": "0.0.12",
63
- "@teambit/ui-foundation.ui.side-bar": "0.0.649",
64
- "@teambit/command-bar": "0.0.867",
65
- "@teambit/component.ui.component-filters.component-filter-context": "0.0.7",
66
- "@teambit/component.ui.component-filters.deprecate-filter": "0.0.7",
67
- "@teambit/component.ui.component-filters.env-filter": "0.0.13",
68
- "@teambit/graph": "0.0.867",
69
- "@teambit/sidebar": "0.0.867",
63
+ "@teambit/lanes.hooks.use-lane-components": "0.0.39",
64
+ "@teambit/ui-foundation.ui.side-bar": "0.0.651",
65
+ "@teambit/command-bar": "0.0.869",
66
+ "@teambit/component.ui.component-filters.component-filter-context": "0.0.9",
67
+ "@teambit/component.ui.component-filters.deprecate-filter": "0.0.9",
68
+ "@teambit/component.ui.component-filters.env-filter": "0.0.15",
69
+ "@teambit/component.ui.component-filters.show-main-filter": "0.0.2",
70
+ "@teambit/graph": "0.0.869",
71
+ "@teambit/sidebar": "0.0.869",
70
72
  "@teambit/ui-foundation.ui.main-dropdown": "0.0.493",
71
73
  "@teambit/ui-foundation.ui.menu": "0.0.493",
72
74
  "@teambit/ui-foundation.ui.react-router.slot-router": "0.0.496",
73
75
  "@teambit/ui-foundation.ui.tree.drawer": "0.0.505",
74
76
  "@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.496",
75
- "@teambit/component-descriptor": "0.0.146",
76
- "@teambit/deprecation": "0.0.867",
77
+ "@teambit/component-descriptor": "0.0.148",
78
+ "@teambit/deprecation": "0.0.869",
77
79
  "@teambit/ui-foundation.ui.constants.z-indexes": "0.0.494",
78
80
  "@teambit/ui-foundation.ui.buttons.collapser": "0.0.201",
79
81
  "@teambit/ui-foundation.ui.corner": "0.0.504",
@@ -100,7 +102,7 @@
100
102
  "peerDependencies": {
101
103
  "react-router-dom": "^6.0.0",
102
104
  "@apollo/client": "^3.6.0",
103
- "@teambit/legacy": "1.0.359",
105
+ "@teambit/legacy": "1.0.361",
104
106
  "react-dom": "^16.8.0 || ^17.0.0",
105
107
  "react": "^16.8.0 || ^17.0.0"
106
108
  },
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_workspace@0.0.867/dist/workspace.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_workspace@0.0.867/dist/workspace.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_workspace@0.0.869/dist/workspace.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_workspace@0.0.869/dist/workspace.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -249,7 +249,7 @@ export class WorkspaceComponentLoader {
249
249
  // Make sure we are adding the envs / deps data first because other on load events might depend on it
250
250
  await Promise.all([
251
251
  this.upsertExtensionData(component, EnvsAspect.id, envsData),
252
- this.upsertExtensionData(component, DependencyResolverAspect.id, depResolverData)
252
+ this.upsertExtensionData(component, DependencyResolverAspect.id, depResolverData),
253
253
  ]);
254
254
 
255
255
  // We are updating the component state with the envs and deps data here, so in case we have other slots that depend on this data
@@ -1,4 +1,4 @@
1
- import React, { useContext } from 'react';
1
+ import React from 'react';
2
2
  import { ComponentsDrawer, ComponentFiltersSlot, DrawerWidgetSlot } from '@teambit/component.ui.component-drawer';
3
3
  import {
4
4
  ComponentView,
@@ -7,8 +7,10 @@ import {
7
7
  ScopePayload,
8
8
  ScopeTreeNode,
9
9
  } from '@teambit/ui-foundation.ui.side-bar';
10
+ import { useLanes } from '@teambit/lanes.hooks.use-lanes';
11
+ import { useLaneComponents } from '@teambit/lanes.hooks.use-lane-components';
10
12
  import { TreeNodeProps } from '@teambit/design.ui.tree';
11
- import { WorkspaceContext } from './ui/workspace/workspace-context';
13
+ import { ComponentModel } from '@teambit/component';
12
14
  import { SidebarWidgetSlot } from './workspace.ui.runtime';
13
15
 
14
16
  export type WorkspaceDrawerProps = {
@@ -41,10 +43,31 @@ export const workspaceDrawer = ({ treeWidgets, filtersSlot, drawerWidgetSlot }:
41
43
  },
42
44
  emptyMessage: 'Workspace is empty',
43
45
  useComponents: () => {
44
- const workspace = useContext(WorkspaceContext);
46
+ const { lanesModel, loading: lanesLoading } = useLanes();
47
+ const viewedLaneId = lanesModel?.viewedLane?.id;
48
+ const defaultLane = lanesModel?.getDefaultLane();
49
+ const isViewingDefaultLane = viewedLaneId && defaultLane?.id.isEqual(viewedLaneId);
50
+
51
+ const { components: laneComponents = [], loading: laneCompsLoading } = useLaneComponents(viewedLaneId);
52
+ const { components: mainComponents = [], loading: mainCompsLoading } = useLaneComponents(
53
+ !isViewingDefaultLane ? defaultLane?.id : undefined
54
+ );
55
+
56
+ // lane components + main components
57
+ const components = isViewingDefaultLane ? laneComponents : mergeComponents(mainComponents, laneComponents);
58
+
45
59
  return {
46
- loading: !workspace,
47
- components: workspace.components || [],
60
+ loading: lanesLoading || laneCompsLoading || mainCompsLoading,
61
+ components,
48
62
  };
49
63
  },
50
64
  });
65
+
66
+ function mergeComponents(mainComponents: ComponentModel[], laneComponents: ComponentModel[]): ComponentModel[] {
67
+ const mainComponentsThatAreNotOnLane = mainComponents.filter((mainComponent) => {
68
+ return !laneComponents.find(
69
+ (laneComponent) => laneComponent.id.toStringWithoutVersion() === mainComponent.id.toStringWithoutVersion()
70
+ );
71
+ });
72
+ return laneComponents.concat(mainComponentsThatAreNotOnLane);
73
+ }
@@ -16,7 +16,7 @@ import type { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';
16
16
  import { ComponentFilters } from '@teambit/component.ui.component-filters.component-filter-context';
17
17
  import { DeprecateFilter } from '@teambit/component.ui.component-filters.deprecate-filter';
18
18
  import { EnvsFilter } from '@teambit/component.ui.component-filters.env-filter';
19
-
19
+ import { ShowMainFilter } from '@teambit/component.ui.component-filters.show-main-filter';
20
20
  import {
21
21
  DrawerWidgetSlot,
22
22
  FilterWidget,
@@ -150,9 +150,11 @@ export class WorkspaceUI {
150
150
 
151
151
  listSidebarItems() {
152
152
  const items = flatten(this.sidebarItemSlot.values());
153
- return compact(items.map((item) => {
154
- return item.component;
155
- }));
153
+ return compact(
154
+ items.map((item) => {
155
+ return item.component;
156
+ })
157
+ );
156
158
  }
157
159
 
158
160
  private menuItems: MenuItem[] = [
@@ -221,7 +223,7 @@ export class WorkspaceUI {
221
223
  commandBarUI
222
224
  );
223
225
 
224
- workspaceUI.registerDrawerComponentFilters([DeprecateFilter, EnvsFilter]);
226
+ workspaceUI.registerDrawerComponentFilters([DeprecateFilter, EnvsFilter, ShowMainFilter(true)]);
225
227
  workspaceUI.registerDrawerWidgets([
226
228
  <FilterWidget key={'workspace-filter-widget'} />,
227
229
  <TreeToggleWidget key={'workspace-tree-toggle-widget'} />,
@@ -231,9 +233,11 @@ export class WorkspaceUI {
231
233
 
232
234
  workspaceUI.registerSidebarLink({
233
235
  component: function Gallery() {
234
- return <MenuLinkItem exact href="/" icon="comps">
235
- Gallery
236
- </MenuLinkItem>;
236
+ return (
237
+ <MenuLinkItem exact href="/" icon="comps">
238
+ Workspace Overview
239
+ </MenuLinkItem>
240
+ );
237
241
  },
238
242
  });
239
243