@teambit/component 0.0.802 → 0.0.805

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.
@@ -26,6 +26,10 @@ import { GetComponentsOptions } from './get-component-opts';
26
26
 
27
27
  export type ComponentSearchResultSlot = SlotRegistry<ComponentResultPlugin[]>;
28
28
 
29
+ export type ComponentUIConfig = {
30
+ commandBar: boolean
31
+ };
32
+
29
33
  export type Server = {
30
34
  env: string;
31
35
  url: string;
@@ -246,10 +250,13 @@ export class ComponentUI {
246
250
  Slot.withType<ComponentPageSlot>(),
247
251
  Slot.withType<ComponentSearchResultSlot>(),
248
252
  ];
253
+ static defaultConfig: ComponentUIConfig = {
254
+ commandBar: true
255
+ }
249
256
 
250
257
  static async provider(
251
258
  [pubsub, commandBarUI, reactRouterUI]: [PubsubUI, CommandBarUI, ReactRouterUI],
252
- config,
259
+ config: ComponentUIConfig,
253
260
  [routeSlot, navSlot, consumeMethodSlot, widgetSlot, menuItemSlot, pageSlot, componentSearchResultSlot]: [
254
261
  RouteSlot,
255
262
  OrderedNavigationSlot,
@@ -278,7 +285,7 @@ export class ComponentUI {
278
285
  // @ts-ignore
279
286
  componentUI.registerSearchResultWidget({ key: 'deprecation', end: DeprecationIcon });
280
287
 
281
- if (componentUI.commandBarUI) {
288
+ if (componentUI.commandBarUI && config.commandBar) {
282
289
  componentUI.commandBarUI.addCommand(...componentUI.keyBindings);
283
290
  commandBarUI.addSearcher(componentUI.componentSearcher);
284
291
  }
@@ -7,6 +7,16 @@ import { ComponentID } from '@teambit/component-id';
7
7
  import { Component, InvalidComponent } from './component';
8
8
  import { State } from './state';
9
9
  import { Snap } from './snap';
10
+ export declare type ResolveAspectsOptions = {
11
+ /**
12
+ * Do not return results for the core aspects
13
+ */
14
+ excludeCore?: boolean;
15
+ /**
16
+ * Only return results for the provided list of ids
17
+ */
18
+ requestedOnly?: boolean;
19
+ };
10
20
  export interface ComponentFactory {
11
21
  /**
12
22
  * name of the component host.
@@ -59,7 +69,7 @@ export interface ComponentFactory {
59
69
  /**
60
70
  * Resolve dirs for aspects
61
71
  */
62
- resolveAspects: (runtimeName?: string, componentIds?: ComponentID[]) => Promise<AspectDefinition[]>;
72
+ resolveAspects: (runtimeName?: string, componentIds?: ComponentID[], opts?: ResolveAspectsOptions) => Promise<AspectDefinition[]>;
63
73
  /**
64
74
  * list all components in the host.
65
75
  */
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["component-factory.ts"],"sourcesContent":["import { BitId } from '@teambit/legacy-bit-id';\nimport LegacyGraph from '@teambit/legacy/dist/scope/graph/graph';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport type { ComponentLog } from '@teambit/legacy/dist/scope/models/model-component';\nimport type { AspectDefinition } from '@teambit/aspect-loader';\nimport { ComponentID } from '@teambit/component-id';\nimport { Component, InvalidComponent } from './component';\nimport { State } from './state';\nimport { Snap } from './snap';\n\nexport interface ComponentFactory {\n /**\n * name of the component host.\n */\n name: string;\n\n /**\n * path to the component host.\n */\n path: string;\n\n isLegacy: boolean;\n\n /**\n * resolve a `string` component ID to an instance of a ComponentID.\n */\n resolveComponentId(id: string | ComponentID | BitId): Promise<ComponentID>;\n\n /**\n * resolve multiple `string` component ID to an instance of a ComponentID.\n */\n resolveMultipleComponentIds(ids: (string | ComponentID | BitId)[]): Promise<ComponentID[]>;\n\n /**\n * returns a component by ID.\n */\n get(\n id: ComponentID | string,\n withState?: boolean,\n consumerComponent?: ConsumerComponent\n ): Promise<Component | undefined>;\n\n /**\n * returns many components by ids.\n */\n getMany(ids: ComponentID[]): Promise<Component[]>;\n\n /**\n * returns many components by their legacy representation.\n */\n getManyByLegacy(components: ConsumerComponent[]): Promise<Component[]>;\n\n /**\n * get a component from a remote without importing it\n */\n getRemoteComponent?: (id: ComponentID) => Promise<Component>;\n\n getLegacyGraph(ids?: ComponentID[]): Promise<LegacyGraph>;\n\n getLogs(id: ComponentID, shortHash?: boolean, startsFrom?: string): Promise<ComponentLog[]>;\n\n /**\n * returns a specific state of a component by hash or semver.\n */\n getState(id: ComponentID, snapId: string): Promise<State>;\n\n /**\n * returns a specific snap of a component by hash.\n */\n getSnap(id: ComponentID, snapId: string): Promise<Snap>;\n\n /**\n * load aspects.\n * returns the loaded aspect ids including the loaded versions.\n */\n loadAspects: (ids: string[], throwOnError?: boolean, neededFor?: string) => Promise<string[]>;\n\n /**\n * Resolve dirs for aspects\n */\n resolveAspects: (runtimeName?: string, componentIds?: ComponentID[]) => Promise<AspectDefinition[]>;\n\n /**\n * list all components in the host.\n */\n list(filter?: { offset: number; limit: number }): Promise<Component[]>;\n\n /**\n * list invalid components, such as components with missing files on the fs.\n */\n listInvalid(): Promise<InvalidComponent[]>;\n\n listIds(): Promise<ComponentID[]>;\n\n /**\n * get component-ids matching the given pattern. a pattern can have multiple patterns separated by a comma.\n * it uses multimatch (https://www.npmjs.com/package/multimatch) package for the matching algorithm, which supports\n * (among others) negate character \"!\" to exclude ids. See the package page for more supported characters.\n */\n idsByPattern(pattern: string, throwForNoMatch?: boolean): Promise<ComponentID[]>;\n\n hasId(componentId: ComponentID): Promise<boolean>;\n\n /**\n * Check if the host has the id, if no, search for the id in inner host (for example, workspace will search in the scope)\n * @param componentId\n */\n hasIdNested(componentId: ComponentID, includeCache?: boolean): Promise<boolean>;\n\n /**\n * whether a component is not the same as its head.\n * for a new component, it'll return \"true\" as it has no head yet.\n * this is relevant for component from the workspace, where it can be locally changed. on the scope it's always false\n */\n isModified(component: Component): Promise<boolean>;\n\n /**\n * write the component to the filesystem when applicable (no-op for scope).\n * to change the component-path, specify the \"rootPath\", which should be a relative path inside the workspace.\n */\n write(component: Component, rootPath?: string): Promise<void>;\n\n /**\n * determine whether host should be the prior one in case multiple hosts persist.\n */\n priority?: boolean;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["component-factory.ts"],"sourcesContent":["import { BitId } from '@teambit/legacy-bit-id';\nimport LegacyGraph from '@teambit/legacy/dist/scope/graph/graph';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport type { ComponentLog } from '@teambit/legacy/dist/scope/models/model-component';\nimport type { AspectDefinition } from '@teambit/aspect-loader';\nimport { ComponentID } from '@teambit/component-id';\nimport { Component, InvalidComponent } from './component';\nimport { State } from './state';\nimport { Snap } from './snap';\n\nexport type ResolveAspectsOptions = {\n /**\n * Do not return results for the core aspects\n */\n excludeCore?: boolean;\n /**\n * Only return results for the provided list of ids\n */\n requestedOnly?: boolean;\n};\n\nexport interface ComponentFactory {\n /**\n * name of the component host.\n */\n name: string;\n\n /**\n * path to the component host.\n */\n path: string;\n\n isLegacy: boolean;\n\n /**\n * resolve a `string` component ID to an instance of a ComponentID.\n */\n resolveComponentId(id: string | ComponentID | BitId): Promise<ComponentID>;\n\n /**\n * resolve multiple `string` component ID to an instance of a ComponentID.\n */\n resolveMultipleComponentIds(ids: (string | ComponentID | BitId)[]): Promise<ComponentID[]>;\n\n /**\n * returns a component by ID.\n */\n get(\n id: ComponentID | string,\n withState?: boolean,\n consumerComponent?: ConsumerComponent\n ): Promise<Component | undefined>;\n\n /**\n * returns many components by ids.\n */\n getMany(ids: ComponentID[]): Promise<Component[]>;\n\n /**\n * returns many components by their legacy representation.\n */\n getManyByLegacy(components: ConsumerComponent[]): Promise<Component[]>;\n\n /**\n * get a component from a remote without importing it\n */\n getRemoteComponent?: (id: ComponentID) => Promise<Component>;\n\n getLegacyGraph(ids?: ComponentID[]): Promise<LegacyGraph>;\n\n getLogs(id: ComponentID, shortHash?: boolean, startsFrom?: string): Promise<ComponentLog[]>;\n\n /**\n * returns a specific state of a component by hash or semver.\n */\n getState(id: ComponentID, snapId: string): Promise<State>;\n\n /**\n * returns a specific snap of a component by hash.\n */\n getSnap(id: ComponentID, snapId: string): Promise<Snap>;\n\n /**\n * load aspects.\n * returns the loaded aspect ids including the loaded versions.\n */\n loadAspects: (ids: string[], throwOnError?: boolean, neededFor?: string) => Promise<string[]>;\n\n /**\n * Resolve dirs for aspects\n */\n resolveAspects: (\n runtimeName?: string,\n componentIds?: ComponentID[],\n opts?: ResolveAspectsOptions\n ) => Promise<AspectDefinition[]>;\n\n /**\n * list all components in the host.\n */\n list(filter?: { offset: number; limit: number }): Promise<Component[]>;\n\n /**\n * list invalid components, such as components with missing files on the fs.\n */\n listInvalid(): Promise<InvalidComponent[]>;\n\n listIds(): Promise<ComponentID[]>;\n\n /**\n * get component-ids matching the given pattern. a pattern can have multiple patterns separated by a comma.\n * it uses multimatch (https://www.npmjs.com/package/multimatch) package for the matching algorithm, which supports\n * (among others) negate character \"!\" to exclude ids. See the package page for more supported characters.\n */\n idsByPattern(pattern: string, throwForNoMatch?: boolean): Promise<ComponentID[]>;\n\n hasId(componentId: ComponentID): Promise<boolean>;\n\n /**\n * Check if the host has the id, if no, search for the id in inner host (for example, workspace will search in the scope)\n * @param componentId\n */\n hasIdNested(componentId: ComponentID, includeCache?: boolean): Promise<boolean>;\n\n /**\n * whether a component is not the same as its head.\n * for a new component, it'll return \"true\" as it has no head yet.\n * this is relevant for component from the workspace, where it can be locally changed. on the scope it's always false\n */\n isModified(component: Component): Promise<boolean>;\n\n /**\n * write the component to the filesystem when applicable (no-op for scope).\n * to change the component-path, specify the \"rootPath\", which should be a relative path inside the workspace.\n */\n write(component: Component, rootPath?: string): Promise<void>;\n\n /**\n * determine whether host should be the prior one in case multiple hosts persist.\n */\n priority?: boolean;\n}\n"],"mappings":""}
@@ -13,6 +13,9 @@ import { ComponentResultPlugin } from './ui/component-searcher';
13
13
  import { ConsumeMethodSlot, ConsumePlugin, NavPlugin, OrderedNavigationSlot } from './ui/menu';
14
14
  import { GetComponentsOptions } from './get-component-opts';
15
15
  export declare type ComponentSearchResultSlot = SlotRegistry<ComponentResultPlugin[]>;
16
+ export declare type ComponentUIConfig = {
17
+ commandBar: boolean;
18
+ };
16
19
  export declare type Server = {
17
20
  env: string;
18
21
  url: string;
@@ -73,8 +76,9 @@ export declare class ComponentUI {
73
76
  updateComponents: (components: ComponentModel[]) => void;
74
77
  static dependencies: import("@teambit/harmony").Aspect[];
75
78
  static runtime: import("@teambit/harmony").RuntimeDefinition;
76
- static slots: (((registerFn: () => string) => SlotRegistry<RouteProps>) | ((registerFn: () => string) => SlotRegistry<MenuItemSlot>) | ((registerFn: () => string) => SlotRegistry<NavigationSlot>) | ((registerFn: () => string) => SlotRegistry<NavPlugin>) | ((registerFn: () => string) => SlotRegistry<ConsumeMethodSlot>) | ((registerFn: () => string) => SlotRegistry<ComponentPageSlot>) | ((registerFn: () => string) => SlotRegistry<ComponentSearchResultSlot>))[];
77
- static provider([pubsub, commandBarUI, reactRouterUI]: [PubsubUI, CommandBarUI, ReactRouterUI], config: any, [routeSlot, navSlot, consumeMethodSlot, widgetSlot, menuItemSlot, pageSlot, componentSearchResultSlot]: [
79
+ static slots: (((registerFn: () => string) => SlotRegistry<RouteProps>) | ((registerFn: () => string) => SlotRegistry<NavigationSlot>) | ((registerFn: () => string) => SlotRegistry<MenuItemSlot>) | ((registerFn: () => string) => SlotRegistry<NavPlugin>) | ((registerFn: () => string) => SlotRegistry<ConsumeMethodSlot>) | ((registerFn: () => string) => SlotRegistry<ComponentPageSlot>) | ((registerFn: () => string) => SlotRegistry<ComponentSearchResultSlot>))[];
80
+ static defaultConfig: ComponentUIConfig;
81
+ static provider([pubsub, commandBarUI, reactRouterUI]: [PubsubUI, CommandBarUI, ReactRouterUI], config: ComponentUIConfig, [routeSlot, navSlot, consumeMethodSlot, widgetSlot, menuItemSlot, pageSlot, componentSearchResultSlot]: [
78
82
  RouteSlot,
79
83
  OrderedNavigationSlot,
80
84
  ConsumeMethodSlot,
@@ -402,7 +402,7 @@ class ComponentUI {
402
402
  end: _componentUi().DeprecationIcon
403
403
  });
404
404
 
405
- if (componentUI.commandBarUI) {
405
+ if (componentUI.commandBarUI && config.commandBar) {
406
406
  componentUI.commandBarUI.addCommand(...componentUI.keyBindings);
407
407
  commandBarUI.addSearcher(componentUI.componentSearcher);
408
408
  }
@@ -420,6 +420,9 @@ exports.ComponentUI = ComponentUI;
420
420
  (0, _defineProperty2().default)(ComponentUI, "dependencies", [_pubsub().default, _commandBar().default, _reactRouter().default]);
421
421
  (0, _defineProperty2().default)(ComponentUI, "runtime", _ui().UIRuntime);
422
422
  (0, _defineProperty2().default)(ComponentUI, "slots", [_harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType()]);
423
+ (0, _defineProperty2().default)(ComponentUI, "defaultConfig", {
424
+ commandBar: true
425
+ });
423
426
  var _default = ComponentUI;
424
427
  exports.default = _default;
425
428
 
@@ -1 +1 @@
1
- {"version":3,"names":["ComponentUI","constructor","pubsub","routeSlot","navSlot","consumeMethodSlot","widgetSlot","menuItemSlot","pageItemSlot","componentSearchResultSlot","commandBarUI","reactRouterUi","packageName","activeComponent","version","id","versionString","copy","action","toString","displayName","keybinding","copyNpmId","category","title","keyChar","handler","run","comp","options","latest","Title","width","Component","ignoreVersion","name","currentLane","order","menuItems","register","items","totalPlugins","flatten","values","componentSearcher","updatePlugins","components","update","ComponentSearcher","navigate","navigateTo","isBrowser","registerPubSub","sub","PreviewAspect","be","type","ClickInsideAnIframeEvent","TYPE","event","MouseEvent","view","window","bubbles","cancelable","body","document","dispatchEvent","getComponentUI","host","handleComponentChange","useComponent","componentId","getMenu","opts","registerRoute","routes","registerNavigation","nav","props","registerConsumeMethod","consumeMethods","registerWidget","widget","provider","reactRouterUI","config","pageSlot","componentUI","aspectSection","AspectSection","registerSearchResultWidget","key","end","DeprecationIcon","addCommand","keyBindings","addSearcher","registerMenuItem","route","navigationLink","bitMethod","PubsubAspect","CommandBarAspect","ReactRouterAspect","UIRuntime","Slot","withType","ComponentAspect","addRuntime"],"sources":["component.ui.runtime.tsx"],"sourcesContent":["import React from 'react';\nimport flatten from 'lodash.flatten';\nimport copy from 'copy-to-clipboard';\nimport type { RouteProps } from 'react-router-dom';\n\nimport type { LinkProps } from '@teambit/base-react.navigation.link';\nimport CommandBarAspect, { CommandBarUI, CommandEntry } from '@teambit/command-bar';\nimport { DeprecationIcon } from '@teambit/component.ui.deprecation-icon';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport PreviewAspect, { ClickInsideAnIframeEvent } from '@teambit/preview';\nimport PubsubAspect, { BitBaseEvent, PubsubUI } from '@teambit/pubsub';\nimport ReactRouterAspect, { ReactRouterUI } from '@teambit/react-router';\nimport { UIRuntime } from '@teambit/ui';\nimport { isBrowser } from '@teambit/ui-foundation.ui.is-browser';\nimport { MenuItem, MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { NavigationSlot, RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { Import } from '@teambit/ui-foundation.ui.use-box.menu';\n\nimport { AspectSection } from './aspect.section';\nimport { ComponentAspect } from './component.aspect';\nimport { ComponentModel } from './ui';\nimport { Component, ComponentPageElement, ComponentPageSlot } from './ui/component';\nimport { ComponentResultPlugin, ComponentSearcher } from './ui/component-searcher';\nimport { ConsumeMethodSlot, ConsumePlugin, ComponentMenu, NavPlugin, OrderedNavigationSlot } from './ui/menu';\nimport { GetComponentsOptions } from './get-component-opts';\n\nexport type ComponentSearchResultSlot = SlotRegistry<ComponentResultPlugin[]>;\n\nexport type Server = {\n env: string;\n url: string;\n};\n\nexport type ComponentMeta = {\n id: string;\n};\n\nexport class ComponentUI {\n readonly routePath = `/*`;\n private componentSearcher: ComponentSearcher;\n\n constructor(\n /**\n * Pubsub aspects\n */\n private pubsub: PubsubUI,\n\n private routeSlot: RouteSlot,\n\n private navSlot: OrderedNavigationSlot,\n\n private consumeMethodSlot: ConsumeMethodSlot,\n\n /**\n * slot for registering a new widget to the menu.\n */\n private widgetSlot: OrderedNavigationSlot,\n\n private menuItemSlot: MenuItemSlot,\n\n private pageItemSlot: ComponentPageSlot,\n\n private componentSearchResultSlot: ComponentSearchResultSlot,\n\n private commandBarUI: CommandBarUI,\n\n reactRouterUi: ReactRouterUI\n ) {\n this.componentSearcher = new ComponentSearcher({ navigate: reactRouterUi.navigateTo });\n if (isBrowser) this.registerPubSub();\n }\n\n /**\n * the current visible component\n */\n private activeComponent?: ComponentModel;\n\n private copyNpmId = () => {\n const packageName = this.activeComponent?.packageName;\n if (packageName) {\n const version = this.activeComponent?.id.version;\n const versionString = version ? `@${version}` : '';\n copy(`${packageName}${versionString}`);\n }\n };\n\n /**\n * key bindings used by component aspect\n */\n private keyBindings: CommandEntry[] = [\n {\n id: 'component.copyBitId', // TODO - extract to a component!\n action: () => {\n copy(this.activeComponent?.id.toString() || '');\n },\n displayName: 'Copy component ID',\n keybinding: '.',\n },\n {\n id: 'component.copyNpmId', // TODO - extract to a component!\n action: this.copyNpmId,\n displayName: 'Copy component package name',\n keybinding: ',',\n },\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 category: 'workflow',\n title: 'Copy component ID',\n keyChar: '.',\n handler: () => this.commandBarUI?.run('component.copyBitId'),\n },\n {\n category: 'workflow',\n title: 'Copy component package name',\n keyChar: ',',\n handler: () => this.commandBarUI?.run('component.copyNpmId'),\n },\n ];\n\n private bitMethod: ConsumePlugin = (comp, options) => {\n const version = comp.version === comp.latest ? '' : `@${comp.version}`;\n return {\n Title: <img style={{ width: '20px' }} src=\"https://static.bit.dev/brands/bit-logo-text.svg\" />,\n Component: (\n <Import\n componentId={`${comp.id.toString({ ignoreVersion: true })}${version}`}\n packageName={`${comp.packageName}${version}`}\n componentName={comp.id.name}\n showInstallMethod={!options?.currentLane}\n />\n ),\n order: 0,\n };\n };\n\n registerPubSub() {\n this.pubsub.sub(PreviewAspect.id, (be: BitBaseEvent<any>) => {\n if (be.type === ClickInsideAnIframeEvent.TYPE) {\n const event = new MouseEvent('mousedown', {\n view: window,\n bubbles: true,\n cancelable: true,\n });\n\n const body = document.body;\n body?.dispatchEvent(event);\n }\n });\n }\n\n handleComponentChange = (activeComponent?: ComponentModel) => {\n this.activeComponent = activeComponent;\n };\n\n getComponentUI(host: string, options: GetComponentsOptions = {}) {\n return (\n <Component\n routeSlot={this.routeSlot}\n containerSlot={this.pageItemSlot}\n onComponentChange={this.handleComponentChange}\n host={host}\n useComponent={options.useComponent}\n componentIdStr={options.componentId}\n />\n );\n }\n\n getMenu(host: string, opts: GetComponentsOptions = {}) {\n return (\n <ComponentMenu\n navigationSlot={this.navSlot}\n consumeMethodSlot={this.consumeMethodSlot}\n widgetSlot={this.widgetSlot}\n host={host}\n menuItemSlot={this.menuItemSlot}\n useComponent={opts.useComponent}\n componentIdStr={opts.componentId}\n />\n );\n }\n\n registerRoute(routes: RouteProps[] | RouteProps) {\n this.routeSlot.register(routes);\n return this;\n }\n\n registerNavigation(nav: LinkProps, order?: number) {\n this.navSlot.register({\n props: nav,\n order,\n });\n }\n\n registerConsumeMethod(...consumeMethods: ConsumePlugin[]) {\n this.consumeMethodSlot.register(consumeMethods);\n }\n\n registerWidget(widget: LinkProps, order?: number) {\n this.widgetSlot.register({ props: widget, order });\n }\n\n registerMenuItem = (menuItems: MenuItem[]) => {\n this.menuItemSlot.register(menuItems);\n };\n\n registerPageItem = (...items: ComponentPageElement[]) => {\n this.pageItemSlot.register(items);\n };\n\n /** register widgets to the components listed in the command bar */\n registerSearchResultWidget = (...items: ComponentResultPlugin[]) => {\n this.componentSearchResultSlot.register(items);\n const totalPlugins = flatten(this.componentSearchResultSlot.values());\n\n this.componentSearcher.updatePlugins(totalPlugins);\n };\n\n updateComponents = (components: ComponentModel[]) => {\n this.componentSearcher.update(components || []);\n };\n\n static dependencies = [PubsubAspect, CommandBarAspect, ReactRouterAspect];\n\n static runtime = UIRuntime;\n\n static slots = [\n Slot.withType<RouteProps>(),\n Slot.withType<NavPlugin>(),\n Slot.withType<NavigationSlot>(),\n Slot.withType<ConsumeMethodSlot>(),\n Slot.withType<MenuItemSlot>(),\n Slot.withType<ComponentPageSlot>(),\n Slot.withType<ComponentSearchResultSlot>(),\n ];\n\n static async provider(\n [pubsub, commandBarUI, reactRouterUI]: [PubsubUI, CommandBarUI, ReactRouterUI],\n config,\n [routeSlot, navSlot, consumeMethodSlot, widgetSlot, menuItemSlot, pageSlot, componentSearchResultSlot]: [\n RouteSlot,\n OrderedNavigationSlot,\n ConsumeMethodSlot,\n OrderedNavigationSlot,\n MenuItemSlot,\n ComponentPageSlot,\n ComponentSearchResultSlot\n ]\n ) {\n // TODO: refactor ComponentHost to a separate extension (including sidebar, host, graphql, etc.)\n // TODO: add contextual hook for ComponentHost @uri/@oded\n const componentUI = new ComponentUI(\n pubsub,\n routeSlot,\n navSlot,\n consumeMethodSlot,\n widgetSlot,\n menuItemSlot,\n pageSlot,\n componentSearchResultSlot,\n commandBarUI,\n reactRouterUI\n );\n const aspectSection = new AspectSection();\n // @ts-ignore\n componentUI.registerSearchResultWidget({ key: 'deprecation', end: DeprecationIcon });\n\n if (componentUI.commandBarUI) {\n componentUI.commandBarUI.addCommand(...componentUI.keyBindings);\n commandBarUI.addSearcher(componentUI.componentSearcher);\n }\n\n componentUI.registerMenuItem(componentUI.menuItems);\n componentUI.registerRoute(aspectSection.route);\n componentUI.registerWidget(aspectSection.navigationLink, aspectSection.order);\n componentUI.registerConsumeMethod(componentUI.bitMethod);\n return componentUI;\n }\n}\n\nexport default ComponentUI;\n\nComponentAspect.addRuntime(ComponentUI);\n"],"mappings":"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"}
1
+ {"version":3,"names":["ComponentUI","constructor","pubsub","routeSlot","navSlot","consumeMethodSlot","widgetSlot","menuItemSlot","pageItemSlot","componentSearchResultSlot","commandBarUI","reactRouterUi","packageName","activeComponent","version","id","versionString","copy","action","toString","displayName","keybinding","copyNpmId","category","title","keyChar","handler","run","comp","options","latest","Title","width","Component","ignoreVersion","name","currentLane","order","menuItems","register","items","totalPlugins","flatten","values","componentSearcher","updatePlugins","components","update","ComponentSearcher","navigate","navigateTo","isBrowser","registerPubSub","sub","PreviewAspect","be","type","ClickInsideAnIframeEvent","TYPE","event","MouseEvent","view","window","bubbles","cancelable","body","document","dispatchEvent","getComponentUI","host","handleComponentChange","useComponent","componentId","getMenu","opts","registerRoute","routes","registerNavigation","nav","props","registerConsumeMethod","consumeMethods","registerWidget","widget","provider","reactRouterUI","config","pageSlot","componentUI","aspectSection","AspectSection","registerSearchResultWidget","key","end","DeprecationIcon","commandBar","addCommand","keyBindings","addSearcher","registerMenuItem","route","navigationLink","bitMethod","PubsubAspect","CommandBarAspect","ReactRouterAspect","UIRuntime","Slot","withType","ComponentAspect","addRuntime"],"sources":["component.ui.runtime.tsx"],"sourcesContent":["import React from 'react';\nimport flatten from 'lodash.flatten';\nimport copy from 'copy-to-clipboard';\nimport type { RouteProps } from 'react-router-dom';\n\nimport type { LinkProps } from '@teambit/base-react.navigation.link';\nimport CommandBarAspect, { CommandBarUI, CommandEntry } from '@teambit/command-bar';\nimport { DeprecationIcon } from '@teambit/component.ui.deprecation-icon';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport PreviewAspect, { ClickInsideAnIframeEvent } from '@teambit/preview';\nimport PubsubAspect, { BitBaseEvent, PubsubUI } from '@teambit/pubsub';\nimport ReactRouterAspect, { ReactRouterUI } from '@teambit/react-router';\nimport { UIRuntime } from '@teambit/ui';\nimport { isBrowser } from '@teambit/ui-foundation.ui.is-browser';\nimport { MenuItem, MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { NavigationSlot, RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { Import } from '@teambit/ui-foundation.ui.use-box.menu';\n\nimport { AspectSection } from './aspect.section';\nimport { ComponentAspect } from './component.aspect';\nimport { ComponentModel } from './ui';\nimport { Component, ComponentPageElement, ComponentPageSlot } from './ui/component';\nimport { ComponentResultPlugin, ComponentSearcher } from './ui/component-searcher';\nimport { ConsumeMethodSlot, ConsumePlugin, ComponentMenu, NavPlugin, OrderedNavigationSlot } from './ui/menu';\nimport { GetComponentsOptions } from './get-component-opts';\n\nexport type ComponentSearchResultSlot = SlotRegistry<ComponentResultPlugin[]>;\n\nexport type ComponentUIConfig = {\n commandBar: boolean\n};\n\nexport type Server = {\n env: string;\n url: string;\n};\n\nexport type ComponentMeta = {\n id: string;\n};\n\nexport class ComponentUI {\n readonly routePath = `/*`;\n private componentSearcher: ComponentSearcher;\n\n constructor(\n /**\n * Pubsub aspects\n */\n private pubsub: PubsubUI,\n\n private routeSlot: RouteSlot,\n\n private navSlot: OrderedNavigationSlot,\n\n private consumeMethodSlot: ConsumeMethodSlot,\n\n /**\n * slot for registering a new widget to the menu.\n */\n private widgetSlot: OrderedNavigationSlot,\n\n private menuItemSlot: MenuItemSlot,\n\n private pageItemSlot: ComponentPageSlot,\n\n private componentSearchResultSlot: ComponentSearchResultSlot,\n\n private commandBarUI: CommandBarUI,\n\n reactRouterUi: ReactRouterUI\n ) {\n this.componentSearcher = new ComponentSearcher({ navigate: reactRouterUi.navigateTo });\n if (isBrowser) this.registerPubSub();\n }\n\n /**\n * the current visible component\n */\n private activeComponent?: ComponentModel;\n\n private copyNpmId = () => {\n const packageName = this.activeComponent?.packageName;\n if (packageName) {\n const version = this.activeComponent?.id.version;\n const versionString = version ? `@${version}` : '';\n copy(`${packageName}${versionString}`);\n }\n };\n\n /**\n * key bindings used by component aspect\n */\n private keyBindings: CommandEntry[] = [\n {\n id: 'component.copyBitId', // TODO - extract to a component!\n action: () => {\n copy(this.activeComponent?.id.toString() || '');\n },\n displayName: 'Copy component ID',\n keybinding: '.',\n },\n {\n id: 'component.copyNpmId', // TODO - extract to a component!\n action: this.copyNpmId,\n displayName: 'Copy component package name',\n keybinding: ',',\n },\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 category: 'workflow',\n title: 'Copy component ID',\n keyChar: '.',\n handler: () => this.commandBarUI?.run('component.copyBitId'),\n },\n {\n category: 'workflow',\n title: 'Copy component package name',\n keyChar: ',',\n handler: () => this.commandBarUI?.run('component.copyNpmId'),\n },\n ];\n\n private bitMethod: ConsumePlugin = (comp, options) => {\n const version = comp.version === comp.latest ? '' : `@${comp.version}`;\n return {\n Title: <img style={{ width: '20px' }} src=\"https://static.bit.dev/brands/bit-logo-text.svg\" />,\n Component: (\n <Import\n componentId={`${comp.id.toString({ ignoreVersion: true })}${version}`}\n packageName={`${comp.packageName}${version}`}\n componentName={comp.id.name}\n showInstallMethod={!options?.currentLane}\n />\n ),\n order: 0,\n };\n };\n\n registerPubSub() {\n this.pubsub.sub(PreviewAspect.id, (be: BitBaseEvent<any>) => {\n if (be.type === ClickInsideAnIframeEvent.TYPE) {\n const event = new MouseEvent('mousedown', {\n view: window,\n bubbles: true,\n cancelable: true,\n });\n\n const body = document.body;\n body?.dispatchEvent(event);\n }\n });\n }\n\n handleComponentChange = (activeComponent?: ComponentModel) => {\n this.activeComponent = activeComponent;\n };\n\n getComponentUI(host: string, options: GetComponentsOptions = {}) {\n return (\n <Component\n routeSlot={this.routeSlot}\n containerSlot={this.pageItemSlot}\n onComponentChange={this.handleComponentChange}\n host={host}\n useComponent={options.useComponent}\n componentIdStr={options.componentId}\n />\n );\n }\n\n getMenu(host: string, opts: GetComponentsOptions = {}) {\n return (\n <ComponentMenu\n navigationSlot={this.navSlot}\n consumeMethodSlot={this.consumeMethodSlot}\n widgetSlot={this.widgetSlot}\n host={host}\n menuItemSlot={this.menuItemSlot}\n useComponent={opts.useComponent}\n componentIdStr={opts.componentId}\n />\n );\n }\n\n registerRoute(routes: RouteProps[] | RouteProps) {\n this.routeSlot.register(routes);\n return this;\n }\n\n registerNavigation(nav: LinkProps, order?: number) {\n this.navSlot.register({\n props: nav,\n order,\n });\n }\n\n registerConsumeMethod(...consumeMethods: ConsumePlugin[]) {\n this.consumeMethodSlot.register(consumeMethods);\n }\n\n registerWidget(widget: LinkProps, order?: number) {\n this.widgetSlot.register({ props: widget, order });\n }\n\n registerMenuItem = (menuItems: MenuItem[]) => {\n this.menuItemSlot.register(menuItems);\n };\n\n registerPageItem = (...items: ComponentPageElement[]) => {\n this.pageItemSlot.register(items);\n };\n\n /** register widgets to the components listed in the command bar */\n registerSearchResultWidget = (...items: ComponentResultPlugin[]) => {\n this.componentSearchResultSlot.register(items);\n const totalPlugins = flatten(this.componentSearchResultSlot.values());\n\n this.componentSearcher.updatePlugins(totalPlugins);\n };\n\n updateComponents = (components: ComponentModel[]) => {\n this.componentSearcher.update(components || []);\n };\n\n static dependencies = [PubsubAspect, CommandBarAspect, ReactRouterAspect];\n\n static runtime = UIRuntime;\n\n static slots = [\n Slot.withType<RouteProps>(),\n Slot.withType<NavPlugin>(),\n Slot.withType<NavigationSlot>(),\n Slot.withType<ConsumeMethodSlot>(),\n Slot.withType<MenuItemSlot>(),\n Slot.withType<ComponentPageSlot>(),\n Slot.withType<ComponentSearchResultSlot>(),\n ];\n static defaultConfig: ComponentUIConfig = {\n commandBar: true\n }\n\n static async provider(\n [pubsub, commandBarUI, reactRouterUI]: [PubsubUI, CommandBarUI, ReactRouterUI],\n config: ComponentUIConfig,\n [routeSlot, navSlot, consumeMethodSlot, widgetSlot, menuItemSlot, pageSlot, componentSearchResultSlot]: [\n RouteSlot,\n OrderedNavigationSlot,\n ConsumeMethodSlot,\n OrderedNavigationSlot,\n MenuItemSlot,\n ComponentPageSlot,\n ComponentSearchResultSlot\n ]\n ) {\n // TODO: refactor ComponentHost to a separate extension (including sidebar, host, graphql, etc.)\n // TODO: add contextual hook for ComponentHost @uri/@oded\n const componentUI = new ComponentUI(\n pubsub,\n routeSlot,\n navSlot,\n consumeMethodSlot,\n widgetSlot,\n menuItemSlot,\n pageSlot,\n componentSearchResultSlot,\n commandBarUI,\n reactRouterUI\n );\n const aspectSection = new AspectSection();\n // @ts-ignore\n componentUI.registerSearchResultWidget({ key: 'deprecation', end: DeprecationIcon });\n\n if (componentUI.commandBarUI && config.commandBar) {\n componentUI.commandBarUI.addCommand(...componentUI.keyBindings);\n commandBarUI.addSearcher(componentUI.componentSearcher);\n }\n\n componentUI.registerMenuItem(componentUI.menuItems);\n componentUI.registerRoute(aspectSection.route);\n componentUI.registerWidget(aspectSection.navigationLink, aspectSection.order);\n componentUI.registerConsumeMethod(componentUI.bitMethod);\n return componentUI;\n }\n}\n\nexport default ComponentUI;\n\nComponentAspect.addRuntime(ComponentUI);\n"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@ export { Component, InvalidComponent } from './component';
4
4
  export { ComponentID } from '@teambit/component-id';
5
5
  export { default as ComponentFS } from './component-fs';
6
6
  export type { default as ComponentConfig } from './config';
7
- export type { ComponentFactory } from './component-factory';
7
+ export type { ComponentFactory, ResolveAspectsOptions } from './component-factory';
8
8
  export type { AspectList } from './aspect-list';
9
9
  export { AspectEntry, AspectData, ResolveComponentIdFunc } from './aspect-entry';
10
10
  export { Snap, SnapProps } from './snap/snap';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["ComponentAspect"],"sources":["index.ts"],"sourcesContent":["import { ComponentAspect } from './component.aspect';\n\nexport { useComponentHost } from './host';\nexport { Component, InvalidComponent } from './component';\nexport { ComponentID } from '@teambit/component-id';\nexport { default as ComponentFS } from './component-fs';\nexport type { default as ComponentConfig } from './config';\nexport type { ComponentFactory } from './component-factory';\nexport type { AspectList } from './aspect-list';\nexport { AspectEntry, AspectData, ResolveComponentIdFunc } from './aspect-entry';\n// TODO: check why it's not working when using the index in snap dir like this:\n// export { Snap, Author } from './snap';\nexport { Snap, SnapProps } from './snap/snap';\nexport type { Author } from './snap/author';\n// TODO: check why it's not working when using the index in tag dir like this:\n// export { Tag } from './tag';\nexport { Tag, TagProps } from './tag/tag';\nexport type { IComponent } from './component-interface';\nexport { State } from './state';\nexport type { Hash } from './hash';\nexport { TagMap } from './tag-map';\nexport { ComponentMap } from './component-map';\nexport type { ComponentMain } from './component.main.runtime';\nexport type { ComponentUI } from './component.ui.runtime';\nexport { Section } from './section';\nexport { ComponentContext, ComponentDescriptorContext, useComponentDescriptor } from './ui/context/component-context';\nexport type { ComponentProviderProps, ComponentDescriptorProviderProps } from './ui/context';\nexport { ComponentProvider, ComponentDescriptorProvider } from './ui/context';\nexport { componentFields, componentIdFields, componentOverviewFields } from './ui';\nexport { ConsumePlugin } from './ui/menu';\nexport { RegisteredComponentRoute, ComponentUrlParams } from './component.route';\nexport { ComponentModel, ComponentModelProps } from './ui/component-model';\nexport { TopBarNav, TopBarNavProps } from './ui/top-bar-nav';\nexport type { ShowFragment, ShowRow } from './show';\nexport { default as Config } from './config';\nexport { useComponent } from './ui';\n\n// export { AspectList } from './aspect-list';\n// export { AspectEntry } from './aspect-entry';\nexport { ComponentAspect };\nexport default ComponentAspect;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAIA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAIA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAxBA;AACA;AAGA;AACA;AAsBA;AACA;eAEeA,4B"}
1
+ {"version":3,"names":["ComponentAspect"],"sources":["index.ts"],"sourcesContent":["import { ComponentAspect } from './component.aspect';\n\nexport { useComponentHost } from './host';\nexport { Component, InvalidComponent } from './component';\nexport { ComponentID } from '@teambit/component-id';\nexport { default as ComponentFS } from './component-fs';\nexport type { default as ComponentConfig } from './config';\nexport type { ComponentFactory, ResolveAspectsOptions } from './component-factory';\nexport type { AspectList } from './aspect-list';\nexport { AspectEntry, AspectData, ResolveComponentIdFunc } from './aspect-entry';\n// TODO: check why it's not working when using the index in snap dir like this:\n// export { Snap, Author } from './snap';\nexport { Snap, SnapProps } from './snap/snap';\nexport type { Author } from './snap/author';\n// TODO: check why it's not working when using the index in tag dir like this:\n// export { Tag } from './tag';\nexport { Tag, TagProps } from './tag/tag';\nexport type { IComponent } from './component-interface';\nexport { State } from './state';\nexport type { Hash } from './hash';\nexport { TagMap } from './tag-map';\nexport { ComponentMap } from './component-map';\nexport type { ComponentMain } from './component.main.runtime';\nexport type { ComponentUI } from './component.ui.runtime';\nexport { Section } from './section';\nexport { ComponentContext, ComponentDescriptorContext, useComponentDescriptor } from './ui/context/component-context';\nexport type { ComponentProviderProps, ComponentDescriptorProviderProps } from './ui/context';\nexport { ComponentProvider, ComponentDescriptorProvider } from './ui/context';\nexport { componentFields, componentIdFields, componentOverviewFields } from './ui';\nexport { ConsumePlugin } from './ui/menu';\nexport { RegisteredComponentRoute, ComponentUrlParams } from './component.route';\nexport { ComponentModel, ComponentModelProps } from './ui/component-model';\nexport { TopBarNav, TopBarNavProps } from './ui/top-bar-nav';\nexport type { ShowFragment, ShowRow } from './show';\nexport { default as Config } from './config';\nexport { useComponent } from './ui';\n\n// export { AspectList } from './aspect-list';\n// export { AspectEntry } from './aspect-entry';\nexport { ComponentAspect };\nexport default ComponentAspect;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAIA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAIA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAxBA;AACA;AAGA;AACA;AAsBA;AACA;eAEeA,4B"}
@@ -1,5 +1,5 @@
1
1
  import { ComponentModel } from '@teambit/component';
2
- import { Searcher, SearchResult, FuzzySearchItem } from '@teambit/explorer.ui.command-bar';
2
+ import { SearchResult, FuzzySearchItem, FuzzySearcher } from '@teambit/explorer.ui.command-bar';
3
3
  import type { SearchProvider } from '@teambit/command-bar';
4
4
  import { ComponentResultPlugin } from './component-result';
5
5
  export type { ComponentResultPlugin };
@@ -12,7 +12,7 @@ declare type ComponentSearcherOptions = {
12
12
  navigate: (path: string) => void;
13
13
  resultPlugins?: ComponentResultPlugin[];
14
14
  };
15
- export declare class ComponentSearcher extends Searcher<ComponentModel, ComponentSearchIdx> implements SearchProvider {
15
+ export declare class ComponentSearcher extends FuzzySearcher<ComponentModel, ComponentSearchIdx> implements SearchProvider {
16
16
  options: ComponentSearcherOptions;
17
17
  constructor(options: ComponentSearcherOptions);
18
18
  updatePlugins(plugins: ComponentResultPlugin[]): void;
@@ -53,7 +53,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
53
53
 
54
54
  const searchKeys = ['displayName', 'name'];
55
55
 
56
- class ComponentSearcher extends _explorerUi().Searcher {
56
+ class ComponentSearcher extends _explorerUi().FuzzySearcher {
57
57
  constructor(options) {
58
58
  super({
59
59
  searchKeys
@@ -1 +1 @@
1
- {"version":3,"names":["searchKeys","ComponentSearcher","Searcher","constructor","options","item","navigate","resultPlugins","component","id","fullName","action","children","updatePlugins","plugins","test","term","startsWith","length","toSearchableItem","name","displayName"],"sources":["component-searcher.tsx"],"sourcesContent":["import React from 'react';\n\nimport { ComponentModel } from '@teambit/component';\nimport { Searcher, SearchResult, FuzzySearchItem } from '@teambit/explorer.ui.command-bar';\nimport type { SearchProvider } from '@teambit/command-bar';\nimport { ComponentResult, ComponentResultPlugin } from './component-result';\n\nexport type { ComponentResultPlugin };\n\ntype ComponentSearchIdx = {\n name: string;\n displayName: string;\n component: ComponentModel;\n};\n\nconst searchKeys: (keyof ComponentSearchIdx)[] = ['displayName', 'name'];\n\ntype ComponentSearcherOptions = {\n navigate: (path: string) => void;\n resultPlugins?: ComponentResultPlugin[];\n};\n\nexport class ComponentSearcher extends Searcher<ComponentModel, ComponentSearchIdx> implements SearchProvider {\n constructor(public options: ComponentSearcherOptions) {\n super({ searchKeys });\n }\n\n updatePlugins(plugins: ComponentResultPlugin[]) {\n this.options = {\n ...this.options,\n resultPlugins: plugins,\n };\n }\n\n override test(term: string): boolean {\n return !term.startsWith('>') && term.length > 0;\n }\n\n protected override toSearchableItem(item: ComponentModel): ComponentSearchIdx {\n return {\n name: item.id.name,\n displayName: item.id.fullName,\n component: item,\n };\n }\n\n protected override toSearchResult = ({ item }: FuzzySearchItem<ComponentSearchIdx>): SearchResult => {\n const { navigate, resultPlugins } = this.options;\n const { component } = item;\n\n return {\n id: component.id.fullName,\n action: () => navigate(`/${component.id.fullName}`),\n children: <ComponentResult component={component} plugins={resultPlugins} />,\n };\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;;;;;AAUA,MAAMA,UAAwC,GAAG,CAAC,aAAD,EAAgB,MAAhB,CAAjD;;AAOO,MAAMC,iBAAN,SAAgCC,sBAAhC,CAAuG;EAC5GC,WAAW,CAAQC,OAAR,EAA2C;IACpD,MAAM;MAAEJ;IAAF,CAAN;IADoD,KAAnCI,OAAmC,GAAnCA,OAAmC;IAAA,wDAuBlB,CAAC;MAAEC;IAAF,CAAD,KAAiE;MACnG,MAAM;QAAEC,QAAF;QAAYC;MAAZ,IAA8B,KAAKH,OAAzC;MACA,MAAM;QAAEI;MAAF,IAAgBH,IAAtB;MAEA,OAAO;QACLI,EAAE,EAAED,SAAS,CAACC,EAAV,CAAaC,QADZ;QAELC,MAAM,EAAE,MAAML,QAAQ,CAAE,IAAGE,SAAS,CAACC,EAAV,CAAaC,QAAS,EAA3B,CAFjB;QAGLE,QAAQ,eAAE,+BAAC,kCAAD;UAAiB,SAAS,EAAEJ,SAA5B;UAAuC,OAAO,EAAED;QAAhD;MAHL,CAAP;IAKD,CAhCqD;EAErD;;EAEDM,aAAa,CAACC,OAAD,EAAmC;IAC9C,KAAKV,OAAL,mCACK,KAAKA,OADV;MAEEG,aAAa,EAAEO;IAFjB;EAID;;EAEQC,IAAI,CAACC,IAAD,EAAwB;IACnC,OAAO,CAACA,IAAI,CAACC,UAAL,CAAgB,GAAhB,CAAD,IAAyBD,IAAI,CAACE,MAAL,GAAc,CAA9C;EACD;;EAEkBC,gBAAgB,CAACd,IAAD,EAA2C;IAC5E,OAAO;MACLe,IAAI,EAAEf,IAAI,CAACI,EAAL,CAAQW,IADT;MAELC,WAAW,EAAEhB,IAAI,CAACI,EAAL,CAAQC,QAFhB;MAGLF,SAAS,EAAEH;IAHN,CAAP;EAKD;;AAtB2G"}
1
+ {"version":3,"names":["searchKeys","ComponentSearcher","FuzzySearcher","constructor","options","item","navigate","resultPlugins","component","id","fullName","action","children","updatePlugins","plugins","test","term","startsWith","length","toSearchableItem","name","displayName"],"sources":["component-searcher.tsx"],"sourcesContent":["import React from 'react';\n\nimport { ComponentModel } from '@teambit/component';\nimport { SearchResult, FuzzySearchItem, FuzzySearcher } from '@teambit/explorer.ui.command-bar';\nimport type { SearchProvider } from '@teambit/command-bar';\nimport { ComponentResult, ComponentResultPlugin } from './component-result';\n\nexport type { ComponentResultPlugin };\n\ntype ComponentSearchIdx = {\n name: string;\n displayName: string;\n component: ComponentModel;\n};\n\nconst searchKeys: (keyof ComponentSearchIdx)[] = ['displayName', 'name'];\n\ntype ComponentSearcherOptions = {\n navigate: (path: string) => void;\n resultPlugins?: ComponentResultPlugin[];\n};\n\nexport class ComponentSearcher extends FuzzySearcher<ComponentModel, ComponentSearchIdx> implements SearchProvider {\n constructor(public options: ComponentSearcherOptions) {\n super({ searchKeys });\n }\n\n updatePlugins(plugins: ComponentResultPlugin[]) {\n this.options = {\n ...this.options,\n resultPlugins: plugins,\n };\n }\n\n override test(term: string): boolean {\n return !term.startsWith('>') && term.length > 0;\n }\n\n protected override toSearchableItem(item: ComponentModel): ComponentSearchIdx {\n return {\n name: item.id.name,\n displayName: item.id.fullName,\n component: item,\n };\n }\n\n protected override toSearchResult = ({ item }: FuzzySearchItem<ComponentSearchIdx>): SearchResult => {\n const { navigate, resultPlugins } = this.options;\n const { component } = item;\n\n return {\n id: component.id.fullName,\n action: () => navigate(`/${component.id.fullName}`),\n children: <ComponentResult component={component} plugins={resultPlugins} />,\n };\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;;;;;AAUA,MAAMA,UAAwC,GAAG,CAAC,aAAD,EAAgB,MAAhB,CAAjD;;AAOO,MAAMC,iBAAN,SAAgCC,2BAAhC,CAA4G;EACjHC,WAAW,CAAQC,OAAR,EAA2C;IACpD,MAAM;MAAEJ;IAAF,CAAN;IADoD,KAAnCI,OAAmC,GAAnCA,OAAmC;IAAA,wDAuBlB,CAAC;MAAEC;IAAF,CAAD,KAAiE;MACnG,MAAM;QAAEC,QAAF;QAAYC;MAAZ,IAA8B,KAAKH,OAAzC;MACA,MAAM;QAAEI;MAAF,IAAgBH,IAAtB;MAEA,OAAO;QACLI,EAAE,EAAED,SAAS,CAACC,EAAV,CAAaC,QADZ;QAELC,MAAM,EAAE,MAAML,QAAQ,CAAE,IAAGE,SAAS,CAACC,EAAV,CAAaC,QAAS,EAA3B,CAFjB;QAGLE,QAAQ,eAAE,+BAAC,kCAAD;UAAiB,SAAS,EAAEJ,SAA5B;UAAuC,OAAO,EAAED;QAAhD;MAHL,CAAP;IAKD,CAhCqD;EAErD;;EAEDM,aAAa,CAACC,OAAD,EAAmC;IAC9C,KAAKV,OAAL,mCACK,KAAKA,OADV;MAEEG,aAAa,EAAEO;IAFjB;EAID;;EAEQC,IAAI,CAACC,IAAD,EAAwB;IACnC,OAAO,CAACA,IAAI,CAACC,UAAL,CAAgB,GAAhB,CAAD,IAAyBD,IAAI,CAACE,MAAL,GAAc,CAA9C;EACD;;EAEkBC,gBAAgB,CAACd,IAAD,EAA2C;IAC5E,OAAO;MACLe,IAAI,EAAEf,IAAI,CAACI,EAAL,CAAQW,IADT;MAELC,WAAW,EAAEhB,IAAI,CAACI,EAAL,CAAQC,QAFhB;MAGLF,SAAS,EAAEH;IAHN,CAAP;EAKD;;AAtBgH"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/component",
3
- "version": "0.0.802",
3
+ "version": "0.0.805",
4
4
  "homepage": "https://bit.dev/teambit/component/component",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.component",
8
8
  "name": "component",
9
- "version": "0.0.802"
9
+ "version": "0.0.805"
10
10
  },
11
11
  "dependencies": {
12
12
  "@teambit/any-fs": "0.0.5",
@@ -25,47 +25,47 @@
25
25
  "@teambit/base-react.navigation.link": "2.0.27",
26
26
  "@teambit/documenter.ui.heading": "4.1.1",
27
27
  "@teambit/documenter.ui.separator": "4.1.1",
28
- "@teambit/explorer.ui.command-bar": "2.0.2",
28
+ "@teambit/explorer.ui.command-bar": "2.0.3",
29
29
  "@teambit/base-ui.layout.breakpoints": "1.0.0",
30
30
  "@teambit/design.elements.icon": "1.0.5",
31
31
  "@teambit/design.inputs.dropdown": "0.0.7",
32
32
  "@teambit/component-id": "0.0.405",
33
33
  "@teambit/ui-foundation.ui.menu-widget-icon": "0.0.488",
34
- "@teambit/aspect-loader": "0.0.802",
34
+ "@teambit/aspect-loader": "0.0.805",
35
35
  "@teambit/legacy-bit-id": "0.0.402",
36
36
  "@teambit/toolbox.path.match-patterns": "0.0.1",
37
37
  "@teambit/toolbox.string.capitalize": "0.0.483",
38
- "@teambit/cli": "0.0.534",
39
- "@teambit/express": "0.0.632",
40
- "@teambit/graphql": "0.0.802",
38
+ "@teambit/cli": "0.0.536",
39
+ "@teambit/express": "0.0.634",
40
+ "@teambit/graphql": "0.0.805",
41
41
  "@teambit/bit-error": "0.0.394",
42
- "@teambit/command-bar": "0.0.802",
42
+ "@teambit/command-bar": "0.0.805",
43
43
  "@teambit/component.ui.deprecation-icon": "0.0.494",
44
- "@teambit/preview": "0.0.802",
45
- "@teambit/pubsub": "0.0.802",
46
- "@teambit/react-router": "0.0.802",
44
+ "@teambit/preview": "0.0.805",
45
+ "@teambit/pubsub": "0.0.805",
46
+ "@teambit/react-router": "0.0.805",
47
47
  "@teambit/ui-foundation.ui.is-browser": "0.0.486",
48
48
  "@teambit/ui-foundation.ui.main-dropdown": "0.0.487",
49
49
  "@teambit/ui-foundation.ui.react-router.slot-router": "0.0.490",
50
50
  "@teambit/ui-foundation.ui.use-box.menu": "0.0.116",
51
- "@teambit/ui": "0.0.802",
51
+ "@teambit/ui": "0.0.805",
52
52
  "@teambit/component-issues": "0.0.60",
53
53
  "@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.488",
54
54
  "@teambit/cli-table": "0.0.34",
55
- "@teambit/lanes.ui.lanes": "0.0.103",
56
- "@teambit/component-descriptor": "0.0.97",
55
+ "@teambit/lanes.ui.lanes": "0.0.105",
56
+ "@teambit/component-descriptor": "0.0.99",
57
57
  "@teambit/ui-foundation.ui.react-router.use-query": "0.0.487",
58
58
  "@teambit/design.ui.empty-box": "0.0.354",
59
59
  "@teambit/harmony.ui.aspect-box": "0.0.486",
60
60
  "@teambit/design.ui.pages.not-found": "0.0.356",
61
61
  "@teambit/design.ui.pages.server-error": "0.0.356",
62
- "@teambit/compositions": "0.0.802",
63
- "@teambit/deprecation": "0.0.802",
64
- "@teambit/envs": "0.0.802",
62
+ "@teambit/compositions": "0.0.805",
63
+ "@teambit/deprecation": "0.0.805",
64
+ "@teambit/envs": "0.0.805",
65
65
  "@teambit/legacy-component-log": "0.0.392",
66
66
  "@teambit/design.ui.styles.ellipsis": "0.0.347",
67
67
  "@teambit/envs.ui.env-icon": "0.0.486",
68
- "@teambit/component.ui.version-dropdown": "0.0.591",
68
+ "@teambit/component.ui.version-dropdown": "0.0.593",
69
69
  "@teambit/ui-foundation.ui.full-loader": "0.0.486",
70
70
  "@teambit/ui-foundation.ui.use-box.dropdown": "0.0.116",
71
71
  "@teambit/ui-foundation.ui.constants.z-indexes": "0.0.488"
@@ -87,7 +87,7 @@
87
87
  "peerDependencies": {
88
88
  "react-router-dom": "^6.0.0",
89
89
  "@apollo/client": "^3.0.0",
90
- "@teambit/legacy": "1.0.316",
90
+ "@teambit/legacy": "1.0.319",
91
91
  "react-dom": "^16.8.0 || ^17.0.0",
92
92
  "react": "^16.8.0 || ^17.0.0"
93
93
  },
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_component@0.0.802/dist/component.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_component@0.0.802/dist/component.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_component@0.0.805/dist/component.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_component@0.0.805/dist/component.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
 
3
3
  import { ComponentModel } from '@teambit/component';
4
- import { Searcher, SearchResult, FuzzySearchItem } from '@teambit/explorer.ui.command-bar';
4
+ import { SearchResult, FuzzySearchItem, FuzzySearcher } from '@teambit/explorer.ui.command-bar';
5
5
  import type { SearchProvider } from '@teambit/command-bar';
6
6
  import { ComponentResult, ComponentResultPlugin } from './component-result';
7
7
 
@@ -20,7 +20,7 @@ type ComponentSearcherOptions = {
20
20
  resultPlugins?: ComponentResultPlugin[];
21
21
  };
22
22
 
23
- export class ComponentSearcher extends Searcher<ComponentModel, ComponentSearchIdx> implements SearchProvider {
23
+ export class ComponentSearcher extends FuzzySearcher<ComponentModel, ComponentSearchIdx> implements SearchProvider {
24
24
  constructor(public options: ComponentSearcherOptions) {
25
25
  super({ searchKeys });
26
26
  }