@teambit/command-bar 0.0.792 → 0.0.795

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.
@@ -6,7 +6,7 @@ import UIAspect, { UIRuntime, UiUI } from '@teambit/ui';
6
6
  import { PubsubAspect, PubsubUI } from '@teambit/pubsub';
7
7
  import { ReactRouterAspect } from '@teambit/react-router';
8
8
  import { isBrowser } from '@teambit/ui-foundation.ui.is-browser';
9
- import { CommandBar } from '@teambit/explorer.ui.command-bar';
9
+ import { CommandBar, useSearcher } from '@teambit/explorer.ui.command-bar';
10
10
  import { CommandBarAspect } from './command-bar.aspect';
11
11
  import { commandBarCommands } from './command-bar.commands';
12
12
  import { CommandSearcher, SearchProvider } from './searchers';
@@ -138,15 +138,17 @@ export class CommandBarUI {
138
138
  const [visible, setVisibility] = useState(false);
139
139
  this.setVisibility = setVisibility;
140
140
 
141
+ const results = useSearcher(this.search);
142
+
141
143
  return (
142
144
  <CommandBar
145
+ {...results}
143
146
  key="CommandBarUI"
144
147
  className={styles.commanderUi}
145
- searcher={this.search}
146
148
  placeholder="Search anything or type > to only search commands"
147
149
  visible={visible}
148
- autofocus
149
150
  onVisibilityChange={setVisibility}
151
+ autofocus
150
152
  />
151
153
  );
152
154
  };
@@ -17,6 +17,16 @@ Object.defineProperty(exports, "__esModule", {
17
17
  });
18
18
  exports.CommandBarUI = void 0;
19
19
 
