@teambit/component 0.0.1079 → 0.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 (54) hide show
  1. package/component.ui.runtime.tsx +19 -9
  2. package/dist/component.graphql.d.ts +4 -1
  3. package/dist/component.graphql.js +4 -1
  4. package/dist/component.graphql.js.map +1 -1
  5. package/dist/component.ui.runtime.js +17 -9
  6. package/dist/component.ui.runtime.js.map +1 -1
  7. package/dist/get-component-opts.d.ts +1 -2
  8. package/dist/get-component-opts.js.map +1 -1
  9. package/dist/{preview-1686886045563.js → preview-1687058340034.js} +2 -2
  10. package/dist/ui/component.d.ts +1 -2
  11. package/dist/ui/component.js +24 -9
  12. package/dist/ui/component.js.map +1 -1
  13. package/dist/ui/index.d.ts +5 -2
  14. package/dist/ui/index.js +59 -9
  15. package/dist/ui/index.js.map +1 -1
  16. package/dist/ui/menu/index.d.ts +1 -1
  17. package/dist/ui/menu/index.js.map +1 -1
  18. package/dist/ui/menu/menu.d.ts +47 -8
  19. package/dist/ui/menu/menu.js +172 -84
  20. package/dist/ui/menu/menu.js.map +1 -1
  21. package/dist/ui/menu/nav-plugin.d.ts +12 -3
  22. package/dist/ui/menu/nav-plugin.js.map +1 -1
  23. package/dist/ui/use-component-logs.d.ts +16 -0
  24. package/dist/ui/use-component-logs.js +93 -0
  25. package/dist/ui/use-component-logs.js.map +1 -0
  26. package/dist/ui/use-component-query.d.ts +2 -86
  27. package/dist/ui/use-component-query.js +62 -188
  28. package/dist/ui/use-component-query.js.map +1 -1
  29. package/dist/ui/use-component.d.ts +3 -18
  30. package/dist/ui/use-component.fragments.d.ts +10 -0
  31. package/dist/ui/use-component.fragments.js +183 -0
  32. package/dist/ui/use-component.fragments.js.map +1 -0
  33. package/dist/ui/use-component.js +19 -0
  34. package/dist/ui/use-component.js.map +1 -1
  35. package/dist/ui/use-component.model.d.ts +40 -0
  36. package/dist/ui/use-component.model.js +3 -0
  37. package/dist/ui/use-component.model.js.map +1 -0
  38. package/dist/ui/use-component.utils.d.ts +1 -0
  39. package/dist/ui/use-component.utils.js +17 -0
  40. package/dist/ui/use-component.utils.js.map +1 -0
  41. package/package-tar/teambit-component-0.0.1081.tgz +0 -0
  42. package/package.json +18 -19
  43. package/ui/component.tsx +11 -5
  44. package/ui/index.ts +21 -2
  45. package/ui/menu/index.ts +7 -1
  46. package/ui/menu/menu.tsx +196 -68
  47. package/ui/menu/nav-plugin.tsx +14 -6
  48. package/ui/use-component-logs.ts +65 -0
  49. package/ui/use-component-query.ts +57 -160
  50. package/ui/use-component.fragments.ts +169 -0
  51. package/ui/use-component.model.ts +45 -0
  52. package/ui/use-component.tsx +4 -19
  53. package/ui/use-component.utils.ts +9 -0
  54. package/package-tar/teambit-component-0.0.1079.tgz +0 -0
