@teambit/component 0.0.784 → 0.0.787

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.
Files changed (43) hide show
  1. package/component.ui.runtime.tsx +14 -5
  2. package/dist/aspect-entry.d.ts +2 -10
  3. package/dist/aspect-entry.js.map +1 -1
  4. package/dist/aspect-list.d.ts +1 -10
  5. package/dist/component-interface.d.ts +22 -0
  6. package/dist/component-interface.js +3 -0
  7. package/dist/component-interface.js.map +1 -0
  8. package/dist/component.d.ts +6 -1
  9. package/dist/component.graphql.d.ts +1 -10
  10. package/dist/component.js +10 -0
  11. package/dist/component.js.map +1 -1
  12. package/dist/component.main.runtime.d.ts +1 -2
  13. package/dist/component.main.runtime.js +3 -18
  14. package/dist/component.main.runtime.js.map +1 -1
  15. package/dist/component.ui.runtime.d.ts +3 -2
  16. package/dist/component.ui.runtime.js +15 -7
  17. package/dist/component.ui.runtime.js.map +1 -1
  18. package/dist/config.d.ts +0 -3
  19. package/dist/config.js.map +1 -1
  20. package/dist/get-component-opts.d.ts +5 -0
  21. package/dist/get-component-opts.js +3 -0
  22. package/dist/get-component-opts.js.map +1 -0
  23. package/dist/index.d.ts +1 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/ui/component.d.ts +4 -1
  26. package/dist/ui/component.js +23 -8
  27. package/dist/ui/component.js.map +1 -1
  28. package/dist/ui/menu/menu.d.ts +4 -1
  29. package/dist/ui/menu/menu.js +23 -8
  30. package/dist/ui/menu/menu.js.map +1 -1
  31. package/dist/ui/use-component-query.js +8 -3
  32. package/dist/ui/use-component-query.js.map +1 -1
  33. package/dist/ui/use-component.d.ts +2 -0
  34. package/dist/ui/use-component.js +6 -2
  35. package/dist/ui/use-component.js.map +1 -1
  36. package/package-tar/teambit-component-0.0.787.tgz +0 -0
  37. package/package.json +20 -50
  38. package/{preview-1657251036992.js → preview-1657623030826.js} +2 -2
  39. package/ui/component.tsx +24 -10
  40. package/ui/menu/menu.tsx +21 -7
  41. package/ui/use-component-query.ts +9 -3
  42. package/ui/use-component.tsx +6 -2
  43. package/package-tar/teambit-component-0.0.784.tgz +0 -0
@@ -22,6 +22,7 @@ import { ComponentModel } from './ui';
22
22
  import { Component, ComponentPageElement, ComponentPageSlot } from './ui/component';
23
23
  import { ComponentResultPlugin, ComponentSearcher } from './ui/component-searcher';
24
24
  import { ConsumeMethodSlot, ConsumePlugin, ComponentMenu, NavPlugin, OrderedNavigationSlot } from './ui/menu';
25
+ import { GetComponentsOptions } from './get-component-opts';
25
26
 
26
27
  export type ComponentSearchResultSlot = SlotRegistry<ComponentResultPlugin[]>;
27
28
 
@@ -165,18 +166,20 @@ export class ComponentUI {
165
166
  this.activeComponent = activeComponent;
166
167
  };
167
168
 
