@teambit/workspace 1.0.586 → 1.0.588

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.
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.workspace_workspace@1.0.586/dist/workspace.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.workspace_workspace@1.0.586/dist/workspace.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.workspace_workspace@1.0.588/dist/workspace.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.workspace_workspace@1.0.588/dist/workspace.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -157,6 +157,16 @@ const COMPONENT_SUBSCRIPTION_REMOVED = (0, _client().gql)`
157
157
  }
158
158
  }
159
159
  `;
160
+ const COMPONENT_SERVER_STARTED = (0, _client().gql)`
161
+ subscription OnComponentServerStarted {
162
+ componentServerStarted {
163
+ env
164
+ url
165
+ host
166
+ basePath
167
+ }
168
+ }
169
+ `;
160
170
  function useWorkspace(options = {}) {
161
171
  const _useDataQuery = (0, _uiFoundationUiHooks().useDataQuery)(WORKSPACE),
162
172
  {
@@ -222,13 +232,51 @@ function useWorkspace(options = {}) {
222
232
  });
223
233
  }
224
234
  });
235
+ const unSubServerStarted = subscribeToMore({
236
+ document: COMPONENT_SERVER_STARTED,
237
+ updateQuery: (prev, {
238
+ subscriptionData
239
+ }) => {
240
+ const update = subscriptionData.data;
241
+ if (!update) return prev;
242
+ const serverInfo = update.componentServerStarted;
243
+ if (!serverInfo || serverInfo.length === 0) return prev;
244
+ const updatedComponents = prev.workspace.components.map(component => {
245
+ if (component.env?.id === serverInfo[0].env) {
246
+ return _objectSpread(_objectSpread({}, component), {}, {
247
+ server: {
248
+ env: serverInfo[0].env,
249
+ url: serverInfo[0].url,
250
+ host: serverInfo[0].host,
251
+ basePath: serverInfo[0].basePath
252
+ }
253
+ });
254
+ }
255
+ return component;
256
+ });
225
257
 
226
- // TODO - sub to component removal
227
-
258
+ // If components were updated, create component models and trigger the onComponentUpdated callback
259
+ const changedComponents = updatedComponents.filter((updatedComp, index) => {
260
+ const originalComp = prev.workspace.components[index];
261
+ // Compare server information to detect changes
262
+ return originalComp.server?.url !== updatedComp.server?.url || originalComp.server?.env !== updatedComp.server?.env;
263
+ });
264
+ if (changedComponents.length > 0) {
265
+ // side effect - trigger observers for components that were updated
266
+ setTimeout(() => optionsRef.current.onComponentUpdated?.(changedComponents.map(comp => _component().ComponentModel.from(comp))));
267
+ }
268
+ return _objectSpread(_objectSpread({}, prev), {}, {
269
+ workspace: _objectSpread(_objectSpread({}, prev.workspace), {}, {
270
+ components: updatedComponents
271
+ })
272
+ });
273
+ }
274
+ });
228
275
  return () => {
229
276
  unSubCompAddition();
230
277
  unSubCompChange();
231
278
  unSubCompRemoved();
279
+ unSubServerStarted();
232
280
  };
233
281
  }, [optionsRef]);