@@ -1,9 +1,10 @@
1
- import { MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';
2
1
  import React from 'react';
3
- import type { ComponentModel } from '../component-model';
4
- import { UseComponentType } from '../use-component';
2
+ import { DropdownComponentVersion, GetActiveTabIndex } from '@teambit/component.ui.version-dropdown';
3
+ import { MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';
4
+ import { LanesModel } from '@teambit/lanes.ui.models.lanes-model';
5
+ import { UseComponentType, Filters } from '../use-component';
5
6
  import { OrderedNavigationSlot, ConsumeMethodSlot } from './nav-plugin';
6
- import { Filters } from '../use-component-query';
7
+ import { ComponentID } from '../..';
7
8
  export declare type MenuProps = {
8
9
  className?: string;
9
10
  /**
@@ -33,16 +34,54 @@ export declare type MenuProps = {
33
34
  consumeMethodSlot: ConsumeMethodSlot;
34
35
  componentIdStr?: string | (() => string | undefined);
35
36
  useComponent?: UseComponentType;
36
- path?: string;
37
37
  useComponentFilters?: () => Filters;
38
+ useLanes?: () => {
39
+ loading?: boolean;
40
+ lanesModel?: LanesModel;
41
+ };
42
+ path?: string;
38
43
  };
39
44
  /**
40
45
  * top bar menu.
41
46
  */
42
47
  export declare function ComponentMenu({ navigationSlot, widgetSlot, className, host, menuItemSlot, consumeMethodSlot, componentIdStr, skipRightSide, RightNode, useComponent, path, useComponentFilters, }: MenuProps): JSX.Element;
43
- export declare function VersionRelatedDropdowns({ component, consumeMethods, className, host, }: {
44
- component: ComponentModel;
48
+ export declare type VersionRelatedDropdownsProps = {
49
+ componentId?: string;
45
50
  consumeMethods?: ConsumeMethodSlot;
51
+ componentFilters?: Filters;
52
+ useComponent?: UseComponentVersions;
46
53
  className?: string;
54
+ loading?: boolean;
47
55
  host: string;
48
- }): JSX.Element;
56
+ useLanes?: () => {
57
+ loading?: boolean;
58
+ lanesModel?: LanesModel;
59
+ };
60
+ dropdownOptions?: {
61
+ showVersionDetails?: boolean;
62
+ getActiveTabIndex?: GetActiveTabIndex;
63
+ };
64
+ };
65
+ export declare type UseComponentVersionsProps = {
66
+ skip?: boolean;
67
+ id?: string;
68
+ initialLoad?: boolean;
69
+ };
70
+ export declare type UseComponentVersionProps = {
71
+ skip?: boolean;
72
+ version?: string;
73
+ };
74
+ export declare type UseComponentVersions = (props?: UseComponentVersionsProps) => UseComponentVersionsResult;
75
+ export declare type UseComponentVersion = (props?: UseComponentVersionProps) => DropdownComponentVersion | undefined;
76
+ export declare type UseComponentVersionsResult = {
77
+ tags?: DropdownComponentVersion[];
78
+ snaps?: DropdownComponentVersion[];
79
+ id?: ComponentID;
80
+ packageName?: string;
81
+ latest?: string;
82
+ currentVersion?: string;
83
+ loading?: boolean;
84
+ };
85
+ export declare function defaultLoadVersions(host: string, componentId?: string, componentFilters?: Filters, useComponent?: UseComponentType, loadingFromProps?: boolean): UseComponentVersions;
86
+ export declare const defaultLoadCurrentVersion: (props: VersionRelatedDropdownsProps) => UseComponentVersion;
87
+ export declare function VersionRelatedDropdowns(props: VersionRelatedDropdownsProps): JSX.Element;
@@ -8,6 +8,8 @@ Object.defineProperty(exports, "__esModule", {
8
8
  });
9
9
  exports.ComponentMenu = ComponentMenu;
10
10
  exports.VersionRelatedDropdowns = VersionRelatedDropdowns;
11
+ exports.defaultLoadCurrentVersion = void 0;
12
+ exports.defaultLoadVersions = defaultLoadVersions;
11
13
  function _defineProperty2() {
12
14
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
15
  _defineProperty2 = function () {
@@ -15,58 +17,58 @@ function _defineProperty2() {
15
17
  };
16
18
  return data;
17
19
  }
18
- function _reactRouterDom() {
19
- const data = require("react-router-dom");
20
- _reactRouterDom = function () {
20
+ function _react() {
21
+ const data = _interopRequireWildcard(require("react"));
22
+ _react = function () {
21
23
  return data;
22
24
  };
23
25
  return data;
24
26
  }
25
- function _uiFoundationUi() {
26
- const data = require("@teambit/ui-foundation.ui.main-dropdown");
27
- _uiFoundationUi = function () {
27
+ function _reactRouterDom() {
28
+ const data = require("react-router-dom");
29
+ _reactRouterDom = function () {
28
30
  return data;
29
31
  };
30
32
  return data;
31
33
  }
32
- function _componentUi() {
33
- const data = require("@teambit/component.ui.version-dropdown");
34
- _componentUi = function () {
34
+ function _classnames() {
35
+ const data = _interopRequireDefault(require("classnames"));
36
+ _classnames = function () {
35
37
  return data;
36
38
  };
37
39
  return data;
38
40
  }
39
- function _uiFoundationUi2() {
40
- const data = require("@teambit/ui-foundation.ui.full-loader");
41
- _uiFoundationUi2 = function () {
41
+ function _lodash() {
42
+ const data = require("lodash");
43
+ _lodash = function () {
42
44
  return data;
43
45
  };
44
46
  return data;
45
47
  }
46
- function _baseReactNavigation() {
47
- const data = require("@teambit/base-react.navigation.link");
48
- _baseReactNavigation = function () {
48
+ function semver() {
49
+ const data = _interopRequireWildcard(require("semver"));
50
+ semver = function () {
49
51
  return data;
50
52
  };
51
53
  return data;
52
54
  }
53
- function _lodash() {
54
- const data = require("lodash");
55
- _lodash = function () {
55
+ function _componentUi() {
56
+ const data = require("@teambit/component.ui.version-dropdown");
57
+ _componentUi = function () {
56
58
  return data;
57
59
  };
58
60
  return data;
59
61
  }
60
- function _classnames() {
61
- const data = _interopRequireDefault(require("classnames"));
62
- _classnames = function () {
62
+ function _uiFoundationUi() {
63
+ const data = require("@teambit/ui-foundation.ui.main-dropdown");
64
+ _uiFoundationUi = function () {
63
65
  return data;
64
66
  };
65
67
  return data;
66
68
  }
67
- function _react() {
68
- const data = _interopRequireWildcard(require("react"));
69
- _react = function () {
69
+ function _baseReactNavigation() {
70
+ const data = require("@teambit/base-react.navigation.link");
71
+ _baseReactNavigation = function () {
70
72
  return data;
71
73
  };
72
74
  return data;
@@ -106,13 +108,6 @@ function _menuNav() {
106
108
  };
107
109
  return data;
108
110
  }
109
- function _menuModule() {
110
- const data = _interopRequireDefault(require("./menu.module.scss"));
111
- _menuModule = function () {
112
- return data;
113
- };
114
- return data;
115
- }
116
111
  function _useComponentFromLocation() {
117
112
  const data = require("../use-component-from-location");
118
113
  _useComponentFromLocation = function () {
@@ -127,6 +122,13 @@ function _() {
127
122
  };
128
123
  return data;
129
124
  }
125
+ function _menuModule() {
126
+ const data = _interopRequireDefault(require("./menu.module.scss"));
127
+ _menuModule = function () {
128
+ return data;
129
+ };
130
+ return data;
131
+ }
130
132
  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); }
131
133
  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; }
132
134
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -156,21 +158,18 @@ function ComponentMenu({
156
158
  const _componentIdStr = getComponentIdStr(componentIdStr);
157
159
  const componentId = _componentIdStr ? _().ComponentID.fromString(_componentIdStr) : undefined;
158
160
  const resolvedComponentIdStr = path || idFromLocation;
159
- const useComponentOptions = {
160
- logFilters: useComponentFilters === null || useComponentFilters === void 0 ? void 0 : useComponentFilters(),
161
- customUseComponent: useComponent
162
- };
163
- const {
164
- component
165
- } = (0, _useComponent().useComponent)(host, (componentId === null || componentId === void 0 ? void 0 : componentId.toString()) || idFromLocation, useComponentOptions);
166
161
  const mainMenuItems = (0, _react().useMemo)(() => (0, _lodash().groupBy)((0, _lodash().flatten)(menuItemSlot.values()), 'category'), [menuItemSlot]);
167
- if (!component) return /*#__PURE__*/_react().default.createElement(_uiFoundationUi2().FullLoader, null);
162
+ const componentFilters = (useComponentFilters === null || useComponentFilters === void 0 ? void 0 : useComponentFilters()) || {};
163
+ const useComponentVersions = defaultLoadVersions(host, (componentId === null || componentId === void 0 ? void 0 : componentId.toString()) || idFromLocation, componentFilters, useComponent);
168
164
  const RightSide = /*#__PURE__*/_react().default.createElement("div", {
169
165
  className: _menuModule().default.rightSide
170
166
  }, RightNode || /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, /*#__PURE__*/_react().default.createElement(VersionRelatedDropdowns, {
171
- component: component,
167
+ host: host,
172
168
  consumeMethods: consumeMethodSlot,
173
- host: host
169
+ componentId: (componentId === null || componentId === void 0 ? void 0 : componentId.toString()) || idFromLocation,
170
+ useComponent: useComponentVersions,
171
+ componentFilters: componentFilters
172
+ // loading={loading}
174
173
  }), /*#__PURE__*/_react().default.createElement(_uiFoundationUi().MainDropdown, {
175
174
  className: _menuModule().default.hideOnMobile,
176
175
  menuItems: mainMenuItems
@@ -189,69 +188,158 @@ function ComponentMenu({
189
188
  }, RightSide))
190
189
  }));
191
190
  }
192
- function VersionRelatedDropdowns({
193
- component,
194
- consumeMethods,
195
- className,
196
- host
197
- }) {
198
- var _lanesModel$viewedLan, _lanesModel$viewedLan2, _lanesModel$getLanesB;
191
+ function defaultLoadVersions(host, componentId, componentFilters = {}, useComponent, loadingFromProps) {
192
+ return _react().default.useCallback(_props => {
193
+ const {
194
+ skip,
195
+ initialLoad
196
+ } = _props || {};
197
+ const fetchOptions = {
198
+ logFilters: _objectSpread(_objectSpread({}, componentFilters), {}, {
199
+ log: _objectSpread(_objectSpread({}, componentFilters.log), {}, {
200
+ limit: initialLoad ? 3 : undefined
201
+ })
202
+ }),
203
+ skip: loadingFromProps || skip,
204
+ customUseComponent: useComponent
205
+ };
206
+ const {
207
+ component,
208
+ loading: loadingComponent,
209
+ componentLogs = {}
210
+ } = (0, _useComponent().useComponent)(host, componentId, fetchOptions);
211
+ const logs = componentLogs === null || componentLogs === void 0 ? void 0 : componentLogs.logs;
212
+ const loading = _react().default.useMemo(() => loadingComponent || loadingFromProps || componentLogs.loading, [loadingComponent, loadingFromProps, componentLogs.loading]);
213
+ const snaps = (0, _react().useMemo)(() => {
214
+ return (logs || []).filter(log => !log.tag).map(snap => _objectSpread(_objectSpread({}, snap), {}, {
215
+ version: snap.hash
216
+ }));
217
+ }, [logs]);
218
+ const tags = (0, _react().useMemo)(() => {
219
+ var _component$tags;
220
+ const tagLookup = new Map();
221
+ (logs || []).filter(log => log.tag).forEach(tag => {
222
+ tagLookup.set(tag === null || tag === void 0 ? void 0 : tag.tag, tag);
223
+ });
224
+ return (0, _lodash().compact)(((component === null || component === void 0 ? void 0 : (_component$tags = component.tags) === null || _component$tags === void 0 ? void 0 : _component$tags.toArray()) || []).reverse().map(tag => tagLookup.get(tag.version.version))).map(tag => _objectSpread(_objectSpread({}, tag), {}, {
225
+ version: tag.tag
226
+ }));
227
+ }, [logs]);
228
+ return {
229
+ loading,
230
+ id: component === null || component === void 0 ? void 0 : component.id,
231
+ packageName: component === null || component === void 0 ? void 0 : component.packageName,
232
+ latestVersion: component === null || component === void 0 ? void 0 : component.latest,
233
+ currentVersion: component === null || component === void 0 ? void 0 : component.version,
234
+ snaps,
235
+ tags,
236
+ buildStatus: component === null || component === void 0 ? void 0 : component.buildStatus
237
+ };
238
+ }, [componentId, loadingFromProps, componentFilters]);
239
+ }
240
+ const defaultLoadCurrentVersion = props => {
241
+ return _props => {
242
+ var _props$useComponent, _props$useComponent2;
243
+ const {
244
+ skip,
245
+ version: _version
246
+ } = _props || {};
247
+ const {
248
+ snaps,
249
+ tags,
250
+ currentVersion,
251
+ loading
252
+ } = (_props$useComponent = (_props$useComponent2 = props.useComponent) === null || _props$useComponent2 === void 0 ? void 0 : _props$useComponent2.call(props, {
253
+ skip,
254
+ id: props.componentId
255
+ })) !== null && _props$useComponent !== void 0 ? _props$useComponent : {};
256
+ const version = _version !== null && _version !== void 0 ? _version : currentVersion;
257
+ const isTag = _react().default.useMemo(() => semver().valid(version), [loading, version]);
258
+ if (isTag) {
259
+ return _react().default.useMemo(() => tags === null || tags === void 0 ? void 0 : tags.find(tag => tag.tag === version), [loading, tags === null || tags === void 0 ? void 0 : tags.length, version]);
260
+ }
261
+ return _react().default.useMemo(() => snaps === null || snaps === void 0 ? void 0 : snaps.find(snap => snap.version === version), [loading, snaps === null || snaps === void 0 ? void 0 : snaps.length, version]);
262
+ };
263
+ };
264
+ exports.defaultLoadCurrentVersion = defaultLoadCurrentVersion;
265
+ function VersionRelatedDropdowns(props) {
266
+ var _props$useLanes, _props$dropdownOption, _props$dropdownOption2, _props$useComponent3, _lanesModel$getLanesB, _lanesModel$viewedLan, _lanesModel$viewedLan2;
267
+ const updatedPropsWithDefaults = _objectSpread(_objectSpread({}, props), {}, {
268
+ useLanes: (_props$useLanes = props.useLanes) !== null && _props$useLanes !== void 0 ? _props$useLanes : _lanesHooks().useLanes,
269
+ dropdownOptions: _objectSpread(_objectSpread({}, props.dropdownOptions), {}, {
270
+ showVersionDetails: (_props$dropdownOption = props === null || props === void 0 ? void 0 : (_props$dropdownOption2 = props.dropdownOptions) === null || _props$dropdownOption2 === void 0 ? void 0 : _props$dropdownOption2.showVersionDetails) !== null && _props$dropdownOption !== void 0 ? _props$dropdownOption : true
271
+ })
272
+ });
273
+ const loadVersion = defaultLoadCurrentVersion(updatedPropsWithDefaults);
274
+ const {
275
+ useLanes,
276
+ consumeMethods,
277
+ className,
278
+ dropdownOptions,
279
+ host
280
+ } = updatedPropsWithDefaults;
281
+ const {
282
+ loading,
283
+ id,
284
+ tags,
285
+ snaps,
286
+ latest,
287
+ packageName,
288
+ currentVersion: _currentVersion
289
+ } = ((_props$useComponent3 = props.useComponent) === null || _props$useComponent3 === void 0 ? void 0 : _props$useComponent3.call(props, {
290
+ initialLoad: true
291
+ })) || {};
199
292
  const location = (0, _baseReactNavigation().useLocation)();
200
293
  const {
201
294
  lanesModel
202
- } = (0, _lanesHooks().useLanes)();
295
+ } = useLanes();
296
+ const lanes = id ? (lanesModel === null || lanesModel === void 0 ? void 0 : (_lanesModel$getLanesB = lanesModel.getLanesByComponentId(id)) === null || _lanesModel$getLanesB === void 0 ? void 0 : _lanesModel$getLanesB.filter(lane => !lane.id.isDefault())) || [] : [];
203
297
  const viewedLane = lanesModel !== null && lanesModel !== void 0 && (_lanesModel$viewedLan = lanesModel.viewedLane) !== null && _lanesModel$viewedLan !== void 0 && _lanesModel$viewedLan.id && !(lanesModel !== null && lanesModel !== void 0 && (_lanesModel$viewedLan2 = lanesModel.viewedLane) !== null && _lanesModel$viewedLan2 !== void 0 && _lanesModel$viewedLan2.id.isDefault()) ? lanesModel.viewedLane : undefined;
204
- const {
205
- logs
206
- } = component;
207
298
  const isWorkspace = host === 'teambit.workspace/workspace';
208
- const snaps = (0, _react().useMemo)(() => {
209
- return (logs || []).filter(log => !log.tag).map(snap => _objectSpread(_objectSpread({}, snap), {}, {
210
- version: snap.hash
211
- }));
212
- }, [logs]);
213
- const tags = (0, _react().useMemo)(() => {
214
- var _component$tags;
215
- const tagLookup = new Map();
216
- (logs || []).filter(log => log.tag).forEach(tag => {
217
- tagLookup.set(tag === null || tag === void 0 ? void 0 : tag.tag, tag);
218
- });
219
- return (0, _lodash().compact)((_component$tags = component.tags) === null || _component$tags === void 0 ? void 0 : _component$tags.toArray().reverse().map(tag => tagLookup.get(tag.version.version))).map(tag => _objectSpread(_objectSpread({}, tag), {}, {
220
- version: tag.tag
221
- }));
222
- }, [logs]);
223
- const isNew = snaps.length === 0 && tags.length === 0;
224
- const lanes = (lanesModel === null || lanesModel === void 0 ? void 0 : (_lanesModel$getLanesB = lanesModel.getLanesByComponentId(component.id)) === null || _lanesModel$getLanesB === void 0 ? void 0 : _lanesModel$getLanesB.filter(lane => !lane.id.isDefault())) || [];
299
+ const isNew = (tags === null || tags === void 0 ? void 0 : tags.length) === 0 && (snaps === null || snaps === void 0 ? void 0 : snaps.length) === 0;
225
300
  const localVersion = isWorkspace && !isNew && (!viewedLane || (lanesModel === null || lanesModel === void 0 ? void 0 : lanesModel.isViewingCurrentLane()));
226
- const currentVersion = isWorkspace && !isNew && !(location !== null && location !== void 0 && location.search.includes('version')) ? 'workspace' : component.version;
227
- const methods = useConsumeMethods(component, consumeMethods, viewedLane);
228
- return /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, consumeMethods && tags.length > 0 && /*#__PURE__*/_react().default.createElement(_uiFoundationUiUseBox().UseBoxDropdown, {
301
+ const currentVersion = isWorkspace && !isNew && !(location !== null && location !== void 0 && location.search.includes('version')) ? 'workspace' : _currentVersion !== null && _currentVersion !== void 0 ? _currentVersion : '';
302
+ const consumeMethodProps = _react().default.useMemo(() => {
303
+ return id ? {
304
+ id,
305
+ packageName: packageName !== null && packageName !== void 0 ? packageName : '',
306
+ latest,
307
+ options: {
308
+ viewedLane,
309
+ disableInstall: !packageName
310
+ }
311
+ } : undefined;
312
+ }, [id, packageName, latest, viewedLane]);
313
+ const methods = useConsumeMethods(consumeMethods, consumeMethodProps);
314
+ const hasMethods = (methods === null || methods === void 0 ? void 0 : methods.length) > 0;
315
+ return /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, consumeMethods && id && hasMethods && /*#__PURE__*/_react().default.createElement(_uiFoundationUiUseBox().UseBoxDropdown, {
229
316
  position: "bottom-end",
230
317
  className: (0, _classnames().default)(_menuModule().default.useBox, _menuModule().default.hideOnMobile),
231
318
  Menu: /*#__PURE__*/_react().default.createElement(_uiFoundationUiUseBox2().Menu, {
232
319
  methods: methods,
233
- componentName: component.id.name
320
+ componentName: id.name
234
321
  })
235
322
  }), /*#__PURE__*/_react().default.createElement(_componentUi().VersionDropdown, {
236
- tags: tags,
237
- snaps: snaps,
238
323
  lanes: lanes,
324
+ loading: loading,
325
+ useComponentVersions: props.useComponent,
326
+ hasMoreVersions: !isNew,
327
+ useCurrentVersionLog: loadVersion,
239
328
  localVersion: localVersion,
240
329
  currentVersion: currentVersion,
241
- latestVersion: component.latest,
330
+ latestVersion: latest,
242
331
  currentLane: viewedLane,
243
332
  className: className,
244
- menuClassName: _menuModule().default.componentVersionMenu
333
+ menuClassName: _menuModule().default.componentVersionMenu,
334
+ getActiveTabIndex: dropdownOptions === null || dropdownOptions === void 0 ? void 0 : dropdownOptions.getActiveTabIndex,
335
+ showVersionDetails: dropdownOptions === null || dropdownOptions === void 0 ? void 0 : dropdownOptions.showVersionDetails
245
336
  }));
246
337
  }
247
- function useConsumeMethods(componentModel, consumeMethods, currentLane) {
248
- // if (!consumeMethods || !componentModel) return [];
338
+ function useConsumeMethods(consumeMethods, consumePluginProps) {
249
339
  return (0, _react().useMemo)(() => (0, _lodash().flatten)(consumeMethods === null || consumeMethods === void 0 ? void 0 : consumeMethods.values()).map(method => {
250
- if (!componentModel) return undefined;
251
- return method === null || method === void 0 ? void 0 : method(componentModel, {
252
- currentLane
253
- });
254
- }).filter(x => !!x && x.Component && x.Title), [consumeMethods, componentModel, currentLane]);
340
+ if (!consumePluginProps) return undefined;
341
+ return method === null || method === void 0 ? void 0 : method(consumePluginProps);
342
+ }).filter(x => !!x && x.Component && x.Title), [consumeMethods, consumePluginProps]);
255
343
  }
256
344
 
257
345
  //# sourceMappingURL=menu.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["getComponentIdStr","componentIdStr","isFunction","ComponentMenu","navigationSlot","widgetSlot","className","host","menuItemSlot","consumeMethodSlot","skipRightSide","RightNode","useComponent","path","useComponentFilters","idFromLocation","useIdFromLocation","_componentIdStr","componentId","ComponentID","fromString","undefined","resolvedComponentIdStr","useComponentOptions","logFilters","customUseComponent","component","useComponentQuery","toString","mainMenuItems","useMemo","groupBy","flatten","values","RightSide","styles","rightSide","hideOnMobile","classnames","topBar","leftSide","VersionRelatedDropdowns","consumeMethods","location","useLocation","lanesModel","useLanes","viewedLane","id","isDefault","logs","isWorkspace","snaps","filter","log","tag","map","snap","version","hash","tags","tagLookup","Map","forEach","set","compact","toArray","reverse","get","isNew","length","lanes","getLanesByComponentId","lane","localVersion","isViewingCurrentLane","currentVersion","search","includes","methods","useConsumeMethods","useBox","name","latest","componentVersionMenu","componentModel","currentLane","method","x","Component","Title"],"sources":["menu.tsx"],"sourcesContent":["import { Routes, Route } from 'react-router-dom';\nimport { MainDropdown, MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { VersionDropdown } from '@teambit/component.ui.version-dropdown';\nimport { FullLoader } from '@teambit/ui-foundation.ui.full-loader';\nimport type { ConsumeMethod } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { useLocation } from '@teambit/base-react.navigation.link';\nimport { flatten, groupBy, compact, isFunction } from 'lodash';\nimport classnames from 'classnames';\nimport React, { useMemo } from 'react';\nimport { UseBoxDropdown } from '@teambit/ui-foundation.ui.use-box.dropdown';\nimport { useLanes } from '@teambit/lanes.hooks.use-lanes';\nimport { LaneModel } from '@teambit/lanes.ui.models.lanes-model';\nimport { Menu as ConsumeMethodsMenu } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { LegacyComponentLog } from '@teambit/legacy-component-log';\nimport type { ComponentModel } from '../component-model';\nimport { useComponent as useComponentQuery, UseComponentType } from '../use-component';\nimport { CollapsibleMenuNav } from './menu-nav';\nimport styles from './menu.module.scss';\nimport { OrderedNavigationSlot, ConsumeMethodSlot } from './nav-plugin';\nimport { useIdFromLocation } from '../use-component-from-location';\nimport { ComponentID } from '../..';\nimport { Filters } from '../use-component-query';\n\nexport type MenuProps = {\n className?: string;\n /**\n * skip the right side.\n */\n skipRightSide?: boolean;\n /**\n * custom render the right side\n */\n RightNode?: React.ReactNode;\n /**\n * slot for top bar menu nav items\n */\n navigationSlot: OrderedNavigationSlot;\n /**\n * right side menu item slot\n */\n widgetSlot: OrderedNavigationSlot;\n /**\n * workspace or scope\n */\n host: string;\n /**\n * main dropdown item slot\n */\n menuItemSlot: MenuItemSlot;\n\n consumeMethodSlot: ConsumeMethodSlot;\n\n componentIdStr?: string | (() => string | undefined);\n\n useComponent?: UseComponentType;\n\n path?: string;\n\n useComponentFilters?: () => Filters;\n};\nfunction getComponentIdStr(componentIdStr?: string | (() => string | undefined)): string | undefined {\n if (isFunction(componentIdStr)) return componentIdStr();\n return componentIdStr;\n}\n/**\n * top bar menu.\n */\nexport function ComponentMenu({\n navigationSlot,\n widgetSlot,\n className,\n host,\n menuItemSlot,\n consumeMethodSlot,\n componentIdStr,\n skipRightSide,\n RightNode,\n useComponent,\n path,\n useComponentFilters,\n}: MenuProps) {\n const idFromLocation = useIdFromLocation();\n const _componentIdStr = getComponentIdStr(componentIdStr);\n const componentId = _componentIdStr ? ComponentID.fromString(_componentIdStr) : undefined;\n const resolvedComponentIdStr = path || idFromLocation;\n\n const useComponentOptions = {\n logFilters: useComponentFilters?.(),\n customUseComponent: useComponent,\n };\n\n const { component } = useComponentQuery(host, componentId?.toString() || idFromLocation, useComponentOptions);\n const mainMenuItems = useMemo(() => groupBy(flatten(menuItemSlot.values()), 'category'), [menuItemSlot]);\n\n if (!component) return <FullLoader />;\n\n const RightSide = (\n <div className={styles.rightSide}>\n {RightNode || (\n <>\n <VersionRelatedDropdowns component={component} consumeMethods={consumeMethodSlot} host={host} />\n <MainDropdown className={styles.hideOnMobile} menuItems={mainMenuItems} />\n </>\n )}\n </div>\n );\n\n return (\n <Routes>\n <Route\n path={`${resolvedComponentIdStr}/*`}\n element={\n <div className={classnames(styles.topBar, className)}>\n <div className={styles.leftSide}>\n <CollapsibleMenuNav navigationSlot={navigationSlot} widgetSlot={widgetSlot} />\n </div>\n {!skipRightSide && <div className={styles.rightSide}>{RightSide}</div>}\n </div>\n }\n />\n </Routes>\n );\n}\n\nexport function VersionRelatedDropdowns({\n component,\n consumeMethods,\n className,\n host,\n}: {\n component: ComponentModel;\n consumeMethods?: ConsumeMethodSlot;\n className?: string;\n host: string;\n}) {\n const location = useLocation();\n const { lanesModel } = useLanes();\n const viewedLane =\n lanesModel?.viewedLane?.id && !lanesModel?.viewedLane?.id.isDefault() ? lanesModel.viewedLane : undefined;\n\n const { logs } = component;\n const isWorkspace = host === 'teambit.workspace/workspace';\n\n const snaps = useMemo(() => {\n return (logs || []).filter((log) => !log.tag).map((snap) => ({ ...snap, version: snap.hash }));\n }, [logs]);\n\n const tags = useMemo(() => {\n const tagLookup = new Map<string, LegacyComponentLog>();\n (logs || [])\n .filter((log) => log.tag)\n .forEach((tag) => {\n tagLookup.set(tag?.tag as string, tag);\n });\n return compact(\n component.tags\n ?.toArray()\n .reverse()\n .map((tag) => tagLookup.get(tag.version.version))\n ).map((tag) => ({ ...tag, version: tag.tag as string }));\n }, [logs]);\n\n const isNew = snaps.length === 0 && tags.length === 0;\n\n const lanes = lanesModel?.getLanesByComponentId(component.id)?.filter((lane) => !lane.id.isDefault()) || [];\n const localVersion = isWorkspace && !isNew && (!viewedLane || lanesModel?.isViewingCurrentLane());\n\n const currentVersion =\n isWorkspace && !isNew && !location?.search.includes('version') ? 'workspace' : component.version;\n\n const methods = useConsumeMethods(component, consumeMethods, viewedLane);\n return (\n <>\n {consumeMethods && tags.length > 0 && (\n <UseBoxDropdown\n position=\"bottom-end\"\n className={classnames(styles.useBox, styles.hideOnMobile)}\n Menu={<ConsumeMethodsMenu methods={methods} componentName={component.id.name} />}\n />\n )}\n <VersionDropdown\n tags={tags}\n snaps={snaps}\n lanes={lanes}\n localVersion={localVersion}\n currentVersion={currentVersion}\n latestVersion={component.latest}\n currentLane={viewedLane}\n className={className}\n menuClassName={styles.componentVersionMenu}\n />\n </>\n );\n}\n\nfunction useConsumeMethods(\n componentModel?: ComponentModel,\n consumeMethods?: ConsumeMethodSlot,\n currentLane?: LaneModel\n): ConsumeMethod[] {\n // if (!consumeMethods || !componentModel) return [];\n return useMemo(\n () =>\n flatten(consumeMethods?.values())\n .map((method) => {\n if (!componentModel) return undefined;\n return method?.(componentModel, { currentLane });\n })\n .filter((x) => !!x && x.Component && x.Title) as ConsumeMethod[],\n [consumeMethods, componentModel, currentLane]\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["getComponentIdStr","componentIdStr","isFunction","ComponentMenu","navigationSlot","widgetSlot","className","host","menuItemSlot","consumeMethodSlot","skipRightSide","RightNode","useComponent","path","useComponentFilters","idFromLocation","useIdFromLocation","_componentIdStr","componentId","ComponentID","fromString","undefined","resolvedComponentIdStr","mainMenuItems","useMemo","groupBy","flatten","values","componentFilters","useComponentVersions","defaultLoadVersions","toString","RightSide","styles","rightSide","hideOnMobile","classnames","topBar","leftSide","loadingFromProps","React","useCallback","_props","skip","initialLoad","fetchOptions","logFilters","log","limit","customUseComponent","component","loading","loadingComponent","componentLogs","useComponentQuery","logs","snaps","filter","tag","map","snap","version","hash","tags","tagLookup","Map","forEach","set","compact","toArray","reverse","get","id","packageName","latestVersion","latest","currentVersion","buildStatus","defaultLoadCurrentVersion","props","_version","isTag","semver","valid","find","length","VersionRelatedDropdowns","updatedPropsWithDefaults","useLanes","defaultUseLanes","dropdownOptions","showVersionDetails","loadVersion","consumeMethods","_currentVersion","location","useLocation","lanesModel","lanes","getLanesByComponentId","lane","isDefault","viewedLane","isWorkspace","isNew","localVersion","isViewingCurrentLane","search","includes","consumeMethodProps","options","disableInstall","methods","useConsumeMethods","hasMethods","useBox","name","componentVersionMenu","getActiveTabIndex","consumePluginProps","method","x","Component","Title"],"sources":["menu.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { Routes, Route } from 'react-router-dom';\nimport classnames from 'classnames';\nimport { compact, flatten, groupBy, isFunction } from 'lodash';\nimport * as semver from 'semver';\nimport { DropdownComponentVersion, GetActiveTabIndex, VersionDropdown } from '@teambit/component.ui.version-dropdown';\nimport { MainDropdown, MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';\nimport type { ConsumeMethod } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { useLocation } from '@teambit/base-react.navigation.link';\nimport { UseBoxDropdown } from '@teambit/ui-foundation.ui.use-box.dropdown';\nimport { useLanes as defaultUseLanes } from '@teambit/lanes.hooks.use-lanes';\nimport { LanesModel } from '@teambit/lanes.ui.models.lanes-model';\nimport { Menu as ConsumeMethodsMenu } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { LegacyComponentLog } from '@teambit/legacy-component-log';\nimport { useComponent as useComponentQuery, UseComponentType, Filters } from '../use-component';\nimport { CollapsibleMenuNav } from './menu-nav';\nimport { OrderedNavigationSlot, ConsumeMethodSlot, ConsumePluginProps } from './nav-plugin';\nimport { useIdFromLocation } from '../use-component-from-location';\nimport { ComponentID } from '../..';\nimport styles from './menu.module.scss';\n\nexport type MenuProps = {\n className?: string;\n /**\n * skip the right side.\n */\n skipRightSide?: boolean;\n /**\n * custom render the right side\n */\n RightNode?: React.ReactNode;\n /**\n * slot for top bar menu nav items\n */\n navigationSlot: OrderedNavigationSlot;\n /**\n * right side menu item slot\n */\n widgetSlot: OrderedNavigationSlot;\n /**\n * workspace or scope\n */\n host: string;\n /**\n * main dropdown item slot\n */\n menuItemSlot: MenuItemSlot;\n\n consumeMethodSlot: ConsumeMethodSlot;\n\n componentIdStr?: string | (() => string | undefined);\n\n useComponent?: UseComponentType;\n\n useComponentFilters?: () => Filters;\n\n useLanes?: () => {\n loading?: boolean;\n lanesModel?: LanesModel;\n };\n\n path?: string;\n};\nfunction getComponentIdStr(componentIdStr?: string | (() => string | undefined)): string | undefined {\n if (isFunction(componentIdStr)) return componentIdStr();\n return componentIdStr;\n}\n/**\n * top bar menu.\n */\nexport function ComponentMenu({\n navigationSlot,\n widgetSlot,\n className,\n host,\n menuItemSlot,\n consumeMethodSlot,\n componentIdStr,\n skipRightSide,\n RightNode,\n useComponent,\n path,\n useComponentFilters,\n}: MenuProps) {\n const idFromLocation = useIdFromLocation();\n const _componentIdStr = getComponentIdStr(componentIdStr);\n const componentId = _componentIdStr ? ComponentID.fromString(_componentIdStr) : undefined;\n const resolvedComponentIdStr = path || idFromLocation;\n const mainMenuItems = useMemo(() => groupBy(flatten(menuItemSlot.values()), 'category'), [menuItemSlot]);\n const componentFilters = useComponentFilters?.() || {};\n const useComponentVersions = defaultLoadVersions(\n host,\n componentId?.toString() || idFromLocation,\n componentFilters,\n useComponent\n );\n\n const RightSide = (\n <div className={styles.rightSide}>\n {RightNode || (\n <>\n <VersionRelatedDropdowns\n host={host}\n consumeMethods={consumeMethodSlot}\n componentId={componentId?.toString() || idFromLocation}\n useComponent={useComponentVersions}\n componentFilters={componentFilters}\n // loading={loading}\n />\n <MainDropdown className={styles.hideOnMobile} menuItems={mainMenuItems} />\n </>\n )}\n </div>\n );\n\n return (\n <Routes>\n <Route\n path={`${resolvedComponentIdStr}/*`}\n element={\n <div className={classnames(styles.topBar, className)}>\n <div className={styles.leftSide}>\n <CollapsibleMenuNav navigationSlot={navigationSlot} widgetSlot={widgetSlot} />\n </div>\n {!skipRightSide && <div className={styles.rightSide}>{RightSide}</div>}\n </div>\n }\n />\n </Routes>\n );\n}\n\nexport type VersionRelatedDropdownsProps = {\n componentId?: string;\n consumeMethods?: ConsumeMethodSlot;\n componentFilters?: Filters;\n useComponent?: UseComponentVersions;\n className?: string;\n loading?: boolean;\n host: string;\n useLanes?: () => {\n loading?: boolean;\n lanesModel?: LanesModel;\n };\n dropdownOptions?: {\n showVersionDetails?: boolean;\n getActiveTabIndex?: GetActiveTabIndex;\n };\n};\nexport type UseComponentVersionsProps = {\n skip?: boolean;\n id?: string;\n initialLoad?: boolean;\n};\nexport type UseComponentVersionProps = {\n skip?: boolean;\n version?: string;\n};\nexport type UseComponentVersions = (props?: UseComponentVersionsProps) => UseComponentVersionsResult;\nexport type UseComponentVersion = (props?: UseComponentVersionProps) => DropdownComponentVersion | undefined;\nexport type UseComponentVersionsResult = {\n tags?: DropdownComponentVersion[];\n snaps?: DropdownComponentVersion[];\n id?: ComponentID;\n packageName?: string;\n latest?: string;\n currentVersion?: string;\n loading?: boolean;\n};\n\nexport function defaultLoadVersions(\n host: string,\n componentId?: string,\n componentFilters: Filters = {},\n useComponent?: UseComponentType,\n loadingFromProps?: boolean\n): UseComponentVersions {\n return React.useCallback(\n (_props) => {\n const { skip, initialLoad } = _props || {};\n const fetchOptions = {\n logFilters: {\n ...componentFilters,\n log: {\n ...componentFilters.log,\n limit: initialLoad ? 3 : undefined,\n },\n },\n skip: loadingFromProps || skip,\n customUseComponent: useComponent,\n };\n const {\n component,\n loading: loadingComponent,\n componentLogs = {},\n } = useComponentQuery(host, componentId, fetchOptions);\n const logs = componentLogs?.logs;\n const loading = React.useMemo(\n () => loadingComponent || loadingFromProps || componentLogs.loading,\n [loadingComponent, loadingFromProps, componentLogs.loading]\n );\n\n const snaps = useMemo(() => {\n return (logs || []).filter((log) => !log.tag).map((snap) => ({ ...snap, version: snap.hash }));\n }, [logs]);\n\n const tags = useMemo(() => {\n const tagLookup = new Map<string, LegacyComponentLog>();\n (logs || [])\n .filter((log) => log.tag)\n .forEach((tag) => {\n tagLookup.set(tag?.tag as string, tag);\n });\n return compact(\n (component?.tags?.toArray() || []).reverse().map((tag) => tagLookup.get(tag.version.version))\n ).map((tag) => ({ ...tag, version: tag.tag as string }));\n }, [logs]);\n\n return {\n loading,\n id: component?.id,\n packageName: component?.packageName,\n latestVersion: component?.latest,\n currentVersion: component?.version,\n snaps,\n tags,\n buildStatus: component?.buildStatus,\n };\n },\n [componentId, loadingFromProps, componentFilters]\n );\n}\n\nexport const defaultLoadCurrentVersion: (props: VersionRelatedDropdownsProps) => UseComponentVersion = (props) => {\n return (_props) => {\n const { skip, version: _version } = _props || {};\n const { snaps, tags, currentVersion, loading } = props.useComponent?.({ skip, id: props.componentId }) ?? {};\n const version = _version ?? currentVersion;\n const isTag = React.useMemo(() => semver.valid(version), [loading, version]);\n if (isTag) {\n return React.useMemo(() => tags?.find((tag) => tag.tag === version), [loading, tags?.length, version]);\n }\n return React.useMemo(() => snaps?.find((snap) => snap.version === version), [loading, snaps?.length, version]);\n };\n};\n\nexport function VersionRelatedDropdowns(props: VersionRelatedDropdownsProps) {\n const updatedPropsWithDefaults = {\n ...props,\n useLanes: props.useLanes ?? defaultUseLanes,\n dropdownOptions: {\n ...props.dropdownOptions,\n showVersionDetails: props?.dropdownOptions?.showVersionDetails ?? true,\n },\n };\n\n const loadVersion = defaultLoadCurrentVersion(updatedPropsWithDefaults);\n\n const { useLanes, consumeMethods, className, dropdownOptions, host } = updatedPropsWithDefaults;\n const {\n loading,\n id,\n tags,\n snaps,\n latest,\n packageName,\n currentVersion: _currentVersion,\n } = props.useComponent?.({ initialLoad: true }) || {};\n const location = useLocation();\n const { lanesModel } = useLanes();\n const lanes = id ? lanesModel?.getLanesByComponentId(id)?.filter((lane) => !lane.id.isDefault()) || [] : [];\n const viewedLane =\n lanesModel?.viewedLane?.id && !lanesModel?.viewedLane?.id.isDefault() ? lanesModel.viewedLane : undefined;\n\n const isWorkspace = host === 'teambit.workspace/workspace';\n\n const isNew = tags?.length === 0 && snaps?.length === 0;\n\n const localVersion = isWorkspace && !isNew && (!viewedLane || lanesModel?.isViewingCurrentLane());\n\n const currentVersion =\n isWorkspace && !isNew && !location?.search.includes('version') ? 'workspace' : _currentVersion ?? '';\n\n const consumeMethodProps: ConsumePluginProps | undefined = React.useMemo(() => {\n return id\n ? {\n id,\n packageName: packageName ?? '',\n latest,\n options: { viewedLane, disableInstall: !packageName },\n }\n : undefined;\n }, [id, packageName, latest, viewedLane]);\n\n const methods = useConsumeMethods(consumeMethods, consumeMethodProps);\n const hasMethods = methods?.length > 0;\n\n return (\n <>\n {consumeMethods && id && hasMethods && (\n <UseBoxDropdown\n position=\"bottom-end\"\n className={classnames(styles.useBox, styles.hideOnMobile)}\n Menu={<ConsumeMethodsMenu methods={methods} componentName={id.name} />}\n />\n )}\n <VersionDropdown\n lanes={lanes}\n loading={loading}\n useComponentVersions={props.useComponent}\n hasMoreVersions={!isNew}\n useCurrentVersionLog={loadVersion}\n localVersion={localVersion}\n currentVersion={currentVersion}\n latestVersion={latest}\n currentLane={viewedLane}\n className={className}\n menuClassName={styles.componentVersionMenu}\n getActiveTabIndex={dropdownOptions?.getActiveTabIndex}\n showVersionDetails={dropdownOptions?.showVersionDetails}\n />\n </>\n );\n}\n\nfunction useConsumeMethods(\n consumeMethods?: ConsumeMethodSlot,\n consumePluginProps?: ConsumePluginProps\n): ConsumeMethod[] {\n return useMemo(\n () =>\n flatten(consumeMethods?.values())\n .map((method) => {\n if (!consumePluginProps) return undefined;\n return method?.(consumePluginProps);\n })\n .filter((x) => !!x && x.Component && x.Title) as ConsumeMethod[],\n [consumeMethods, consumePluginProps]\n );\n}\n"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { SlotRegistry } from '@teambit/harmony';
2
2
  import type { LinkProps } from '@teambit/base-react.navigation.link';
3
3
  import type { ConsumeMethod } from '@teambit/ui-foundation.ui.use-box.menu';
4
4
  import { LaneModel } from '@teambit/lanes.ui.models.lanes-model';
5
- import { ComponentModel } from '../../ui';
5
+ import { ComponentID, ComponentModel } from '../..';
6
6
  export declare type NavPluginProps = {
7
7
  displayName?: string;
8
8
  ignoreQueryParams?: boolean;
@@ -13,7 +13,16 @@ export declare type NavPlugin = {
13
13
  };
14
14
  export declare type OrderedNavigationSlot = SlotRegistry<NavPlugin>;
15
15
  export declare type ConsumePluginOptions = {
16
- currentLane?: LaneModel;
16
+ viewedLane?: LaneModel;
17
+ hide?: boolean;
18
+ disableInstall?: boolean;
17
19
  };
18
- export declare type ConsumePlugin = (componentModel: ComponentModel, options?: ConsumePluginOptions) => ConsumeMethod | undefined;
20
+ export declare type ConsumePluginProps = {
21
+ id: ComponentID;
22
+ packageName: string;
23
+ latest?: string;
24
+ componentModel?: ComponentModel;
25
+ options?: ConsumePluginOptions;
26
+ };
27
+ export declare type ConsumePlugin = (props: ConsumePluginProps) => ConsumeMethod | undefined;
19
28
  export declare type ConsumeMethodSlot = SlotRegistry<ConsumePlugin[]>;
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["nav-plugin.tsx"],"sourcesContent":["import { SlotRegistry } from '@teambit/harmony';\nimport type { LinkProps } from '@teambit/base-react.navigation.link';\nimport type { ConsumeMethod } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { LaneModel } from '@teambit/lanes.ui.models.lanes-model';\nimport { ComponentModel } from '../../ui';\n\nexport type NavPluginProps = {\n displayName?: string;\n ignoreQueryParams?: boolean;\n} & LinkProps;\n\nexport type NavPlugin = {\n props: NavPluginProps;\n order?: number;\n};\n\nexport type OrderedNavigationSlot = SlotRegistry<NavPlugin>;\nexport type ConsumePluginOptions = {\n currentLane?: LaneModel;\n};\n\nexport type ConsumePlugin = (\n componentModel: ComponentModel,\n options?: ConsumePluginOptions\n) => ConsumeMethod | undefined;\n\nexport type ConsumeMethodSlot = SlotRegistry<ConsumePlugin[]>;\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["nav-plugin.tsx"],"sourcesContent":["import { SlotRegistry } from '@teambit/harmony';\nimport type { LinkProps } from '@teambit/base-react.navigation.link';\nimport type { ConsumeMethod } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { LaneModel } from '@teambit/lanes.ui.models.lanes-model';\nimport { ComponentID, ComponentModel } from '../..';\n\nexport type NavPluginProps = {\n displayName?: string;\n ignoreQueryParams?: boolean;\n} & LinkProps;\n\nexport type NavPlugin = {\n props: NavPluginProps;\n order?: number;\n};\n\nexport type OrderedNavigationSlot = SlotRegistry<NavPlugin>;\nexport type ConsumePluginOptions = {\n viewedLane?: LaneModel;\n hide?: boolean;\n disableInstall?: boolean;\n};\n\nexport type ConsumePluginProps = {\n id: ComponentID;\n packageName: string;\n latest?: string;\n // @deprecated - pass id, packageName and latest instead via props\n componentModel?: ComponentModel;\n options?: ConsumePluginOptions;\n};\n\nexport type ConsumePlugin = (props: ConsumePluginProps) => ConsumeMethod | undefined;\n\nexport type ConsumeMethodSlot = SlotRegistry<ConsumePlugin[]>;\n"],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { ComponentLogsResult, Filters } from './use-component.model';
2
+ export declare function useComponentLogs(componentId: string, host: string, filters?: Filters, skipFromProps?: boolean): ComponentLogsResult;
3
+ export declare function useComponentLogsInit(componentId: string, host: string, filters?: Filters, skip?: boolean): {
4
+ logOffset: number | undefined;
5
+ variables: {
6
+ id: string;
7
+ extensionId: string;
8
+ logOffset: any;
9
+ logLimit: number | undefined;
10
+ logType: string | undefined;
11
+ logHead: string | undefined;
12
+ logSort: string | undefined;
13
+ logTakeHeadFromComponent: boolean | undefined;
14
+ };
15
+ skip: boolean | undefined;
16
+ };