@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.
- package/{__preview-1645393132004.js → __preview-1645586567752.js} +0 -0
- package/dist/scope-component-loader.js +3 -2
- package/dist/scope-component-loader.js.map +1 -1
- package/dist/scope.ui.runtime.d.ts +6 -3
- package/dist/scope.ui.runtime.js +18 -10
- package/dist/scope.ui.runtime.js.map +1 -1
- package/package-tar/teambit-scope-0.0.654.tgz +0 -0
- package/package.json +28 -28
- package/scope.ui.runtime.tsx +23 -12
- package/package-tar/teambit-scope-0.0.653.tgz +0 -0
|
File without changes
|
|
@@ -217,8 +217,9 @@ class ScopeComponentLoader {
|
|
|
217
217
|
|
|
218
218
|
getTagMap(modelComponent) {
|
|
219
219
|
const tagMap = new (_component().TagMap)();
|
|
220
|
-
|
|
221
|
-
|
|
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
|
-
|
|
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<
|
|
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,
|
package/dist/scope.ui.runtime.js
CHANGED
|
@@ -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
|
-
|
|
263
|
-
this.routeSlot.register(
|
|
270
|
+
registerRoutes(routes) {
|
|
271
|
+
this.routeSlot.register(routes);
|
|
264
272
|
return this;
|
|
265
273
|
}
|
|
266
274
|
|
|
267
275
|
registerExplicitRoutes() {
|
|
268
|
-
this.
|
|
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.
|
|
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"]}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/scope",
|
|
3
|
-
"version": "0.0.
|
|
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.
|
|
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.
|
|
29
|
-
"@teambit/scope.ui.hooks.scope-context": "0.0.
|
|
30
|
-
"@teambit/component": "0.0.
|
|
31
|
-
"@teambit/logger": "0.0.
|
|
32
|
-
"@teambit/aspect-loader": "0.0.
|
|
33
|
-
"@teambit/builder": "0.0.
|
|
34
|
-
"@teambit/cli": "0.0.
|
|
35
|
-
"@teambit/compiler": "0.0.
|
|
36
|
-
"@teambit/config": "0.0.
|
|
37
|
-
"@teambit/envs": "0.0.
|
|
38
|
-
"@teambit/express": "0.0.
|
|
39
|
-
"@teambit/graphql": "0.0.
|
|
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.
|
|
41
|
+
"@teambit/isolator": "0.0.654",
|
|
42
42
|
"@teambit/legacy-bit-id": "0.0.398",
|
|
43
|
-
"@teambit/ui": "0.0.
|
|
43
|
+
"@teambit/ui": "0.0.654",
|
|
44
44
|
"@teambit/workspace.modules.match-pattern": "0.0.489",
|
|
45
|
-
"@teambit/command-bar": "0.0.
|
|
46
|
-
"@teambit/component-tree": "0.0.
|
|
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.
|
|
49
|
-
"@teambit/sidebar": "0.0.
|
|
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.
|
|
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.
|
|
64
|
-
"@teambit/
|
|
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.
|
|
71
|
-
"@teambit/ui-foundation.ui.use-box.scope-menu": "0.0.
|
|
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.
|
|
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.
|
|
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
|
}
|
package/scope.ui.runtime.tsx
CHANGED
|
@@ -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
|
-
|
|
120
|
-
this.routeSlot.register(
|
|
120
|
+
registerRoutes(routes: RouteProps[]) {
|
|
121
|
+
this.routeSlot.register(routes);
|
|
121
122
|
return this;
|
|
122
123
|
}
|
|
123
124
|
|
|
124
|
-
|
|
125
|
-
this.
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
});
|
|
125
|
+
registerMenuRoutes = (routes: RouteProps[]) => {
|
|
126
|
+
this.menuSlot.register(routes);
|
|
127
|
+
return this;
|
|
128
|
+
};
|
|
129
129
|
|
|
130
|
-
|
|
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.
|
|
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
|
}
|
|
Binary file
|