168
- getComponentUI(host: string) {
169
+ getComponentUI(host: string, options: GetComponentsOptions = {}) {
169
170
  return (
170
171
  <Component
171
172
  routeSlot={this.routeSlot}
172
173
  containerSlot={this.pageItemSlot}
173
174
  onComponentChange={this.handleComponentChange}
174
175
  host={host}
176
+ useComponent={options.useComponent}
177
+ componentIdStr={options.componentId}
175
178
  />
176
179
  );
177
180
  }
178
181
 
179
- getMenu(host: string) {
182
+ getMenu(host: string, opts: GetComponentsOptions = {}) {
180
183
  return (
181
184
  <ComponentMenu
182
185
  navigationSlot={this.navSlot}
@@ -184,6 +187,8 @@ export class ComponentUI {
184
187
  widgetSlot={this.widgetSlot}
185
188
  host={host}
186
189
  menuItemSlot={this.menuItemSlot}
190
+ useComponent={opts.useComponent}
191
+ componentIdStr={opts.componentId}
187
192
  />
188
193
  );
189
194
  }
@@ -225,7 +230,7 @@ export class ComponentUI {
225
230
  };
226
231
 
227
232
  updateComponents = (components: ComponentModel[]) => {
228
- this.componentSearcher.update(components);
233
+ this.componentSearcher.update(components || []);
229
234
  };
230
235
 
231
236
  static dependencies = [PubsubAspect, CommandBarAspect, ReactRouterAspect];
@@ -272,8 +277,12 @@ export class ComponentUI {
272
277
  const aspectSection = new AspectSection();
273
278
  // @ts-ignore
274
279
  componentUI.registerSearchResultWidget({ key: 'deprecation', end: DeprecationIcon });
275
- componentUI.commandBarUI.addCommand(...componentUI.keyBindings);
276
- commandBarUI.addSearcher(componentUI.componentSearcher);
280
+
281
+ if (componentUI.commandBarUI) {
282
+ componentUI.commandBarUI.addCommand(...componentUI.keyBindings);
283
+ commandBarUI.addSearcher(componentUI.componentSearcher);
284
+ }
285
+
277
286
  componentUI.registerMenuItem(componentUI.menuItems);
278
287
  componentUI.registerRoute(aspectSection.route);
279
288
  componentUI.registerWidget(aspectSection.navigationLink, aspectSection.order);
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import type { ExtensionDataEntry } from '@teambit/legacy/dist/consumer/config/extension-data';
5
5
  import { ComponentID } from '@teambit/component-id';
6
+ import { RawComponentMetadata } from './component-interface';
6
7
  export declare type Serializable = {
7
8
  toString(): string;
8
9
  };
@@ -34,14 +35,5 @@ export declare class AspectEntry {
34
35
  });
35
36
  transform(newData: SerializableMap): AspectEntry;
36
37
  clone(): AspectEntry;
37
- serialize(): {
38
- id: string;
39
- config: {
40
- [key: string]: any;
41
- };
42
- data: {
43
- [key: string]: any;
44
- };
45
- icon: string;
46
- };
38
+ serialize(): RawComponentMetadata;
47
39
  }
@@ -1 +1 @@
1
- {"version":3,"names":["AspectEntry","constructor","id","legacyEntry","legacy","isLegacy","config","__legacy","data","isRemoved","val","transform","newData","newEntry","clone","serialize","toString","icon"],"sources":["aspect-entry.ts"],"sourcesContent":["/**\n * avoid importing any (non-type) legacy code here. otherwise, PreviewTask will throw cryptic errors\n */\n\nimport type { ExtensionDataEntry } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport { ComponentID } from '@teambit/component-id';\n\nexport type Serializable = {\n toString(): string;\n};\n\nexport type SerializableMap = {\n [key: string]: Serializable;\n};\n\nexport type AspectData = {\n [key: string]: any;\n};\n\nexport type ResolveComponentIdFunc = (id: string) => Promise<ComponentID>;\nexport class AspectEntry {\n constructor(public id: ComponentID, private legacyEntry: ExtensionDataEntry) {}\n\n get legacy() {\n return this.legacyEntry;\n }\n\n get isLegacy(): boolean {\n if (this.config?.__legacy) return true;\n return false;\n }\n\n get config() {\n return this.legacy.config;\n }\n\n set config(config) {\n this.legacy.config = config;\n }\n\n get data(): { [key: string]: any } {\n return this.legacy.data;\n }\n\n get isRemoved(): boolean {\n return this.legacy.isRemoved;\n }\n\n // eslint-disable-next-line @typescript-eslint/adjacent-overload-signatures\n set data(val: { [key: string]: any }) {\n this.legacy.data = val;\n }\n\n transform(newData: SerializableMap): AspectEntry {\n const newEntry = this.clone();\n newEntry.data = newData;\n return new AspectEntry(this.id, newEntry.legacy);\n }\n\n clone(): AspectEntry {\n return new AspectEntry(this.id, this.legacyEntry.clone());\n }\n\n serialize() {\n return {\n id: this.id.toString(),\n config: this.config,\n data: this.data,\n icon: 'https://static.bit.dev/extensions-icons/default.svg', // TODO @gilad - once you connect the icon here please use this url as the default icon\n };\n }\n}\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AAkBO,MAAMA,WAAN,CAAkB;EACvBC,WAAW,CAAQC,EAAR,EAAiCC,WAAjC,EAAkE;IAAA,KAA1DD,EAA0D,GAA1DA,EAA0D;IAAA,KAAjCC,WAAiC,GAAjCA,WAAiC;EAAE;;EAErE,IAANC,MAAM,GAAG;IACX,OAAO,KAAKD,WAAZ;EACD;;EAEW,IAARE,QAAQ,GAAY;IAAA;;IACtB,oBAAI,KAAKC,MAAT,yCAAI,aAAaC,QAAjB,EAA2B,OAAO,IAAP;IAC3B,OAAO,KAAP;EACD;;EAES,IAAND,MAAM,GAAG;IACX,OAAO,KAAKF,MAAL,CAAYE,MAAnB;EACD;;EAES,IAANA,MAAM,CAACA,MAAD,EAAS;IACjB,KAAKF,MAAL,CAAYE,MAAZ,GAAqBA,MAArB;EACD;;EAEO,IAAJE,IAAI,GAA2B;IACjC,OAAO,KAAKJ,MAAL,CAAYI,IAAnB;EACD;;EAEY,IAATC,SAAS,GAAY;IACvB,OAAO,KAAKL,MAAL,CAAYK,SAAnB;EACD,CA1BsB,CA4BvB;;;EACQ,IAAJD,IAAI,CAACE,GAAD,EAA8B;IACpC,KAAKN,MAAL,CAAYI,IAAZ,GAAmBE,GAAnB;EACD;;EAEDC,SAAS,CAACC,OAAD,EAAwC;IAC/C,MAAMC,QAAQ,GAAG,KAAKC,KAAL,EAAjB;IACAD,QAAQ,CAACL,IAAT,GAAgBI,OAAhB;IACA,OAAO,IAAIZ,WAAJ,CAAgB,KAAKE,EAArB,EAAyBW,QAAQ,CAACT,MAAlC,CAAP;EACD;;EAEDU,KAAK,GAAgB;IACnB,OAAO,IAAId,WAAJ,CAAgB,KAAKE,EAArB,EAAyB,KAAKC,WAAL,CAAiBW,KAAjB,EAAzB,CAAP;EACD;;EAEDC,SAAS,GAAG;IACV,OAAO;MACLb,EAAE,EAAE,KAAKA,EAAL,CAAQc,QAAR,EADC;MAELV,MAAM,EAAE,KAAKA,MAFR;MAGLE,IAAI,EAAE,KAAKA,IAHN;MAILS,IAAI,EAAE,qDAJD,CAIwD;;IAJxD,CAAP;EAMD;;AAlDsB"}
1
+ {"version":3,"names":["AspectEntry","constructor","id","legacyEntry","legacy","isLegacy","config","__legacy","data","isRemoved","val","transform","newData","newEntry","clone","serialize","toString","icon"],"sources":["aspect-entry.ts"],"sourcesContent":["/**\n * avoid importing any (non-type) legacy code here. otherwise, PreviewTask will throw cryptic errors\n */\n\nimport type { ExtensionDataEntry } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport { ComponentID } from '@teambit/component-id';\nimport { RawComponentMetadata } from './component-interface';\n\nexport type Serializable = {\n toString(): string;\n};\n\nexport type SerializableMap = {\n [key: string]: Serializable;\n};\n\nexport type AspectData = {\n [key: string]: any;\n};\n\nexport type ResolveComponentIdFunc = (id: string) => Promise<ComponentID>;\nexport class AspectEntry {\n constructor(public id: ComponentID, private legacyEntry: ExtensionDataEntry) {}\n\n get legacy() {\n return this.legacyEntry;\n }\n\n get isLegacy(): boolean {\n if (this.config?.__legacy) return true;\n return false;\n }\n\n get config() {\n return this.legacy.config;\n }\n\n set config(config) {\n this.legacy.config = config;\n }\n\n get data(): { [key: string]: any } {\n return this.legacy.data;\n }\n\n get isRemoved(): boolean {\n return this.legacy.isRemoved;\n }\n\n // eslint-disable-next-line @typescript-eslint/adjacent-overload-signatures\n set data(val: { [key: string]: any }) {\n this.legacy.data = val;\n }\n\n transform(newData: SerializableMap): AspectEntry {\n const newEntry = this.clone();\n newEntry.data = newData;\n return new AspectEntry(this.id, newEntry.legacy);\n }\n\n clone(): AspectEntry {\n return new AspectEntry(this.id, this.legacyEntry.clone());\n }\n\n serialize(): RawComponentMetadata {\n return {\n id: this.id.toString(),\n config: this.config,\n data: this.data,\n icon: 'https://static.bit.dev/extensions-icons/default.svg', // TODO @gilad - once you connect the icon here please use this url as the default icon\n };\n }\n}\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AAmBO,MAAMA,WAAN,CAAkB;EACvBC,WAAW,CAAQC,EAAR,EAAiCC,WAAjC,EAAkE;IAAA,KAA1DD,EAA0D,GAA1DA,EAA0D;IAAA,KAAjCC,WAAiC,GAAjCA,WAAiC;EAAE;;EAErE,IAANC,MAAM,GAAG;IACX,OAAO,KAAKD,WAAZ;EACD;;EAEW,IAARE,QAAQ,GAAY;IAAA;;IACtB,oBAAI,KAAKC,MAAT,yCAAI,aAAaC,QAAjB,EAA2B,OAAO,IAAP;IAC3B,OAAO,KAAP;EACD;;EAES,IAAND,MAAM,GAAG;IACX,OAAO,KAAKF,MAAL,CAAYE,MAAnB;EACD;;EAES,IAANA,MAAM,CAACA,MAAD,EAAS;IACjB,KAAKF,MAAL,CAAYE,MAAZ,GAAqBA,MAArB;EACD;;EAEO,IAAJE,IAAI,GAA2B;IACjC,OAAO,KAAKJ,MAAL,CAAYI,IAAnB;EACD;;EAEY,IAATC,SAAS,GAAY;IACvB,OAAO,KAAKL,MAAL,CAAYK,SAAnB;EACD,CA1BsB,CA4BvB;;;EACQ,IAAJD,IAAI,CAACE,GAAD,EAA8B;IACpC,KAAKN,MAAL,CAAYI,IAAZ,GAAmBE,GAAnB;EACD;;EAEDC,SAAS,CAACC,OAAD,EAAwC;IAC/C,MAAMC,QAAQ,GAAG,KAAKC,KAAL,EAAjB;IACAD,QAAQ,CAACL,IAAT,GAAgBI,OAAhB;IACA,OAAO,IAAIZ,WAAJ,CAAgB,KAAKE,EAArB,EAAyBW,QAAQ,CAACT,MAAlC,CAAP;EACD;;EAEDU,KAAK,GAAgB;IACnB,OAAO,IAAId,WAAJ,CAAgB,KAAKE,EAArB,EAAyB,KAAKC,WAAL,CAAiBW,KAAjB,EAAzB,CAAP;EACD;;EAEDC,SAAS,GAAyB;IAChC,OAAO;MACLb,EAAE,EAAE,KAAKA,EAAL,CAAQc,QAAR,EADC;MAELV,MAAM,EAAE,KAAKA,MAFR;MAGLE,IAAI,EAAE,KAAKA,IAHN;MAILS,IAAI,EAAE,qDAJD,CAIwD;;IAJxD,CAAP;EAMD;;AAlDsB"}
@@ -33,16 +33,7 @@ export declare class AspectList {
33
33
  */
34
34
  pmap(predicate: (entry: AspectEntry) => Promise<AspectEntry>): Promise<AspectList>;
35
35
  toConfigObject(): {};
36
- serialize(): {
37
- id: string;
38
- config: {
39
- [key: string]: any;
40
- };
41
- data: {
42
- [key: string]: any;
43
- };
44
- icon: string;
45
- }[];
36
+ serialize(): import("./component-interface").RawComponentMetadata[];
46
37
  filter(ids?: string[]): AspectList;
47
38
  toLegacy(): ExtensionDataList;
48
39
  stringIds(): string[];
@@ -0,0 +1,22 @@
1
+ import { ComponentID } from '@teambit/component-id';
2
+ export interface IComponent {
3
+ /**
4
+ * id of the component.
5
+ */
6
+ id: ComponentID;
7
+ /**
8
+ * get function to retrieve aspect
9
+ */
10
+ get(aspectId: string): RawComponentMetadata | undefined;
11
+ /**
12
+ * determines whether a component is a modified state.
13
+ * TODO: consider to remove after handling component descriptors correctly.
14
+ */
15
+ isModified(): Promise<boolean>;
16
+ }
17
+ export declare type RawComponentMetadata = {
18
+ id: string;
19
+ config: Record<string, any>;
20
+ data: Record<string, any>;
21
+ icon?: string;
22
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ //# sourceMappingURL=component-interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["component-interface.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component-id';\n\nexport interface IComponent {\n /**\n * id of the component.\n */\n id: ComponentID;\n\n /**\n * get function to retrieve aspect\n */\n get(aspectId: string): RawComponentMetadata | undefined;\n\n /**\n * determines whether a component is a modified state.\n * TODO: consider to remove after handling component descriptors correctly.\n */\n isModified(): Promise<boolean>;\n}\n\nexport type RawComponentMetadata = {\n id: string;\n config: Record<string, any>,\n data: Record<string, any>,\n icon?: string\n};\n"],"mappings":""}
@@ -9,6 +9,7 @@ import { Snap } from './snap';
9
9
  import { State } from './state';
10
10
  import { TagMap } from './tag-map';
11
11
  import { Tag } from './tag';
12
+ import { IComponent, RawComponentMetadata } from './component-interface';
12
13
  declare type SnapsIterableOpts = {
13
14
  firstParentOnly?: boolean;
14
15
  stopFn?: (snap: Snap) => Promise<boolean>;
@@ -20,7 +21,7 @@ export declare type InvalidComponent = {
20
21
  /**
21
22
  * in-memory representation of a component.
22
23
  */
23
- export declare class Component {
24
+ export declare class Component implements IComponent {
24
25
  /**
25
26
  * component ID represented by the `ComponentId` type.
26
27
  */
@@ -79,6 +80,10 @@ export declare class Component {
79
80
  get buildStatus(): BuildStatus;
80
81
  get headTag(): Tag | undefined;
81
82
  get latest(): string | undefined;
83
+ /**
84
+ * get aspect data from current state.
85
+ */
86
+ get(id: string): RawComponentMetadata | undefined;
82
87
  getLogs(filter?: {
83
88
  type?: string;
84
89
  offset?: number;
@@ -18,16 +18,7 @@ export declare function componentSchema(componentExtension: ComponentMain): {
18
18
  tags: (component: any) => any;
19
19
  aspects: (component: Component, { include }: {
20
20
  include?: string[] | undefined;
21
- }) => {
22
- id: string;
23
- config: {
24
- [key: string]: any;
25
- };
26
- data: {
27
- [key: string]: any;
28
- };
29
- icon: string;
30
- }[];
21
+ }) => import("./component-interface").RawComponentMetadata[];
31
22
  logs: (component: Component, filter?: {
32
23
  type?: string | undefined;
33
24
  offset?: number | undefined;
package/dist/component.js CHANGED
@@ -157,6 +157,16 @@ class Component {
157
157
  throw err;
158
158
  }
159
159
  }
160
+ /**
161
+ * get aspect data from current state.
162
+ */
163
+
164
+
165
+ get(id) {
166
+ var _this$state$aspects$g;
167
+
168
+ return (_this$state$aspects$g = this.state.aspects.get(id)) === null || _this$state$aspects$g === void 0 ? void 0 : _this$state$aspects$g.serialize();
169
+ }
160
170
 
161
171
  async getLogs(filter) {
162
172
  const allLogs = await this.factory.getLogs(this.id, false, filter === null || filter === void 0 ? void 0 : filter.head);
@@ -1 +1 @@
1
- {"version":3,"names":["Component","constructor","id","head","_state","tags","TagMap","factory","mainFile","state","config","filesystem","buildStatus","_consumer","headTag","undefined","byHash","hash","latest","getLatest","err","CouldNotFindLatest","getLogs","filter","allLogs","type","limit","offset","sort","typeFilter","snap","tag","filteredLogs","slice","reverse","stringify","JSON","displayName","tokens","name","split","map","token","capitalize","join","version","isModified","isOutdated","latestTag","byVersion","isNew","Promise","resolve","loadState","snapId","getState","loadSnap","snapToGet","BitError","getSnap","snapsIterable","options","snapToStart","nextSnaps","done","iterator","next","value","currSnapId","shift","parents","length","firstParentOnly","push","concat","stopFn","Symbol","asyncIterator","getClosestTag","snapToStartFrom","tagsHashMap","getHashMap","has","iterable","snaps","hashOfLastSnap","get","checkout","write","path","fs","equals","component","toString"],"sources":["component.ts"],"sourcesContent":["import { AnyFS } from '@teambit/any-fs';\nimport { capitalize } from '@teambit/toolbox.string.capitalize';\nimport { SemVer } from 'semver';\nimport { ComponentID } from '@teambit/component-id';\nimport { BitError } from '@teambit/bit-error';\nimport { BuildStatus } from '@teambit/legacy/dist/constants';\n\nimport { slice } from 'lodash';\nimport { ComponentFactory } from './component-factory';\nimport ComponentFS from './component-fs';\n// import { NothingToSnap } from './exceptions';\nimport ComponentConfig from './config';\n// eslint-disable-next-line import/no-cycle\nimport { Snap } from './snap';\nimport { State } from './state';\nimport { TagMap } from './tag-map';\nimport { Tag } from './tag';\nimport { CouldNotFindLatest } from './exceptions';\n// import { Author } from './types';\n\ntype SnapsIterableOpts = {\n firstParentOnly?: boolean;\n stopFn?: (snap: Snap) => Promise<boolean>;\n};\n\nexport type InvalidComponent = { id: ComponentID; err: Error };\n\n/**\n * in-memory representation of a component.\n */\nexport class Component {\n constructor(\n /**\n * component ID represented by the `ComponentId` type.\n */\n readonly id: ComponentID,\n\n /**\n * head version of the component. can be `null` for new components.\n */\n readonly head: Snap | null = null,\n\n /**\n * state of the component.\n */\n private _state: State,\n\n /**\n * tags of the component.\n */\n readonly tags: TagMap = new TagMap(),\n\n /**\n * the component factory\n */\n private factory: ComponentFactory\n ) {}\n\n get mainFile() {\n return this.state.mainFile;\n }\n\n get state(): State {\n return this._state;\n }\n\n set state(state: State) {\n this._state = state;\n }\n\n /**\n * component configuration which is later generated to a component `package.json` and `bit.json`.\n */\n get config(): ComponentConfig {\n return this.state.config;\n }\n\n /**\n * in-memory representation of the component current filesystem.\n */\n get filesystem(): ComponentFS {\n return this.state.filesystem;\n }\n\n /**\n * build status of the component\n */\n get buildStatus(): BuildStatus {\n return this._state._consumer.buildStatus;\n }\n\n get headTag() {\n if (!this.head) return undefined;\n return this.tags.byHash(this.head.hash);\n }\n\n get latest(): string | undefined {\n if (!this.head) return undefined;\n try {\n return this.tags.getLatest();\n } catch (err: any) {\n if (err instanceof CouldNotFindLatest) {\n return this.head.hash;\n }\n throw err;\n }\n }\n\n async getLogs(filter?: { type?: string; offset?: number; limit?: number; head?: string; sort?: string }) {\n const allLogs = await this.factory.getLogs(this.id, false, filter?.head);\n\n if (!filter) return allLogs;\n\n const { type, limit, offset, sort } = filter;\n\n const typeFilter = (snap) => {\n if (type === 'tag') return snap.tag;\n if (type === 'snap') return !snap.tag;\n return true;\n };\n\n let filteredLogs = (type && allLogs.filter(typeFilter)) || allLogs;\n if (limit) {\n filteredLogs = slice(filteredLogs, offset, limit + (offset || 0));\n }\n\n if (sort && sort === 'asc') return filteredLogs;\n\n return filteredLogs.reverse();\n }\n\n stringify(): string {\n return JSON.stringify({\n id: this.id,\n head: this.head,\n });\n }\n\n /**\n * record component changes in the `Scope`.\n */\n // snap(author: Author, message = '') {\n // if (!this.isModified()) throw new NothingToSnap();\n // const snap = new Snap(this, author, message);\n\n // return new Component(this.id, snap, snap.state);\n // }\n\n /**\n * display name of the component.\n */\n get displayName() {\n const tokens = this.id.name.split('-').map((token) => capitalize(token));\n return tokens.join(' ');\n }\n\n /**\n * tag a component `Snap` with a semantic version. we follow SemVer specs as defined [here](https://semver.org/)).\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tag(version: SemVer) {\n // const snap = this.snap();\n // const tag = new Tag(version, snap);\n // this.tags.set(tag);\n }\n\n /**\n * determines whether this component is modified in the workspace.\n */\n isModified(): Promise<boolean> {\n return this.factory.isModified(this);\n }\n\n /**\n * is component isOutdated\n */\n isOutdated(): boolean {\n if (!this.latest) return false;\n const latestTag = this.tags.byVersion(this.latest);\n if (!latestTag) return false;\n if (this.head?.hash !== latestTag?.hash) return true;\n return false;\n }\n\n /**\n * determines whether this component is new.\n */\n isNew(): Promise<boolean> {\n return Promise.resolve(this.head === null);\n }\n\n // TODO: @david after snap we need to make sure to refactor here.\n loadState(snapId: string): Promise<State> {\n return this.factory.getState(this.id, snapId);\n }\n\n loadSnap(snapId?: string): Promise<Snap> {\n const snapToGet = snapId || this.head?.hash;\n if (!snapToGet) {\n throw new BitError('could not load snap for new components');\n }\n return this.factory.getSnap(this.id, snapToGet);\n }\n\n /**\n * Get iterable which iterate over snap parents lazily\n * @param snapId\n * @param options\n */\n snapsIterable(snapId?: string, options: SnapsIterableOpts = {}): AsyncIterable<Snap> {\n const snapToStart = snapId || this.head?.hash;\n let nextSnaps = [snapToStart];\n let done;\n if (!snapToStart) {\n done = true;\n }\n\n const iterator: AsyncIterator<Snap> = {\n next: async () => {\n if (done) {\n return { value: undefined, done };\n }\n const currSnapId = nextSnaps.shift();\n const snap = await this.loadSnap(currSnapId);\n if (snap.parents && snap.parents.length) {\n if (options.firstParentOnly) {\n nextSnaps.push(snap.parents[0]);\n } else {\n nextSnaps = nextSnaps.concat(snap.parents);\n }\n }\n if (!nextSnaps.length) {\n done = true;\n } else if (options.stopFn) {\n done = await options.stopFn(snap);\n }\n return { value: snap, done: undefined };\n },\n };\n return {\n [Symbol.asyncIterator]: () => iterator,\n };\n }\n\n /**\n * traverse recursively from the provided snap (or head) upwards until it finds a tag\n * @param snapToStartFrom\n */\n async getClosestTag(snapToStartFrom?: string): Promise<Tag | undefined> {\n const tagsHashMap = this.tags.getHashMap();\n const stopFn = async (snap: Snap) => {\n if (tagsHashMap.has(snap.hash)) {\n return true;\n }\n return false;\n };\n const iterable = this.snapsIterable(snapToStartFrom, { firstParentOnly: true, stopFn });\n const snaps: Snap[] = [];\n for await (const snap of iterable) {\n snaps.push(snap);\n }\n if (snaps.length) {\n const hashOfLastSnap = snaps[snaps.length - 1].hash;\n return tagsHashMap.get(hashOfLastSnap);\n }\n return undefined;\n }\n\n /**\n * checkout the component to a different version in its working tree.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n checkout(version: SemVer) {}\n\n /**\n * examine difference between two components.\n */\n // diff(other: Component): Difference {}\n\n /**\n * merge two different components\n */\n // merge(other: Component): Component {}\n\n /**\n * write a component to a given file system.\n * @param path root path to write the component\n * @param fs instance of any fs to use.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n write(path: string, fs?: AnyFS) {}\n\n /**\n *\n * Check if 2 components are equal\n * @param {Component} component\n * @returns {boolean}\n * @memberof Component\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n equals(component: Component): boolean {\n return component.id.toString() === this.id.toString();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Component","constructor","id","head","_state","tags","TagMap","factory","mainFile","state","config","filesystem","buildStatus","_consumer","headTag","undefined","byHash","hash","latest","getLatest","err","CouldNotFindLatest","get","aspects","serialize","getLogs","filter","allLogs","type","limit","offset","sort","typeFilter","snap","tag","filteredLogs","slice","reverse","stringify","JSON","displayName","tokens","name","split","map","token","capitalize","join","version","isModified","isOutdated","latestTag","byVersion","isNew","Promise","resolve","loadState","snapId","getState","loadSnap","snapToGet","BitError","getSnap","snapsIterable","options","snapToStart","nextSnaps","done","iterator","next","value","currSnapId","shift","parents","length","firstParentOnly","push","concat","stopFn","Symbol","asyncIterator","getClosestTag","snapToStartFrom","tagsHashMap","getHashMap","has","iterable","snaps","hashOfLastSnap","checkout","write","path","fs","equals","component","toString"],"sources":["component.ts"],"sourcesContent":["import { AnyFS } from '@teambit/any-fs';\nimport { capitalize } from '@teambit/toolbox.string.capitalize';\nimport { SemVer } from 'semver';\nimport { ComponentID } from '@teambit/component-id';\nimport { BitError } from '@teambit/bit-error';\nimport { BuildStatus } from '@teambit/legacy/dist/constants';\n\nimport { slice } from 'lodash';\nimport { ComponentFactory } from './component-factory';\nimport ComponentFS from './component-fs';\n// import { NothingToSnap } from './exceptions';\nimport ComponentConfig from './config';\n// eslint-disable-next-line import/no-cycle\nimport { Snap } from './snap';\nimport { State } from './state';\nimport { TagMap } from './tag-map';\nimport { Tag } from './tag';\nimport { CouldNotFindLatest } from './exceptions';\nimport { IComponent, RawComponentMetadata } from './component-interface';\n// import { Author } from './types';\n\ntype SnapsIterableOpts = {\n firstParentOnly?: boolean;\n stopFn?: (snap: Snap) => Promise<boolean>;\n};\n\nexport type InvalidComponent = { id: ComponentID; err: Error };\n\n/**\n * in-memory representation of a component.\n */\nexport class Component implements IComponent {\n constructor(\n /**\n * component ID represented by the `ComponentId` type.\n */\n readonly id: ComponentID,\n\n /**\n * head version of the component. can be `null` for new components.\n */\n readonly head: Snap | null = null,\n\n /**\n * state of the component.\n */\n private _state: State,\n\n /**\n * tags of the component.\n */\n readonly tags: TagMap = new TagMap(),\n\n /**\n * the component factory\n */\n private factory: ComponentFactory\n ) {}\n\n get mainFile() {\n return this.state.mainFile;\n }\n\n get state(): State {\n return this._state;\n }\n\n set state(state: State) {\n this._state = state;\n }\n\n /**\n * component configuration which is later generated to a component `package.json` and `bit.json`.\n */\n get config(): ComponentConfig {\n return this.state.config;\n }\n\n /**\n * in-memory representation of the component current filesystem.\n */\n get filesystem(): ComponentFS {\n return this.state.filesystem;\n }\n\n /**\n * build status of the component\n */\n get buildStatus(): BuildStatus {\n return this._state._consumer.buildStatus;\n }\n\n get headTag() {\n if (!this.head) return undefined;\n return this.tags.byHash(this.head.hash);\n }\n\n get latest(): string | undefined {\n if (!this.head) return undefined;\n try {\n return this.tags.getLatest();\n } catch (err: any) {\n if (err instanceof CouldNotFindLatest) {\n return this.head.hash;\n }\n throw err;\n }\n }\n\n /**\n * get aspect data from current state.\n */\n get(id: string): RawComponentMetadata | undefined {\n return this.state.aspects.get(id)?.serialize();\n }\n\n async getLogs(filter?: { type?: string; offset?: number; limit?: number; head?: string; sort?: string }) {\n const allLogs = await this.factory.getLogs(this.id, false, filter?.head);\n\n if (!filter) return allLogs;\n\n const { type, limit, offset, sort } = filter;\n\n const typeFilter = (snap) => {\n if (type === 'tag') return snap.tag;\n if (type === 'snap') return !snap.tag;\n return true;\n };\n\n let filteredLogs = (type && allLogs.filter(typeFilter)) || allLogs;\n if (limit) {\n filteredLogs = slice(filteredLogs, offset, limit + (offset || 0));\n }\n\n if (sort && sort === 'asc') return filteredLogs;\n\n return filteredLogs.reverse();\n }\n\n stringify(): string {\n return JSON.stringify({\n id: this.id,\n head: this.head,\n });\n }\n\n /**\n * record component changes in the `Scope`.\n */\n // snap(author: Author, message = '') {\n // if (!this.isModified()) throw new NothingToSnap();\n // const snap = new Snap(this, author, message);\n\n // return new Component(this.id, snap, snap.state);\n // }\n\n /**\n * display name of the component.\n */\n get displayName() {\n const tokens = this.id.name.split('-').map((token) => capitalize(token));\n return tokens.join(' ');\n }\n\n /**\n * tag a component `Snap` with a semantic version. we follow SemVer specs as defined [here](https://semver.org/)).\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tag(version: SemVer) {\n // const snap = this.snap();\n // const tag = new Tag(version, snap);\n // this.tags.set(tag);\n }\n\n /**\n * determines whether this component is modified in the workspace.\n */\n isModified(): Promise<boolean> {\n return this.factory.isModified(this);\n }\n\n /**\n * is component isOutdated\n */\n isOutdated(): boolean {\n if (!this.latest) return false;\n const latestTag = this.tags.byVersion(this.latest);\n if (!latestTag) return false;\n if (this.head?.hash !== latestTag?.hash) return true;\n return false;\n }\n\n /**\n * determines whether this component is new.\n */\n isNew(): Promise<boolean> {\n return Promise.resolve(this.head === null);\n }\n\n // TODO: @david after snap we need to make sure to refactor here.\n loadState(snapId: string): Promise<State> {\n return this.factory.getState(this.id, snapId);\n }\n\n loadSnap(snapId?: string): Promise<Snap> {\n const snapToGet = snapId || this.head?.hash;\n if (!snapToGet) {\n throw new BitError('could not load snap for new components');\n }\n return this.factory.getSnap(this.id, snapToGet);\n }\n\n /**\n * Get iterable which iterate over snap parents lazily\n * @param snapId\n * @param options\n */\n snapsIterable(snapId?: string, options: SnapsIterableOpts = {}): AsyncIterable<Snap> {\n const snapToStart = snapId || this.head?.hash;\n let nextSnaps = [snapToStart];\n let done;\n if (!snapToStart) {\n done = true;\n }\n\n const iterator: AsyncIterator<Snap> = {\n next: async () => {\n if (done) {\n return { value: undefined, done };\n }\n const currSnapId = nextSnaps.shift();\n const snap = await this.loadSnap(currSnapId);\n if (snap.parents && snap.parents.length) {\n if (options.firstParentOnly) {\n nextSnaps.push(snap.parents[0]);\n } else {\n nextSnaps = nextSnaps.concat(snap.parents);\n }\n }\n if (!nextSnaps.length) {\n done = true;\n } else if (options.stopFn) {\n done = await options.stopFn(snap);\n }\n return { value: snap, done: undefined };\n },\n };\n return {\n [Symbol.asyncIterator]: () => iterator,\n };\n }\n\n /**\n * traverse recursively from the provided snap (or head) upwards until it finds a tag\n * @param snapToStartFrom\n */\n async getClosestTag(snapToStartFrom?: string): Promise<Tag | undefined> {\n const tagsHashMap = this.tags.getHashMap();\n const stopFn = async (snap: Snap) => {\n if (tagsHashMap.has(snap.hash)) {\n return true;\n }\n return false;\n };\n const iterable = this.snapsIterable(snapToStartFrom, { firstParentOnly: true, stopFn });\n const snaps: Snap[] = [];\n for await (const snap of iterable) {\n snaps.push(snap);\n }\n if (snaps.length) {\n const hashOfLastSnap = snaps[snaps.length - 1].hash;\n return tagsHashMap.get(hashOfLastSnap);\n }\n return undefined;\n }\n\n /**\n * checkout the component to a different version in its working tree.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n checkout(version: SemVer) {}\n\n /**\n * examine difference between two components.\n */\n // diff(other: Component): Difference {}\n\n /**\n * merge two different components\n */\n // merge(other: Component): Component {}\n\n /**\n * write a component to a given file system.\n * @param path root path to write the component\n * @param fs instance of any fs to use.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n write(path: string, fs?: AnyFS) {}\n\n /**\n *\n * Check if 2 components are equal\n * @param {Component} component\n * @returns {boolean}\n * @memberof Component\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n equals(component: Component): boolean {\n return component.id.toString() === this.id.toString();\n }\n}\n"],"mappings":"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"}
@@ -2,7 +2,6 @@ import { CLIMain } from '@teambit/cli';
2
2
  import { ExpressMain, Route } from '@teambit/express';
3
3
  import { GraphqlMain } from '@teambit/graphql';
4
4
  import { SlotRegistry } from '@teambit/harmony';
5
- import type { ConfigMain } from '@teambit/config';
6
5
  import { ComponentID } from '@teambit/component-id';
7
6
  import { ExtensionDataList } from '@teambit/legacy/dist/consumer/config';
8
7
  import { ComponentFactory } from './component-factory';
@@ -71,5 +70,5 @@ export declare class ComponentMain {
71
70
  static slots: (((registerFn: () => string) => SlotRegistry<Route[]>) | ((registerFn: () => string) => SlotRegistry<ComponentFactory>) | ((registerFn: () => string) => SlotRegistry<ShowFragment[]>))[];
72
71
  static runtime: import("@teambit/harmony").RuntimeDefinition;
73
72
  static dependencies: import("@teambit/harmony").Aspect[];
74
- static provider([graphql, express, cli, configAspect]: [GraphqlMain, ExpressMain, CLIMain, ConfigMain], config: any, [hostSlot, showFragmentSlot]: [ComponentHostSlot, ShowFragmentSlot]): Promise<ComponentMain>;
73
+ static provider([graphql, express, cli]: [GraphqlMain, ExpressMain, CLIMain], config: any, [hostSlot, showFragmentSlot]: [ComponentHostSlot, ShowFragmentSlot]): Promise<ComponentMain>;
75
74
  }
@@ -61,16 +61,6 @@ function _harmony() {
61
61
  return data;
62
62
  }
63
63
 
64
- function _config() {
65
- const data = require("@teambit/config");
66
-
67
- _config = function () {
68
- return data;
69
- };
70
-
71
- return data;
72
- }
73
-
74
64
  function _lodash() {
75
65
  const data = require("lodash");
76
66
 
@@ -256,14 +246,9 @@ class ComponentMain {
256
246
  return this;
257
247
  }
258
248
 
259
- static async provider([graphql, express, cli, configAspect], config, [hostSlot, showFragmentSlot]) {
249
+ static async provider([graphql, express, cli], config, [hostSlot, showFragmentSlot]) {
260
250
  const componentExtension = new ComponentMain(hostSlot, express, showFragmentSlot);
261
-
262
- if (configAspect.workspaceConfig && !configAspect.workspaceConfig.isLegacy || configAspect.type === 'scope') {
263
- cli.unregister('show');
264
- cli.register(new (_show().ShowCmd)(componentExtension));
265
- }
266
-
251
+ cli.register(new (_show().ShowCmd)(componentExtension));
267
252
  componentExtension.registerShowFragments([new (_show().NameFragment)(), new (_show().MainFileFragment)(), new (_show().IDFragment)(), new (_show().ScopeFragment)(), new (_show().FilesFragment)(), new (_show().ExtensionsFragment)()]);
268
253
  graphql.register((0, _component2().componentSchema)(componentExtension));
269
254
  return componentExtension;
@@ -274,7 +259,7 @@ class ComponentMain {
274
259
  exports.ComponentMain = ComponentMain;
275
260
  (0, _defineProperty2().default)(ComponentMain, "slots", [_harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType()]);
276
261
  (0, _defineProperty2().default)(ComponentMain, "runtime", _cli().MainRuntime);
277
- (0, _defineProperty2().default)(ComponentMain, "dependencies", [_graphql().GraphqlAspect, _express().ExpressAspect, _cli().CLIAspect, _config().ConfigAspect]);
262
+ (0, _defineProperty2().default)(ComponentMain, "dependencies", [_graphql().GraphqlAspect, _express().ExpressAspect, _cli().CLIAspect]);
278
263
 
279
264
  _component().ComponentAspect.addRuntime(ComponentMain);
280
265
 
@@ -1 +1 @@
1
- {"version":3,"names":["ComponentMain","constructor","hostSlot","express","showFragmentSlot","registerHost","host","register","createAspectListFromLegacy","legacyExtensionDataList","scope","AspectList","fromLegacyExtensions","createAspectListFromEntries","entries","registerRoute","routes","routeEntries","map","route","ComponentRoute","flattenRoutes","flatten","setHostPriority","id","get","HostNotFound","_priorHost","getHost","getPriorHost","getRoute","routeName","toString","hosts","values","priorityHost","find","priority","getShowFragments","fragments","orderBy","isHost","name","registerShowFragments","showFragments","provider","graphql","cli","configAspect","config","componentExtension","workspaceConfig","isLegacy","type","unregister","ShowCmd","NameFragment","MainFileFragment","IDFragment","ScopeFragment","FilesFragment","ExtensionsFragment","componentSchema","Slot","withType","MainRuntime","GraphqlAspect","ExpressAspect","CLIAspect","ConfigAspect","ComponentAspect","addRuntime"],"sources":["component.main.runtime.ts"],"sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { ExpressAspect, ExpressMain, Route } from '@teambit/express';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { ConfigAspect } from '@teambit/config';\nimport type { ConfigMain } from '@teambit/config';\nimport { ComponentID } from '@teambit/component-id';\nimport { flatten, orderBy } from 'lodash';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config';\nimport { ComponentFactory } from './component-factory';\nimport { ComponentAspect } from './component.aspect';\nimport { componentSchema } from './component.graphql';\nimport { ComponentRoute } from './component.route';\nimport { AspectList } from './aspect-list';\nimport { HostNotFound } from './exceptions';\nimport { AspectEntry } from './aspect-entry';\nimport {\n ShowCmd,\n ShowFragment,\n NameFragment,\n MainFileFragment,\n IDFragment,\n ScopeFragment,\n FilesFragment,\n ExtensionsFragment,\n} from './show';\nimport { RegisteredComponentRoute } from '.';\n\nexport type ComponentHostSlot = SlotRegistry<ComponentFactory>;\n\nexport type ShowFragmentSlot = SlotRegistry<ShowFragment[]>;\n\nexport class ComponentMain {\n constructor(\n /**\n * slot for component hosts to register.\n */\n private hostSlot: ComponentHostSlot,\n\n /**\n * Express Extension\n */\n private express: ExpressMain,\n\n private showFragmentSlot: ShowFragmentSlot\n ) {}\n\n /**\n * register a new component host.\n */\n registerHost(host: ComponentFactory) {\n this.hostSlot.register(host);\n return this;\n }\n\n /**\n * important! avoid using this method.\n * seems like this method was written to work around a very specific case when the ComponentID of the aspects are\n * not available. in case of new components, to get the ComponentID, the workspace-aspect is needed to get the\n * default-scope. when this method is called from the scope, there is no way to get the real component-id.\n * instead, this method asks for the \"scope\", which when called by the scope-aspect is the current scope-name.\n * it may or may not be the real scope-name of the aspect.\n * to fix this possibly incorrect scope-name, the `workspace.resolveScopeAspectListIds()` checks whether the\n * scope-name is the same as scope.name, and if so, resolve it to the correct scope-name.\n */\n createAspectListFromLegacy(legacyExtensionDataList: ExtensionDataList, scope?: string) {\n return AspectList.fromLegacyExtensions(legacyExtensionDataList, scope);\n }\n\n createAspectListFromEntries(entries: AspectEntry[]) {\n return new AspectList(entries);\n }\n\n registerRoute(routes: RegisteredComponentRoute[]) {\n const routeEntries = routes.map((route: RegisteredComponentRoute) => {\n return new ComponentRoute(route, this);\n });\n\n const flattenRoutes = flatten(routeEntries) as any as Route[];\n\n this.express.register(flattenRoutes);\n return this;\n }\n\n /**\n * set the prior host.\n */\n setHostPriority(id: string) {\n const host = this.hostSlot.get(id);\n if (!host) {\n throw new HostNotFound(id);\n }\n\n this._priorHost = host;\n return this;\n }\n\n /**\n * get component host by extension ID.\n */\n getHost(id?: string): ComponentFactory {\n if (id) {\n const host = this.hostSlot.get(id);\n if (!host) throw new HostNotFound(id);\n return host;\n }\n\n return this.getPriorHost();\n }\n\n getRoute(id: ComponentID, routeName: string) {\n return `/api/${id.toString()}/~aspect/${routeName}`;\n }\n\n /**\n * get the prior host.\n */\n private getPriorHost() {\n if (this._priorHost) return this._priorHost;\n\n const hosts = this.hostSlot.values();\n const priorityHost = hosts.find((host) => host.priority);\n return priorityHost || hosts[0];\n }\n\n getShowFragments() {\n const fragments = orderBy(flatten(this.showFragmentSlot.values()), ['weight', ['asc']]);\n return fragments;\n }\n\n isHost(name: string) {\n return !!this.hostSlot.get(name);\n }\n\n /**\n * register a show fragment to display further information in the `bit show` command.\n */\n registerShowFragments(showFragments: ShowFragment[]) {\n this.showFragmentSlot.register(showFragments);\n return this;\n }\n\n private _priorHost: ComponentFactory | undefined;\n\n static slots = [Slot.withType<ComponentFactory>(), Slot.withType<Route[]>(), Slot.withType<ShowFragment[]>()];\n\n static runtime = MainRuntime;\n static dependencies = [GraphqlAspect, ExpressAspect, CLIAspect, ConfigAspect];\n\n static async provider(\n [graphql, express, cli, configAspect]: [GraphqlMain, ExpressMain, CLIMain, ConfigMain],\n config,\n [hostSlot, showFragmentSlot]: [ComponentHostSlot, ShowFragmentSlot]\n ) {\n const componentExtension = new ComponentMain(hostSlot, express, showFragmentSlot);\n\n if ((configAspect.workspaceConfig && !configAspect.workspaceConfig.isLegacy) || configAspect.type === 'scope') {\n cli.unregister('show');\n cli.register(new ShowCmd(componentExtension));\n }\n\n componentExtension.registerShowFragments([\n new NameFragment(),\n new MainFileFragment(),\n new IDFragment(),\n new ScopeFragment(),\n new FilesFragment(),\n new ExtensionsFragment(),\n ]);\n graphql.register(componentSchema(componentExtension));\n\n return componentExtension;\n }\n}\n\nComponentAspect.addRuntime(ComponentMain);\n"],"mappings":"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"}
1
+ {"version":3,"names":["ComponentMain","constructor","hostSlot","express","showFragmentSlot","registerHost","host","register","createAspectListFromLegacy","legacyExtensionDataList","scope","AspectList","fromLegacyExtensions","createAspectListFromEntries","entries","registerRoute","routes","routeEntries","map","route","ComponentRoute","flattenRoutes","flatten","setHostPriority","id","get","HostNotFound","_priorHost","getHost","getPriorHost","getRoute","routeName","toString","hosts","values","priorityHost","find","priority","getShowFragments","fragments","orderBy","isHost","name","registerShowFragments","showFragments","provider","graphql","cli","config","componentExtension","ShowCmd","NameFragment","MainFileFragment","IDFragment","ScopeFragment","FilesFragment","ExtensionsFragment","componentSchema","Slot","withType","MainRuntime","GraphqlAspect","ExpressAspect","CLIAspect","ComponentAspect","addRuntime"],"sources":["component.main.runtime.ts"],"sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { ExpressAspect, ExpressMain, Route } from '@teambit/express';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { ComponentID } from '@teambit/component-id';\nimport { flatten, orderBy } from 'lodash';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config';\nimport { ComponentFactory } from './component-factory';\nimport { ComponentAspect } from './component.aspect';\nimport { componentSchema } from './component.graphql';\nimport { ComponentRoute } from './component.route';\nimport { AspectList } from './aspect-list';\nimport { HostNotFound } from './exceptions';\nimport { AspectEntry } from './aspect-entry';\nimport {\n ShowCmd,\n ShowFragment,\n NameFragment,\n MainFileFragment,\n IDFragment,\n ScopeFragment,\n FilesFragment,\n ExtensionsFragment,\n} from './show';\nimport { RegisteredComponentRoute } from '.';\n\nexport type ComponentHostSlot = SlotRegistry<ComponentFactory>;\n\nexport type ShowFragmentSlot = SlotRegistry<ShowFragment[]>;\n\nexport class ComponentMain {\n constructor(\n /**\n * slot for component hosts to register.\n */\n private hostSlot: ComponentHostSlot,\n\n /**\n * Express Extension\n */\n private express: ExpressMain,\n\n private showFragmentSlot: ShowFragmentSlot\n ) {}\n\n /**\n * register a new component host.\n */\n registerHost(host: ComponentFactory) {\n this.hostSlot.register(host);\n return this;\n }\n\n /**\n * important! avoid using this method.\n * seems like this method was written to work around a very specific case when the ComponentID of the aspects are\n * not available. in case of new components, to get the ComponentID, the workspace-aspect is needed to get the\n * default-scope. when this method is called from the scope, there is no way to get the real component-id.\n * instead, this method asks for the \"scope\", which when called by the scope-aspect is the current scope-name.\n * it may or may not be the real scope-name of the aspect.\n * to fix this possibly incorrect scope-name, the `workspace.resolveScopeAspectListIds()` checks whether the\n * scope-name is the same as scope.name, and if so, resolve it to the correct scope-name.\n */\n createAspectListFromLegacy(legacyExtensionDataList: ExtensionDataList, scope?: string) {\n return AspectList.fromLegacyExtensions(legacyExtensionDataList, scope);\n }\n\n createAspectListFromEntries(entries: AspectEntry[]) {\n return new AspectList(entries);\n }\n\n registerRoute(routes: RegisteredComponentRoute[]) {\n const routeEntries = routes.map((route: RegisteredComponentRoute) => {\n return new ComponentRoute(route, this);\n });\n\n const flattenRoutes = flatten(routeEntries) as any as Route[];\n\n this.express.register(flattenRoutes);\n return this;\n }\n\n /**\n * set the prior host.\n */\n setHostPriority(id: string) {\n const host = this.hostSlot.get(id);\n if (!host) {\n throw new HostNotFound(id);\n }\n\n this._priorHost = host;\n return this;\n }\n\n /**\n * get component host by extension ID.\n */\n getHost(id?: string): ComponentFactory {\n if (id) {\n const host = this.hostSlot.get(id);\n if (!host) throw new HostNotFound(id);\n return host;\n }\n\n return this.getPriorHost();\n }\n\n getRoute(id: ComponentID, routeName: string) {\n return `/api/${id.toString()}/~aspect/${routeName}`;\n }\n\n /**\n * get the prior host.\n */\n private getPriorHost() {\n if (this._priorHost) return this._priorHost;\n\n const hosts = this.hostSlot.values();\n const priorityHost = hosts.find((host) => host.priority);\n return priorityHost || hosts[0];\n }\n\n getShowFragments() {\n const fragments = orderBy(flatten(this.showFragmentSlot.values()), ['weight', ['asc']]);\n return fragments;\n }\n\n isHost(name: string) {\n return !!this.hostSlot.get(name);\n }\n\n /**\n * register a show fragment to display further information in the `bit show` command.\n */\n registerShowFragments(showFragments: ShowFragment[]) {\n this.showFragmentSlot.register(showFragments);\n return this;\n }\n\n private _priorHost: ComponentFactory | undefined;\n\n static slots = [Slot.withType<ComponentFactory>(), Slot.withType<Route[]>(), Slot.withType<ShowFragment[]>()];\n\n static runtime = MainRuntime;\n static dependencies = [GraphqlAspect, ExpressAspect, CLIAspect];\n\n static async provider(\n [graphql, express, cli]: [GraphqlMain, ExpressMain, CLIMain],\n config,\n [hostSlot, showFragmentSlot]: [ComponentHostSlot, ShowFragmentSlot]\n ) {\n const componentExtension = new ComponentMain(hostSlot, express, showFragmentSlot);\n cli.register(new ShowCmd(componentExtension));\n\n componentExtension.registerShowFragments([\n new NameFragment(),\n new MainFileFragment(),\n new IDFragment(),\n new ScopeFragment(),\n new FilesFragment(),\n new ExtensionsFragment(),\n ]);\n graphql.register(componentSchema(componentExtension));\n\n return componentExtension;\n }\n}\n\nComponentAspect.addRuntime(ComponentMain);\n"],"mappings":"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"}
@@ -11,6 +11,7 @@ import { ComponentModel } from './ui';
11
11
  import { ComponentPageElement, ComponentPageSlot } from './ui/component';
12
12
  import { ComponentResultPlugin } from './ui/component-searcher';
13
13
  import { ConsumeMethodSlot, ConsumePlugin, NavPlugin, OrderedNavigationSlot } from './ui/menu';
14
+ import { GetComponentsOptions } from './get-component-opts';
14
15
  export declare type ComponentSearchResultSlot = SlotRegistry<ComponentResultPlugin[]>;
15
16
  export declare type Server = {
16
17
  env: string;
@@ -59,8 +60,8 @@ export declare class ComponentUI {
59
60
  private bitMethod;
60
61
  registerPubSub(): void;
61
62
  handleComponentChange: (activeComponent?: ComponentModel | undefined) => void;
62
- getComponentUI(host: string): JSX.Element;
63
- getMenu(host: string): JSX.Element;
63
+ getComponentUI(host: string, options?: GetComponentsOptions): JSX.Element;
64
+ getMenu(host: string, opts?: GetComponentsOptions): JSX.Element;
64
65
  registerRoute(routes: RouteProps[] | RouteProps): this;
65
66
  registerNavigation(nav: LinkProps, order?: number): void;
66
67
  registerConsumeMethod(...consumeMethods: ConsumePlugin[]): void;
@@ -319,7 +319,7 @@ class ComponentUI {
319
319
  this.componentSearcher.updatePlugins(totalPlugins);
320
320
  });
321
321
  (0, _defineProperty2().default)(this, "updateComponents", components => {
322
- this.componentSearcher.update(components);
322
+ this.componentSearcher.update(components || []);
323
323
  });
324
324
  this.componentSearcher = new (_componentSearcher().ComponentSearcher)({
325
325
  navigate: reactRouterUi.navigateTo
@@ -345,22 +345,26 @@ class ComponentUI {
345
345
  });
346
346
  }
347
347
 
348
- getComponentUI(host) {
348
+ getComponentUI(host, options = {}) {
349
349
  return /*#__PURE__*/_react().default.createElement(_component2().Component, {
350
350
  routeSlot: this.routeSlot,
351
351
  containerSlot: this.pageItemSlot,
352
352
  onComponentChange: this.handleComponentChange,
353
- host: host
353
+ host: host,
354
+ useComponent: options.useComponent,
355
+ componentIdStr: options.componentId
354
356
  });
355
357
  }
356
358
 
357
- getMenu(host) {
359
+ getMenu(host, opts = {}) {
358
360
  return /*#__PURE__*/_react().default.createElement(_menu().ComponentMenu, {
359
361
  navigationSlot: this.navSlot,
360
362
  consumeMethodSlot: this.consumeMethodSlot,
361
363
  widgetSlot: this.widgetSlot,
362
364
  host: host,
363
- menuItemSlot: this.menuItemSlot
365
+ menuItemSlot: this.menuItemSlot,
366
+ useComponent: opts.useComponent,
367
+ componentIdStr: opts.componentId
364
368
  });
365
369
  }
366
370
 
@@ -397,8 +401,12 @@ class ComponentUI {
397
401
  key: 'deprecation',
398
402
  end: _componentUi().DeprecationIcon
399
403
  });
400
- componentUI.commandBarUI.addCommand(...componentUI.keyBindings);
401
- commandBarUI.addSearcher(componentUI.componentSearcher);
404
+
405
+ if (componentUI.commandBarUI) {
406
+ componentUI.commandBarUI.addCommand(...componentUI.keyBindings);
407
+ commandBarUI.addSearcher(componentUI.componentSearcher);
408
+ }
409
+
402
410
  componentUI.registerMenuItem(componentUI.menuItems);
403
411
  componentUI.registerRoute(aspectSection.route);
404
412
  componentUI.registerWidget(aspectSection.navigationLink, aspectSection.order);
@@ -1 +1 @@
1
- {"version":3,"names":["ComponentUI","constructor","pubsub","routeSlot","navSlot","consumeMethodSlot","widgetSlot","menuItemSlot","pageItemSlot","componentSearchResultSlot","commandBarUI","reactRouterUi","packageName","activeComponent","version","id","versionString","copy","action","toString","displayName","keybinding","copyNpmId","category","title","keyChar","handler","run","comp","options","latest","Title","width","Component","ignoreVersion","name","currentLane","order","menuItems","register","items","totalPlugins","flatten","values","componentSearcher","updatePlugins","components","update","ComponentSearcher","navigate","navigateTo","isBrowser","registerPubSub","sub","PreviewAspect","be","type","ClickInsideAnIframeEvent","TYPE","event","MouseEvent","view","window","bubbles","cancelable","body","document","dispatchEvent","getComponentUI","host","handleComponentChange","getMenu","registerRoute","routes","registerNavigation","nav","props","registerConsumeMethod","consumeMethods","registerWidget","widget","provider","reactRouterUI","config","pageSlot","componentUI","aspectSection","AspectSection","registerSearchResultWidget","key","end","DeprecationIcon","addCommand","keyBindings","addSearcher","registerMenuItem","route","navigationLink","bitMethod","PubsubAspect","CommandBarAspect","ReactRouterAspect","UIRuntime","Slot","withType","ComponentAspect","addRuntime"],"sources":["component.ui.runtime.tsx"],"sourcesContent":["import React from 'react';\nimport flatten from 'lodash.flatten';\nimport copy from 'copy-to-clipboard';\nimport type { RouteProps } from 'react-router-dom';\n\nimport type { LinkProps } from '@teambit/base-react.navigation.link';\nimport CommandBarAspect, { CommandBarUI, CommandEntry } from '@teambit/command-bar';\nimport { DeprecationIcon } from '@teambit/component.ui.deprecation-icon';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport PreviewAspect, { ClickInsideAnIframeEvent } from '@teambit/preview';\nimport PubsubAspect, { BitBaseEvent, PubsubUI } from '@teambit/pubsub';\nimport ReactRouterAspect, { ReactRouterUI } from '@teambit/react-router';\nimport { UIRuntime } from '@teambit/ui';\nimport { isBrowser } from '@teambit/ui-foundation.ui.is-browser';\nimport { MenuItem, MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { NavigationSlot, RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { Import } from '@teambit/ui-foundation.ui.use-box.menu';\n\nimport { AspectSection } from './aspect.section';\nimport { ComponentAspect } from './component.aspect';\nimport { ComponentModel } from './ui';\nimport { Component, ComponentPageElement, ComponentPageSlot } from './ui/component';\nimport { ComponentResultPlugin, ComponentSearcher } from './ui/component-searcher';\nimport { ConsumeMethodSlot, ConsumePlugin, ComponentMenu, NavPlugin, OrderedNavigationSlot } from './ui/menu';\n\nexport type ComponentSearchResultSlot = SlotRegistry<ComponentResultPlugin[]>;\n\nexport type Server = {\n env: string;\n url: string;\n};\n\nexport type ComponentMeta = {\n id: string;\n};\n\nexport class ComponentUI {\n readonly routePath = `/*`;\n private componentSearcher: ComponentSearcher;\n\n constructor(\n /**\n * Pubsub aspects\n */\n private pubsub: PubsubUI,\n\n private routeSlot: RouteSlot,\n\n private navSlot: OrderedNavigationSlot,\n\n private consumeMethodSlot: ConsumeMethodSlot,\n\n /**\n * slot for registering a new widget to the menu.\n */\n private widgetSlot: OrderedNavigationSlot,\n\n private menuItemSlot: MenuItemSlot,\n\n private pageItemSlot: ComponentPageSlot,\n\n private componentSearchResultSlot: ComponentSearchResultSlot,\n\n private commandBarUI: CommandBarUI,\n\n reactRouterUi: ReactRouterUI\n ) {\n this.componentSearcher = new ComponentSearcher({ navigate: reactRouterUi.navigateTo });\n if (isBrowser) this.registerPubSub();\n }\n\n /**\n * the current visible component\n */\n private activeComponent?: ComponentModel;\n\n private copyNpmId = () => {\n const packageName = this.activeComponent?.packageName;\n if (packageName) {\n const version = this.activeComponent?.id.version;\n const versionString = version ? `@${version}` : '';\n copy(`${packageName}${versionString}`);\n }\n };\n\n /**\n * key bindings used by component aspect\n */\n private keyBindings: CommandEntry[] = [\n {\n id: 'component.copyBitId', // TODO - extract to a component!\n action: () => {\n copy(this.activeComponent?.id.toString() || '');\n },\n displayName: 'Copy component ID',\n keybinding: '.',\n },\n {\n id: 'component.copyNpmId', // TODO - extract to a component!\n action: this.copyNpmId,\n displayName: 'Copy component package name',\n keybinding: ',',\n },\n ];\n\n private menuItems: MenuItem[] = [\n {\n category: 'general',\n title: 'Open command bar',\n keyChar: 'mod+k',\n handler: () => this.commandBarUI?.run('command-bar.open'),\n },\n {\n category: 'general',\n title: 'Toggle component list',\n keyChar: 'alt+s',\n handler: () => this.commandBarUI?.run('sidebar.toggle'),\n },\n {\n category: 'workflow',\n title: 'Copy component ID',\n keyChar: '.',\n handler: () => this.commandBarUI?.run('component.copyBitId'),\n },\n {\n category: 'workflow',\n title: 'Copy component package name',\n keyChar: ',',\n handler: () => this.commandBarUI?.run('component.copyNpmId'),\n },\n ];\n\n private bitMethod: ConsumePlugin = (comp, options) => {\n const version = comp.version === comp.latest ? '' : `@${comp.version}`;\n return {\n Title: <img style={{ width: '20px' }} src=\"https://static.bit.dev/brands/bit-logo-text.svg\" />,\n Component: (\n <Import\n componentId={`${comp.id.toString({ ignoreVersion: true })}${version}`}\n packageName={`${comp.packageName}${version}`}\n componentName={comp.id.name}\n showInstallMethod={!options?.currentLane}\n />\n ),\n order: 0,\n };\n };\n\n registerPubSub() {\n this.pubsub.sub(PreviewAspect.id, (be: BitBaseEvent<any>) => {\n if (be.type === ClickInsideAnIframeEvent.TYPE) {\n const event = new MouseEvent('mousedown', {\n view: window,\n bubbles: true,\n cancelable: true,\n });\n\n const body = document.body;\n body?.dispatchEvent(event);\n }\n });\n }\n\n handleComponentChange = (activeComponent?: ComponentModel) => {\n this.activeComponent = activeComponent;\n };\n\n getComponentUI(host: string) {\n return (\n <Component\n routeSlot={this.routeSlot}\n containerSlot={this.pageItemSlot}\n onComponentChange={this.handleComponentChange}\n host={host}\n />\n );\n }\n\n getMenu(host: string) {\n return (\n <ComponentMenu\n navigationSlot={this.navSlot}\n consumeMethodSlot={this.consumeMethodSlot}\n widgetSlot={this.widgetSlot}\n host={host}\n menuItemSlot={this.menuItemSlot}\n />\n );\n }\n\n registerRoute(routes: RouteProps[] | RouteProps) {\n this.routeSlot.register(routes);\n return this;\n }\n\n registerNavigation(nav: LinkProps, order?: number) {\n this.navSlot.register({\n props: nav,\n order,\n });\n }\n\n registerConsumeMethod(...consumeMethods: ConsumePlugin[]) {\n this.consumeMethodSlot.register(consumeMethods);\n }\n\n registerWidget(widget: LinkProps, order?: number) {\n this.widgetSlot.register({ props: widget, order });\n }\n\n registerMenuItem = (menuItems: MenuItem[]) => {\n this.menuItemSlot.register(menuItems);\n };\n\n registerPageItem = (...items: ComponentPageElement[]) => {\n this.pageItemSlot.register(items);\n };\n\n /** register widgets to the components listed in the command bar */\n registerSearchResultWidget = (...items: ComponentResultPlugin[]) => {\n this.componentSearchResultSlot.register(items);\n const totalPlugins = flatten(this.componentSearchResultSlot.values());\n\n this.componentSearcher.updatePlugins(totalPlugins);\n };\n\n updateComponents = (components: ComponentModel[]) => {\n this.componentSearcher.update(components);\n };\n\n static dependencies = [PubsubAspect, CommandBarAspect, ReactRouterAspect];\n\n static runtime = UIRuntime;\n\n static slots = [\n Slot.withType<RouteProps>(),\n Slot.withType<NavPlugin>(),\n Slot.withType<NavigationSlot>(),\n Slot.withType<ConsumeMethodSlot>(),\n Slot.withType<MenuItemSlot>(),\n Slot.withType<ComponentPageSlot>(),\n Slot.withType<ComponentSearchResultSlot>(),\n ];\n\n static async provider(\n [pubsub, commandBarUI, reactRouterUI]: [PubsubUI, CommandBarUI, ReactRouterUI],\n config,\n [routeSlot, navSlot, consumeMethodSlot, widgetSlot, menuItemSlot, pageSlot, componentSearchResultSlot]: [\n RouteSlot,\n OrderedNavigationSlot,\n ConsumeMethodSlot,\n OrderedNavigationSlot,\n MenuItemSlot,\n ComponentPageSlot,\n ComponentSearchResultSlot\n ]\n ) {\n // TODO: refactor ComponentHost to a separate extension (including sidebar, host, graphql, etc.)\n // TODO: add contextual hook for ComponentHost @uri/@oded\n const componentUI = new ComponentUI(\n pubsub,\n routeSlot,\n navSlot,\n consumeMethodSlot,\n widgetSlot,\n menuItemSlot,\n pageSlot,\n componentSearchResultSlot,\n commandBarUI,\n reactRouterUI\n );\n const aspectSection = new AspectSection();\n // @ts-ignore\n componentUI.registerSearchResultWidget({ key: 'deprecation', end: DeprecationIcon });\n componentUI.commandBarUI.addCommand(...componentUI.keyBindings);\n commandBarUI.addSearcher(componentUI.componentSearcher);\n componentUI.registerMenuItem(componentUI.menuItems);\n componentUI.registerRoute(aspectSection.route);\n componentUI.registerWidget(aspectSection.navigationLink, aspectSection.order);\n componentUI.registerConsumeMethod(componentUI.bitMethod);\n return componentUI;\n }\n}\n\nexport default ComponentUI;\n\nComponentAspect.addRuntime(ComponentUI);\n"],"mappings":"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"}
1
+ {"version":3,"names":["ComponentUI","constructor","pubsub","routeSlot","navSlot","consumeMethodSlot","widgetSlot","menuItemSlot","pageItemSlot","componentSearchResultSlot","commandBarUI","reactRouterUi","packageName","activeComponent","version","id","versionString","copy","action","toString","displayName","keybinding","copyNpmId","category","title","keyChar","handler","run","comp","options","latest","Title","width","Component","ignoreVersion","name","currentLane","order","menuItems","register","items","totalPlugins","flatten","values","componentSearcher","updatePlugins","components","update","ComponentSearcher","navigate","navigateTo","isBrowser","registerPubSub","sub","PreviewAspect","be","type","ClickInsideAnIframeEvent","TYPE","event","MouseEvent","view","window","bubbles","cancelable","body","document","dispatchEvent","getComponentUI","host","handleComponentChange","useComponent","componentId","getMenu","opts","registerRoute","routes","registerNavigation","nav","props","registerConsumeMethod","consumeMethods","registerWidget","widget","provider","reactRouterUI","config","pageSlot","componentUI","aspectSection","AspectSection","registerSearchResultWidget","key","end","DeprecationIcon","addCommand","keyBindings","addSearcher","registerMenuItem","route","navigationLink","bitMethod","PubsubAspect","CommandBarAspect","ReactRouterAspect","UIRuntime","Slot","withType","ComponentAspect","addRuntime"],"sources":["component.ui.runtime.tsx"],"sourcesContent":["import React from 'react';\nimport flatten from 'lodash.flatten';\nimport copy from 'copy-to-clipboard';\nimport type { RouteProps } from 'react-router-dom';\n\nimport type { LinkProps } from '@teambit/base-react.navigation.link';\nimport CommandBarAspect, { CommandBarUI, CommandEntry } from '@teambit/command-bar';\nimport { DeprecationIcon } from '@teambit/component.ui.deprecation-icon';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport PreviewAspect, { ClickInsideAnIframeEvent } from '@teambit/preview';\nimport PubsubAspect, { BitBaseEvent, PubsubUI } from '@teambit/pubsub';\nimport ReactRouterAspect, { ReactRouterUI } from '@teambit/react-router';\nimport { UIRuntime } from '@teambit/ui';\nimport { isBrowser } from '@teambit/ui-foundation.ui.is-browser';\nimport { MenuItem, MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { NavigationSlot, RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { Import } from '@teambit/ui-foundation.ui.use-box.menu';\n\nimport { AspectSection } from './aspect.section';\nimport { ComponentAspect } from './component.aspect';\nimport { ComponentModel } from './ui';\nimport { Component, ComponentPageElement, ComponentPageSlot } from './ui/component';\nimport { ComponentResultPlugin, ComponentSearcher } from './ui/component-searcher';\nimport { ConsumeMethodSlot, ConsumePlugin, ComponentMenu, NavPlugin, OrderedNavigationSlot } from './ui/menu';\nimport { GetComponentsOptions } from './get-component-opts';\n\nexport type ComponentSearchResultSlot = SlotRegistry<ComponentResultPlugin[]>;\n\nexport type Server = {\n env: string;\n url: string;\n};\n\nexport type ComponentMeta = {\n id: string;\n};\n\nexport class ComponentUI {\n readonly routePath = `/*`;\n private componentSearcher: ComponentSearcher;\n\n constructor(\n /**\n * Pubsub aspects\n */\n private pubsub: PubsubUI,\n\n private routeSlot: RouteSlot,\n\n private navSlot: OrderedNavigationSlot,\n\n private consumeMethodSlot: ConsumeMethodSlot,\n\n /**\n * slot for registering a new widget to the menu.\n */\n private widgetSlot: OrderedNavigationSlot,\n\n private menuItemSlot: MenuItemSlot,\n\n private pageItemSlot: ComponentPageSlot,\n\n private componentSearchResultSlot: ComponentSearchResultSlot,\n\n private commandBarUI: CommandBarUI,\n\n reactRouterUi: ReactRouterUI\n ) {\n this.componentSearcher = new ComponentSearcher({ navigate: reactRouterUi.navigateTo });\n if (isBrowser) this.registerPubSub();\n }\n\n /**\n * the current visible component\n */\n private activeComponent?: ComponentModel;\n\n private copyNpmId = () => {\n const packageName = this.activeComponent?.packageName;\n if (packageName) {\n const version = this.activeComponent?.id.version;\n const versionString = version ? `@${version}` : '';\n copy(`${packageName}${versionString}`);\n }\n };\n\n /**\n * key bindings used by component aspect\n */\n private keyBindings: CommandEntry[] = [\n {\n id: 'component.copyBitId', // TODO - extract to a component!\n action: () => {\n copy(this.activeComponent?.id.toString() || '');\n },\n displayName: 'Copy component ID',\n keybinding: '.',\n },\n {\n id: 'component.copyNpmId', // TODO - extract to a component!\n action: this.copyNpmId,\n displayName: 'Copy component package name',\n keybinding: ',',\n },\n ];\n\n private menuItems: MenuItem[] = [\n {\n category: 'general',\n title: 'Open command bar',\n keyChar: 'mod+k',\n handler: () => this.commandBarUI?.run('command-bar.open'),\n },\n {\n category: 'general',\n title: 'Toggle component list',\n keyChar: 'alt+s',\n handler: () => this.commandBarUI?.run('sidebar.toggle'),\n },\n {\n category: 'workflow',\n title: 'Copy component ID',\n keyChar: '.',\n handler: () => this.commandBarUI?.run('component.copyBitId'),\n },\n {\n category: 'workflow',\n title: 'Copy component package name',\n keyChar: ',',\n handler: () => this.commandBarUI?.run('component.copyNpmId'),\n },\n ];\n\n private bitMethod: ConsumePlugin = (comp, options) => {\n const version = comp.version === comp.latest ? '' : `@${comp.version}`;\n return {\n Title: <img style={{ width: '20px' }} src=\"https://static.bit.dev/brands/bit-logo-text.svg\" />,\n Component: (\n <Import\n componentId={`${comp.id.toString({ ignoreVersion: true })}${version}`}\n packageName={`${comp.packageName}${version}`}\n componentName={comp.id.name}\n showInstallMethod={!options?.currentLane}\n />\n ),\n order: 0,\n };\n };\n\n registerPubSub() {\n this.pubsub.sub(PreviewAspect.id, (be: BitBaseEvent<any>) => {\n if (be.type === ClickInsideAnIframeEvent.TYPE) {\n const event = new MouseEvent('mousedown', {\n view: window,\n bubbles: true,\n cancelable: true,\n });\n\n const body = document.body;\n body?.dispatchEvent(event);\n }\n });\n }\n\n handleComponentChange = (activeComponent?: ComponentModel) => {\n this.activeComponent = activeComponent;\n };\n\n getComponentUI(host: string, options: GetComponentsOptions = {}) {\n return (\n <Component\n routeSlot={this.routeSlot}\n containerSlot={this.pageItemSlot}\n onComponentChange={this.handleComponentChange}\n host={host}\n useComponent={options.useComponent}\n componentIdStr={options.componentId}\n />\n );\n }\n\n getMenu(host: string, opts: GetComponentsOptions = {}) {\n return (\n <ComponentMenu\n navigationSlot={this.navSlot}\n consumeMethodSlot={this.consumeMethodSlot}\n widgetSlot={this.widgetSlot}\n host={host}\n menuItemSlot={this.menuItemSlot}\n useComponent={opts.useComponent}\n componentIdStr={opts.componentId}\n />\n );\n }\n\n registerRoute(routes: RouteProps[] | RouteProps) {\n this.routeSlot.register(routes);\n return this;\n }\n\n registerNavigation(nav: LinkProps, order?: number) {\n this.navSlot.register({\n props: nav,\n order,\n });\n }\n\n registerConsumeMethod(...consumeMethods: ConsumePlugin[]) {\n this.consumeMethodSlot.register(consumeMethods);\n }\n\n registerWidget(widget: LinkProps, order?: number) {\n this.widgetSlot.register({ props: widget, order });\n }\n\n registerMenuItem = (menuItems: MenuItem[]) => {\n this.menuItemSlot.register(menuItems);\n };\n\n registerPageItem = (...items: ComponentPageElement[]) => {\n this.pageItemSlot.register(items);\n };\n\n /** register widgets to the components listed in the command bar */\n registerSearchResultWidget = (...items: ComponentResultPlugin[]) => {\n this.componentSearchResultSlot.register(items);\n const totalPlugins = flatten(this.componentSearchResultSlot.values());\n\n this.componentSearcher.updatePlugins(totalPlugins);\n };\n\n updateComponents = (components: ComponentModel[]) => {\n this.componentSearcher.update(components || []);\n };\n\n static dependencies = [PubsubAspect, CommandBarAspect, ReactRouterAspect];\n\n static runtime = UIRuntime;\n\n static slots = [\n Slot.withType<RouteProps>(),\n Slot.withType<NavPlugin>(),\n Slot.withType<NavigationSlot>(),\n Slot.withType<ConsumeMethodSlot>(),\n Slot.withType<MenuItemSlot>(),\n Slot.withType<ComponentPageSlot>(),\n Slot.withType<ComponentSearchResultSlot>(),\n ];\n\n static async provider(\n [pubsub, commandBarUI, reactRouterUI]: [PubsubUI, CommandBarUI, ReactRouterUI],\n config,\n [routeSlot, navSlot, consumeMethodSlot, widgetSlot, menuItemSlot, pageSlot, componentSearchResultSlot]: [\n RouteSlot,\n OrderedNavigationSlot,\n ConsumeMethodSlot,\n OrderedNavigationSlot,\n MenuItemSlot,\n ComponentPageSlot,\n ComponentSearchResultSlot\n ]\n ) {\n // TODO: refactor ComponentHost to a separate extension (including sidebar, host, graphql, etc.)\n // TODO: add contextual hook for ComponentHost @uri/@oded\n const componentUI = new ComponentUI(\n pubsub,\n routeSlot,\n navSlot,\n consumeMethodSlot,\n widgetSlot,\n menuItemSlot,\n pageSlot,\n componentSearchResultSlot,\n commandBarUI,\n reactRouterUI\n );\n const aspectSection = new AspectSection();\n // @ts-ignore\n componentUI.registerSearchResultWidget({ key: 'deprecation', end: DeprecationIcon });\n\n if (componentUI.commandBarUI) {\n componentUI.commandBarUI.addCommand(...componentUI.keyBindings);\n commandBarUI.addSearcher(componentUI.componentSearcher);\n }\n\n componentUI.registerMenuItem(componentUI.menuItems);\n componentUI.registerRoute(aspectSection.route);\n componentUI.registerWidget(aspectSection.navigationLink, aspectSection.order);\n componentUI.registerConsumeMethod(componentUI.bitMethod);\n return componentUI;\n }\n}\n\nexport default ComponentUI;\n\nComponentAspect.addRuntime(ComponentUI);\n"],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,11 +1,8 @@
1
- import { Compilers, Testers } from '@teambit/legacy/dist/consumer/config/abstract-config';
2
1
  import { ComponentOverridesData } from '@teambit/legacy/dist/consumer/config/component-overrides';
3
2
  import { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';
4
3
  import { PathLinux } from '@teambit/legacy/dist/utils/path';
5
4
  declare type LegacyConfigProps = {
6
5
  lang?: string;
7
- compiler?: string | Compilers;
8
- tester?: string | Testers;
9
6
  bindingPrefix: string;
10
7
  extensions?: ExtensionDataList;
11
8
  overrides?: ComponentOverridesData;
@@ -1 +1 @@
1
- {"version":3,"names":["Config","constructor","main","extensions","legacyProperties"],"sources":["config.ts"],"sourcesContent":["import { Compilers, Testers } from '@teambit/legacy/dist/consumer/config/abstract-config';\nimport { ComponentOverridesData } from '@teambit/legacy/dist/consumer/config/component-overrides';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport { PathLinux } from '@teambit/legacy/dist/utils/path';\n// import { CustomResolvedPath } from '@teambit/legacy/dist/consumer/component/consumer-component';\n// import { ComponentOverridesData } from '@teambit/legacy/dist/consumer/config/component-overrides';\n\ntype LegacyConfigProps = {\n lang?: string;\n compiler?: string | Compilers;\n tester?: string | Testers;\n bindingPrefix: string;\n extensions?: ExtensionDataList;\n overrides?: ComponentOverridesData;\n};\n\n/**\n * in-memory representation of the component configuration.\n */\nexport default class Config {\n constructor(\n /**\n * version main file\n */\n readonly main: PathLinux,\n\n /**\n * configured extensions\n */\n readonly extensions: ExtensionDataList,\n\n readonly legacyProperties?: LegacyConfigProps\n ) {}\n}\n"],"mappings":";;;;;;;AAIA;AACA;;AAWA;AACA;AACA;AACe,MAAMA,MAAN,CAAa;EAC1BC,WAAW;EACT;AACJ;AACA;EACaC,IAJA;EAMT;AACJ;AACA;EACaC,UATA,EAWAC,gBAXA,EAYT;IAAA,KARSF,IAQT,GARSA,IAQT;IAAA,KAHSC,UAGT,GAHSA,UAGT;IAAA,KADSC,gBACT,GADSA,gBACT;EAAE;;AAbsB"}
1
+ {"version":3,"names":["Config","constructor","main","extensions","legacyProperties"],"sources":["config.ts"],"sourcesContent":["import { ComponentOverridesData } from '@teambit/legacy/dist/consumer/config/component-overrides';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport { PathLinux } from '@teambit/legacy/dist/utils/path';\n// import { CustomResolvedPath } from '@teambit/legacy/dist/consumer/component/consumer-component';\n// import { ComponentOverridesData } from '@teambit/legacy/dist/consumer/config/component-overrides';\n\ntype LegacyConfigProps = {\n lang?: string;\n bindingPrefix: string;\n extensions?: ExtensionDataList;\n overrides?: ComponentOverridesData;\n};\n\n/**\n * in-memory representation of the component configuration.\n */\nexport default class Config {\n constructor(\n /**\n * version main file\n */\n readonly main: PathLinux,\n\n /**\n * configured extensions\n */\n readonly extensions: ExtensionDataList,\n\n readonly legacyProperties?: LegacyConfigProps\n ) {}\n}\n"],"mappings":";;;;;;;AAGA;AACA;;AASA;AACA;AACA;AACe,MAAMA,MAAN,CAAa;EAC1BC,WAAW;EACT;AACJ;AACA;EACaC,IAJA;EAMT;AACJ;AACA;EACaC,UATA,EAWAC,gBAXA,EAYT;IAAA,KARSF,IAQT,GARSA,IAQT;IAAA,KAHSC,UAGT,GAHSA,UAGT;IAAA,KADSC,gBACT,GADSA,gBACT;EAAE;;AAbsB"}
@@ -0,0 +1,5 @@
1
+ import type { UseComponentType } from './ui/use-component';
2
+ export declare type GetComponentsOptions = {
3
+ useComponent?: UseComponentType;
4
+ componentId?: string;
5
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ //# sourceMappingURL=get-component-opts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["get-component-opts.ts"],"sourcesContent":["import type { UseComponentType } from './ui/use-component';\n\nexport type GetComponentsOptions = {\n useComponent?: UseComponentType,\n componentId?: string,\n};\n"],"mappings":""}