20
+ function _extends2() {
21
+ const data = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
22
+
23
+ _extends2 = function () {
24
+ return data;
25
+ };
26
+
27
+ return data;
28
+ }
29
+
20
30
  function _defineProperty2() {
21
31
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
22
32
 
@@ -296,15 +306,15 @@ class CommandBarUI {
296
306
  (0, _defineProperty2().default)(this, "CommandBar", () => {
297
307
  const [visible, setVisibility] = (0, _react().useState)(false);
298
308
  this.setVisibility = setVisibility;
299
- return /*#__PURE__*/_react().default.createElement(_explorerUi().CommandBar, {
309
+ const results = (0, _explorerUi().useSearcher)(this.search);
310
+ return /*#__PURE__*/_react().default.createElement(_explorerUi().CommandBar, (0, _extends2().default)({}, results, {
300
311
  key: "CommandBarUI",
301
312
  className: _commandBarModule().default.commanderUi,
302
- searcher: this.search,
303
313
  placeholder: "Search anything or type > to only search commands",
304
314
  visible: visible,
305
- autofocus: true,
306
- onVisibilityChange: setVisibility
307
- });
315
+ onVisibilityChange: setVisibility,
316
+ autofocus: true
317
+ }));
308
318
  });
309
319
  }
310
320
 
@@ -1 +1 @@
1
- {"version":3,"names":["RESULT_LIMIT","CommandBarUI","addSearcher","commandSearcher","searcherSlot","register","addCommand","originalCommands","forEach","id","commandId","getCommand","undefined","DuplicateCommandError","commands","map","x","displayName","action","keybinding","commandSlot","command","addKeybinding","updateCommandsSearcher","updaters","next","run","commandEntry","relevantCommands","values","find","filter","pop","flat","update","key","mousetrap","bind","constructor","isBrowser","Mousetrap","MousetrapStub","CommandSearcher","setVisibility","trigger","term","limit","searchers","flatten","searcher","test","search","visible","useState","styles","commanderUi","provider","uiUi","pubsubUI","config","commandSlots","commandBar","commandBarCommands","open","openCommandBarKeybinding","sub","CommandBarAspect","e","keyboardEvent","KeyboardEvent","type","data","document","dispatchEvent","registerHudItem","UIAspect","PubsubAspect","ReactRouterAspect","Slot","withType","UIRuntime","addRuntime"],"sources":["command-bar.ui.runtime.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport flatten from 'lodash.flatten';\nimport Mousetrap from 'mousetrap';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport UIAspect, { UIRuntime, UiUI } from '@teambit/ui';\nimport { PubsubAspect, PubsubUI } from '@teambit/pubsub';\nimport { ReactRouterAspect } from '@teambit/react-router';\nimport { isBrowser } from '@teambit/ui-foundation.ui.is-browser';\nimport { CommandBar } from '@teambit/explorer.ui.command-bar';\nimport { CommandBarAspect } from './command-bar.aspect';\nimport { commandBarCommands } from './command-bar.commands';\nimport { CommandSearcher, SearchProvider } from './searchers';\nimport { Keybinding, CommandHandler, CommandId } from './types';\nimport { DuplicateCommandError } from './duplicate-command-error';\nimport { KeyEvent } from './model/key-event';\nimport { MousetrapStub } from './mousetrap-stub';\nimport { openCommandBarKeybinding } from './keybinding';\n\nimport styles from './command-bar.module.scss';\n\nconst RESULT_LIMIT = 5;\ntype SearcherSlot = SlotRegistry<SearchProvider[]>;\ntype CommandSlot = SlotRegistry<CommandEntry[]>;\n\nexport type CommandEntry = {\n id: CommandId;\n action: CommandHandler;\n keybinding?: Keybinding;\n displayName: string;\n};\n\n/** Quick launch actions. Use the `addSearcher` slot to extend the available actions */\nexport class CommandBarUI {\n private mousetrap = isBrowser ? new Mousetrap() : new MousetrapStub();\n private commandSearcher = new CommandSearcher([]);\n\n /** Opens the command bar */\n open = () => {\n this.setVisibility?.(true);\n return false; // aka prevent default\n };\n\n /** Closes the command bar */\n close = () => {\n this.setVisibility?.(false);\n };\n\n /** Add and autocomplete provider. To support keyboard navigation, each result should have a props `active: boolean`, and `exectue: () => any` */\n addSearcher(...commandSearcher: SearchProvider[]) {\n this.searcherSlot.register(commandSearcher);\n return this;\n }\n\n /**\n * registers a command\n */\n addCommand(...originalCommands: CommandEntry[]) {\n originalCommands.forEach(({ id: commandId }) => {\n if (this.getCommand(commandId) !== undefined) throw new DuplicateCommandError(commandId);\n });\n\n // commands could mutate later on, clone to ensure immutability 👌\n const commands = originalCommands.map((x) => ({\n id: x.id,\n displayName: x.displayName,\n action: x.action,\n keybinding: x.keybinding,\n }));\n\n this.commandSlot.register(commands);\n\n commands.forEach((command) => {\n if (command.keybinding) {\n this.addKeybinding(command.keybinding, command.id);\n }\n });\n\n this.updateCommandsSearcher();\n\n const updaters = commands.map((command) => (next: CommandHandler) => {\n command.action = next;\n });\n return updaters;\n }\n\n /**\n * executes command by name, if exists.\n * @param commandId\n */\n run(commandId: CommandId) {\n const commandEntry = this.getCommand(commandId);\n if (!commandEntry) return undefined;\n\n return commandEntry.action();\n }\n\n /**\n * executes a keyboard shortcut manually\n */\n trigger = (key: string) => {\n this.mousetrap.trigger(key);\n };\n\n private search = (term: string, limit: number = RESULT_LIMIT) => {\n const searchers = flatten(this.searcherSlot.values());\n\n const searcher = searchers.find((x) => x && x.test(term));\n return searcher?.search(term, limit) || [];\n };\n\n private getCommand(id: CommandId) {\n const relevantCommands = this.commandSlot\n .values()\n .map((commands) => commands.find((command) => command.id === id))\n .filter((x) => !!x);\n\n return relevantCommands.pop();\n }\n\n private updateCommandsSearcher() {\n const commands = this.commandSlot.values().flat();\n this.commandSearcher.update(commands);\n }\n\n private addKeybinding(key: Keybinding, command: CommandId) {\n this.mousetrap.bind(key, this.run.bind(this, command));\n }\n\n /**\n * Opens and closes the command bar UI.\n */\n private setVisibility?: (visible: boolean) => void;\n\n /**\n * generate the ui for command bar\n */\n CommandBar = () => {\n const [visible, setVisibility] = useState(false);\n this.setVisibility = setVisibility;\n\n return (\n <CommandBar\n key=\"CommandBarUI\"\n className={styles.commanderUi}\n searcher={this.search}\n placeholder=\"Search anything or type > to only search commands\"\n visible={visible}\n autofocus\n onVisibilityChange={setVisibility}\n />\n );\n };\n\n constructor(private searcherSlot: SearcherSlot, private commandSlot: CommandSlot) {}\n\n static dependencies = [UIAspect, PubsubAspect, ReactRouterAspect];\n static slots = [Slot.withType<SearchProvider>(), Slot.withType<CommandEntry[]>()];\n static runtime = UIRuntime;\n static async provider(\n [uiUi, pubsubUI]: [UiUI | undefined, PubsubUI | undefined],\n config,\n [searcherSlot, commandSlots]: [SearcherSlot, CommandSlot]\n ) {\n const commandBar = new CommandBarUI(searcherSlot, commandSlots);\n\n commandBar.addSearcher(commandBar.commandSearcher);\n commandBar.addCommand({\n id: commandBarCommands.open,\n action: commandBar.open,\n displayName: 'Open command bar',\n keybinding: openCommandBarKeybinding,\n });\n\n if (pubsubUI) {\n pubsubUI.sub(CommandBarAspect.id, (e: KeyEvent) => {\n const keyboardEvent = new KeyboardEvent(e.type, e.data);\n document.dispatchEvent(keyboardEvent);\n });\n }\n\n if (uiUi) {\n uiUi.registerHudItem(<commandBar.CommandBar />);\n }\n\n return commandBar;\n }\n}\n\nCommandBarAspect.addRuntime(CommandBarUI);\n"],"mappings":"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"}
1
+ {"version":3,"names":["RESULT_LIMIT","CommandBarUI","addSearcher","commandSearcher","searcherSlot","register","addCommand","originalCommands","forEach","id","commandId","getCommand","undefined","DuplicateCommandError","commands","map","x","displayName","action","keybinding","commandSlot","command","addKeybinding","updateCommandsSearcher","updaters","next","run","commandEntry","relevantCommands","values","find","filter","pop","flat","update","key","mousetrap","bind","constructor","isBrowser","Mousetrap","MousetrapStub","CommandSearcher","setVisibility","trigger","term","limit","searchers","flatten","searcher","test","search","visible","useState","results","useSearcher","styles","commanderUi","provider","uiUi","pubsubUI","config","commandSlots","commandBar","commandBarCommands","open","openCommandBarKeybinding","sub","CommandBarAspect","e","keyboardEvent","KeyboardEvent","type","data","document","dispatchEvent","registerHudItem","UIAspect","PubsubAspect","ReactRouterAspect","Slot","withType","UIRuntime","addRuntime"],"sources":["command-bar.ui.runtime.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport flatten from 'lodash.flatten';\nimport Mousetrap from 'mousetrap';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport UIAspect, { UIRuntime, UiUI } from '@teambit/ui';\nimport { PubsubAspect, PubsubUI } from '@teambit/pubsub';\nimport { ReactRouterAspect } from '@teambit/react-router';\nimport { isBrowser } from '@teambit/ui-foundation.ui.is-browser';\nimport { CommandBar, useSearcher } from '@teambit/explorer.ui.command-bar';\nimport { CommandBarAspect } from './command-bar.aspect';\nimport { commandBarCommands } from './command-bar.commands';\nimport { CommandSearcher, SearchProvider } from './searchers';\nimport { Keybinding, CommandHandler, CommandId } from './types';\nimport { DuplicateCommandError } from './duplicate-command-error';\nimport { KeyEvent } from './model/key-event';\nimport { MousetrapStub } from './mousetrap-stub';\nimport { openCommandBarKeybinding } from './keybinding';\n\nimport styles from './command-bar.module.scss';\n\nconst RESULT_LIMIT = 5;\ntype SearcherSlot = SlotRegistry<SearchProvider[]>;\ntype CommandSlot = SlotRegistry<CommandEntry[]>;\n\nexport type CommandEntry = {\n id: CommandId;\n action: CommandHandler;\n keybinding?: Keybinding;\n displayName: string;\n};\n\n/** Quick launch actions. Use the `addSearcher` slot to extend the available actions */\nexport class CommandBarUI {\n private mousetrap = isBrowser ? new Mousetrap() : new MousetrapStub();\n private commandSearcher = new CommandSearcher([]);\n\n /** Opens the command bar */\n open = () => {\n this.setVisibility?.(true);\n return false; // aka prevent default\n };\n\n /** Closes the command bar */\n close = () => {\n this.setVisibility?.(false);\n };\n\n /** Add and autocomplete provider. To support keyboard navigation, each result should have a props `active: boolean`, and `exectue: () => any` */\n addSearcher(...commandSearcher: SearchProvider[]) {\n this.searcherSlot.register(commandSearcher);\n return this;\n }\n\n /**\n * registers a command\n */\n addCommand(...originalCommands: CommandEntry[]) {\n originalCommands.forEach(({ id: commandId }) => {\n if (this.getCommand(commandId) !== undefined) throw new DuplicateCommandError(commandId);\n });\n\n // commands could mutate later on, clone to ensure immutability 👌\n const commands = originalCommands.map((x) => ({\n id: x.id,\n displayName: x.displayName,\n action: x.action,\n keybinding: x.keybinding,\n }));\n\n this.commandSlot.register(commands);\n\n commands.forEach((command) => {\n if (command.keybinding) {\n this.addKeybinding(command.keybinding, command.id);\n }\n });\n\n this.updateCommandsSearcher();\n\n const updaters = commands.map((command) => (next: CommandHandler) => {\n command.action = next;\n });\n return updaters;\n }\n\n /**\n * executes command by name, if exists.\n * @param commandId\n */\n run(commandId: CommandId) {\n const commandEntry = this.getCommand(commandId);\n if (!commandEntry) return undefined;\n\n return commandEntry.action();\n }\n\n /**\n * executes a keyboard shortcut manually\n */\n trigger = (key: string) => {\n this.mousetrap.trigger(key);\n };\n\n private search = (term: string, limit: number = RESULT_LIMIT) => {\n const searchers = flatten(this.searcherSlot.values());\n\n const searcher = searchers.find((x) => x && x.test(term));\n return searcher?.search(term, limit) || [];\n };\n\n private getCommand(id: CommandId) {\n const relevantCommands = this.commandSlot\n .values()\n .map((commands) => commands.find((command) => command.id === id))\n .filter((x) => !!x);\n\n return relevantCommands.pop();\n }\n\n private updateCommandsSearcher() {\n const commands = this.commandSlot.values().flat();\n this.commandSearcher.update(commands);\n }\n\n private addKeybinding(key: Keybinding, command: CommandId) {\n this.mousetrap.bind(key, this.run.bind(this, command));\n }\n\n /**\n * Opens and closes the command bar UI.\n */\n private setVisibility?: (visible: boolean) => void;\n\n /**\n * generate the ui for command bar\n */\n CommandBar = () => {\n const [visible, setVisibility] = useState(false);\n this.setVisibility = setVisibility;\n\n const results = useSearcher(this.search);\n\n return (\n <CommandBar\n {...results}\n key=\"CommandBarUI\"\n className={styles.commanderUi}\n placeholder=\"Search anything or type > to only search commands\"\n visible={visible}\n onVisibilityChange={setVisibility}\n autofocus\n />\n );\n };\n\n constructor(private searcherSlot: SearcherSlot, private commandSlot: CommandSlot) {}\n\n static dependencies = [UIAspect, PubsubAspect, ReactRouterAspect];\n static slots = [Slot.withType<SearchProvider>(), Slot.withType<CommandEntry[]>()];\n static runtime = UIRuntime;\n static async provider(\n [uiUi, pubsubUI]: [UiUI | undefined, PubsubUI | undefined],\n config,\n [searcherSlot, commandSlots]: [SearcherSlot, CommandSlot]\n ) {\n const commandBar = new CommandBarUI(searcherSlot, commandSlots);\n\n commandBar.addSearcher(commandBar.commandSearcher);\n commandBar.addCommand({\n id: commandBarCommands.open,\n action: commandBar.open,\n displayName: 'Open command bar',\n keybinding: openCommandBarKeybinding,\n });\n\n if (pubsubUI) {\n pubsubUI.sub(CommandBarAspect.id, (e: KeyEvent) => {\n const keyboardEvent = new KeyboardEvent(e.type, e.data);\n document.dispatchEvent(keyboardEvent);\n });\n }\n\n if (uiUi) {\n uiUi.registerHudItem(<commandBar.CommandBar />);\n }\n\n return commandBar;\n }\n}\n\nCommandBarAspect.addRuntime(CommandBarUI);\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { SearchResult } from '@teambit/explorer.ui.command-bar';
2
2
  export interface SearchProvider {
3
3
  /** provide completions for this search term */
4
- search(term: string, limit: number): SearchResult[];
4
+ search(term: string, limit: number): SearchResult[] | Promise<SearchResult[]>;
5
5
  /** determines what terms are handled by this searcher. */
6
6
  test(term: string): boolean;
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["search-provider.ts"],"sourcesContent":["import { SearchResult } from '@teambit/explorer.ui.command-bar';\n\nexport interface SearchProvider {\n /** provide completions for this search term */\n search(term: string, limit: number): SearchResult[];\n /** determines what terms are handled by this searcher. */\n test(term: string): boolean;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["search-provider.ts"],"sourcesContent":["import { SearchResult } from '@teambit/explorer.ui.command-bar';\n\nexport interface SearchProvider {\n /** provide completions for this search term */\n search(term: string, limit: number): SearchResult[] | Promise<SearchResult[]>;\n /** determines what terms are handled by this searcher. */\n test(term: string): boolean;\n}\n"],"mappings":""}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/command-bar",
3
- "version": "0.0.792",
3
+ "version": "0.0.795",
4
4
  "homepage": "https://bit.dev/teambit/explorer/command-bar",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.explorer",
8
8
  "name": "command-bar",
9
- "version": "0.0.792"
9
+ "version": "0.0.795"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash.flatten": "4.4.0",
@@ -16,13 +16,13 @@
16
16
  "@babel/runtime": "7.12.18",
17
17
  "core-js": "^3.0.0",
18
18
  "@teambit/harmony": "0.3.3",
19
- "@teambit/explorer.ui.command-bar": "1.2.0",
19
+ "@teambit/explorer.ui.command-bar": "2.0.2",
20
20
  "@teambit/base-ui.text.muted-text": "1.0.1",
21
- "@teambit/preview": "0.0.792",
22
- "@teambit/pubsub": "0.0.792",
23
- "@teambit/react-router": "0.0.792",
21
+ "@teambit/preview": "0.0.795",
22
+ "@teambit/pubsub": "0.0.795",
23
+ "@teambit/react-router": "0.0.795",
24
24
  "@teambit/ui-foundation.ui.is-browser": "0.0.486",
25
- "@teambit/ui": "0.0.792",
25
+ "@teambit/ui": "0.0.795",
26
26
  "@teambit/bit-error": "0.0.394",
27
27
  "@teambit/design.ui.styles.ellipsis": "0.0.347",
28
28
  "@teambit/ui-foundation.ui.keycap": "0.0.486"
@@ -39,7 +39,7 @@
39
39
  "@types/node": "12.20.4"
40
40
  },
41
41
  "peerDependencies": {
42
- "@teambit/legacy": "1.0.307",
42
+ "@teambit/legacy": "1.0.310",
43
43
  "react-dom": "^16.8.0 || ^17.0.0",
44
44
  "react": "^16.8.0 || ^17.0.0"
45
45
  },
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.explorer_command-bar@0.0.792/dist/command-bar.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.explorer_command-bar@0.0.792/dist/command-bar.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.explorer_command-bar@0.0.795/dist/command-bar.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.explorer_command-bar@0.0.795/dist/command-bar.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -2,7 +2,7 @@ import { SearchResult } from '@teambit/explorer.ui.command-bar';
2
2
 
3
3
  export interface SearchProvider {
4
4
  /** provide completions for this search term */
5
- search(term: string, limit: number): SearchResult[];
5
+ search(term: string, limit: number): SearchResult[] | Promise<SearchResult[]>;
6
6
  /** determines what terms are handled by this searcher. */
7
7
  test(term: string): boolean;
8
8
  }