@teambit/workspace 1.0.1080 → 1.0.1081

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/{preview-1785267101230.js → preview-1785278532531.js} +2 -2
  2. package/dist/ui/workspace/use-workspace.js +179 -27
  3. package/dist/ui/workspace/use-workspace.js.map +1 -1
  4. package/dist/ui/workspace/workspace-overview/index.d.ts +1 -1
  5. package/dist/ui/workspace/workspace-overview/index.js +5 -5
  6. package/dist/ui/workspace/workspace-overview/index.js.map +1 -1
  7. package/dist/ui/workspace/workspace-overview/workspace-overview.js +13 -143
  8. package/dist/ui/workspace/workspace-overview/workspace-overview.js.map +1 -1
  9. package/dist/ui/workspace/workspace-skeleton.d.ts +8 -0
  10. package/dist/ui/workspace/workspace-skeleton.js +73 -0
  11. package/dist/ui/workspace/workspace-skeleton.js.map +1 -0
  12. package/dist/ui/workspace/workspace-skeleton.module.scss +102 -0
  13. package/dist/ui/workspace/workspace.js +23 -7
  14. package/dist/ui/workspace/workspace.js.map +1 -1
  15. package/package.json +60 -69
  16. package/ui/workspace/use-workspace.ts +185 -27
  17. package/ui/workspace/workspace-overview/index.ts +1 -1
  18. package/ui/workspace/workspace-overview/workspace-overview.tsx +9 -102
  19. package/ui/workspace/workspace-skeleton.module.scss +102 -0
  20. package/ui/workspace/workspace-skeleton.tsx +35 -0
  21. package/ui/workspace/workspace.tsx +16 -5
  22. package/dist/ui/workspace/workspace-overview/card-overlays.d.ts +0 -5
  23. package/dist/ui/workspace/workspace-overview/card-overlays.js +0 -133
  24. package/dist/ui/workspace/workspace-overview/card-overlays.js.map +0 -1
  25. package/dist/ui/workspace/workspace-overview/card-overlays.module.scss +0 -72
  26. package/dist/ui/workspace/workspace-overview/filter-utils.d.ts +0 -10
  27. package/dist/ui/workspace/workspace-overview/filter-utils.js +0 -40
  28. package/dist/ui/workspace/workspace-overview/filter-utils.js.map +0 -1
  29. package/dist/ui/workspace/workspace-overview/hope-component-card.d.ts +0 -15
  30. package/dist/ui/workspace/workspace-overview/hope-component-card.js +0 -186
  31. package/dist/ui/workspace/workspace-overview/hope-component-card.js.map +0 -1
  32. package/dist/ui/workspace/workspace-overview/hope-component-card.module.scss +0 -169
  33. package/dist/ui/workspace/workspace-overview/link-plugin.d.ts +0 -3
  34. package/dist/ui/workspace/workspace-overview/link-plugin.js +0 -14
  35. package/dist/ui/workspace/workspace-overview/link-plugin.js.map +0 -1
  36. package/dist/ui/workspace/workspace-overview/namespace-header.d.ts +0 -9
  37. package/dist/ui/workspace/workspace-overview/namespace-header.js +0 -107
  38. package/dist/ui/workspace/workspace-overview/namespace-header.js.map +0 -1
  39. package/dist/ui/workspace/workspace-overview/namespace-header.module.scss +0 -88
  40. package/dist/ui/workspace/workspace-overview/namespace-sort.d.ts +0 -8
  41. package/dist/ui/workspace/workspace-overview/namespace-sort.js +0 -47
  42. package/dist/ui/workspace/workspace-overview/namespace-sort.js.map +0 -1
  43. package/dist/ui/workspace/workspace-overview/scope-sort.d.ts +0 -1
  44. package/dist/ui/workspace/workspace-overview/scope-sort.js +0 -14
  45. package/dist/ui/workspace/workspace-overview/scope-sort.js.map +0 -1
  46. package/dist/ui/workspace/workspace-overview/use-query-param-with-default.d.ts +0 -6
  47. package/dist/ui/workspace/workspace-overview/use-query-param-with-default.js +0 -102
  48. package/dist/ui/workspace/workspace-overview/use-query-param-with-default.js.map +0 -1
  49. package/dist/ui/workspace/workspace-overview/use-workspace-aggregation.d.ts +0 -3
  50. package/dist/ui/workspace/workspace-overview/use-workspace-aggregation.js +0 -88
  51. package/dist/ui/workspace/workspace-overview/use-workspace-aggregation.js.map +0 -1
  52. package/dist/ui/workspace/workspace-overview/workspace-filter-panel.d.ts +0 -13
  53. package/dist/ui/workspace/workspace-overview/workspace-filter-panel.js +0 -110
  54. package/dist/ui/workspace/workspace-overview/workspace-filter-panel.js.map +0 -1
  55. package/dist/ui/workspace/workspace-overview/workspace-overview.module.scss +0 -91
  56. package/dist/ui/workspace/workspace-overview/workspace-overview.sort.d.ts +0 -1
  57. package/dist/ui/workspace/workspace-overview/workspace-overview.sort.js +0 -30
  58. package/dist/ui/workspace/workspace-overview/workspace-overview.sort.js.map +0 -1
  59. package/dist/ui/workspace/workspace-overview/workspace-overview.types.d.ts +0 -28
  60. package/dist/ui/workspace/workspace-overview/workspace-overview.types.js +0 -3
  61. package/dist/ui/workspace/workspace-overview/workspace-overview.types.js.map +0 -1
  62. package/ui/workspace/workspace-overview/card-overlays.module.scss +0 -72
  63. package/ui/workspace/workspace-overview/card-overlays.tsx +0 -66
  64. package/ui/workspace/workspace-overview/filter-utils.ts +0 -42
  65. package/ui/workspace/workspace-overview/hope-component-card.module.scss +0 -169
  66. package/ui/workspace/workspace-overview/hope-component-card.tsx +0 -152
  67. package/ui/workspace/workspace-overview/link-plugin.ts +0 -5
  68. package/ui/workspace/workspace-overview/namespace-header.module.scss +0 -88
  69. package/ui/workspace/workspace-overview/namespace-header.tsx +0 -72
  70. package/ui/workspace/workspace-overview/namespace-sort.ts +0 -44
  71. package/ui/workspace/workspace-overview/scope-sort.ts +0 -9
  72. package/ui/workspace/workspace-overview/use-query-param-with-default.ts +0 -115
  73. package/ui/workspace/workspace-overview/use-workspace-aggregation.ts +0 -79
  74. package/ui/workspace/workspace-overview/workspace-filter-panel.tsx +0 -109
  75. package/ui/workspace/workspace-overview/workspace-overview.module.scss +0 -91
  76. package/ui/workspace/workspace-overview/workspace-overview.sort.ts +0 -29
  77. package/ui/workspace/workspace-overview/workspace-overview.types.ts +0 -30
