@teambit/scope 0.0.685 → 0.0.686
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/scope.ui.drawer.d.ts +8 -0
- package/dist/scope.ui.drawer.js +111 -0
- package/dist/scope.ui.drawer.js.map +1 -0
- package/dist/scope.ui.runtime.d.ts +15 -4
- package/dist/scope.ui.runtime.js +46 -8
- package/dist/scope.ui.runtime.js.map +1 -1
- package/package-tar/teambit-scope-0.0.686.tgz +0 -0
- package/package.json +28 -29
- package/{preview-1648006106088.js → preview-1648092203429.js} +2 -2
- package/scope.ui.drawer.tsx +56 -0
- package/scope.ui.runtime.tsx +45 -5
- package/dist/ui/components-drawer/components-drawer.module.scss +0 -51
- package/dist/ui/components-drawer/components.drawer.d.ts +0 -15
- package/dist/ui/components-drawer/components.drawer.js +0 -275
- package/dist/ui/components-drawer/components.drawer.js.map +0 -1
- package/dist/ui/components-drawer/index.d.ts +0 -1
- package/dist/ui/components-drawer/index.js +0 -23
- package/dist/ui/components-drawer/index.js.map +0 -1
- package/package-tar/teambit-scope-0.0.685.tgz +0 -0
- package/ui/components-drawer/components-drawer.module.scss +0 -51
- package/ui/components-drawer/components.drawer.tsx +0 -156
- package/ui/components-drawer/index.ts +0 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ComponentsDrawer, ComponentFiltersSlot, DrawerWidgetSlot } from '@teambit/component.ui.component-drawer';
|
|
2
|
+
import { SidebarSlot } from './scope.ui.runtime';
|
|
3
|
+
export declare type ScopeDrawerProps = {
|
|
4
|
+
treeWidgets: SidebarSlot;
|
|
5
|
+
filtersSlot: ComponentFiltersSlot;
|
|
6
|
+
drawerWidgetSlot: DrawerWidgetSlot;
|
|
7
|
+
};
|
|
8
|
+
export declare const scopeDrawer: ({ treeWidgets, filtersSlot, drawerWidgetSlot }: ScopeDrawerProps) => ComponentsDrawer;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.scopeDrawer = void 0;
|
|
9
|
+
|
|
10
|
+
function _extends2() {
|
|
11
|
+
const data = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
12
|
+
|
|
13
|
+
_extends2 = function () {
|
|
14
|
+
return data;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
return data;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function _react() {
|
|
21
|
+
const data = _interopRequireWildcard(require("react"));
|
|
22
|
+
|
|
23
|
+
_react = function () {
|
|
24
|
+
return data;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
return data;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function _componentUi() {
|
|
31
|
+
const data = require("@teambit/component.ui.component-drawer");
|
|
32
|
+
|
|
33
|
+
_componentUi = function () {
|
|
34
|
+
return data;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
return data;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function _scopeUiHooks() {
|
|
41
|
+
const data = require("@teambit/scope.ui.hooks.scope-context");
|
|
42
|
+
|
|
43
|
+
_scopeUiHooks = function () {
|
|
44
|
+
return data;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
return data;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function _uiFoundationUi() {
|
|
51
|
+
const data = require("@teambit/ui-foundation.ui.side-bar");
|
|
52
|
+
|
|
53
|
+
_uiFoundationUi = function () {
|
|
54
|
+
return data;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
return data;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
61
|
+
|
|
62
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
63
|
+
|
|
64
|
+
const scopeDrawer = ({
|
|
65
|
+
treeWidgets,
|
|
66
|
+
filtersSlot,
|
|
67
|
+
drawerWidgetSlot
|
|
68
|
+
}) => {
|
|
69
|
+
const customScopeTreeNodeRenderer = treeNodeSlot => function TreeNode(props) {
|
|
70
|
+
const children = props.node.children;
|
|
71
|
+
if (!children) return /*#__PURE__*/_react().default.createElement(_uiFoundationUi().ComponentView, (0, _extends2().default)({}, props, {
|
|
72
|
+
treeNodeSlot: treeNodeSlot
|
|
73
|
+
})); // skip over scope node and render only children
|
|
74
|
+
|
|
75
|
+
if (props.node.payload instanceof _uiFoundationUi().ScopePayload) {
|
|
76
|
+
return /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, children.map(childNode => /*#__PURE__*/_react().default.createElement(TreeNode, (0, _extends2().default)({
|
|
77
|
+
key: childNode.id
|
|
78
|
+
}, props, {
|
|
79
|
+
node: childNode
|
|
80
|
+
}))));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return /*#__PURE__*/_react().default.createElement(_uiFoundationUi().NamespaceTreeNode, props);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
return new (_componentUi().ComponentsDrawer)({
|
|
87
|
+
order: 0,
|
|
88
|
+
id: 'scope-components-drawer',
|
|
89
|
+
name: 'COMPONENTS',
|
|
90
|
+
plugins: {
|
|
91
|
+
tree: {
|
|
92
|
+
widgets: treeWidgets,
|
|
93
|
+
customRenderer: customScopeTreeNodeRenderer
|
|
94
|
+
},
|
|
95
|
+
filters: filtersSlot,
|
|
96
|
+
drawerWidgets: drawerWidgetSlot
|
|
97
|
+
},
|
|
98
|
+
emptyMessage: 'Scope is empty',
|
|
99
|
+
useComponents: () => {
|
|
100
|
+
const scope = (0, _react().useContext)(_scopeUiHooks().ScopeContext);
|
|
101
|
+
return {
|
|
102
|
+
loading: !scope,
|
|
103
|
+
components: scope.components || []
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
exports.scopeDrawer = scopeDrawer;
|
|
110
|
+
|
|
111
|
+
//# sourceMappingURL=scope.ui.drawer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["scope.ui.drawer.tsx"],"names":["scopeDrawer","treeWidgets","filtersSlot","drawerWidgetSlot","customScopeTreeNodeRenderer","treeNodeSlot","TreeNode","props","children","node","payload","ScopePayload","map","childNode","id","ComponentsDrawer","order","name","plugins","tree","widgets","customRenderer","filters","drawerWidgets","emptyMessage","useComponents","scope","ScopeContext","loading","components"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAUO,MAAMA,WAAW,GAAG,CAAC;AAAEC,EAAAA,WAAF;AAAeC,EAAAA,WAAf;AAA4BC,EAAAA;AAA5B,CAAD,KAAsE;AAC/F,QAAMC,2BAA2B,GAAIC,YAAD,IAClC,SAASC,QAAT,CAAkBC,KAAlB,EAAqD;AACnD,UAAMC,QAAQ,GAAGD,KAAK,CAACE,IAAN,CAAWD,QAA5B;AAEA,QAAI,CAACA,QAAL,EAAe,oBAAO,+BAAC,+BAAD,+BAAmBD,KAAnB;AAA0B,MAAA,YAAY,EAAEF;AAAxC,OAAP,CAHoC,CAKnD;;AACA,QAAIE,KAAK,CAACE,IAAN,CAAWC,OAAX,YAA8BC,8BAAlC,EAAgD;AAC9C,0BACE,gEACGH,QAAQ,CAACI,GAAT,CAAcC,SAAD,iBACZ,+BAAC,QAAD;AAAU,QAAA,GAAG,EAAEA,SAAS,CAACC;AAAzB,SAAiCP,KAAjC;AAAwC,QAAA,IAAI,EAAEM;AAA9C,SADD,CADH,CADF;AAOD;;AAED,wBAAO,+BAAC,mCAAD,EAAuBN,KAAvB,CAAP;AACD,GAlBH;;AAoBA,SAAO,KAAIQ,+BAAJ,EAAqB;AAC1BC,IAAAA,KAAK,EAAE,CADmB;AAE1BF,IAAAA,EAAE,EAAE,yBAFsB;AAG1BG,IAAAA,IAAI,EAAE,YAHoB;AAI1BC,IAAAA,OAAO,EAAE;AACPC,MAAAA,IAAI,EAAE;AACJC,QAAAA,OAAO,EAAEnB,WADL;AAEJoB,QAAAA,cAAc,EAAEjB;AAFZ,OADC;AAKPkB,MAAAA,OAAO,EAAEpB,WALF;AAMPqB,MAAAA,aAAa,EAAEpB;AANR,KAJiB;AAY1BqB,IAAAA,YAAY,EAAE,gBAZY;AAa1BC,IAAAA,aAAa,EAAE,MAAM;AACnB,YAAMC,KAAK,GAAG,yBAAWC,4BAAX,CAAd;AACA,aAAO;AACLC,QAAAA,OAAO,EAAE,CAACF,KADL;AAELG,QAAAA,UAAU,EAAEH,KAAK,CAACG,UAAN,IAAoB;AAF3B,OAAP;AAID;AAnByB,GAArB,CAAP;AAqBD,CA1CM","sourcesContent":["import React, { useContext } from 'react';\nimport { ComponentsDrawer, ComponentFiltersSlot, DrawerWidgetSlot } from '@teambit/component.ui.component-drawer';\nimport { ScopeContext } from '@teambit/scope.ui.hooks.scope-context';\nimport { ComponentView, NamespaceTreeNode, PayloadType, ScopePayload } from '@teambit/ui-foundation.ui.side-bar';\nimport { TreeNodeProps } from '@teambit/design.ui.tree';\nimport { SidebarSlot } from './scope.ui.runtime';\n\nexport type ScopeDrawerProps = {\n treeWidgets: SidebarSlot;\n filtersSlot: ComponentFiltersSlot;\n drawerWidgetSlot: DrawerWidgetSlot;\n};\n\nexport const scopeDrawer = ({ treeWidgets, filtersSlot, drawerWidgetSlot }: ScopeDrawerProps) => {\n const customScopeTreeNodeRenderer = (treeNodeSlot) =>\n function TreeNode(props: TreeNodeProps<PayloadType>) {\n const children = props.node.children;\n\n if (!children) return <ComponentView {...props} treeNodeSlot={treeNodeSlot} />;\n\n // skip over scope node and render only children\n if (props.node.payload instanceof ScopePayload) {\n return (\n <>\n {children.map((childNode) => (\n <TreeNode key={childNode.id} {...props} node={childNode}></TreeNode>\n ))}\n </>\n );\n }\n\n return <NamespaceTreeNode {...props} />;\n };\n\n return new ComponentsDrawer({\n order: 0,\n id: 'scope-components-drawer',\n name: 'COMPONENTS',\n plugins: {\n tree: {\n widgets: treeWidgets,\n customRenderer: customScopeTreeNodeRenderer,\n },\n filters: filtersSlot,\n drawerWidgets: drawerWidgetSlot,\n },\n emptyMessage: 'Scope is empty',\n useComponents: () => {\n const scope = useContext(ScopeContext);\n return {\n loading: !scope,\n components: scope.components || [],\n };\n },\n });\n};\n"]}
|
|
@@ -12,6 +12,8 @@ import { MenuWidget, MenuWidgetSlot } from '@teambit/ui-foundation.ui.menu';
|
|
|
12
12
|
import { CommandBarUI, ComponentSearcher } from '@teambit/command-bar';
|
|
13
13
|
import { ScopeModel } from '@teambit/scope.models.scope-model';
|
|
14
14
|
import { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';
|
|
15
|
+
import { DrawerWidgetSlot, ComponentFiltersSlot } from '@teambit/component.ui.component-drawer';
|
|
16
|
+
import { ComponentFilters } from '@teambit/component.ui.component-filters';
|
|
15
17
|
export declare type ScopeBadge = ComponentType;
|
|
16
18
|
export declare type ScopeBadgeSlot = SlotRegistry<ScopeBadge[]>;
|
|
17
19
|
export declare type ContextSlot = SlotRegistry<ScopeContextType[]>;
|
|
@@ -65,6 +67,8 @@ export declare class ScopeUI {
|
|
|
65
67
|
* add a new context to ui
|
|
66
68
|
*/
|
|
67
69
|
private contextSlot;
|
|
70
|
+
private drawerWidgetSlot;
|
|
71
|
+
private drawerComponentsFiltersSlot;
|
|
68
72
|
constructor(
|
|
69
73
|
/**
|
|
70
74
|
* route slot.
|
|
@@ -97,7 +101,7 @@ export declare class ScopeUI {
|
|
|
97
101
|
/**
|
|
98
102
|
* add a new context to ui
|
|
99
103
|
*/
|
|
100
|
-
contextSlot: ContextSlot);
|
|
104
|
+
contextSlot: ContextSlot, drawerWidgetSlot: DrawerWidgetSlot, drawerComponentsFiltersSlot: ComponentFiltersSlot);
|
|
101
105
|
private setSidebarToggle;
|
|
102
106
|
/**
|
|
103
107
|
* register a new badge into the scope overview.
|
|
@@ -151,6 +155,11 @@ export declare class ScopeUI {
|
|
|
151
155
|
*/
|
|
152
156
|
registerSidebarLink: (...links: SidebarItem[]) => void;
|
|
153
157
|
registerDrawers: (...drawer: DrawerType[]) => this;
|
|
158
|
+
/**
|
|
159
|
+
* register component filters
|
|
160
|
+
*/
|
|
161
|
+
registerDrawerComponentFilters: (filters: ComponentFilters) => void;
|
|
162
|
+
registerDrawerWidgets: (widgets: ReactNode[]) => void;
|
|
154
163
|
uiRoot(): UIRoot;
|
|
155
164
|
/** registers available components */
|
|
156
165
|
setComponents: (components: ComponentModel[]) => void;
|
|
@@ -159,14 +168,14 @@ export declare class ScopeUI {
|
|
|
159
168
|
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
|
160
169
|
static slots: (((registerFn: () => string) => SlotRegistry<ComponentTreeNode>) | ((registerFn: () => string) => SlotRegistry<RouteProps<string, {
|
|
161
170
|
[x: string]: string | undefined;
|
|
162
|
-
}>>) | ((registerFn: () => string) => SlotRegistry<
|
|
171
|
+
}>>) | ((registerFn: () => string) => SlotRegistry<DrawerWidgetSlot>) | ((registerFn: () => string) => SlotRegistry<ScopeBadge>) | ((registerFn: () => string) => SlotRegistry<MenuWidget[]>) | ((registerFn: () => string) => SlotRegistry<CornerSlot>))[];
|
|
163
172
|
static provider([ui, componentUi, sidebar, commandBarUI, reactRouterUI]: [
|
|
164
173
|
UiUI,
|
|
165
174
|
ComponentUI,
|
|
166
175
|
SidebarUI,
|
|
167
176
|
CommandBarUI,
|
|
168
177
|
ReactRouterUI
|
|
169
|
-
], config: any, [routeSlot, menuSlot, sidebarSlot, scopeBadgeSlot, menuWidgetSlot, menuItemSlot, sidebarItemSlot, cornerSlot, overviewSlot, contextSlot,]: [
|
|
178
|
+
], config: any, [routeSlot, menuSlot, sidebarSlot, scopeBadgeSlot, menuWidgetSlot, menuItemSlot, sidebarItemSlot, cornerSlot, overviewSlot, contextSlot, drawerWidgetSlot, componentFiltersSlot,]: [
|
|
170
179
|
RouteSlot,
|
|
171
180
|
RouteSlot,
|
|
172
181
|
SidebarSlot,
|
|
@@ -176,7 +185,9 @@ export declare class ScopeUI {
|
|
|
176
185
|
SidebarItemSlot,
|
|
177
186
|
CornerSlot,
|
|
178
187
|
OverviewLineSlot,
|
|
179
|
-
ContextSlot
|
|
188
|
+
ContextSlot,
|
|
189
|
+
DrawerWidgetSlot,
|
|
190
|
+
ComponentFiltersSlot
|
|
180
191
|
]): Promise<ScopeUI>;
|
|
181
192
|
}
|
|
182
193
|
export default ScopeUI;
|
package/dist/scope.ui.runtime.js
CHANGED
|
@@ -111,6 +111,26 @@ function _commandBar() {
|
|
|
111
111
|
return data;
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
+
function _componentUi() {
|
|
115
|
+
const data = require("@teambit/component.ui.component-drawer");
|
|
116
|
+
|
|
117
|
+
_componentUi = function () {
|
|
118
|
+
return data;
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
return data;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function _componentUi2() {
|
|
125
|
+
const data = require("@teambit/component.ui.component-filters");
|
|
126
|
+
|
|
127
|
+
_componentUi2 = function () {
|
|
128
|
+
return data;
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
return data;
|
|
132
|
+
}
|
|
133
|
+
|
|
114
134
|
function _menu() {
|
|
115
135
|
const data = require("./ui/menu");
|
|
116
136
|
|
|
@@ -141,10 +161,10 @@ function _scope2() {
|
|
|
141
161
|
return data;
|
|
142
162
|
}
|
|
143
163
|
|
|
144
|
-
function
|
|
145
|
-
const data = require("./ui
|
|
164
|
+
function _scopeUi() {
|
|
165
|
+
const data = require("./scope.ui.drawer");
|
|
146
166
|
|
|
147
|
-
|
|
167
|
+
_scopeUi = function () {
|
|
148
168
|
return data;
|
|
149
169
|
};
|
|
150
170
|
|
|
@@ -188,7 +208,7 @@ class ScopeUI {
|
|
|
188
208
|
/**
|
|
189
209
|
* add a new context to ui
|
|
190
210
|
*/
|
|
191
|
-
contextSlot) {
|
|
211
|
+
contextSlot, drawerWidgetSlot, drawerComponentsFiltersSlot) {
|
|
192
212
|
this.routeSlot = routeSlot;
|
|
193
213
|
this.componentUi = componentUi;
|
|
194
214
|
this.menuSlot = menuSlot;
|
|
@@ -203,6 +223,8 @@ class ScopeUI {
|
|
|
203
223
|
this.cornerSlot = cornerSlot;
|
|
204
224
|
this.overviewSlot = overviewSlot;
|
|
205
225
|
this.contextSlot = contextSlot;
|
|
226
|
+
this.drawerWidgetSlot = drawerWidgetSlot;
|
|
227
|
+
this.drawerComponentsFiltersSlot = drawerComponentsFiltersSlot;
|
|
206
228
|
(0, _defineProperty2().default)(this, "setSidebarToggle", () => {});
|
|
207
229
|
(0, _defineProperty2().default)(this, "registerMenuRoutes", routes => {
|
|
208
230
|
this.menuSlot.register(routes);
|
|
@@ -222,6 +244,12 @@ class ScopeUI {
|
|
|
222
244
|
this.sidebar.registerDrawer(...drawer);
|
|
223
245
|
return this;
|
|
224
246
|
});
|
|
247
|
+
(0, _defineProperty2().default)(this, "registerDrawerComponentFilters", filters => {
|
|
248
|
+
this.drawerComponentsFiltersSlot.register(filters);
|
|
249
|
+
});
|
|
250
|
+
(0, _defineProperty2().default)(this, "registerDrawerWidgets", widgets => {
|
|
251
|
+
this.drawerWidgetSlot.register(widgets);
|
|
252
|
+
});
|
|
225
253
|
(0, _defineProperty2().default)(this, "setComponents", components => {
|
|
226
254
|
this.componentSearcher.update(components);
|
|
227
255
|
});
|
|
@@ -346,7 +374,11 @@ class ScopeUI {
|
|
|
346
374
|
|
|
347
375
|
uiRoot() {
|
|
348
376
|
this.commandBarUI.addSearcher(this.componentSearcher);
|
|
349
|
-
this.sidebar.registerDrawer(
|
|
377
|
+
this.sidebar.registerDrawer((0, _scopeUi().scopeDrawer)({
|
|
378
|
+
treeWidgets: this.sidebarSlot,
|
|
379
|
+
filtersSlot: this.drawerComponentsFiltersSlot,
|
|
380
|
+
drawerWidgetSlot: this.drawerWidgetSlot
|
|
381
|
+
}));
|
|
350
382
|
const [setKeyBindHandler] = this.commandBarUI.addCommand({
|
|
351
383
|
id: 'sidebar.toggle',
|
|
352
384
|
// TODO - extract to a component!
|
|
@@ -377,9 +409,15 @@ class ScopeUI {
|
|
|
377
409
|
/** registers available components */
|
|
378
410
|
|
|
379
411
|
|
|
380
|
-
static async provider([ui, componentUi, sidebar, commandBarUI, reactRouterUI], config, [routeSlot, menuSlot, sidebarSlot, scopeBadgeSlot, menuWidgetSlot, menuItemSlot, sidebarItemSlot, cornerSlot, overviewSlot, contextSlot]) {
|
|
412
|
+
static async provider([ui, componentUi, sidebar, commandBarUI, reactRouterUI], config, [routeSlot, menuSlot, sidebarSlot, scopeBadgeSlot, menuWidgetSlot, menuItemSlot, sidebarItemSlot, cornerSlot, overviewSlot, contextSlot, drawerWidgetSlot, componentFiltersSlot]) {
|
|
381
413
|
const componentSearcher = new (_commandBar().ComponentSearcher)(reactRouterUI.navigateTo);
|
|
382
|
-
const scopeUi = new ScopeUI(routeSlot, componentUi, menuSlot, sidebar, sidebarSlot, commandBarUI, componentSearcher, scopeBadgeSlot, menuWidgetSlot, sidebarItemSlot, menuItemSlot, cornerSlot, overviewSlot, contextSlot);
|
|
414
|
+
const scopeUi = new ScopeUI(routeSlot, componentUi, menuSlot, sidebar, sidebarSlot, commandBarUI, componentSearcher, scopeBadgeSlot, menuWidgetSlot, sidebarItemSlot, menuItemSlot, cornerSlot, overviewSlot, contextSlot, drawerWidgetSlot, componentFiltersSlot);
|
|
415
|
+
scopeUi.registerDrawerComponentFilters([_componentUi2().DeprecateFilter, _componentUi2().EnvsFilter]);
|
|
416
|
+
scopeUi.registerDrawerWidgets([/*#__PURE__*/_react().default.createElement(_componentUi().FilterWidget, {
|
|
417
|
+
key: 'workspace-filter-widget'
|
|
418
|
+
}), /*#__PURE__*/_react().default.createElement(_componentUi().TreeToggleWidget, {
|
|
419
|
+
key: 'workspace-tree-toggle-widget'
|
|
420
|
+
})]);
|
|
383
421
|
ui.registerRoot(scopeUi.uiRoot.bind(scopeUi));
|
|
384
422
|
scopeUi.registerMenuItem(scopeUi.menuItems);
|
|
385
423
|
scopeUi.registerMenuWidget(() => /*#__PURE__*/_react().default.createElement(_menu().ScopeUseBox, null));
|
|
@@ -397,7 +435,7 @@ class ScopeUI {
|
|
|
397
435
|
exports.ScopeUI = ScopeUI;
|
|
398
436
|
(0, _defineProperty2().default)(ScopeUI, "dependencies", [_ui().UIAspect, _component().ComponentAspect, _sidebar().SidebarAspect, _commandBar().default, _reactRouter().default]);
|
|
399
437
|
(0, _defineProperty2().default)(ScopeUI, "runtime", _ui().UIRuntime);
|
|
400
|
-
(0, _defineProperty2().default)(ScopeUI, "slots", [_harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType()]);
|
|
438
|
+
(0, _defineProperty2().default)(ScopeUI, "slots", [_harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType()]);
|
|
401
439
|
var _default = ScopeUI;
|
|
402
440
|
exports.default = _default;
|
|
403
441
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["scope.ui.runtime.tsx"],"names":["ScopeUI","constructor","routeSlot","componentUi","menuSlot","sidebar","sidebarSlot","commandBarUI","componentSearcher","scopeBadgeSlot","menuWidgetSlot","sidebarItemSlot","menuItemSlot","cornerSlot","overviewSlot","contextSlot","routes","register","menuItems","componentTreeNodes","map","componentTreeNode","links","drawer","registerDrawer","components","update","category","title","keyChar","handler","run","registerBadge","badges","registerOverviewLine","lines","registerRoutes","registerExplicitRoutes","registerMenuRoutes","path","routePath","children","getMenu","ScopeAspect","id","exact","getComponentUI","registerMenuWidget","registerCorner","corner","replaceOverview","replaceDescription","replaceMetadataSection","registerMetadataItem","replaceComponentGrid","registerMetadata","addContext","context","getContext","contexts","values","uiRoot","addSearcher","ComponentsDrawer","setKeyBindHandler","addCommand","displayName","keybinding","setSidebarToggle","provider","ui","reactRouterUI","config","ComponentSearcher","navigateTo","scopeUi","registerRoot","bind","registerMenuItem","registerSidebarLink","UIAspect","ComponentAspect","SidebarAspect","CommandBarAspect","ReactRouterAspect","UIRuntime","Slot","withType","addRuntime"],"mappings":"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","sourcesContent":["import flatten from 'lodash.flatten';\nimport type { ComponentUI, ComponentModel } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport ReactRouterAspect, { ReactRouterUI } from '@teambit/react-router';\nimport { RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { SidebarAspect, SidebarUI, SidebarItem, SidebarItemSlot } from '@teambit/sidebar';\nimport { ComponentTreeNode } from '@teambit/component-tree';\nimport { UIAspect, UIRootUI as UIRoot, UIRuntime, UiUI } from '@teambit/ui';\nimport React, { ComponentType, ReactNode } from 'react';\nimport { MenuItemSlot, MenuItem } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { RouteProps } from 'react-router-dom';\nimport { MenuWidget, MenuWidgetSlot } from '@teambit/ui-foundation.ui.menu';\nimport { MenuLinkItem } from '@teambit/design.ui.surfaces.menu.link-item';\nimport CommandBarAspect, { CommandBarUI, ComponentSearcher, CommandHandler } from '@teambit/command-bar';\nimport { ScopeModel } from '@teambit/scope.models.scope-model';\nimport { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';\nimport { ScopeMenu, ScopeUseBox } from './ui/menu';\nimport { ScopeAspect } from './scope.aspect';\nimport { Scope } from './ui/scope';\nimport { ComponentsDrawer } from './ui/components-drawer';\n\nexport type ScopeBadge = ComponentType;\n\nexport type ScopeBadgeSlot = SlotRegistry<ScopeBadge[]>;\n\nexport type ContextSlot = SlotRegistry<ScopeContextType[]>;\n\nexport type ScopeContextType = ComponentType<{ scope: ScopeModel; children: ReactNode }>;\n\nexport type SidebarSlot = SlotRegistry<ComponentTreeNode>;\n\nexport type ScopeOverview = ComponentType;\n\nexport type ScopeOverviewSlot = SlotRegistry<ScopeOverview>;\n\nexport type Corner = ComponentType;\n\nexport type CornerSlot = SlotRegistry<Corner>;\n\nexport type OverviewLine = ComponentType;\n\nexport type OverviewLineSlot = SlotRegistry<OverviewLine[]>;\n\nexport class ScopeUI {\n constructor(\n /**\n * route slot.\n */\n private routeSlot: RouteSlot,\n\n /**\n * component ui extension.\n */\n private componentUi: ComponentUI,\n /**\n * menu slot\n */\n private menuSlot: RouteSlot,\n\n private sidebar: SidebarUI,\n\n private sidebarSlot: SidebarSlot,\n\n private commandBarUI: CommandBarUI,\n\n private componentSearcher: ComponentSearcher,\n\n private scopeBadgeSlot: ScopeBadgeSlot,\n\n private menuWidgetSlot: MenuWidgetSlot,\n\n /**\n * sidebar link slot\n */\n private sidebarItemSlot: SidebarItemSlot,\n\n /**\n * main dropdown item slot\n */\n private menuItemSlot: MenuItemSlot,\n\n /**\n * corner slot\n */\n private cornerSlot: CornerSlot,\n\n /**\n * overview line slot to add new lines beneath the overview section\n */\n private overviewSlot: OverviewLineSlot,\n\n /**\n * add a new context to ui\n */\n private contextSlot: ContextSlot\n ) {}\n\n private setSidebarToggle: (updated: CommandHandler) => void = () => {};\n\n /**\n * register a new badge into the scope overview.\n */\n registerBadge(...badges: ScopeBadge[]) {\n this.scopeBadgeSlot.register(badges);\n return this;\n }\n\n /**\n * register a new line beneath the scope overview section.\n */\n registerOverviewLine(...lines: OverviewLine[]) {\n this.overviewSlot.register(lines);\n return this;\n }\n\n /**\n * register a route to the scope.\n */\n registerRoutes(routes: RouteProps[]) {\n this.routeSlot.register(routes);\n return this;\n }\n\n registerMenuRoutes = (routes: RouteProps[]) => {\n this.menuSlot.register(routes);\n return this;\n };\n\n private registerExplicitRoutes() {\n this.registerMenuRoutes([\n {\n path: this.componentUi.routePath,\n children: this.componentUi.getMenu(ScopeAspect.id),\n },\n {\n exact: true,\n path: '/',\n children: <ScopeMenu widgetSlot={this.menuWidgetSlot} menuItemSlot={this.menuItemSlot} />,\n },\n ]);\n this.registerRoutes([\n {\n path: this.componentUi.routePath,\n children: this.componentUi.getComponentUI(ScopeAspect.id),\n },\n ]);\n }\n\n registerMenuWidget(...menuItems: MenuWidget[]) {\n this.menuWidgetSlot.register(menuItems);\n }\n\n registerCorner(corner: Corner) {\n this.cornerSlot.register(corner);\n }\n\n /**\n * register a scope overview.\n */\n replaceOverview() {}\n\n /**\n * register description.\n */\n replaceDescription() {}\n\n /**\n * register metadata section.\n */\n replaceMetadataSection() {}\n\n /**\n * register a metadata item.\n */\n registerMetadataItem() {}\n\n replaceComponentGrid() {}\n\n /**\n * register metadata.\n */\n registerMetadata() {}\n\n /**\n * add a new context to the scope.\n */\n addContext(...context: ScopeContextType[]) {\n this.contextSlot.register(context);\n return this;\n }\n\n private getContext() {\n const contexts = this.contextSlot.values();\n return flatten(contexts);\n }\n\n registerMenuItem = (menuItems: MenuItem[]) => {\n this.menuItemSlot.register(menuItems);\n };\n\n /**\n * register a sidebar Widget for the scope\n */\n registerSidebarWidget = (componentTreeNodes: ComponentTreeNode[]) => {\n componentTreeNodes.map((componentTreeNode) => this.sidebarSlot.register(componentTreeNode));\n return this;\n };\n\n /**\n * register a sidebar link to the section above the drawers\n */\n registerSidebarLink = (...links: SidebarItem[]) => {\n this.sidebarItemSlot.register(links);\n };\n\n registerDrawers = (...drawer: DrawerType[]) => {\n this.sidebar.registerDrawer(...drawer);\n return this;\n };\n\n uiRoot(): UIRoot {\n this.commandBarUI.addSearcher(this.componentSearcher);\n this.sidebar.registerDrawer(new ComponentsDrawer(this.sidebarSlot));\n const [setKeyBindHandler] = this.commandBarUI.addCommand({\n id: 'sidebar.toggle', // TODO - extract to a component!\n handler: () => {},\n displayName: 'Toggle component list',\n keybinding: 'alt+s',\n });\n this.setSidebarToggle = setKeyBindHandler;\n\n return {\n routes: [\n {\n path: '/',\n children: (\n <Scope\n routeSlot={this.routeSlot}\n menuSlot={this.menuSlot}\n sidebar={<this.sidebar.render itemSlot={this.sidebarItemSlot} />}\n scopeUi={this}\n badgeSlot={this.scopeBadgeSlot}\n overviewLineSlot={this.overviewSlot}\n context={this.getContext()}\n onSidebarTogglerChange={this.setSidebarToggle}\n cornerSlot={this.cornerSlot}\n />\n ),\n },\n ],\n };\n }\n\n /** registers available components */\n setComponents = (components: ComponentModel[]) => {\n this.componentSearcher.update(components);\n };\n\n private menuItems: MenuItem[] = [\n {\n category: 'general',\n title: 'Open command bar',\n keyChar: 'mod+k',\n handler: () => this.commandBarUI?.run('command-bar.open'),\n },\n {\n category: 'general',\n title: 'Toggle component list',\n keyChar: 'alt+s',\n handler: () => this.commandBarUI?.run('sidebar.toggle'),\n },\n ];\n\n static dependencies = [UIAspect, ComponentAspect, SidebarAspect, CommandBarAspect, ReactRouterAspect];\n static runtime = UIRuntime;\n static slots = [\n Slot.withType<RouteProps>(),\n Slot.withType<RouteProps>(),\n Slot.withType<ComponentTreeNode>(),\n Slot.withType<ScopeBadge>(),\n Slot.withType<ScopeOverview>(),\n Slot.withType<MenuWidget[]>(),\n Slot.withType<MenuItemSlot>(),\n Slot.withType<CornerSlot>(),\n Slot.withType<OverviewLineSlot>(),\n Slot.withType<SidebarItemSlot>(),\n Slot.withType<ContextSlot>(),\n ];\n\n static async provider(\n [ui, componentUi, sidebar, commandBarUI, reactRouterUI]: [\n UiUI,\n ComponentUI,\n SidebarUI,\n CommandBarUI,\n ReactRouterUI\n ],\n config,\n [\n routeSlot,\n menuSlot,\n sidebarSlot,\n scopeBadgeSlot,\n menuWidgetSlot,\n menuItemSlot,\n sidebarItemSlot,\n cornerSlot,\n overviewSlot,\n contextSlot,\n ]: [\n RouteSlot,\n RouteSlot,\n SidebarSlot,\n ScopeBadgeSlot,\n MenuWidgetSlot,\n MenuItemSlot,\n SidebarItemSlot,\n CornerSlot,\n OverviewLineSlot,\n ContextSlot\n ]\n ) {\n const componentSearcher = new ComponentSearcher(reactRouterUI.navigateTo);\n const scopeUi = new ScopeUI(\n routeSlot,\n componentUi,\n menuSlot,\n sidebar,\n sidebarSlot,\n commandBarUI,\n componentSearcher,\n scopeBadgeSlot,\n menuWidgetSlot,\n sidebarItemSlot,\n menuItemSlot,\n cornerSlot,\n overviewSlot,\n contextSlot\n );\n ui.registerRoot(scopeUi.uiRoot.bind(scopeUi));\n scopeUi.registerMenuItem(scopeUi.menuItems);\n scopeUi.registerMenuWidget(() => <ScopeUseBox />);\n scopeUi.registerSidebarLink(() => (\n <MenuLinkItem exact href=\"/\" icon=\"comps\">\n Gallery\n </MenuLinkItem>\n ));\n scopeUi.registerExplicitRoutes();\n\n return scopeUi;\n }\n}\n\nexport default ScopeUI;\n\nScopeAspect.addRuntime(ScopeUI);\n"]}
|
|
1
|
+
{"version":3,"sources":["scope.ui.runtime.tsx"],"names":["ScopeUI","constructor","routeSlot","componentUi","menuSlot","sidebar","sidebarSlot","commandBarUI","componentSearcher","scopeBadgeSlot","menuWidgetSlot","sidebarItemSlot","menuItemSlot","cornerSlot","overviewSlot","contextSlot","drawerWidgetSlot","drawerComponentsFiltersSlot","routes","register","menuItems","componentTreeNodes","map","componentTreeNode","links","drawer","registerDrawer","filters","widgets","components","update","category","title","keyChar","handler","run","registerBadge","badges","registerOverviewLine","lines","registerRoutes","registerExplicitRoutes","registerMenuRoutes","path","routePath","children","getMenu","ScopeAspect","id","exact","getComponentUI","registerMenuWidget","registerCorner","corner","replaceOverview","replaceDescription","replaceMetadataSection","registerMetadataItem","replaceComponentGrid","registerMetadata","addContext","context","getContext","contexts","values","uiRoot","addSearcher","treeWidgets","filtersSlot","setKeyBindHandler","addCommand","displayName","keybinding","setSidebarToggle","provider","ui","reactRouterUI","config","componentFiltersSlot","ComponentSearcher","navigateTo","scopeUi","registerDrawerComponentFilters","DeprecateFilter","EnvsFilter","registerDrawerWidgets","registerRoot","bind","registerMenuItem","registerSidebarLink","UIAspect","ComponentAspect","SidebarAspect","CommandBarAspect","ReactRouterAspect","UIRuntime","Slot","withType","addRuntime"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAMA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAwBO,MAAMA,OAAN,CAAc;AACnBC,EAAAA,WAAW;AACT;AACJ;AACA;AACYC,EAAAA,SAJC;AAMT;AACJ;AACA;AACYC,EAAAA,WATC;AAUT;AACJ;AACA;AACYC,EAAAA,QAbC,EAeDC,OAfC,EAiBDC,WAjBC,EAmBDC,YAnBC,EAqBDC,iBArBC,EAuBDC,cAvBC,EAyBDC,cAzBC;AA2BT;AACJ;AACA;AACYC,EAAAA,eA9BC;AAgCT;AACJ;AACA;AACYC,EAAAA,YAnCC;AAqCT;AACJ;AACA;AACYC,EAAAA,UAxCC;AA0CT;AACJ;AACA;AACYC,EAAAA,YA7CC;AA+CT;AACJ;AACA;AACYC,EAAAA,WAlDC,EAmDDC,gBAnDC,EAoDDC,2BApDC,EAqDT;AAAA,SAjDQf,SAiDR,GAjDQA,SAiDR;AAAA,SA5CQC,WA4CR,GA5CQA,WA4CR;AAAA,SAxCQC,QAwCR,GAxCQA,QAwCR;AAAA,SAtCQC,OAsCR,GAtCQA,OAsCR;AAAA,SApCQC,WAoCR,GApCQA,WAoCR;AAAA,SAlCQC,YAkCR,GAlCQA,YAkCR;AAAA,SAhCQC,iBAgCR,GAhCQA,iBAgCR;AAAA,SA9BQC,cA8BR,GA9BQA,cA8BR;AAAA,SA5BQC,cA4BR,GA5BQA,cA4BR;AAAA,SAvBQC,eAuBR,GAvBQA,eAuBR;AAAA,SAlBQC,YAkBR,GAlBQA,YAkBR;AAAA,SAbQC,UAaR,GAbQA,UAaR;AAAA,SARQC,YAQR,GARQA,YAQR;AAAA,SAHQC,WAGR,GAHQA,WAGR;AAAA,SAFQC,gBAER,GAFQA,gBAER;AAAA,SADQC,2BACR,GADQA,2BACR;AAAA,8DAE4D,MAAM,CAAE,CAFpE;AAAA,gEA4BoBC,MAAD,IAA0B;AAC7C,WAAKd,QAAL,CAAce,QAAd,CAAuBD,MAAvB;AACA,aAAO,IAAP;AACD,KA/BC;AAAA,8DAqGkBE,SAAD,IAA2B;AAC5C,WAAKR,YAAL,CAAkBO,QAAlB,CAA2BC,SAA3B;AACD,KAvGC;AAAA,mEA4GuBC,kBAAD,IAA6C;AACnEA,MAAAA,kBAAkB,CAACC,GAAnB,CAAwBC,iBAAD,IAAuB,KAAKjB,WAAL,CAAiBa,QAAjB,CAA0BI,iBAA1B,CAA9C;AACA,aAAO,IAAP;AACD,KA/GC;AAAA,iEAoHoB,CAAC,GAAGC,KAAJ,KAA6B;AACjD,WAAKb,eAAL,CAAqBQ,QAArB,CAA8BK,KAA9B;AACD,KAtHC;AAAA,6DAwHgB,CAAC,GAAGC,MAAJ,KAA6B;AAC7C,WAAKpB,OAAL,CAAaqB,cAAb,CAA4B,GAAGD,MAA/B;AACA,aAAO,IAAP;AACD,KA3HC;AAAA,4EAgIgCE,OAAD,IAA+B;AAC9D,WAAKV,2BAAL,CAAiCE,QAAjC,CAA0CQ,OAA1C;AACD,KAlIC;AAAA,mEAoIuBC,OAAD,IAA0B;AAChD,WAAKZ,gBAAL,CAAsBG,QAAtB,CAA+BS,OAA/B;AACD,KAtIC;AAAA,2DAgLeC,UAAD,IAAkC;AAChD,WAAKrB,iBAAL,CAAuBsB,MAAvB,CAA8BD,UAA9B;AACD,KAlLC;AAAA,uDAoL8B,CAC9B;AACEE,MAAAA,QAAQ,EAAE,SADZ;AAEEC,MAAAA,KAAK,EAAE,kBAFT;AAGEC,MAAAA,OAAO,EAAE,OAHX;AAIEC,MAAAA,OAAO,EAAE;AAAA;;AAAA,qCAAM,KAAK3B,YAAX,uDAAM,mBAAmB4B,GAAnB,CAAuB,kBAAvB,CAAN;AAAA;AAJX,KAD8B,EAO9B;AACEJ,MAAAA,QAAQ,EAAE,SADZ;AAEEC,MAAAA,KAAK,EAAE,uBAFT;AAGEC,MAAAA,OAAO,EAAE,OAHX;AAIEC,MAAAA,OAAO,EAAE;AAAA;;AAAA,sCAAM,KAAK3B,YAAX,wDAAM,oBAAmB4B,GAAnB,CAAuB,gBAAvB,CAAN;AAAA;AAJX,KAP8B,CApL9B;AAAE;;AAIJ;AACF;AACA;AACEC,EAAAA,aAAa,CAAC,GAAGC,MAAJ,EAA0B;AACrC,SAAK5B,cAAL,CAAoBU,QAApB,CAA6BkB,MAA7B;AACA,WAAO,IAAP;AACD;AAED;AACF;AACA;;;AACEC,EAAAA,oBAAoB,CAAC,GAAGC,KAAJ,EAA2B;AAC7C,SAAKzB,YAAL,CAAkBK,QAAlB,CAA2BoB,KAA3B;AACA,WAAO,IAAP;AACD;AAED;AACF;AACA;;;AACEC,EAAAA,cAAc,CAACtB,MAAD,EAAuB;AACnC,SAAKhB,SAAL,CAAeiB,QAAf,CAAwBD,MAAxB;AACA,WAAO,IAAP;AACD;;AAOOuB,EAAAA,sBAAsB,GAAG;AAC/B,SAAKC,kBAAL,CAAwB,CACtB;AACEC,MAAAA,IAAI,EAAE,KAAKxC,WAAL,CAAiByC,SADzB;AAEEC,MAAAA,QAAQ,EAAE,KAAK1C,WAAL,CAAiB2C,OAAjB,CAAyBC,qBAAYC,EAArC;AAFZ,KADsB,EAKtB;AACEC,MAAAA,KAAK,EAAE,IADT;AAEEN,MAAAA,IAAI,EAAE,GAFR;AAGEE,MAAAA,QAAQ,eAAE,+BAAC,iBAAD;AAAW,QAAA,UAAU,EAAE,KAAKnC,cAA5B;AAA4C,QAAA,YAAY,EAAE,KAAKE;AAA/D;AAHZ,KALsB,CAAxB;AAWA,SAAK4B,cAAL,CAAoB,CAClB;AACEG,MAAAA,IAAI,EAAE,KAAKxC,WAAL,CAAiByC,SADzB;AAEEC,MAAAA,QAAQ,EAAE,KAAK1C,WAAL,CAAiB+C,cAAjB,CAAgCH,qBAAYC,EAA5C;AAFZ,KADkB,CAApB;AAMD;;AAEDG,EAAAA,kBAAkB,CAAC,GAAG/B,SAAJ,EAA6B;AAC7C,SAAKV,cAAL,CAAoBS,QAApB,CAA6BC,SAA7B;AACD;;AAEDgC,EAAAA,cAAc,CAACC,MAAD,EAAiB;AAC7B,SAAKxC,UAAL,CAAgBM,QAAhB,CAAyBkC,MAAzB;AACD;AAED;AACF;AACA;;;AACEC,EAAAA,eAAe,GAAG,CAAE;AAEpB;AACF;AACA;;;AACEC,EAAAA,kBAAkB,GAAG,CAAE;AAEvB;AACF;AACA;;;AACEC,EAAAA,sBAAsB,GAAG,CAAE;AAE3B;AACF;AACA;;;AACEC,EAAAA,oBAAoB,GAAG,CAAE;;AAEzBC,EAAAA,oBAAoB,GAAG,CAAE;AAEzB;AACF;AACA;;;AACEC,EAAAA,gBAAgB,GAAG,CAAE;AAErB;AACF;AACA;;;AACEC,EAAAA,UAAU,CAAC,GAAGC,OAAJ,EAAiC;AACzC,SAAK9C,WAAL,CAAiBI,QAAjB,CAA0B0C,OAA1B;AACA,WAAO,IAAP;AACD;;AAEOC,EAAAA,UAAU,GAAG;AACnB,UAAMC,QAAQ,GAAG,KAAKhD,WAAL,CAAiBiD,MAAjB,EAAjB;AACA,WAAO,uBAAQD,QAAR,CAAP;AACD;;AAqCDE,EAAAA,MAAM,GAAW;AACf,SAAK1D,YAAL,CAAkB2D,WAAlB,CAA8B,KAAK1D,iBAAnC;AACA,SAAKH,OAAL,CAAaqB,cAAb,CACE,4BAAY;AACVyC,MAAAA,WAAW,EAAE,KAAK7D,WADR;AAEV8D,MAAAA,WAAW,EAAE,KAAKnD,2BAFR;AAGVD,MAAAA,gBAAgB,EAAE,KAAKA;AAHb,KAAZ,CADF;AAOA,UAAM,CAACqD,iBAAD,IAAsB,KAAK9D,YAAL,CAAkB+D,UAAlB,CAA6B;AACvDtB,MAAAA,EAAE,EAAE,gBADmD;AACjC;AACtBd,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFsC;AAGvDqC,MAAAA,WAAW,EAAE,uBAH0C;AAIvDC,MAAAA,UAAU,EAAE;AAJ2C,KAA7B,CAA5B;AAMA,SAAKC,gBAAL,GAAwBJ,iBAAxB;AAEA,WAAO;AACLnD,MAAAA,MAAM,EAAE,CACN;AACEyB,QAAAA,IAAI,EAAE,GADR;AAEEE,QAAAA,QAAQ,eACN,+BAAC,eAAD;AACE,UAAA,SAAS,EAAE,KAAK3C,SADlB;AAEE,UAAA,QAAQ,EAAE,KAAKE,QAFjB;AAGE,UAAA,OAAO,eAAE,oCAAM,OAAN,CAAc,MAAd;AAAqB,YAAA,QAAQ,EAAE,KAAKO;AAApC,YAHX;AAIE,UAAA,OAAO,EAAE,IAJX;AAKE,UAAA,SAAS,EAAE,KAAKF,cALlB;AAME,UAAA,gBAAgB,EAAE,KAAKK,YANzB;AAOE,UAAA,OAAO,EAAE,KAAKgD,UAAL,EAPX;AAQE,UAAA,sBAAsB,EAAE,KAAKW,gBAR/B;AASE,UAAA,UAAU,EAAE,KAAK5D;AATnB;AAHJ,OADM;AADH,KAAP;AAoBD;AAED;;;AAsCqB,eAAR6D,QAAQ,CACnB,CAACC,EAAD,EAAKxE,WAAL,EAAkBE,OAAlB,EAA2BE,YAA3B,EAAyCqE,aAAzC,CADmB,EAQnBC,MARmB,EASnB,CACE3E,SADF,EAEEE,QAFF,EAGEE,WAHF,EAIEG,cAJF,EAKEC,cALF,EAMEE,YANF,EAOED,eAPF,EAQEE,UARF,EASEC,YATF,EAUEC,WAVF,EAWEC,gBAXF,EAYE8D,oBAZF,CATmB,EAoCnB;AACA,UAAMtE,iBAAiB,GAAG,KAAIuE,+BAAJ,EAAsBH,aAAa,CAACI,UAApC,CAA1B;AACA,UAAMC,OAAO,GAAG,IAAIjF,OAAJ,CACdE,SADc,EAEdC,WAFc,EAGdC,QAHc,EAIdC,OAJc,EAKdC,WALc,EAMdC,YANc,EAOdC,iBAPc,EAQdC,cARc,EASdC,cATc,EAUdC,eAVc,EAWdC,YAXc,EAYdC,UAZc,EAadC,YAbc,EAcdC,WAdc,EAedC,gBAfc,EAgBd8D,oBAhBc,CAAhB;AAkBAG,IAAAA,OAAO,CAACC,8BAAR,CAAuC,CAACC,+BAAD,EAAkBC,0BAAlB,CAAvC;AACAH,IAAAA,OAAO,CAACI,qBAAR,CAA8B,cAC5B,+BAAC,2BAAD;AAAc,MAAA,GAAG,EAAE;AAAnB,MAD4B,eAE5B,+BAAC,+BAAD;AAAkB,MAAA,GAAG,EAAE;AAAvB,MAF4B,CAA9B;AAIAV,IAAAA,EAAE,CAACW,YAAH,CAAgBL,OAAO,CAAChB,MAAR,CAAesB,IAAf,CAAoBN,OAApB,CAAhB;AACAA,IAAAA,OAAO,CAACO,gBAAR,CAAyBP,OAAO,CAAC7D,SAAjC;AACA6D,IAAAA,OAAO,CAAC9B,kBAAR,CAA2B,mBAAM,+BAAC,mBAAD,OAAjC;AACA8B,IAAAA,OAAO,CAACQ,mBAAR,CAA4B,mBAC1B,+BAAC,oCAAD;AAAc,MAAA,KAAK,MAAnB;AAAoB,MAAA,IAAI,EAAC,GAAzB;AAA6B,MAAA,IAAI,EAAC;AAAlC,iBADF;AAKAR,IAAAA,OAAO,CAACxC,sBAAR;AAEA,WAAOwC,OAAP;AACD;;AAnVkB;;;gCAARjF,O,kBAyPW,CAAC0F,cAAD,EAAWC,4BAAX,EAA4BC,wBAA5B,EAA2CC,qBAA3C,EAA6DC,sBAA7D,C;gCAzPX9F,O,aA0PM+F,e;gCA1PN/F,O,WA2PI,CACbgG,gBAAKC,QAAL,EADa,EAEbD,gBAAKC,QAAL,EAFa,EAGbD,gBAAKC,QAAL,EAHa,EAIbD,gBAAKC,QAAL,EAJa,EAKbD,gBAAKC,QAAL,EALa,EAMbD,gBAAKC,QAAL,EANa,EAObD,gBAAKC,QAAL,EAPa,EAQbD,gBAAKC,QAAL,EARa,EASbD,gBAAKC,QAAL,EATa,EAUbD,gBAAKC,QAAL,EAVa,EAWbD,gBAAKC,QAAL,EAXa,EAYbD,gBAAKC,QAAL,EAZa,EAabD,gBAAKC,QAAL,EAba,C;eA2FFjG,O;;;AAEf+C,qBAAYmD,UAAZ,CAAuBlG,OAAvB","sourcesContent":["import flatten from 'lodash.flatten';\nimport type { ComponentUI, ComponentModel } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport ReactRouterAspect, { ReactRouterUI } from '@teambit/react-router';\nimport { RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { SidebarAspect, SidebarUI, SidebarItem, SidebarItemSlot } from '@teambit/sidebar';\nimport { ComponentTreeNode } from '@teambit/component-tree';\nimport { UIAspect, UIRootUI as UIRoot, UIRuntime, UiUI } from '@teambit/ui';\nimport React, { ComponentType, ReactNode } from 'react';\nimport { MenuItemSlot, MenuItem } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { RouteProps } from 'react-router-dom';\nimport { MenuWidget, MenuWidgetSlot } from '@teambit/ui-foundation.ui.menu';\nimport { MenuLinkItem } from '@teambit/design.ui.surfaces.menu.link-item';\nimport CommandBarAspect, { CommandBarUI, ComponentSearcher, CommandHandler } from '@teambit/command-bar';\nimport { ScopeModel } from '@teambit/scope.models.scope-model';\nimport { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';\nimport {\n DrawerWidgetSlot,\n FilterWidget,\n TreeToggleWidget,\n ComponentFiltersSlot,\n} from '@teambit/component.ui.component-drawer';\nimport { ComponentFilters, DeprecateFilter, EnvsFilter } from '@teambit/component.ui.component-filters';\n\nimport { ScopeMenu, ScopeUseBox } from './ui/menu';\nimport { ScopeAspect } from './scope.aspect';\nimport { Scope } from './ui/scope';\nimport { scopeDrawer } from './scope.ui.drawer';\n\nexport type ScopeBadge = ComponentType;\n\nexport type ScopeBadgeSlot = SlotRegistry<ScopeBadge[]>;\n\nexport type ContextSlot = SlotRegistry<ScopeContextType[]>;\n\nexport type ScopeContextType = ComponentType<{ scope: ScopeModel; children: ReactNode }>;\n\nexport type SidebarSlot = SlotRegistry<ComponentTreeNode>;\n\nexport type ScopeOverview = ComponentType;\n\nexport type ScopeOverviewSlot = SlotRegistry<ScopeOverview>;\n\nexport type Corner = ComponentType;\n\nexport type CornerSlot = SlotRegistry<Corner>;\n\nexport type OverviewLine = ComponentType;\n\nexport type OverviewLineSlot = SlotRegistry<OverviewLine[]>;\n\nexport class ScopeUI {\n constructor(\n /**\n * route slot.\n */\n private routeSlot: RouteSlot,\n\n /**\n * component ui extension.\n */\n private componentUi: ComponentUI,\n /**\n * menu slot\n */\n private menuSlot: RouteSlot,\n\n private sidebar: SidebarUI,\n\n private sidebarSlot: SidebarSlot,\n\n private commandBarUI: CommandBarUI,\n\n private componentSearcher: ComponentSearcher,\n\n private scopeBadgeSlot: ScopeBadgeSlot,\n\n private menuWidgetSlot: MenuWidgetSlot,\n\n /**\n * sidebar link slot\n */\n private sidebarItemSlot: SidebarItemSlot,\n\n /**\n * main dropdown item slot\n */\n private menuItemSlot: MenuItemSlot,\n\n /**\n * corner slot\n */\n private cornerSlot: CornerSlot,\n\n /**\n * overview line slot to add new lines beneath the overview section\n */\n private overviewSlot: OverviewLineSlot,\n\n /**\n * add a new context to ui\n */\n private contextSlot: ContextSlot,\n private drawerWidgetSlot: DrawerWidgetSlot,\n private drawerComponentsFiltersSlot: ComponentFiltersSlot\n ) {}\n\n private setSidebarToggle: (updated: CommandHandler) => void = () => {};\n\n /**\n * register a new badge into the scope overview.\n */\n registerBadge(...badges: ScopeBadge[]) {\n this.scopeBadgeSlot.register(badges);\n return this;\n }\n\n /**\n * register a new line beneath the scope overview section.\n */\n registerOverviewLine(...lines: OverviewLine[]) {\n this.overviewSlot.register(lines);\n return this;\n }\n\n /**\n * register a route to the scope.\n */\n registerRoutes(routes: RouteProps[]) {\n this.routeSlot.register(routes);\n return this;\n }\n\n registerMenuRoutes = (routes: RouteProps[]) => {\n this.menuSlot.register(routes);\n return this;\n };\n\n private registerExplicitRoutes() {\n this.registerMenuRoutes([\n {\n path: this.componentUi.routePath,\n children: this.componentUi.getMenu(ScopeAspect.id),\n },\n {\n exact: true,\n path: '/',\n children: <ScopeMenu widgetSlot={this.menuWidgetSlot} menuItemSlot={this.menuItemSlot} />,\n },\n ]);\n this.registerRoutes([\n {\n path: this.componentUi.routePath,\n children: this.componentUi.getComponentUI(ScopeAspect.id),\n },\n ]);\n }\n\n registerMenuWidget(...menuItems: MenuWidget[]) {\n this.menuWidgetSlot.register(menuItems);\n }\n\n registerCorner(corner: Corner) {\n this.cornerSlot.register(corner);\n }\n\n /**\n * register a scope overview.\n */\n replaceOverview() {}\n\n /**\n * register description.\n */\n replaceDescription() {}\n\n /**\n * register metadata section.\n */\n replaceMetadataSection() {}\n\n /**\n * register a metadata item.\n */\n registerMetadataItem() {}\n\n replaceComponentGrid() {}\n\n /**\n * register metadata.\n */\n registerMetadata() {}\n\n /**\n * add a new context to the scope.\n */\n addContext(...context: ScopeContextType[]) {\n this.contextSlot.register(context);\n return this;\n }\n\n private getContext() {\n const contexts = this.contextSlot.values();\n return flatten(contexts);\n }\n\n registerMenuItem = (menuItems: MenuItem[]) => {\n this.menuItemSlot.register(menuItems);\n };\n\n /**\n * register a sidebar Widget for the scope\n */\n registerSidebarWidget = (componentTreeNodes: ComponentTreeNode[]) => {\n componentTreeNodes.map((componentTreeNode) => this.sidebarSlot.register(componentTreeNode));\n return this;\n };\n\n /**\n * register a sidebar link to the section above the drawers\n */\n registerSidebarLink = (...links: SidebarItem[]) => {\n this.sidebarItemSlot.register(links);\n };\n\n registerDrawers = (...drawer: DrawerType[]) => {\n this.sidebar.registerDrawer(...drawer);\n return this;\n };\n\n /**\n * register component filters\n */\n registerDrawerComponentFilters = (filters: ComponentFilters) => {\n this.drawerComponentsFiltersSlot.register(filters);\n };\n\n registerDrawerWidgets = (widgets: ReactNode[]) => {\n this.drawerWidgetSlot.register(widgets);\n };\n\n uiRoot(): UIRoot {\n this.commandBarUI.addSearcher(this.componentSearcher);\n this.sidebar.registerDrawer(\n scopeDrawer({\n treeWidgets: this.sidebarSlot,\n filtersSlot: this.drawerComponentsFiltersSlot,\n drawerWidgetSlot: this.drawerWidgetSlot,\n })\n );\n const [setKeyBindHandler] = this.commandBarUI.addCommand({\n id: 'sidebar.toggle', // TODO - extract to a component!\n handler: () => {},\n displayName: 'Toggle component list',\n keybinding: 'alt+s',\n });\n this.setSidebarToggle = setKeyBindHandler;\n\n return {\n routes: [\n {\n path: '/',\n children: (\n <Scope\n routeSlot={this.routeSlot}\n menuSlot={this.menuSlot}\n sidebar={<this.sidebar.render itemSlot={this.sidebarItemSlot} />}\n scopeUi={this}\n badgeSlot={this.scopeBadgeSlot}\n overviewLineSlot={this.overviewSlot}\n context={this.getContext()}\n onSidebarTogglerChange={this.setSidebarToggle}\n cornerSlot={this.cornerSlot}\n />\n ),\n },\n ],\n };\n }\n\n /** registers available components */\n setComponents = (components: ComponentModel[]) => {\n this.componentSearcher.update(components);\n };\n\n private menuItems: MenuItem[] = [\n {\n category: 'general',\n title: 'Open command bar',\n keyChar: 'mod+k',\n handler: () => this.commandBarUI?.run('command-bar.open'),\n },\n {\n category: 'general',\n title: 'Toggle component list',\n keyChar: 'alt+s',\n handler: () => this.commandBarUI?.run('sidebar.toggle'),\n },\n ];\n\n static dependencies = [UIAspect, ComponentAspect, SidebarAspect, CommandBarAspect, ReactRouterAspect];\n static runtime = UIRuntime;\n static slots = [\n Slot.withType<RouteProps>(),\n Slot.withType<RouteProps>(),\n Slot.withType<ComponentTreeNode>(),\n Slot.withType<ScopeBadge>(),\n Slot.withType<ScopeOverview>(),\n Slot.withType<MenuWidget[]>(),\n Slot.withType<MenuItemSlot>(),\n Slot.withType<CornerSlot>(),\n Slot.withType<OverviewLineSlot>(),\n Slot.withType<SidebarItemSlot>(),\n Slot.withType<ContextSlot>(),\n Slot.withType<DrawerWidgetSlot>(),\n Slot.withType<ComponentFiltersSlot>(),\n ];\n\n static async provider(\n [ui, componentUi, sidebar, commandBarUI, reactRouterUI]: [\n UiUI,\n ComponentUI,\n SidebarUI,\n CommandBarUI,\n ReactRouterUI\n ],\n config,\n [\n routeSlot,\n menuSlot,\n sidebarSlot,\n scopeBadgeSlot,\n menuWidgetSlot,\n menuItemSlot,\n sidebarItemSlot,\n cornerSlot,\n overviewSlot,\n contextSlot,\n drawerWidgetSlot,\n componentFiltersSlot,\n ]: [\n RouteSlot,\n RouteSlot,\n SidebarSlot,\n ScopeBadgeSlot,\n MenuWidgetSlot,\n MenuItemSlot,\n SidebarItemSlot,\n CornerSlot,\n OverviewLineSlot,\n ContextSlot,\n DrawerWidgetSlot,\n ComponentFiltersSlot\n ]\n ) {\n const componentSearcher = new ComponentSearcher(reactRouterUI.navigateTo);\n const scopeUi = new ScopeUI(\n routeSlot,\n componentUi,\n menuSlot,\n sidebar,\n sidebarSlot,\n commandBarUI,\n componentSearcher,\n scopeBadgeSlot,\n menuWidgetSlot,\n sidebarItemSlot,\n menuItemSlot,\n cornerSlot,\n overviewSlot,\n contextSlot,\n drawerWidgetSlot,\n componentFiltersSlot\n );\n scopeUi.registerDrawerComponentFilters([DeprecateFilter, EnvsFilter]);\n scopeUi.registerDrawerWidgets([\n <FilterWidget key={'workspace-filter-widget'} />,\n <TreeToggleWidget key={'workspace-tree-toggle-widget'} />,\n ]);\n ui.registerRoot(scopeUi.uiRoot.bind(scopeUi));\n scopeUi.registerMenuItem(scopeUi.menuItems);\n scopeUi.registerMenuWidget(() => <ScopeUseBox />);\n scopeUi.registerSidebarLink(() => (\n <MenuLinkItem exact href=\"/\" icon=\"comps\">\n Gallery\n </MenuLinkItem>\n ));\n scopeUi.registerExplicitRoutes();\n\n return scopeUi;\n }\n}\n\nexport default ScopeUI;\n\nScopeAspect.addRuntime(ScopeUI);\n"]}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/scope",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.686",
|
|
4
4
|
"homepage": "https://bit.dev/teambit/scope/scope",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.scope",
|
|
8
8
|
"name": "scope",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.686"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"semver": "7.3.4",
|
|
@@ -24,45 +24,44 @@
|
|
|
24
24
|
"@teambit/base-ui.surfaces.split-pane.hover-splitter": "1.0.0",
|
|
25
25
|
"@teambit/base-ui.surfaces.split-pane.split-pane": "1.0.0",
|
|
26
26
|
"@teambit/base-ui.utils.composer": "1.0.0",
|
|
27
|
-
"@teambit/
|
|
28
|
-
"@teambit/
|
|
29
|
-
"@teambit/
|
|
30
|
-
"@teambit/
|
|
31
|
-
"@teambit/
|
|
32
|
-
"@teambit/
|
|
33
|
-
"@teambit/
|
|
34
|
-
"@teambit/
|
|
35
|
-
"@teambit/
|
|
36
|
-
"@teambit/
|
|
37
|
-
"@teambit/
|
|
38
|
-
"@teambit/
|
|
39
|
-
"@teambit/express": "0.0.555",
|
|
40
|
-
"@teambit/graphql": "0.0.685",
|
|
27
|
+
"@teambit/scope.models.scope-model": "0.0.114",
|
|
28
|
+
"@teambit/scope.ui.hooks.scope-context": "0.0.114",
|
|
29
|
+
"@teambit/component": "0.0.686",
|
|
30
|
+
"@teambit/logger": "0.0.552",
|
|
31
|
+
"@teambit/aspect-loader": "0.0.686",
|
|
32
|
+
"@teambit/builder": "0.0.686",
|
|
33
|
+
"@teambit/cli": "0.0.460",
|
|
34
|
+
"@teambit/compiler": "0.0.686",
|
|
35
|
+
"@teambit/config": "0.0.473",
|
|
36
|
+
"@teambit/envs": "0.0.686",
|
|
37
|
+
"@teambit/express": "0.0.556",
|
|
38
|
+
"@teambit/graphql": "0.0.686",
|
|
41
39
|
"@teambit/harmony.modules.requireable-component": "0.0.484",
|
|
42
|
-
"@teambit/isolator": "0.0.
|
|
40
|
+
"@teambit/isolator": "0.0.686",
|
|
43
41
|
"@teambit/legacy-bit-id": "0.0.399",
|
|
44
|
-
"@teambit/ui": "0.0.
|
|
42
|
+
"@teambit/ui": "0.0.686",
|
|
45
43
|
"@teambit/workspace.modules.match-pattern": "0.0.489",
|
|
46
|
-
"@teambit/
|
|
47
|
-
"@teambit/
|
|
44
|
+
"@teambit/component.ui.component-drawer": "0.0.1",
|
|
45
|
+
"@teambit/design.ui.tree": "0.0.5",
|
|
46
|
+
"@teambit/ui-foundation.ui.side-bar": "0.0.520",
|
|
47
|
+
"@teambit/command-bar": "0.0.686",
|
|
48
|
+
"@teambit/component-tree": "0.0.474",
|
|
49
|
+
"@teambit/component.ui.component-filters": "0.0.1",
|
|
48
50
|
"@teambit/design.ui.surfaces.menu.link-item": "0.0.379",
|
|
49
|
-
"@teambit/react-router": "0.0.
|
|
50
|
-
"@teambit/sidebar": "0.0.
|
|
51
|
+
"@teambit/react-router": "0.0.686",
|
|
52
|
+
"@teambit/sidebar": "0.0.686",
|
|
51
53
|
"@teambit/ui-foundation.ui.main-dropdown": "0.0.486",
|
|
52
54
|
"@teambit/ui-foundation.ui.menu": "0.0.486",
|
|
53
55
|
"@teambit/ui-foundation.ui.react-router.slot-router": "0.0.488",
|
|
54
|
-
"@teambit/ui-foundation.ui.tree.drawer": "0.0.
|
|
56
|
+
"@teambit/ui-foundation.ui.tree.drawer": "0.0.497",
|
|
55
57
|
"@teambit/bit-error": "0.0.394",
|
|
56
58
|
"@teambit/ui-foundation.ui.constants.z-indexes": "0.0.487",
|
|
57
|
-
"@teambit/scope.ui.hooks.use-scope": "0.0.
|
|
59
|
+
"@teambit/scope.ui.hooks.use-scope": "0.0.117",
|
|
58
60
|
"@teambit/ui-foundation.ui.buttons.collapser": "0.0.194",
|
|
59
61
|
"@teambit/ui-foundation.ui.corner": "0.0.494",
|
|
60
62
|
"@teambit/ui-foundation.ui.full-loader": "0.0.486",
|
|
61
63
|
"@teambit/ui-foundation.ui.hooks.use-is-mobile": "0.0.179",
|
|
62
64
|
"@teambit/ui-foundation.ui.top-bar": "0.0.489",
|
|
63
|
-
"@teambit/design.ui.styles.ellipsis": "0.0.347",
|
|
64
|
-
"@teambit/design.ui.styles.muted-italic": "0.0.35",
|
|
65
|
-
"@teambit/ui-foundation.ui.side-bar": "0.0.519",
|
|
66
65
|
"@teambit/ui-foundation.ui.use-box.dropdown": "0.0.114",
|
|
67
66
|
"@teambit/ui-foundation.ui.use-box.scope-menu": "0.0.114",
|
|
68
67
|
"@teambit/explorer.ui.gallery.component-card": "0.0.494",
|
|
@@ -87,7 +86,7 @@
|
|
|
87
86
|
"@teambit/scope.content.scope-overview": "1.95.0"
|
|
88
87
|
},
|
|
89
88
|
"peerDependencies": {
|
|
90
|
-
"@teambit/legacy": "1.0.
|
|
89
|
+
"@teambit/legacy": "1.0.239",
|
|
91
90
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
92
91
|
"react": "^16.8.0 || ^17.0.0"
|
|
93
92
|
},
|
|
@@ -115,7 +114,7 @@
|
|
|
115
114
|
"react": "-"
|
|
116
115
|
},
|
|
117
116
|
"peerDependencies": {
|
|
118
|
-
"@teambit/legacy": "1.0.
|
|
117
|
+
"@teambit/legacy": "1.0.239",
|
|
119
118
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
120
119
|
"react": "^16.8.0 || ^17.0.0"
|
|
121
120
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.scope_scope@0.0.
|
|
2
|
-
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.scope_scope@0.0.
|
|
1
|
+
export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.scope_scope@0.0.686/dist/scope.composition.js')]
|
|
2
|
+
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.scope_scope@0.0.686/dist/scope.docs.mdx')]
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import React, { useContext } from 'react';
|
|
2
|
+
import { ComponentsDrawer, ComponentFiltersSlot, DrawerWidgetSlot } from '@teambit/component.ui.component-drawer';
|
|
3
|
+
import { ScopeContext } from '@teambit/scope.ui.hooks.scope-context';
|
|
4
|
+
import { ComponentView, NamespaceTreeNode, PayloadType, ScopePayload } from '@teambit/ui-foundation.ui.side-bar';
|
|
5
|
+
import { TreeNodeProps } from '@teambit/design.ui.tree';
|
|
6
|
+
import { SidebarSlot } from './scope.ui.runtime';
|
|
7
|
+
|
|
8
|
+
export type ScopeDrawerProps = {
|
|
9
|
+
treeWidgets: SidebarSlot;
|
|
10
|
+
filtersSlot: ComponentFiltersSlot;
|
|
11
|
+
drawerWidgetSlot: DrawerWidgetSlot;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export const scopeDrawer = ({ treeWidgets, filtersSlot, drawerWidgetSlot }: ScopeDrawerProps) => {
|
|
15
|
+
const customScopeTreeNodeRenderer = (treeNodeSlot) =>
|
|
16
|
+
function TreeNode(props: TreeNodeProps<PayloadType>) {
|
|
17
|
+
const children = props.node.children;
|
|
18
|
+
|
|
19
|
+
if (!children) return <ComponentView {...props} treeNodeSlot={treeNodeSlot} />;
|
|
20
|
+
|
|
21
|
+
// skip over scope node and render only children
|
|
22
|
+
if (props.node.payload instanceof ScopePayload) {
|
|
23
|
+
return (
|
|
24
|
+
<>
|
|
25
|
+
{children.map((childNode) => (
|
|
26
|
+
<TreeNode key={childNode.id} {...props} node={childNode}></TreeNode>
|
|
27
|
+
))}
|
|
28
|
+
</>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return <NamespaceTreeNode {...props} />;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
return new ComponentsDrawer({
|
|
36
|
+
order: 0,
|
|
37
|
+
id: 'scope-components-drawer',
|
|
38
|
+
name: 'COMPONENTS',
|
|
39
|
+
plugins: {
|
|
40
|
+
tree: {
|
|
41
|
+
widgets: treeWidgets,
|
|
42
|
+
customRenderer: customScopeTreeNodeRenderer,
|
|
43
|
+
},
|
|
44
|
+
filters: filtersSlot,
|
|
45
|
+
drawerWidgets: drawerWidgetSlot,
|
|
46
|
+
},
|
|
47
|
+
emptyMessage: 'Scope is empty',
|
|
48
|
+
useComponents: () => {
|
|
49
|
+
const scope = useContext(ScopeContext);
|
|
50
|
+
return {
|
|
51
|
+
loading: !scope,
|
|
52
|
+
components: scope.components || [],
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
};
|
package/scope.ui.runtime.tsx
CHANGED
|
@@ -15,10 +15,18 @@ import { MenuLinkItem } from '@teambit/design.ui.surfaces.menu.link-item';
|
|
|
15
15
|
import CommandBarAspect, { CommandBarUI, ComponentSearcher, CommandHandler } from '@teambit/command-bar';
|
|
16
16
|
import { ScopeModel } from '@teambit/scope.models.scope-model';
|
|
17
17
|
import { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';
|
|
18
|
+
import {
|
|
19
|
+
DrawerWidgetSlot,
|
|
20
|
+
FilterWidget,
|
|
21
|
+
TreeToggleWidget,
|
|
22
|
+
ComponentFiltersSlot,
|
|
23
|
+
} from '@teambit/component.ui.component-drawer';
|
|
24
|
+
import { ComponentFilters, DeprecateFilter, EnvsFilter } from '@teambit/component.ui.component-filters';
|
|
25
|
+
|
|
18
26
|
import { ScopeMenu, ScopeUseBox } from './ui/menu';
|
|
19
27
|
import { ScopeAspect } from './scope.aspect';
|
|
20
28
|
import { Scope } from './ui/scope';
|
|
21
|
-
import {
|
|
29
|
+
import { scopeDrawer } from './scope.ui.drawer';
|
|
22
30
|
|
|
23
31
|
export type ScopeBadge = ComponentType;
|
|
24
32
|
|
|
@@ -93,7 +101,9 @@ export class ScopeUI {
|
|
|
93
101
|
/**
|
|
94
102
|
* add a new context to ui
|
|
95
103
|
*/
|
|
96
|
-
private contextSlot: ContextSlot
|
|
104
|
+
private contextSlot: ContextSlot,
|
|
105
|
+
private drawerWidgetSlot: DrawerWidgetSlot,
|
|
106
|
+
private drawerComponentsFiltersSlot: ComponentFiltersSlot
|
|
97
107
|
) {}
|
|
98
108
|
|
|
99
109
|
private setSidebarToggle: (updated: CommandHandler) => void = () => {};
|
|
@@ -219,9 +229,26 @@ export class ScopeUI {
|
|
|
219
229
|
return this;
|
|
220
230
|
};
|
|
221
231
|
|
|
232
|
+
/**
|
|
233
|
+
* register component filters
|
|
234
|
+
*/
|
|
235
|
+
registerDrawerComponentFilters = (filters: ComponentFilters) => {
|
|
236
|
+
this.drawerComponentsFiltersSlot.register(filters);
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
registerDrawerWidgets = (widgets: ReactNode[]) => {
|
|
240
|
+
this.drawerWidgetSlot.register(widgets);
|
|
241
|
+
};
|
|
242
|
+
|
|
222
243
|
uiRoot(): UIRoot {
|
|
223
244
|
this.commandBarUI.addSearcher(this.componentSearcher);
|
|
224
|
-
this.sidebar.registerDrawer(
|
|
245
|
+
this.sidebar.registerDrawer(
|
|
246
|
+
scopeDrawer({
|
|
247
|
+
treeWidgets: this.sidebarSlot,
|
|
248
|
+
filtersSlot: this.drawerComponentsFiltersSlot,
|
|
249
|
+
drawerWidgetSlot: this.drawerWidgetSlot,
|
|
250
|
+
})
|
|
251
|
+
);
|
|
225
252
|
const [setKeyBindHandler] = this.commandBarUI.addCommand({
|
|
226
253
|
id: 'sidebar.toggle', // TODO - extract to a component!
|
|
227
254
|
handler: () => {},
|
|
@@ -286,6 +313,8 @@ export class ScopeUI {
|
|
|
286
313
|
Slot.withType<OverviewLineSlot>(),
|
|
287
314
|
Slot.withType<SidebarItemSlot>(),
|
|
288
315
|
Slot.withType<ContextSlot>(),
|
|
316
|
+
Slot.withType<DrawerWidgetSlot>(),
|
|
317
|
+
Slot.withType<ComponentFiltersSlot>(),
|
|
289
318
|
];
|
|
290
319
|
|
|
291
320
|
static async provider(
|
|
@@ -308,6 +337,8 @@ export class ScopeUI {
|
|
|
308
337
|
cornerSlot,
|
|
309
338
|
overviewSlot,
|
|
310
339
|
contextSlot,
|
|
340
|
+
drawerWidgetSlot,
|
|
341
|
+
componentFiltersSlot,
|
|
311
342
|
]: [
|
|
312
343
|
RouteSlot,
|
|
313
344
|
RouteSlot,
|
|
@@ -318,7 +349,9 @@ export class ScopeUI {
|
|
|
318
349
|
SidebarItemSlot,
|
|
319
350
|
CornerSlot,
|
|
320
351
|
OverviewLineSlot,
|
|
321
|
-
ContextSlot
|
|
352
|
+
ContextSlot,
|
|
353
|
+
DrawerWidgetSlot,
|
|
354
|
+
ComponentFiltersSlot
|
|
322
355
|
]
|
|
323
356
|
) {
|
|
324
357
|
const componentSearcher = new ComponentSearcher(reactRouterUI.navigateTo);
|
|
@@ -336,8 +369,15 @@ export class ScopeUI {
|
|
|
336
369
|
menuItemSlot,
|
|
337
370
|
cornerSlot,
|
|
338
371
|
overviewSlot,
|
|
339
|
-
contextSlot
|
|
372
|
+
contextSlot,
|
|
373
|
+
drawerWidgetSlot,
|
|
374
|
+
componentFiltersSlot
|
|
340
375
|
);
|
|
376
|
+
scopeUi.registerDrawerComponentFilters([DeprecateFilter, EnvsFilter]);
|
|
377
|
+
scopeUi.registerDrawerWidgets([
|
|
378
|
+
<FilterWidget key={'workspace-filter-widget'} />,
|
|
379
|
+
<TreeToggleWidget key={'workspace-tree-toggle-widget'} />,
|
|
380
|
+
]);
|
|
341
381
|
ui.registerRoot(scopeUi.uiRoot.bind(scopeUi));
|
|
342
382
|
scopeUi.registerMenuItem(scopeUi.menuItems);
|
|
343
383
|
scopeUi.registerMenuWidget(() => <ScopeUseBox />);
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
.emptyScope {
|
|
2
|
-
padding: 8px 8px 0 28px;
|
|
3
|
-
display: block;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
.widgetIcon {
|
|
7
|
-
padding: 4px;
|
|
8
|
-
border-radius: 8px;
|
|
9
|
-
align-items: center;
|
|
10
|
-
display: flex;
|
|
11
|
-
&:hover,
|
|
12
|
-
&.open {
|
|
13
|
-
background-color: var(--bit-border-color-lightest, #ededed);
|
|
14
|
-
}
|
|
15
|
-
img {
|
|
16
|
-
width: 16px;
|
|
17
|
-
}
|
|
18
|
-
&:active img,
|
|
19
|
-
&.open img {
|
|
20
|
-
filter: invert(38%) sepia(33%) saturate(7140%) hue-rotate(234deg) brightness(96%) contrast(87%);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
.filterWidgetIcon {
|
|
25
|
-
margin-right: 8px;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.deprecateFilter {
|
|
29
|
-
display: flex;
|
|
30
|
-
flex-direction: row;
|
|
31
|
-
font-size: 14px;
|
|
32
|
-
justify-content: space-between;
|
|
33
|
-
padding: 8px;
|
|
34
|
-
margin: 4px 8px;
|
|
35
|
-
|
|
36
|
-
> div {
|
|
37
|
-
line-height: 16px;
|
|
38
|
-
display: flex;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
.filterIcon {
|
|
42
|
-
img {
|
|
43
|
-
width: 16px;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.filterIconLabel {
|
|
47
|
-
margin: 0px 8px;
|
|
48
|
-
font-size: 14px;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { ComponentTreeSlot } from '@teambit/component-tree';
|
|
3
|
-
import type { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';
|
|
4
|
-
export declare class ComponentsDrawer implements DrawerType {
|
|
5
|
-
private treeNodeSlot;
|
|
6
|
-
constructor(treeNodeSlot: ComponentTreeSlot);
|
|
7
|
-
id: string;
|
|
8
|
-
name: string;
|
|
9
|
-
widgets: JSX.Element[];
|
|
10
|
-
Filters: JSX.Element[];
|
|
11
|
-
Context: ({ children }: {
|
|
12
|
-
children: any;
|
|
13
|
-
}) => JSX.Element;
|
|
14
|
-
render: () => JSX.Element;
|
|
15
|
-
}
|
|
@@ -1,275 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
require("core-js/modules/es.array.iterator.js");
|
|
6
|
-
|
|
7
|
-
Object.defineProperty(exports, "__esModule", {
|
|
8
|
-
value: true
|
|
9
|
-
});
|
|
10
|
-
exports.ComponentsDrawer = void 0;
|
|
11
|
-
|
|
12
|
-
function _extends2() {
|
|
13
|
-
const data = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
14
|
-
|
|
15
|
-
_extends2 = function () {
|
|
16
|
-
return data;
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
return data;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function _defineProperty2() {
|
|
23
|
-
const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
24
|
-
|
|
25
|
-
_defineProperty2 = function () {
|
|
26
|
-
return data;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
return data;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
function _react() {
|
|
33
|
-
const data = _interopRequireWildcard(require("react"));
|
|
34
|
-
|
|
35
|
-
_react = function () {
|
|
36
|
-
return data;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
return data;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function _classnames() {
|
|
43
|
-
const data = _interopRequireDefault(require("classnames"));
|
|
44
|
-
|
|
45
|
-
_classnames = function () {
|
|
46
|
-
return data;
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
return data;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
function _uiFoundationUi() {
|
|
53
|
-
const data = require("@teambit/ui-foundation.ui.side-bar");
|
|
54
|
-
|
|
55
|
-
_uiFoundationUi = function () {
|
|
56
|
-
return data;
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
return data;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
function _uiFoundationUi2() {
|
|
63
|
-
const data = require("@teambit/ui-foundation.ui.full-loader");
|
|
64
|
-
|
|
65
|
-
_uiFoundationUi2 = function () {
|
|
66
|
-
return data;
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
return data;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
function _designUiStyles() {
|
|
73
|
-
const data = require("@teambit/design.ui.styles.muted-italic");
|
|
74
|
-
|
|
75
|
-
_designUiStyles = function () {
|
|
76
|
-
return data;
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
return data;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
function _designUiStyles2() {
|
|
83
|
-
const data = require("@teambit/design.ui.styles.ellipsis");
|
|
84
|
-
|
|
85
|
-
_designUiStyles2 = function () {
|
|
86
|
-
return data;
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
return data;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
function _designUiInput() {
|
|
93
|
-
const data = require("@teambit/design.ui.input.toggle");
|
|
94
|
-
|
|
95
|
-
_designUiInput = function () {
|
|
96
|
-
return data;
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
return data;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
function _scopeUiHooks() {
|
|
103
|
-
const data = require("@teambit/scope.ui.hooks.use-scope");
|
|
104
|
-
|
|
105
|
-
_scopeUiHooks = function () {
|
|
106
|
-
return data;
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
return data;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
function _componentsDrawerModule() {
|
|
113
|
-
const data = _interopRequireDefault(require("./components-drawer.module.scss"));
|
|
114
|
-
|
|
115
|
-
_componentsDrawerModule = function () {
|
|
116
|
-
return data;
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
return data;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
123
|
-
|
|
124
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
125
|
-
|
|
126
|
-
const ScopeTreeContext = /*#__PURE__*/(0, _react().createContext)({
|
|
127
|
-
collapsed: true,
|
|
128
|
-
setCollapsed: () => {},
|
|
129
|
-
activeFilters: [],
|
|
130
|
-
setActiveFilter: () => {},
|
|
131
|
-
filterOpen: false,
|
|
132
|
-
setFilterOpen: () => {}
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
class ComponentsDrawer {
|
|
136
|
-
constructor(treeNodeSlot) {
|
|
137
|
-
this.treeNodeSlot = treeNodeSlot;
|
|
138
|
-
(0, _defineProperty2().default)(this, "id", 'components-drawer');
|
|
139
|
-
(0, _defineProperty2().default)(this, "name", 'COMPONENTS');
|
|
140
|
-
(0, _defineProperty2().default)(this, "widgets", [/*#__PURE__*/_react().default.createElement(FilterWidget, {
|
|
141
|
-
key: 'filter-widget'
|
|
142
|
-
}), /*#__PURE__*/_react().default.createElement(TreeToggleWidget, {
|
|
143
|
-
key: 'tree-toggle-widget'
|
|
144
|
-
})]);
|
|
145
|
-
(0, _defineProperty2().default)(this, "Filters", [/*#__PURE__*/_react().default.createElement(DeprecateFilter, {
|
|
146
|
-
key: 'deprecate-filter'
|
|
147
|
-
})]);
|
|
148
|
-
(0, _defineProperty2().default)(this, "Context", ({
|
|
149
|
-
children
|
|
150
|
-
}) => {
|
|
151
|
-
const [collapsed, setCollapsed] = (0, _react().useState)(true);
|
|
152
|
-
const [activeFilters, setActiveFilters] = (0, _react().useState)([]);
|
|
153
|
-
const [filterOpen, setFilterOpen] = (0, _react().useState)(false);
|
|
154
|
-
|
|
155
|
-
const handleActiveFilterToggle = filterId => {
|
|
156
|
-
const isFilterActive = activeFilters.includes(filterId);
|
|
157
|
-
|
|
158
|
-
if (isFilterActive) {
|
|
159
|
-
setActiveFilters(list => list.filter(id => id !== filterId));
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
setActiveFilters(list => list.concat(filterId));
|
|
164
|
-
};
|
|
165
|
-
|
|
166
|
-
return /*#__PURE__*/_react().default.createElement(ScopeTreeContext.Provider, {
|
|
167
|
-
value: {
|
|
168
|
-
collapsed,
|
|
169
|
-
setCollapsed,
|
|
170
|
-
activeFilters,
|
|
171
|
-
setActiveFilter: handleActiveFilterToggle,
|
|
172
|
-
filterOpen,
|
|
173
|
-
setFilterOpen
|
|
174
|
-
}
|
|
175
|
-
}, children);
|
|
176
|
-
});
|
|
177
|
-
(0, _defineProperty2().default)(this, "render", () => {
|
|
178
|
-
const {
|
|
179
|
-
scope
|
|
180
|
-
} = (0, _scopeUiHooks().useScopeQuery)();
|
|
181
|
-
const {
|
|
182
|
-
collapsed,
|
|
183
|
-
activeFilters
|
|
184
|
-
} = (0, _react().useContext)(ScopeTreeContext);
|
|
185
|
-
const {
|
|
186
|
-
treeNodeSlot
|
|
187
|
-
} = this;
|
|
188
|
-
const showDeprecatedComponents = activeFilters.find(activeFilter => activeFilter === 'deprecate');
|
|
189
|
-
const TreeNodeRenderer = (0, _react().useCallback)(function TreeNode(props) {
|
|
190
|
-
const children = props.node.children;
|
|
191
|
-
if (!children) return /*#__PURE__*/_react().default.createElement(_uiFoundationUi().ComponentView, (0, _extends2().default)({}, props, {
|
|
192
|
-
treeNodeSlot: treeNodeSlot
|
|
193
|
-
})); // skip over scope node and render only children
|
|
194
|
-
|
|
195
|
-
if (props.node.payload instanceof _uiFoundationUi().ScopePayload) {
|
|
196
|
-
return /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, children.map(childNode => /*#__PURE__*/_react().default.createElement(TreeNodeRenderer, (0, _extends2().default)({
|
|
197
|
-
key: childNode.id
|
|
198
|
-
}, props, {
|
|
199
|
-
node: childNode
|
|
200
|
-
}))));
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
return /*#__PURE__*/_react().default.createElement(_uiFoundationUi().NamespaceTreeNode, props);
|
|
204
|
-
}, [treeNodeSlot]);
|
|
205
|
-
if (!scope) return /*#__PURE__*/_react().default.createElement(_uiFoundationUi2().FullLoader, null);
|
|
206
|
-
const components = showDeprecatedComponents ? scope.components : scope.components.filter(component => {
|
|
207
|
-
var _component$deprecatio;
|
|
208
|
-
|
|
209
|
-
return !((_component$deprecatio = component.deprecation) !== null && _component$deprecatio !== void 0 && _component$deprecatio.isDeprecate);
|
|
210
|
-
});
|
|
211
|
-
if (components.length === 0) return /*#__PURE__*/_react().default.createElement("span", {
|
|
212
|
-
className: (0, _classnames().default)(_designUiStyles().mutedItalic, _designUiStyles2().ellipsis, _componentsDrawerModule().default.emptyScope)
|
|
213
|
-
}, "Scope is empty");
|
|
214
|
-
return /*#__PURE__*/_react().default.createElement(_uiFoundationUi().ComponentTree, {
|
|
215
|
-
components: components,
|
|
216
|
-
isCollapsed: collapsed,
|
|
217
|
-
TreeNode: TreeNodeRenderer
|
|
218
|
-
});
|
|
219
|
-
});
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
exports.ComponentsDrawer = ComponentsDrawer;
|
|
225
|
-
|
|
226
|
-
function TreeToggleWidget() {
|
|
227
|
-
const {
|
|
228
|
-
collapsed,
|
|
229
|
-
setCollapsed
|
|
230
|
-
} = (0, _react().useContext)(ScopeTreeContext);
|
|
231
|
-
const icon = collapsed ? 'https://static.bit.dev/bit-icons/expand.svg' : 'https://static.bit.dev/bit-icons/collapse.svg';
|
|
232
|
-
return /*#__PURE__*/_react().default.createElement("div", {
|
|
233
|
-
className: _componentsDrawerModule().default.widgetIcon
|
|
234
|
-
}, /*#__PURE__*/_react().default.createElement("img", {
|
|
235
|
-
src: icon,
|
|
236
|
-
onClick: () => setCollapsed(!collapsed)
|
|
237
|
-
}));
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
function FilterWidget() {
|
|
241
|
-
const {
|
|
242
|
-
filterOpen,
|
|
243
|
-
setFilterOpen
|
|
244
|
-
} = (0, _react().useContext)(ScopeTreeContext);
|
|
245
|
-
return /*#__PURE__*/_react().default.createElement("div", {
|
|
246
|
-
className: (0, _classnames().default)(_componentsDrawerModule().default.widgetIcon, _componentsDrawerModule().default.filterWidgetIcon, filterOpen && _componentsDrawerModule().default.open)
|
|
247
|
-
}, /*#__PURE__*/_react().default.createElement("img", {
|
|
248
|
-
src: "https://static.bit.dev/bit-icons/filter.svg",
|
|
249
|
-
onClick: () => setFilterOpen(!filterOpen)
|
|
250
|
-
}));
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
function DeprecateFilter() {
|
|
254
|
-
const {
|
|
255
|
-
activeFilters,
|
|
256
|
-
setActiveFilter,
|
|
257
|
-
filterOpen
|
|
258
|
-
} = (0, _react().useContext)(ScopeTreeContext);
|
|
259
|
-
const isActive = activeFilters.includes('deprecate');
|
|
260
|
-
if (!filterOpen) return null;
|
|
261
|
-
return /*#__PURE__*/_react().default.createElement("div", {
|
|
262
|
-
className: (0, _classnames().default)(_componentsDrawerModule().default.deprecateFilter, isActive && _componentsDrawerModule().default.active)
|
|
263
|
-
}, /*#__PURE__*/_react().default.createElement("div", {
|
|
264
|
-
className: _componentsDrawerModule().default.filterIcon
|
|
265
|
-
}, /*#__PURE__*/_react().default.createElement("img", {
|
|
266
|
-
src: "https://static.bit.dev/bit-icons/deprecated.svg"
|
|
267
|
-
}), /*#__PURE__*/_react().default.createElement("span", {
|
|
268
|
-
className: _componentsDrawerModule().default.filterIconLabel
|
|
269
|
-
}, "Deprecated")), /*#__PURE__*/_react().default.createElement("div", null, /*#__PURE__*/_react().default.createElement(_designUiInput().Toggle, {
|
|
270
|
-
checked: isActive,
|
|
271
|
-
onInputChanged: () => setActiveFilter('deprecate')
|
|
272
|
-
})));
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
//# sourceMappingURL=components.drawer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["components.drawer.tsx"],"names":["ScopeTreeContext","collapsed","setCollapsed","activeFilters","setActiveFilter","filterOpen","setFilterOpen","ComponentsDrawer","constructor","treeNodeSlot","children","setActiveFilters","handleActiveFilterToggle","filterId","isFilterActive","includes","list","filter","id","concat","scope","showDeprecatedComponents","find","activeFilter","TreeNodeRenderer","TreeNode","props","node","payload","ScopePayload","map","childNode","components","component","deprecation","isDeprecate","length","mutedItalic","ellipsis","styles","emptyScope","TreeToggleWidget","icon","widgetIcon","FilterWidget","filterWidgetIcon","open","DeprecateFilter","isActive","deprecateFilter","active","filterIcon","filterIconLabel"],"mappings":"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","sourcesContent":["import React, { useCallback, useState, useContext, createContext } from 'react';\nimport classNames from 'classnames';\nimport {\n ComponentTree,\n ComponentView,\n NamespaceTreeNode,\n PayloadType,\n ScopePayload,\n} from '@teambit/ui-foundation.ui.side-bar';\nimport { TreeNodeProps } from '@teambit/base-ui.graph.tree.recursive-tree';\nimport { FullLoader } from '@teambit/ui-foundation.ui.full-loader';\nimport { ComponentTreeSlot } from '@teambit/component-tree';\nimport type { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';\nimport { mutedItalic } from '@teambit/design.ui.styles.muted-italic';\nimport { ellipsis } from '@teambit/design.ui.styles.ellipsis';\nimport { Toggle } from '@teambit/design.ui.input.toggle';\nimport { useScopeQuery } from '@teambit/scope.ui.hooks.use-scope';\nimport styles from './components-drawer.module.scss';\n\ntype ScopeTreeContextType = {\n collapsed: boolean;\n setCollapsed: (x: boolean) => void;\n filterOpen: boolean;\n setFilterOpen: (open: boolean) => void;\n activeFilters: string[];\n setActiveFilter: (filterId: string) => void;\n};\n\nconst ScopeTreeContext = createContext<ScopeTreeContextType>({\n collapsed: true,\n setCollapsed: () => {},\n activeFilters: [],\n setActiveFilter: () => {},\n filterOpen: false,\n setFilterOpen: () => {},\n});\n\nexport class ComponentsDrawer implements DrawerType {\n constructor(private treeNodeSlot: ComponentTreeSlot) {}\n\n id = 'components-drawer';\n\n name = 'COMPONENTS';\n\n widgets = [<FilterWidget key={'filter-widget'} />, <TreeToggleWidget key={'tree-toggle-widget'} />];\n Filters = [<DeprecateFilter key={'deprecate-filter'} />];\n\n Context = ({ children }) => {\n const [collapsed, setCollapsed] = useState(true);\n const [activeFilters, setActiveFilters] = useState<string[]>([]);\n const [filterOpen, setFilterOpen] = useState<boolean>(false);\n\n const handleActiveFilterToggle = (filterId: string) => {\n const isFilterActive = activeFilters.includes(filterId);\n if (isFilterActive) {\n setActiveFilters((list) => list.filter((id) => id !== filterId));\n return;\n }\n setActiveFilters((list) => list.concat(filterId));\n };\n return (\n <ScopeTreeContext.Provider\n value={{\n collapsed,\n setCollapsed,\n activeFilters,\n setActiveFilter: handleActiveFilterToggle,\n filterOpen,\n setFilterOpen,\n }}\n >\n {children}\n </ScopeTreeContext.Provider>\n );\n };\n\n render = () => {\n const { scope } = useScopeQuery();\n const { collapsed, activeFilters } = useContext(ScopeTreeContext);\n const { treeNodeSlot } = this;\n const showDeprecatedComponents = activeFilters.find((activeFilter) => activeFilter === 'deprecate');\n\n const TreeNodeRenderer = useCallback(\n function TreeNode(props: TreeNodeProps<PayloadType>) {\n const children = props.node.children;\n\n if (!children) return <ComponentView {...props} treeNodeSlot={treeNodeSlot} />;\n\n // skip over scope node and render only children\n if (props.node.payload instanceof ScopePayload) {\n return (\n <>\n {children.map((childNode) => (\n <TreeNodeRenderer key={childNode.id} {...props} node={childNode}></TreeNodeRenderer>\n ))}\n </>\n );\n }\n\n return <NamespaceTreeNode {...props} />;\n },\n [treeNodeSlot]\n );\n\n if (!scope) return <FullLoader />;\n\n const components = showDeprecatedComponents\n ? scope.components\n : scope.components.filter((component) => !component.deprecation?.isDeprecate);\n\n if (components.length === 0)\n return <span className={classNames(mutedItalic, ellipsis, styles.emptyScope)}>Scope is empty</span>;\n\n return <ComponentTree components={components} isCollapsed={collapsed} TreeNode={TreeNodeRenderer} />;\n };\n}\n\nfunction TreeToggleWidget() {\n const { collapsed, setCollapsed } = useContext(ScopeTreeContext);\n const icon = collapsed\n ? 'https://static.bit.dev/bit-icons/expand.svg'\n : 'https://static.bit.dev/bit-icons/collapse.svg';\n return (\n <div className={styles.widgetIcon}>\n <img src={icon} onClick={() => setCollapsed(!collapsed)} />\n </div>\n );\n}\n\nfunction FilterWidget() {\n const { filterOpen, setFilterOpen } = useContext(ScopeTreeContext);\n return (\n <div className={classNames(styles.widgetIcon, styles.filterWidgetIcon, filterOpen && styles.open)}>\n <img src=\"https://static.bit.dev/bit-icons/filter.svg\" onClick={() => setFilterOpen(!filterOpen)} />\n </div>\n );\n}\n\nfunction DeprecateFilter() {\n const { activeFilters, setActiveFilter, filterOpen } = useContext(ScopeTreeContext);\n const isActive = activeFilters.includes('deprecate');\n\n if (!filterOpen) return null;\n\n return (\n <div className={classNames(styles.deprecateFilter, isActive && styles.active)}>\n <div className={styles.filterIcon}>\n <img src=\"https://static.bit.dev/bit-icons/deprecated.svg\" />\n <span className={styles.filterIconLabel}>Deprecated</span>\n </div>\n <div>\n <Toggle checked={isActive} onInputChanged={() => setActiveFilter('deprecate')} />\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { ComponentsDrawer } from './components.drawer';
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
Object.defineProperty(exports, "ComponentsDrawer", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function () {
|
|
9
|
-
return _components().ComponentsDrawer;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
function _components() {
|
|
14
|
-
const data = require("./components.drawer");
|
|
15
|
-
|
|
16
|
-
_components = function () {
|
|
17
|
-
return data;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
return data;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA","sourcesContent":["export { ComponentsDrawer } from './components.drawer';\n"]}
|
|
Binary file
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
.emptyScope {
|
|
2
|
-
padding: 8px 8px 0 28px;
|
|
3
|
-
display: block;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
.widgetIcon {
|
|
7
|
-
padding: 4px;
|
|
8
|
-
border-radius: 8px;
|
|
9
|
-
align-items: center;
|
|
10
|
-
display: flex;
|
|
11
|
-
&:hover,
|
|
12
|
-
&.open {
|
|
13
|
-
background-color: var(--bit-border-color-lightest, #ededed);
|
|
14
|
-
}
|
|
15
|
-
img {
|
|
16
|
-
width: 16px;
|
|
17
|
-
}
|
|
18
|
-
&:active img,
|
|
19
|
-
&.open img {
|
|
20
|
-
filter: invert(38%) sepia(33%) saturate(7140%) hue-rotate(234deg) brightness(96%) contrast(87%);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
.filterWidgetIcon {
|
|
25
|
-
margin-right: 8px;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.deprecateFilter {
|
|
29
|
-
display: flex;
|
|
30
|
-
flex-direction: row;
|
|
31
|
-
font-size: 14px;
|
|
32
|
-
justify-content: space-between;
|
|
33
|
-
padding: 8px;
|
|
34
|
-
margin: 4px 8px;
|
|
35
|
-
|
|
36
|
-
> div {
|
|
37
|
-
line-height: 16px;
|
|
38
|
-
display: flex;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
.filterIcon {
|
|
42
|
-
img {
|
|
43
|
-
width: 16px;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.filterIconLabel {
|
|
47
|
-
margin: 0px 8px;
|
|
48
|
-
font-size: 14px;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import React, { useCallback, useState, useContext, createContext } from 'react';
|
|
2
|
-
import classNames from 'classnames';
|
|
3
|
-
import {
|
|
4
|
-
ComponentTree,
|
|
5
|
-
ComponentView,
|
|
6
|
-
NamespaceTreeNode,
|
|
7
|
-
PayloadType,
|
|
8
|
-
ScopePayload,
|
|
9
|
-
} from '@teambit/ui-foundation.ui.side-bar';
|
|
10
|
-
import { TreeNodeProps } from '@teambit/base-ui.graph.tree.recursive-tree';
|
|
11
|
-
import { FullLoader } from '@teambit/ui-foundation.ui.full-loader';
|
|
12
|
-
import { ComponentTreeSlot } from '@teambit/component-tree';
|
|
13
|
-
import type { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';
|
|
14
|
-
import { mutedItalic } from '@teambit/design.ui.styles.muted-italic';
|
|
15
|
-
import { ellipsis } from '@teambit/design.ui.styles.ellipsis';
|
|
16
|
-
import { Toggle } from '@teambit/design.ui.input.toggle';
|
|
17
|
-
import { useScopeQuery } from '@teambit/scope.ui.hooks.use-scope';
|
|
18
|
-
import styles from './components-drawer.module.scss';
|
|
19
|
-
|
|
20
|
-
type ScopeTreeContextType = {
|
|
21
|
-
collapsed: boolean;
|
|
22
|
-
setCollapsed: (x: boolean) => void;
|
|
23
|
-
filterOpen: boolean;
|
|
24
|
-
setFilterOpen: (open: boolean) => void;
|
|
25
|
-
activeFilters: string[];
|
|
26
|
-
setActiveFilter: (filterId: string) => void;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
const ScopeTreeContext = createContext<ScopeTreeContextType>({
|
|
30
|
-
collapsed: true,
|
|
31
|
-
setCollapsed: () => {},
|
|
32
|
-
activeFilters: [],
|
|
33
|
-
setActiveFilter: () => {},
|
|
34
|
-
filterOpen: false,
|
|
35
|
-
setFilterOpen: () => {},
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
export class ComponentsDrawer implements DrawerType {
|
|
39
|
-
constructor(private treeNodeSlot: ComponentTreeSlot) {}
|
|
40
|
-
|
|
41
|
-
id = 'components-drawer';
|
|
42
|
-
|
|
43
|
-
name = 'COMPONENTS';
|
|
44
|
-
|
|
45
|
-
widgets = [<FilterWidget key={'filter-widget'} />, <TreeToggleWidget key={'tree-toggle-widget'} />];
|
|
46
|
-
Filters = [<DeprecateFilter key={'deprecate-filter'} />];
|
|
47
|
-
|
|
48
|
-
Context = ({ children }) => {
|
|
49
|
-
const [collapsed, setCollapsed] = useState(true);
|
|
50
|
-
const [activeFilters, setActiveFilters] = useState<string[]>([]);
|
|
51
|
-
const [filterOpen, setFilterOpen] = useState<boolean>(false);
|
|
52
|
-
|
|
53
|
-
const handleActiveFilterToggle = (filterId: string) => {
|
|
54
|
-
const isFilterActive = activeFilters.includes(filterId);
|
|
55
|
-
if (isFilterActive) {
|
|
56
|
-
setActiveFilters((list) => list.filter((id) => id !== filterId));
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
setActiveFilters((list) => list.concat(filterId));
|
|
60
|
-
};
|
|
61
|
-
return (
|
|
62
|
-
<ScopeTreeContext.Provider
|
|
63
|
-
value={{
|
|
64
|
-
collapsed,
|
|
65
|
-
setCollapsed,
|
|
66
|
-
activeFilters,
|
|
67
|
-
setActiveFilter: handleActiveFilterToggle,
|
|
68
|
-
filterOpen,
|
|
69
|
-
setFilterOpen,
|
|
70
|
-
}}
|
|
71
|
-
>
|
|
72
|
-
{children}
|
|
73
|
-
</ScopeTreeContext.Provider>
|
|
74
|
-
);
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
render = () => {
|
|
78
|
-
const { scope } = useScopeQuery();
|
|
79
|
-
const { collapsed, activeFilters } = useContext(ScopeTreeContext);
|
|
80
|
-
const { treeNodeSlot } = this;
|
|
81
|
-
const showDeprecatedComponents = activeFilters.find((activeFilter) => activeFilter === 'deprecate');
|
|
82
|
-
|
|
83
|
-
const TreeNodeRenderer = useCallback(
|
|
84
|
-
function TreeNode(props: TreeNodeProps<PayloadType>) {
|
|
85
|
-
const children = props.node.children;
|
|
86
|
-
|
|
87
|
-
if (!children) return <ComponentView {...props} treeNodeSlot={treeNodeSlot} />;
|
|
88
|
-
|
|
89
|
-
// skip over scope node and render only children
|
|
90
|
-
if (props.node.payload instanceof ScopePayload) {
|
|
91
|
-
return (
|
|
92
|
-
<>
|
|
93
|
-
{children.map((childNode) => (
|
|
94
|
-
<TreeNodeRenderer key={childNode.id} {...props} node={childNode}></TreeNodeRenderer>
|
|
95
|
-
))}
|
|
96
|
-
</>
|
|
97
|
-
);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return <NamespaceTreeNode {...props} />;
|
|
101
|
-
},
|
|
102
|
-
[treeNodeSlot]
|
|
103
|
-
);
|
|
104
|
-
|
|
105
|
-
if (!scope) return <FullLoader />;
|
|
106
|
-
|
|
107
|
-
const components = showDeprecatedComponents
|
|
108
|
-
? scope.components
|
|
109
|
-
: scope.components.filter((component) => !component.deprecation?.isDeprecate);
|
|
110
|
-
|
|
111
|
-
if (components.length === 0)
|
|
112
|
-
return <span className={classNames(mutedItalic, ellipsis, styles.emptyScope)}>Scope is empty</span>;
|
|
113
|
-
|
|
114
|
-
return <ComponentTree components={components} isCollapsed={collapsed} TreeNode={TreeNodeRenderer} />;
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
function TreeToggleWidget() {
|
|
119
|
-
const { collapsed, setCollapsed } = useContext(ScopeTreeContext);
|
|
120
|
-
const icon = collapsed
|
|
121
|
-
? 'https://static.bit.dev/bit-icons/expand.svg'
|
|
122
|
-
: 'https://static.bit.dev/bit-icons/collapse.svg';
|
|
123
|
-
return (
|
|
124
|
-
<div className={styles.widgetIcon}>
|
|
125
|
-
<img src={icon} onClick={() => setCollapsed(!collapsed)} />
|
|
126
|
-
</div>
|
|
127
|
-
);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
function FilterWidget() {
|
|
131
|
-
const { filterOpen, setFilterOpen } = useContext(ScopeTreeContext);
|
|
132
|
-
return (
|
|
133
|
-
<div className={classNames(styles.widgetIcon, styles.filterWidgetIcon, filterOpen && styles.open)}>
|
|
134
|
-
<img src="https://static.bit.dev/bit-icons/filter.svg" onClick={() => setFilterOpen(!filterOpen)} />
|
|
135
|
-
</div>
|
|
136
|
-
);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
function DeprecateFilter() {
|
|
140
|
-
const { activeFilters, setActiveFilter, filterOpen } = useContext(ScopeTreeContext);
|
|
141
|
-
const isActive = activeFilters.includes('deprecate');
|
|
142
|
-
|
|
143
|
-
if (!filterOpen) return null;
|
|
144
|
-
|
|
145
|
-
return (
|
|
146
|
-
<div className={classNames(styles.deprecateFilter, isActive && styles.active)}>
|
|
147
|
-
<div className={styles.filterIcon}>
|
|
148
|
-
<img src="https://static.bit.dev/bit-icons/deprecated.svg" />
|
|
149
|
-
<span className={styles.filterIconLabel}>Deprecated</span>
|
|
150
|
-
</div>
|
|
151
|
-
<div>
|
|
152
|
-
<Toggle checked={isActive} onInputChanged={() => setActiveFilter('deprecate')} />
|
|
153
|
-
</div>
|
|
154
|
-
</div>
|
|
155
|
-
);
|
|
156
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { ComponentsDrawer } from './components.drawer';
|