@teambit/lanes 0.0.592 → 0.0.593

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.
@@ -30,6 +30,13 @@ function _componentVersion() {
30
30
  };
31
31
  return data;
32
32
  }
33
+ function _snapping() {
34
+ const data = require("@teambit/snapping");
35
+ _snapping = function () {
36
+ return data;
37
+ };
38
+ return data;
39
+ }
33
40
  function _componentsList() {
34
41
  const data = _interopRequireDefault(require("@teambit/legacy/dist/consumer/component/components-list"));
35
42
  _componentsList = function () {
@@ -52,6 +59,7 @@ async function createLane(consumer, laneName, scopeName, remoteLane) {
52
59
  if (lanes.find(lane => lane.name === laneName)) {
53
60
  throw new (_bitError().BitError)(`lane "${laneName}" already exists, to switch to this lane, please use "bit switch" command`);
54
61
  }
62
+ const bitCloudUser = await (0, _snapping().getBitCloudUser)();
55
63
  throwForInvalidLaneName(laneName);
56
64
  await throwForStagedComponents(consumer);
57
65
  const getDataToPopulateLaneObjectIfNeeded = async () => {
@@ -87,7 +95,7 @@ async function createLane(consumer, laneName, scopeName, remoteLane) {
87
95
  log: remoteLane.log,
88
96
  scope: remoteLane.scope,
89
97
  forkedFrom
90
- }) : _lane().default.create(laneName, scopeName, forkedFrom);
98
+ }) : _lane().default.create(laneName, scopeName, forkedFrom, bitCloudUser);
91
99
  const dataToPopulate = await getDataToPopulateLaneObjectIfNeeded();
92
100
  newLane.setLaneComponents(dataToPopulate);
93
101
  await consumer.scope.lanes.saveLane(newLane);
@@ -1 +1 @@
1
- {"version":3,"names":["MAX_LANE_NAME_LENGTH","createLane","consumer","laneName","scopeName","remoteLane","lanes","scope","listLanes","find","lane","name","BitError","throwForInvalidLaneName","throwForStagedComponents","getDataToPopulateLaneObjectIfNeeded","components","currentLaneObject","getCurrentLaneObject","laneComponents","workspaceIds","bitMap","getAllBitIds","laneComponentWithBitmapHead","map","id","head","bitmapHead","searchWithoutVersion","isHash","version","Ref","from","forkedFrom","getLaneOrigin","newLane","Lane","hash","toString","log","create","dataToPopulate","setLaneComponents","saveLane","createLaneInScope","legacyScope","currentLaneId","laneId","undefined","isLaneExported","currentLane","isValidLaneName","componentList","ComponentsList","stagedComponents","listExportPendingComponentsIds","length","join","val","test"],"sources":["create-lane.ts"],"sourcesContent":["import { BitError } from '@teambit/bit-error';\nimport { LaneId } from '@teambit/lane-id';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport { ScopeMain } from '@teambit/scope';\n// import { BitIds } from '@teambit/legacy/dist/bit-id';\nimport Lane, { LaneComponent } from '@teambit/legacy/dist/scope/models/lane';\nimport { isHash } from '@teambit/component-version';\nimport ComponentsList from '@teambit/legacy/dist/consumer/component/components-list';\nimport { Ref } from '@teambit/legacy/dist/scope/objects';\n\nconst MAX_LANE_NAME_LENGTH = 800;\n\nexport async function createLane(\n consumer: Consumer,\n laneName: string,\n scopeName: string,\n remoteLane?: Lane\n): Promise<Lane> {\n const lanes = await consumer.scope.listLanes();\n if (lanes.find((lane) => lane.name === laneName)) {\n throw new BitError(`lane \"${laneName}\" already exists, to switch to this lane, please use \"bit switch\" command`);\n }\n throwForInvalidLaneName(laneName);\n await throwForStagedComponents(consumer);\n const getDataToPopulateLaneObjectIfNeeded = async (): Promise<LaneComponent[]> => {\n if (remoteLane) return remoteLane.components;\n // when branching from one lane to another, copy components from the origin lane\n // when branching from main, no need to copy anything\n const currentLaneObject = await consumer.getCurrentLaneObject();\n if (!currentLaneObject) return [];\n const laneComponents = currentLaneObject.components;\n const workspaceIds = consumer.bitMap.getAllBitIds();\n const laneComponentWithBitmapHead = laneComponents.map(({ id, head }) => {\n const bitmapHead = workspaceIds.searchWithoutVersion(id);\n if (bitmapHead && isHash(bitmapHead.version)) {\n return { id, head: Ref.from(bitmapHead.version as string) };\n }\n return { id, head };\n });\n return laneComponentWithBitmapHead;\n };\n\n const forkedFrom = await getLaneOrigin(consumer);\n const newLane = remoteLane\n ? Lane.from({\n name: laneName,\n hash: remoteLane.hash().toString(),\n log: remoteLane.log,\n scope: remoteLane.scope,\n forkedFrom,\n })\n : Lane.create(laneName, scopeName, forkedFrom);\n const dataToPopulate = await getDataToPopulateLaneObjectIfNeeded();\n newLane.setLaneComponents(dataToPopulate);\n\n await consumer.scope.lanes.saveLane(newLane);\n\n return newLane;\n}\n\nexport async function createLaneInScope(laneName: string, scope: ScopeMain): Promise<Lane> {\n const lanes = await scope.legacyScope.listLanes();\n if (lanes.find((lane) => lane.name === laneName)) {\n throw new BitError(`lane \"${laneName}\" already exists`);\n }\n throwForInvalidLaneName(laneName);\n const newLane = Lane.create(laneName, scope.name);\n await scope.legacyScope.lanes.saveLane(newLane);\n return newLane;\n}\n\nasync function getLaneOrigin(consumer: Consumer): Promise<LaneId | undefined> {\n const currentLaneId = consumer.bitMap.laneId;\n if (!currentLaneId) return undefined;\n if (consumer.bitMap.isLaneExported) {\n return currentLaneId;\n }\n // current lane is new.\n const currentLane = await consumer.getCurrentLaneObject();\n return currentLane?.forkedFrom;\n}\n\nexport function throwForInvalidLaneName(laneName: string) {\n if (!isValidLaneName(laneName)) {\n throw new BitError(\n `lane \"${laneName}\" has invalid characters. lane name can only contain alphanumeric, lowercase characters, and the following [\"-\", \"_\", \"$\", \"!\"]`\n );\n }\n}\n\nexport async function throwForStagedComponents(consumer: Consumer) {\n const componentList = new ComponentsList(consumer);\n const stagedComponents = await componentList.listExportPendingComponentsIds();\n if (stagedComponents.length) {\n throw new BitError(\n `unable to switch/create a new lane, please export or reset the following components first: ${stagedComponents.join(\n ', '\n )}`\n );\n }\n}\n\nfunction isValidLaneName(val: unknown): boolean {\n if (typeof val !== 'string') return false;\n if (val.length > MAX_LANE_NAME_LENGTH) return false;\n // @todo: should we allow slash? if so, we should probably replace the lane-delimiter with something else. (maybe \":\")\n return /^[$\\-_!a-z0-9]+$/.test(val);\n}\n"],"mappings":";;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAKA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAJA;;AAMA,MAAMA,oBAAoB,GAAG,GAAG;AAEzB,eAAeC,UAAU,CAC9BC,QAAkB,EAClBC,QAAgB,EAChBC,SAAiB,EACjBC,UAAiB,EACF;EACf,MAAMC,KAAK,GAAG,MAAMJ,QAAQ,CAACK,KAAK,CAACC,SAAS,EAAE;EAC9C,IAAIF,KAAK,CAACG,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACC,IAAI,KAAKR,QAAQ,CAAC,EAAE;IAChD,MAAM,KAAIS,oBAAQ,EAAE,SAAQT,QAAS,2EAA0E,CAAC;EAClH;EACAU,uBAAuB,CAACV,QAAQ,CAAC;EACjC,MAAMW,wBAAwB,CAACZ,QAAQ,CAAC;EACxC,MAAMa,mCAAmC,GAAG,YAAsC;IAChF,IAAIV,UAAU,EAAE,OAAOA,UAAU,CAACW,UAAU;IAC5C;IACA;IACA,MAAMC,iBAAiB,GAAG,MAAMf,QAAQ,CAACgB,oBAAoB,EAAE;IAC/D,IAAI,CAACD,iBAAiB,EAAE,OAAO,EAAE;IACjC,MAAME,cAAc,GAAGF,iBAAiB,CAACD,UAAU;IACnD,MAAMI,YAAY,GAAGlB,QAAQ,CAACmB,MAAM,CAACC,YAAY,EAAE;IACnD,MAAMC,2BAA2B,GAAGJ,cAAc,CAACK,GAAG,CAAC,CAAC;MAAEC,EAAE;MAAEC;IAAK,CAAC,KAAK;MACvE,MAAMC,UAAU,GAAGP,YAAY,CAACQ,oBAAoB,CAACH,EAAE,CAAC;MACxD,IAAIE,UAAU,IAAI,IAAAE,0BAAM,EAACF,UAAU,CAACG,OAAO,CAAC,EAAE;QAC5C,OAAO;UAAEL,EAAE;UAAEC,IAAI,EAAEK,cAAG,CAACC,IAAI,CAACL,UAAU,CAACG,OAAO;QAAY,CAAC;MAC7D;MACA,OAAO;QAAEL,EAAE;QAAEC;MAAK,CAAC;IACrB,CAAC,CAAC;IACF,OAAOH,2BAA2B;EACpC,CAAC;EAED,MAAMU,UAAU,GAAG,MAAMC,aAAa,CAAChC,QAAQ,CAAC;EAChD,MAAMiC,OAAO,GAAG9B,UAAU,GACtB+B,eAAI,CAACJ,IAAI,CAAC;IACRrB,IAAI,EAAER,QAAQ;IACdkC,IAAI,EAAEhC,UAAU,CAACgC,IAAI,EAAE,CAACC,QAAQ,EAAE;IAClCC,GAAG,EAAElC,UAAU,CAACkC,GAAG;IACnBhC,KAAK,EAAEF,UAAU,CAACE,KAAK;IACvB0B;EACF,CAAC,CAAC,GACFG,eAAI,CAACI,MAAM,CAACrC,QAAQ,EAAEC,SAAS,EAAE6B,UAAU,CAAC;EAChD,MAAMQ,cAAc,GAAG,MAAM1B,mCAAmC,EAAE;EAClEoB,OAAO,CAACO,iBAAiB,CAACD,cAAc,CAAC;EAEzC,MAAMvC,QAAQ,CAACK,KAAK,CAACD,KAAK,CAACqC,QAAQ,CAACR,OAAO,CAAC;EAE5C,OAAOA,OAAO;AAChB;AAEO,eAAeS,iBAAiB,CAACzC,QAAgB,EAAEI,KAAgB,EAAiB;EACzF,MAAMD,KAAK,GAAG,MAAMC,KAAK,CAACsC,WAAW,CAACrC,SAAS,EAAE;EACjD,IAAIF,KAAK,CAACG,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACC,IAAI,KAAKR,QAAQ,CAAC,EAAE;IAChD,MAAM,KAAIS,oBAAQ,EAAE,SAAQT,QAAS,kBAAiB,CAAC;EACzD;EACAU,uBAAuB,CAACV,QAAQ,CAAC;EACjC,MAAMgC,OAAO,GAAGC,eAAI,CAACI,MAAM,CAACrC,QAAQ,EAAEI,KAAK,CAACI,IAAI,CAAC;EACjD,MAAMJ,KAAK,CAACsC,WAAW,CAACvC,KAAK,CAACqC,QAAQ,CAACR,OAAO,CAAC;EAC/C,OAAOA,OAAO;AAChB;AAEA,eAAeD,aAAa,CAAChC,QAAkB,EAA+B;EAC5E,MAAM4C,aAAa,GAAG5C,QAAQ,CAACmB,MAAM,CAAC0B,MAAM;EAC5C,IAAI,CAACD,aAAa,EAAE,OAAOE,SAAS;EACpC,IAAI9C,QAAQ,CAACmB,MAAM,CAAC4B,cAAc,EAAE;IAClC,OAAOH,aAAa;EACtB;EACA;EACA,MAAMI,WAAW,GAAG,MAAMhD,QAAQ,CAACgB,oBAAoB,EAAE;EACzD,OAAOgC,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEjB,UAAU;AAChC;AAEO,SAASpB,uBAAuB,CAACV,QAAgB,EAAE;EACxD,IAAI,CAACgD,eAAe,CAAChD,QAAQ,CAAC,EAAE;IAC9B,MAAM,KAAIS,oBAAQ,EACf,SAAQT,QAAS,iIAAgI,CACnJ;EACH;AACF;AAEO,eAAeW,wBAAwB,CAACZ,QAAkB,EAAE;EACjE,MAAMkD,aAAa,GAAG,KAAIC,yBAAc,EAACnD,QAAQ,CAAC;EAClD,MAAMoD,gBAAgB,GAAG,MAAMF,aAAa,CAACG,8BAA8B,EAAE;EAC7E,IAAID,gBAAgB,CAACE,MAAM,EAAE;IAC3B,MAAM,KAAI5C,oBAAQ,EACf,8FAA6F0C,gBAAgB,CAACG,IAAI,CACjH,IAAI,CACJ,EAAC,CACJ;EACH;AACF;AAEA,SAASN,eAAe,CAACO,GAAY,EAAW;EAC9C,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE,OAAO,KAAK;EACzC,IAAIA,GAAG,CAACF,MAAM,GAAGxD,oBAAoB,EAAE,OAAO,KAAK;EACnD;EACA,OAAO,kBAAkB,CAAC2D,IAAI,CAACD,GAAG,CAAC;AACrC"}
1
+ {"version":3,"names":["MAX_LANE_NAME_LENGTH","createLane","consumer","laneName","scopeName","remoteLane","lanes","scope","listLanes","find","lane","name","BitError","bitCloudUser","getBitCloudUser","throwForInvalidLaneName","throwForStagedComponents","getDataToPopulateLaneObjectIfNeeded","components","currentLaneObject","getCurrentLaneObject","laneComponents","workspaceIds","bitMap","getAllBitIds","laneComponentWithBitmapHead","map","id","head","bitmapHead","searchWithoutVersion","isHash","version","Ref","from","forkedFrom","getLaneOrigin","newLane","Lane","hash","toString","log","create","dataToPopulate","setLaneComponents","saveLane","createLaneInScope","legacyScope","currentLaneId","laneId","undefined","isLaneExported","currentLane","isValidLaneName","componentList","ComponentsList","stagedComponents","listExportPendingComponentsIds","length","join","val","test"],"sources":["create-lane.ts"],"sourcesContent":["import { BitError } from '@teambit/bit-error';\nimport { LaneId } from '@teambit/lane-id';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport { ScopeMain } from '@teambit/scope';\n// import { BitIds } from '@teambit/legacy/dist/bit-id';\nimport Lane, { LaneComponent } from '@teambit/legacy/dist/scope/models/lane';\nimport { isHash } from '@teambit/component-version';\nimport { getBitCloudUser } from '@teambit/snapping';\nimport ComponentsList from '@teambit/legacy/dist/consumer/component/components-list';\nimport { Ref } from '@teambit/legacy/dist/scope/objects';\n\nconst MAX_LANE_NAME_LENGTH = 800;\n\nexport async function createLane(\n consumer: Consumer,\n laneName: string,\n scopeName: string,\n remoteLane?: Lane\n): Promise<Lane> {\n const lanes = await consumer.scope.listLanes();\n if (lanes.find((lane) => lane.name === laneName)) {\n throw new BitError(`lane \"${laneName}\" already exists, to switch to this lane, please use \"bit switch\" command`);\n }\n const bitCloudUser = await getBitCloudUser();\n throwForInvalidLaneName(laneName);\n await throwForStagedComponents(consumer);\n const getDataToPopulateLaneObjectIfNeeded = async (): Promise<LaneComponent[]> => {\n if (remoteLane) return remoteLane.components;\n // when branching from one lane to another, copy components from the origin lane\n // when branching from main, no need to copy anything\n const currentLaneObject = await consumer.getCurrentLaneObject();\n if (!currentLaneObject) return [];\n const laneComponents = currentLaneObject.components;\n const workspaceIds = consumer.bitMap.getAllBitIds();\n const laneComponentWithBitmapHead = laneComponents.map(({ id, head }) => {\n const bitmapHead = workspaceIds.searchWithoutVersion(id);\n if (bitmapHead && isHash(bitmapHead.version)) {\n return { id, head: Ref.from(bitmapHead.version as string) };\n }\n return { id, head };\n });\n return laneComponentWithBitmapHead;\n };\n\n const forkedFrom = await getLaneOrigin(consumer);\n const newLane = remoteLane\n ? Lane.from({\n name: laneName,\n hash: remoteLane.hash().toString(),\n log: remoteLane.log,\n scope: remoteLane.scope,\n forkedFrom,\n })\n : Lane.create(laneName, scopeName, forkedFrom, bitCloudUser);\n const dataToPopulate = await getDataToPopulateLaneObjectIfNeeded();\n newLane.setLaneComponents(dataToPopulate);\n\n await consumer.scope.lanes.saveLane(newLane);\n\n return newLane;\n}\n\nexport async function createLaneInScope(laneName: string, scope: ScopeMain): Promise<Lane> {\n const lanes = await scope.legacyScope.listLanes();\n if (lanes.find((lane) => lane.name === laneName)) {\n throw new BitError(`lane \"${laneName}\" already exists`);\n }\n throwForInvalidLaneName(laneName);\n const newLane = Lane.create(laneName, scope.name);\n await scope.legacyScope.lanes.saveLane(newLane);\n return newLane;\n}\n\nasync function getLaneOrigin(consumer: Consumer): Promise<LaneId | undefined> {\n const currentLaneId = consumer.bitMap.laneId;\n if (!currentLaneId) return undefined;\n if (consumer.bitMap.isLaneExported) {\n return currentLaneId;\n }\n // current lane is new.\n const currentLane = await consumer.getCurrentLaneObject();\n return currentLane?.forkedFrom;\n}\n\nexport function throwForInvalidLaneName(laneName: string) {\n if (!isValidLaneName(laneName)) {\n throw new BitError(\n `lane \"${laneName}\" has invalid characters. lane name can only contain alphanumeric, lowercase characters, and the following [\"-\", \"_\", \"$\", \"!\"]`\n );\n }\n}\n\nexport async function throwForStagedComponents(consumer: Consumer) {\n const componentList = new ComponentsList(consumer);\n const stagedComponents = await componentList.listExportPendingComponentsIds();\n if (stagedComponents.length) {\n throw new BitError(\n `unable to switch/create a new lane, please export or reset the following components first: ${stagedComponents.join(\n ', '\n )}`\n );\n }\n}\n\nfunction isValidLaneName(val: unknown): boolean {\n if (typeof val !== 'string') return false;\n if (val.length > MAX_LANE_NAME_LENGTH) return false;\n // @todo: should we allow slash? if so, we should probably replace the lane-delimiter with something else. (maybe \":\")\n return /^[$\\-_!a-z0-9]+$/.test(val);\n}\n"],"mappings":"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"}
@@ -112,12 +112,20 @@ function lanesSchema(lanesMainRuntime) {
112
112
  componentsStatus: [LaneComponentDiffStatus!]!
113
113
  }
114
114
 
115
+ type LaneOwner {
116
+ name: String
117
+ email: String
118
+ profileImage: String
119
+ }
120
+
115
121
  type Lane {
116
122
  id: LaneId!
117
123
  hash: String
118
124
  laneComponentIds: [ComponentID!]!
119
125
  components(offset: Int, limit: Int): [Component!]!
120
126
  readmeComponent: Component
127
+ createdBy: LaneOwner
128
+ createdAt: String
121
129
  }
122
130
 
123
131
  # Lane API
@@ -207,6 +215,18 @@ function lanesSchema(lanesMainRuntime) {
207
215
  readmeComponent: async lane => {
208
216
  const laneReadmeComponent = await lanesMainRuntime.getLaneReadmeComponent(lane);
209
217
  return laneReadmeComponent;
218
+ },
219
+ createdAt: async lane => {
220
+ var _lane$log;
221
+ return (_lane$log = lane.log) === null || _lane$log === void 0 ? void 0 : _lane$log.date;
222
+ },
223
+ createdBy: async lane => {
224
+ var _lane$log2, _lane$log3, _lane$log4;
225
+ return {
226
+ name: (_lane$log2 = lane.log) === null || _lane$log2 === void 0 ? void 0 : _lane$log2.username,
227
+ email: (_lane$log3 = lane.log) === null || _lane$log3 === void 0 ? void 0 : _lane$log3.email,
228
+ profileImage: (_lane$log4 = lane.log) === null || _lane$log4 === void 0 ? void 0 : _lane$log4.profileImage
229
+ };
210
230
  }
211
231
  },
212
232
  Query: {
@@ -1 +1 @@
1
- {"version":3,"names":["lanesSchema","lanesMainRuntime","typeDefs","gql","resolvers","Lanes","id","list","lanesMain","ids","limit","offset","lanes","length","getLanes","showDefaultLane","flatten","Promise","all","map","name","LaneId","parse","slice","current","currentLaneName","getCurrentLaneName","undefined","currentLane","diff","from","to","options","getDiffResults","getDiff","compsWithDiff","item","toString","diffStatus","source","target","sourceLaneId","targetLaneId","LaneDiffStatus","LaneComponentDiffStatus","diffCompStatus","componentId","toStringWithoutVersion","sourceHead","targetHead","toObject","Lane","lane","laneComponentIds","componentIds","getLaneComponentIds","components","laneComponents","getLaneComponentModels","readmeComponent","laneReadmeComponent","getLaneReadmeComponent","Query"],"sources":["lanes.graphql.ts"],"sourcesContent":["import { Schema } from '@teambit/graphql';\nimport { LaneId } from '@teambit/lane-id';\nimport { LaneData } from '@teambit/legacy/dist/scope/lanes/lanes';\nimport gql from 'graphql-tag';\nimport { flatten, slice } from 'lodash';\nimport { LaneComponentDiffStatus, LaneDiffStatus, LaneDiffStatusOptions, LanesMain } from './lanes.main.runtime';\n\nexport function lanesSchema(lanesMainRuntime: LanesMain): Schema {\n return {\n typeDefs: gql`\n type FileDiff {\n filePath: String!\n diffOutput: String\n }\n\n type SnapDistance {\n onSource: [String!]!\n onTarget: [String!]!\n common: String\n }\n\n type FieldsDiff {\n fieldName: String!\n diffOutput: String\n }\n\n type DiffResults {\n id: String\n hasDiff: Boolean\n filesDiff: [FileDiff]\n fieldsDiff: [FieldsDiff]\n }\n\n type GetDiffResult {\n newComps: [String]\n compsWithNoChanges: [String]\n toLaneName: String\n compsWithDiff: [DiffResults]\n }\n\n input DiffOptions {\n color: Boolean\n }\n\n input DiffStatusOptions {\n skipChanges: Boolean\n skipUpToDate: Boolean\n }\n\n type LaneId {\n name: String!\n scope: String!\n }\n\n type LaneComponentDiffStatus {\n \"\"\"\n for apollo caching - component id\n \"\"\"\n id: String!\n sourceHead: String!\n targetHead: String\n componentId: ComponentID!\n changeType: String @deprecated(reason: \"Use changes\")\n \"\"\"\n list of all change types - Source Code, Dependency, Aspects, etc\n \"\"\"\n changes: [String!]\n upToDate: Boolean\n snapsDistance: SnapDistance\n unrelated: Boolean\n }\n\n type LaneDiffStatus {\n \"\"\"\n for apollo caching - source + target\n \"\"\"\n id: String!\n source: LaneId!\n target: LaneId!\n componentsStatus: [LaneComponentDiffStatus!]!\n }\n\n type Lane {\n id: LaneId!\n hash: String\n laneComponentIds: [ComponentID!]!\n components(offset: Int, limit: Int): [Component!]!\n readmeComponent: Component\n }\n\n # Lane API\n type Lanes {\n id: String!\n list(ids: [String!], offset: Int, limit: Int): [Lane!]!\n diff(from: String!, to: String!, options: DiffOptions): GetDiffResult\n diffStatus(source: String!, target: String, options: DiffStatusOptions): LaneDiffStatus!\n current: Lane\n }\n\n type Query {\n lanes: Lanes\n }\n `,\n resolvers: {\n Lanes: {\n // need this for Apollo InMemory Caching\n id: () => 'lanes',\n list: async (\n lanesMain: LanesMain,\n { ids, limit, offset }: { ids?: string[]; offset?: number; limit?: number }\n ) => {\n let lanes: LaneData[] = [];\n\n if (!ids || ids.length === 0) {\n lanes = await lanesMain.getLanes({ showDefaultLane: true });\n } else {\n lanes = flatten(await Promise.all(ids.map((id) => lanesMain.getLanes({ name: LaneId.parse(id).name }))));\n }\n\n if (limit || offset) {\n lanes = slice(lanes, offset, limit && limit + (offset || 0));\n }\n\n return lanes;\n },\n current: async (lanesMain: LanesMain) => {\n const currentLaneName = lanesMain.getCurrentLaneName();\n if (!currentLaneName) return undefined;\n const [currentLane] = await lanesMain.getLanes({ name: currentLaneName });\n return currentLane;\n },\n diff: async (\n lanesMain: LanesMain,\n { from, to, options }: { to: string; from: string; options: { color?: boolean } }\n ) => {\n const getDiffResults = await lanesMain.getDiff([from, to], options);\n return {\n ...getDiffResults,\n compsWithDiff: getDiffResults.compsWithDiff.map((item) => ({ ...item, id: item.id.toString() })),\n };\n },\n diffStatus: async (\n lanesMain: LanesMain,\n { source, target, options }: { source: string; target?: string; options?: LaneDiffStatusOptions }\n ) => {\n const sourceLaneId = LaneId.parse(source);\n const targetLaneId = target ? LaneId.parse(target) : undefined;\n return lanesMain.diffStatus(sourceLaneId, targetLaneId, options);\n },\n },\n LaneDiffStatus: {\n id: (diffStatus: LaneDiffStatus) => `${diffStatus.source.toString()}-${diffStatus.target.toString()}`,\n },\n LaneComponentDiffStatus: {\n id: (diffCompStatus: LaneComponentDiffStatus) =>\n `${diffCompStatus.componentId.toStringWithoutVersion()}-${diffCompStatus.sourceHead}-${\n diffCompStatus.targetHead\n }`,\n componentId: (diffCompStatus: LaneComponentDiffStatus) => diffCompStatus.componentId.toObject(),\n },\n Lane: {\n id: (lane: LaneData) => lane.id.toObject(),\n laneComponentIds: async (lane: LaneData) => {\n const componentIds = await lanesMainRuntime.getLaneComponentIds(lane);\n return componentIds.map((componentId) => componentId.toObject());\n },\n components: async (lane: LaneData) => {\n const laneComponents = await lanesMainRuntime.getLaneComponentModels(lane);\n return laneComponents;\n },\n readmeComponent: async (lane: LaneData) => {\n const laneReadmeComponent = await lanesMainRuntime.getLaneReadmeComponent(lane);\n return laneReadmeComponent;\n },\n },\n Query: {\n lanes: () => lanesMainRuntime,\n },\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAwC;AAAA;AAGjC,SAASA,WAAW,CAACC,gBAA2B,EAAU;EAC/D,OAAO;IACLC,QAAQ,EAAE,IAAAC,qBAAG,CAAC;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACDC,SAAS,EAAE;MACTC,KAAK,EAAE;QACL;QACAC,EAAE,EAAE,MAAM,OAAO;QACjBC,IAAI,EAAE,OACJC,SAAoB,EACpB;UAAEC,GAAG;UAAEC,KAAK;UAAEC;QAA4D,CAAC,KACxE;UACH,IAAIC,KAAiB,GAAG,EAAE;UAE1B,IAAI,CAACH,GAAG,IAAIA,GAAG,CAACI,MAAM,KAAK,CAAC,EAAE;YAC5BD,KAAK,GAAG,MAAMJ,SAAS,CAACM,QAAQ,CAAC;cAAEC,eAAe,EAAE;YAAK,CAAC,CAAC;UAC7D,CAAC,MAAM;YACLH,KAAK,GAAG,IAAAI,iBAAO,EAAC,MAAMC,OAAO,CAACC,GAAG,CAACT,GAAG,CAACU,GAAG,CAAEb,EAAE,IAAKE,SAAS,CAACM,QAAQ,CAAC;cAAEM,IAAI,EAAEC,gBAAM,CAACC,KAAK,CAAChB,EAAE,CAAC,CAACc;YAAK,CAAC,CAAC,CAAC,CAAC,CAAC;UAC1G;UAEA,IAAIV,KAAK,IAAIC,MAAM,EAAE;YACnBC,KAAK,GAAG,IAAAW,eAAK,EAACX,KAAK,EAAED,MAAM,EAAED,KAAK,IAAIA,KAAK,IAAIC,MAAM,IAAI,CAAC,CAAC,CAAC;UAC9D;UAEA,OAAOC,KAAK;QACd,CAAC;QACDY,OAAO,EAAE,MAAOhB,SAAoB,IAAK;UACvC,MAAMiB,eAAe,GAAGjB,SAAS,CAACkB,kBAAkB,EAAE;UACtD,IAAI,CAACD,eAAe,EAAE,OAAOE,SAAS;UACtC,MAAM,CAACC,WAAW,CAAC,GAAG,MAAMpB,SAAS,CAACM,QAAQ,CAAC;YAAEM,IAAI,EAAEK;UAAgB,CAAC,CAAC;UACzE,OAAOG,WAAW;QACpB,CAAC;QACDC,IAAI,EAAE,OACJrB,SAAoB,EACpB;UAAEsB,IAAI;UAAEC,EAAE;UAAEC;QAAoE,CAAC,KAC9E;UACH,MAAMC,cAAc,GAAG,MAAMzB,SAAS,CAAC0B,OAAO,CAAC,CAACJ,IAAI,EAAEC,EAAE,CAAC,EAAEC,OAAO,CAAC;UACnE,uCACKC,cAAc;YACjBE,aAAa,EAAEF,cAAc,CAACE,aAAa,CAAChB,GAAG,CAAEiB,IAAI,oCAAWA,IAAI;cAAE9B,EAAE,EAAE8B,IAAI,CAAC9B,EAAE,CAAC+B,QAAQ;YAAE,EAAG;UAAC;QAEpG,CAAC;QACDC,UAAU,EAAE,OACV9B,SAAoB,EACpB;UAAE+B,MAAM;UAAEC,MAAM;UAAER;QAA8E,CAAC,KAC9F;UACH,MAAMS,YAAY,GAAGpB,gBAAM,CAACC,KAAK,CAACiB,MAAM,CAAC;UACzC,MAAMG,YAAY,GAAGF,MAAM,GAAGnB,gBAAM,CAACC,KAAK,CAACkB,MAAM,CAAC,GAAGb,SAAS;UAC9D,OAAOnB,SAAS,CAAC8B,UAAU,CAACG,YAAY,EAAEC,YAAY,EAAEV,OAAO,CAAC;QAClE;MACF,CAAC;MACDW,cAAc,EAAE;QACdrC,EAAE,EAAGgC,UAA0B,IAAM,GAAEA,UAAU,CAACC,MAAM,CAACF,QAAQ,EAAG,IAAGC,UAAU,CAACE,MAAM,CAACH,QAAQ,EAAG;MACtG,CAAC;MACDO,uBAAuB,EAAE;QACvBtC,EAAE,EAAGuC,cAAuC,IACzC,GAAEA,cAAc,CAACC,WAAW,CAACC,sBAAsB,EAAG,IAAGF,cAAc,CAACG,UAAW,IAClFH,cAAc,CAACI,UAChB,EAAC;QACJH,WAAW,EAAGD,cAAuC,IAAKA,cAAc,CAACC,WAAW,CAACI,QAAQ;MAC/F,CAAC;MACDC,IAAI,EAAE;QACJ7C,EAAE,EAAG8C,IAAc,IAAKA,IAAI,CAAC9C,EAAE,CAAC4C,QAAQ,EAAE;QAC1CG,gBAAgB,EAAE,MAAOD,IAAc,IAAK;UAC1C,MAAME,YAAY,GAAG,MAAMrD,gBAAgB,CAACsD,mBAAmB,CAACH,IAAI,CAAC;UACrE,OAAOE,YAAY,CAACnC,GAAG,CAAE2B,WAAW,IAAKA,WAAW,CAACI,QAAQ,EAAE,CAAC;QAClE,CAAC;QACDM,UAAU,EAAE,MAAOJ,IAAc,IAAK;UACpC,MAAMK,cAAc,GAAG,MAAMxD,gBAAgB,CAACyD,sBAAsB,CAACN,IAAI,CAAC;UAC1E,OAAOK,cAAc;QACvB,CAAC;QACDE,eAAe,EAAE,MAAOP,IAAc,IAAK;UACzC,MAAMQ,mBAAmB,GAAG,MAAM3D,gBAAgB,CAAC4D,sBAAsB,CAACT,IAAI,CAAC;UAC/E,OAAOQ,mBAAmB;QAC5B;MACF,CAAC;MACDE,KAAK,EAAE;QACLlD,KAAK,EAAE,MAAMX;MACf;IACF;EACF,CAAC;AACH"}
1
+ {"version":3,"names":["lanesSchema","lanesMainRuntime","typeDefs","gql","resolvers","Lanes","id","list","lanesMain","ids","limit","offset","lanes","length","getLanes","showDefaultLane","flatten","Promise","all","map","name","LaneId","parse","slice","current","currentLaneName","getCurrentLaneName","undefined","currentLane","diff","from","to","options","getDiffResults","getDiff","compsWithDiff","item","toString","diffStatus","source","target","sourceLaneId","targetLaneId","LaneDiffStatus","LaneComponentDiffStatus","diffCompStatus","componentId","toStringWithoutVersion","sourceHead","targetHead","toObject","Lane","lane","laneComponentIds","componentIds","getLaneComponentIds","components","laneComponents","getLaneComponentModels","readmeComponent","laneReadmeComponent","getLaneReadmeComponent","createdAt","log","date","createdBy","username","email","profileImage","Query"],"sources":["lanes.graphql.ts"],"sourcesContent":["import { Schema } from '@teambit/graphql';\nimport { LaneId } from '@teambit/lane-id';\nimport { LaneData } from '@teambit/legacy/dist/scope/lanes/lanes';\nimport gql from 'graphql-tag';\nimport { flatten, slice } from 'lodash';\nimport { LaneComponentDiffStatus, LaneDiffStatus, LaneDiffStatusOptions, LanesMain } from './lanes.main.runtime';\n\nexport function lanesSchema(lanesMainRuntime: LanesMain): Schema {\n return {\n typeDefs: gql`\n type FileDiff {\n filePath: String!\n diffOutput: String\n }\n\n type SnapDistance {\n onSource: [String!]!\n onTarget: [String!]!\n common: String\n }\n\n type FieldsDiff {\n fieldName: String!\n diffOutput: String\n }\n\n type DiffResults {\n id: String\n hasDiff: Boolean\n filesDiff: [FileDiff]\n fieldsDiff: [FieldsDiff]\n }\n\n type GetDiffResult {\n newComps: [String]\n compsWithNoChanges: [String]\n toLaneName: String\n compsWithDiff: [DiffResults]\n }\n\n input DiffOptions {\n color: Boolean\n }\n\n input DiffStatusOptions {\n skipChanges: Boolean\n skipUpToDate: Boolean\n }\n\n type LaneId {\n name: String!\n scope: String!\n }\n\n type LaneComponentDiffStatus {\n \"\"\"\n for apollo caching - component id\n \"\"\"\n id: String!\n sourceHead: String!\n targetHead: String\n componentId: ComponentID!\n changeType: String @deprecated(reason: \"Use changes\")\n \"\"\"\n list of all change types - Source Code, Dependency, Aspects, etc\n \"\"\"\n changes: [String!]\n upToDate: Boolean\n snapsDistance: SnapDistance\n unrelated: Boolean\n }\n\n type LaneDiffStatus {\n \"\"\"\n for apollo caching - source + target\n \"\"\"\n id: String!\n source: LaneId!\n target: LaneId!\n componentsStatus: [LaneComponentDiffStatus!]!\n }\n\n type LaneOwner {\n name: String\n email: String\n profileImage: String\n }\n\n type Lane {\n id: LaneId!\n hash: String\n laneComponentIds: [ComponentID!]!\n components(offset: Int, limit: Int): [Component!]!\n readmeComponent: Component\n createdBy: LaneOwner\n createdAt: String\n }\n\n # Lane API\n type Lanes {\n id: String!\n list(ids: [String!], offset: Int, limit: Int): [Lane!]!\n diff(from: String!, to: String!, options: DiffOptions): GetDiffResult\n diffStatus(source: String!, target: String, options: DiffStatusOptions): LaneDiffStatus!\n current: Lane\n }\n\n type Query {\n lanes: Lanes\n }\n `,\n resolvers: {\n Lanes: {\n // need this for Apollo InMemory Caching\n id: () => 'lanes',\n list: async (\n lanesMain: LanesMain,\n { ids, limit, offset }: { ids?: string[]; offset?: number; limit?: number }\n ) => {\n let lanes: LaneData[] = [];\n\n if (!ids || ids.length === 0) {\n lanes = await lanesMain.getLanes({ showDefaultLane: true });\n } else {\n lanes = flatten(await Promise.all(ids.map((id) => lanesMain.getLanes({ name: LaneId.parse(id).name }))));\n }\n\n if (limit || offset) {\n lanes = slice(lanes, offset, limit && limit + (offset || 0));\n }\n\n return lanes;\n },\n current: async (lanesMain: LanesMain) => {\n const currentLaneName = lanesMain.getCurrentLaneName();\n if (!currentLaneName) return undefined;\n const [currentLane] = await lanesMain.getLanes({ name: currentLaneName });\n return currentLane;\n },\n diff: async (\n lanesMain: LanesMain,\n { from, to, options }: { to: string; from: string; options: { color?: boolean } }\n ) => {\n const getDiffResults = await lanesMain.getDiff([from, to], options);\n return {\n ...getDiffResults,\n compsWithDiff: getDiffResults.compsWithDiff.map((item) => ({ ...item, id: item.id.toString() })),\n };\n },\n diffStatus: async (\n lanesMain: LanesMain,\n { source, target, options }: { source: string; target?: string; options?: LaneDiffStatusOptions }\n ) => {\n const sourceLaneId = LaneId.parse(source);\n const targetLaneId = target ? LaneId.parse(target) : undefined;\n return lanesMain.diffStatus(sourceLaneId, targetLaneId, options);\n },\n },\n LaneDiffStatus: {\n id: (diffStatus: LaneDiffStatus) => `${diffStatus.source.toString()}-${diffStatus.target.toString()}`,\n },\n LaneComponentDiffStatus: {\n id: (diffCompStatus: LaneComponentDiffStatus) =>\n `${diffCompStatus.componentId.toStringWithoutVersion()}-${diffCompStatus.sourceHead}-${\n diffCompStatus.targetHead\n }`,\n componentId: (diffCompStatus: LaneComponentDiffStatus) => diffCompStatus.componentId.toObject(),\n },\n Lane: {\n id: (lane: LaneData) => lane.id.toObject(),\n laneComponentIds: async (lane: LaneData) => {\n const componentIds = await lanesMainRuntime.getLaneComponentIds(lane);\n return componentIds.map((componentId) => componentId.toObject());\n },\n components: async (lane: LaneData) => {\n const laneComponents = await lanesMainRuntime.getLaneComponentModels(lane);\n return laneComponents;\n },\n readmeComponent: async (lane: LaneData) => {\n const laneReadmeComponent = await lanesMainRuntime.getLaneReadmeComponent(lane);\n return laneReadmeComponent;\n },\n createdAt: async (lane: LaneData) => {\n return lane.log?.date;\n },\n createdBy: async (lane: LaneData) => {\n return { name: lane.log?.username, email: lane.log?.email, profileImage: lane.log?.profileImage };\n },\n },\n Query: {\n lanes: () => lanesMainRuntime,\n },\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAwC;AAAA;AAGjC,SAASA,WAAW,CAACC,gBAA2B,EAAU;EAC/D,OAAO;IACLC,QAAQ,EAAE,IAAAC,qBAAG,CAAC;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACDC,SAAS,EAAE;MACTC,KAAK,EAAE;QACL;QACAC,EAAE,EAAE,MAAM,OAAO;QACjBC,IAAI,EAAE,OACJC,SAAoB,EACpB;UAAEC,GAAG;UAAEC,KAAK;UAAEC;QAA4D,CAAC,KACxE;UACH,IAAIC,KAAiB,GAAG,EAAE;UAE1B,IAAI,CAACH,GAAG,IAAIA,GAAG,CAACI,MAAM,KAAK,CAAC,EAAE;YAC5BD,KAAK,GAAG,MAAMJ,SAAS,CAACM,QAAQ,CAAC;cAAEC,eAAe,EAAE;YAAK,CAAC,CAAC;UAC7D,CAAC,MAAM;YACLH,KAAK,GAAG,IAAAI,iBAAO,EAAC,MAAMC,OAAO,CAACC,GAAG,CAACT,GAAG,CAACU,GAAG,CAAEb,EAAE,IAAKE,SAAS,CAACM,QAAQ,CAAC;cAAEM,IAAI,EAAEC,gBAAM,CAACC,KAAK,CAAChB,EA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"}
@@ -0,0 +1,7 @@
1
+ .mainLaneIcon {
2
+ > img {
3
+ height: 16px;
4
+ width: 16px;
5
+ padding: 0px 2px;
6
+ }
7
+ }
@@ -22,7 +22,7 @@ function _defineProperty2() {
22
22
  return data;
23
23
  }
24
24
  function _react() {
25
- const data = _interopRequireDefault(require("react"));
25
+ const data = _interopRequireWildcard(require("react"));
26
26
  _react = function () {
27
27
  return data;
28
28
  };
@@ -71,7 +71,7 @@ function _designUiPages() {
71
71
  return data;
72
72
  }
73
73
  function _scope() {
74
- const data = _interopRequireDefault(require("@teambit/scope"));
74
+ const data = _interopRequireWildcard(require("@teambit/scope"));
75
75
  _scope = function () {
76
76
  return data;
77
77
  };
@@ -154,6 +154,20 @@ function _lanesUiCompare2() {
154
154
  };
155
155
  return data;
156
156
  }
157
+ function _scopeUi() {
158
+ const data = require("@teambit/scope.ui.scope-icon");
159
+ _scopeUi = function () {
160
+ return data;
161
+ };
162
+ return data;
163
+ }
164
+ function _lanesUiModule() {
165
+ const data = _interopRequireDefault(require("./lanes.ui.module.scss"));
166
+ _lanesUiModule = function () {
167
+ return data;
168
+ };
169
+ return data;
170
+ }
157
171
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
158
172
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
159
173
  class LanesUI {
@@ -357,8 +371,18 @@ class LanesUI {
357
371
  this.registerLanesRoutes();
358
372
  }
359
373
  getLanesSwitcher() {
374
+ const mainIcon = () => {
375
+ const scope = (0, _react().useContext)(_scope().ScopeContext);
376
+ return /*#__PURE__*/_react().default.createElement(_scopeUi().ScopeIcon, {
377
+ size: 24,
378
+ scopeImage: scope.icon,
379
+ bgColor: scope.backgroundIconColor,
380
+ className: _lanesUiModule().default.mainLaneIcon
381
+ });
382
+ };
360
383
  const LanesSwitcher = /*#__PURE__*/_react().default.createElement(_lanesUiNavigation().LaneSwitcher, {
361
- groupByScope: this.lanesHost === 'workspace'
384
+ groupByScope: this.lanesHost === 'workspace',
385
+ mainIcon: this.lanesHost === 'scope' ? mainIcon : undefined
362
386
  });
363
387
  return LanesSwitcher;
364
388
  }
@@ -1 +1 @@
1
- {"version":3,"names":["LanesUI","constructor","componentUI","componentCompareUI","routeSlot","navSlot","menuWidgetSlot","overviewSlot","laneProviderIgnoreSlot","workspace","scope","idFromLocation","useIdFromLocation","lanesModel","useLanes","laneFromUrl","useViewedLaneFromUrl","laneComponentId","isDefault","resolveComponentFromUrl","undefined","getLaneComponentIdFromUrl","toString","log","logHead","version","children","ignoreFns","values","props","tabs","base","compare","host","hostAspect","lanesHost","WorkspaceAspect","id","ScopeAspect","registerHostAspectRoutes","registerRoutes","getLaneRoutes","registerMenuRoutes","getMenuRoutes","path","LanesModel","lanesPrefix","lanePath","getLaneOverview","getLaneComponent","getLanesComparePage","overrideComputeLaneUrl","fn","prefix","getLaneComponentUrl","getLaneIdFromPathname","getLaneUrl","getComponentUI","componentId","useComponentId","useComponentFilters","getLaneComponentMenu","getMenu","getLaneCompare","getLanesOverviewMenu","registerMenuWidget","menuItems","register","registerLaneProviderIgnoreSlot","ignoreFn","registerLanesRoutes","registerNavigation","href","exact","order","hide","viewedLane","lanes","length","getLanesSwitcher","LanesSwitcher","getLanesProvider","LanesProvider","getUseLanes","registerLanesDropdown","registerSidebarLink","component","Gallery","weight","registerRoute","route","registerOverviewLine","lines","routes","provider","uiUi","workspaceUi","scopeUi","_","harmony","config","String","get","lanesUi","registerRenderHooks","reactContext","renderContext","currentLane","UIAspect","ComponentAspect","ComponentCompareAspect","UIRuntime","Slot","withType","LanesAspect","addRuntime"],"sources":["lanes.ui.runtime.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport { Route, RouteProps } from 'react-router-dom';\nimport { Slot, Harmony, SlotRegistry } from '@teambit/harmony';\nimport { LaneCompare, LaneCompareProps as DefaultLaneCompareProps } from '@teambit/lanes.ui.compare.lane-compare';\nimport { UIRuntime, UiUI, UIAspect } from '@teambit/ui';\nimport { LanesAspect } from '@teambit/lanes';\nimport { NavigationSlot, RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { NotFoundPage } from '@teambit/design.ui.pages.not-found';\nimport ScopeAspect, { ScopeUI } from '@teambit/scope';\nimport WorkspaceAspect, { WorkspaceUI } from '@teambit/workspace';\nimport ComponentAspect, { ComponentID, ComponentUI, useIdFromLocation } from '@teambit/component';\nimport { MenuWidget, MenuWidgetSlot } from '@teambit/ui-foundation.ui.menu';\nimport { LaneOverview, LaneOverviewLine, LaneOverviewLineSlot } from '@teambit/lanes.ui.lane-overview';\nimport {\n LanesNavPlugin,\n LanesOrderedNavigationSlot,\n LanesOverviewMenu,\n} from '@teambit/lanes.ui.menus.lanes-overview-menu';\nimport { UseLaneMenu } from '@teambit/lanes.ui.menus.use-lanes-menu';\nimport { LanesHost, LanesModel } from '@teambit/lanes.ui.models.lanes-model';\nimport { LanesProvider, useLanes, IgnoreDerivingFromUrl } from '@teambit/lanes.hooks.use-lanes';\nimport { LaneSwitcher } from '@teambit/lanes.ui.navigation.lane-switcher';\nimport { LaneId } from '@teambit/lane-id';\nimport { useViewedLaneFromUrl } from '@teambit/lanes.hooks.use-viewed-lane-from-url';\nimport { ComponentCompareAspect, ComponentCompareUI } from '@teambit/component-compare';\nimport { LaneComparePage } from '@teambit/lanes.ui.compare.lane-compare-page';\n\nexport type LaneCompareProps = Partial<DefaultLaneCompareProps>;\nexport type LaneProviderIgnoreSlot = SlotRegistry<IgnoreDerivingFromUrl>;\n\nexport class LanesUI {\n static dependencies = [UIAspect, ComponentAspect, WorkspaceAspect, ScopeAspect, ComponentCompareAspect];\n\n static runtime = UIRuntime;\n static slots = [\n Slot.withType<RouteProps>(),\n Slot.withType<LaneOverviewLineSlot>(),\n Slot.withType<NavigationSlot>(),\n Slot.withType<MenuWidgetSlot>(),\n Slot.withType<LaneProviderIgnoreSlot>(),\n ];\n\n constructor(\n private componentUI: ComponentUI,\n private componentCompareUI: ComponentCompareUI,\n private routeSlot: RouteSlot,\n private navSlot: LanesOrderedNavigationSlot,\n private menuWidgetSlot: MenuWidgetSlot,\n /**\n * overview line slot to add new lines beneath the overview section\n */\n private overviewSlot: LaneOverviewLineSlot,\n private laneProviderIgnoreSlot: LaneProviderIgnoreSlot,\n private workspace?: WorkspaceUI,\n private scope?: ScopeUI\n ) {\n this.hostAspect = workspace || scope;\n this.lanesHost = workspace ? 'workspace' : 'scope';\n this.host = workspace ? WorkspaceAspect.id : ScopeAspect.id;\n }\n\n private readonly lanesHost: LanesHost;\n private readonly hostAspect?: WorkspaceUI | ScopeUI;\n private readonly host: string;\n\n private registerHostAspectRoutes() {\n if (!this.hostAspect) return;\n this.hostAspect.registerRoutes(this.getLaneRoutes());\n this.hostAspect.registerMenuRoutes(this.getMenuRoutes());\n }\n\n getLaneRoutes() {\n return [\n {\n path: LanesModel.lanesPrefix,\n children: (\n <>\n <Route path={LanesModel.lanePath}>\n <Route index element={this.getLaneOverview()} />\n <Route path=\"~component/*\" element={this.getLaneComponent()} />\n <Route path=\"~compare/*\" element={this.getLanesComparePage()} />\n <Route path=\"*\" element={<NotFoundPage />} />\n </Route>\n <Route path=\"*\" element={<NotFoundPage />} />\n </>\n ),\n },\n ];\n }\n\n overrideComputeLaneUrl(\n fn: () => {\n prefix: string;\n path: string;\n getLaneIdFromPathname: (pathname: string) => LaneId | undefined;\n getLaneUrl: (laneId: LaneId, relative?: boolean) => string;\n getLaneComponentUrl: (componentId: ComponentID, laneId: LaneId) => string;\n }\n ) {\n const { prefix, path, getLaneComponentUrl, getLaneIdFromPathname, getLaneUrl } = fn();\n LanesModel.lanesPrefix = prefix;\n LanesModel.lanePath = path;\n LanesModel.getLaneComponentUrl = getLaneComponentUrl;\n LanesModel.getLaneUrl = getLaneUrl;\n LanesModel.getLaneIdFromPathname = getLaneIdFromPathname;\n }\n\n // getLaneReadme() {\n // return <LaneReadmeOverview host={this.host} overviewSlot={this.overviewSlot} routeSlot={this.routeSlot} />;\n // }\n\n getLaneComponentIdFromUrl = () => {\n const idFromLocation = useIdFromLocation();\n const { lanesModel } = useLanes();\n const laneFromUrl = useViewedLaneFromUrl();\n const laneComponentId =\n idFromLocation && !laneFromUrl?.isDefault()\n ? lanesModel?.resolveComponentFromUrl(idFromLocation, laneFromUrl)\n : undefined;\n return laneComponentId;\n };\n\n useComponentId = () => {\n return this.getLaneComponentIdFromUrl()?.toString();\n };\n\n useComponentFilters = () => {\n const laneComponentId = this.getLaneComponentIdFromUrl();\n\n return {\n log: laneComponentId && {\n logHead: laneComponentId.version,\n },\n };\n };\n\n getLaneComponent() {\n return this.componentUI.getComponentUI(this.host, {\n componentId: this.useComponentId,\n useComponentFilters: this.useComponentFilters,\n });\n }\n\n getLaneComponentMenu() {\n return this.componentUI.getMenu(this.host, {\n componentId: this.useComponentId,\n useComponentFilters: this.useComponentFilters,\n });\n }\n\n getLaneOverview() {\n return <LaneOverview routeSlot={this.routeSlot} overviewSlot={this.overviewSlot} host={this.lanesHost} />;\n }\n\n getLanesComparePage() {\n return <LaneComparePage getLaneCompare={this.getLaneCompare} groupByScope={this.lanesHost === 'workspace'} />;\n }\n\n getMenuRoutes() {\n return [\n {\n path: LanesModel.lanesPrefix,\n children: (\n <Route path={`${LanesModel.lanePath}/*`}>\n <Route path={'*'} element={this.getLanesOverviewMenu()} />\n <Route path=\"~component/*\" element={this.getLaneComponentMenu()} />\n </Route>\n ),\n },\n ];\n }\n\n getLanesOverviewMenu() {\n return <LanesOverviewMenu navigationSlot={this.navSlot} widgetSlot={this.menuWidgetSlot} />;\n }\n\n registerMenuWidget(...menuItems: MenuWidget[]) {\n this.menuWidgetSlot.register(menuItems);\n return this;\n }\n\n registerLaneProviderIgnoreSlot(ignoreFn: IgnoreDerivingFromUrl) {\n this.laneProviderIgnoreSlot.register(ignoreFn);\n return this;\n }\n\n private registerLanesRoutes() {\n this.registerNavigation([\n // {\n // props: {\n // href: '.',\n // exact: true,\n // children: 'README',\n // },\n // order: 1,\n // hide: () => {\n // const { lanesModel } = useLanes();\n // return !lanesModel?.viewedLane?.readmeComponent;\n // },\n // },\n {\n props: {\n href: '.',\n exact: true,\n children: 'Overview',\n },\n order: 1,\n },\n {\n props: {\n href: '~compare',\n children: 'Compare',\n },\n order: 2,\n hide: () => {\n const { lanesModel } = useLanes();\n return !lanesModel?.viewedLane || lanesModel?.lanes.length < 2;\n },\n },\n ]);\n }\n\n private registerRoutes() {\n this.registerHostAspectRoutes();\n this.registerLanesRoutes();\n }\n\n getLanesSwitcher() {\n const LanesSwitcher = <LaneSwitcher groupByScope={this.lanesHost === 'workspace'} />;\n return LanesSwitcher;\n }\n\n getLanesProvider() {\n return LanesProvider;\n }\n\n getUseLanes() {\n return useLanes;\n }\n\n private registerLanesDropdown() {\n const LanesSwitcher = this.getLanesSwitcher();\n\n this.hostAspect?.registerSidebarLink({\n component: function Gallery() {\n return LanesSwitcher;\n },\n weight: 1000,\n });\n }\n\n private renderContext = ({ children }: { children: ReactNode }) => {\n const ignoreFns = this.laneProviderIgnoreSlot.values();\n\n return <LanesProvider ignoreDerivingFromUrl={ignoreFns}>{children}</LanesProvider>;\n };\n\n registerRoute(route: RouteProps) {\n this.routeSlot.register(route);\n return this;\n }\n\n /**\n * register a new line beneath the lane overview section.\n */\n registerOverviewLine(...lines: LaneOverviewLine[]) {\n this.overviewSlot.register(lines);\n return this;\n }\n\n registerNavigation(routes: LanesNavPlugin[]) {\n this.navSlot.register(routes);\n }\n\n getLaneCompare = (props: LaneCompareProps) => {\n const tabs = this.componentCompareUI.tabs;\n\n if (!props.base || !props.compare) return null;\n\n return (\n <LaneCompare\n {...props}\n base={props.base}\n compare={props.compare}\n host={props.host || this.host}\n tabs={props.tabs || tabs}\n />\n );\n };\n\n static async provider(\n [uiUi, componentUI, workspaceUi, scopeUi, componentCompareUI]: [\n UiUI,\n ComponentUI,\n WorkspaceUI,\n ScopeUI,\n ComponentCompareUI\n ],\n _,\n [routeSlot, overviewSlot, navSlot, menuWidgetSlot, laneProviderIgnoreSlot]: [\n RouteSlot,\n LaneOverviewLineSlot,\n LanesOrderedNavigationSlot,\n MenuWidgetSlot,\n LaneProviderIgnoreSlot\n ],\n harmony: Harmony\n ) {\n const { config } = harmony;\n const host = String(config.get('teambit.harmony/bit'));\n let workspace: WorkspaceUI | undefined;\n let scope: ScopeUI | undefined;\n if (host === WorkspaceAspect.id) {\n workspace = workspaceUi;\n }\n if (host === ScopeAspect.id) {\n scope = scopeUi;\n }\n const lanesUi = new LanesUI(\n componentUI,\n componentCompareUI,\n routeSlot,\n navSlot,\n overviewSlot,\n menuWidgetSlot,\n laneProviderIgnoreSlot,\n workspace,\n scope\n );\n if (uiUi) uiUi.registerRenderHooks({ reactContext: lanesUi.renderContext });\n lanesUi.registerRoutes();\n lanesUi.registerMenuWidget(() => {\n const { lanesModel } = useLanes();\n if (!lanesModel?.viewedLane) return null;\n const { viewedLane, currentLane } = lanesModel;\n return (\n <UseLaneMenu\n actionName={'Import'}\n actionIcon={'terminal'}\n host={lanesUi.lanesHost}\n viewedLaneId={viewedLane.id}\n currentLaneId={currentLane?.id}\n />\n );\n });\n lanesUi.registerLanesDropdown();\n return lanesUi;\n }\n}\n\nexport default LanesUI;\n\nLanesAspect.addRuntime(LanesUI);\n"],"mappings":"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"}
1
+ {"version":3,"names":["LanesUI","constructor","componentUI","componentCompareUI","routeSlot","navSlot","menuWidgetSlot","overviewSlot","laneProviderIgnoreSlot","workspace","scope","idFromLocation","useIdFromLocation","lanesModel","useLanes","laneFromUrl","useViewedLaneFromUrl","laneComponentId","isDefault","resolveComponentFromUrl","undefined","getLaneComponentIdFromUrl","toString","log","logHead","version","children","ignoreFns","values","props","tabs","base","compare","host","hostAspect","lanesHost","WorkspaceAspect","id","ScopeAspect","registerHostAspectRoutes","registerRoutes","getLaneRoutes","registerMenuRoutes","getMenuRoutes","path","LanesModel","lanesPrefix","lanePath","getLaneOverview","getLaneComponent","getLanesComparePage","overrideComputeLaneUrl","fn","prefix","getLaneComponentUrl","getLaneIdFromPathname","getLaneUrl","getComponentUI","componentId","useComponentId","useComponentFilters","getLaneComponentMenu","getMenu","getLaneCompare","getLanesOverviewMenu","registerMenuWidget","menuItems","register","registerLaneProviderIgnoreSlot","ignoreFn","registerLanesRoutes","registerNavigation","href","exact","order","hide","viewedLane","lanes","length","getLanesSwitcher","mainIcon","useContext","ScopeContext","icon","backgroundIconColor","styles","mainLaneIcon","LanesSwitcher","getLanesProvider","LanesProvider","getUseLanes","registerLanesDropdown","registerSidebarLink","component","Gallery","weight","registerRoute","route","registerOverviewLine","lines","routes","provider","uiUi","workspaceUi","scopeUi","_","harmony","config","String","get","lanesUi","registerRenderHooks","reactContext","renderContext","currentLane","UIAspect","ComponentAspect","ComponentCompareAspect","UIRuntime","Slot","withType","LanesAspect","addRuntime"],"sources":["lanes.ui.runtime.tsx"],"sourcesContent":["import React, { ReactNode, useContext } from 'react';\nimport { Route, RouteProps } from 'react-router-dom';\nimport { Slot, Harmony, SlotRegistry } from '@teambit/harmony';\nimport { LaneCompare, LaneCompareProps as DefaultLaneCompareProps } from '@teambit/lanes.ui.compare.lane-compare';\nimport { UIRuntime, UiUI, UIAspect } from '@teambit/ui';\nimport { LanesAspect } from '@teambit/lanes';\nimport { NavigationSlot, RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { NotFoundPage } from '@teambit/design.ui.pages.not-found';\nimport ScopeAspect, { ScopeContext, ScopeUI } from '@teambit/scope';\nimport WorkspaceAspect, { WorkspaceUI } from '@teambit/workspace';\nimport ComponentAspect, { ComponentID, ComponentUI, useIdFromLocation } from '@teambit/component';\nimport { MenuWidget, MenuWidgetSlot } from '@teambit/ui-foundation.ui.menu';\nimport { LaneOverview, LaneOverviewLine, LaneOverviewLineSlot } from '@teambit/lanes.ui.lane-overview';\nimport {\n LanesNavPlugin,\n LanesOrderedNavigationSlot,\n LanesOverviewMenu,\n} from '@teambit/lanes.ui.menus.lanes-overview-menu';\nimport { UseLaneMenu } from '@teambit/lanes.ui.menus.use-lanes-menu';\nimport { LanesHost, LanesModel } from '@teambit/lanes.ui.models.lanes-model';\nimport { LanesProvider, useLanes, IgnoreDerivingFromUrl } from '@teambit/lanes.hooks.use-lanes';\nimport { LaneSwitcher } from '@teambit/lanes.ui.navigation.lane-switcher';\nimport { LaneId } from '@teambit/lane-id';\nimport { useViewedLaneFromUrl } from '@teambit/lanes.hooks.use-viewed-lane-from-url';\nimport { ComponentCompareAspect, ComponentCompareUI } from '@teambit/component-compare';\nimport { LaneComparePage } from '@teambit/lanes.ui.compare.lane-compare-page';\nimport { ScopeIcon } from '@teambit/scope.ui.scope-icon';\n\nimport styles from './lanes.ui.module.scss';\n\nexport type LaneCompareProps = Partial<DefaultLaneCompareProps>;\nexport type LaneProviderIgnoreSlot = SlotRegistry<IgnoreDerivingFromUrl>;\n\nexport class LanesUI {\n static dependencies = [UIAspect, ComponentAspect, WorkspaceAspect, ScopeAspect, ComponentCompareAspect];\n\n static runtime = UIRuntime;\n static slots = [\n Slot.withType<RouteProps>(),\n Slot.withType<LaneOverviewLineSlot>(),\n Slot.withType<NavigationSlot>(),\n Slot.withType<MenuWidgetSlot>(),\n Slot.withType<LaneProviderIgnoreSlot>(),\n ];\n\n constructor(\n private componentUI: ComponentUI,\n private componentCompareUI: ComponentCompareUI,\n private routeSlot: RouteSlot,\n private navSlot: LanesOrderedNavigationSlot,\n private menuWidgetSlot: MenuWidgetSlot,\n /**\n * overview line slot to add new lines beneath the overview section\n */\n private overviewSlot: LaneOverviewLineSlot,\n private laneProviderIgnoreSlot: LaneProviderIgnoreSlot,\n private workspace?: WorkspaceUI,\n private scope?: ScopeUI\n ) {\n this.hostAspect = workspace || scope;\n this.lanesHost = workspace ? 'workspace' : 'scope';\n this.host = workspace ? WorkspaceAspect.id : ScopeAspect.id;\n }\n\n private readonly lanesHost: LanesHost;\n private readonly hostAspect?: WorkspaceUI | ScopeUI;\n private readonly host: string;\n\n private registerHostAspectRoutes() {\n if (!this.hostAspect) return;\n this.hostAspect.registerRoutes(this.getLaneRoutes());\n this.hostAspect.registerMenuRoutes(this.getMenuRoutes());\n }\n\n getLaneRoutes() {\n return [\n {\n path: LanesModel.lanesPrefix,\n children: (\n <>\n <Route path={LanesModel.lanePath}>\n <Route index element={this.getLaneOverview()} />\n <Route path=\"~component/*\" element={this.getLaneComponent()} />\n <Route path=\"~compare/*\" element={this.getLanesComparePage()} />\n <Route path=\"*\" element={<NotFoundPage />} />\n </Route>\n <Route path=\"*\" element={<NotFoundPage />} />\n </>\n ),\n },\n ];\n }\n\n overrideComputeLaneUrl(\n fn: () => {\n prefix: string;\n path: string;\n getLaneIdFromPathname: (pathname: string) => LaneId | undefined;\n getLaneUrl: (laneId: LaneId, relative?: boolean) => string;\n getLaneComponentUrl: (componentId: ComponentID, laneId: LaneId) => string;\n }\n ) {\n const { prefix, path, getLaneComponentUrl, getLaneIdFromPathname, getLaneUrl } = fn();\n LanesModel.lanesPrefix = prefix;\n LanesModel.lanePath = path;\n LanesModel.getLaneComponentUrl = getLaneComponentUrl;\n LanesModel.getLaneUrl = getLaneUrl;\n LanesModel.getLaneIdFromPathname = getLaneIdFromPathname;\n }\n\n // getLaneReadme() {\n // return <LaneReadmeOverview host={this.host} overviewSlot={this.overviewSlot} routeSlot={this.routeSlot} />;\n // }\n\n getLaneComponentIdFromUrl = () => {\n const idFromLocation = useIdFromLocation();\n const { lanesModel } = useLanes();\n const laneFromUrl = useViewedLaneFromUrl();\n const laneComponentId =\n idFromLocation && !laneFromUrl?.isDefault()\n ? lanesModel?.resolveComponentFromUrl(idFromLocation, laneFromUrl)\n : undefined;\n return laneComponentId;\n };\n\n useComponentId = () => {\n return this.getLaneComponentIdFromUrl()?.toString();\n };\n\n useComponentFilters = () => {\n const laneComponentId = this.getLaneComponentIdFromUrl();\n\n return {\n log: laneComponentId && {\n logHead: laneComponentId.version,\n },\n };\n };\n\n getLaneComponent() {\n return this.componentUI.getComponentUI(this.host, {\n componentId: this.useComponentId,\n useComponentFilters: this.useComponentFilters,\n });\n }\n\n getLaneComponentMenu() {\n return this.componentUI.getMenu(this.host, {\n componentId: this.useComponentId,\n useComponentFilters: this.useComponentFilters,\n });\n }\n\n getLaneOverview() {\n return <LaneOverview routeSlot={this.routeSlot} overviewSlot={this.overviewSlot} host={this.lanesHost} />;\n }\n\n getLanesComparePage() {\n return <LaneComparePage getLaneCompare={this.getLaneCompare} groupByScope={this.lanesHost === 'workspace'} />;\n }\n\n getMenuRoutes() {\n return [\n {\n path: LanesModel.lanesPrefix,\n children: (\n <Route path={`${LanesModel.lanePath}/*`}>\n <Route path={'*'} element={this.getLanesOverviewMenu()} />\n <Route path=\"~component/*\" element={this.getLaneComponentMenu()} />\n </Route>\n ),\n },\n ];\n }\n\n getLanesOverviewMenu() {\n return <LanesOverviewMenu navigationSlot={this.navSlot} widgetSlot={this.menuWidgetSlot} />;\n }\n\n registerMenuWidget(...menuItems: MenuWidget[]) {\n this.menuWidgetSlot.register(menuItems);\n return this;\n }\n\n registerLaneProviderIgnoreSlot(ignoreFn: IgnoreDerivingFromUrl) {\n this.laneProviderIgnoreSlot.register(ignoreFn);\n return this;\n }\n\n private registerLanesRoutes() {\n this.registerNavigation([\n // {\n // props: {\n // href: '.',\n // exact: true,\n // children: 'README',\n // },\n // order: 1,\n // hide: () => {\n // const { lanesModel } = useLanes();\n // return !lanesModel?.viewedLane?.readmeComponent;\n // },\n // },\n {\n props: {\n href: '.',\n exact: true,\n children: 'Overview',\n },\n order: 1,\n },\n {\n props: {\n href: '~compare',\n children: 'Compare',\n },\n order: 2,\n hide: () => {\n const { lanesModel } = useLanes();\n return !lanesModel?.viewedLane || lanesModel?.lanes.length < 2;\n },\n },\n ]);\n }\n\n private registerRoutes() {\n this.registerHostAspectRoutes();\n this.registerLanesRoutes();\n }\n\n getLanesSwitcher() {\n const mainIcon = () => {\n const scope = useContext(ScopeContext);\n return (\n <ScopeIcon\n size={24}\n scopeImage={scope.icon}\n bgColor={scope.backgroundIconColor}\n className={styles.mainLaneIcon}\n />\n );\n };\n\n const LanesSwitcher = (\n <LaneSwitcher\n groupByScope={this.lanesHost === 'workspace'}\n mainIcon={this.lanesHost === 'scope' ? mainIcon : undefined}\n />\n );\n\n return LanesSwitcher;\n }\n\n getLanesProvider() {\n return LanesProvider;\n }\n\n getUseLanes() {\n return useLanes;\n }\n\n private registerLanesDropdown() {\n const LanesSwitcher = this.getLanesSwitcher();\n\n this.hostAspect?.registerSidebarLink({\n component: function Gallery() {\n return LanesSwitcher;\n },\n weight: 1000,\n });\n }\n\n private renderContext = ({ children }: { children: ReactNode }) => {\n const ignoreFns = this.laneProviderIgnoreSlot.values();\n\n return <LanesProvider ignoreDerivingFromUrl={ignoreFns}>{children}</LanesProvider>;\n };\n\n registerRoute(route: RouteProps) {\n this.routeSlot.register(route);\n return this;\n }\n\n /**\n * register a new line beneath the lane overview section.\n */\n registerOverviewLine(...lines: LaneOverviewLine[]) {\n this.overviewSlot.register(lines);\n return this;\n }\n\n registerNavigation(routes: LanesNavPlugin[]) {\n this.navSlot.register(routes);\n }\n\n getLaneCompare = (props: LaneCompareProps) => {\n const tabs = this.componentCompareUI.tabs;\n\n if (!props.base || !props.compare) return null;\n\n return (\n <LaneCompare\n {...props}\n base={props.base}\n compare={props.compare}\n host={props.host || this.host}\n tabs={props.tabs || tabs}\n />\n );\n };\n\n static async provider(\n [uiUi, componentUI, workspaceUi, scopeUi, componentCompareUI]: [\n UiUI,\n ComponentUI,\n WorkspaceUI,\n ScopeUI,\n ComponentCompareUI\n ],\n _,\n [routeSlot, overviewSlot, navSlot, menuWidgetSlot, laneProviderIgnoreSlot]: [\n RouteSlot,\n LaneOverviewLineSlot,\n LanesOrderedNavigationSlot,\n MenuWidgetSlot,\n LaneProviderIgnoreSlot\n ],\n harmony: Harmony\n ) {\n const { config } = harmony;\n const host = String(config.get('teambit.harmony/bit'));\n let workspace: WorkspaceUI | undefined;\n let scope: ScopeUI | undefined;\n if (host === WorkspaceAspect.id) {\n workspace = workspaceUi;\n }\n if (host === ScopeAspect.id) {\n scope = scopeUi;\n }\n const lanesUi = new LanesUI(\n componentUI,\n componentCompareUI,\n routeSlot,\n navSlot,\n overviewSlot,\n menuWidgetSlot,\n laneProviderIgnoreSlot,\n workspace,\n scope\n );\n if (uiUi) uiUi.registerRenderHooks({ reactContext: lanesUi.renderContext });\n lanesUi.registerRoutes();\n lanesUi.registerMenuWidget(() => {\n const { lanesModel } = useLanes();\n if (!lanesModel?.viewedLane) return null;\n const { viewedLane, currentLane } = lanesModel;\n return (\n <UseLaneMenu\n actionName={'Import'}\n actionIcon={'terminal'}\n host={lanesUi.lanesHost}\n viewedLaneId={viewedLane.id}\n currentLaneId={currentLane?.id}\n />\n );\n });\n lanesUi.registerLanesDropdown();\n return lanesUi;\n }\n}\n\nexport default LanesUI;\n\nLanesAspect.addRuntime(LanesUI);\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.lanes_lanes@0.0.592/dist/lanes.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.lanes_lanes@0.0.592/dist/lanes.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.lanes_lanes@0.0.593/dist/lanes.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.lanes_lanes@0.0.593/dist/lanes.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -0,0 +1,7 @@
1
+ .mainLaneIcon {
2
+ > img {
3
+ height: 16px;
4
+ width: 16px;
5
+ padding: 0px 2px;
6
+ }
7
+ }
@@ -1,4 +1,4 @@
1
- import React, { ReactNode } from 'react';
1
+ import React, { ReactNode, useContext } from 'react';
2
2
  import { Route, RouteProps } from 'react-router-dom';
3
3
  import { Slot, Harmony, SlotRegistry } from '@teambit/harmony';
4
4
  import { LaneCompare, LaneCompareProps as DefaultLaneCompareProps } from '@teambit/lanes.ui.compare.lane-compare';
@@ -6,7 +6,7 @@ import { UIRuntime, UiUI, UIAspect } from '@teambit/ui';
6
6
  import { LanesAspect } from '@teambit/lanes';
7
7
  import { NavigationSlot, RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';
8
8
  import { NotFoundPage } from '@teambit/design.ui.pages.not-found';
9
- import ScopeAspect, { ScopeUI } from '@teambit/scope';
9
+ import ScopeAspect, { ScopeContext, ScopeUI } from '@teambit/scope';
10
10
  import WorkspaceAspect, { WorkspaceUI } from '@teambit/workspace';
11
11
  import ComponentAspect, { ComponentID, ComponentUI, useIdFromLocation } from '@teambit/component';
12
12
  import { MenuWidget, MenuWidgetSlot } from '@teambit/ui-foundation.ui.menu';
@@ -24,6 +24,9 @@ import { LaneId } from '@teambit/lane-id';
24
24
  import { useViewedLaneFromUrl } from '@teambit/lanes.hooks.use-viewed-lane-from-url';
25
25
  import { ComponentCompareAspect, ComponentCompareUI } from '@teambit/component-compare';
26
26
  import { LaneComparePage } from '@teambit/lanes.ui.compare.lane-compare-page';
27
+ import { ScopeIcon } from '@teambit/scope.ui.scope-icon';
28
+
29
+ import styles from './lanes.ui.module.scss';
27
30
 
28
31
  export type LaneCompareProps = Partial<DefaultLaneCompareProps>;
29
32
  export type LaneProviderIgnoreSlot = SlotRegistry<IgnoreDerivingFromUrl>;
@@ -226,7 +229,25 @@ export class LanesUI {
226
229
  }
227
230
 
228
231
  getLanesSwitcher() {
229
- const LanesSwitcher = <LaneSwitcher groupByScope={this.lanesHost === 'workspace'} />;
232
+ const mainIcon = () => {
233
+ const scope = useContext(ScopeContext);
234
+ return (
235
+ <ScopeIcon
236
+ size={24}
237
+ scopeImage={scope.icon}
238
+ bgColor={scope.backgroundIconColor}
239
+ className={styles.mainLaneIcon}
240
+ />
241
+ );
242
+ };
243
+
244
+ const LanesSwitcher = (
245
+ <LaneSwitcher
246
+ groupByScope={this.lanesHost === 'workspace'}
247
+ mainIcon={this.lanesHost === 'scope' ? mainIcon : undefined}
248
+ />
249
+ );
250
+
230
251
  return LanesSwitcher;
231
252
  }
232
253
 
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/lanes",
3
- "version": "0.0.592",
3
+ "version": "0.0.593",
4
4
  "homepage": "https://bit.dev/teambit/lanes/lanes",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.lanes",
8
8
  "name": "lanes",
9
- "version": "0.0.592"
9
+ "version": "0.0.593"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
@@ -17,37 +17,39 @@
17
17
  "core-js": "^3.0.0",
18
18
  "@babel/runtime": "7.20.0",
19
19
  "@teambit/harmony": "0.4.6",
20
+ "@teambit/scope.ui.scope-icon": "0.0.91",
20
21
  "@teambit/bit-error": "0.0.402",
21
22
  "@teambit/component-version": "0.0.408",
22
- "@teambit/lane-id": "0.0.200",
23
- "@teambit/scope": "0.0.1020",
24
- "@teambit/lanes.ui.models.lanes-model": "0.0.108",
25
- "@teambit/cli": "0.0.683",
26
- "@teambit/workspace": "0.0.1020",
27
- "@teambit/express": "0.0.781",
28
- "@teambit/logger": "0.0.776",
29
- "@teambit/graphql": "0.0.1020",
30
- "@teambit/component-compare": "0.0.268",
31
- "@teambit/component-writer": "0.0.56",
32
- "@teambit/component": "0.0.1020",
33
- "@teambit/export": "0.0.1020",
34
- "@teambit/importer": "0.0.449",
35
- "@teambit/lanes.entities.lane-diff": "0.0.45",
36
- "@teambit/lanes.modules.diff": "0.0.318",
23
+ "@teambit/lane-id": "0.0.201",
24
+ "@teambit/scope": "0.0.1021",
25
+ "@teambit/snapping": "0.0.336",
26
+ "@teambit/lanes.ui.models.lanes-model": "0.0.109",
27
+ "@teambit/cli": "0.0.684",
28
+ "@teambit/workspace": "0.0.1021",
29
+ "@teambit/express": "0.0.782",
30
+ "@teambit/logger": "0.0.777",
31
+ "@teambit/graphql": "0.0.1021",
32
+ "@teambit/component-compare": "0.0.269",
33
+ "@teambit/component-writer": "0.0.57",
34
+ "@teambit/component": "0.0.1021",
35
+ "@teambit/export": "0.0.1021",
36
+ "@teambit/importer": "0.0.450",
37
+ "@teambit/lanes.entities.lane-diff": "0.0.46",
38
+ "@teambit/lanes.modules.diff": "0.0.319",
37
39
  "@teambit/legacy-bit-id": "0.0.423",
38
- "@teambit/merging": "0.0.335",
40
+ "@teambit/merging": "0.0.336",
39
41
  "@teambit/design.ui.pages.not-found": "0.0.366",
40
- "@teambit/lanes.hooks.use-lanes": "0.0.146",
41
- "@teambit/lanes.hooks.use-viewed-lane-from-url": "0.0.108",
42
- "@teambit/lanes.ui.compare.lane-compare-page": "0.0.48",
43
- "@teambit/lanes.ui.compare.lane-compare": "0.0.64",
44
- "@teambit/lanes.ui.lane-overview": "0.0.109",
42
+ "@teambit/lanes.hooks.use-lanes": "0.0.147",
43
+ "@teambit/lanes.hooks.use-viewed-lane-from-url": "0.0.109",
44
+ "@teambit/lanes.ui.compare.lane-compare-page": "0.0.49",
45
+ "@teambit/lanes.ui.compare.lane-compare": "0.0.65",
46
+ "@teambit/lanes.ui.lane-overview": "0.0.110",
45
47
  "@teambit/lanes.ui.menus.lanes-overview-menu": "0.0.5",
46
- "@teambit/lanes.ui.menus.use-lanes-menu": "0.0.108",
47
- "@teambit/lanes.ui.navigation.lane-switcher": "0.0.108",
48
+ "@teambit/lanes.ui.menus.use-lanes-menu": "0.0.109",
49
+ "@teambit/lanes.ui.navigation.lane-switcher": "0.0.109",
48
50
  "@teambit/ui-foundation.ui.menu": "0.0.497",
49
51
  "@teambit/ui-foundation.ui.react-router.slot-router": "0.0.501",
50
- "@teambit/ui": "0.0.1020"
52
+ "@teambit/ui": "0.0.1021"
51
53
  },
52
54
  "devDependencies": {
53
55
  "@types/react": "^17.0.8",
@@ -59,14 +61,13 @@
59
61
  "@types/react-dom": "^17.0.5",
60
62
  "@types/jest": "^26.0.0",
61
63
  "@types/testing-library__jest-dom": "5.9.5",
62
- "@teambit/component.testing.mock-components": "0.0.47",
63
- "@teambit/harmony.testing.load-aspect": "0.0.46",
64
- "@teambit/snapping": "0.0.335",
64
+ "@teambit/component.testing.mock-components": "0.0.48",
65
+ "@teambit/harmony.testing.load-aspect": "0.0.47",
65
66
  "@teambit/workspace.testing.mock-workspace": "0.0.14"
66
67
  },
67
68
  "peerDependencies": {
68
69
  "react-router-dom": "^6.0.0",
69
- "@teambit/legacy": "1.0.462",
70
+ "@teambit/legacy": "1.0.464",
70
71
  "react": "^16.8.0 || ^17.0.0",
71
72
  "react-dom": "^16.8.0 || ^17.0.0"
72
73
  },