@teambit/command-bar 0.0.876 → 0.0.878

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.
@@ -22,7 +22,7 @@ type SearcherSlot = SlotRegistry<SearchProvider[]>;
22
22
  type CommandSlot = SlotRegistry<CommandEntry[]>;
23
23
 
24
24
  export type CommandBarConfig = {
25
- debounce?: number
25
+ debounce?: number;
26
26
  };
27
27
 
28
28
  export type CommandEntry = {
@@ -142,7 +142,7 @@ export class CommandBarUI {
142
142
  this.setVisibility = setVisibility;
143
143
 
144
144
  const results = useSearcher(this.search, {
145
- debounce: this.config.debounce
145
+ debounce: this.config.debounce,
146
146
  });
147
147
 
148
148
  return (
@@ -159,20 +159,16 @@ export class CommandBarUI {
159
159
  );
160
160
  };
161
161
 
162
- constructor(
163
- private searcherSlot: SearcherSlot,
164
- private commandSlot: CommandSlot,
165
- private config: CommandBarConfig
166
- ) {}
162
+ constructor(private searcherSlot: SearcherSlot, private commandSlot: CommandSlot, private config: CommandBarConfig) {}
167
163
 
168
164
  static dependencies = [UIAspect, PubsubAspect, ReactRouterAspect];
169
165
  static slots = [Slot.withType<SearchProvider>(), Slot.withType<CommandEntry[]>()];
170
166
  static defaultConfig: CommandBarConfig = {
171
- debounce: undefined
167
+ debounce: undefined,
172
168
  };
173
169
 
174
170
  static runtime = UIRuntime;
175
-
171
+
176
172
  static async provider(
177
173
  [uiUi, pubsubUI]: [UiUI | undefined, PubsubUI | undefined],
178
174
  config: CommandBarConfig,
@@ -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","config","isBrowser","Mousetrap","MousetrapStub","CommandSearcher","setVisibility","trigger","term","limit","searchers","flatten","searcher","test","search","items","ResultComponent","visible","useState","results","useSearcher","debounce","styles","commanderUi","provider","uiUi","pubsubUI","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, ComponentType } 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, ResultsComponentProps } 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';\nimport styles from './command-bar.module.scss';\n\nconst RESULT_LIMIT = 5;\ntype SearcherSlot = SlotRegistry<SearchProvider[]>;\ntype CommandSlot = SlotRegistry<CommandEntry[]>;\n\nexport type CommandBarConfig = {\n debounce?: number\n};\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) || { items: [] };\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 setVisibility?: (visible: boolean) => void;\n\n /**\n * generate the ui for command bar\n */\n CommandBar = ({ ResultComponent }: { ResultComponent?: ComponentType<ResultsComponentProps> }) => {\n const [visible, setVisibility] = useState(false);\n this.setVisibility = setVisibility;\n\n const results = useSearcher(this.search, {\n debounce: this.config.debounce\n });\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 ResultsComponent={ResultComponent}\n onVisibilityChange={setVisibility}\n autofocus\n />\n );\n };\n\n constructor(\n private searcherSlot: SearcherSlot, \n private commandSlot: CommandSlot,\n private config: CommandBarConfig\n ) {}\n\n static dependencies = [UIAspect, PubsubAspect, ReactRouterAspect];\n static slots = [Slot.withType<SearchProvider>(), Slot.withType<CommandEntry[]>()];\n static defaultConfig: CommandBarConfig = {\n debounce: undefined\n };\n\n static runtime = UIRuntime;\n \n static async provider(\n [uiUi, pubsubUI]: [UiUI | undefined, PubsubUI | undefined],\n config: CommandBarConfig,\n [searcherSlot, commandSlots]: [SearcherSlot, CommandSlot]\n ) {\n const commandBar = new CommandBarUI(searcherSlot, commandSlots, config);\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 key=\"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","config","isBrowser","Mousetrap","MousetrapStub","CommandSearcher","setVisibility","trigger","term","limit","searchers","flatten","searcher","test","search","items","ResultComponent","visible","useState","results","useSearcher","debounce","styles","commanderUi","provider","uiUi","pubsubUI","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, ComponentType } 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, ResultsComponentProps } 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';\nimport styles from './command-bar.module.scss';\n\nconst RESULT_LIMIT = 5;\ntype SearcherSlot = SlotRegistry<SearchProvider[]>;\ntype CommandSlot = SlotRegistry<CommandEntry[]>;\n\nexport type CommandBarConfig = {\n debounce?: number;\n};\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) || { items: [] };\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 setVisibility?: (visible: boolean) => void;\n\n /**\n * generate the ui for command bar\n */\n CommandBar = ({ ResultComponent }: { ResultComponent?: ComponentType<ResultsComponentProps> }) => {\n const [visible, setVisibility] = useState(false);\n this.setVisibility = setVisibility;\n\n const results = useSearcher(this.search, {\n debounce: this.config.debounce,\n });\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 ResultsComponent={ResultComponent}\n onVisibilityChange={setVisibility}\n autofocus\n />\n );\n };\n\n constructor(private searcherSlot: SearcherSlot, private commandSlot: CommandSlot, private config: CommandBarConfig) {}\n\n static dependencies = [UIAspect, PubsubAspect, ReactRouterAspect];\n static slots = [Slot.withType<SearchProvider>(), Slot.withType<CommandEntry[]>()];\n static defaultConfig: CommandBarConfig = {\n debounce: undefined,\n };\n\n static runtime = UIRuntime;\n\n static async provider(\n [uiUi, pubsubUI]: [UiUI | undefined, PubsubUI | undefined],\n config: CommandBarConfig,\n [searcherSlot, commandSlots]: [SearcherSlot, CommandSlot]\n ) {\n const commandBar = new CommandBarUI(searcherSlot, commandSlots, config);\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 key=\"commandBar\" />);\n }\n\n return commandBar;\n }\n}\n\nCommandBarAspect.addRuntime(CommandBarUI);\n"],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { CommandBarAspect, CommandBarAspect as default } from './command-bar.aspect';\nexport { commandBarCommands } from './command-bar.commands';\nexport type { SearchProvider } from './searchers';\nexport type { CommandBarUI, CommandEntry } from './command-bar.ui.runtime';\nexport type { CommandHandler, CommandId, Keybinding } from './types';\nexport type { SearchResult, ResultsComponentProps, SearchResults } from '@teambit/explorer.ui.command-bar';\nexport { FuzzySearcher, FuzzySearchItem, CommandBarItem } from '@teambit/explorer.ui.command-bar';\n "],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAKA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { CommandBarAspect, CommandBarAspect as default } from './command-bar.aspect';\nexport { commandBarCommands } from './command-bar.commands';\nexport type { SearchProvider } from './searchers';\nexport type { CommandBarUI, CommandEntry } from './command-bar.ui.runtime';\nexport type { CommandHandler, CommandId, Keybinding } from './types';\nexport type { SearchResult, ResultsComponentProps, SearchResults } from '@teambit/explorer.ui.command-bar';\nexport { FuzzySearcher, FuzzySearchItem, CommandBarItem } from '@teambit/explorer.ui.command-bar';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAKA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["search-provider.ts"],"sourcesContent":["import { SearchProvider as Searcher } from '@teambit/explorer.ui.command-bar';\n\nexport interface SearchProvider {\n /** provide completions for this search term */\n search: Searcher,\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 { SearchProvider as Searcher } from '@teambit/explorer.ui.command-bar';\n\nexport interface SearchProvider {\n /** provide completions for this search term */\n search: Searcher;\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.876",
3
+ "version": "0.0.878",
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.876"
9
+ "version": "0.0.878"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash.flatten": "4.4.0",
@@ -18,11 +18,11 @@
18
18
  "@teambit/harmony": "0.3.3",
19
19
  "@teambit/explorer.ui.command-bar": "2.0.3",
20
20
  "@teambit/base-ui.text.muted-text": "1.0.1",
21
- "@teambit/preview": "0.0.876",
22
- "@teambit/pubsub": "0.0.876",
23
- "@teambit/react-router": "0.0.876",
21
+ "@teambit/preview": "0.0.878",
22
+ "@teambit/pubsub": "0.0.878",
23
+ "@teambit/react-router": "0.0.878",
24
24
  "@teambit/ui-foundation.ui.is-browser": "0.0.492",
25
- "@teambit/ui": "0.0.876",
25
+ "@teambit/ui": "0.0.878",
26
26
  "@teambit/bit-error": "0.0.400",
27
27
  "@teambit/design.ui.styles.ellipsis": "0.0.353",
28
28
  "@teambit/ui-foundation.ui.keycap": "0.0.492"
@@ -39,7 +39,7 @@
39
39
  "@types/node": "12.20.4"
40
40
  },
41
41
  "peerDependencies": {
42
- "@teambit/legacy": "1.0.367",
42
+ "@teambit/legacy": "1.0.369",
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.876/dist/command-bar.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.explorer_command-bar@0.0.876/dist/command-bar.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.explorer_command-bar@0.0.878/dist/command-bar.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.explorer_command-bar@0.0.878/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 { SearchProvider as Searcher } from '@teambit/explorer.ui.command-bar';
2
2
 
3
3
  export interface SearchProvider {
4
4
  /** provide completions for this search term */
5
- search: Searcher,
5
+ search: Searcher;
6
6
  /** determines what terms are handled by this searcher. */
7
7
  test(term: string): boolean;
8
8
  }