@teambit/component 0.0.651 → 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-1645365357220.js → __preview-1645586567752.js} +1 -1
- package/component.ui.runtime.tsx +2 -1
- package/dist/component.js +1 -1
- package/dist/component.js.map +1 -1
- package/dist/component.route.js.map +1 -1
- package/dist/component.ui.runtime.d.ts +1 -1
- package/dist/component.ui.runtime.js +3 -2
- package/dist/component.ui.runtime.js.map +1 -1
- package/dist/ui/component-model/component-model.js.map +1 -1
- package/dist/ui/index.d.ts +1 -0
- package/dist/ui/index.js +16 -0
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/menu/menu.js +22 -8
- package/dist/ui/menu/menu.js.map +1 -1
- package/dist/ui/menu/nav-plugin.d.ts +5 -1
- package/dist/ui/use-component-query.js +2 -2
- package/dist/ui/use-component-query.js.map +1 -1
- package/package-tar/teambit-component-0.0.654.tgz +0 -0
- package/package.json +20 -19
- package/ui/component-model/component-model.ts +1 -1
- package/ui/index.ts +1 -0
- package/ui/menu/menu.tsx +20 -11
- package/ui/menu/nav-plugin.tsx +8 -1
- package/ui/use-component-query.ts +2 -2
- package/package-tar/teambit-component-0.0.651.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_component@0.0.
|
|
1
|
+
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_component@0.0.654/dist/component.docs.mdx')]
|
package/component.ui.runtime.tsx
CHANGED
|
@@ -118,7 +118,7 @@ export class ComponentUI {
|
|
|
118
118
|
},
|
|
119
119
|
];
|
|
120
120
|
|
|
121
|
-
private bitMethod: ConsumePlugin = (comp) => {
|
|
121
|
+
private bitMethod: ConsumePlugin = (comp, options) => {
|
|
122
122
|
const version = comp.version === comp.latest ? '' : `@${comp.version}`;
|
|
123
123
|
return {
|
|
124
124
|
Title: <img style={{ width: '20px' }} src="https://static.bit.dev/brands/bit-logo-text.svg" />,
|
|
@@ -127,6 +127,7 @@ export class ComponentUI {
|
|
|
127
127
|
componentId={`${comp.id.toString({ ignoreVersion: true })}${version}`}
|
|
128
128
|
packageName={`${comp.packageName}${version}`}
|
|
129
129
|
componentName={comp.id.name}
|
|
130
|
+
showInstallMethod={!options?.currentLane}
|
|
130
131
|
/>
|
|
131
132
|
),
|
|
132
133
|
order: 0,
|
package/dist/component.js
CHANGED
package/dist/component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["component.ts"],"names":["Component","constructor","id","head","_state","tags","TagMap","factory","mainFile","state","config","filesystem","buildStatus","_consumer","headTag","undefined","byHash","hash","latest","getLatest","err","CouldNotFindLatest","toString","stringify","JSON","displayName","tokens","name","split","map","token","join","tag","version","isModified","Promise","resolve","isOutdated","latestTag","byVersion","isNew","loadState","snapId","getState","loadSnap","snapToGet","BitError","getSnap","snapsIterable","options","snapToStart","nextSnaps","done","iterator","next","value","currSnapId","shift","snap","parents","length","firstParentOnly","push","concat","stopFn","Symbol","asyncIterator","getClosestTag","snapToStartFrom","tagsHashMap","getHashMap","has","iterable","snaps","hashOfLastSnap","get","checkout","write","path","fs","equals","component"],"mappings":"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","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 { 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.toString();\n }\n throw err;\n }\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 if (!this.head) return Promise.resolve(true);\n return Promise.resolve(this.state.isModified);\n // return Promise.resolve(this.state.hash !== this.head.hash);\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"]}
|
|
1
|
+
{"version":3,"sources":["component.ts"],"names":["Component","constructor","id","head","_state","tags","TagMap","factory","mainFile","state","config","filesystem","buildStatus","_consumer","headTag","undefined","byHash","hash","latest","getLatest","err","CouldNotFindLatest","stringify","JSON","displayName","tokens","name","split","map","token","join","tag","version","isModified","Promise","resolve","isOutdated","latestTag","byVersion","isNew","loadState","snapId","getState","loadSnap","snapToGet","BitError","getSnap","snapsIterable","options","snapToStart","nextSnaps","done","iterator","next","value","currSnapId","shift","snap","parents","length","firstParentOnly","push","concat","stopFn","Symbol","asyncIterator","getClosestTag","snapToStartFrom","tagsHashMap","getHashMap","has","iterable","snaps","hashOfLastSnap","get","checkout","write","path","fs","equals","component","toString"],"mappings":"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","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 { 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 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 if (!this.head) return Promise.resolve(true);\n return Promise.resolve(this.state.isModified);\n // return Promise.resolve(this.state.hash !== this.head.hash);\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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["component.route.ts"],"names":["ComponentRoute","constructor","registerRoute","componentExtension","dynamicRouteRegex","route","method","componentMiddlewares","concat","middlewares","req","res","next","resolveComponent","componentId","params","host","getHost","compId","resolveComponentId","component","get"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAYO,MAAMA,cAAN,CAAsC;AAC3CC,EAAAA,WAAW,CAASC,aAAT,EAA0DC,kBAA1D,EAA6F;AAAA,SAApFD,aAAoF,GAApFA,aAAoF;AAAA,SAAnCC,kBAAmC,GAAnCA,kBAAmC;AAAA,+DACpF,gBADoF;AAAA,mDAEtF,iBAAgB,KAAKC,iBAAkB,YAAW,KAAKF,aAAL,CAAmBG,KAAM,EAFW;AAAA,oDAqB/F,KAAKH,aAAL,CAAmBI,MArB4E;AAAA,yDAuB1F,KAAKC,oBAAL,CAA0BC,MAA1B,CAAiC,KAAKN,aAAL,CAAmBO,WAApD,CAvB0F;AAAE;;AAIlF,MAApBF,oBAAoB,GAAG;AACzB,WAAO,CACL,OAAOG,GAAP,EAAyCC,GAAzC,EAAwDC,IAAxD,KAA+E;AAAA;;AAC7E,YAAMC,gBAAgB,4BAAG,KAAKX,aAAL,CAAmBW,gBAAtB,yEAA0C,IAAhE;;AACA,UAAIA,gBAAJ,
|
|
1
|
+
{"version":3,"sources":["component.route.ts"],"names":["ComponentRoute","constructor","registerRoute","componentExtension","dynamicRouteRegex","route","method","componentMiddlewares","concat","middlewares","req","res","next","resolveComponent","componentId","params","host","getHost","compId","resolveComponentId","component","get"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAYO,MAAMA,cAAN,CAAsC;AAC3CC,EAAAA,WAAW,CAASC,aAAT,EAA0DC,kBAA1D,EAA6F;AAAA,SAApFD,aAAoF,GAApFA,aAAoF;AAAA,SAAnCC,kBAAmC,GAAnCA,kBAAmC;AAAA,+DACpF,gBADoF;AAAA,mDAEtF,iBAAgB,KAAKC,iBAAkB,YAAW,KAAKF,aAAL,CAAmBG,KAAM,EAFW;AAAA,oDAqB/F,KAAKH,aAAL,CAAmBI,MArB4E;AAAA,yDAuB1F,KAAKC,oBAAL,CAA0BC,MAA1B,CAAiC,KAAKN,aAAL,CAAmBO,WAApD,CAvB0F;AAAE;;AAIlF,MAApBF,oBAAoB,GAAG;AACzB,WAAO,CACL,OAAOG,GAAP,EAAyCC,GAAzC,EAAwDC,IAAxD,KAA+E;AAAA;;AAC7E,YAAMC,gBAAgB,4BAAG,KAAKX,aAAL,CAAmBW,gBAAtB,yEAA0C,IAAhE;;AACA,UAAIA,gBAAJ,EAAsB;AACpB,cAAM;AAAEC,UAAAA;AAAF,YAAkBJ,GAAG,CAACK,MAA5B;AACA,cAAMC,IAAI,GAAG,KAAKb,kBAAL,CAAwBc,OAAxB,EAAb;AACA,cAAMC,MAAM,GAAG,MAAMF,IAAI,CAACG,kBAAL,CAAwBL,WAAxB,CAArB;AACA,cAAMM,SAAS,GAAG,MAAMJ,IAAI,CAACK,GAAL,CAASH,MAAT,CAAxB,CAJoB,CAKpB;;AACAR,QAAAA,GAAG,CAACU,SAAJ,GAAgBA,SAAhB;AACD;;AACDR,MAAAA,IAAI;AACL,KAZI,CAAP;AAcD;;AApB0C","sourcesContent":["import { NextFunction, Request, Response, Route } from '@teambit/express';\n\nimport { ComponentMain } from './component.main.runtime';\n\nexport type RegisteredComponentRoute = Route & {\n resolveComponent?: boolean;\n};\n\nexport type ComponentUrlParams = {\n componentId: string;\n};\n\nexport class ComponentRoute implements Route {\n constructor(private registerRoute: RegisteredComponentRoute, private componentExtension: ComponentMain) {}\n dynamicRouteRegex = '/?[^/@]+/[^~]*';\n readonly route = `/:componentId(${this.dynamicRouteRegex})/~aspect${this.registerRoute.route}`;\n\n get componentMiddlewares() {\n return [\n async (req: Request<ComponentUrlParams>, res: Response, next: NextFunction) => {\n const resolveComponent = this.registerRoute.resolveComponent ?? true;\n if (resolveComponent) {\n const { componentId } = req.params;\n const host = this.componentExtension.getHost();\n const compId = await host.resolveComponentId(componentId);\n const component = await host.get(compId);\n // @ts-ignore\n req.component = component;\n }\n next();\n },\n ];\n }\n\n method = this.registerRoute.method;\n // @ts-ignore\n middlewares = this.componentMiddlewares.concat(this.registerRoute.middlewares);\n}\n"]}
|
|
@@ -66,7 +66,7 @@ export declare class ComponentUI {
|
|
|
66
66
|
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
|
67
67
|
static slots: (((registerFn: () => string) => import("@teambit/harmony").SlotRegistry<RouteProps<string, {
|
|
68
68
|
[x: string]: string | undefined;
|
|
69
|
-
}>>) | ((registerFn: () => string) => import("@teambit/harmony").SlotRegistry<MenuItemSlot>) | ((registerFn: () => string) => import("@teambit/harmony").SlotRegistry<
|
|
69
|
+
}>>) | ((registerFn: () => string) => import("@teambit/harmony").SlotRegistry<MenuItemSlot>) | ((registerFn: () => string) => import("@teambit/harmony").SlotRegistry<NavigationSlot>) | ((registerFn: () => string) => import("@teambit/harmony").SlotRegistry<NavPlugin>) | ((registerFn: () => string) => import("@teambit/harmony").SlotRegistry<ConsumeMethodSlot>) | ((registerFn: () => string) => import("@teambit/harmony").SlotRegistry<ComponentPageSlot>))[];
|
|
70
70
|
static provider([pubsub, commandBarUI]: [PubsubUI, CommandBarUI], config: any, [routeSlot, navSlot, consumeMethodSlot, widgetSlot, menuItemSlot, pageSlot]: [
|
|
71
71
|
RouteSlot,
|
|
72
72
|
OrderedNavigationSlot,
|
|
@@ -245,7 +245,7 @@ class ComponentUI {
|
|
|
245
245
|
return (_this$commandBarUI4 = this.commandBarUI) === null || _this$commandBarUI4 === void 0 ? void 0 : _this$commandBarUI4.run('component.copyNpmId');
|
|
246
246
|
}
|
|
247
247
|
}]);
|
|
248
|
-
(0, _defineProperty2().default)(this, "bitMethod", comp => {
|
|
248
|
+
(0, _defineProperty2().default)(this, "bitMethod", (comp, options) => {
|
|
249
249
|
const version = comp.version === comp.latest ? '' : `@${comp.version}`;
|
|
250
250
|
return {
|
|
251
251
|
Title: /*#__PURE__*/_react().default.createElement("img", {
|
|
@@ -259,7 +259,8 @@ class ComponentUI {
|
|
|
259
259
|
ignoreVersion: true
|
|
260
260
|
})}${version}`,
|
|
261
261
|
packageName: `${comp.packageName}${version}`,
|
|
262
|
-
componentName: comp.id.name
|
|
262
|
+
componentName: comp.id.name,
|
|
263
|
+
showInstallMethod: !(options !== null && options !== void 0 && options.currentLane)
|
|
263
264
|
}),
|
|
264
265
|
order: 0
|
|
265
266
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["component.ui.runtime.tsx"],"names":["componentIdUrlRegex","ComponentUI","constructor","pubsub","routeSlot","navSlot","consumeMethodSlot","widgetSlot","menuItemSlot","pageItemSlot","commandBarUI","packageName","activeComponent","version","id","versionString","handler","toString","displayName","keybinding","copyNpmId","category","title","keyChar","run","comp","latest","Title","width","Component","ignoreVersion","name","order","menuItems","register","items","isBrowser","registerPubSub","sub","PreviewAspect","be","type","ClickInsideAnIframeEvent","TYPE","event","MouseEvent","view","window","bubbles","cancelable","body","document","dispatchEvent","getComponentUI","host","handleComponentChange","getMenu","registerRoute","route","registerNavigation","nav","props","registerConsumeMethod","consumeMethods","registerWidget","widget","provider","config","pageSlot","componentUI","section","AspectSection","addCommand","keyBindings","registerMenuItem","navigationLink","bitMethod","PubsubAspect","CommandBarAspect","UIRuntime","Slot","withType","ComponentAspect","addRuntime"],"mappings":"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","sourcesContent":["import PubsubAspect, { PubsubUI, BitBaseEvent } from '@teambit/pubsub';\nimport PreviewAspect, { ClickInsideAnIframeEvent } from '@teambit/preview';\nimport { MenuItemSlot, MenuItem } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { Slot } from '@teambit/harmony';\nimport { NavigationSlot, RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { NavLinkProps } from '@teambit/base-ui.routing.nav-link';\nimport { UIRuntime } from '@teambit/ui';\nimport { isBrowser } from '@teambit/ui-foundation.ui.is-browser';\nimport React from 'react';\nimport { Import } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { RouteProps } from 'react-router-dom';\nimport CommandBarAspect, { CommandBarUI, CommandEntry } from '@teambit/command-bar';\nimport copy from 'copy-to-clipboard';\nimport { ComponentAspect } from './component.aspect';\nimport { Component, ComponentPageElement, ComponentPageSlot } from './ui/component';\nimport { Menu, NavPlugin, OrderedNavigationSlot, ConsumeMethodSlot, ConsumePlugin } from './ui/menu';\nimport { AspectSection } from './aspect.section';\nimport { ComponentModel } from './ui';\n\nexport type Server = {\n env: string;\n url: string;\n};\n\nexport type ComponentMeta = {\n id: string;\n};\n\nexport const componentIdUrlRegex = '[\\\\w\\\\/-]*[\\\\w-]';\n\nexport class ComponentUI {\n readonly routePath = `/:componentId(${componentIdUrlRegex})`;\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 commandBarUI: CommandBarUI\n ) {\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 handler: () => {\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 handler: 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) => {\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 />\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 <Menu\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(route: RouteProps) {\n this.routeSlot.register(route);\n return this;\n }\n\n registerNavigation(nav: NavLinkProps, 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: NavLinkProps, 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 static dependencies = [PubsubAspect, CommandBarAspect];\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 ];\n\n static async provider(\n [pubsub, commandBarUI]: [PubsubUI, CommandBarUI],\n config,\n [routeSlot, navSlot, consumeMethodSlot, widgetSlot, menuItemSlot, pageSlot]: [\n RouteSlot,\n OrderedNavigationSlot,\n ConsumeMethodSlot,\n OrderedNavigationSlot,\n MenuItemSlot,\n ComponentPageSlot\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 commandBarUI\n );\n const section = new AspectSection();\n\n componentUI.commandBarUI.addCommand(...componentUI.keyBindings);\n componentUI.registerMenuItem(componentUI.menuItems);\n componentUI.registerRoute(section.route);\n componentUI.registerWidget(section.navigationLink, section.order);\n componentUI.registerConsumeMethod(componentUI.bitMethod);\n return componentUI;\n }\n}\n\nexport default ComponentUI;\n\nComponentAspect.addRuntime(ComponentUI);\n"]}
|
|
1
|
+
{"version":3,"sources":["component.ui.runtime.tsx"],"names":["componentIdUrlRegex","ComponentUI","constructor","pubsub","routeSlot","navSlot","consumeMethodSlot","widgetSlot","menuItemSlot","pageItemSlot","commandBarUI","packageName","activeComponent","version","id","versionString","handler","toString","displayName","keybinding","copyNpmId","category","title","keyChar","run","comp","options","latest","Title","width","Component","ignoreVersion","name","currentLane","order","menuItems","register","items","isBrowser","registerPubSub","sub","PreviewAspect","be","type","ClickInsideAnIframeEvent","TYPE","event","MouseEvent","view","window","bubbles","cancelable","body","document","dispatchEvent","getComponentUI","host","handleComponentChange","getMenu","registerRoute","route","registerNavigation","nav","props","registerConsumeMethod","consumeMethods","registerWidget","widget","provider","config","pageSlot","componentUI","section","AspectSection","addCommand","keyBindings","registerMenuItem","navigationLink","bitMethod","PubsubAspect","CommandBarAspect","UIRuntime","Slot","withType","ComponentAspect","addRuntime"],"mappings":"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","sourcesContent":["import PubsubAspect, { PubsubUI, BitBaseEvent } from '@teambit/pubsub';\nimport PreviewAspect, { ClickInsideAnIframeEvent } from '@teambit/preview';\nimport { MenuItemSlot, MenuItem } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { Slot } from '@teambit/harmony';\nimport { NavigationSlot, RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { NavLinkProps } from '@teambit/base-ui.routing.nav-link';\nimport { UIRuntime } from '@teambit/ui';\nimport { isBrowser } from '@teambit/ui-foundation.ui.is-browser';\nimport React from 'react';\nimport { Import } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { RouteProps } from 'react-router-dom';\nimport CommandBarAspect, { CommandBarUI, CommandEntry } from '@teambit/command-bar';\nimport copy from 'copy-to-clipboard';\nimport { ComponentAspect } from './component.aspect';\nimport { Component, ComponentPageElement, ComponentPageSlot } from './ui/component';\nimport { Menu, NavPlugin, OrderedNavigationSlot, ConsumeMethodSlot, ConsumePlugin } from './ui/menu';\nimport { AspectSection } from './aspect.section';\nimport { ComponentModel } from './ui';\n\nexport type Server = {\n env: string;\n url: string;\n};\n\nexport type ComponentMeta = {\n id: string;\n};\n\nexport const componentIdUrlRegex = '[\\\\w\\\\/-]*[\\\\w-]';\n\nexport class ComponentUI {\n readonly routePath = `/:componentId(${componentIdUrlRegex})`;\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 commandBarUI: CommandBarUI\n ) {\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 handler: () => {\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 handler: 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 <Menu\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(route: RouteProps) {\n this.routeSlot.register(route);\n return this;\n }\n\n registerNavigation(nav: NavLinkProps, 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: NavLinkProps, 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 static dependencies = [PubsubAspect, CommandBarAspect];\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 ];\n\n static async provider(\n [pubsub, commandBarUI]: [PubsubUI, CommandBarUI],\n config,\n [routeSlot, navSlot, consumeMethodSlot, widgetSlot, menuItemSlot, pageSlot]: [\n RouteSlot,\n OrderedNavigationSlot,\n ConsumeMethodSlot,\n OrderedNavigationSlot,\n MenuItemSlot,\n ComponentPageSlot\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 commandBarUI\n );\n const section = new AspectSection();\n\n componentUI.commandBarUI.addCommand(...componentUI.keyBindings);\n componentUI.registerMenuItem(componentUI.menuItems);\n componentUI.registerRoute(section.route);\n componentUI.registerWidget(section.navigationLink, section.order);\n componentUI.registerConsumeMethod(componentUI.bitMethod);\n return componentUI;\n }\n}\n\nexport default ComponentUI;\n\nComponentAspect.addRuntime(ComponentUI);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["component-model.ts"],"names":["ComponentModel","constructor","id","displayName","packageName","server","compositions","tags","buildStatus","issuesCount","elementsUrl","status","deprecation","environment","description","labels","host","latest","preview","version","from","env","ComponentID","fromObject","Composition","fromArray","TagMap","map","tag","Tag","componentsProps","rawComponent","empty","name","scope","url"],"mappings":"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","sourcesContent":["import { Composition, CompositionProps } from '@teambit/compositions';\nimport { DeprecationInfo } from '@teambit/deprecation';\nimport { Descriptor } from '@teambit/envs';\nimport { ComponentID, ComponentIdObj } from '@teambit/component-id';\n\nimport { Tag } from '../../tag';\nimport { TagMap } from '../../tag-map';\nimport { TagProps } from '../../tag/tag';\n// import { Snap } from '../../snap';\n\n// ADDING MORE PROPERTIES HERE IS NOT ALLOWED!!! IF YOU NEED DATA PLEASE ADD A NEW\n// HOOK FROM YOUR ASPECT!!!\n// TODO: remove all properties from here to their rightful place in their aspects.\nexport type ComponentModelProps = {\n id: ComponentIdObj;\n description: string;\n buildStatus?: string;\n server?: ComponentServer;\n displayName: string;\n packageName: string; // pkg aspect\n elementsUrl?: string; // pkg aspect\n compositions?: CompositionProps[];\n tags?: TagProps[];\n issuesCount?: number; // component/issues aspect\n status?: any; // workspace aspect.\n deprecation?: DeprecationInfo; // deprecation aspect\n env?: Descriptor; // env aspect.\n labels?: string[];\n host?: string;\n latest?: string;\n preview?: ComponentPreview;\n};\n\nexport type ComponentPreview = {\n includesEnvTemplate?: boolean
|
|
1
|
+
{"version":3,"sources":["component-model.ts"],"names":["ComponentModel","constructor","id","displayName","packageName","server","compositions","tags","buildStatus","issuesCount","elementsUrl","status","deprecation","environment","description","labels","host","latest","preview","version","from","env","ComponentID","fromObject","Composition","fromArray","TagMap","map","tag","Tag","componentsProps","rawComponent","empty","name","scope","url"],"mappings":"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","sourcesContent":["import { Composition, CompositionProps } from '@teambit/compositions';\nimport { DeprecationInfo } from '@teambit/deprecation';\nimport { Descriptor } from '@teambit/envs';\nimport { ComponentID, ComponentIdObj } from '@teambit/component-id';\n\nimport { Tag } from '../../tag';\nimport { TagMap } from '../../tag-map';\nimport { TagProps } from '../../tag/tag';\n// import { Snap } from '../../snap';\n\n// ADDING MORE PROPERTIES HERE IS NOT ALLOWED!!! IF YOU NEED DATA PLEASE ADD A NEW\n// HOOK FROM YOUR ASPECT!!!\n// TODO: remove all properties from here to their rightful place in their aspects.\nexport type ComponentModelProps = {\n id: ComponentIdObj;\n description: string;\n buildStatus?: string;\n server?: ComponentServer;\n displayName: string;\n packageName: string; // pkg aspect\n elementsUrl?: string; // pkg aspect\n compositions?: CompositionProps[];\n tags?: TagProps[];\n issuesCount?: number; // component/issues aspect\n status?: any; // workspace aspect.\n deprecation?: DeprecationInfo; // deprecation aspect\n env?: Descriptor; // env aspect.\n labels?: string[];\n host?: string;\n latest?: string;\n preview?: ComponentPreview;\n};\n\nexport type ComponentPreview = {\n includesEnvTemplate?: boolean;\n};\n\nexport type ComponentServer = {\n env: string;\n url: string;\n};\n\nexport class ComponentModel {\n constructor(\n /**\n * id of the component\n */\n readonly id: ComponentID,\n\n /**\n * display name of the component.\n */\n readonly displayName: string,\n\n /**\n * package name of the component.\n */\n readonly packageName: string,\n\n /**\n * the component server.\n */\n readonly server: ComponentServer | undefined,\n\n /**\n * array of compositions\n */\n readonly compositions: Composition[],\n\n /**\n * tags of the component.\n */\n readonly tags: TagMap,\n\n /**\n * component build status\n */\n readonly buildStatus?: string,\n\n /**\n * issues of component.\n */\n readonly issuesCount?: number,\n /**\n * elements url\n */\n readonly elementsUrl?: string,\n /**\n * status of component.\n */\n readonly status?: any,\n\n /**\n * deprecation info of the component.\n */\n readonly deprecation?: DeprecationInfo,\n\n /**\n * env descriptor.\n */\n readonly environment?: Descriptor,\n\n /**\n * description of the component.\n */\n\n readonly description = '',\n\n readonly labels: string[] = [],\n\n /**\n * host of the component\n */\n readonly host?: string,\n\n /**\n * latest version of component\n */\n readonly latest?: string,\n\n readonly preview?: ComponentPreview\n ) {}\n\n get version() {\n if (!this.id.version) return 'new';\n return this.id.version;\n }\n\n /**\n * create an instance of a component from a plain object.\n */\n static from({\n id,\n server,\n displayName,\n compositions = [],\n packageName,\n elementsUrl,\n tags = [],\n deprecation,\n buildStatus,\n env,\n status,\n issuesCount,\n description,\n labels,\n host,\n latest,\n preview,\n }: ComponentModelProps) {\n return new ComponentModel(\n ComponentID.fromObject(id),\n displayName,\n packageName,\n server,\n Composition.fromArray(compositions),\n TagMap.fromArray(tags.map((tag) => Tag.fromObject(tag))),\n buildStatus,\n issuesCount,\n elementsUrl,\n status,\n deprecation,\n env,\n description,\n labels,\n host,\n latest,\n preview\n );\n }\n\n static fromArray(componentsProps: ComponentModelProps[]) {\n return componentsProps.map((rawComponent) => ComponentModel.from(rawComponent));\n }\n\n static empty() {\n return new ComponentModel(\n ComponentID.fromObject({ name: 'root', scope: 'temp' }),\n '',\n '',\n { env: '', url: '' },\n [],\n TagMap.empty()\n );\n }\n}\n"]}
|
package/dist/ui/index.d.ts
CHANGED
package/dist/ui/index.js
CHANGED
|
@@ -33,6 +33,12 @@ Object.defineProperty(exports, "ComponentProvider", {
|
|
|
33
33
|
return _context().ComponentProvider;
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
|
+
Object.defineProperty(exports, "useComponent", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _useComponent().useComponent;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
36
42
|
|
|
37
43
|
function _component() {
|
|
38
44
|
const data = require("./component");
|
|
@@ -64,4 +70,14 @@ function _context() {
|
|
|
64
70
|
return data;
|
|
65
71
|
}
|
|
66
72
|
|
|
73
|
+
function _useComponent() {
|
|
74
|
+
const data = require("./use-component");
|
|
75
|
+
|
|
76
|
+
_useComponent = function () {
|
|
77
|
+
return data;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
return data;
|
|
81
|
+
}
|
|
82
|
+
|
|
67
83
|
//# sourceMappingURL=index.js.map
|
package/dist/ui/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA","sourcesContent":["export { Component } from './component';\nexport { ComponentModel, ComponentModelProps } from './component-model';\nexport { ComponentContext, ComponentProvider } from './context';\nexport { useComponent } from './use-component';\n"]}
|
package/dist/ui/menu/menu.js
CHANGED
|
@@ -101,6 +101,16 @@ function _uiFoundationUiUseBox2() {
|
|
|
101
101
|
return data;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
+
function _lanesUi() {
|
|
105
|
+
const data = require("@teambit/lanes.ui.lanes");
|
|
106
|
+
|
|
107
|
+
_lanesUi = function () {
|
|
108
|
+
return data;
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
return data;
|
|
112
|
+
}
|
|
113
|
+
|
|
104
114
|
function _useComponent() {
|
|
105
115
|
const data = require("../use-component");
|
|
106
116
|
|
|
@@ -179,20 +189,22 @@ function VersionRelatedDropdowns({
|
|
|
179
189
|
}) {
|
|
180
190
|
const location = (0, _baseUiRouting().useLocation)();
|
|
181
191
|
const isNew = component.tags.isEmpty();
|
|
192
|
+
const lanesContext = (0, _lanesUi().useLanesContext)();
|
|
193
|
+
const currentLane = lanesContext === null || lanesContext === void 0 ? void 0 : lanesContext.currentLane;
|
|
182
194
|
const isWorkspace = host === 'teambit.workspace/workspace';
|
|
183
195
|
const versionList = (0, _react().useMemo)(() => {
|
|
184
196
|
var _component$tags;
|
|
185
197
|
|
|
186
|
-
const tagsArray = (_component$tags = component.tags) === null || _component$tags === void 0 ? void 0 : _component$tags.toArray().map(tag => {
|
|
198
|
+
const tagsArray = !currentLane ? (_component$tags = component.tags) === null || _component$tags === void 0 ? void 0 : _component$tags.toArray().map(tag => {
|
|
187
199
|
var _tag$version;
|
|
188
200
|
|
|
189
201
|
return tag === null || tag === void 0 ? void 0 : (_tag$version = tag.version) === null || _tag$version === void 0 ? void 0 : _tag$version.version;
|
|
190
|
-
}).filter(x => x !== undefined).reverse();
|
|
191
|
-
const wsLink = [isWorkspace && !isNew ? 'workspace' : undefined];
|
|
202
|
+
}).filter(x => x !== undefined).reverse() : [component.id.version];
|
|
203
|
+
const wsLink = [isWorkspace && !isNew && !currentLane ? 'workspace' : undefined];
|
|
192
204
|
return (0, _lodash().compact)([...wsLink, ...tagsArray]);
|
|
193
|
-
}, [component.tags, isWorkspace, isNew]);
|
|
205
|
+
}, [component.tags, isWorkspace, isNew, currentLane]);
|
|
194
206
|
const currentVersion = isWorkspace && !isNew && !location.search.includes('version') ? 'workspace' : component.version;
|
|
195
|
-
const methods = useConsumeMethods(consumeMethods, component);
|
|
207
|
+
const methods = useConsumeMethods(consumeMethods, component, currentLane);
|
|
196
208
|
return /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, versionList.length > 0 && /*#__PURE__*/_react().default.createElement(_uiFoundationUiUseBox().UseBoxDropdown, {
|
|
197
209
|
position: "bottom-end",
|
|
198
210
|
className: _menuModule().default.useBox,
|
|
@@ -207,10 +219,12 @@ function VersionRelatedDropdowns({
|
|
|
207
219
|
}));
|
|
208
220
|
}
|
|
209
221
|
|
|
210
|
-
function useConsumeMethods(consumeMethods, componentModel) {
|
|
222
|
+
function useConsumeMethods(consumeMethods, componentModel, currentLane) {
|
|
211
223
|
return (0, _react().useMemo)(() => (0, _lodash().flatten)(consumeMethods.values()).map(method => {
|
|
212
|
-
return method === null || method === void 0 ? void 0 : method(componentModel
|
|
213
|
-
|
|
224
|
+
return method === null || method === void 0 ? void 0 : method(componentModel, {
|
|
225
|
+
currentLane
|
|
226
|
+
});
|
|
227
|
+
}).filter(x => !!x && x.Component && x.Title), [consumeMethods, componentModel, currentLane]);
|
|
214
228
|
}
|
|
215
229
|
|
|
216
230
|
//# sourceMappingURL=menu.js.map
|
package/dist/ui/menu/menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["menu.tsx"],"names":["Menu","navigationSlot","widgetSlot","className","host","menuItemSlot","consumeMethodSlot","component","mainMenuItems","values","styles","topBar","leftSide","rightSide","widgets","VersionRelatedDropdowns","consumeMethods","location","isNew","tags","isEmpty","isWorkspace","versionList","tagsArray","toArray","map","tag","version","filter","x","undefined","reverse","wsLink","currentVersion","search","includes","methods","useConsumeMethods","length","useBox","
|
|
1
|
+
{"version":3,"sources":["menu.tsx"],"names":["Menu","navigationSlot","widgetSlot","className","host","menuItemSlot","consumeMethodSlot","component","mainMenuItems","values","styles","topBar","leftSide","rightSide","widgets","VersionRelatedDropdowns","consumeMethods","location","isNew","tags","isEmpty","lanesContext","currentLane","isWorkspace","versionList","tagsArray","toArray","map","tag","version","filter","x","undefined","reverse","id","wsLink","currentVersion","search","includes","methods","useConsumeMethods","length","useBox","name","latest","componentModel","method","Component","Title"],"mappings":"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","sourcesContent":["import { MainDropdown, MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { VersionDropdown } from '@teambit/component.ui.version-dropdown';\nimport { FullLoader } from '@teambit/legacy/dist/to-eject/full-loader';\nimport type { ConsumeMethod } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { useLocation } from '@teambit/base-ui.routing.routing-provider';\nimport { compact, flatten, groupBy } from 'lodash';\nimport classnames from 'classnames';\nimport React, { useMemo } from 'react';\nimport { UseBoxDropdown } from '@teambit/ui-foundation.ui.use-box.dropdown';\nimport { Menu as ConsumeMethodsMenu } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { LaneModel, useLanesContext } from '@teambit/lanes.ui.lanes';\nimport type { ComponentModel } from '../component-model';\nimport { useComponent } from '../use-component';\nimport { MenuNav } from './menu-nav';\nimport styles from './menu.module.scss';\nimport { OrderedNavigationSlot, ConsumeMethodSlot } from './nav-plugin';\n\nexport type MenuProps = {\n className?: string;\n /**\n * slot for top bar menu nav items\n */\n navigationSlot: OrderedNavigationSlot;\n /**\n * right side menu item slot\n */\n widgetSlot: OrderedNavigationSlot;\n host: string;\n /**\n * main dropdown item slot\n */\n menuItemSlot: MenuItemSlot;\n\n consumeMethodSlot: ConsumeMethodSlot;\n};\n\n/**\n * top bar menu.\n */\nexport function Menu({ navigationSlot, widgetSlot, className, host, menuItemSlot, consumeMethodSlot }: MenuProps) {\n const { component } = useComponent(host);\n const mainMenuItems = useMemo(() => groupBy(flatten(menuItemSlot.values()), 'category'), [menuItemSlot]);\n if (!component) return <FullLoader />;\n return (\n <div className={classnames(styles.topBar, className)}>\n <div className={styles.leftSide}>\n <MenuNav navigationSlot={navigationSlot} />\n </div>\n <div className={styles.rightSide}>\n <div className={styles.widgets}>\n <MenuNav navigationSlot={widgetSlot} />\n </div>\n <VersionRelatedDropdowns component={component} consumeMethods={consumeMethodSlot} host={host} />\n <MainDropdown menuItems={mainMenuItems} />\n </div>\n </div>\n );\n}\n\nfunction VersionRelatedDropdowns({\n component,\n consumeMethods,\n host,\n}: {\n component: ComponentModel;\n consumeMethods: ConsumeMethodSlot;\n host: string;\n}) {\n const location = useLocation();\n const isNew = component.tags.isEmpty();\n const lanesContext = useLanesContext();\n const currentLane = lanesContext?.currentLane;\n\n const isWorkspace = host === 'teambit.workspace/workspace';\n const versionList = useMemo(() => {\n const tagsArray = !currentLane\n ? component.tags\n ?.toArray()\n .map((tag) => tag?.version?.version)\n .filter((x) => x !== undefined)\n .reverse()\n : [component.id.version];\n const wsLink = [isWorkspace && !isNew && !currentLane ? 'workspace' : undefined];\n\n return compact([...wsLink, ...tagsArray]);\n }, [component.tags, isWorkspace, isNew, currentLane]);\n\n const currentVersion =\n isWorkspace && !isNew && !location.search.includes('version') ? 'workspace' : component.version;\n\n const methods = useConsumeMethods(consumeMethods, component, currentLane);\n return (\n <>\n {versionList.length > 0 && (\n <UseBoxDropdown\n position=\"bottom-end\"\n className={styles.useBox}\n Menu={<ConsumeMethodsMenu methods={methods} componentName={component.id.name} />}\n />\n )}\n <VersionDropdown versions={versionList} currentVersion={currentVersion} latestVersion={component.latest} />\n </>\n );\n}\n\nfunction useConsumeMethods(\n consumeMethods: ConsumeMethodSlot,\n componentModel: ComponentModel,\n currentLane?: LaneModel\n): ConsumeMethod[] {\n return useMemo(\n () =>\n flatten(consumeMethods.values())\n .map((method) => {\n return method?.(componentModel, { currentLane });\n })\n .filter((x) => !!x && x.Component && x.Title) as ConsumeMethod[],\n [consumeMethods, componentModel, currentLane]\n );\n}\n"]}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { SlotRegistry } from '@teambit/harmony';
|
|
2
2
|
import { NavLinkProps } from '@teambit/base-ui.routing.nav-link';
|
|
3
3
|
import type { ConsumeMethod } from '@teambit/ui-foundation.ui.use-box.menu';
|
|
4
|
+
import { LaneModel } from '@teambit/lanes.ui.lanes';
|
|
4
5
|
import { ComponentModel } from '../../ui';
|
|
5
6
|
export declare type NavPlugin = {
|
|
6
7
|
props: NavLinkProps;
|
|
7
8
|
order?: number;
|
|
8
9
|
};
|
|
9
10
|
export declare type OrderedNavigationSlot = SlotRegistry<NavPlugin>;
|
|
10
|
-
export declare type
|
|
11
|
+
export declare type ConsumePluginOptions = {
|
|
12
|
+
currentLane?: LaneModel;
|
|
13
|
+
};
|
|
14
|
+
export declare type ConsumePlugin = (componentModel: ComponentModel, options?: ConsumePluginOptions) => ConsumeMethod | undefined;
|
|
11
15
|
export declare type ConsumeMethodSlot = SlotRegistry<ConsumePlugin[]>;
|
|
@@ -288,10 +288,10 @@ function useComponentQuery(componentId, host) {
|
|
|
288
288
|
}))
|
|
289
289
|
};
|
|
290
290
|
|
|
291
|
-
const id = _componentId().ComponentID.fromObject(rawComponent.id);
|
|
291
|
+
const id = rawComponent && _componentId().ComponentID.fromObject(rawComponent.id);
|
|
292
292
|
|
|
293
293
|
return {
|
|
294
|
-
componentDescriptor:
|
|
294
|
+
componentDescriptor: id ? _componentDescriptor().ComponentDescriptor.fromObject({
|
|
295
295
|
id: id.toString(),
|
|
296
296
|
aspectList
|
|
297
297
|
}) : undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["use-component-query.ts"],"names":["componentIdFields","componentFields","GET_COMPONENT","SUB_SUBSCRIPTION_ADDED","SUB_COMPONENT_CHANGED","SUB_COMPONENT_REMOVED","useComponentQuery","componentId","host","idRef","current","data","error","loading","subscribeToMore","variables","id","extensionId","unsubAddition","document","updateQuery","prev","subscriptionData","prevComponent","getHost","get","addedComponent","componentAdded","component","name","unsubChanges","updatedComponent","componentChanged","isUpdated","ComponentID","isEqualObj","unsubRemoval","removedIds","componentRemoved","componentIds","length","isRemoved","some","removedId","rawComponent","aspectList","entries","aspects","map","aspect","aspectId","aspectData","fromObject","componentDescriptor","ComponentDescriptor","toString","undefined","ComponentModel","from","ComponentError","message"],"mappings":"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","sourcesContent":["import { useMemo, useEffect, useRef } from 'react';\nimport { gql } from '@apollo/client';\nimport { useDataQuery } from '@teambit/ui-foundation.ui.hooks.use-data-query';\nimport { ComponentID, ComponentIdObj } from '@teambit/component-id';\nimport { ComponentDescriptor } from '@teambit/component-descriptor';\n\nimport { ComponentModel } from './component-model';\nimport { ComponentError } from './component-error';\n\nconst componentIdFields = gql`\n fragment componentIdFields on ComponentID {\n name\n version\n scope\n }\n`;\n\nconst componentFields = gql`\n fragment componentFields on Component {\n id {\n ...componentIdFields\n }\n aspects(include: [\"teambit.preview/preview\"]) {\n id\n data\n }\n packageName\n elementsUrl\n description\n labels\n displayName\n latest\n server {\n env\n url\n }\n buildStatus\n compositions {\n identifier\n displayName\n }\n tags {\n version\n }\n env {\n id\n icon\n }\n\n preview {\n includesEnvTemplate\n }\n }\n ${componentIdFields}\n`;\n\nconst GET_COMPONENT = gql`\n query Component($id: String!, $extensionId: String!) {\n getHost(id: $extensionId) {\n id # used for GQL caching\n get(id: $id) {\n ...componentFields\n }\n }\n }\n ${componentFields}\n`;\n\nconst SUB_SUBSCRIPTION_ADDED = gql`\n subscription OnComponentAdded {\n componentAdded {\n component {\n ...componentFields\n }\n }\n }\n ${componentFields}\n`;\n\nconst SUB_COMPONENT_CHANGED = gql`\n subscription OnComponentChanged {\n componentChanged {\n component {\n ...componentFields\n }\n }\n }\n ${componentFields}\n`;\n\nconst SUB_COMPONENT_REMOVED = gql`\n subscription OnComponentRemoved {\n componentRemoved {\n componentIds {\n ...componentIdFields\n }\n }\n }\n ${componentIdFields}\n`;\n\n/** provides data to component ui page, making sure both variables and return value are safely typed and memoized */\nexport function useComponentQuery(componentId: string, host: string) {\n const idRef = useRef(componentId);\n idRef.current = componentId;\n const { data, error, loading, subscribeToMore } = useDataQuery(GET_COMPONENT, {\n variables: { id: componentId, extensionId: host },\n });\n\n useEffect(() => {\n // @TODO @Kutner fix subscription for scope\n if (host !== 'teambit.workspace/workspace') {\n return () => {};\n }\n\n const unsubAddition = subscribeToMore({\n document: SUB_SUBSCRIPTION_ADDED,\n updateQuery: (prev, { subscriptionData }) => {\n const prevComponent = prev?.getHost?.get;\n const addedComponent = subscriptionData?.data?.componentAdded?.component;\n\n if (!addedComponent || prevComponent) return prev;\n\n if (idRef.current === addedComponent.id.name) {\n return {\n ...prev,\n getHost: {\n ...prev.getHost,\n get: addedComponent,\n },\n };\n }\n\n return prev;\n },\n });\n\n const unsubChanges = subscribeToMore({\n document: SUB_COMPONENT_CHANGED,\n updateQuery: (prev, { subscriptionData }) => {\n if (!subscriptionData.data) return prev;\n\n const prevComponent = prev?.getHost?.get;\n const updatedComponent = subscriptionData?.data?.componentChanged?.component;\n\n const isUpdated = updatedComponent && ComponentID.isEqualObj(prevComponent?.id, updatedComponent?.id);\n\n if (isUpdated) {\n return {\n ...prev,\n getHost: {\n ...prev.getHost,\n get: updatedComponent,\n },\n };\n }\n\n return prev;\n },\n });\n\n const unsubRemoval = subscribeToMore({\n document: SUB_COMPONENT_REMOVED,\n updateQuery: (prev, { subscriptionData }) => {\n if (!subscriptionData.data) return prev;\n\n const prevComponent = prev?.getHost?.get;\n const removedIds: ComponentIdObj[] | undefined = subscriptionData?.data?.componentRemoved?.componentIds;\n if (!prevComponent || !removedIds?.length) return prev;\n\n const isRemoved = removedIds.some((removedId) => ComponentID.isEqualObj(removedId, prevComponent.id));\n\n if (isRemoved) {\n return {\n ...prev,\n getHost: {\n ...prev.getHost,\n get: null,\n },\n };\n }\n\n return prev;\n },\n });\n\n return () => {\n unsubChanges();\n unsubAddition();\n unsubRemoval();\n };\n }, []);\n\n const rawComponent = data?.getHost?.get;\n return useMemo(() => {\n const aspectList = {\n entries: rawComponent?.aspects?.map((aspect) => ({ aspectId: aspect.id, aspectData: aspect.data })),\n };\n const id = ComponentID.fromObject(rawComponent.id);\n return {\n componentDescriptor: rawComponent ? ComponentDescriptor.fromObject({ id: id.toString(), aspectList }) : undefined,\n component: rawComponent ? ComponentModel.from({ ...rawComponent, host }) : undefined,\n // eslint-disable-next-line\n error: error\n ? new ComponentError(500, error.message)\n : !rawComponent && !loading\n ? new ComponentError(404)\n : undefined,\n };\n }, [rawComponent, host, error]);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["use-component-query.ts"],"names":["componentIdFields","componentFields","GET_COMPONENT","SUB_SUBSCRIPTION_ADDED","SUB_COMPONENT_CHANGED","SUB_COMPONENT_REMOVED","useComponentQuery","componentId","host","idRef","current","data","error","loading","subscribeToMore","variables","id","extensionId","unsubAddition","document","updateQuery","prev","subscriptionData","prevComponent","getHost","get","addedComponent","componentAdded","component","name","unsubChanges","updatedComponent","componentChanged","isUpdated","ComponentID","isEqualObj","unsubRemoval","removedIds","componentRemoved","componentIds","length","isRemoved","some","removedId","rawComponent","aspectList","entries","aspects","map","aspect","aspectId","aspectData","fromObject","componentDescriptor","ComponentDescriptor","toString","undefined","ComponentModel","from","ComponentError","message"],"mappings":"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","sourcesContent":["import { useMemo, useEffect, useRef } from 'react';\nimport { gql } from '@apollo/client';\nimport { useDataQuery } from '@teambit/ui-foundation.ui.hooks.use-data-query';\nimport { ComponentID, ComponentIdObj } from '@teambit/component-id';\nimport { ComponentDescriptor } from '@teambit/component-descriptor';\n\nimport { ComponentModel } from './component-model';\nimport { ComponentError } from './component-error';\n\nconst componentIdFields = gql`\n fragment componentIdFields on ComponentID {\n name\n version\n scope\n }\n`;\n\nconst componentFields = gql`\n fragment componentFields on Component {\n id {\n ...componentIdFields\n }\n aspects(include: [\"teambit.preview/preview\"]) {\n id\n data\n }\n packageName\n elementsUrl\n description\n labels\n displayName\n latest\n server {\n env\n url\n }\n buildStatus\n compositions {\n identifier\n displayName\n }\n tags {\n version\n }\n env {\n id\n icon\n }\n\n preview {\n includesEnvTemplate\n }\n }\n ${componentIdFields}\n`;\n\nconst GET_COMPONENT = gql`\n query Component($id: String!, $extensionId: String!) {\n getHost(id: $extensionId) {\n id # used for GQL caching\n get(id: $id) {\n ...componentFields\n }\n }\n }\n ${componentFields}\n`;\n\nconst SUB_SUBSCRIPTION_ADDED = gql`\n subscription OnComponentAdded {\n componentAdded {\n component {\n ...componentFields\n }\n }\n }\n ${componentFields}\n`;\n\nconst SUB_COMPONENT_CHANGED = gql`\n subscription OnComponentChanged {\n componentChanged {\n component {\n ...componentFields\n }\n }\n }\n ${componentFields}\n`;\n\nconst SUB_COMPONENT_REMOVED = gql`\n subscription OnComponentRemoved {\n componentRemoved {\n componentIds {\n ...componentIdFields\n }\n }\n }\n ${componentIdFields}\n`;\n\n/** provides data to component ui page, making sure both variables and return value are safely typed and memoized */\nexport function useComponentQuery(componentId: string, host: string) {\n const idRef = useRef(componentId);\n idRef.current = componentId;\n const { data, error, loading, subscribeToMore } = useDataQuery(GET_COMPONENT, {\n variables: { id: componentId, extensionId: host },\n });\n\n useEffect(() => {\n // @TODO @Kutner fix subscription for scope\n if (host !== 'teambit.workspace/workspace') {\n return () => {};\n }\n\n const unsubAddition = subscribeToMore({\n document: SUB_SUBSCRIPTION_ADDED,\n updateQuery: (prev, { subscriptionData }) => {\n const prevComponent = prev?.getHost?.get;\n const addedComponent = subscriptionData?.data?.componentAdded?.component;\n\n if (!addedComponent || prevComponent) return prev;\n\n if (idRef.current === addedComponent.id.name) {\n return {\n ...prev,\n getHost: {\n ...prev.getHost,\n get: addedComponent,\n },\n };\n }\n\n return prev;\n },\n });\n\n const unsubChanges = subscribeToMore({\n document: SUB_COMPONENT_CHANGED,\n updateQuery: (prev, { subscriptionData }) => {\n if (!subscriptionData.data) return prev;\n\n const prevComponent = prev?.getHost?.get;\n const updatedComponent = subscriptionData?.data?.componentChanged?.component;\n\n const isUpdated = updatedComponent && ComponentID.isEqualObj(prevComponent?.id, updatedComponent?.id);\n\n if (isUpdated) {\n return {\n ...prev,\n getHost: {\n ...prev.getHost,\n get: updatedComponent,\n },\n };\n }\n\n return prev;\n },\n });\n\n const unsubRemoval = subscribeToMore({\n document: SUB_COMPONENT_REMOVED,\n updateQuery: (prev, { subscriptionData }) => {\n if (!subscriptionData.data) return prev;\n\n const prevComponent = prev?.getHost?.get;\n const removedIds: ComponentIdObj[] | undefined = subscriptionData?.data?.componentRemoved?.componentIds;\n if (!prevComponent || !removedIds?.length) return prev;\n\n const isRemoved = removedIds.some((removedId) => ComponentID.isEqualObj(removedId, prevComponent.id));\n\n if (isRemoved) {\n return {\n ...prev,\n getHost: {\n ...prev.getHost,\n get: null,\n },\n };\n }\n\n return prev;\n },\n });\n\n return () => {\n unsubChanges();\n unsubAddition();\n unsubRemoval();\n };\n }, []);\n\n const rawComponent = data?.getHost?.get;\n return useMemo(() => {\n const aspectList = {\n entries: rawComponent?.aspects?.map((aspect) => ({ aspectId: aspect.id, aspectData: aspect.data })),\n };\n const id = rawComponent && ComponentID.fromObject(rawComponent.id);\n return {\n componentDescriptor: id ? ComponentDescriptor.fromObject({ id: id.toString(), aspectList }) : undefined,\n component: rawComponent ? ComponentModel.from({ ...rawComponent, host }) : undefined,\n // eslint-disable-next-line\n error: error\n ? new ComponentError(500, error.message)\n : !rawComponent && !loading\n ? new ComponentError(404)\n : undefined,\n };\n }, [rawComponent, host, error]);\n}\n"]}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/component",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.654",
|
|
4
4
|
"homepage": "https://bit.dev/teambit/component/component",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.component",
|
|
8
8
|
"name": "component",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.654"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@teambit/any-fs": "0.0.5",
|
|
@@ -29,36 +29,37 @@
|
|
|
29
29
|
"@teambit/base-ui.routing.routing-provider": "1.0.0",
|
|
30
30
|
"@teambit/component-id": "0.0.401",
|
|
31
31
|
"@teambit/ui-foundation.ui.menu-widget-icon": "0.0.488",
|
|
32
|
-
"@teambit/aspect-loader": "0.0.
|
|
32
|
+
"@teambit/aspect-loader": "0.0.654",
|
|
33
33
|
"@teambit/legacy-bit-id": "0.0.398",
|
|
34
34
|
"@teambit/toolbox.string.capitalize": "0.0.483",
|
|
35
|
-
"@teambit/cli": "0.0.
|
|
36
|
-
"@teambit/config": "0.0.
|
|
37
|
-
"@teambit/express": "0.0.
|
|
38
|
-
"@teambit/graphql": "0.0.
|
|
35
|
+
"@teambit/cli": "0.0.446",
|
|
36
|
+
"@teambit/config": "0.0.459",
|
|
37
|
+
"@teambit/express": "0.0.540",
|
|
38
|
+
"@teambit/graphql": "0.0.654",
|
|
39
39
|
"@teambit/bit-error": "0.0.394",
|
|
40
|
-
"@teambit/command-bar": "0.0.
|
|
41
|
-
"@teambit/preview": "0.0.
|
|
42
|
-
"@teambit/pubsub": "0.0.
|
|
40
|
+
"@teambit/command-bar": "0.0.654",
|
|
41
|
+
"@teambit/preview": "0.0.654",
|
|
42
|
+
"@teambit/pubsub": "0.0.654",
|
|
43
43
|
"@teambit/ui-foundation.ui.is-browser": "0.0.486",
|
|
44
44
|
"@teambit/ui-foundation.ui.main-dropdown": "0.0.486",
|
|
45
45
|
"@teambit/ui-foundation.ui.react-router.slot-router": "0.0.488",
|
|
46
|
-
"@teambit/ui-foundation.ui.use-box.menu": "0.0.
|
|
47
|
-
"@teambit/ui": "0.0.
|
|
46
|
+
"@teambit/ui-foundation.ui.use-box.menu": "0.0.111",
|
|
47
|
+
"@teambit/ui": "0.0.654",
|
|
48
48
|
"@teambit/component-issues": "0.0.46",
|
|
49
49
|
"@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.487",
|
|
50
50
|
"@teambit/cli-table": "0.0.33",
|
|
51
|
-
"@teambit/component-descriptor": "0.0.
|
|
51
|
+
"@teambit/component-descriptor": "0.0.4",
|
|
52
52
|
"@teambit/ui-foundation.ui.react-router.use-query": "0.0.486",
|
|
53
53
|
"@teambit/design.ui.empty-box": "0.0.353",
|
|
54
54
|
"@teambit/harmony.ui.aspect-box": "0.0.486",
|
|
55
55
|
"@teambit/design.ui.pages.not-found": "0.0.353",
|
|
56
56
|
"@teambit/design.ui.pages.server-error": "0.0.353",
|
|
57
|
-
"@teambit/compositions": "0.0.
|
|
58
|
-
"@teambit/deprecation": "0.0.
|
|
59
|
-
"@teambit/envs": "0.0.
|
|
57
|
+
"@teambit/compositions": "0.0.654",
|
|
58
|
+
"@teambit/deprecation": "0.0.654",
|
|
59
|
+
"@teambit/envs": "0.0.654",
|
|
60
60
|
"@teambit/component.ui.version-dropdown": "0.0.492",
|
|
61
|
-
"@teambit/
|
|
61
|
+
"@teambit/lanes.ui.lanes": "0.0.1",
|
|
62
|
+
"@teambit/ui-foundation.ui.use-box.dropdown": "0.0.111",
|
|
62
63
|
"@teambit/ui-foundation.ui.react-router.extend-path": "0.0.486"
|
|
63
64
|
},
|
|
64
65
|
"devDependencies": {
|
|
@@ -78,7 +79,7 @@
|
|
|
78
79
|
},
|
|
79
80
|
"peerDependencies": {
|
|
80
81
|
"@apollo/client": "^3.0.0",
|
|
81
|
-
"@teambit/legacy": "1.0.
|
|
82
|
+
"@teambit/legacy": "1.0.225",
|
|
82
83
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
83
84
|
"react": "^16.8.0 || ^17.0.0"
|
|
84
85
|
},
|
|
@@ -106,7 +107,7 @@
|
|
|
106
107
|
"react": "-"
|
|
107
108
|
},
|
|
108
109
|
"peerDependencies": {
|
|
109
|
-
"@teambit/legacy": "1.0.
|
|
110
|
+
"@teambit/legacy": "1.0.225",
|
|
110
111
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
111
112
|
"react": "^16.8.0 || ^17.0.0"
|
|
112
113
|
}
|
package/ui/index.ts
CHANGED
package/ui/menu/menu.tsx
CHANGED
|
@@ -8,6 +8,7 @@ import classnames from 'classnames';
|
|
|
8
8
|
import React, { useMemo } from 'react';
|
|
9
9
|
import { UseBoxDropdown } from '@teambit/ui-foundation.ui.use-box.dropdown';
|
|
10
10
|
import { Menu as ConsumeMethodsMenu } from '@teambit/ui-foundation.ui.use-box.menu';
|
|
11
|
+
import { LaneModel, useLanesContext } from '@teambit/lanes.ui.lanes';
|
|
11
12
|
import type { ComponentModel } from '../component-model';
|
|
12
13
|
import { useComponent } from '../use-component';
|
|
13
14
|
import { MenuNav } from './menu-nav';
|
|
@@ -67,23 +68,27 @@ function VersionRelatedDropdowns({
|
|
|
67
68
|
}) {
|
|
68
69
|
const location = useLocation();
|
|
69
70
|
const isNew = component.tags.isEmpty();
|
|
71
|
+
const lanesContext = useLanesContext();
|
|
72
|
+
const currentLane = lanesContext?.currentLane;
|
|
70
73
|
|
|
71
74
|
const isWorkspace = host === 'teambit.workspace/workspace';
|
|
72
75
|
const versionList = useMemo(() => {
|
|
73
|
-
const tagsArray =
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
76
|
+
const tagsArray = !currentLane
|
|
77
|
+
? component.tags
|
|
78
|
+
?.toArray()
|
|
79
|
+
.map((tag) => tag?.version?.version)
|
|
80
|
+
.filter((x) => x !== undefined)
|
|
81
|
+
.reverse()
|
|
82
|
+
: [component.id.version];
|
|
83
|
+
const wsLink = [isWorkspace && !isNew && !currentLane ? 'workspace' : undefined];
|
|
79
84
|
|
|
80
85
|
return compact([...wsLink, ...tagsArray]);
|
|
81
|
-
}, [component.tags, isWorkspace, isNew]);
|
|
86
|
+
}, [component.tags, isWorkspace, isNew, currentLane]);
|
|
82
87
|
|
|
83
88
|
const currentVersion =
|
|
84
89
|
isWorkspace && !isNew && !location.search.includes('version') ? 'workspace' : component.version;
|
|
85
90
|
|
|
86
|
-
const methods = useConsumeMethods(consumeMethods, component);
|
|
91
|
+
const methods = useConsumeMethods(consumeMethods, component, currentLane);
|
|
87
92
|
return (
|
|
88
93
|
<>
|
|
89
94
|
{versionList.length > 0 && (
|
|
@@ -98,14 +103,18 @@ function VersionRelatedDropdowns({
|
|
|
98
103
|
);
|
|
99
104
|
}
|
|
100
105
|
|
|
101
|
-
function useConsumeMethods(
|
|
106
|
+
function useConsumeMethods(
|
|
107
|
+
consumeMethods: ConsumeMethodSlot,
|
|
108
|
+
componentModel: ComponentModel,
|
|
109
|
+
currentLane?: LaneModel
|
|
110
|
+
): ConsumeMethod[] {
|
|
102
111
|
return useMemo(
|
|
103
112
|
() =>
|
|
104
113
|
flatten(consumeMethods.values())
|
|
105
114
|
.map((method) => {
|
|
106
|
-
return method?.(componentModel);
|
|
115
|
+
return method?.(componentModel, { currentLane });
|
|
107
116
|
})
|
|
108
117
|
.filter((x) => !!x && x.Component && x.Title) as ConsumeMethod[],
|
|
109
|
-
[consumeMethods, componentModel]
|
|
118
|
+
[consumeMethods, componentModel, currentLane]
|
|
110
119
|
);
|
|
111
120
|
}
|
package/ui/menu/nav-plugin.tsx
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { SlotRegistry } from '@teambit/harmony';
|
|
3
3
|
import { NavLinkProps } from '@teambit/base-ui.routing.nav-link';
|
|
4
4
|
import type { ConsumeMethod } from '@teambit/ui-foundation.ui.use-box.menu';
|
|
5
|
+
import { LaneModel } from '@teambit/lanes.ui.lanes';
|
|
5
6
|
import { ComponentModel } from '../../ui';
|
|
6
7
|
|
|
7
8
|
export type NavPlugin = {
|
|
@@ -10,7 +11,13 @@ export type NavPlugin = {
|
|
|
10
11
|
};
|
|
11
12
|
|
|
12
13
|
export type OrderedNavigationSlot = SlotRegistry<NavPlugin>;
|
|
14
|
+
export type ConsumePluginOptions = {
|
|
15
|
+
currentLane?: LaneModel;
|
|
16
|
+
};
|
|
13
17
|
|
|
14
|
-
export type ConsumePlugin = (
|
|
18
|
+
export type ConsumePlugin = (
|
|
19
|
+
componentModel: ComponentModel,
|
|
20
|
+
options?: ConsumePluginOptions
|
|
21
|
+
) => ConsumeMethod | undefined;
|
|
15
22
|
|
|
16
23
|
export type ConsumeMethodSlot = SlotRegistry<ConsumePlugin[]>;
|
|
@@ -196,9 +196,9 @@ export function useComponentQuery(componentId: string, host: string) {
|
|
|
196
196
|
const aspectList = {
|
|
197
197
|
entries: rawComponent?.aspects?.map((aspect) => ({ aspectId: aspect.id, aspectData: aspect.data })),
|
|
198
198
|
};
|
|
199
|
-
const id = ComponentID.fromObject(rawComponent.id);
|
|
199
|
+
const id = rawComponent && ComponentID.fromObject(rawComponent.id);
|
|
200
200
|
return {
|
|
201
|
-
componentDescriptor:
|
|
201
|
+
componentDescriptor: id ? ComponentDescriptor.fromObject({ id: id.toString(), aspectList }) : undefined,
|
|
202
202
|
component: rawComponent ? ComponentModel.from({ ...rawComponent, host }) : undefined,
|
|
203
203
|
// eslint-disable-next-line
|
|
204
204
|
error: error
|
|
Binary file
|