234
282
  const workspace = (0, _react().useMemo)(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","data","require","_component","_latest","_interopRequireDefault","_uiFoundationUiHooks","_client","_componentId","_workspaceModel","_excluded","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","_objectWithoutProperties","_objectWithoutPropertiesLoose","n","indexOf","propertyIsEnumerable","hasOwnProperty","wcComponentFields","gql","WORKSPACE","COMPONENT_SUBSCRIPTION_ADDED","COMPONENT_SUBSCRIPTION_CHANGED","COMPONENT_SUBSCRIPTION_REMOVED","useWorkspace","options","_useDataQuery","useDataQuery","subscribeToMore","rest","optionsRef","useLatest","useEffect","unSubCompAddition","document","updateQuery","prev","subscriptionData","update","addedComponent","componentAdded","component","componentExists","workspace","components","find","ComponentID","isEqualObj","id","ignoreVersion","setTimeout","current","onComponentAdded","ComponentModel","from","unSubCompChange","updatedComponent","componentChanged","onComponentUpdated","map","name","unSubCompRemoved","idsToRemove","componentRemoved","componentIds","onComponentRemoved","fromObject","every","useMemo","Workspace","undefined"],"sources":["use-workspace.ts"],"sourcesContent":["import { useEffect, useMemo } from 'react';\nimport { ComponentModel } from '@teambit/component';\nimport useLatest from '@react-hook/latest';\nimport { useDataQuery } from '@teambit/ui-foundation.ui.hooks.use-data-query';\nimport { gql } from '@apollo/client';\nimport { ComponentID, ComponentIdObj } from '@teambit/component-id';\n\nimport { Workspace } from './workspace-model';\n\ntype UseWorkspaceOptions = {\n onComponentAdded?: (component: ComponentModel[]) => void;\n onComponentUpdated?: (component: ComponentModel[]) => void;\n onComponentRemoved?: (compId: ComponentID[]) => void;\n};\ntype RawComponent = { id: ComponentIdObj };\n\nconst wcComponentFields = gql`\n fragment wcComponentFields on Component {\n id {\n name\n version\n scope\n }\n aspects(include: [\"teambit.preview/preview\", \"teambit.envs/envs\"]) {\n # 'id' property in gql refers to a *global* identifier and used for caching.\n # this makes aspect data cache under the same key, even when they are under different components.\n # renaming the property fixes that.\n aspectId: id\n data\n }\n compositions {\n identifier\n }\n description\n issuesCount\n status {\n isOutdated\n isNew\n isInScope\n isStaged\n modifyInfo {\n hasModifiedFiles\n hasModifiedDependencies\n }\n isDeleted\n }\n buildStatus\n preview {\n includesEnvTemplate\n legacyHeader\n isScaling\n skipIncludes\n }\n deprecation {\n isDeprecate\n newId\n }\n server {\n env\n url\n }\n env {\n id\n icon\n }\n }\n`;\n\nconst WORKSPACE = gql`\n query workspace {\n workspace {\n name\n path\n icon\n components {\n ...wcComponentFields\n }\n }\n }\n ${wcComponentFields}\n`;\n\nconst COMPONENT_SUBSCRIPTION_ADDED = gql`\n subscription OnComponentAdded {\n componentAdded {\n component {\n ...wcComponentFields\n }\n }\n }\n ${wcComponentFields}\n`;\n\nconst COMPONENT_SUBSCRIPTION_CHANGED = gql`\n subscription OnComponentChanged {\n componentChanged {\n component {\n ...wcComponentFields\n }\n }\n }\n ${wcComponentFields}\n`;\n\nconst COMPONENT_SUBSCRIPTION_REMOVED = gql`\n subscription OnComponentRemoved {\n componentRemoved {\n componentIds {\n name\n version\n scope\n }\n }\n }\n`;\n\nexport function useWorkspace(options: UseWorkspaceOptions = {}) {\n const { data, subscribeToMore, ...rest } = useDataQuery(WORKSPACE);\n const optionsRef = useLatest(options);\n\n useEffect(() => {\n const unSubCompAddition = subscribeToMore({\n document: COMPONENT_SUBSCRIPTION_ADDED,\n updateQuery: (prev, { subscriptionData }) => {\n const update = subscriptionData.data;\n const addedComponent = update?.componentAdded?.component;\n if (!addedComponent) return prev;\n\n const componentExists = prev.workspace.components.find((component: any) =>\n ComponentID.isEqualObj(component.id, addedComponent.id, { ignoreVersion: true })\n );\n if (componentExists) return prev;\n\n // side effect - trigger observers\n setTimeout(() => optionsRef.current.onComponentAdded?.([ComponentModel.from(addedComponent)]));\n\n return {\n ...prev,\n workspace: {\n ...prev.workspace,\n components: [...prev.workspace.components, addedComponent],\n },\n };\n },\n });\n\n const unSubCompChange = subscribeToMore({\n document: COMPONENT_SUBSCRIPTION_CHANGED,\n updateQuery: (prev, { subscriptionData }) => {\n const update = subscriptionData.data;\n if (!update) return prev;\n\n const updatedComponent = update.componentChanged.component;\n // side effect - trigger observers\n setTimeout(() => optionsRef.current.onComponentUpdated?.([ComponentModel.from(updatedComponent)]));\n\n return {\n ...prev,\n workspace: {\n ...prev.workspace,\n components: prev.workspace.components.map((component) =>\n component.id.name === updatedComponent.id.name ? updatedComponent : component\n ),\n },\n };\n },\n });\n\n const unSubCompRemoved = subscribeToMore({\n document: COMPONENT_SUBSCRIPTION_REMOVED,\n updateQuery: (prev, { subscriptionData }) => {\n const idsToRemove: ComponentIdObj[] | undefined = subscriptionData?.data?.componentRemoved?.componentIds;\n if (!idsToRemove || idsToRemove.length === 0) return prev;\n\n // side effect - trigger observers\n setTimeout(() => optionsRef.current.onComponentRemoved?.(idsToRemove.map((id) => ComponentID.fromObject(id))));\n\n return {\n ...prev,\n workspace: {\n ...prev.workspace,\n components: prev.workspace.components.filter((component: RawComponent) =>\n idsToRemove.every((id) => !ComponentID.isEqualObj(id, component.id))\n ),\n },\n };\n },\n });\n\n // TODO - sub to component removal\n\n return () => {\n unSubCompAddition();\n unSubCompChange();\n unSubCompRemoved();\n };\n }, [optionsRef]);\n\n const workspace = useMemo(() => {\n return data?.workspace ? Workspace.from(data?.workspace) : undefined;\n }, [data?.workspace]);\n\n return {\n workspace,\n subscribeToMore,\n ...rest,\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","data","require","_component","_latest","_interopRequireDefault","_uiFoundationUiHooks","_client","_componentId","_workspaceModel","_excluded","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","_objectWithoutProperties","_objectWithoutPropertiesLoose","n","indexOf","propertyIsEnumerable","hasOwnProperty","wcComponentFields","gql","WORKSPACE","COMPONENT_SUBSCRIPTION_ADDED","COMPONENT_SUBSCRIPTION_CHANGED","COMPONENT_SUBSCRIPTION_REMOVED","COMPONENT_SERVER_STARTED","useWorkspace","options","_useDataQuery","useDataQuery","subscribeToMore","rest","optionsRef","useLatest","useEffect","unSubCompAddition","document","updateQuery","prev","subscriptionData","update","addedComponent","componentAdded","component","componentExists","workspace","components","find","ComponentID","isEqualObj","id","ignoreVersion","setTimeout","current","onComponentAdded","ComponentModel","from","unSubCompChange","updatedComponent","componentChanged","onComponentUpdated","map","name","unSubCompRemoved","idsToRemove","componentRemoved","componentIds","onComponentRemoved","fromObject","every","unSubServerStarted","serverInfo","componentServerStarted","updatedComponents","env","server","url","host","basePath","changedComponents","updatedComp","index","originalComp","comp","useMemo","Workspace","undefined"],"sources":["use-workspace.ts"],"sourcesContent":["import { useEffect, useMemo } from 'react';\nimport { ComponentModel } from '@teambit/component';\nimport useLatest from '@react-hook/latest';\nimport { useDataQuery } from '@teambit/ui-foundation.ui.hooks.use-data-query';\nimport { gql } from '@apollo/client';\nimport { ComponentID, ComponentIdObj } from '@teambit/component-id';\n\nimport { Workspace } from './workspace-model';\n\ntype UseWorkspaceOptions = {\n onComponentAdded?: (component: ComponentModel[]) => void;\n onComponentUpdated?: (component: ComponentModel[]) => void;\n onComponentRemoved?: (compId: ComponentID[]) => void;\n};\ntype RawComponent = { id: ComponentIdObj };\n\nconst wcComponentFields = gql`\n fragment wcComponentFields on Component {\n id {\n name\n version\n scope\n }\n aspects(include: [\"teambit.preview/preview\", \"teambit.envs/envs\"]) {\n # 'id' property in gql refers to a *global* identifier and used for caching.\n # this makes aspect data cache under the same key, even when they are under different components.\n # renaming the property fixes that.\n aspectId: id\n data\n }\n compositions {\n identifier\n }\n description\n issuesCount\n status {\n isOutdated\n isNew\n isInScope\n isStaged\n modifyInfo {\n hasModifiedFiles\n hasModifiedDependencies\n }\n isDeleted\n }\n buildStatus\n preview {\n includesEnvTemplate\n legacyHeader\n isScaling\n skipIncludes\n }\n deprecation {\n isDeprecate\n newId\n }\n server {\n env\n url\n }\n env {\n id\n icon\n }\n }\n`;\n\nconst WORKSPACE = gql`\n query workspace {\n workspace {\n name\n path\n icon\n components {\n ...wcComponentFields\n }\n }\n }\n ${wcComponentFields}\n`;\n\nconst COMPONENT_SUBSCRIPTION_ADDED = gql`\n subscription OnComponentAdded {\n componentAdded {\n component {\n ...wcComponentFields\n }\n }\n }\n ${wcComponentFields}\n`;\n\nconst COMPONENT_SUBSCRIPTION_CHANGED = gql`\n subscription OnComponentChanged {\n componentChanged {\n component {\n ...wcComponentFields\n }\n }\n }\n ${wcComponentFields}\n`;\n\nconst COMPONENT_SUBSCRIPTION_REMOVED = gql`\n subscription OnComponentRemoved {\n componentRemoved {\n componentIds {\n name\n version\n scope\n }\n }\n }\n`;\n\nconst COMPONENT_SERVER_STARTED = gql`\n subscription OnComponentServerStarted {\n componentServerStarted {\n env\n url\n host\n basePath\n }\n }\n`;\n\nexport function useWorkspace(options: UseWorkspaceOptions = {}) {\n const { data, subscribeToMore, ...rest } = useDataQuery(WORKSPACE);\n const optionsRef = useLatest(options);\n\n useEffect(() => {\n const unSubCompAddition = subscribeToMore({\n document: COMPONENT_SUBSCRIPTION_ADDED,\n updateQuery: (prev, { subscriptionData }) => {\n const update = subscriptionData.data;\n const addedComponent = update?.componentAdded?.component;\n if (!addedComponent) return prev;\n\n const componentExists = prev.workspace.components.find((component: any) =>\n ComponentID.isEqualObj(component.id, addedComponent.id, { ignoreVersion: true })\n );\n if (componentExists) return prev;\n\n // side effect - trigger observers\n setTimeout(() => optionsRef.current.onComponentAdded?.([ComponentModel.from(addedComponent)]));\n\n return {\n ...prev,\n workspace: {\n ...prev.workspace,\n components: [...prev.workspace.components, addedComponent],\n },\n };\n },\n });\n\n const unSubCompChange = subscribeToMore({\n document: COMPONENT_SUBSCRIPTION_CHANGED,\n updateQuery: (prev, { subscriptionData }) => {\n const update = subscriptionData.data;\n if (!update) return prev;\n\n const updatedComponent = update.componentChanged.component;\n // side effect - trigger observers\n setTimeout(() => optionsRef.current.onComponentUpdated?.([ComponentModel.from(updatedComponent)]));\n\n return {\n ...prev,\n workspace: {\n ...prev.workspace,\n components: prev.workspace.components.map((component) =>\n component.id.name === updatedComponent.id.name ? updatedComponent : component\n ),\n },\n };\n },\n });\n\n const unSubCompRemoved = subscribeToMore({\n document: COMPONENT_SUBSCRIPTION_REMOVED,\n updateQuery: (prev, { subscriptionData }) => {\n const idsToRemove: ComponentIdObj[] | undefined = subscriptionData?.data?.componentRemoved?.componentIds;\n if (!idsToRemove || idsToRemove.length === 0) return prev;\n\n // side effect - trigger observers\n setTimeout(() => optionsRef.current.onComponentRemoved?.(idsToRemove.map((id) => ComponentID.fromObject(id))));\n\n return {\n ...prev,\n workspace: {\n ...prev.workspace,\n components: prev.workspace.components.filter((component: RawComponent) =>\n idsToRemove.every((id) => !ComponentID.isEqualObj(id, component.id))\n ),\n },\n };\n },\n });\n\n const unSubServerStarted = subscribeToMore({\n document: COMPONENT_SERVER_STARTED,\n updateQuery: (prev, { subscriptionData }) => {\n const update = subscriptionData.data;\n if (!update) return prev;\n\n const serverInfo = update.componentServerStarted;\n if (!serverInfo || serverInfo.length === 0) return prev;\n \n const updatedComponents = prev.workspace.components.map((component) => {\n if (component.env?.id === serverInfo[0].env) {\n return {\n ...component,\n server: {\n env: serverInfo[0].env,\n url: serverInfo[0].url,\n host: serverInfo[0].host,\n basePath: serverInfo[0].basePath,\n },\n };\n }\n return component;\n });\n\n // If components were updated, create component models and trigger the onComponentUpdated callback\n const changedComponents = updatedComponents.filter((updatedComp, index) => {\n const originalComp = prev.workspace.components[index];\n // Compare server information to detect changes\n return (\n originalComp.server?.url !== updatedComp.server?.url ||\n originalComp.server?.env !== updatedComp.server?.env\n );\n });\n\n if (changedComponents.length > 0) {\n // side effect - trigger observers for components that were updated\n setTimeout(() => \n optionsRef.current.onComponentUpdated?.(\n changedComponents.map(comp => ComponentModel.from(comp))\n )\n );\n }\n\n return {\n ...prev,\n workspace: {\n ...prev.workspace,\n components: updatedComponents,\n },\n };\n },\n\n\n });\n\n return () => {\n unSubCompAddition();\n unSubCompChange();\n unSubCompRemoved();\n unSubServerStarted();\n };\n }, [optionsRef]);\n\n const workspace = useMemo(() => {\n return data?.workspace ? Workspace.from(data?.workspace) : undefined;\n }, [data?.workspace]);\n\n return {\n workspace,\n subscribeToMore,\n ...rest,\n };\n}"],"mappings":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,WAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,UAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,QAAA;EAAA,MAAAH,IAAA,GAAAI,sBAAA,CAAAH,OAAA;EAAAE,OAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,qBAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,oBAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,QAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,OAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,aAAA;EAAA,MAAAP,IAAA,GAAAC,OAAA;EAAAM,YAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAQ,gBAAA;EAAA,MAAAR,IAAA,GAAAC,OAAA;EAAAO,eAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA8C,MAAAS,SAAA;AAAA,SAAAL,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,QAAAH,CAAA,EAAAI,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAP,CAAA,OAAAM,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAR,CAAA,GAAAI,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAX,CAAA,EAAAI,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAf,CAAA,aAAAI,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAD,OAAA,CAAAG,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,IAAAe,eAAA,CAAAnB,CAAA,EAAAI,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAArB,CAAA,EAAAM,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAF,OAAA,CAAAG,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAtB,CAAA,EAAAI,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAJ,CAAA;AAAA,SAAAmB,gBAAAnB,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAmB,cAAA,CAAAnB,CAAA,MAAAJ,CAAA,GAAAM,MAAA,CAAAgB,cAAA,CAAAtB,CAAA,EAAAI,CAAA,IAAAoB,KAAA,EAAAnB,CAAA,EAAAO,UAAA,MAAAa,YAAA,MAAAC,QAAA,UAAA1B,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAuB,eAAAlB,CAAA,QAAAsB,CAAA,GAAAC,YAAA,CAAAvB,CAAA,uCAAAsB,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAvB,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAwB,MAAA,CAAAC,WAAA,kBAAA9B,CAAA,QAAA2B,CAAA,GAAA3B,CAAA,CAAA+B,IAAA,CAAA1B,CAAA,EAAAD,CAAA,uCAAAuB,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAA5B,CAAA,GAAA6B,MAAA,GAAAC,MAAA,EAAA7B,CAAA;AAAA,SAAA8B,yBAAAnC,CAAA,EAAAK,CAAA,gBAAAL,CAAA,iBAAAS,CAAA,EAAAL,CAAA,EAAAuB,CAAA,GAAAS,6BAAA,CAAApC,CAAA,EAAAK,CAAA,OAAAC,MAAA,CAAAE,qBAAA,QAAA6B,CAAA,GAAA/B,MAAA,CAAAE,qBAAA,CAAAR,CAAA,QAAAI,CAAA,MAAAA,CAAA,GAAAiC,CAAA,CAAApB,MAAA,EAAAb,CAAA,IAAAK,CAAA,GAAA4B,CAAA,CAAAjC,CAAA,UAAAC,CAAA,CAAAiC,OAAA,CAAA7B,CAAA,QAAA8B,oBAAA,CAAAR,IAAA,CAAA/B,CAAA,EAAAS,CAAA,MAAAkB,CAAA,CAAAlB,CAAA,IAAAT,CAAA,CAAAS,CAAA,aAAAkB,CAAA;AAAA,SAAAS,8BAAAhC,CAAA,EAAAJ,CAAA,gBAAAI,CAAA,iBAAAC,CAAA,gBAAAgC,CAAA,IAAAjC,CAAA,SAAAoC,cAAA,CAAAT,IAAA,CAAA3B,CAAA,EAAAiC,CAAA,gBAAArC,CAAA,CAAAsC,OAAA,CAAAD,CAAA,aAAAhC,CAAA,CAAAgC,CAAA,IAAAjC,CAAA,CAAAiC,CAAA,YAAAhC,CAAA;AAS9C,MAAMoC,iBAAiB,GAAG,IAAAC,aAAG;AAC7B;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,CAAC;AAED,MAAMC,SAAS,GAAG,IAAAD,aAAG;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAID,iBAAiB;AACrB,CAAC;AAED,MAAMG,4BAA4B,GAAG,IAAAF,aAAG;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAID,iBAAiB;AACrB,CAAC;AAED,MAAMI,8BAA8B,GAAG,IAAAH,aAAG;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAID,iBAAiB;AACrB,CAAC;AAED,MAAMK,8BAA8B,GAAG,IAAAJ,aAAG;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAMK,wBAAwB,GAAG,IAAAL,aAAG;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAEM,SAASM,YAAYA,CAACC,OAA4B,GAAG,CAAC,CAAC,EAAE;EAC9D,MAAAC,aAAA,GAA2C,IAAAC,mCAAY,EAACR,SAAS,CAAC;IAA5D;MAAErD,IAAI;MAAE8D;IAAyB,CAAC,GAAAF,aAAA;IAANG,IAAI,GAAAlB,wBAAA,CAAAe,aAAA,EAAAnD,SAAA;EACtC,MAAMuD,UAAU,GAAG,IAAAC,iBAAS,EAACN,OAAO,CAAC;EAErC,IAAAO,kBAAS,EAAC,MAAM;IACd,MAAMC,iBAAiB,GAAGL,eAAe,CAAC;MACxCM,QAAQ,EAAEd,4BAA4B;MACtCe,WAAW,EAAEA,CAACC,IAAI,EAAE;QAAEC;MAAiB,CAAC,KAAK;QAC3C,MAAMC,MAAM,GAAGD,gBAAgB,CAACvE,IAAI;QACpC,MAAMyE,cAAc,GAAGD,MAAM,EAAEE,cAAc,EAAEC,SAAS;QACxD,IAAI,CAACF,cAAc,EAAE,OAAOH,IAAI;QAEhC,MAAMM,eAAe,GAAGN,IAAI,CAACO,SAAS,CAACC,UAAU,CAACC,IAAI,CAAEJ,SAAc,IACpEK,0BAAW,CAACC,UAAU,CAACN,SAAS,CAACO,EAAE,EAAET,cAAc,CAACS,EAAE,EAAE;UAAEC,aAAa,EAAE;QAAK,CAAC,CACjF,CAAC;QACD,IAAIP,eAAe,EAAE,OAAON,IAAI;;QAEhC;QACAc,UAAU,CAAC,MAAMpB,UAAU,CAACqB,OAAO,CAACC,gBAAgB,GAAG,CAACC,2BAAc,CAACC,IAAI,CAACf,cAAc,CAAC,CAAC,CAAC,CAAC;QAE9F,OAAAhD,aAAA,CAAAA,aAAA,KACK6C,IAAI;UACPO,SAAS,EAAApD,aAAA,CAAAA,aAAA,KACJ6C,IAAI,CAACO,SAAS;YACjBC,UAAU,EAAE,CAAC,GAAGR,IAAI,CAACO,SAAS,CAACC,UAAU,EAAEL,cAAc;UAAC;QAC3D;MAEL;IACF,CAAC,CAAC;IAEF,MAAMgB,eAAe,GAAG3B,eAAe,CAAC;MACtCM,QAAQ,EAAEb,8BAA8B;MACxCc,WAAW,EAAEA,CAACC,IAAI,EAAE;QAAEC;MAAiB,CAAC,KAAK;QAC3C,MAAMC,MAAM,GAAGD,gBAAgB,CAACvE,IAAI;QACpC,IAAI,CAACwE,MAAM,EAAE,OAAOF,IAAI;QAExB,MAAMoB,gBAAgB,GAAGlB,MAAM,CAACmB,gBAAgB,CAAChB,SAAS;QAC1D;QACAS,UAAU,CAAC,MAAMpB,UAAU,CAACqB,OAAO,CAACO,kBAAkB,GAAG,CAACL,2BAAc,CAACC,IAAI,CAACE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAElG,OAAAjE,aAAA,CAAAA,aAAA,KACK6C,IAAI;UACPO,SAAS,EAAApD,aAAA,CAAAA,aAAA,KACJ6C,IAAI,CAACO,SAAS;YACjBC,UAAU,EAAER,IAAI,CAACO,SAAS,CAACC,UAAU,CAACe,GAAG,CAAElB,SAAS,IAClDA,SAAS,CAACO,EAAE,CAACY,IAAI,KAAKJ,gBAAgB,CAACR,EAAE,CAACY,IAAI,GAAGJ,gBAAgB,GAAGf,SACtE;UAAC;QACF;MAEL;IACF,CAAC,CAAC;IAEF,MAAMoB,gBAAgB,GAAGjC,eAAe,CAAC;MACvCM,QAAQ,EAAEZ,8BAA8B;MACxCa,WAAW,EAAEA,CAACC,IAAI,EAAE;QAAEC;MAAiB,CAAC,KAAK;QAC3C,MAAMyB,WAAyC,GAAGzB,gBAAgB,EAAEvE,IAAI,EAAEiG,gBAAgB,EAAEC,YAAY;QACxG,IAAI,CAACF,WAAW,IAAIA,WAAW,CAACrE,MAAM,KAAK,CAAC,EAAE,OAAO2C,IAAI;;QAEzD;QACAc,UAAU,CAAC,MAAMpB,UAAU,CAACqB,OAAO,CAACc,kBAAkB,GAAGH,WAAW,CAACH,GAAG,CAAEX,EAAE,IAAKF,0BAAW,CAACoB,UAAU,CAAClB,EAAE,CAAC,CAAC,CAAC,CAAC;QAE9G,OAAAzD,aAAA,CAAAA,aAAA,KACK6C,IAAI;UACPO,SAAS,EAAApD,aAAA,CAAAA,aAAA,KACJ6C,IAAI,CAACO,SAAS;YACjBC,UAAU,EAAER,IAAI,CAACO,SAAS,CAACC,UAAU,CAAC1D,MAAM,CAAEuD,SAAuB,IACnEqB,WAAW,CAACK,KAAK,CAAEnB,EAAE,IAAK,CAACF,0BAAW,CAACC,UAAU,CAACC,EAAE,EAAEP,SAAS,CAACO,EAAE,CAAC,CACrE;UAAC;QACF;MAEL;IACF,CAAC,CAAC;IAEF,MAAMoB,kBAAkB,GAAGxC,eAAe,CAAC;MACzCM,QAAQ,EAAEX,wBAAwB;MAClCY,WAAW,EAAEA,CAACC,IAAI,EAAE;QAAEC;MAAiB,CAAC,KAAK;QAC3C,MAAMC,MAAM,GAAGD,gBAAgB,CAACvE,IAAI;QACpC,IAAI,CAACwE,MAAM,EAAE,OAAOF,IAAI;QAExB,MAAMiC,UAAU,GAAG/B,MAAM,CAACgC,sBAAsB;QAChD,IAAI,CAACD,UAAU,IAAIA,UAAU,CAAC5E,MAAM,KAAK,CAAC,EAAE,OAAO2C,IAAI;QAEvD,MAAMmC,iBAAiB,GAAGnC,IAAI,CAACO,SAAS,CAACC,UAAU,CAACe,GAAG,CAAElB,SAAS,IAAK;UACrE,IAAIA,SAAS,CAAC+B,GAAG,EAAExB,EAAE,KAAKqB,UAAU,CAAC,CAAC,CAAC,CAACG,GAAG,EAAE;YAC3C,OAAAjF,aAAA,CAAAA,aAAA,KACKkD,SAAS;cACZgC,MAAM,EAAE;gBACND,GAAG,EAAEH,UAAU,CAAC,CAAC,CAAC,CAACG,GAAG;gBACtBE,GAAG,EAAEL,UAAU,CAAC,CAAC,CAAC,CAACK,GAAG;gBACtBC,IAAI,EAAEN,UAAU,CAAC,CAAC,CAAC,CAACM,IAAI;gBACxBC,QAAQ,EAAEP,UAAU,CAAC,CAAC,CAAC,CAACO;cAC1B;YAAC;UAEL;UACA,OAAOnC,SAAS;QAClB,CAAC,CAAC;;QAEF;QACA,MAAMoC,iBAAiB,GAAGN,iBAAiB,CAACrF,MAAM,CAAC,CAAC4F,WAAW,EAAEC,KAAK,KAAK;UACzE,MAAMC,YAAY,GAAG5C,IAAI,CAACO,SAAS,CAACC,UAAU,CAACmC,KAAK,CAAC;UACrD;UACA,OACEC,YAAY,CAACP,MAAM,EAAEC,GAAG,KAAKI,WAAW,CAACL,MAAM,EAAEC,GAAG,IACpDM,YAAY,CAACP,MAAM,EAAED,GAAG,KAAKM,WAAW,CAACL,MAAM,EAAED,GAAG;QAExD,CAAC,CAAC;QAEF,IAAIK,iBAAiB,CAACpF,MAAM,GAAG,CAAC,EAAE;UAChC;UACAyD,UAAU,CAAC,MACTpB,UAAU,CAACqB,OAAO,CAACO,kBAAkB,GACnCmB,iBAAiB,CAAClB,GAAG,CAACsB,IAAI,IAAI5B,2BAAc,CAACC,IAAI,CAAC2B,IAAI,CAAC,CACzD,CACF,CAAC;QACH;QAEA,OAAA1F,aAAA,CAAAA,aAAA,KACK6C,IAAI;UACPO,SAAS,EAAApD,aAAA,CAAAA,aAAA,KACJ6C,IAAI,CAACO,SAAS;YACjBC,UAAU,EAAE2B;UAAiB;QAC9B;MAEL;IAGF,CAAC,CAAC;IAEF,OAAO,MAAM;MACXtC,iBAAiB,CAAC,CAAC;MACnBsB,eAAe,CAAC,CAAC;MACjBM,gBAAgB,CAAC,CAAC;MAClBO,kBAAkB,CAAC,CAAC;IACtB,CAAC;EACH,CAAC,EAAE,CAACtC,UAAU,CAAC,CAAC;EAEhB,MAAMa,SAAS,GAAG,IAAAuC,gBAAO,EAAC,MAAM;IAC9B,OAAOpH,IAAI,EAAE6E,SAAS,GAAGwC,2BAAS,CAAC7B,IAAI,CAACxF,IAAI,EAAE6E,SAAS,CAAC,GAAGyC,SAAS;EACtE,CAAC,EAAE,CAACtH,IAAI,EAAE6E,SAAS,CAAC,CAAC;EAErB,OAAApD,aAAA;IACEoD,SAAS;IACTf;EAAe,GACZC,IAAI;AAEX","ignoreList":[]}
@@ -167,6 +167,10 @@ function useCardPlugins({
167
167
  compModelsById,
168
168
  showPreview
169
169
  }) {
170
+ const serverUrlsSignature = _react().default.useMemo(() => {
171
+ const serversCount = Array.from(compModelsById.values()).filter(comp => comp.server?.url).map(comp => comp.server?.url).join(',');
172
+ return serversCount;
173
+ }, [compModelsById]);
170
174
  const plugins = _react().default.useMemo(() => [{
171
175
  preview: function Preview({
172
176
  component,
@@ -198,7 +202,7 @@ function useCardPlugins({
198
202
  className: _workspaceOverviewModule().default.envIcon
199
203
  }))));
200
204
  }
201
- }, new (_linkPlugin().LinkPlugin)()], [compModelsById.size]);
205
+ }, new (_linkPlugin().LinkPlugin)()], [compModelsById.size, serverUrlsSignature, showPreview]);
202
206
  return plugins;
203
207
  }
204
208
 
@@ -1 +1 @@
1
- {"version":3,"names":["_react","data","_interopRequireWildcard","require","_explorerUiGallery","_workspaceUi","_previewUi","_designUi","_componentId","_cloudHooks","_scopes","_lodash","_workspaceUi2","_workspaceUi3","_workspaceContext","_workspaceOverviewModule","_interopRequireDefault","_linkPlugin","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","WorkspaceOverview","workspace","useContext","WorkspaceContext","isMinimal","useWorkspaceMode","compModelsById","Map","components","map","comp","id","toString","componentDescriptors","uniqueScopes","Set","c","scope","uniqueScopesArr","Array","from","cloudScopes","useCloudScopes","cloudScopesById","plugins","useCardPlugins","showPreview","length","createElement","EmptyWorkspace","name","compDescriptorById","componentsWithDescriptorAndScope","compact","component","deprecation","isDeprecate","componentDescriptor","cloudScope","ScopeID","isValid","fromString","undefined","className","styles","container","ComponentGrid","cardGrid","WorkspaceComponentCard","key","shouldShowPreviewState","React","useMemo","preview","Preview","shouldShowPreview","compModel","PreviewPlaceholder","previewBottomRight","PreviewBottomRight","env","envComponentId","ComponentID","rightPreviewPlugins","badge","Tooltip","delay","content","src","icon","envIcon","LinkPlugin","size"],"sources":["workspace-overview.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { ComponentGrid } from '@teambit/explorer.ui.gallery.component-grid';\nimport { EmptyWorkspace } from '@teambit/workspace.ui.empty-workspace';\nimport { PreviewPlaceholder } from '@teambit/preview.ui.preview-placeholder';\nimport { Tooltip } from '@teambit/design.ui.tooltip';\nimport { ComponentID } from '@teambit/component-id';\nimport { ComponentModel } from '@teambit/component';\nimport { useCloudScopes } from '@teambit/cloud.hooks.use-cloud-scopes';\nimport { ScopeID } from '@teambit/scopes.scope-id';\nimport { compact } from 'lodash';\nimport { WorkspaceComponentCard } from '@teambit/workspace.ui.workspace-component-card';\nimport type { ComponentCardPluginType, PluginProps } from '@teambit/explorer.ui.component-card';\nimport { useWorkspaceMode } from '@teambit/workspace.ui.use-workspace-mode';\nimport { WorkspaceContext } from '../workspace-context';\nimport styles from './workspace-overview.module.scss';\nimport { LinkPlugin } from './link-plugin';\n\nexport function WorkspaceOverview() {\n const workspace = useContext(WorkspaceContext);\n const { isMinimal } = useWorkspaceMode();\n const compModelsById = new Map(workspace.components.map((comp) => [comp.id.toString(), comp]));\n const { components, componentDescriptors } = workspace;\n const uniqueScopes = new Set(components.map((c) => c.id.scope));\n const uniqueScopesArr = Array.from(uniqueScopes);\n const { cloudScopes = [] } = useCloudScopes(uniqueScopesArr);\n const cloudScopesById = new Map(cloudScopes.map((scope) => [scope.id.toString(), scope]));\n\n const plugins = useCardPlugins({ compModelsById, showPreview: isMinimal });\n\n if (!components || components.length === 0) return <EmptyWorkspace name={workspace.name} />;\n\n const compDescriptorById = new Map(componentDescriptors.map((comp) => [comp.id.toString(), comp]));\n const componentsWithDescriptorAndScope = compact(\n components.map((component) => {\n if (component.deprecation?.isDeprecate) return null;\n const componentDescriptor = compDescriptorById.get(component.id.toString());\n if (!componentDescriptor) return null;\n const cloudScope = cloudScopesById.get(component.id.scope);\n const scope =\n cloudScope ||\n (ScopeID.isValid(component.id.scope) && { id: ScopeID.fromString(component.id.scope) }) ||\n undefined;\n\n return { component, componentDescriptor, scope };\n })\n );\n\n return (\n <div className={styles.container}>\n <ComponentGrid className={styles.cardGrid}>\n {componentsWithDescriptorAndScope.map(({ component, componentDescriptor, scope }) => {\n return (\n <WorkspaceComponentCard\n key={component.id.toString()}\n componentDescriptor={componentDescriptor}\n component={component}\n plugins={plugins}\n scope={scope}\n shouldShowPreviewState={isMinimal}\n />\n );\n })}\n </ComponentGrid>\n </div>\n );\n}\n\nexport function useCardPlugins({\n compModelsById,\n showPreview,\n}: {\n compModelsById: Map<string, ComponentModel>;\n showPreview?: boolean;\n}): ComponentCardPluginType<PluginProps>[] {\n const plugins = React.useMemo(\n () => [\n {\n preview: function Preview({ component, shouldShowPreview }) {\n const compModel = compModelsById.get(component.id.toString());\n if (!compModel) return null;\n return (\n <PreviewPlaceholder\n componentDescriptor={component}\n component={compModel}\n shouldShowPreview={showPreview || shouldShowPreview}\n />\n );\n },\n },\n {\n previewBottomRight: function PreviewBottomRight({ component }) {\n const env = component.get('teambit.envs/envs');\n const envComponentId = env?.id ? ComponentID.fromString(env?.id) : undefined;\n\n return (\n <div className={styles.rightPreviewPlugins}>\n <div className={styles.badge}>\n <Tooltip delay={300} content={envComponentId?.name}>\n <img src={env?.icon} className={styles.envIcon} />\n </Tooltip>\n </div>\n </div>\n );\n },\n },\n new LinkPlugin(),\n ],\n [compModelsById.size]\n );\n\n return plugins;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","data","_interopRequireWildcard","require","_explorerUiGallery","_workspaceUi","_previewUi","_designUi","_componentId","_cloudHooks","_scopes","_lodash","_workspaceUi2","_workspaceUi3","_workspaceContext","_workspaceOverviewModule","_interopRequireDefault","_linkPlugin","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","WorkspaceOverview","workspace","useContext","WorkspaceContext","isMinimal","useWorkspaceMode","compModelsById","Map","components","map","comp","id","toString","componentDescriptors","uniqueScopes","Set","c","scope","uniqueScopesArr","Array","from","cloudScopes","useCloudScopes","cloudScopesById","plugins","useCardPlugins","showPreview","length","createElement","EmptyWorkspace","name","compDescriptorById","componentsWithDescriptorAndScope","compact","component","deprecation","isDeprecate","componentDescriptor","cloudScope","ScopeID","isValid","fromString","undefined","className","styles","container","ComponentGrid","cardGrid","WorkspaceComponentCard","key","shouldShowPreviewState","serverUrlsSignature","React","useMemo","serversCount","values","filter","server","url","join","preview","Preview","shouldShowPreview","compModel","PreviewPlaceholder","previewBottomRight","PreviewBottomRight","env","envComponentId","ComponentID","rightPreviewPlugins","badge","Tooltip","delay","content","src","icon","envIcon","LinkPlugin","size"],"sources":["workspace-overview.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { ComponentGrid } from '@teambit/explorer.ui.gallery.component-grid';\nimport { EmptyWorkspace } from '@teambit/workspace.ui.empty-workspace';\nimport { PreviewPlaceholder } from '@teambit/preview.ui.preview-placeholder';\nimport { Tooltip } from '@teambit/design.ui.tooltip';\nimport { ComponentID } from '@teambit/component-id';\nimport { ComponentModel } from '@teambit/component';\nimport { useCloudScopes } from '@teambit/cloud.hooks.use-cloud-scopes';\nimport { ScopeID } from '@teambit/scopes.scope-id';\nimport { compact } from 'lodash';\nimport { WorkspaceComponentCard } from '@teambit/workspace.ui.workspace-component-card';\nimport type { ComponentCardPluginType, PluginProps } from '@teambit/explorer.ui.component-card';\nimport { useWorkspaceMode } from '@teambit/workspace.ui.use-workspace-mode';\nimport { WorkspaceContext } from '../workspace-context';\nimport styles from './workspace-overview.module.scss';\nimport { LinkPlugin } from './link-plugin';\n\nexport function WorkspaceOverview() {\n const workspace = useContext(WorkspaceContext);\n const { isMinimal } = useWorkspaceMode();\n const compModelsById = new Map(workspace.components.map((comp) => [comp.id.toString(), comp]));\n const { components, componentDescriptors } = workspace;\n const uniqueScopes = new Set(components.map((c) => c.id.scope));\n const uniqueScopesArr = Array.from(uniqueScopes);\n const { cloudScopes = [] } = useCloudScopes(uniqueScopesArr);\n const cloudScopesById = new Map(cloudScopes.map((scope) => [scope.id.toString(), scope]));\n\n const plugins = useCardPlugins({ compModelsById, showPreview: isMinimal });\n\n if (!components || components.length === 0) return <EmptyWorkspace name={workspace.name} />;\n\n const compDescriptorById = new Map(componentDescriptors.map((comp) => [comp.id.toString(), comp]));\n const componentsWithDescriptorAndScope = compact(\n components.map((component) => {\n if (component.deprecation?.isDeprecate) return null;\n const componentDescriptor = compDescriptorById.get(component.id.toString());\n if (!componentDescriptor) return null;\n const cloudScope = cloudScopesById.get(component.id.scope);\n const scope =\n cloudScope ||\n (ScopeID.isValid(component.id.scope) && { id: ScopeID.fromString(component.id.scope) }) ||\n undefined;\n\n return { component, componentDescriptor, scope };\n })\n );\n\n return (\n <div className={styles.container}>\n <ComponentGrid className={styles.cardGrid}>\n {componentsWithDescriptorAndScope.map(({ component, componentDescriptor, scope }) => {\n return (\n <WorkspaceComponentCard\n key={component.id.toString()}\n componentDescriptor={componentDescriptor}\n component={component}\n plugins={plugins}\n scope={scope}\n shouldShowPreviewState={isMinimal}\n />\n );\n })}\n </ComponentGrid>\n </div>\n );\n}\n\nexport function useCardPlugins({\n compModelsById,\n showPreview,\n}: {\n compModelsById: Map<string, ComponentModel>;\n showPreview?: boolean;\n}): ComponentCardPluginType<PluginProps>[] {\n const serverUrlsSignature = React.useMemo(() => {\n const serversCount = Array.from(compModelsById.values())\n .filter(comp => comp.server?.url)\n .map(comp => comp.server?.url)\n .join(',');\n return serversCount;\n }, [compModelsById]);\n \n const plugins = React.useMemo(\n () => [\n {\n preview: function Preview({ component, shouldShowPreview }) {\n const compModel = compModelsById.get(component.id.toString());\n if (!compModel) return null;\n return (\n <PreviewPlaceholder\n componentDescriptor={component}\n component={compModel}\n shouldShowPreview={showPreview || shouldShowPreview}\n />\n );\n },\n },\n {\n previewBottomRight: function PreviewBottomRight({ component }) {\n const env = component.get('teambit.envs/envs');\n const envComponentId = env?.id ? ComponentID.fromString(env?.id) : undefined;\n\n return (\n <div className={styles.rightPreviewPlugins}>\n <div className={styles.badge}>\n <Tooltip delay={300} content={envComponentId?.name}>\n <img src={env?.icon} className={styles.envIcon} />\n </Tooltip>\n </div>\n </div>\n );\n },\n },\n new LinkPlugin(),\n ],\n [compModelsById.size, serverUrlsSignature, showPreview]\n );\n\n return plugins;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -222,6 +222,13 @@ function useComponentNotifications() {
222
222
  onComponentRemoved: ids => {
223
223
  const notificationId = notifications.log(`removed ${(0, _pluralize().default)('component', ids.length)} ${ids.map(id => id.toString()).join(', ')}`);
224
224
  setTimeout(() => notifications.dismiss(notificationId), 12 * 1000);
225
+ },
226
+ onComponentUpdated: comps => {
227
+ const compsWithServerUpdates = comps.filter(comp => comp.server?.url);
228
+ if (compsWithServerUpdates.length > 0) {
229
+ const notificationId = notifications.log(`Server ready for ${(0, _pluralize().default)('component', compsWithServerUpdates.length)}: ${compsWithServerUpdates.map(comp => comp.id.toString()).join(', ')}`);
230
+ setTimeout(() => notifications.dismiss(notificationId), 8 * 1000);
231
+ }
225
232
  }
226
233
  }), [notifications]);
227
234
  }