@@ -1 +1 @@
1
- {"version":3,"names":["_react","data","_interopRequireWildcard","require","_explorerUiGallery","_lodash","_interopRequireDefault","_scopes","_cloudHooks","_workspaceUi","_workspaceContext","_useWorkspaceAggregation","_useQueryParamWithDefault","_namespaceHeader","_hopeComponentCard","_workspaceFilterPanel","_workspaceBlankState","_workspaceOverviewModule","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","WorkspaceOverview","workspace","useContext","WorkspaceContext","components","componentDescriptors","isMinimal","useWorkspaceMode","uniqueScopes","Set","map","c","id","scope","cloudScopes","useCloudScopes","cloudMap","Map","s","toString","compDescriptorMap","d","items","compact","component","deprecation","isDeprecate","descriptor","cloudScope","ScopeID","isValid","fromString","undefined","componentDescriptor","icon","backgroundIconColor","aggregation","setAggregation","useQueryParamWithDefault","activeNamespaces","setActiveNamespaces","useListParamWithDefault","activeScopes","setActiveScopes","filters","useMemo","namespaces","scopes","statuses","groups","groupType","availableAggregations","filteredCount","useWorkspaceAggregation","length","createElement","WorkspaceBlankState","className","styles","container","WorkspaceFilterPanel","onAggregationChange","onNamespacesChange","onScopesChange","content","group","key","name","section","sectionHeader","NamespaceHeader","namespace","scopeIcon","scopeIconColor","ComponentGrid","cardGrid","item","HopeComponentCard","showPreview"],"sources":["workspace-overview.tsx"],"sourcesContent":["import React, { useContext, useMemo } from 'react';\nimport { ComponentGrid } from '@teambit/explorer.ui.gallery.component-grid';\n// Legacy empty state — kept around as a fallback while the new blank state rolls out.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { EmptyWorkspace } from '@teambit/workspace.ui.empty-workspace';\nimport compact from 'lodash.compact';\nimport { ScopeID } from '@teambit/scopes.scope-id';\nimport { useCloudScopes } from '@teambit/cloud.hooks.use-cloud-scopes';\nimport { useWorkspaceMode } from '@teambit/workspace.ui.use-workspace-mode';\nimport { WorkspaceContext } from '../workspace-context';\nimport { useWorkspaceAggregation } from './use-workspace-aggregation';\nimport { useQueryParamWithDefault, useListParamWithDefault } from './use-query-param-with-default';\nimport { NamespaceHeader } from './namespace-header';\nimport { HopeComponentCard } from './hope-component-card';\nimport type { AggregationType } from './workspace-overview.types';\nimport { WorkspaceFilterPanel } from './workspace-filter-panel';\nimport { WorkspaceBlankState } from './workspace-blank-state';\nimport styles from './workspace-overview.module.scss';\n\nexport function WorkspaceOverview() {\n const workspace = useContext(WorkspaceContext);\n const { components, componentDescriptors } = workspace;\n\n const { isMinimal } = useWorkspaceMode();\n const uniqueScopes = [...new Set(components.map((c) => c.id.scope))];\n const { cloudScopes } = useCloudScopes(uniqueScopes);\n const cloudMap = new Map((cloudScopes || []).map((s) => [s.id.toString(), s]));\n\n const compDescriptorMap = new Map(componentDescriptors.map((d) => [d.id.toString(), d]));\n\n const items = compact(\n components.map((component) => {\n if (component.deprecation?.isDeprecate) return null;\n\n const descriptor = compDescriptorMap.get(component.id.toString());\n if (!descriptor) return null;\n\n const cloudScope = cloudMap.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 {\n component,\n componentDescriptor: descriptor,\n scope: scope\n ? { id: scope.id, icon: (scope as any).icon, backgroundIconColor: (scope as any).backgroundIconColor }\n : undefined,\n };\n })\n );\n\n const [aggregation, setAggregation] = useQueryParamWithDefault<AggregationType>('aggregation', 'namespaces');\n const [activeNamespaces, setActiveNamespaces] = useListParamWithDefault('ns');\n const [activeScopes, setActiveScopes] = useListParamWithDefault('scopes');\n\n const filters = useMemo(\n () => ({ namespaces: activeNamespaces, scopes: activeScopes, statuses: new Set() as any }),\n [activeNamespaces, activeScopes]\n );\n\n const { groups, groupType, availableAggregations, filteredCount } = useWorkspaceAggregation(\n items,\n aggregation,\n filters\n );\n\n if (!components.length) return <WorkspaceBlankState />;\n\n return (\n <div className={styles.container}>\n <WorkspaceFilterPanel\n aggregation={aggregation}\n onAggregationChange={setAggregation}\n availableAggregations={availableAggregations}\n items={items}\n activeNamespaces={activeNamespaces}\n onNamespacesChange={setActiveNamespaces}\n activeScopes={activeScopes}\n onScopesChange={setActiveScopes}\n />\n\n <div className={styles.content}>\n {filteredCount === 0 && <WorkspaceBlankState />}\n\n {groups.map((group) => (\n <section key={group.name} className={styles.section}>\n {groupType !== 'none' && (\n <div className={styles.sectionHeader}>\n <NamespaceHeader\n namespace={group.name}\n items={group.items}\n scopeIcon={group.scopeIcon}\n scopeIconColor={group.scopeIconColor}\n />\n </div>\n )}\n\n <ComponentGrid className={styles.cardGrid}>\n {group.items.map((item) => (\n <HopeComponentCard\n key={item.component.id.toString()}\n component={item.component}\n componentDescriptor={item.componentDescriptor}\n scope={item.scope as any}\n showPreview={isMinimal}\n />\n ))}\n </ComponentGrid>\n </section>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","data","_interopRequireWildcard","require","_workspaceUi","_explorerUi","_workspaceContext","_workspaceBlankState","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","WorkspaceOverview","workspace","useContext","WorkspaceContext","components","componentDescriptors","isMinimal","useWorkspaceMode","length","createElement","WorkspaceBlankState","ComponentsOverview","showPreview","storageNamespace","emptyState"],"sources":["workspace-overview.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { useWorkspaceMode } from '@teambit/workspace.ui.use-workspace-mode';\nimport { ComponentsOverview } from '@teambit/explorer.ui.components-overview';\nimport { WorkspaceContext } from '../workspace-context';\nimport { WorkspaceBlankState } from './workspace-blank-state';\n\nexport function WorkspaceOverview() {\n const workspace = useContext(WorkspaceContext);\n const { components, componentDescriptors } = workspace;\n const { isMinimal } = useWorkspaceMode();\n\n if (!components.length) return <WorkspaceBlankState />;\n\n return (\n <ComponentsOverview\n components={components}\n componentDescriptors={componentDescriptors}\n showPreview={isMinimal}\n storageNamespace=\"workspace-overview\"\n emptyState={<WorkspaceBlankState />}\n />\n );\n}\n"],"mappings":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,uBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,aAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,YAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,YAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,WAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,kBAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,iBAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,qBAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,oBAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA8D,SAAAC,wBAAAM,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAR,uBAAA,YAAAA,CAAAM,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAEvD,SAASkB,iBAAiBA,CAAA,EAAG;EAClC,MAAMC,SAAS,GAAG,IAAAC,mBAAU,EAACC,oCAAgB,CAAC;EAC9C,MAAM;IAAEC,UAAU;IAAEC;EAAqB,CAAC,GAAGJ,SAAS;EACtD,MAAM;IAAEK;EAAU,CAAC,GAAG,IAAAC,+BAAgB,EAAC,CAAC;EAExC,IAAI,CAACH,UAAU,CAACI,MAAM,EAAE,oBAAOnC,MAAA,GAAAkB,OAAA,CAAAkB,aAAA,CAAC7B,oBAAA,GAAA8B,mBAAmB,MAAE,CAAC;EAEtD,oBACErC,MAAA,GAAAkB,OAAA,CAAAkB,aAAA,CAAC/B,WAAA,GAAAiC,kBAAkB;IACjBP,UAAU,EAAEA,UAAW;IACvBC,oBAAoB,EAAEA,oBAAqB;IAC3CO,WAAW,EAAEN,SAAU;IACvBO,gBAAgB,EAAC,oBAAoB;IACrCC,UAAU,eAAEzC,MAAA,GAAAkB,OAAA,CAAAkB,aAAA,CAAC7B,oBAAA,GAAA8B,mBAAmB,MAAE;EAAE,CACrC,CAAC;AAEN","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ /**
3
+ * Full-shell loading placeholder shown while the (light) workspace query resolves. Mirrors the real
4
+ * workspace chrome — top bar, sidebar column, content grid — so there is no blank flash and no
5
+ * layout shift when the live UI takes over. Previously this gap rendered an empty `<div>`, which
6
+ * read as a frozen/blank screen on slower workspaces.
7
+ */
8
+ export declare function WorkspaceSkeleton(): React.JSX.Element;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.WorkspaceSkeleton = WorkspaceSkeleton;
7
+ function _react() {
8
+ const data = _interopRequireDefault(require("react"));
9
+ _react = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ function _explorerUi() {
15
+ const data = require("@teambit/explorer.ui.components-overview");
16
+ _explorerUi = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
21
+ function _workspaceSkeletonModule() {
22
+ const data = _interopRequireDefault(require("./workspace-skeleton.module.scss"));
23
+ _workspaceSkeletonModule = function () {
24
+ return data;
25
+ };
26
+ return data;
27
+ }
28
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
29
+ /**
30
+ * Full-shell loading placeholder shown while the (light) workspace query resolves. Mirrors the real
31
+ * workspace chrome — top bar, sidebar column, content grid — so there is no blank flash and no
32
+ * layout shift when the live UI takes over. Previously this gap rendered an empty `<div>`, which
33
+ * read as a frozen/blank screen on slower workspaces.
34
+ */
35
+ function WorkspaceSkeleton() {
36
+ return /*#__PURE__*/_react().default.createElement("div", {
37
+ className: _workspaceSkeletonModule().default.wrapper,
38
+ "aria-busy": "true",
39
+ "aria-live": "polite"
40
+ }, /*#__PURE__*/_react().default.createElement("div", {
41
+ className: _workspaceSkeletonModule().default.topbar
42
+ }, /*#__PURE__*/_react().default.createElement("div", {
43
+ className: _workspaceSkeletonModule().default.corner
44
+ }), /*#__PURE__*/_react().default.createElement("div", {
45
+ className: _workspaceSkeletonModule().default.topbarNav
46
+ }, /*#__PURE__*/_react().default.createElement("span", {
47
+ className: _workspaceSkeletonModule().default.navItem
48
+ }), /*#__PURE__*/_react().default.createElement("span", {
49
+ className: _workspaceSkeletonModule().default.navItem
50
+ }), /*#__PURE__*/_react().default.createElement("span", {
51
+ className: _workspaceSkeletonModule().default.navItem
52
+ }))), /*#__PURE__*/_react().default.createElement("div", {
53
+ className: _workspaceSkeletonModule().default.main
54
+ }, /*#__PURE__*/_react().default.createElement("div", {
55
+ className: _workspaceSkeletonModule().default.sidebar
56
+ }, /*#__PURE__*/_react().default.createElement("span", {
57
+ className: _workspaceSkeletonModule().default.sidebarSearch
58
+ }), Array.from({
59
+ length: 10
60
+ }).map((_, i) => /*#__PURE__*/_react().default.createElement("span", {
61
+ key: i,
62
+ className: _workspaceSkeletonModule().default.sidebarRow,
63
+ style: {
64
+ width: `${55 + i * 13 % 35}%`
65
+ }
66
+ }))), /*#__PURE__*/_react().default.createElement("div", {
67
+ className: _workspaceSkeletonModule().default.content
68
+ }, /*#__PURE__*/_react().default.createElement(_explorerUi().ComponentsOverviewSkeleton, {
69
+ count: 12
70
+ }))));
71
+ }
72
+
73
+ //# sourceMappingURL=workspace-skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","data","_interopRequireDefault","require","_explorerUi","_workspaceSkeletonModule","e","__esModule","default","WorkspaceSkeleton","createElement","className","styles","wrapper","topbar","corner","topbarNav","navItem","main","sidebar","sidebarSearch","Array","from","length","map","_","i","key","sidebarRow","style","width","content","ComponentsOverviewSkeleton","count"],"sources":["workspace-skeleton.tsx"],"sourcesContent":["import React from 'react';\nimport { ComponentsOverviewSkeleton } from '@teambit/explorer.ui.components-overview';\nimport styles from './workspace-skeleton.module.scss';\n\n/**\n * Full-shell loading placeholder shown while the (light) workspace query resolves. Mirrors the real\n * workspace chrome — top bar, sidebar column, content grid — so there is no blank flash and no\n * layout shift when the live UI takes over. Previously this gap rendered an empty `<div>`, which\n * read as a frozen/blank screen on slower workspaces.\n */\nexport function WorkspaceSkeleton() {\n return (\n <div className={styles.wrapper} aria-busy=\"true\" aria-live=\"polite\">\n <div className={styles.topbar}>\n <div className={styles.corner} />\n <div className={styles.topbarNav}>\n <span className={styles.navItem} />\n <span className={styles.navItem} />\n <span className={styles.navItem} />\n </div>\n </div>\n <div className={styles.main}>\n <div className={styles.sidebar}>\n <span className={styles.sidebarSearch} />\n {Array.from({ length: 10 }).map((_, i) => (\n <span key={i} className={styles.sidebarRow} style={{ width: `${55 + ((i * 13) % 35)}%` }} />\n ))}\n </div>\n <div className={styles.content}>\n <ComponentsOverviewSkeleton count={12} />\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,YAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,yBAAA;EAAA,MAAAJ,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAE,wBAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAsD,SAAAC,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEtD;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,iBAAiBA,CAAA,EAAG;EAClC,oBACET,MAAA,GAAAQ,OAAA,CAAAE,aAAA;IAAKC,SAAS,EAAEC,kCAAM,CAACC,OAAQ;IAAC,aAAU,MAAM;IAAC,aAAU;EAAQ,gBACjEb,MAAA,GAAAQ,OAAA,CAAAE,aAAA;IAAKC,SAAS,EAAEC,kCAAM,CAACE;EAAO,gBAC5Bd,MAAA,GAAAQ,OAAA,CAAAE,aAAA;IAAKC,SAAS,EAAEC,kCAAM,CAACG;EAAO,CAAE,CAAC,eACjCf,MAAA,GAAAQ,OAAA,CAAAE,aAAA;IAAKC,SAAS,EAAEC,kCAAM,CAACI;EAAU,gBAC/BhB,MAAA,GAAAQ,OAAA,CAAAE,aAAA;IAAMC,SAAS,EAAEC,kCAAM,CAACK;EAAQ,CAAE,CAAC,eACnCjB,MAAA,GAAAQ,OAAA,CAAAE,aAAA;IAAMC,SAAS,EAAEC,kCAAM,CAACK;EAAQ,CAAE,CAAC,eACnCjB,MAAA,GAAAQ,OAAA,CAAAE,aAAA;IAAMC,SAAS,EAAEC,kCAAM,CAACK;EAAQ,CAAE,CAC/B,CACF,CAAC,eACNjB,MAAA,GAAAQ,OAAA,CAAAE,aAAA;IAAKC,SAAS,EAAEC,kCAAM,CAACM;EAAK,gBAC1BlB,MAAA,GAAAQ,OAAA,CAAAE,aAAA;IAAKC,SAAS,EAAEC,kCAAM,CAACO;EAAQ,gBAC7BnB,MAAA,GAAAQ,OAAA,CAAAE,aAAA;IAAMC,SAAS,EAAEC,kCAAM,CAACQ;EAAc,CAAE,CAAC,EACxCC,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAE;EAAG,CAAC,CAAC,CAACC,GAAG,CAAC,CAACC,CAAC,EAAEC,CAAC,kBACnC1B,MAAA,GAAAQ,OAAA,CAAAE,aAAA;IAAMiB,GAAG,EAAED,CAAE;IAACf,SAAS,EAAEC,kCAAM,CAACgB,UAAW;IAACC,KAAK,EAAE;MAAEC,KAAK,EAAE,GAAG,EAAE,GAAKJ,CAAC,GAAG,EAAE,GAAI,EAAG;IAAI;EAAE,CAAE,CAC5F,CACE,CAAC,eACN1B,MAAA,GAAAQ,OAAA,CAAAE,aAAA;IAAKC,SAAS,EAAEC,kCAAM,CAACmB;EAAQ,gBAC7B/B,MAAA,GAAAQ,OAAA,CAAAE,aAAA,CAACN,WAAA,GAAA4B,0BAA0B;IAACC,KAAK,EAAE;EAAG,CAAE,CACrC,CACF,CACF,CAAC;AAEV","ignoreList":[]}
@@ -0,0 +1,102 @@
1
+ .wrapper {
2
+ display: flex;
3
+ flex-direction: column;
4
+ height: 100vh;
5
+ overflow: hidden;
6
+ background: var(--background-color, #fff);
7
+ }
8
+
9
+ /* ---- Top bar ---- */
10
+
11
+ .topbar {
12
+ flex: none;
13
+ display: flex;
14
+ align-items: center;
15
+ height: 48px;
16
+ border-bottom: 1px solid var(--border-medium-color, #e6e6e6);
17
+ }
18
+
19
+ .corner {
20
+ width: 246px;
21
+ height: 100%;
22
+ flex: none;
23
+ border-right: 1px solid var(--border-medium-color, #e6e6e6);
24
+ background: color-mix(in srgb, var(--on-background-color, #000) 3%, transparent);
25
+ }
26
+
27
+ .topbarNav {
28
+ display: flex;
29
+ align-items: center;
30
+ gap: 18px;
31
+ padding: 0 24px;
32
+ }
33
+
34
+ .navItem {
35
+ width: 64px;
36
+ height: 12px;
37
+ border-radius: 4px;
38
+ background: var(--surface01-color, color-mix(in srgb, var(--on-background-color, #000) 6%, transparent));
39
+ }
40
+
41
+ /* ---- Main: sidebar + content ---- */
42
+
43
+ .main {
44
+ flex: 1 1;
45
+ display: flex;
46
+ min-height: 0;
47
+ }
48
+
49
+ .sidebar {
50
+ width: 246px;
51
+ flex: none;
52
+ border-right: 1px solid var(--border-medium-color, #e6e6e6);
53
+ padding: 16px 12px;
54
+ display: flex;
55
+ flex-direction: column;
56
+ gap: 14px;
57
+ overflow: hidden;
58
+ }
59
+
60
+ .sidebarSearch {
61
+ height: 30px;
62
+ border-radius: 8px;
63
+ background: var(--surface01-color, color-mix(in srgb, var(--on-background-color, #000) 6%, transparent));
64
+ margin-bottom: 6px;
65
+ }
66
+
67
+ .sidebarRow {
68
+ height: 11px;
69
+ border-radius: 4px;
70
+ background: var(--surface01-color, color-mix(in srgb, var(--on-background-color, #000) 6%, transparent));
71
+ }
72
+
73
+ .content {
74
+ flex: 1 1;
75
+ min-width: 0;
76
+ overflow: hidden;
77
+ }
78
+
79
+ /* gentle pulse across the whole shell so it reads as loading */
80
+ .sidebar,
81
+ .topbarNav,
82
+ .corner {
83
+ animation: pulse 1.6s ease-in-out infinite;
84
+ }
85
+
86
+ @keyframes pulse {
87
+ 0%,
88
+ 100% {
89
+ opacity: 1;
90
+ }
91
+ 50% {
92
+ opacity: 0.65;
93
+ }
94
+ }
95
+
96
+ @media (prefers-reduced-motion: reduce) {
97
+ .sidebar,
98
+ .topbarNav,
99
+ .corner {
100
+ animation: none;
101
+ }
102
+ }
@@ -153,6 +153,13 @@ function _workspaceProvider() {
153
153
  };
154
154
  return data;
155
155
  }
156
+ function _workspaceSkeleton() {
157
+ const data = require("./workspace-skeleton");
158
+ _workspaceSkeleton = function () {
159
+ return data;
160
+ };
161
+ return data;
162
+ }
156
163
  function _workspaceModule() {
157
164
  const data = _interopRequireDefault(require("./workspace.module.scss"));
158
165
  _workspaceModule = function () {
@@ -201,7 +208,11 @@ function Workspace({
201
208
  }, []);
202
209
  const sidebarOpenness = isSidebarOpen ? _baseUiSurfacesSplitPane().Layout.row : _baseUiSurfacesSplitPane().Layout.right;
203
210
  const themeName = currentTheme?.themeName || 'light';
204
- onSidebarTogglerChange(handleSidebarToggle);
211
+ // register the toggler with the parent in an effect, not during render — calling a parent callback
212
+ // (which stores/setStates it) mid-render risks "cannot update a component while rendering another".
213
+ (0, _react().useEffect)(() => {
214
+ onSidebarTogglerChange(handleSidebarToggle);
215
+ }, [onSidebarTogglerChange, handleSidebarToggle]);
205
216
  (0, _react().useEffect)(() => {
206
217
  if (!window) return;
207
218
  if (window.innerWidth <= 1024) {
@@ -212,15 +223,20 @@ function Workspace({
212
223
  setSidebarOpen(!isMinimal);
213
224
  }, [isMinimal]);
214
225
  const location = (0, _reactRouterDom().useLocation)();
215
- if (!workspace) {
216
- return /*#__PURE__*/_react().default.createElement("div", {
217
- className: _workspaceModule().default.emptyContainer
218
- });
219
- }
220
- workspaceUI.setComponents(workspace.components);
226
+
227
+ // push the loaded components into the workspace UI store from an effect rather than during render —
228
+ // mutating an external store mid-render can re-render its subscribers in the middle of this render.
229
+ (0, _react().useEffect)(() => {
230
+ if (workspace) workspaceUI.setComponents(workspace.components);
231
+ }, [workspaceUI, workspace]);
221
232
  const inIframe = typeof window !== 'undefined' && window.parent && window.parent !== window;
222
233
  const isOverview = location.pathname === '/' || location.pathname === '';
223
234
  const showTopBar = !isMinimal || isMinimal && !isOverview;
235
+ if (!workspace) {
236
+ // While the light workspace query resolves, show a full-shell skeleton instead of a blank
237
+ // screen. The heavy per-component data (status, issues) streams in after first paint.
238
+ return /*#__PURE__*/_react().default.createElement(_workspaceSkeleton().WorkspaceSkeleton, null);
239
+ }
224
240
  return /*#__PURE__*/_react().default.createElement(_workspaceProvider().WorkspaceProvider, {
225
241
  workspace: workspace
226
242
  }, !isMinimal && /*#__PURE__*/_react().default.createElement(NotificationsBinder, {
@@ -1 +1 @@
1
- {"version":3,"names":["require","_pluralize","data","_interopRequireDefault","_react","_interopRequireWildcard","_reactRouterDom","_component","_lanesUiModels","_uiFoundationUiNotifications","_uiFoundationUiReactRouter","_uiFoundationUi","_uiFoundationUiButtons","_baseUiSurfacesSplitPane","_baseReactThemes","_baseUiSurfacesSplitPane2","_uiFoundationUi2","_workspaceUi","_classnames","_workspaceUi2","_workspaceHooks","_workspaceHooks2","_useWorkspace","_workspaceOverview","_workspaceProvider","_workspaceModule","_themeFromUrl","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Workspace","routeSlot","menuSlot","sidebar","workspaceUI","onSidebarTogglerChange","isMinimal","useWorkspaceMode","reactionsRef","useRef","onComponentAdded","onComponentRemoved","reactions","useMemo","comps","current","ids","workspace","useWorkspace","theme","useThemePicker","currentTheme","isSidebarOpen","setSidebarOpen","useState","handleSidebarToggle","useCallback","prev","sidebarOpenness","Layout","row","right","themeName","useEffect","window","innerWidth","useLayoutEffect","location","useLocation","createElement","className","styles","emptyContainer","setComponents","components","inIframe","parent","isOverview","pathname","showTopBar","WorkspaceProvider","NotificationsBinder","PreserveWorkspaceMode","ThemeFromUrlSync","MinimalModeUrlBroadcasterAndListener","workspaceWrapper","TopBar","classNames","topbar","minimal","Corner","cornerWithBreadcrumb","Link","to","backButton","width","height","viewBox","fill","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","corner","name","icon","WorkspaceBreadcrumb","menu","SplitPane","main","size","layout","Pane","closed","HoverSplitter","splitter","splitterClosed","Collapser","isOpen","Boolean","onMouseDown","stopPropagation","onClick","tooltipContent","SlotRouter","slot","Route","index","element","WorkspaceOverview","notifications","useNotifications","notificationsMapped","notificationId","log","pluralize","length","map","comp","id","toString","join","setTimeout","dismiss","useUrlChangeBroadcaster","useNavigationMessageListener","useComponentFullNameFromUrl","laneComponentUrl","marker","LanesModel","baseLaneComponentRoute","replace","idx","indexOf","slice","includes","lanesPrefix","undefined","useIdFromLocation","fullName","searchParams","useSearchParams","parts","split","isLast","breadcrumb","part","namespace","overviewParams","URLSearchParams","Fragment","key","breadcrumbSeparator","breadcrumbLast","breadcrumbLink"],"sources":["workspace.tsx"],"sourcesContent":["import 'reset-css';\nimport pluralize from 'pluralize';\nimport React, { useState, useMemo, useEffect, useCallback, useLayoutEffect, useRef } from 'react';\nimport { Route, Link, useLocation, useSearchParams } from 'react-router-dom';\nimport type { ComponentModel } from '@teambit/component';\nimport { useIdFromLocation } from '@teambit/component';\nimport type { ComponentID } from '@teambit/component-id';\nimport { LanesModel } from '@teambit/lanes.ui.models.lanes-model';\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';\nimport { useUrlChangeBroadcaster } from '@teambit/workspace.hooks.use-url-change-broadcaster';\nimport { useNavigationMessageListener } from '@teambit/workspace.hooks.use-navigation-message-listener';\n\nimport { useWorkspace } from './use-workspace';\nimport { WorkspaceOverview } from './workspace-overview';\nimport { WorkspaceProvider } from './workspace-provider';\nimport styles from './workspace.module.scss';\nimport type { WorkspaceUI } from '../../workspace.ui.runtime';\nimport { ThemeFromUrlSync } from './theme-from-url';\n\nexport type WorkspaceProps = {\n routeSlot: RouteSlot;\n menuSlot: RouteSlot;\n sidebar: React.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\n const reactionsRef = useRef<{\n onComponentAdded: (comps: ComponentModel[]) => void;\n onComponentRemoved: (ids: ComponentID[]) => void;\n }>({\n onComponentAdded: () => {},\n onComponentRemoved: () => {},\n });\n\n const reactions = useMemo(\n () => ({\n onComponentAdded: (comps: ComponentModel[]) => reactionsRef.current.onComponentAdded(comps),\n onComponentRemoved: (ids: ComponentID[]) => reactionsRef.current.onComponentRemoved(ids),\n }),\n []\n );\n\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 const location = useLocation();\n\n if (!workspace) {\n return <div className={styles.emptyContainer}></div>;\n }\n\n workspaceUI.setComponents(workspace.components);\n const inIframe = typeof window !== 'undefined' && window.parent && window.parent !== window;\n const isOverview = location.pathname === '/' || location.pathname === '';\n const showTopBar = !isMinimal || (isMinimal && !isOverview);\n\n return (\n <WorkspaceProvider workspace={workspace}>\n {!isMinimal && <NotificationsBinder reactionsRef={reactionsRef} />}\n <PreserveWorkspaceMode>\n <ThemeFromUrlSync />\n {isMinimal && inIframe && <MinimalModeUrlBroadcasterAndListener />}\n <div className={styles.workspaceWrapper}>\n {showTopBar && (\n <TopBar\n className={classNames(styles.topbar, styles[themeName], isMinimal && styles.minimal)}\n Corner={() => (\n <div className={classNames(isMinimal && styles.cornerWithBreadcrumb)}>\n {isMinimal ? (\n <Link to=\"/\" className={styles.backButton}>\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path\n d=\"M11.25 13.5L6.75 9L11.25 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </Link>\n ) : (\n <Corner\n className={classNames(styles.corner, styles[themeName])}\n name={workspace.name}\n icon={workspace.icon}\n />\n )}\n {isMinimal && <WorkspaceBreadcrumb />}\n </div>\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\n className={classNames(styles.splitter, isMinimal && !isSidebarOpen && styles.splitterClosed)}\n >\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 NotificationsBinder({\n reactionsRef,\n}: {\n reactionsRef: React.MutableRefObject<{\n onComponentAdded: (comps: ComponentModel[]) => void;\n onComponentRemoved: (ids: ComponentID[]) => void;\n }>;\n}) {\n const notifications = useNotifications();\n\n const notificationsMapped = useMemo(() => {\n return {\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 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 useEffect(() => {\n reactionsRef.current = notificationsMapped;\n return () => {\n reactionsRef.current = { onComponentAdded: () => {}, onComponentRemoved: () => {} };\n };\n }, [notificationsMapped, reactionsRef]);\n\n return null;\n}\n\nexport function MinimalModeUrlBroadcasterAndListener() {\n useUrlChangeBroadcaster();\n useNavigationMessageListener();\n return null;\n}\n\n/**\n * Extracts the component fullName from the URL.\n * For lane URLs (`/~lane/scope/lane/~component/...`), extracts the path after ~component/\n * and passes it to useIdFromLocation. For regular URLs, useIdFromLocation handles it directly.\n */\nfunction useComponentFullNameFromUrl(): string | undefined {\n const { pathname } = useLocation();\n const laneComponentUrl = useMemo(() => {\n const marker = LanesModel.baseLaneComponentRoute.replace(/^\\//, '') + '/';\n const idx = pathname.indexOf(marker);\n if (idx !== -1) return pathname.slice(idx + marker.length);\n if (pathname.includes(LanesModel.lanesPrefix)) return ''; // lane page, no component\n return undefined;\n }, [pathname]);\n\n return useIdFromLocation(laneComponentUrl || undefined);\n}\n\nfunction WorkspaceBreadcrumb() {\n const fullName = useComponentFullNameFromUrl();\n const [searchParams] = useSearchParams();\n if (!fullName) return null;\n\n const parts = fullName.split('/');\n const isLast = (i: number) => i === parts.length - 1;\n\n return (\n <span className={styles.breadcrumb}>\n {parts.map((part, i) => {\n // build the namespace from all segments up to this one\n const namespace = parts.slice(0, i + 1).join('/');\n const overviewParams = new URLSearchParams(searchParams);\n overviewParams.set('aggregation', 'none');\n overviewParams.set('ns', namespace);\n\n return (\n <React.Fragment key={i}>\n {i > 0 && <span className={styles.breadcrumbSeparator}>/</span>}\n {isLast(i) ? (\n <span className={styles.breadcrumbLast}>{part}</span>\n ) : (\n <Link to={`/?${overviewParams.toString()}`} className={styles.breadcrumbLink}>\n {part}\n </Link>\n )}\n </React.Fragment>\n );\n })}\n </span>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["require","_pluralize","data","_interopRequireDefault","_react","_interopRequireWildcard","_reactRouterDom","_component","_lanesUiModels","_uiFoundationUiNotifications","_uiFoundationUiReactRouter","_uiFoundationUi","_uiFoundationUiButtons","_baseUiSurfacesSplitPane","_baseReactThemes","_baseUiSurfacesSplitPane2","_uiFoundationUi2","_workspaceUi","_classnames","_workspaceUi2","_workspaceHooks","_workspaceHooks2","_useWorkspace","_workspaceOverview","_workspaceProvider","_workspaceSkeleton","_workspaceModule","_themeFromUrl","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Workspace","routeSlot","menuSlot","sidebar","workspaceUI","onSidebarTogglerChange","isMinimal","useWorkspaceMode","reactionsRef","useRef","onComponentAdded","onComponentRemoved","reactions","useMemo","comps","current","ids","workspace","useWorkspace","theme","useThemePicker","currentTheme","isSidebarOpen","setSidebarOpen","useState","handleSidebarToggle","useCallback","prev","sidebarOpenness","Layout","row","right","themeName","useEffect","window","innerWidth","useLayoutEffect","location","useLocation","setComponents","components","inIframe","parent","isOverview","pathname","showTopBar","createElement","WorkspaceSkeleton","WorkspaceProvider","NotificationsBinder","PreserveWorkspaceMode","ThemeFromUrlSync","MinimalModeUrlBroadcasterAndListener","className","styles","workspaceWrapper","TopBar","classNames","topbar","minimal","Corner","cornerWithBreadcrumb","Link","to","backButton","width","height","viewBox","fill","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","corner","name","icon","WorkspaceBreadcrumb","menu","SplitPane","main","size","layout","Pane","closed","HoverSplitter","splitter","splitterClosed","Collapser","isOpen","Boolean","onMouseDown","stopPropagation","onClick","tooltipContent","SlotRouter","slot","Route","index","element","WorkspaceOverview","notifications","useNotifications","notificationsMapped","notificationId","log","pluralize","length","map","comp","id","toString","join","setTimeout","dismiss","useUrlChangeBroadcaster","useNavigationMessageListener","useComponentFullNameFromUrl","laneComponentUrl","marker","LanesModel","baseLaneComponentRoute","replace","idx","indexOf","slice","includes","lanesPrefix","undefined","useIdFromLocation","fullName","searchParams","useSearchParams","parts","split","isLast","breadcrumb","part","namespace","overviewParams","URLSearchParams","Fragment","key","breadcrumbSeparator","breadcrumbLast","breadcrumbLink"],"sources":["workspace.tsx"],"sourcesContent":["import 'reset-css';\nimport pluralize from 'pluralize';\nimport React, { useState, useMemo, useEffect, useCallback, useLayoutEffect, useRef } from 'react';\nimport { Route, Link, useLocation, useSearchParams } from 'react-router-dom';\nimport type { ComponentModel } from '@teambit/component';\nimport { useIdFromLocation } from '@teambit/component';\nimport type { ComponentID } from '@teambit/component-id';\nimport { LanesModel } from '@teambit/lanes.ui.models.lanes-model';\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';\nimport { useUrlChangeBroadcaster } from '@teambit/workspace.hooks.use-url-change-broadcaster';\nimport { useNavigationMessageListener } from '@teambit/workspace.hooks.use-navigation-message-listener';\n\nimport { useWorkspace } from './use-workspace';\nimport { WorkspaceOverview } from './workspace-overview';\nimport { WorkspaceProvider } from './workspace-provider';\nimport { WorkspaceSkeleton } from './workspace-skeleton';\nimport styles from './workspace.module.scss';\nimport type { WorkspaceUI } from '../../workspace.ui.runtime';\nimport { ThemeFromUrlSync } from './theme-from-url';\n\nexport type WorkspaceProps = {\n routeSlot: RouteSlot;\n menuSlot: RouteSlot;\n sidebar: React.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\n const reactionsRef = useRef<{\n onComponentAdded: (comps: ComponentModel[]) => void;\n onComponentRemoved: (ids: ComponentID[]) => void;\n }>({\n onComponentAdded: () => {},\n onComponentRemoved: () => {},\n });\n\n const reactions = useMemo(\n () => ({\n onComponentAdded: (comps: ComponentModel[]) => reactionsRef.current.onComponentAdded(comps),\n onComponentRemoved: (ids: ComponentID[]) => reactionsRef.current.onComponentRemoved(ids),\n }),\n []\n );\n\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 // register the toggler with the parent in an effect, not during render — calling a parent callback\n // (which stores/setStates it) mid-render risks \"cannot update a component while rendering another\".\n useEffect(() => {\n onSidebarTogglerChange(handleSidebarToggle);\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 const location = useLocation();\n\n // push the loaded components into the workspace UI store from an effect rather than during render —\n // mutating an external store mid-render can re-render its subscribers in the middle of this render.\n useEffect(() => {\n if (workspace) workspaceUI.setComponents(workspace.components);\n }, [workspaceUI, workspace]);\n\n const inIframe = typeof window !== 'undefined' && window.parent && window.parent !== window;\n const isOverview = location.pathname === '/' || location.pathname === '';\n const showTopBar = !isMinimal || (isMinimal && !isOverview);\n if (!workspace) {\n // While the light workspace query resolves, show a full-shell skeleton instead of a blank\n // screen. The heavy per-component data (status, issues) streams in after first paint.\n return <WorkspaceSkeleton />;\n }\n\n return (\n <WorkspaceProvider workspace={workspace}>\n {!isMinimal && <NotificationsBinder reactionsRef={reactionsRef} />}\n <PreserveWorkspaceMode>\n <ThemeFromUrlSync />\n {isMinimal && inIframe && <MinimalModeUrlBroadcasterAndListener />}\n <div className={styles.workspaceWrapper}>\n {showTopBar && (\n <TopBar\n className={classNames(styles.topbar, styles[themeName], isMinimal && styles.minimal)}\n Corner={() => (\n <div className={classNames(isMinimal && styles.cornerWithBreadcrumb)}>\n {isMinimal ? (\n <Link to=\"/\" className={styles.backButton}>\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path\n d=\"M11.25 13.5L6.75 9L11.25 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </Link>\n ) : (\n <Corner\n className={classNames(styles.corner, styles[themeName])}\n name={workspace.name}\n icon={workspace.icon}\n />\n )}\n {isMinimal && <WorkspaceBreadcrumb />}\n </div>\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\n className={classNames(styles.splitter, isMinimal && !isSidebarOpen && styles.splitterClosed)}\n >\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 NotificationsBinder({\n reactionsRef,\n}: {\n reactionsRef: React.MutableRefObject<{\n onComponentAdded: (comps: ComponentModel[]) => void;\n onComponentRemoved: (ids: ComponentID[]) => void;\n }>;\n}) {\n const notifications = useNotifications();\n\n const notificationsMapped = useMemo(() => {\n return {\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 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 useEffect(() => {\n reactionsRef.current = notificationsMapped;\n return () => {\n reactionsRef.current = { onComponentAdded: () => {}, onComponentRemoved: () => {} };\n };\n }, [notificationsMapped, reactionsRef]);\n\n return null;\n}\n\nexport function MinimalModeUrlBroadcasterAndListener() {\n useUrlChangeBroadcaster();\n useNavigationMessageListener();\n return null;\n}\n\n/**\n * Extracts the component fullName from the URL.\n * For lane URLs (`/~lane/scope/lane/~component/...`), extracts the path after ~component/\n * and passes it to useIdFromLocation. For regular URLs, useIdFromLocation handles it directly.\n */\nfunction useComponentFullNameFromUrl(): string | undefined {\n const { pathname } = useLocation();\n const laneComponentUrl = useMemo(() => {\n const marker = LanesModel.baseLaneComponentRoute.replace(/^\\//, '') + '/';\n const idx = pathname.indexOf(marker);\n if (idx !== -1) return pathname.slice(idx + marker.length);\n if (pathname.includes(LanesModel.lanesPrefix)) return ''; // lane page, no component\n return undefined;\n }, [pathname]);\n\n return useIdFromLocation(laneComponentUrl || undefined);\n}\n\nfunction WorkspaceBreadcrumb() {\n const fullName = useComponentFullNameFromUrl();\n const [searchParams] = useSearchParams();\n if (!fullName) return null;\n\n const parts = fullName.split('/');\n const isLast = (i: number) => i === parts.length - 1;\n\n return (\n <span className={styles.breadcrumb}>\n {parts.map((part, i) => {\n // build the namespace from all segments up to this one\n const namespace = parts.slice(0, i + 1).join('/');\n const overviewParams = new URLSearchParams(searchParams);\n overviewParams.set('aggregation', 'none');\n overviewParams.set('ns', namespace);\n\n return (\n <React.Fragment key={i}>\n {i > 0 && <span className={styles.breadcrumbSeparator}>/</span>}\n {isLast(i) ? (\n <span className={styles.breadcrumbLast}>{part}</span>\n ) : (\n <Link to={`/?${overviewParams.toString()}`} className={styles.breadcrumbLink}>\n {part}\n </Link>\n )}\n </React.Fragment>\n );\n })}\n </span>\n );\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/workspace",
3
- "version": "1.0.1080",
3
+ "version": "1.0.1081",
4
4
  "homepage": "https://bit.cloud/teambit/workspace/workspace",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.workspace",
8
8
  "name": "workspace",
9
- "version": "1.0.1080"
9
+ "version": "1.0.1081"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash": "4.17.21",
@@ -30,101 +30,93 @@
30
30
  "reset-css": "5.0.1",
31
31
  "@teambit/component-id": "1.2.4",
32
32
  "@teambit/harmony": "0.4.12",
33
- "@teambit/legacy.extension-data": "0.0.142",
34
- "@teambit/legacy.scope": "0.0.140",
35
33
  "@teambit/component-version": "1.0.4",
36
- "@teambit/legacy.consumer-component": "0.0.141",
37
- "@teambit/legacy.consumer": "0.0.140",
38
34
  "@teambit/bit-error": "0.0.404",
39
35
  "@teambit/lane-id": "0.0.312",
40
- "@teambit/legacy.bit-map": "0.0.197",
41
36
  "@teambit/toolbox.fs.last-modified": "0.0.19",
42
37
  "@teambit/toolbox.path.path": "0.0.21",
43
38
  "@teambit/graph.cleargraph": "0.0.11",
44
- "@teambit/logger": "0.0.1450",
45
- "@teambit/cli": "0.0.1357",
46
- "@teambit/config-store": "0.0.238",
47
- "@teambit/legacy.constants": "0.0.37",
48
39
  "@teambit/component.ui.component-status-resolver": "0.0.510",
49
- "@teambit/harmony.modules.load-trace": "0.0.9",
50
- "@teambit/harmony.modules.resolved-component": "0.0.521",
51
- "@teambit/legacy.utils": "0.0.45",
52
- "@teambit/scope.remotes": "0.0.140",
53
- "@teambit/config": "0.0.1532",
54
- "@teambit/harmony.modules.requireable-component": "0.0.521",
55
40
  "@teambit/toolbox.modules.module-resolver": "0.0.24",
56
- "@teambit/workspace.modules.node-modules-linker": "0.0.371",
57
- "@teambit/global-config": "0.0.1361",
58
- "@teambit/legacy.consumer-config": "0.0.140",
59
- "@teambit/variants": "0.0.1625",
60
- "@teambit/component-issues": "0.0.180",
61
- "@teambit/component.sources": "0.0.192",
62
41
  "@teambit/dependencies.modules.packages-excluder": "1.0.8",
63
- "@teambit/git.modules.git-executable": "0.0.38",
64
- "@teambit/harmony.modules.in-memory-cache": "0.0.41",
65
42
  "@teambit/legacy-bit-id": "1.1.3",
66
- "@teambit/legacy.component-list": "0.0.194",
67
- "@teambit/legacy.scope-api": "0.0.195",
68
43
  "@teambit/toolbox.path.is-path-inside": "0.0.513",
69
- "@teambit/workspace.modules.match-pattern": "0.0.529",
70
- "@teambit/component.ui.component-drawer": "0.0.497",
71
- "@teambit/lanes.hooks.use-lane-components": "0.0.309",
72
- "@teambit/lanes.hooks.use-lanes": "0.0.293",
73
- "@teambit/lanes.ui.models.lanes-model": "0.0.233",
74
- "@teambit/ui-foundation.ui.side-bar": "0.0.946",
75
44
  "@teambit/design.ui.tree": "0.0.16",
45
+ "@teambit/lanes.ui.models.lanes-model": "0.0.233",
76
46
  "@teambit/component.ui.component-filters.component-filter-context": "0.0.242",
77
47
  "@teambit/component.ui.component-filters.deprecate-filter": "0.0.244",
78
- "@teambit/component.ui.component-filters.env-filter": "0.0.283",
79
48
  "@teambit/component.ui.component-filters.show-main-filter": "0.0.237",
49
+ "@teambit/design.ui.surfaces.menu.link-item": "1.0.13",
80
50
  "@teambit/ui-foundation.ui.main-dropdown": "0.0.505",
81
51
  "@teambit/ui-foundation.ui.menu": "0.0.503",
82
52
  "@teambit/ui-foundation.ui.react-router.slot-router": "0.0.527",
83
53
  "@teambit/ui-foundation.ui.tree.drawer": "1.0.0",
84
- "@teambit/design.ui.surfaces.menu.link-item": "1.0.13",
85
- "@teambit/harmony.modules.concurrency": "0.0.38",
86
54
  "@teambit/toolbox.promise.map-pool": "0.0.19",
87
55
  "@teambit/base-react.themes.theme-switcher": "1.1.2",
88
- "@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.506",
89
56
  "@teambit/workspace.ui.use-workspace-mode": "0.0.3",
90
- "@teambit/component-descriptor": "0.0.458",
91
57
  "@teambit/ui-foundation.ui.constants.z-indexes": "0.0.504",
92
58
  "@teambit/base-ui.surfaces.split-pane.hover-splitter": "1.0.1",
93
59
  "@teambit/base-ui.surfaces.split-pane.split-pane": "1.0.0",
94
- "@teambit/ui-foundation.ui.buttons.collapser": "0.0.234",
95
60
  "@teambit/ui-foundation.ui.corner": "0.0.520",
96
61
  "@teambit/ui-foundation.ui.notifications.notification-context": "0.0.501",
62
+ "@teambit/ui-foundation.ui.top-bar": "0.0.515",
97
63
  "@teambit/workspace.hooks.use-navigation-message-listener": "0.0.2",
98
64
  "@teambit/workspace.hooks.use-url-change-broadcaster": "0.0.2",
99
65
  "@teambit/workspace.ui.preserve-workspace-mode": "0.0.3",
100
- "@teambit/ui-foundation.ui.top-bar": "0.0.515",
101
- "@teambit/design.ui.tooltip": "0.0.383",
102
- "@teambit/preview.ui.preview-placeholder": "0.0.575",
103
- "@teambit/scopes.scope-id": "0.0.9",
104
- "@teambit/workspace.ui.load-preview": "0.0.504",
105
66
  "@teambit/evangelist.elements.icon": "1.0.5",
106
- "@teambit/component.filters.base-filter": "0.0.6",
107
- "@teambit/design.inputs.toggle-button": "0.0.16",
108
- "@teambit/cloud.hooks.use-cloud-scopes": "0.0.28",
109
- "@teambit/explorer.ui.gallery.component-grid": "0.0.496",
110
- "@teambit/workspace.ui.empty-workspace": "0.0.509",
111
- "@teambit/component": "1.0.1080",
112
- "@teambit/dependency-resolver": "1.0.1080",
113
- "@teambit/envs": "1.0.1080",
114
- "@teambit/objects": "0.0.587",
115
- "@teambit/scope": "1.0.1080",
116
- "@teambit/graph": "1.0.1080",
117
- "@teambit/isolator": "1.0.1080",
118
- "@teambit/component-tree": "1.0.1080",
119
- "@teambit/watcher": "1.0.1080",
120
- "@teambit/aspect-loader": "1.0.1080",
121
- "@teambit/graphql": "1.0.1080",
122
- "@teambit/bundler": "1.0.1080",
123
- "@teambit/ui": "1.0.1080",
124
- "@teambit/command-bar": "1.0.1080",
125
- "@teambit/sidebar": "1.0.1080",
126
- "@teambit/pubsub": "1.0.1080",
127
- "@teambit/deprecation": "1.0.1080"
67
+ "@teambit/component": "1.0.1081",
68
+ "@teambit/dependency-resolver": "1.0.1081",
69
+ "@teambit/envs": "1.0.1081",
70
+ "@teambit/legacy.extension-data": "0.0.143",
71
+ "@teambit/legacy.scope": "0.0.141",
72
+ "@teambit/legacy.consumer-component": "0.0.142",
73
+ "@teambit/legacy.consumer": "0.0.141",
74
+ "@teambit/legacy.bit-map": "0.0.198",
75
+ "@teambit/logger": "0.0.1451",
76
+ "@teambit/objects": "0.0.588",
77
+ "@teambit/scope": "1.0.1081",
78
+ "@teambit/graph": "1.0.1081",
79
+ "@teambit/cli": "0.0.1358",
80
+ "@teambit/config-store": "0.0.239",
81
+ "@teambit/isolator": "1.0.1081",
82
+ "@teambit/legacy.constants": "0.0.38",
83
+ "@teambit/component-tree": "1.0.1081",
84
+ "@teambit/harmony.modules.load-trace": "0.0.10",
85
+ "@teambit/harmony.modules.resolved-component": "0.0.522",
86
+ "@teambit/legacy.utils": "0.0.46",
87
+ "@teambit/watcher": "1.0.1081",
88
+ "@teambit/scope.remotes": "0.0.141",
89
+ "@teambit/aspect-loader": "1.0.1081",
90
+ "@teambit/config": "0.0.1533",
91
+ "@teambit/harmony.modules.requireable-component": "0.0.522",
92
+ "@teambit/workspace.modules.node-modules-linker": "0.0.372",
93
+ "@teambit/graphql": "1.0.1081",
94
+ "@teambit/bundler": "1.0.1081",
95
+ "@teambit/global-config": "0.0.1362",
96
+ "@teambit/legacy.consumer-config": "0.0.141",
97
+ "@teambit/ui": "1.0.1081",
98
+ "@teambit/variants": "0.0.1626",
99
+ "@teambit/component-issues": "0.0.181",
100
+ "@teambit/component.sources": "0.0.193",
101
+ "@teambit/git.modules.git-executable": "0.0.39",
102
+ "@teambit/harmony.modules.in-memory-cache": "0.0.42",
103
+ "@teambit/legacy.component-list": "0.0.195",
104
+ "@teambit/legacy.scope-api": "0.0.196",
105
+ "@teambit/workspace.modules.match-pattern": "0.0.530",
106
+ "@teambit/component.ui.component-drawer": "0.0.498",
107
+ "@teambit/lanes.hooks.use-lane-components": "0.0.310",
108
+ "@teambit/lanes.hooks.use-lanes": "0.0.294",
109
+ "@teambit/ui-foundation.ui.side-bar": "0.0.947",
110
+ "@teambit/command-bar": "1.0.1081",
111
+ "@teambit/component.ui.component-filters.env-filter": "0.0.284",
112
+ "@teambit/sidebar": "1.0.1081",
113
+ "@teambit/pubsub": "1.0.1081",
114
+ "@teambit/harmony.modules.concurrency": "0.0.39",
115
+ "@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.507",
116
+ "@teambit/component-descriptor": "0.0.459",
117
+ "@teambit/deprecation": "1.0.1081",
118
+ "@teambit/explorer.ui.components-overview": "0.0.1",
119
+ "@teambit/ui-foundation.ui.buttons.collapser": "0.0.235"
128
120
  },
129
121
  "devDependencies": {
130
122
  "@types/lodash": "4.14.165",
@@ -137,13 +129,12 @@
137
129
  "@types/pluralize": "0.0.29",
138
130
  "@types/mocha": "9.1.0",
139
131
  "@teambit/workspace.content.workspace-overview": "1.96.7",
140
- "@teambit/harmony.envs.core-aspect-env": "2.0.4"
132
+ "@teambit/harmony.envs.core-aspect-env": "2.0.3"
141
133
  },
142
134
  "peerDependencies": {
143
135
  "@apollo/client": "^3.12.0",
144
136
  "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
145
- "react-router-dom": "^6.16.0",
146
- "@teambit/base-react.navigation.link": "2.0.33"
137
+ "react-router-dom": "^6.16.0"
147
138
  },
148
139
  "license": "Apache-2.0",
149
140
  "optionalDependencies": {},