@teambit/scope 0.0.964 → 0.0.965

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
+ import { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';
1
2
  import { ComponentType, ReactNode } from 'react';
2
3
  import { ScopeModel } from '.';
3
4
  export declare type GetScopeOptions = {
@@ -11,4 +12,5 @@ export declare type GetScopeOptions = {
11
12
  PaneWrapper?: ComponentType<{
12
13
  children: ReactNode;
13
14
  }>;
15
+ overrideDrawers?: DrawerType[];
14
16
  };
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["get-scope-options.ts"],"sourcesContent":["import { ComponentType, ReactNode } from 'react';\nimport { ScopeModel } from '.';\n\nexport type GetScopeOptions = {\n useScope?: () => { scope: ScopeModel | undefined };\n Corner?: ComponentType;\n paneClassName?: string;\n scopeClassName?: string;\n TargetScopeOverview?: ComponentType;\n PaneWrapper?: ComponentType<{ children: ReactNode }>;\n};\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["get-scope-options.ts"],"sourcesContent":["import { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';\nimport { ComponentType, ReactNode } from 'react';\nimport { ScopeModel } from '.';\n\nexport type GetScopeOptions = {\n useScope?: () => { scope: ScopeModel | undefined };\n Corner?: ComponentType;\n paneClassName?: string;\n scopeClassName?: string;\n TargetScopeOverview?: ComponentType;\n PaneWrapper?: ComponentType<{ children: ReactNode }>;\n overrideDrawers?: DrawerType[];\n};\n"],"mappings":""}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.scope_scope@0.0.964/dist/scope.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.scope_scope@0.0.964/dist/scope.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.scope_scope@0.0.965/dist/scope.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.scope_scope@0.0.965/dist/scope.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -1,5 +1,6 @@
1
1
  import { ComponentsDrawer, ComponentFiltersSlot, DrawerWidgetSlot } from '@teambit/component.ui.component-drawer';
2
2
  import { ComponentModel } from '@teambit/component';
3
+ import { LanesModel } from '@teambit/lanes.ui.models.lanes-model';
3
4
  import { SidebarSlot } from './scope.ui.runtime';
4
5
  export declare type ScopeDrawerProps = {
5
6
  treeWidgets: SidebarSlot;
@@ -9,5 +10,9 @@ export declare type ScopeDrawerProps = {
9
10
  overrideUseComponents?: () => {
10
11
  components: ComponentModel[];
11
12
  };
13
+ overrideUseLanes?: () => {
14
+ lanesModel?: LanesModel;
15
+ loading?: boolean;
16
+ };
12
17
  };
13
- export declare const scopeDrawer: ({ treeWidgets, filtersSlot, drawerWidgetSlot, assumeScopeInUrl, overrideUseComponents, }: ScopeDrawerProps) => ComponentsDrawer;
18
+ export declare const scopeDrawer: ({ treeWidgets, filtersSlot, drawerWidgetSlot, assumeScopeInUrl, overrideUseComponents, overrideUseLanes: useLanesFromProps, }: ScopeDrawerProps) => ComponentsDrawer;
@@ -61,12 +61,15 @@ const scopeDrawer = ({
61
61
  filtersSlot,
62
62
  drawerWidgetSlot,
63
63
  assumeScopeInUrl = false,
64
- overrideUseComponents
64
+ overrideUseComponents,
65
+ overrideUseLanes: useLanesFromProps
65
66
  }) => {
67
+ const useLanes = useLanesFromProps || _lanesHooks().useLanes;
66
68
  const customScopeTreeNodeRenderer = (treeNodeSlot, host) => function TreeNode(props) {
67
69
  const children = props.node.children;
68
70
  if (!children) return /*#__PURE__*/_react().default.createElement(_uiFoundationUi().ComponentView, (0, _extends2().default)({}, props, {
69
- treeNodeSlot: treeNodeSlot
71
+ treeNodeSlot: treeNodeSlot,
72
+ useLanes: useLanes
70
73
  }));
71
74
 
72
75
  // skip over scope node and render only children
@@ -104,6 +107,7 @@ const scopeDrawer = ({
104
107
  drawerWidgets: drawerWidgetSlot
105
108
  },
106
109
  useHost: () => (0, _scopeUiHooks().useScope)(),
110
+ useLanes,
107
111
  emptyMessage: 'Scope is empty',
108
112
  // TODO: create an interface for Component host.
109
113
  transformTree: host => {
@@ -128,7 +132,7 @@ const scopeDrawer = ({
128
132
  const {
129
133
  lanesModel,
130
134
  loading: lanesLoading
131
- } = (0, _lanesHooks().useLanes)();
135
+ } = useLanes();
132
136
  const viewedLaneId = lanesModel === null || lanesModel === void 0 ? void 0 : (_lanesModel$viewedLan = lanesModel.viewedLane) === null || _lanesModel$viewedLan === void 0 ? void 0 : _lanesModel$viewedLan.id;
133
137
  const {
134
138
  components: laneComponents = [],
@@ -1 +1 @@
1
- {"version":3,"names":["scopeDrawer","treeWidgets","filtersSlot","drawerWidgetSlot","assumeScopeInUrl","overrideUseComponents","customScopeTreeNodeRenderer","treeNodeSlot","host","TreeNode","props","children","node","payload","ScopePayload","scopeNameFromNode","id","slice","scope","name","map","childNode","ComponentsDrawer","order","plugins","tree","widgets","customRenderer","filters","drawerWidgets","useHost","useScope","emptyMessage","transformTree","rootNode","thisScopeIndex","findIndex","undefined","thisScope","concat","useComponents","lanesModel","loading","lanesLoading","useLanes","viewedLaneId","viewedLane","components","laneComponents","laneCompsLoading","useLaneComponents","isDefault","mainComponents","useContext","ScopeContext","mergeComponents","mainComponentsThatAreNotOnLane","filter","mainComponent","find","laneComponent","toStringWithoutVersion"],"sources":["scope.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 { TreeNode as TreeNodeType, TreeNodeProps } from '@teambit/design.ui.tree';\nimport { useLanes } from '@teambit/lanes.hooks.use-lanes';\nimport { useLaneComponents } from '@teambit/lanes.hooks.use-lane-components';\nimport { ComponentModel } from '@teambit/component';\nimport { useScope, ScopeContext } from '@teambit/scope.ui.hooks.scope-context';\n// import { WorkspaceModel } from '@teambit/workspace';\nimport { SidebarSlot } from './scope.ui.runtime';\n\nexport type ScopeDrawerProps = {\n treeWidgets: SidebarSlot;\n filtersSlot: ComponentFiltersSlot;\n drawerWidgetSlot: DrawerWidgetSlot;\n assumeScopeInUrl?: boolean;\n overrideUseComponents?: () => { components: ComponentModel[] };\n};\n\nexport const scopeDrawer = ({\n treeWidgets,\n filtersSlot,\n drawerWidgetSlot,\n assumeScopeInUrl = false,\n overrideUseComponents,\n}: ScopeDrawerProps) => {\n const customScopeTreeNodeRenderer = (treeNodeSlot, host?: any) =>\n function TreeNode(props: TreeNodeProps<PayloadType>) {\n const children = props.node.children;\n\n if (!children) return <ComponentView {...props} treeNodeSlot={treeNodeSlot} />;\n\n // skip over scope node and render only children\n if (props.node.payload instanceof ScopePayload) {\n const scopeNameFromNode = props.node.id.slice(0, -1);\n const scope = host?.name;\n\n /**\n * this is only valid when viewing component from a lane\n * if the lane component is from a different scope than the current scope\n * show the scope node\n */\n if (scopeNameFromNode !== scope) {\n return <ScopeTreeNode {...props} />;\n }\n\n return (\n <>\n {children.map((childNode) => (\n <TreeNode key={childNode.id} {...props} node={childNode}></TreeNode>\n ))}\n </>\n );\n }\n\n return <NamespaceTreeNode {...props} />;\n };\n\n return new ComponentsDrawer({\n assumeScopeInUrl,\n order: 0,\n id: 'scope-components-drawer',\n name: 'COMPONENTS',\n plugins: {\n tree: {\n widgets: treeWidgets,\n customRenderer: customScopeTreeNodeRenderer,\n },\n filters: filtersSlot,\n drawerWidgets: drawerWidgetSlot,\n },\n useHost: () => useScope(),\n emptyMessage: 'Scope is empty',\n // TODO: create an interface for Component host.\n transformTree: (host?: any) => {\n return (rootNode: TreeNodeType) => {\n const thisScopeIndex = rootNode.children?.findIndex((node) => {\n if (!(node.payload instanceof ScopePayload)) return undefined;\n const scopeNameFromNode = node.id.slice(0, -1);\n return scopeNameFromNode === host?.name;\n });\n\n const thisScope =\n rootNode.children && thisScopeIndex !== undefined ? rootNode.children[thisScopeIndex] : undefined;\n\n if (thisScope && thisScope.children && rootNode.children) {\n delete rootNode.children[thisScopeIndex as number];\n const children = rootNode.children.concat(thisScope.children);\n rootNode.children = children;\n }\n\n return rootNode;\n };\n },\n useComponents:\n overrideUseComponents ||\n (() => {\n const { lanesModel, loading: lanesLoading } = useLanes();\n const viewedLaneId = lanesModel?.viewedLane?.id;\n\n const { components: laneComponents = [], loading: laneCompsLoading } = useLaneComponents(\n viewedLaneId?.isDefault() ? undefined : viewedLaneId\n );\n const { components: mainComponents } = useContext(ScopeContext);\n // lane components + main components\n const components = mergeComponents(mainComponents, laneComponents);\n\n return {\n loading: lanesLoading || laneCompsLoading,\n components,\n };\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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"}
1
+ {"version":3,"names":["scopeDrawer","treeWidgets","filtersSlot","drawerWidgetSlot","assumeScopeInUrl","overrideUseComponents","overrideUseLanes","useLanesFromProps","useLanes","defaultUseLanesHook","customScopeTreeNodeRenderer","treeNodeSlot","host","TreeNode","props","children","node","payload","ScopePayload","scopeNameFromNode","id","slice","scope","name","map","childNode","ComponentsDrawer","order","plugins","tree","widgets","customRenderer","filters","drawerWidgets","useHost","useScope","emptyMessage","transformTree","rootNode","thisScopeIndex","findIndex","undefined","thisScope","concat","useComponents","lanesModel","loading","lanesLoading","viewedLaneId","viewedLane","components","laneComponents","laneCompsLoading","useLaneComponents","isDefault","mainComponents","useContext","ScopeContext","mergeComponents","mainComponentsThatAreNotOnLane","filter","mainComponent","find","laneComponent","toStringWithoutVersion"],"sources":["scope.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 { TreeNode as TreeNodeType, TreeNodeProps } from '@teambit/design.ui.tree';\nimport { useLanes as defaultUseLanesHook } from '@teambit/lanes.hooks.use-lanes';\nimport { useLaneComponents } from '@teambit/lanes.hooks.use-lane-components';\nimport { ComponentModel } from '@teambit/component';\nimport { useScope, ScopeContext } from '@teambit/scope.ui.hooks.scope-context';\nimport { LanesModel } from '@teambit/lanes.ui.models.lanes-model';\nimport { SidebarSlot } from './scope.ui.runtime';\n\nexport type ScopeDrawerProps = {\n treeWidgets: SidebarSlot;\n filtersSlot: ComponentFiltersSlot;\n drawerWidgetSlot: DrawerWidgetSlot;\n assumeScopeInUrl?: boolean;\n overrideUseComponents?: () => { components: ComponentModel[] };\n overrideUseLanes?: () => { lanesModel?: LanesModel; loading?: boolean };\n};\n\nexport const scopeDrawer = ({\n treeWidgets,\n filtersSlot,\n drawerWidgetSlot,\n assumeScopeInUrl = false,\n overrideUseComponents,\n overrideUseLanes: useLanesFromProps,\n}: ScopeDrawerProps) => {\n const useLanes = useLanesFromProps || defaultUseLanesHook;\n\n const customScopeTreeNodeRenderer = (treeNodeSlot, host?: any) =>\n function TreeNode(props: TreeNodeProps<PayloadType>) {\n const children = props.node.children;\n\n if (!children) return <ComponentView {...props} treeNodeSlot={treeNodeSlot} useLanes={useLanes} />;\n\n // skip over scope node and render only children\n if (props.node.payload instanceof ScopePayload) {\n const scopeNameFromNode = props.node.id.slice(0, -1);\n const scope = host?.name;\n\n /**\n * this is only valid when viewing component from a lane\n * if the lane component is from a different scope than the current scope\n * show the scope node\n */\n if (scopeNameFromNode !== scope) {\n return <ScopeTreeNode {...props} />;\n }\n\n return (\n <>\n {children.map((childNode) => (\n <TreeNode key={childNode.id} {...props} node={childNode}></TreeNode>\n ))}\n </>\n );\n }\n\n return <NamespaceTreeNode {...props} />;\n };\n\n return new ComponentsDrawer({\n assumeScopeInUrl,\n order: 0,\n id: 'scope-components-drawer',\n name: 'COMPONENTS',\n plugins: {\n tree: {\n widgets: treeWidgets,\n customRenderer: customScopeTreeNodeRenderer,\n },\n filters: filtersSlot,\n drawerWidgets: drawerWidgetSlot,\n },\n useHost: () => useScope(),\n useLanes,\n emptyMessage: 'Scope is empty',\n // TODO: create an interface for Component host.\n transformTree: (host?: any) => {\n return (rootNode: TreeNodeType) => {\n const thisScopeIndex = rootNode.children?.findIndex((node) => {\n if (!(node.payload instanceof ScopePayload)) return undefined;\n const scopeNameFromNode = node.id.slice(0, -1);\n return scopeNameFromNode === host?.name;\n });\n\n const thisScope =\n rootNode.children && thisScopeIndex !== undefined ? rootNode.children[thisScopeIndex] : undefined;\n\n if (thisScope && thisScope.children && rootNode.children) {\n delete rootNode.children[thisScopeIndex as number];\n const children = rootNode.children.concat(thisScope.children);\n rootNode.children = children;\n }\n\n return rootNode;\n };\n },\n useComponents:\n overrideUseComponents ||\n (() => {\n const { lanesModel, loading: lanesLoading } = useLanes();\n const viewedLaneId = lanesModel?.viewedLane?.id;\n\n const { components: laneComponents = [], loading: laneCompsLoading } = useLaneComponents(\n viewedLaneId?.isDefault() ? undefined : viewedLaneId\n );\n const { components: mainComponents } = useContext(ScopeContext);\n // lane components + main components\n const components = mergeComponents(mainComponents, laneComponents);\n\n return {\n loading: lanesLoading || laneCompsLoading,\n components,\n };\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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"}
@@ -11,6 +11,7 @@ import { MenuWidget, MenuWidgetSlot } from '@teambit/ui-foundation.ui.menu';
11
11
  import { CommandBarUI } from '@teambit/command-bar';
12
12
  import { ScopeModel } from '@teambit/scope.models.scope-model';
13
13
  import { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';
14
+ import { LanesModel } from '@teambit/lanes.ui.models.lanes-model';
14
15
  import { DrawerWidgetSlot, ComponentFiltersSlot } from '@teambit/component.ui.component-drawer';
15
16
  import { ComponentFilters } from '@teambit/component.ui.component-filters.component-filter-context';
16
17
  import { ComponentUrlResolver } from '@teambit/component.modules.component-url';
@@ -172,7 +173,14 @@ export declare class ScopeUI {
172
173
  registerDrawerWidgets: (widgets: ReactNode[]) => void;
173
174
  registerDefaultDrawers(assumeScopeInUrl?: boolean, overrideUseComponents?: () => {
174
175
  components: ComponentModel[];
176
+ }, overrideUseLanes?: () => {
177
+ lanesModel: LanesModel;
175
178
  }): void;
179
+ getDefaultDrawer(assumeScopeInUrl?: boolean, overrideUseComponents?: () => {
180
+ components: ComponentModel[];
181
+ }, overrideUseLanes?: () => {
182
+ lanesModel: LanesModel;
183
+ }): import("@teambit/component.ui.component-drawer").ComponentsDrawer;
176
184
  uiRoot(): UIRoot;
177
185
  listSidebarLinks(): (React.ComponentClass<{}, any> | React.FunctionComponent<{}>)[];
178
186
  /** registers available components */
@@ -245,7 +245,8 @@ class ScopeUI {
245
245
  routeSlot: this.routeSlot,
246
246
  menuSlot: this.menuSlot,
247
247
  sidebar: /*#__PURE__*/_react().default.createElement(this.sidebar.render, {
248
- items: this.listSidebarLinks()
248
+ items: this.listSidebarLinks(),
249
+ overrideDrawerSlot: options.overrideDrawers
249
250
  }),
250
251
  scopeUi: this,
251
252
  userUseScopeQuery: options.useScope,
@@ -349,14 +350,18 @@ class ScopeUI {
349
350
  }, children);
350
351
  return (0, _lodash().flatten)(contexts).concat(ComponentUrlFuncProvider);
351
352
  }
352
- registerDefaultDrawers(assumeScopeInUrl = false, overrideUseComponents) {
353
- this.sidebar.registerDrawer((0, _scopeUi().scopeDrawer)({
353
+ registerDefaultDrawers(assumeScopeInUrl = false, overrideUseComponents, overrideUseLanes) {
354
+ this.sidebar.registerDrawer(this.getDefaultDrawer(assumeScopeInUrl, overrideUseComponents, overrideUseLanes));
355
+ }
356
+ getDefaultDrawer(assumeScopeInUrl = false, overrideUseComponents, overrideUseLanes) {
357
+ return (0, _scopeUi().scopeDrawer)({
354
358
  treeWidgets: this.sidebarSlot,
355
359
  filtersSlot: this.drawerComponentsFiltersSlot,
356
360
  drawerWidgetSlot: this.drawerWidgetSlot,
357
361
  assumeScopeInUrl,
358
- overrideUseComponents
359
- }));
362
+ overrideUseComponents,
363
+ overrideUseLanes
364
+ });
360
365
  }
361
366
  uiRoot() {
362
367
  this.registerDefaultDrawers();
@@ -1 +1 @@
1
- {"version":3,"names":["ScopeUI","constructor","routeSlot","componentUi","menuSlot","sidebar","sidebarSlot","commandBarUI","scopeBadgeSlot","menuWidgetSlot","sidebarItemSlot","menuItemSlot","cornerSlot","overviewSlot","contextSlot","drawerWidgetSlot","drawerComponentsFiltersSlot","routes","register","menuItems","componentTreeNodes","map","componentTreeNode","links","drawer","registerDrawer","filters","widgets","components","updateComponents","category","title","keyChar","handler","run","registerBadge","badges","getScope","options","TargetScopeOverview","scopeClassName","Corner","listSidebarLinks","useScope","getContext","setSidebarToggle","paneClassName","PaneWrapper","registerOverviewLine","lines","registerRoutes","applyMenuRoutes","registerMenuRoutes","path","routePath","element","getMenu","ScopeAspect","id","getScopeMenu","registerExplicitRoutes","getComponentUI","registerMenuWidget","registerCorner","corner","registerComponentUrl","func","componentUrlFunc","replaceOverview","replaceDescription","replaceMetadataSection","registerMetadataItem","replaceComponentGrid","registerMetadata","addContext","context","contexts","values","ComponentUrlFuncProvider","children","flatten","concat","registerDefaultDrawers","assumeScopeInUrl","overrideUseComponents","scopeDrawer","treeWidgets","filtersSlot","uiRoot","setKeyBindHandler","addCommand","action","displayName","keybinding","sorted","sort","a","b","aWeight","weight","bWeight","compact","link","component","provider","ui","config","componentFiltersSlot","scopeUi","registerDrawerComponentFilters","DeprecateFilter","EnvsFilter","ShowMainFilter","registerDrawerWidgets","registerRoot","bind","registerMenuItem","useBoxAction","useBoxIcon","showGallery","registerSidebarLink","Gallery","UIAspect","ComponentAspect","SidebarAspect","CommandBarAspect","UIRuntime","Slot","withType","addRuntime"],"sources":["scope.ui.runtime.tsx"],"sourcesContent":["import type { ComponentUI, ComponentModel } from '@teambit/component';\nimport { compact, flatten } from 'lodash';\nimport { ComponentAspect } from '@teambit/component';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { SidebarAspect, SidebarUI, SidebarItem, SidebarItemSlot } from '@teambit/sidebar';\nimport { ComponentTreeNode } from '@teambit/component-tree';\nimport { UIAspect, UIRootUI as UIRoot, UIRuntime, UiUI } from '@teambit/ui';\nimport React, { ComponentType, ReactNode } from 'react';\nimport { MenuItemSlot, MenuItem } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { RouteProps } from 'react-router-dom';\nimport { MenuWidget, MenuWidgetSlot } from '@teambit/ui-foundation.ui.menu';\nimport { MenuLinkItem } from '@teambit/design.ui.surfaces.menu.link-item';\nimport CommandBarAspect, { CommandBarUI, CommandHandler } from '@teambit/command-bar';\nimport { ScopeModel } from '@teambit/scope.models.scope-model';\nimport { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';\nimport {\n DrawerWidgetSlot,\n FilterWidget,\n TreeToggleWidget,\n ComponentFiltersSlot,\n} from '@teambit/component.ui.component-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 { ComponentUrlResolver, ComponentUrlProvider } from '@teambit/component.modules.component-url';\nimport { ShowMainFilter } from '@teambit/component.ui.component-filters.show-main-filter';\nimport { ScopeMenu, ScopeUseBox } from './ui/menu';\nimport { ScopeAspect } from './scope.aspect';\nimport { Scope } from './ui/scope';\nimport { scopeDrawer } from './scope.ui.drawer';\nimport { GetScopeOptions } from './get-scope-options';\n\nexport type ScopeBadge = ComponentType;\n\nexport type ScopeBadgeSlot = SlotRegistry<ScopeBadge[]>;\n\nexport type ContextSlot = SlotRegistry<ScopeContextType[]>;\n\nexport type ScopeContextType = ComponentType<{ scope: ScopeModel; children: ReactNode }>;\n\nexport type SidebarSlot = SlotRegistry<ComponentTreeNode>;\n\nexport type ScopeOverview = ComponentType;\n\nexport type ScopeOverviewSlot = SlotRegistry<ScopeOverview>;\n\nexport type Corner = ComponentType;\n\nexport type CornerSlot = SlotRegistry<Corner>;\n\nexport type OverviewLine = ComponentType;\n\nexport type OverviewLineSlot = SlotRegistry<OverviewLine[]>;\n\nexport type ScopeUIConfig = {\n showGallery: boolean;\n useBoxAction?: string;\n useBoxIcon?: string;\n};\n\nexport class ScopeUI {\n constructor(\n /**\n * route slot.\n */\n private routeSlot: RouteSlot,\n\n /**\n * component ui extension.\n */\n private componentUi: ComponentUI,\n /**\n * menu slot\n */\n private menuSlot: RouteSlot,\n\n private sidebar: SidebarUI,\n\n private sidebarSlot: SidebarSlot,\n\n private commandBarUI: CommandBarUI,\n\n private scopeBadgeSlot: ScopeBadgeSlot,\n\n private menuWidgetSlot: MenuWidgetSlot,\n\n /**\n * sidebar link slot\n */\n private sidebarItemSlot: SidebarItemSlot,\n\n /**\n * main dropdown item slot\n */\n private menuItemSlot: MenuItemSlot,\n\n /**\n * corner slot\n */\n private cornerSlot: CornerSlot,\n\n /**\n * overview line slot to add new lines beneath the overview section\n */\n private overviewSlot: OverviewLineSlot,\n\n /**\n * add a new context to ui\n */\n private contextSlot: ContextSlot,\n private drawerWidgetSlot: DrawerWidgetSlot,\n private drawerComponentsFiltersSlot: ComponentFiltersSlot\n ) {}\n\n private setSidebarToggle: (updated: CommandHandler) => void = () => {};\n\n /**\n * register a new badge into the scope overview.\n */\n registerBadge(...badges: ScopeBadge[]) {\n this.scopeBadgeSlot.register(badges);\n return this;\n }\n\n getScope(options: GetScopeOptions) {\n return (\n <Scope\n TargetScopeOverview={options.TargetScopeOverview}\n scopeClassName={options.scopeClassName}\n TargetCorner={options.Corner}\n routeSlot={this.routeSlot}\n menuSlot={this.menuSlot}\n sidebar={<this.sidebar.render items={this.listSidebarLinks()} />}\n scopeUi={this}\n userUseScopeQuery={options.useScope}\n badgeSlot={this.scopeBadgeSlot}\n overviewLineSlot={this.overviewSlot}\n context={this.getContext()}\n onSidebarTogglerChange={this.setSidebarToggle}\n cornerSlot={this.cornerSlot}\n paneClassName={options.paneClassName}\n PaneWrapper={options.PaneWrapper}\n />\n );\n }\n\n /**\n * register a new line beneath the scope overview section.\n */\n registerOverviewLine(...lines: OverviewLine[]) {\n this.overviewSlot.register(lines);\n return this;\n }\n\n /**\n * register a route to the scope.\n */\n registerRoutes(routes: RouteProps[]) {\n this.routeSlot.register(routes);\n return this;\n }\n\n registerMenuRoutes = (routes: RouteProps[]) => {\n this.menuSlot.register(routes);\n return this;\n };\n\n private applyMenuRoutes() {\n this.registerMenuRoutes([\n {\n path: this.componentUi.routePath,\n element: this.componentUi.getMenu(ScopeAspect.id),\n },\n {\n path: '/',\n element: this.getScopeMenu(),\n },\n ]);\n }\n\n getScopeMenu() {\n return <ScopeMenu widgetSlot={this.menuWidgetSlot} menuItemSlot={this.menuItemSlot} />;\n }\n\n private registerExplicitRoutes() {\n this.applyMenuRoutes();\n this.registerRoutes([\n {\n path: this.componentUi.routePath,\n element: this.componentUi.getComponentUI(ScopeAspect.id),\n },\n ]);\n }\n\n registerMenuWidget(...menuItems: MenuWidget[]) {\n this.menuWidgetSlot.register(menuItems);\n }\n\n registerCorner(corner: Corner) {\n this.cornerSlot.register(corner);\n }\n\n private componentUrlFunc: ComponentUrlResolver | undefined;\n registerComponentUrl(func: ComponentUrlResolver) {\n this.componentUrlFunc = func;\n }\n\n /**\n * register a scope overview.\n */\n replaceOverview() {}\n\n /**\n * register description.\n */\n replaceDescription() {}\n\n /**\n * register metadata section.\n */\n replaceMetadataSection() {}\n\n /**\n * register a metadata item.\n */\n registerMetadataItem() {}\n\n replaceComponentGrid() {}\n\n /**\n * register metadata.\n */\n registerMetadata() {}\n\n /**\n * add a new context to the scope.\n */\n addContext(...context: ScopeContextType[]) {\n this.contextSlot.register(context);\n return this;\n }\n\n private getContext() {\n const contexts = this.contextSlot.values();\n // eslint-disable-next-line react/prop-types\n const ComponentUrlFuncProvider: ScopeContextType = ({ children }) => (\n <ComponentUrlProvider value={this.componentUrlFunc}>{children}</ComponentUrlProvider>\n );\n\n return flatten(contexts).concat(ComponentUrlFuncProvider);\n }\n\n registerMenuItem = (menuItems: MenuItem[]) => {\n this.menuItemSlot.register(menuItems);\n };\n\n /**\n * register a sidebar Widget for the scope\n */\n registerSidebarWidget = (componentTreeNodes: ComponentTreeNode[]) => {\n componentTreeNodes.map((componentTreeNode) => this.sidebarSlot.register(componentTreeNode));\n return this;\n };\n\n /**\n * register a sidebar link to the section above the drawers\n */\n registerSidebarLink = (...links: SidebarItem[]) => {\n this.sidebarItemSlot.register(links);\n };\n\n registerDrawers = (...drawer: DrawerType[]) => {\n this.sidebar.registerDrawer(...drawer);\n return this;\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 registerDefaultDrawers(assumeScopeInUrl = false, overrideUseComponents?: () => { components: ComponentModel[] }) {\n this.sidebar.registerDrawer(\n scopeDrawer({\n treeWidgets: this.sidebarSlot,\n filtersSlot: this.drawerComponentsFiltersSlot,\n drawerWidgetSlot: this.drawerWidgetSlot,\n assumeScopeInUrl,\n overrideUseComponents,\n })\n );\n }\n\n uiRoot(): UIRoot {\n this.registerDefaultDrawers();\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.setSidebarToggle = setKeyBindHandler;\n\n return {\n routes: [\n {\n path: '/*',\n element: (\n <Scope\n routeSlot={this.routeSlot}\n menuSlot={this.menuSlot}\n sidebar={<this.sidebar.render items={this.listSidebarLinks()} />}\n scopeUi={this}\n badgeSlot={this.scopeBadgeSlot}\n overviewLineSlot={this.overviewSlot}\n context={this.getContext()}\n onSidebarTogglerChange={this.setSidebarToggle}\n cornerSlot={this.cornerSlot}\n />\n ),\n },\n ],\n };\n }\n\n listSidebarLinks() {\n const links = flatten(this.sidebarItemSlot.values());\n const sorted = links.sort((a, b) => {\n const aWeight = a?.weight || 0;\n const bWeight = b?.weight || 0;\n return aWeight - bWeight;\n });\n\n return compact(\n sorted.map((link) => {\n return link.component;\n })\n );\n }\n\n /** registers available components */\n setComponents = (components: ComponentModel[]) => {\n this.componentUi.updateComponents(components);\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, CommandBarAspect];\n static runtime = UIRuntime;\n static slots = [\n Slot.withType<RouteProps>(),\n Slot.withType<RouteProps>(),\n Slot.withType<ComponentTreeNode>(),\n Slot.withType<ScopeBadge>(),\n Slot.withType<ScopeOverview>(),\n Slot.withType<MenuWidget[]>(),\n Slot.withType<MenuItemSlot>(),\n Slot.withType<CornerSlot>(),\n Slot.withType<OverviewLineSlot>(),\n Slot.withType<SidebarItemSlot>(),\n Slot.withType<ContextSlot>(),\n Slot.withType<DrawerWidgetSlot>(),\n Slot.withType<ComponentFiltersSlot>(),\n ];\n\n static defaultConfig = {\n showGallery: true,\n };\n\n static async provider(\n [ui, componentUi, sidebar, commandBarUI]: [UiUI, ComponentUI, SidebarUI, CommandBarUI],\n config: ScopeUIConfig,\n [\n routeSlot,\n menuSlot,\n sidebarSlot,\n scopeBadgeSlot,\n menuWidgetSlot,\n menuItemSlot,\n sidebarItemSlot,\n cornerSlot,\n overviewSlot,\n contextSlot,\n drawerWidgetSlot,\n componentFiltersSlot,\n ]: [\n RouteSlot,\n RouteSlot,\n SidebarSlot,\n ScopeBadgeSlot,\n MenuWidgetSlot,\n MenuItemSlot,\n SidebarItemSlot,\n CornerSlot,\n OverviewLineSlot,\n ContextSlot,\n DrawerWidgetSlot,\n ComponentFiltersSlot\n ]\n ) {\n const scopeUi = new ScopeUI(\n routeSlot,\n componentUi,\n menuSlot,\n sidebar,\n sidebarSlot,\n commandBarUI,\n scopeBadgeSlot,\n menuWidgetSlot,\n sidebarItemSlot,\n menuItemSlot,\n cornerSlot,\n overviewSlot,\n contextSlot,\n drawerWidgetSlot,\n componentFiltersSlot\n );\n scopeUi.registerDrawerComponentFilters([DeprecateFilter, EnvsFilter, ShowMainFilter(false)]);\n scopeUi.registerDrawerWidgets([\n <FilterWidget key={'workspace-filter-widget'} />,\n <TreeToggleWidget key={'workspace-tree-toggle-widget'} />,\n ]);\n if (ui) ui.registerRoot(scopeUi.uiRoot.bind(scopeUi));\n scopeUi.registerMenuItem(scopeUi.menuItems);\n scopeUi.registerMenuWidget(() => <ScopeUseBox actionName={config.useBoxAction} actionIcon={config.useBoxIcon} />);\n if (config.showGallery)\n scopeUi.registerSidebarLink({\n component: function Gallery() {\n return (\n <MenuLinkItem exact href=\"/\" icon=\"comps\">\n Overview\n </MenuLinkItem>\n );\n },\n });\n if (ui) scopeUi.registerExplicitRoutes();\n\n return scopeUi;\n }\n}\n\nexport default ScopeUI;\n\nScopeAspect.addRuntime(ScopeUI);\n"],"mappings":"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"}
1
+ {"version":3,"names":["ScopeUI","constructor","routeSlot","componentUi","menuSlot","sidebar","sidebarSlot","commandBarUI","scopeBadgeSlot","menuWidgetSlot","sidebarItemSlot","menuItemSlot","cornerSlot","overviewSlot","contextSlot","drawerWidgetSlot","drawerComponentsFiltersSlot","routes","register","menuItems","componentTreeNodes","map","componentTreeNode","links","drawer","registerDrawer","filters","widgets","components","updateComponents","category","title","keyChar","handler","run","registerBadge","badges","getScope","options","TargetScopeOverview","scopeClassName","Corner","listSidebarLinks","overrideDrawers","useScope","getContext","setSidebarToggle","paneClassName","PaneWrapper","registerOverviewLine","lines","registerRoutes","applyMenuRoutes","registerMenuRoutes","path","routePath","element","getMenu","ScopeAspect","id","getScopeMenu","registerExplicitRoutes","getComponentUI","registerMenuWidget","registerCorner","corner","registerComponentUrl","func","componentUrlFunc","replaceOverview","replaceDescription","replaceMetadataSection","registerMetadataItem","replaceComponentGrid","registerMetadata","addContext","context","contexts","values","ComponentUrlFuncProvider","children","flatten","concat","registerDefaultDrawers","assumeScopeInUrl","overrideUseComponents","overrideUseLanes","getDefaultDrawer","scopeDrawer","treeWidgets","filtersSlot","uiRoot","setKeyBindHandler","addCommand","action","displayName","keybinding","sorted","sort","a","b","aWeight","weight","bWeight","compact","link","component","provider","ui","config","componentFiltersSlot","scopeUi","registerDrawerComponentFilters","DeprecateFilter","EnvsFilter","ShowMainFilter","registerDrawerWidgets","registerRoot","bind","registerMenuItem","useBoxAction","useBoxIcon","showGallery","registerSidebarLink","Gallery","UIAspect","ComponentAspect","SidebarAspect","CommandBarAspect","UIRuntime","Slot","withType","addRuntime"],"sources":["scope.ui.runtime.tsx"],"sourcesContent":["import type { ComponentUI, ComponentModel } from '@teambit/component';\nimport { compact, flatten } from 'lodash';\nimport { ComponentAspect } from '@teambit/component';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { SidebarAspect, SidebarUI, SidebarItem, SidebarItemSlot } from '@teambit/sidebar';\nimport { ComponentTreeNode } from '@teambit/component-tree';\nimport { UIAspect, UIRootUI as UIRoot, UIRuntime, UiUI } from '@teambit/ui';\nimport React, { ComponentType, ReactNode } from 'react';\nimport { MenuItemSlot, MenuItem } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { RouteProps } from 'react-router-dom';\nimport { MenuWidget, MenuWidgetSlot } from '@teambit/ui-foundation.ui.menu';\nimport { MenuLinkItem } from '@teambit/design.ui.surfaces.menu.link-item';\nimport CommandBarAspect, { CommandBarUI, CommandHandler } from '@teambit/command-bar';\nimport { ScopeModel } from '@teambit/scope.models.scope-model';\nimport { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';\nimport { LanesModel } from '@teambit/lanes.ui.models.lanes-model';\nimport {\n DrawerWidgetSlot,\n FilterWidget,\n TreeToggleWidget,\n ComponentFiltersSlot,\n} from '@teambit/component.ui.component-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 { ComponentUrlResolver, ComponentUrlProvider } from '@teambit/component.modules.component-url';\nimport { ShowMainFilter } from '@teambit/component.ui.component-filters.show-main-filter';\nimport { ScopeMenu, ScopeUseBox } from './ui/menu';\nimport { ScopeAspect } from './scope.aspect';\nimport { Scope } from './ui/scope';\nimport { scopeDrawer } from './scope.ui.drawer';\nimport { GetScopeOptions } from './get-scope-options';\n\nexport type ScopeBadge = ComponentType;\n\nexport type ScopeBadgeSlot = SlotRegistry<ScopeBadge[]>;\n\nexport type ContextSlot = SlotRegistry<ScopeContextType[]>;\n\nexport type ScopeContextType = ComponentType<{ scope: ScopeModel; children: ReactNode }>;\n\nexport type SidebarSlot = SlotRegistry<ComponentTreeNode>;\n\nexport type ScopeOverview = ComponentType;\n\nexport type ScopeOverviewSlot = SlotRegistry<ScopeOverview>;\n\nexport type Corner = ComponentType;\n\nexport type CornerSlot = SlotRegistry<Corner>;\n\nexport type OverviewLine = ComponentType;\n\nexport type OverviewLineSlot = SlotRegistry<OverviewLine[]>;\n\nexport type ScopeUIConfig = {\n showGallery: boolean;\n useBoxAction?: string;\n useBoxIcon?: string;\n};\n\nexport class ScopeUI {\n constructor(\n /**\n * route slot.\n */\n private routeSlot: RouteSlot,\n\n /**\n * component ui extension.\n */\n private componentUi: ComponentUI,\n /**\n * menu slot\n */\n private menuSlot: RouteSlot,\n\n private sidebar: SidebarUI,\n\n private sidebarSlot: SidebarSlot,\n\n private commandBarUI: CommandBarUI,\n\n private scopeBadgeSlot: ScopeBadgeSlot,\n\n private menuWidgetSlot: MenuWidgetSlot,\n\n /**\n * sidebar link slot\n */\n private sidebarItemSlot: SidebarItemSlot,\n\n /**\n * main dropdown item slot\n */\n private menuItemSlot: MenuItemSlot,\n\n /**\n * corner slot\n */\n private cornerSlot: CornerSlot,\n\n /**\n * overview line slot to add new lines beneath the overview section\n */\n private overviewSlot: OverviewLineSlot,\n\n /**\n * add a new context to ui\n */\n private contextSlot: ContextSlot,\n private drawerWidgetSlot: DrawerWidgetSlot,\n private drawerComponentsFiltersSlot: ComponentFiltersSlot\n ) {}\n\n private setSidebarToggle: (updated: CommandHandler) => void = () => {};\n\n /**\n * register a new badge into the scope overview.\n */\n registerBadge(...badges: ScopeBadge[]) {\n this.scopeBadgeSlot.register(badges);\n return this;\n }\n\n getScope(options: GetScopeOptions) {\n return (\n <Scope\n TargetScopeOverview={options.TargetScopeOverview}\n scopeClassName={options.scopeClassName}\n TargetCorner={options.Corner}\n routeSlot={this.routeSlot}\n menuSlot={this.menuSlot}\n sidebar={<this.sidebar.render items={this.listSidebarLinks()} overrideDrawerSlot={options.overrideDrawers} />}\n scopeUi={this}\n userUseScopeQuery={options.useScope}\n badgeSlot={this.scopeBadgeSlot}\n overviewLineSlot={this.overviewSlot}\n context={this.getContext()}\n onSidebarTogglerChange={this.setSidebarToggle}\n cornerSlot={this.cornerSlot}\n paneClassName={options.paneClassName}\n PaneWrapper={options.PaneWrapper}\n />\n );\n }\n\n /**\n * register a new line beneath the scope overview section.\n */\n registerOverviewLine(...lines: OverviewLine[]) {\n this.overviewSlot.register(lines);\n return this;\n }\n\n /**\n * register a route to the scope.\n */\n registerRoutes(routes: RouteProps[]) {\n this.routeSlot.register(routes);\n return this;\n }\n\n registerMenuRoutes = (routes: RouteProps[]) => {\n this.menuSlot.register(routes);\n return this;\n };\n\n private applyMenuRoutes() {\n this.registerMenuRoutes([\n {\n path: this.componentUi.routePath,\n element: this.componentUi.getMenu(ScopeAspect.id),\n },\n {\n path: '/',\n element: this.getScopeMenu(),\n },\n ]);\n }\n\n getScopeMenu() {\n return <ScopeMenu widgetSlot={this.menuWidgetSlot} menuItemSlot={this.menuItemSlot} />;\n }\n\n private registerExplicitRoutes() {\n this.applyMenuRoutes();\n this.registerRoutes([\n {\n path: this.componentUi.routePath,\n element: this.componentUi.getComponentUI(ScopeAspect.id),\n },\n ]);\n }\n\n registerMenuWidget(...menuItems: MenuWidget[]) {\n this.menuWidgetSlot.register(menuItems);\n }\n\n registerCorner(corner: Corner) {\n this.cornerSlot.register(corner);\n }\n\n private componentUrlFunc: ComponentUrlResolver | undefined;\n registerComponentUrl(func: ComponentUrlResolver) {\n this.componentUrlFunc = func;\n }\n\n /**\n * register a scope overview.\n */\n replaceOverview() {}\n\n /**\n * register description.\n */\n replaceDescription() {}\n\n /**\n * register metadata section.\n */\n replaceMetadataSection() {}\n\n /**\n * register a metadata item.\n */\n registerMetadataItem() {}\n\n replaceComponentGrid() {}\n\n /**\n * register metadata.\n */\n registerMetadata() {}\n\n /**\n * add a new context to the scope.\n */\n addContext(...context: ScopeContextType[]) {\n this.contextSlot.register(context);\n return this;\n }\n\n private getContext() {\n const contexts = this.contextSlot.values();\n // eslint-disable-next-line react/prop-types\n const ComponentUrlFuncProvider: ScopeContextType = ({ children }) => (\n <ComponentUrlProvider value={this.componentUrlFunc}>{children}</ComponentUrlProvider>\n );\n\n return flatten(contexts).concat(ComponentUrlFuncProvider);\n }\n\n registerMenuItem = (menuItems: MenuItem[]) => {\n this.menuItemSlot.register(menuItems);\n };\n\n /**\n * register a sidebar Widget for the scope\n */\n registerSidebarWidget = (componentTreeNodes: ComponentTreeNode[]) => {\n componentTreeNodes.map((componentTreeNode) => this.sidebarSlot.register(componentTreeNode));\n return this;\n };\n\n /**\n * register a sidebar link to the section above the drawers\n */\n registerSidebarLink = (...links: SidebarItem[]) => {\n this.sidebarItemSlot.register(links);\n };\n\n registerDrawers = (...drawer: DrawerType[]) => {\n this.sidebar.registerDrawer(...drawer);\n return this;\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 registerDefaultDrawers(\n assumeScopeInUrl = false,\n overrideUseComponents?: () => { components: ComponentModel[] },\n overrideUseLanes?: () => { lanesModel: LanesModel }\n ) {\n this.sidebar.registerDrawer(this.getDefaultDrawer(assumeScopeInUrl, overrideUseComponents, overrideUseLanes));\n }\n\n getDefaultDrawer(\n assumeScopeInUrl = false,\n overrideUseComponents?: () => { components: ComponentModel[] },\n overrideUseLanes?: () => { lanesModel: LanesModel }\n ) {\n return scopeDrawer({\n treeWidgets: this.sidebarSlot,\n filtersSlot: this.drawerComponentsFiltersSlot,\n drawerWidgetSlot: this.drawerWidgetSlot,\n assumeScopeInUrl,\n overrideUseComponents,\n overrideUseLanes,\n });\n }\n\n uiRoot(): UIRoot {\n this.registerDefaultDrawers();\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.setSidebarToggle = setKeyBindHandler;\n\n return {\n routes: [\n {\n path: '/*',\n element: (\n <Scope\n routeSlot={this.routeSlot}\n menuSlot={this.menuSlot}\n sidebar={<this.sidebar.render items={this.listSidebarLinks()} />}\n scopeUi={this}\n badgeSlot={this.scopeBadgeSlot}\n overviewLineSlot={this.overviewSlot}\n context={this.getContext()}\n onSidebarTogglerChange={this.setSidebarToggle}\n cornerSlot={this.cornerSlot}\n />\n ),\n },\n ],\n };\n }\n\n listSidebarLinks() {\n const links = flatten(this.sidebarItemSlot.values());\n const sorted = links.sort((a, b) => {\n const aWeight = a?.weight || 0;\n const bWeight = b?.weight || 0;\n return aWeight - bWeight;\n });\n\n return compact(\n sorted.map((link) => {\n return link.component;\n })\n );\n }\n\n /** registers available components */\n setComponents = (components: ComponentModel[]) => {\n this.componentUi.updateComponents(components);\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, CommandBarAspect];\n static runtime = UIRuntime;\n static slots = [\n Slot.withType<RouteProps>(),\n Slot.withType<RouteProps>(),\n Slot.withType<ComponentTreeNode>(),\n Slot.withType<ScopeBadge>(),\n Slot.withType<ScopeOverview>(),\n Slot.withType<MenuWidget[]>(),\n Slot.withType<MenuItemSlot>(),\n Slot.withType<CornerSlot>(),\n Slot.withType<OverviewLineSlot>(),\n Slot.withType<SidebarItemSlot>(),\n Slot.withType<ContextSlot>(),\n Slot.withType<DrawerWidgetSlot>(),\n Slot.withType<ComponentFiltersSlot>(),\n ];\n\n static defaultConfig = {\n showGallery: true,\n };\n\n static async provider(\n [ui, componentUi, sidebar, commandBarUI]: [UiUI, ComponentUI, SidebarUI, CommandBarUI],\n config: ScopeUIConfig,\n [\n routeSlot,\n menuSlot,\n sidebarSlot,\n scopeBadgeSlot,\n menuWidgetSlot,\n menuItemSlot,\n sidebarItemSlot,\n cornerSlot,\n overviewSlot,\n contextSlot,\n drawerWidgetSlot,\n componentFiltersSlot,\n ]: [\n RouteSlot,\n RouteSlot,\n SidebarSlot,\n ScopeBadgeSlot,\n MenuWidgetSlot,\n MenuItemSlot,\n SidebarItemSlot,\n CornerSlot,\n OverviewLineSlot,\n ContextSlot,\n DrawerWidgetSlot,\n ComponentFiltersSlot\n ]\n ) {\n const scopeUi = new ScopeUI(\n routeSlot,\n componentUi,\n menuSlot,\n sidebar,\n sidebarSlot,\n commandBarUI,\n scopeBadgeSlot,\n menuWidgetSlot,\n sidebarItemSlot,\n menuItemSlot,\n cornerSlot,\n overviewSlot,\n contextSlot,\n drawerWidgetSlot,\n componentFiltersSlot\n );\n scopeUi.registerDrawerComponentFilters([DeprecateFilter, EnvsFilter, ShowMainFilter(false)]);\n scopeUi.registerDrawerWidgets([\n <FilterWidget key={'workspace-filter-widget'} />,\n <TreeToggleWidget key={'workspace-tree-toggle-widget'} />,\n ]);\n if (ui) ui.registerRoot(scopeUi.uiRoot.bind(scopeUi));\n scopeUi.registerMenuItem(scopeUi.menuItems);\n scopeUi.registerMenuWidget(() => <ScopeUseBox actionName={config.useBoxAction} actionIcon={config.useBoxIcon} />);\n if (config.showGallery)\n scopeUi.registerSidebarLink({\n component: function Gallery() {\n return (\n <MenuLinkItem exact href=\"/\" icon=\"comps\">\n Overview\n </MenuLinkItem>\n );\n },\n });\n if (ui) scopeUi.registerExplicitRoutes();\n\n return scopeUi;\n }\n}\n\nexport default ScopeUI;\n\nScopeAspect.addRuntime(ScopeUI);\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/scope",
3
- "version": "0.0.964",
3
+ "version": "0.0.965",
4
4
  "homepage": "https://bit.dev/teambit/scope/scope",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.scope",
8
8
  "name": "scope",
9
- "version": "0.0.964"
9
+ "version": "0.0.965"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
@@ -26,46 +26,47 @@
26
26
  "@teambit/base-ui.surfaces.split-pane.hover-splitter": "1.0.0",
27
27
  "@teambit/base-ui.surfaces.split-pane.split-pane": "1.0.0",
28
28
  "@teambit/base-ui.utils.composer": "1.0.0",
29
- "@teambit/scope.models.scope-model": "0.0.305",
30
- "@teambit/scope.ui.hooks.scope-context": "0.0.305",
31
- "@teambit/cli": "0.0.647",
32
- "@teambit/component": "0.0.964",
33
- "@teambit/logger": "0.0.740",
34
- "@teambit/aspect-loader": "0.0.964",
29
+ "@teambit/ui-foundation.ui.tree.drawer": "0.0.511",
30
+ "@teambit/scope.models.scope-model": "0.0.306",
31
+ "@teambit/scope.ui.hooks.scope-context": "0.0.306",
32
+ "@teambit/cli": "0.0.648",
33
+ "@teambit/component": "0.0.965",
34
+ "@teambit/logger": "0.0.741",
35
+ "@teambit/aspect-loader": "0.0.965",
35
36
  "@teambit/bit-error": "0.0.402",
36
- "@teambit/builder": "0.0.964",
37
- "@teambit/compiler": "0.0.964",
38
- "@teambit/dependency-resolver": "0.0.964",
39
- "@teambit/envs": "0.0.964",
40
- "@teambit/express": "0.0.745",
41
- "@teambit/graph": "0.0.964",
42
- "@teambit/graphql": "0.0.964",
37
+ "@teambit/builder": "0.0.965",
38
+ "@teambit/compiler": "0.0.965",
39
+ "@teambit/dependency-resolver": "0.0.965",
40
+ "@teambit/envs": "0.0.965",
41
+ "@teambit/express": "0.0.746",
42
+ "@teambit/graph": "0.0.965",
43
+ "@teambit/graphql": "0.0.965",
43
44
  "@teambit/harmony.modules.requireable-component": "0.0.491",
44
- "@teambit/isolator": "0.0.964",
45
+ "@teambit/isolator": "0.0.965",
45
46
  "@teambit/legacy-bit-id": "0.0.421",
46
- "@teambit/ui": "0.0.964",
47
+ "@teambit/ui": "0.0.965",
47
48
  "@teambit/workspace.modules.match-pattern": "0.0.498",
48
49
  "@teambit/component-id": "0.0.425",
49
- "@teambit/component.ui.component-drawer": "0.0.205",
50
+ "@teambit/component.ui.component-drawer": "0.0.206",
50
51
  "@teambit/design.ui.tree": "0.0.16",
51
- "@teambit/lanes.hooks.use-lane-components": "0.0.109",
52
- "@teambit/lanes.hooks.use-lanes": "0.0.110",
53
- "@teambit/ui-foundation.ui.side-bar": "0.0.722",
54
- "@teambit/command-bar": "0.0.964",
55
- "@teambit/component-tree": "0.0.752",
52
+ "@teambit/lanes.hooks.use-lane-components": "0.0.110",
53
+ "@teambit/lanes.hooks.use-lanes": "0.0.111",
54
+ "@teambit/lanes.ui.models.lanes-model": "0.0.73",
55
+ "@teambit/ui-foundation.ui.side-bar": "0.0.723",
56
+ "@teambit/command-bar": "0.0.965",
57
+ "@teambit/component-tree": "0.0.753",
56
58
  "@teambit/component.modules.component-url": "0.0.148",
57
- "@teambit/component.ui.component-filters.component-filter-context": "0.0.79",
58
- "@teambit/component.ui.component-filters.deprecate-filter": "0.0.79",
59
- "@teambit/component.ui.component-filters.env-filter": "0.0.85",
60
- "@teambit/component.ui.component-filters.show-main-filter": "0.0.72",
61
- "@teambit/sidebar": "0.0.964",
59
+ "@teambit/component.ui.component-filters.component-filter-context": "0.0.80",
60
+ "@teambit/component.ui.component-filters.deprecate-filter": "0.0.80",
61
+ "@teambit/component.ui.component-filters.env-filter": "0.0.86",
62
+ "@teambit/component.ui.component-filters.show-main-filter": "0.0.73",
63
+ "@teambit/sidebar": "0.0.965",
62
64
  "@teambit/ui-foundation.ui.main-dropdown": "0.0.497",
63
65
  "@teambit/ui-foundation.ui.menu": "0.0.497",
64
66
  "@teambit/ui-foundation.ui.react-router.slot-router": "0.0.501",
65
- "@teambit/ui-foundation.ui.tree.drawer": "0.0.511",
66
- "@teambit/lane-id": "0.0.164",
67
+ "@teambit/lane-id": "0.0.165",
67
68
  "@teambit/ui-foundation.ui.constants.z-indexes": "0.0.498",
68
- "@teambit/scope.ui.hooks.use-scope": "0.0.310",
69
+ "@teambit/scope.ui.hooks.use-scope": "0.0.311",
69
70
  "@teambit/ui-foundation.ui.buttons.collapser": "0.0.206",
70
71
  "@teambit/ui-foundation.ui.corner": "0.0.507",
71
72
  "@teambit/ui-foundation.ui.full-loader": "0.0.495",
@@ -94,7 +95,7 @@
94
95
  },
95
96
  "peerDependencies": {
96
97
  "react-router-dom": "^6.0.0",
97
- "@teambit/legacy": "1.0.427",
98
+ "@teambit/legacy": "1.0.429",
98
99
  "react": "^16.8.0 || ^17.0.0",
99
100
  "react-dom": "^16.8.0 || ^17.0.0"
100
101
  },
@@ -8,11 +8,11 @@ import {
8
8
  ScopeTreeNode,
9
9
  } from '@teambit/ui-foundation.ui.side-bar';
10
10
  import { TreeNode as TreeNodeType, TreeNodeProps } from '@teambit/design.ui.tree';
11
- import { useLanes } from '@teambit/lanes.hooks.use-lanes';
11
+ import { useLanes as defaultUseLanesHook } from '@teambit/lanes.hooks.use-lanes';
12
12
  import { useLaneComponents } from '@teambit/lanes.hooks.use-lane-components';
13
13
  import { ComponentModel } from '@teambit/component';
14
14
  import { useScope, ScopeContext } from '@teambit/scope.ui.hooks.scope-context';
15
- // import { WorkspaceModel } from '@teambit/workspace';
15
+ import { LanesModel } from '@teambit/lanes.ui.models.lanes-model';
16
16
  import { SidebarSlot } from './scope.ui.runtime';
17
17
 
18
18
  export type ScopeDrawerProps = {
@@ -21,6 +21,7 @@ export type ScopeDrawerProps = {
21
21
  drawerWidgetSlot: DrawerWidgetSlot;
22
22
  assumeScopeInUrl?: boolean;
23
23
  overrideUseComponents?: () => { components: ComponentModel[] };
24
+ overrideUseLanes?: () => { lanesModel?: LanesModel; loading?: boolean };
24
25
  };
25
26
 
26
27
  export const scopeDrawer = ({
@@ -29,12 +30,15 @@ export const scopeDrawer = ({
29
30
  drawerWidgetSlot,
30
31
  assumeScopeInUrl = false,
31
32
  overrideUseComponents,
33
+ overrideUseLanes: useLanesFromProps,
32
34
  }: ScopeDrawerProps) => {
35
+ const useLanes = useLanesFromProps || defaultUseLanesHook;
36
+
33
37
  const customScopeTreeNodeRenderer = (treeNodeSlot, host?: any) =>
34
38
  function TreeNode(props: TreeNodeProps<PayloadType>) {
35
39
  const children = props.node.children;
36
40
 
37
- if (!children) return <ComponentView {...props} treeNodeSlot={treeNodeSlot} />;
41
+ if (!children) return <ComponentView {...props} treeNodeSlot={treeNodeSlot} useLanes={useLanes} />;
38
42
 
39
43
  // skip over scope node and render only children
40
44
  if (props.node.payload instanceof ScopePayload) {
@@ -76,6 +80,7 @@ export const scopeDrawer = ({
76
80
  drawerWidgets: drawerWidgetSlot,
77
81
  },
78
82
  useHost: () => useScope(),
83
+ useLanes,
79
84
  emptyMessage: 'Scope is empty',
80
85
  // TODO: create an interface for Component host.
81
86
  transformTree: (host?: any) => {
@@ -14,6 +14,7 @@ import { MenuLinkItem } from '@teambit/design.ui.surfaces.menu.link-item';
14
14
  import CommandBarAspect, { CommandBarUI, CommandHandler } from '@teambit/command-bar';
15
15
  import { ScopeModel } from '@teambit/scope.models.scope-model';
16
16
  import { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';
17
+ import { LanesModel } from '@teambit/lanes.ui.models.lanes-model';
17
18
  import {
18
19
  DrawerWidgetSlot,
19
20
  FilterWidget,
@@ -131,7 +132,7 @@ export class ScopeUI {
131
132
  TargetCorner={options.Corner}
132
133
  routeSlot={this.routeSlot}
133
134
  menuSlot={this.menuSlot}
134
- sidebar={<this.sidebar.render items={this.listSidebarLinks()} />}
135
+ sidebar={<this.sidebar.render items={this.listSidebarLinks()} overrideDrawerSlot={options.overrideDrawers} />}
135
136
  scopeUi={this}
136
137
  userUseScopeQuery={options.useScope}
137
138
  badgeSlot={this.scopeBadgeSlot}
@@ -286,16 +287,27 @@ export class ScopeUI {
286
287
  this.drawerWidgetSlot.register(widgets);
287
288
  };
288
289
 
289
- registerDefaultDrawers(assumeScopeInUrl = false, overrideUseComponents?: () => { components: ComponentModel[] }) {
290
- this.sidebar.registerDrawer(
291
- scopeDrawer({
292
- treeWidgets: this.sidebarSlot,
293
- filtersSlot: this.drawerComponentsFiltersSlot,
294
- drawerWidgetSlot: this.drawerWidgetSlot,
295
- assumeScopeInUrl,
296
- overrideUseComponents,
297
- })
298
- );
290
+ registerDefaultDrawers(
291
+ assumeScopeInUrl = false,
292
+ overrideUseComponents?: () => { components: ComponentModel[] },
293
+ overrideUseLanes?: () => { lanesModel: LanesModel }
294
+ ) {
295
+ this.sidebar.registerDrawer(this.getDefaultDrawer(assumeScopeInUrl, overrideUseComponents, overrideUseLanes));
296
+ }
297
+
298
+ getDefaultDrawer(
299
+ assumeScopeInUrl = false,
300
+ overrideUseComponents?: () => { components: ComponentModel[] },
301
+ overrideUseLanes?: () => { lanesModel: LanesModel }
302
+ ) {
303
+ return scopeDrawer({
304
+ treeWidgets: this.sidebarSlot,
305
+ filtersSlot: this.drawerComponentsFiltersSlot,
306
+ drawerWidgetSlot: this.drawerWidgetSlot,
307
+ assumeScopeInUrl,
308
+ overrideUseComponents,
309
+ overrideUseLanes,
310
+ });
299
311
  }
300
312
 
301
313
  uiRoot(): UIRoot {