@teambit/scope 0.0.653 → 0.0.654

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.
@@ -217,8 +217,9 @@ class ScopeComponentLoader {
217
217
 
218
218
  getTagMap(modelComponent) {
219
219
  const tagMap = new (_component().TagMap)();
220
- Object.keys(modelComponent.versionsIncludeOrphaned).forEach(versionStr => {
221
- const tag = new (_component().Tag)(modelComponent.versionsIncludeOrphaned[versionStr].toString(), new (_semver().SemVer)(versionStr));
220
+ const allVersions = modelComponent.versionsIncludeOrphaned;
221
+ Object.keys(allVersions).forEach(versionStr => {
222
+ const tag = new (_component().Tag)(allVersions[versionStr].toString(), new (_semver().SemVer)(versionStr));
222
223
  tagMap.set(tag.version, tag);
223
224
  });
224
225
  return tagMap;
@@ -1 +1 @@
1
- {"version":3,"sources":["scope-component-loader.ts"],"names":["ScopeComponentLoader","constructor","scope","logger","componentsCache","maxSize","importedComponentsCache","maxAge","get","id","importIfMissing","fromCache","getFromCache","idStr","toString","debug","legacyId","_legacy","modelComponent","legacyScope","getModelComponentIfExist","hasScope","import","BitIds","fromArray","set","changeScope","name","undefined","versionStr","version","latest","newId","changeVersion","loadVersion","objects","snap","createSnapFromVersion","state","createStateFromVersion","tagMap","getTagMap","component","Component","getFromConsumerComponent","consumerComponent","getModelComponent","resolveComponentId","pendingVersion","getRemoteComponent","compImport","ScopeComponentsImporter","objectList","getAll","forEach","obj","setCache","getConsumerComponent","getState","hash","load","Ref","getSnap","getVersionObject","err","code","errMsg","error","Error","clearCache","deleteAll","isEqual","TagMap","Object","keys","versionsIncludeOrphaned","tag","Tag","SemVer","Snap","Date","parseInt","log","date","parents","map","p","displayName","username","email","message","State","Config","mainFile","extensions","componentExtension","createAspectListFromLegacy","ComponentFS","fromVinyls","files","dependencies"],"mappings":"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","sourcesContent":["import { Component, ComponentFS, ComponentID, Config, Snap, State, Tag, TagMap } from '@teambit/component';\nimport { Logger } from '@teambit/logger';\nimport { SemVer } from 'semver';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport ScopeComponentsImporter from '@teambit/legacy/dist/scope/component-ops/scope-components-importer';\nimport { ModelComponent, Version } from '@teambit/legacy/dist/scope/models';\nimport { BitIds } from '@teambit/legacy/dist/bit-id';\nimport { Ref } from '@teambit/legacy/dist/scope/objects';\nimport { getMaxSizeForComponents, InMemoryCache } from '@teambit/legacy/dist/cache/in-memory-cache';\nimport { createInMemoryCache } from '@teambit/legacy/dist/cache/cache-factory';\nimport type { ScopeMain } from './scope.main.runtime';\n\nexport class ScopeComponentLoader {\n private componentsCache: InMemoryCache<Component>; // cache loaded components\n private importedComponentsCache: InMemoryCache<boolean>;\n constructor(private scope: ScopeMain, private logger: Logger) {\n this.componentsCache = createInMemoryCache({ maxSize: getMaxSizeForComponents() });\n this.importedComponentsCache = createInMemoryCache({ maxAge: 1000 * 60 * 30 }); // 30 min\n }\n\n async get(id: ComponentID, importIfMissing = true): Promise<Component | undefined> {\n const fromCache = this.getFromCache(id);\n if (fromCache) {\n return fromCache;\n }\n const idStr = id.toString();\n this.logger.debug(`ScopeComponentLoader.get, loading ${idStr}`);\n const legacyId = id._legacy;\n let modelComponent = await this.scope.legacyScope.getModelComponentIfExist(id._legacy);\n // import if missing\n if (\n !modelComponent &&\n importIfMissing &&\n id._legacy.hasScope() &&\n !this.importedComponentsCache.get(id.toString())\n ) {\n await this.scope.legacyScope.import(BitIds.fromArray([id._legacy]));\n this.importedComponentsCache.set(id.toString(), true);\n modelComponent = await this.scope.legacyScope.getModelComponentIfExist(id._legacy);\n }\n // Search with scope name for bare scopes\n if (!modelComponent && !legacyId.scope) {\n id = id.changeScope(this.scope.name);\n modelComponent = await this.scope.legacyScope.getModelComponentIfExist(id._legacy);\n }\n if (!modelComponent) return undefined;\n\n // :TODO move to head snap once we have it merged, for now using `latest`.\n const versionStr = id.version && id.version !== 'latest' ? id.version : modelComponent.latest();\n const newId = id.changeVersion(versionStr);\n const version = await modelComponent.loadVersion(versionStr, this.scope.legacyScope.objects);\n const snap = this.createSnapFromVersion(version);\n const state = await this.createStateFromVersion(id, version);\n const tagMap = this.getTagMap(modelComponent);\n\n const component = new Component(newId, snap, state, tagMap, this.scope);\n this.componentsCache.set(idStr, component);\n return component;\n }\n\n async getFromConsumerComponent(consumerComponent: ConsumerComponent): Promise<Component> {\n const legacyId = consumerComponent.id;\n const modelComponent = await this.scope.legacyScope.getModelComponent(legacyId);\n // :TODO move to head snap once we have it merged, for now using `latest`.\n const id = await this.scope.resolveComponentId(legacyId);\n const version =\n consumerComponent.pendingVersion ||\n (await modelComponent.loadVersion(legacyId.version as string, this.scope.legacyScope.objects));\n const snap = this.createSnapFromVersion(version);\n const state = await this.createStateFromVersion(id, version);\n const tagMap = this.getTagMap(modelComponent);\n\n return new Component(id, snap, state, tagMap, this.scope);\n }\n\n /**\n * get a component from a remote without importing it\n */\n async getRemoteComponent(id: ComponentID): Promise<Component> {\n const compImport = new ScopeComponentsImporter(this.scope.legacyScope);\n const objectList = await compImport.getRemoteComponent(id._legacy);\n // it's crucial to add all objects to the Repository cache. otherwise, later, when it asks\n // for the consumerComponent from the legacyScope, it won't work.\n objectList?.getAll().forEach((obj) => this.scope.legacyScope.objects.setCache(obj));\n const consumerComponent = await this.scope.legacyScope.getConsumerComponent(id._legacy);\n return this.getFromConsumerComponent(consumerComponent);\n }\n\n async getState(id: ComponentID, hash: string): Promise<State> {\n const version = (await this.scope.legacyScope.objects.load(new Ref(hash))) as Version;\n return this.createStateFromVersion(id, version);\n }\n\n async getSnap(id: ComponentID, hash: string): Promise<Snap> {\n const getVersionObject = async (): Promise<Version> => {\n try {\n const snap = await this.scope.legacyScope.objects.load(new Ref(hash), true);\n return snap as Version;\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n const errMsg = `fatal: snap \"${hash}\" file for component \"${id.toString()}\" was not found in the filesystem`;\n this.logger.error(errMsg, err);\n throw new Error(errMsg);\n } else {\n throw err;\n }\n }\n };\n const version = await getVersionObject();\n return this.createSnapFromVersion(version);\n }\n\n clearCache() {\n this.componentsCache.deleteAll();\n }\n\n /**\n * make sure that not only the id-str match, but also the legacy-id.\n * this is needed because the ComponentID.toString() is the same whether or not the legacy-id has\n * scope-name, as it includes the defaultScope if the scope is empty.\n * as a result, when out-of-sync is happening and the id is changed to include scope-name in the\n * legacy-id, the component is the cache has the old id.\n */\n private getFromCache(id: ComponentID): Component | undefined {\n const idStr = id.toString();\n const fromCache = this.componentsCache.get(idStr);\n if (fromCache && fromCache.id._legacy.isEqual(id._legacy)) {\n return fromCache;\n }\n return undefined;\n }\n\n private getTagMap(modelComponent: ModelComponent): TagMap {\n const tagMap = new TagMap();\n Object.keys(modelComponent.versionsIncludeOrphaned).forEach((versionStr: string) => {\n const tag = new Tag(modelComponent.versionsIncludeOrphaned[versionStr].toString(), new SemVer(versionStr));\n tagMap.set(tag.version, tag);\n });\n return tagMap;\n }\n\n private createSnapFromVersion(version: Version): Snap {\n return new Snap(\n version.hash().toString(),\n new Date(parseInt(version.log.date)),\n version.parents.map((p) => p.toString()),\n {\n displayName: version.log.username || 'unknown',\n email: version.log.email || 'unknown@anywhere',\n },\n version.log.message\n );\n }\n\n private async createStateFromVersion(id: ComponentID, version: Version): Promise<State> {\n const consumerComponent = await this.scope.legacyScope.getConsumerComponent(id._legacy);\n const state = new State(\n // We use here the consumerComponent.extensions instead of version.extensions\n // because as part of the conversion to consumer component the artifacts are initialized as Artifact instances\n new Config(version.mainFile, consumerComponent.extensions),\n // todo: see the comment of this \"createAspectListFromLegacy\" method. the aspect ids may be incorrect.\n // find a better way to get the ids correctly.\n this.scope.componentExtension.createAspectListFromLegacy(consumerComponent.extensions, this.scope.name),\n ComponentFS.fromVinyls(consumerComponent.files),\n version.dependencies,\n consumerComponent\n );\n return state;\n }\n}\n"]}
1
+ {"version":3,"sources":["scope-component-loader.ts"],"names":["ScopeComponentLoader","constructor","scope","logger","componentsCache","maxSize","importedComponentsCache","maxAge","get","id","importIfMissing","fromCache","getFromCache","idStr","toString","debug","legacyId","_legacy","modelComponent","legacyScope","getModelComponentIfExist","hasScope","import","BitIds","fromArray","set","changeScope","name","undefined","versionStr","version","latest","newId","changeVersion","loadVersion","objects","snap","createSnapFromVersion","state","createStateFromVersion","tagMap","getTagMap","component","Component","getFromConsumerComponent","consumerComponent","getModelComponent","resolveComponentId","pendingVersion","getRemoteComponent","compImport","ScopeComponentsImporter","objectList","getAll","forEach","obj","setCache","getConsumerComponent","getState","hash","load","Ref","getSnap","getVersionObject","err","code","errMsg","error","Error","clearCache","deleteAll","isEqual","TagMap","allVersions","versionsIncludeOrphaned","Object","keys","tag","Tag","SemVer","Snap","Date","parseInt","log","date","parents","map","p","displayName","username","email","message","State","Config","mainFile","extensions","componentExtension","createAspectListFromLegacy","ComponentFS","fromVinyls","files","dependencies"],"mappings":"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","sourcesContent":["import { Component, ComponentFS, ComponentID, Config, Snap, State, Tag, TagMap } from '@teambit/component';\nimport { Logger } from '@teambit/logger';\nimport { SemVer } from 'semver';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport ScopeComponentsImporter from '@teambit/legacy/dist/scope/component-ops/scope-components-importer';\nimport { ModelComponent, Version } from '@teambit/legacy/dist/scope/models';\nimport { BitIds } from '@teambit/legacy/dist/bit-id';\nimport { Ref } from '@teambit/legacy/dist/scope/objects';\nimport { getMaxSizeForComponents, InMemoryCache } from '@teambit/legacy/dist/cache/in-memory-cache';\nimport { createInMemoryCache } from '@teambit/legacy/dist/cache/cache-factory';\nimport type { ScopeMain } from './scope.main.runtime';\n\nexport class ScopeComponentLoader {\n private componentsCache: InMemoryCache<Component>; // cache loaded components\n private importedComponentsCache: InMemoryCache<boolean>;\n constructor(private scope: ScopeMain, private logger: Logger) {\n this.componentsCache = createInMemoryCache({ maxSize: getMaxSizeForComponents() });\n this.importedComponentsCache = createInMemoryCache({ maxAge: 1000 * 60 * 30 }); // 30 min\n }\n\n async get(id: ComponentID, importIfMissing = true): Promise<Component | undefined> {\n const fromCache = this.getFromCache(id);\n if (fromCache) {\n return fromCache;\n }\n const idStr = id.toString();\n this.logger.debug(`ScopeComponentLoader.get, loading ${idStr}`);\n const legacyId = id._legacy;\n let modelComponent = await this.scope.legacyScope.getModelComponentIfExist(id._legacy);\n // import if missing\n if (\n !modelComponent &&\n importIfMissing &&\n id._legacy.hasScope() &&\n !this.importedComponentsCache.get(id.toString())\n ) {\n await this.scope.legacyScope.import(BitIds.fromArray([id._legacy]));\n this.importedComponentsCache.set(id.toString(), true);\n modelComponent = await this.scope.legacyScope.getModelComponentIfExist(id._legacy);\n }\n // Search with scope name for bare scopes\n if (!modelComponent && !legacyId.scope) {\n id = id.changeScope(this.scope.name);\n modelComponent = await this.scope.legacyScope.getModelComponentIfExist(id._legacy);\n }\n if (!modelComponent) return undefined;\n\n // :TODO move to head snap once we have it merged, for now using `latest`.\n const versionStr = id.version && id.version !== 'latest' ? id.version : modelComponent.latest();\n const newId = id.changeVersion(versionStr);\n const version = await modelComponent.loadVersion(versionStr, this.scope.legacyScope.objects);\n const snap = this.createSnapFromVersion(version);\n const state = await this.createStateFromVersion(id, version);\n const tagMap = this.getTagMap(modelComponent);\n\n const component = new Component(newId, snap, state, tagMap, this.scope);\n this.componentsCache.set(idStr, component);\n return component;\n }\n\n async getFromConsumerComponent(consumerComponent: ConsumerComponent): Promise<Component> {\n const legacyId = consumerComponent.id;\n const modelComponent = await this.scope.legacyScope.getModelComponent(legacyId);\n // :TODO move to head snap once we have it merged, for now using `latest`.\n const id = await this.scope.resolveComponentId(legacyId);\n const version =\n consumerComponent.pendingVersion ||\n (await modelComponent.loadVersion(legacyId.version as string, this.scope.legacyScope.objects));\n const snap = this.createSnapFromVersion(version);\n const state = await this.createStateFromVersion(id, version);\n const tagMap = this.getTagMap(modelComponent);\n\n return new Component(id, snap, state, tagMap, this.scope);\n }\n\n /**\n * get a component from a remote without importing it\n */\n async getRemoteComponent(id: ComponentID): Promise<Component> {\n const compImport = new ScopeComponentsImporter(this.scope.legacyScope);\n const objectList = await compImport.getRemoteComponent(id._legacy);\n // it's crucial to add all objects to the Repository cache. otherwise, later, when it asks\n // for the consumerComponent from the legacyScope, it won't work.\n objectList?.getAll().forEach((obj) => this.scope.legacyScope.objects.setCache(obj));\n const consumerComponent = await this.scope.legacyScope.getConsumerComponent(id._legacy);\n return this.getFromConsumerComponent(consumerComponent);\n }\n\n async getState(id: ComponentID, hash: string): Promise<State> {\n const version = (await this.scope.legacyScope.objects.load(new Ref(hash))) as Version;\n return this.createStateFromVersion(id, version);\n }\n\n async getSnap(id: ComponentID, hash: string): Promise<Snap> {\n const getVersionObject = async (): Promise<Version> => {\n try {\n const snap = await this.scope.legacyScope.objects.load(new Ref(hash), true);\n return snap as Version;\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n const errMsg = `fatal: snap \"${hash}\" file for component \"${id.toString()}\" was not found in the filesystem`;\n this.logger.error(errMsg, err);\n throw new Error(errMsg);\n } else {\n throw err;\n }\n }\n };\n const version = await getVersionObject();\n return this.createSnapFromVersion(version);\n }\n\n clearCache() {\n this.componentsCache.deleteAll();\n }\n\n /**\n * make sure that not only the id-str match, but also the legacy-id.\n * this is needed because the ComponentID.toString() is the same whether or not the legacy-id has\n * scope-name, as it includes the defaultScope if the scope is empty.\n * as a result, when out-of-sync is happening and the id is changed to include scope-name in the\n * legacy-id, the component is the cache has the old id.\n */\n private getFromCache(id: ComponentID): Component | undefined {\n const idStr = id.toString();\n const fromCache = this.componentsCache.get(idStr);\n if (fromCache && fromCache.id._legacy.isEqual(id._legacy)) {\n return fromCache;\n }\n return undefined;\n }\n\n private getTagMap(modelComponent: ModelComponent): TagMap {\n const tagMap = new TagMap();\n const allVersions = modelComponent.versionsIncludeOrphaned;\n Object.keys(allVersions).forEach((versionStr: string) => {\n const tag = new Tag(allVersions[versionStr].toString(), new SemVer(versionStr));\n tagMap.set(tag.version, tag);\n });\n return tagMap;\n }\n\n private createSnapFromVersion(version: Version): Snap {\n return new Snap(\n version.hash().toString(),\n new Date(parseInt(version.log.date)),\n version.parents.map((p) => p.toString()),\n {\n displayName: version.log.username || 'unknown',\n email: version.log.email || 'unknown@anywhere',\n },\n version.log.message\n );\n }\n\n private async createStateFromVersion(id: ComponentID, version: Version): Promise<State> {\n const consumerComponent = await this.scope.legacyScope.getConsumerComponent(id._legacy);\n const state = new State(\n // We use here the consumerComponent.extensions instead of version.extensions\n // because as part of the conversion to consumer component the artifacts are initialized as Artifact instances\n new Config(version.mainFile, consumerComponent.extensions),\n // todo: see the comment of this \"createAspectListFromLegacy\" method. the aspect ids may be incorrect.\n // find a better way to get the ids correctly.\n this.scope.componentExtension.createAspectListFromLegacy(consumerComponent.extensions, this.scope.name),\n ComponentFS.fromVinyls(consumerComponent.files),\n version.dependencies,\n consumerComponent\n );\n return state;\n }\n}\n"]}
@@ -11,6 +11,7 @@ import { RouteProps } from 'react-router-dom';
11
11
  import { MenuWidget, MenuWidgetSlot } from '@teambit/ui-foundation.ui.menu';
12
12
  import { CommandBarUI, ComponentSearcher } from '@teambit/command-bar';
13
13
  import { ScopeModel } from '@teambit/scope.models.scope-model';
14
+ import { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';
14
15
  export declare type ScopeBadge = ComponentType;
15
16
  export declare type ScopeBadgeSlot = SlotRegistry<ScopeBadge[]>;
16
17
  export declare type ContextSlot = SlotRegistry<ScopeContextType[]>;
@@ -109,7 +110,8 @@ export declare class ScopeUI {
109
110
  /**
110
111
  * register a route to the scope.
111
112
  */
112
- registerRoute(route: RouteProps): this;
113
+ registerRoutes(routes: RouteProps[]): this;
114
+ registerMenuRoutes: (routes: RouteProps[]) => this;
113
115
  private registerExplicitRoutes;
114
116
  registerMenuWidget(...menuItems: MenuWidget[]): void;
115
117
  registerCorner(corner: Corner): void;
@@ -148,15 +150,16 @@ export declare class ScopeUI {
148
150
  * register a sidebar link to the section above the drawers
149
151
  */
150
152
  registerSidebarLink: (...links: SidebarItem[]) => void;
153
+ registerDrawers: (...drawer: DrawerType[]) => this;
151
154
  uiRoot(): UIRoot;
152
155
  /** registers available components */
153
156
  setComponents: (components: ComponentModel[]) => void;
154
157
  private menuItems;
155
158
  static dependencies: import("@teambit/harmony").Aspect[];
156
159
  static runtime: import("@teambit/harmony").RuntimeDefinition;
157
- static slots: (((registerFn: () => string) => SlotRegistry<RouteProps<string, {
160
+ static slots: (((registerFn: () => string) => SlotRegistry<ComponentTreeNode>) | ((registerFn: () => string) => SlotRegistry<RouteProps<string, {
158
161
  [x: string]: string | undefined;
159
- }>>) | ((registerFn: () => string) => SlotRegistry<ComponentTreeNode>) | ((registerFn: () => string) => SlotRegistry<MenuItemSlot>) | ((registerFn: () => string) => SlotRegistry<SidebarItemSlot>) | ((registerFn: () => string) => SlotRegistry<ScopeBadge>) | ((registerFn: () => string) => SlotRegistry<MenuWidget[]>) | ((registerFn: () => string) => SlotRegistry<CornerSlot>) | ((registerFn: () => string) => SlotRegistry<ContextSlot>))[];
162
+ }>>) | ((registerFn: () => string) => SlotRegistry<MenuItemSlot>) | ((registerFn: () => string) => SlotRegistry<SidebarItemSlot>) | ((registerFn: () => string) => SlotRegistry<ScopeBadge>) | ((registerFn: () => string) => SlotRegistry<MenuWidget[]>) | ((registerFn: () => string) => SlotRegistry<CornerSlot>) | ((registerFn: () => string) => SlotRegistry<ContextSlot>))[];
160
163
  static provider([ui, componentUi, sidebar, commandBarUI, reactRouterUI]: [
161
164
  UiUI,
162
165
  ComponentUI,
@@ -204,6 +204,10 @@ class ScopeUI {
204
204
  this.overviewSlot = overviewSlot;
205
205
  this.contextSlot = contextSlot;
206
206
  (0, _defineProperty2().default)(this, "setSidebarToggle", () => {});
207
+ (0, _defineProperty2().default)(this, "registerMenuRoutes", routes => {
208
+ this.menuSlot.register(routes);
209
+ return this;
210
+ });
207
211
  (0, _defineProperty2().default)(this, "registerMenuItem", menuItems => {
208
212
  this.menuItemSlot.register(menuItems);
209
213
  });
@@ -214,6 +218,10 @@ class ScopeUI {
214
218
  (0, _defineProperty2().default)(this, "registerSidebarLink", (...links) => {
215
219
  this.sidebarItemSlot.register(links);
216
220
  });
221
+ (0, _defineProperty2().default)(this, "registerDrawers", (...drawer) => {
222
+ this.sidebar.registerDrawer(...drawer);
223
+ return this;
224
+ });
217
225
  (0, _defineProperty2().default)(this, "setComponents", components => {
218
226
  this.componentSearcher.update(components);
219
227
  });
@@ -259,17 +267,13 @@ class ScopeUI {
259
267
  */
260
268
 
261
269
 
262
- registerRoute(route) {
263
- this.routeSlot.register(route);
270
+ registerRoutes(routes) {
271
+ this.routeSlot.register(routes);
264
272
  return this;
265
273
  }
266
274
 
267
275
  registerExplicitRoutes() {
268
- this.routeSlot.register({
269
- path: this.componentUi.routePath,
270
- children: this.componentUi.getComponentUI(_scope().ScopeAspect.id)
271
- });
272
- this.menuSlot.register([{
276
+ this.registerMenuRoutes([{
273
277
  path: this.componentUi.routePath,
274
278
  children: this.componentUi.getMenu(_scope().ScopeAspect.id)
275
279
  }, {
@@ -280,6 +284,10 @@ class ScopeUI {
280
284
  menuItemSlot: this.menuItemSlot
281
285
  })
282
286
  }]);
287
+ this.registerRoutes([{
288
+ path: this.componentUi.routePath,
289
+ children: this.componentUi.getComponentUI(_scope().ScopeAspect.id)
290
+ }]);
283
291
  }
284
292
 
285
293
  registerMenuWidget(...menuItems) {
@@ -337,8 +345,8 @@ class ScopeUI {
337
345
  }
338
346
 
339
347
  uiRoot() {
340
- this.sidebar.registerDrawer(new (_componentsDrawer().ComponentsDrawer)(this.sidebarSlot));
341
348
  this.commandBarUI.addSearcher(this.componentSearcher);
349
+ this.sidebar.registerDrawer(new (_componentsDrawer().ComponentsDrawer)(this.sidebarSlot));
342
350
  const [setKeyBindHandler] = this.commandBarUI.addCommand({
343
351
  id: 'sidebar.toggle',
344
352
  // TODO - extract to a component!
@@ -372,15 +380,15 @@ class ScopeUI {
372
380
  static async provider([ui, componentUi, sidebar, commandBarUI, reactRouterUI], config, [routeSlot, menuSlot, sidebarSlot, scopeBadgeSlot, menuWidgetSlot, menuItemSlot, sidebarItemSlot, cornerSlot, overviewSlot, contextSlot]) {
373
381
  const componentSearcher = new (_commandBar().ComponentSearcher)(reactRouterUI.navigateTo);
374
382
  const scopeUi = new ScopeUI(routeSlot, componentUi, menuSlot, sidebar, sidebarSlot, commandBarUI, componentSearcher, scopeBadgeSlot, menuWidgetSlot, sidebarItemSlot, menuItemSlot, cornerSlot, overviewSlot, contextSlot);
375
- scopeUi.registerExplicitRoutes();
383
+ ui.registerRoot(scopeUi.uiRoot.bind(scopeUi));
376
384
  scopeUi.registerMenuItem(scopeUi.menuItems);
377
385
  scopeUi.registerMenuWidget(() => /*#__PURE__*/_react().default.createElement(_menu().ScopeUseBox, null));
378
- ui.registerRoot(scopeUi.uiRoot.bind(scopeUi));
379
386
  scopeUi.registerSidebarLink(() => /*#__PURE__*/_react().default.createElement(_designUiSurfacesMenu().MenuLinkItem, {
380
387
  exact: true,
381
388
  href: "/",
382
389
  icon: "comps"
383
390
  }, "Gallery"));
391
+ scopeUi.registerExplicitRoutes();
384
392
  return scopeUi;
385
393
  }
386
394
 
@@ -1 +1 @@
1
- {"version":3,"sources":["scope.ui.runtime.tsx"],"names":["ScopeUI","constructor","routeSlot","componentUi","menuSlot","sidebar","sidebarSlot","commandBarUI","componentSearcher","scopeBadgeSlot","menuWidgetSlot","sidebarItemSlot","menuItemSlot","cornerSlot","overviewSlot","contextSlot","menuItems","register","componentTreeNodes","map","componentTreeNode","links","components","update","category","title","keyChar","handler","run","registerBadge","badges","registerOverviewLine","lines","registerRoute","route","registerExplicitRoutes","path","routePath","children","getComponentUI","ScopeAspect","id","getMenu","exact","registerMenuWidget","registerCorner","corner","replaceOverview","replaceDescription","replaceMetadataSection","registerMetadataItem","replaceComponentGrid","registerMetadata","addContext","context","getContext","contexts","values","uiRoot","registerDrawer","ComponentsDrawer","addSearcher","setKeyBindHandler","addCommand","displayName","keybinding","setSidebarToggle","routes","provider","ui","reactRouterUI","config","ComponentSearcher","navigateTo","scopeUi","registerMenuItem","registerRoot","bind","registerSidebarLink","UIAspect","ComponentAspect","SidebarAspect","CommandBarAspect","ReactRouterAspect","UIRuntime","Slot","withType","addRuntime"],"mappings":"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","sourcesContent":["import flatten from 'lodash.flatten';\nimport type { ComponentUI, ComponentModel } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport ReactRouterAspect, { ReactRouterUI } from '@teambit/react-router';\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, ComponentSearcher, CommandHandler } from '@teambit/command-bar';\nimport { ScopeModel } from '@teambit/scope.models.scope-model';\nimport { ScopeMenu, ScopeUseBox } from './ui/menu';\nimport { ScopeAspect } from './scope.aspect';\nimport { Scope } from './ui/scope';\nimport { ComponentsDrawer } from './ui/components-drawer';\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 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 componentSearcher: ComponentSearcher,\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 ) {}\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 /**\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 registerRoute(route: RouteProps) {\n this.routeSlot.register(route);\n return this;\n }\n\n private registerExplicitRoutes() {\n this.routeSlot.register({\n path: this.componentUi.routePath,\n children: this.componentUi.getComponentUI(ScopeAspect.id),\n });\n\n this.menuSlot.register([\n {\n path: this.componentUi.routePath,\n children: this.componentUi.getMenu(ScopeAspect.id),\n },\n {\n exact: true,\n path: '/',\n children: <ScopeMenu widgetSlot={this.menuWidgetSlot} menuItemSlot={this.menuItemSlot} />,\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 /**\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 return flatten(contexts);\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 uiRoot(): UIRoot {\n this.sidebar.registerDrawer(new ComponentsDrawer(this.sidebarSlot));\n this.commandBarUI.addSearcher(this.componentSearcher);\n\n const [setKeyBindHandler] = this.commandBarUI.addCommand({\n id: 'sidebar.toggle', // TODO - extract to a component!\n handler: () => {},\n displayName: 'Toggle component list',\n keybinding: 'alt+s',\n });\n this.setSidebarToggle = setKeyBindHandler;\n\n return {\n routes: [\n {\n path: '/',\n children: (\n <Scope\n routeSlot={this.routeSlot}\n menuSlot={this.menuSlot}\n sidebar={<this.sidebar.render itemSlot={this.sidebarItemSlot} />}\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 /** registers available components */\n setComponents = (components: ComponentModel[]) => {\n this.componentSearcher.update(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, ReactRouterAspect];\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 ];\n\n static async provider(\n [ui, componentUi, sidebar, commandBarUI, reactRouterUI]: [\n UiUI,\n ComponentUI,\n SidebarUI,\n CommandBarUI,\n ReactRouterUI\n ],\n config,\n [\n routeSlot,\n menuSlot,\n sidebarSlot,\n scopeBadgeSlot,\n menuWidgetSlot,\n menuItemSlot,\n sidebarItemSlot,\n cornerSlot,\n overviewSlot,\n contextSlot,\n ]: [\n RouteSlot,\n RouteSlot,\n SidebarSlot,\n ScopeBadgeSlot,\n MenuWidgetSlot,\n MenuItemSlot,\n SidebarItemSlot,\n CornerSlot,\n OverviewLineSlot,\n ContextSlot\n ]\n ) {\n const componentSearcher = new ComponentSearcher(reactRouterUI.navigateTo);\n const scopeUi = new ScopeUI(\n routeSlot,\n componentUi,\n menuSlot,\n sidebar,\n sidebarSlot,\n commandBarUI,\n componentSearcher,\n scopeBadgeSlot,\n menuWidgetSlot,\n sidebarItemSlot,\n menuItemSlot,\n cornerSlot,\n overviewSlot,\n contextSlot\n );\n scopeUi.registerExplicitRoutes();\n scopeUi.registerMenuItem(scopeUi.menuItems);\n scopeUi.registerMenuWidget(() => <ScopeUseBox />);\n ui.registerRoot(scopeUi.uiRoot.bind(scopeUi));\n scopeUi.registerSidebarLink(() => (\n <MenuLinkItem exact href=\"/\" icon=\"comps\">\n Gallery\n </MenuLinkItem>\n ));\n\n return scopeUi;\n }\n}\n\nexport default ScopeUI;\n\nScopeAspect.addRuntime(ScopeUI);\n"]}
1
+ {"version":3,"sources":["scope.ui.runtime.tsx"],"names":["ScopeUI","constructor","routeSlot","componentUi","menuSlot","sidebar","sidebarSlot","commandBarUI","componentSearcher","scopeBadgeSlot","menuWidgetSlot","sidebarItemSlot","menuItemSlot","cornerSlot","overviewSlot","contextSlot","routes","register","menuItems","componentTreeNodes","map","componentTreeNode","links","drawer","registerDrawer","components","update","category","title","keyChar","handler","run","registerBadge","badges","registerOverviewLine","lines","registerRoutes","registerExplicitRoutes","registerMenuRoutes","path","routePath","children","getMenu","ScopeAspect","id","exact","getComponentUI","registerMenuWidget","registerCorner","corner","replaceOverview","replaceDescription","replaceMetadataSection","registerMetadataItem","replaceComponentGrid","registerMetadata","addContext","context","getContext","contexts","values","uiRoot","addSearcher","ComponentsDrawer","setKeyBindHandler","addCommand","displayName","keybinding","setSidebarToggle","provider","ui","reactRouterUI","config","ComponentSearcher","navigateTo","scopeUi","registerRoot","bind","registerMenuItem","registerSidebarLink","UIAspect","ComponentAspect","SidebarAspect","CommandBarAspect","ReactRouterAspect","UIRuntime","Slot","withType","addRuntime"],"mappings":"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","sourcesContent":["import flatten from 'lodash.flatten';\nimport type { ComponentUI, ComponentModel } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport ReactRouterAspect, { ReactRouterUI } from '@teambit/react-router';\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, ComponentSearcher, CommandHandler } from '@teambit/command-bar';\nimport { ScopeModel } from '@teambit/scope.models.scope-model';\nimport { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';\nimport { ScopeMenu, ScopeUseBox } from './ui/menu';\nimport { ScopeAspect } from './scope.aspect';\nimport { Scope } from './ui/scope';\nimport { ComponentsDrawer } from './ui/components-drawer';\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 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 componentSearcher: ComponentSearcher,\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 ) {}\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 /**\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 registerExplicitRoutes() {\n this.registerMenuRoutes([\n {\n path: this.componentUi.routePath,\n children: this.componentUi.getMenu(ScopeAspect.id),\n },\n {\n exact: true,\n path: '/',\n children: <ScopeMenu widgetSlot={this.menuWidgetSlot} menuItemSlot={this.menuItemSlot} />,\n },\n ]);\n this.registerRoutes([\n {\n path: this.componentUi.routePath,\n children: 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 /**\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 return flatten(contexts);\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 uiRoot(): UIRoot {\n this.commandBarUI.addSearcher(this.componentSearcher);\n this.sidebar.registerDrawer(new ComponentsDrawer(this.sidebarSlot));\n const [setKeyBindHandler] = this.commandBarUI.addCommand({\n id: 'sidebar.toggle', // TODO - extract to a component!\n handler: () => {},\n displayName: 'Toggle component list',\n keybinding: 'alt+s',\n });\n this.setSidebarToggle = setKeyBindHandler;\n\n return {\n routes: [\n {\n path: '/',\n children: (\n <Scope\n routeSlot={this.routeSlot}\n menuSlot={this.menuSlot}\n sidebar={<this.sidebar.render itemSlot={this.sidebarItemSlot} />}\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 /** registers available components */\n setComponents = (components: ComponentModel[]) => {\n this.componentSearcher.update(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, ReactRouterAspect];\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 ];\n\n static async provider(\n [ui, componentUi, sidebar, commandBarUI, reactRouterUI]: [\n UiUI,\n ComponentUI,\n SidebarUI,\n CommandBarUI,\n ReactRouterUI\n ],\n config,\n [\n routeSlot,\n menuSlot,\n sidebarSlot,\n scopeBadgeSlot,\n menuWidgetSlot,\n menuItemSlot,\n sidebarItemSlot,\n cornerSlot,\n overviewSlot,\n contextSlot,\n ]: [\n RouteSlot,\n RouteSlot,\n SidebarSlot,\n ScopeBadgeSlot,\n MenuWidgetSlot,\n MenuItemSlot,\n SidebarItemSlot,\n CornerSlot,\n OverviewLineSlot,\n ContextSlot\n ]\n ) {\n const componentSearcher = new ComponentSearcher(reactRouterUI.navigateTo);\n const scopeUi = new ScopeUI(\n routeSlot,\n componentUi,\n menuSlot,\n sidebar,\n sidebarSlot,\n commandBarUI,\n componentSearcher,\n scopeBadgeSlot,\n menuWidgetSlot,\n sidebarItemSlot,\n menuItemSlot,\n cornerSlot,\n overviewSlot,\n contextSlot\n );\n ui.registerRoot(scopeUi.uiRoot.bind(scopeUi));\n scopeUi.registerMenuItem(scopeUi.menuItems);\n scopeUi.registerMenuWidget(() => <ScopeUseBox />);\n scopeUi.registerSidebarLink(() => (\n <MenuLinkItem exact href=\"/\" icon=\"comps\">\n Gallery\n </MenuLinkItem>\n ));\n scopeUi.registerExplicitRoutes();\n\n return scopeUi;\n }\n}\n\nexport default ScopeUI;\n\nScopeAspect.addRuntime(ScopeUI);\n"]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/scope",
3
- "version": "0.0.653",
3
+ "version": "0.0.654",
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.653"
9
+ "version": "0.0.654"
10
10
  },
11
11
  "dependencies": {
12
12
  "semver": "7.3.4",
@@ -25,34 +25,35 @@
25
25
  "@teambit/base-ui.surfaces.split-pane.split-pane": "1.0.0",
26
26
  "@teambit/base-ui.utils.composer": "1.0.0",
27
27
  "@teambit/base-ui.graph.tree.recursive-tree": "1.0.0",
28
- "@teambit/scope.models.scope-model": "0.0.96",
29
- "@teambit/scope.ui.hooks.scope-context": "0.0.96",
30
- "@teambit/component": "0.0.653",
31
- "@teambit/logger": "0.0.535",
32
- "@teambit/aspect-loader": "0.0.653",
33
- "@teambit/builder": "0.0.653",
34
- "@teambit/cli": "0.0.445",
35
- "@teambit/compiler": "0.0.653",
36
- "@teambit/config": "0.0.458",
37
- "@teambit/envs": "0.0.653",
38
- "@teambit/express": "0.0.539",
39
- "@teambit/graphql": "0.0.653",
28
+ "@teambit/scope.models.scope-model": "0.0.97",
29
+ "@teambit/scope.ui.hooks.scope-context": "0.0.97",
30
+ "@teambit/component": "0.0.654",
31
+ "@teambit/logger": "0.0.536",
32
+ "@teambit/aspect-loader": "0.0.654",
33
+ "@teambit/builder": "0.0.654",
34
+ "@teambit/cli": "0.0.446",
35
+ "@teambit/compiler": "0.0.654",
36
+ "@teambit/config": "0.0.459",
37
+ "@teambit/envs": "0.0.654",
38
+ "@teambit/express": "0.0.540",
39
+ "@teambit/graphql": "0.0.654",
40
40
  "@teambit/harmony.modules.requireable-component": "0.0.484",
41
- "@teambit/isolator": "0.0.653",
41
+ "@teambit/isolator": "0.0.654",
42
42
  "@teambit/legacy-bit-id": "0.0.398",
43
- "@teambit/ui": "0.0.653",
43
+ "@teambit/ui": "0.0.654",
44
44
  "@teambit/workspace.modules.match-pattern": "0.0.489",
45
- "@teambit/command-bar": "0.0.653",
46
- "@teambit/component-tree": "0.0.441",
45
+ "@teambit/command-bar": "0.0.654",
46
+ "@teambit/component-tree": "0.0.442",
47
47
  "@teambit/design.ui.surfaces.menu.link-item": "0.0.378",
48
- "@teambit/react-router": "0.0.653",
49
- "@teambit/sidebar": "0.0.653",
48
+ "@teambit/react-router": "0.0.654",
49
+ "@teambit/sidebar": "0.0.654",
50
50
  "@teambit/ui-foundation.ui.main-dropdown": "0.0.486",
51
51
  "@teambit/ui-foundation.ui.menu": "0.0.486",
52
52
  "@teambit/ui-foundation.ui.react-router.slot-router": "0.0.488",
53
+ "@teambit/ui-foundation.ui.tree.drawer": "0.0.491",
53
54
  "@teambit/bit-error": "0.0.394",
54
55
  "@teambit/ui-foundation.ui.constants.z-indexes": "0.0.487",
55
- "@teambit/scope.ui.hooks.use-scope": "0.0.99",
56
+ "@teambit/scope.ui.hooks.use-scope": "0.0.100",
56
57
  "@teambit/ui-foundation.ui.buttons.collapser": "0.0.193",
57
58
  "@teambit/ui-foundation.ui.corner": "0.0.494",
58
59
  "@teambit/ui-foundation.ui.hooks.use-is-mobile": "0.0.179",
@@ -60,15 +61,14 @@
60
61
  "@teambit/design.ui.styles.ellipsis": "0.0.347",
61
62
  "@teambit/design.ui.styles.muted-italic": "0.0.35",
62
63
  "@teambit/ui-foundation.ui.full-loader": "0.0.486",
63
- "@teambit/ui-foundation.ui.side-bar": "0.0.497",
64
- "@teambit/ui-foundation.ui.tree.drawer": "0.0.490",
65
- "@teambit/explorer.ui.gallery.component-card": "0.0.493",
64
+ "@teambit/ui-foundation.ui.side-bar": "0.0.498",
65
+ "@teambit/explorer.ui.gallery.component-card": "0.0.494",
66
66
  "@teambit/explorer.ui.gallery.component-grid": "0.0.486",
67
67
  "@teambit/preview.ui.preview-placeholder": "0.0.486",
68
68
  "@teambit/scope.ui.empty-scope": "0.0.490",
69
69
  "@teambit/scope.ui.scope-details": "0.0.496",
70
- "@teambit/ui-foundation.ui.use-box.dropdown": "0.0.110",
71
- "@teambit/ui-foundation.ui.use-box.scope-menu": "0.0.110"
70
+ "@teambit/ui-foundation.ui.use-box.dropdown": "0.0.111",
71
+ "@teambit/ui-foundation.ui.use-box.scope-menu": "0.0.111"
72
72
  },
73
73
  "devDependencies": {
74
74
  "@types/semver": "7.3.4",
@@ -85,7 +85,7 @@
85
85
  "@types/node": "12.20.4"
86
86
  },
87
87
  "peerDependencies": {
88
- "@teambit/legacy": "1.0.223",
88
+ "@teambit/legacy": "1.0.225",
89
89
  "react-dom": "^16.8.0 || ^17.0.0",
90
90
  "react": "^16.8.0 || ^17.0.0"
91
91
  },
@@ -113,7 +113,7 @@
113
113
  "react": "-"
114
114
  },
115
115
  "peerDependencies": {
116
- "@teambit/legacy": "1.0.223",
116
+ "@teambit/legacy": "1.0.225",
117
117
  "react-dom": "^16.8.0 || ^17.0.0",
118
118
  "react": "^16.8.0 || ^17.0.0"
119
119
  }
@@ -14,6 +14,7 @@ import { MenuWidget, MenuWidgetSlot } from '@teambit/ui-foundation.ui.menu';
14
14
  import { MenuLinkItem } from '@teambit/design.ui.surfaces.menu.link-item';
15
15
  import CommandBarAspect, { CommandBarUI, ComponentSearcher, CommandHandler } from '@teambit/command-bar';
16
16
  import { ScopeModel } from '@teambit/scope.models.scope-model';
17
+ import { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';
17
18
  import { ScopeMenu, ScopeUseBox } from './ui/menu';
18
19
  import { ScopeAspect } from './scope.aspect';
19
20
  import { Scope } from './ui/scope';
@@ -116,18 +117,18 @@ export class ScopeUI {
116
117
  /**
117
118
  * register a route to the scope.
118
119
  */
119
- registerRoute(route: RouteProps) {
120
- this.routeSlot.register(route);
120
+ registerRoutes(routes: RouteProps[]) {
121
+ this.routeSlot.register(routes);
121
122
  return this;
122
123
  }
123
124
 
124
- private registerExplicitRoutes() {
125
- this.routeSlot.register({
126
- path: this.componentUi.routePath,
127
- children: this.componentUi.getComponentUI(ScopeAspect.id),
128
- });
125
+ registerMenuRoutes = (routes: RouteProps[]) => {
126
+ this.menuSlot.register(routes);
127
+ return this;
128
+ };
129
129
 
130
- this.menuSlot.register([
130
+ private registerExplicitRoutes() {
131
+ this.registerMenuRoutes([
131
132
  {
132
133
  path: this.componentUi.routePath,
133
134
  children: this.componentUi.getMenu(ScopeAspect.id),
@@ -138,6 +139,12 @@ export class ScopeUI {
138
139
  children: <ScopeMenu widgetSlot={this.menuWidgetSlot} menuItemSlot={this.menuItemSlot} />,
139
140
  },
140
141
  ]);
142
+ this.registerRoutes([
143
+ {
144
+ path: this.componentUi.routePath,
145
+ children: this.componentUi.getComponentUI(ScopeAspect.id),
146
+ },
147
+ ]);
141
148
  }
142
149
 
143
150
  registerMenuWidget(...menuItems: MenuWidget[]) {
@@ -207,10 +214,14 @@ export class ScopeUI {
207
214
  this.sidebarItemSlot.register(links);
208
215
  };
209
216
 
217
+ registerDrawers = (...drawer: DrawerType[]) => {
218
+ this.sidebar.registerDrawer(...drawer);
219
+ return this;
220
+ };
221
+
210
222
  uiRoot(): UIRoot {
211
- this.sidebar.registerDrawer(new ComponentsDrawer(this.sidebarSlot));
212
223
  this.commandBarUI.addSearcher(this.componentSearcher);
213
-
224
+ this.sidebar.registerDrawer(new ComponentsDrawer(this.sidebarSlot));
214
225
  const [setKeyBindHandler] = this.commandBarUI.addCommand({
215
226
  id: 'sidebar.toggle', // TODO - extract to a component!
216
227
  handler: () => {},
@@ -327,15 +338,15 @@ export class ScopeUI {
327
338
  overviewSlot,
328
339
  contextSlot
329
340
  );
330
- scopeUi.registerExplicitRoutes();
341
+ ui.registerRoot(scopeUi.uiRoot.bind(scopeUi));
331
342
  scopeUi.registerMenuItem(scopeUi.menuItems);
332
343
  scopeUi.registerMenuWidget(() => <ScopeUseBox />);
333
- ui.registerRoot(scopeUi.uiRoot.bind(scopeUi));
334
344
  scopeUi.registerSidebarLink(() => (
335
345
  <MenuLinkItem exact href="/" icon="comps">
336
346
  Gallery
337
347
  </MenuLinkItem>
338
348
  ));
349
+ scopeUi.registerExplicitRoutes();
339
350
 
340
351
  return scopeUi;
341
352
  }