@@ -1 +1 @@
1
- {"version":3,"names":["require","_pluralize","data","_interopRequireDefault","_react","_interopRequireWildcard","_reactRouterDom","_uiFoundationUiNotifications","_uiFoundationUiReactRouter","_uiFoundationUi","_uiFoundationUiButtons","_baseUiSurfacesSplitPane","_baseReactThemes","_baseUiSurfacesSplitPane2","_uiFoundationUi2","_workspaceUi","_classnames","_workspaceUi2","_useWorkspace","_workspaceOverview","_workspaceProvider","_workspaceModule","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Workspace","routeSlot","menuSlot","sidebar","workspaceUI","onSidebarTogglerChange","isMinimal","useWorkspaceMode","reactions","useComponentNotifications","workspace","useWorkspace","theme","useThemePicker","currentTheme","current","isSidebarOpen","setSidebarOpen","useState","handleSidebarToggle","useCallback","prev","sidebarOpenness","Layout","row","right","themeName","useEffect","window","innerWidth","useLayoutEffect","createElement","className","styles","emptyContainer","setComponents","components","WorkspaceProvider","PreserveWorkspaceMode","workspaceWrapper","TopBar","classNames","topbar","Corner","minimalCorner","corner","name","icon","menu","SplitPane","main","size","layout","Pane","closed","HoverSplitter","splitter","Collapser","isOpen","Boolean","onMouseDown","stopPropagation","onClick","tooltipContent","SlotRouter","slot","Route","index","element","WorkspaceOverview","notifications","useNotifications","useMemo","onComponentAdded","comps","notificationId","log","pluralize","length","map","comp","id","toString","join","setTimeout","dismiss","onComponentRemoved","ids"],"sources":["workspace.tsx"],"sourcesContent":["import 'reset-css';\nimport pluralize from 'pluralize';\nimport React, { useState, useMemo, useEffect, useCallback, useLayoutEffect } from 'react';\nimport { Route } from 'react-router-dom';\nimport type { ComponentModel } from '@teambit/component';\nimport type { ComponentID } from '@teambit/component-id';\nimport { useNotifications } from '@teambit/ui-foundation.ui.notifications.notification-context';\nimport { SlotRouter } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport type { RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { Corner } from '@teambit/ui-foundation.ui.corner';\nimport { Collapser } from '@teambit/ui-foundation.ui.buttons.collapser';\nimport { SplitPane, Pane, Layout } from '@teambit/base-ui.surfaces.split-pane.split-pane';\nimport { useThemePicker } from '@teambit/base-react.themes.theme-switcher';\nimport { HoverSplitter } from '@teambit/base-ui.surfaces.split-pane.hover-splitter';\nimport { TopBar } from '@teambit/ui-foundation.ui.top-bar';\nimport { PreserveWorkspaceMode } from '@teambit/workspace.ui.preserve-workspace-mode';\nimport classNames from 'classnames';\nimport { useWorkspaceMode } from '@teambit/workspace.ui.use-workspace-mode';\n\nimport { useWorkspace } from './use-workspace';\nimport { WorkspaceOverview } from './workspace-overview';\nimport { WorkspaceProvider } from './workspace-provider';\nimport styles from './workspace.module.scss';\nimport { WorkspaceUI } from '../../workspace.ui.runtime';\n\nexport type WorkspaceProps = {\n routeSlot: RouteSlot;\n menuSlot: RouteSlot;\n sidebar: JSX.Element;\n workspaceUI: WorkspaceUI;\n onSidebarTogglerChange: (callback: () => void) => void;\n};\n\n/**\n * main workspace component.\n */\nexport function Workspace({ routeSlot, menuSlot, sidebar, workspaceUI, onSidebarTogglerChange }: WorkspaceProps) {\n const { isMinimal } = useWorkspaceMode();\n const reactions = useComponentNotifications();\n const { workspace } = useWorkspace(reactions);\n const theme = useThemePicker();\n const currentTheme = theme?.current;\n const [isSidebarOpen, setSidebarOpen] = useState<boolean | null>(null);\n const handleSidebarToggle = useCallback(() => {\n setSidebarOpen(prev => !prev);\n }, []);\n const sidebarOpenness = isSidebarOpen ? Layout.row : Layout.right;\n const themeName = currentTheme?.themeName || 'light';\n onSidebarTogglerChange(handleSidebarToggle);\n\n useEffect(() => {\n if (!window) return;\n if (window.innerWidth <= 1024) {\n setSidebarOpen(false);\n }\n }, []);\n\n useLayoutEffect(() => {\n setSidebarOpen(!isMinimal);\n }, [isMinimal]);\n\n if (!workspace) {\n return <div className={styles.emptyContainer}></div>;\n }\n\n workspaceUI.setComponents(workspace.components);\n\n return (\n <WorkspaceProvider workspace={workspace}>\n <PreserveWorkspaceMode>\n <div className={styles.workspaceWrapper}>\n {\n <TopBar\n className={classNames(styles.topbar, styles[themeName])}\n Corner={() => (\n <Corner\n className={classNames((isMinimal && styles.minimalCorner) || styles.corner, styles[themeName])}\n name={isMinimal ? '' : workspace.name}\n icon={isMinimal ? 'https://static.bit.dev/bit-icons/house.svg' : workspace.icon}\n />\n )}\n // @ts-ignore - getting an error of \"Types have separate declarations of a private property 'registerFn'.\" for some reason after upgrading teambit.harmony/harmony from 0.4.6 to 0.4.7\n menu={menuSlot}\n />\n }\n <SplitPane className={styles.main} size={246} layout={sidebarOpenness}>\n <Pane className={classNames(styles.sidebar, styles[themeName], !isSidebarOpen && styles.closed)}>\n {sidebar}\n </Pane>\n <HoverSplitter className={styles.splitter}>\n <Collapser\n isOpen={Boolean(isSidebarOpen)}\n onMouseDown={(e) => e.stopPropagation()} // avoid split-pane drag\n onClick={handleSidebarToggle}\n tooltipContent={`${isSidebarOpen ? 'Hide' : 'Show'} side panel`}\n />\n </HoverSplitter>\n <Pane>\n <SlotRouter slot={routeSlot}>\n <Route index element={<WorkspaceOverview />} />\n </SlotRouter>\n </Pane>\n </SplitPane>\n </div>\n </PreserveWorkspaceMode>\n </WorkspaceProvider>\n );\n}\nfunction useComponentNotifications() {\n const notifications = useNotifications();\n\n // memo not really needed, but for peace of mind\n return useMemo(\n () => ({\n onComponentAdded: (comps: ComponentModel[]) => {\n const notificationId = notifications.log(\n `added ${pluralize('component', comps.length)}: ${comps.map((comp) => comp.id.toString()).join(', ')}`\n );\n setTimeout(() => notifications.dismiss(notificationId), 12 * 1000);\n },\n\n onComponentRemoved: (ids: ComponentID[]) => {\n const notificationId = notifications.log(\n `removed ${pluralize('component', ids.length)} ${ids.map((id) => id.toString()).join(', ')}`\n );\n setTimeout(() => notifications.dismiss(notificationId), 12 * 1000);\n },\n }),\n [notifications]\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["require","_pluralize","data","_interopRequireDefault","_react","_interopRequireWildcard","_reactRouterDom","_uiFoundationUiNotifications","_uiFoundationUiReactRouter","_uiFoundationUi","_uiFoundationUiButtons","_baseUiSurfacesSplitPane","_baseReactThemes","_baseUiSurfacesSplitPane2","_uiFoundationUi2","_workspaceUi","_classnames","_workspaceUi2","_useWorkspace","_workspaceOverview","_workspaceProvider","_workspaceModule","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Workspace","routeSlot","menuSlot","sidebar","workspaceUI","onSidebarTogglerChange","isMinimal","useWorkspaceMode","reactions","useComponentNotifications","workspace","useWorkspace","theme","useThemePicker","currentTheme","current","isSidebarOpen","setSidebarOpen","useState","handleSidebarToggle","useCallback","prev","sidebarOpenness","Layout","row","right","themeName","useEffect","window","innerWidth","useLayoutEffect","createElement","className","styles","emptyContainer","setComponents","components","WorkspaceProvider","PreserveWorkspaceMode","workspaceWrapper","TopBar","classNames","topbar","Corner","minimalCorner","corner","name","icon","menu","SplitPane","main","size","layout","Pane","closed","HoverSplitter","splitter","Collapser","isOpen","Boolean","onMouseDown","stopPropagation","onClick","tooltipContent","SlotRouter","slot","Route","index","element","WorkspaceOverview","notifications","useNotifications","useMemo","onComponentAdded","comps","notificationId","log","pluralize","length","map","comp","id","toString","join","setTimeout","dismiss","onComponentRemoved","ids","onComponentUpdated","compsWithServerUpdates","filter","server","url"],"sources":["workspace.tsx"],"sourcesContent":["import 'reset-css';\nimport pluralize from 'pluralize';\nimport React, { useState, useMemo, useEffect, useCallback, useLayoutEffect } from 'react';\nimport { Route } from 'react-router-dom';\nimport type { ComponentModel } from '@teambit/component';\nimport type { ComponentID } from '@teambit/component-id';\nimport { useNotifications } from '@teambit/ui-foundation.ui.notifications.notification-context';\nimport { SlotRouter } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport type { RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { Corner } from '@teambit/ui-foundation.ui.corner';\nimport { Collapser } from '@teambit/ui-foundation.ui.buttons.collapser';\nimport { SplitPane, Pane, Layout } from '@teambit/base-ui.surfaces.split-pane.split-pane';\nimport { useThemePicker } from '@teambit/base-react.themes.theme-switcher';\nimport { HoverSplitter } from '@teambit/base-ui.surfaces.split-pane.hover-splitter';\nimport { TopBar } from '@teambit/ui-foundation.ui.top-bar';\nimport { PreserveWorkspaceMode } from '@teambit/workspace.ui.preserve-workspace-mode';\nimport classNames from 'classnames';\nimport { useWorkspaceMode } from '@teambit/workspace.ui.use-workspace-mode';\n\nimport { useWorkspace } from './use-workspace';\nimport { WorkspaceOverview } from './workspace-overview';\nimport { WorkspaceProvider } from './workspace-provider';\nimport styles from './workspace.module.scss';\nimport { WorkspaceUI } from '../../workspace.ui.runtime';\n\nexport type WorkspaceProps = {\n routeSlot: RouteSlot;\n menuSlot: RouteSlot;\n sidebar: JSX.Element;\n workspaceUI: WorkspaceUI;\n onSidebarTogglerChange: (callback: () => void) => void;\n};\n\n/**\n * main workspace component.\n */\nexport function Workspace({ routeSlot, menuSlot, sidebar, workspaceUI, onSidebarTogglerChange }: WorkspaceProps) {\n const { isMinimal } = useWorkspaceMode();\n const reactions = useComponentNotifications();\n const { workspace } = useWorkspace(reactions);\n const theme = useThemePicker();\n const currentTheme = theme?.current;\n const [isSidebarOpen, setSidebarOpen] = useState<boolean | null>(null);\n const handleSidebarToggle = useCallback(() => {\n setSidebarOpen(prev => !prev);\n }, []);\n const sidebarOpenness = isSidebarOpen ? Layout.row : Layout.right;\n const themeName = currentTheme?.themeName || 'light';\n onSidebarTogglerChange(handleSidebarToggle);\n\n useEffect(() => {\n if (!window) return;\n if (window.innerWidth <= 1024) {\n setSidebarOpen(false);\n }\n }, []);\n\n useLayoutEffect(() => {\n setSidebarOpen(!isMinimal);\n }, [isMinimal]);\n\n if (!workspace) {\n return <div className={styles.emptyContainer}></div>;\n }\n\n workspaceUI.setComponents(workspace.components);\n\n return (\n <WorkspaceProvider workspace={workspace}>\n <PreserveWorkspaceMode>\n <div className={styles.workspaceWrapper}>\n {\n <TopBar\n className={classNames(styles.topbar, styles[themeName])}\n Corner={() => (\n <Corner\n className={classNames((isMinimal && styles.minimalCorner) || styles.corner, styles[themeName])}\n name={isMinimal ? '' : workspace.name}\n icon={isMinimal ? 'https://static.bit.dev/bit-icons/house.svg' : workspace.icon}\n />\n )}\n // @ts-ignore - getting an error of \"Types have separate declarations of a private property 'registerFn'.\" for some reason after upgrading teambit.harmony/harmony from 0.4.6 to 0.4.7\n menu={menuSlot}\n />\n }\n <SplitPane className={styles.main} size={246} layout={sidebarOpenness}>\n <Pane className={classNames(styles.sidebar, styles[themeName], !isSidebarOpen && styles.closed)}>\n {sidebar}\n </Pane>\n <HoverSplitter className={styles.splitter}>\n <Collapser\n isOpen={Boolean(isSidebarOpen)}\n onMouseDown={(e) => e.stopPropagation()} // avoid split-pane drag\n onClick={handleSidebarToggle}\n tooltipContent={`${isSidebarOpen ? 'Hide' : 'Show'} side panel`}\n />\n </HoverSplitter>\n <Pane>\n <SlotRouter slot={routeSlot}>\n <Route index element={<WorkspaceOverview />} />\n </SlotRouter>\n </Pane>\n </SplitPane>\n </div>\n </PreserveWorkspaceMode>\n </WorkspaceProvider>\n );\n}\n\nfunction useComponentNotifications() {\n const notifications = useNotifications();\n\n // memo not really needed, but for peace of mind\n return useMemo(\n () => ({\n onComponentAdded: (comps: ComponentModel[]) => {\n const notificationId = notifications.log(\n `added ${pluralize('component', comps.length)}: ${comps.map((comp) => comp.id.toString()).join(', ')}`\n );\n setTimeout(() => notifications.dismiss(notificationId), 12 * 1000);\n },\n\n onComponentRemoved: (ids: ComponentID[]) => {\n const notificationId = notifications.log(\n `removed ${pluralize('component', ids.length)} ${ids.map((id) => id.toString()).join(', ')}`\n );\n setTimeout(() => notifications.dismiss(notificationId), 12 * 1000);\n },\n \n onComponentUpdated: (comps: ComponentModel[]) => {\n const compsWithServerUpdates = comps.filter(comp => comp.server?.url);\n \n if (compsWithServerUpdates.length > 0) {\n const notificationId = notifications.log(\n `Server ready for ${pluralize('component', compsWithServerUpdates.length)}: ${compsWithServerUpdates\n .map((comp) => comp.id.toString())\n .join(', ')}`\n );\n setTimeout(() => notifications.dismiss(notificationId), 8 * 1000);\n }\n },\n }),\n [notifications]\n );\n}"],"mappings":"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","ignoreList":[]}
package/dist/workspace.js CHANGED
@@ -2181,6 +2181,10 @@ the following envs are used in this workspace: ${(0, _lodash().uniq)(availableEn
2181
2181
  }
2182
2182
  async setComponentPathsRegExps() {
2183
2183
  const workspaceComponents = await this.list();
2184
+ if (!workspaceComponents.length) {
2185
+ this.componentPathsRegExps = [];
2186
+ return;
2187
+ }
2184
2188
  const workspacePackageNames = workspaceComponents.map(c => this.componentPackageName(c));
2185
2189
  const packageManager = this.dependencyResolver.packageManagerName;
2186
2190
  const isPnpmEnabled = typeof packageManager === 'undefined' || packageManager.includes('pnpm');