{"version":3,"sources":["../../../src/react/context.tsx","../../../src/react/use-command-palette.ts","../../../src/adapters/cmdk/command-palette.tsx"],"names":["createContext","useContext","useState","useSyncExternalStore","useMemo","useCallback","jsxs","jsx","useRef","useEffect","Cmdk","Fragment"],"mappings":"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","file":"index.cjs","sourcesContent":["import React, { createContext, useContext, useRef, useMemo } from 'react'\nimport type { CommandEngineConfig, CommandItem, CommandRegistry, TranslationFn } from '../core/types'\nimport { createRegistry } from '../core/registry'\nimport { createFuzzySearch } from '../core/search'\nimport { createKeywordEngine } from '../core/keywords'\nimport { createAccessFilter } from '../core/access-control'\nimport { createFrecencyEngine } from '../core/frecency'\nimport { createGroupManager } from '../core/grouping'\nimport { createContextEngine } from '../core/context'\nimport { createDefaultTranslation } from '../core/i18n'\nimport { createInMemorySearchHistory } from '../core/search-history'\nimport type { SearchEngine } from '../core/types'\n\n/** Internal engine context shape */\nexport interface EngineContextValue {\n  registry: CommandRegistry\n  search: SearchEngine\n  keywords: ReturnType<typeof createKeywordEngine>\n  accessFilter: ((items: CommandItem[]) => CommandItem[]) | null\n  frecency: ReturnType<typeof createFrecencyEngine>\n  groupManager: ReturnType<typeof createGroupManager>\n  contextEngine: ReturnType<typeof createContextEngine>\n  searchHistory: ReturnType<typeof createInMemorySearchHistory>\n  t: TranslationFn\n  config: CommandEngineConfig\n}\n\nconst EngineContext = createContext<EngineContextValue | null>(null)\n\nexport interface CommandEngineProviderProps {\n  children: React.ReactNode\n  config?: CommandEngineConfig\n}\n\n/**\n * Provider that initializes the command engine and makes it available\n * to all child hooks (useCommandPalette, useCommandRegister).\n */\nexport function CommandEngineProvider({ children, config = {} }: CommandEngineProviderProps) {\n  const registryRef = useRef<CommandRegistry | null>(null)\n  if (!registryRef.current) {\n    registryRef.current = createRegistry()\n  }\n\n  const value = useMemo<EngineContextValue>(() => {\n    const search = config.searchEngine ?? createFuzzySearch()\n    const keywords = createKeywordEngine(config.synonyms ?? {})\n    const accessFilter = config.accessControl\n      ? createAccessFilter(config.accessControl, config.accessCheckMode)\n      : null\n    const frecency = createFrecencyEngine(config.frecency)\n    const groupManager = createGroupManager(config.groups)\n    const contextEngine = createContextEngine(config.contextBoostWeight)\n    const t = config.t ?? createDefaultTranslation()\n    const searchHistory = createInMemorySearchHistory(config.searchHistory)\n\n    return {\n      registry: registryRef.current!,\n      search,\n      keywords,\n      accessFilter,\n      frecency,\n      groupManager,\n      contextEngine,\n      searchHistory,\n      t,\n      config,\n    }\n  }, [config])\n\n  return <EngineContext.Provider value={value}>{children}</EngineContext.Provider>\n}\n\n/**\n * Hook to access the engine context. Throws if used outside provider.\n */\nexport function useEngineContext(): EngineContextValue {\n  const ctx = useContext(EngineContext)\n  if (!ctx) {\n    throw new Error('useEngineContext must be used within a <CommandEngineProvider>')\n  }\n  return ctx\n}\n","import { useState, useCallback, useMemo, useSyncExternalStore } from 'react'\nimport type { CommandItem, CommandGroup, CommandPaletteState, ScoredItem } from '../core/types'\nimport type { GroupedResult } from '../core/grouping'\nimport { useEngineContext } from './context'\n\nexport interface UseCommandPaletteReturn extends CommandPaletteState {\n  /** Set the search query */\n  setSearch: (query: string) => void\n  /** Open the palette */\n  open: () => void\n  /** Close the palette */\n  close: () => void\n  /** Toggle the palette */\n  toggle: () => void\n  /** Record that a command was selected (for frecency) */\n  recordUsage: (commandId: string) => void\n  /** Select a command — records frecency, runs onSelect/action/href, closes palette */\n  select: (itemOrId: CommandItem | string) => void\n  /** Flat list of all result items (ungrouped) */\n  flatResults: ScoredItem[]\n  /** Results grouped by group, sorted by group priority (or relevance during search) */\n  groupedResults: GroupedResult[]\n  /** Navigate into a command's children (nested commands) */\n  drillDown: (item: CommandItem) => void\n  /** Go back one level in nested navigation */\n  drillUp: () => void\n  /** Reset to root level */\n  resetPath: () => void\n}\n\n/**\n * Main hook for the command palette.\n * Returns filtered, ranked, and grouped results based on the current search query.\n *\n * Subscribes to the registry via useSyncExternalStore for efficient updates.\n */\nexport function useCommandPalette(): UseCommandPaletteReturn {\n  const {\n    registry, search, keywords, accessFilter, frecency,\n    groupManager, contextEngine, searchHistory, t, config,\n  } = useEngineContext()\n\n  const [searchQuery, setSearchQuery] = useState('')\n  const [isOpen, setIsOpen] = useState(false)\n  const [activePath, setActivePath] = useState<CommandItem[]>([])\n\n  // Subscribe to registry changes\n  const commands = useSyncExternalStore(registry.subscribe, registry.getSnapshot, registry.getSnapshot)\n\n  // Determine which commands to search: root or nested children\n  const activeCommands = useMemo(() => {\n    if (activePath.length === 0) return commands\n    const parent = activePath[activePath.length - 1]\n    return parent.children ?? []\n  }, [commands, activePath])\n\n  // Pipeline: enrich → filter access → search → rank by frecency → context boost\n  const results = useMemo<ScoredItem[]>(() => {\n    // 1. Enrich with synonyms\n    const enriched = keywords.enrichAll(activeCommands)\n\n    // 2. Filter by access control\n    const accessible = accessFilter ? accessFilter(enriched) : enriched\n\n    // 3. Search\n    const searched = search.search(searchQuery, accessible)\n\n    // 4. Rank by frecency (only if there's a search query)\n    let ranked = searched\n    if (searchQuery.trim()) {\n      ranked = frecency.rank(searched, 0.3)\n\n      // 4b. Context boost (only during search, not empty state)\n      if (config.context) {\n        ranked = contextEngine.boost(ranked, config.context)\n        // Re-sort after boosting\n        ranked.sort((a, b) => b.score - a.score)\n      }\n\n      return ranked\n    }\n\n    // 5. Inject \"Recent\" group when search is empty\n    const frecencyConfig = config.frecency\n    if (!searchQuery.trim() && frecencyConfig?.showRecent) {\n      const recentCount = frecencyConfig.recentCount ?? 5\n      const recentLabel = frecencyConfig.recentLabel ?? t('group.recent')\n      const recentIds = frecency.getRecent(recentCount)\n\n      if (recentIds.length > 0) {\n        const recentItems: ScoredItem[] = []\n        const restItems: ScoredItem[] = []\n\n        for (const s of searched) {\n          if (recentIds.includes(s.item.id)) {\n            recentItems.push({\n              item: { ...s.item, group: recentLabel },\n              score: s.score,\n            })\n          } else {\n            restItems.push(s)\n          }\n        }\n\n        // Sort recent items by recency order\n        recentItems.sort(\n          (a, b) => recentIds.indexOf(a.item.id) - recentIds.indexOf(b.item.id),\n        )\n\n        return [...recentItems, ...restItems]\n      }\n    }\n\n    return searched\n  }, [activeCommands, searchQuery, search, keywords, accessFilter, frecency, contextEngine, t, config])\n\n  // Limit results\n  const limitedResults = useMemo(() => {\n    const max = config.maxResults ?? 50\n    return results.slice(0, max)\n  }, [results, config.maxResults])\n\n  // Group results by group field (for consumers building custom UIs)\n  const groupedResults = useMemo<GroupedResult[]>(() => {\n    return groupManager.groupResults(limitedResults, searchQuery)\n  }, [limitedResults, groupManager, searchQuery])\n\n  // Extract active groups\n  const groups = useMemo<CommandGroup[]>(() => {\n    return groupedResults.map((g) => g.group)\n  }, [groupedResults])\n\n  const open = useCallback(() => setIsOpen(true), [])\n  const close = useCallback(() => {\n    setIsOpen(false)\n    setSearchQuery('')\n    setActivePath([])\n  }, [])\n  const toggle = useCallback(() => {\n    setIsOpen((prev) => {\n      if (prev) {\n        setSearchQuery('')\n        setActivePath([])\n      }\n      return !prev\n    })\n  }, [])\n\n  // Nested navigation\n  const drillDown = useCallback((item: CommandItem) => {\n    if (!item.children?.length) return\n    setActivePath((prev) => [...prev, item])\n    setSearchQuery('')\n  }, [])\n\n  const drillUp = useCallback(() => {\n    setActivePath((prev) => prev.slice(0, -1))\n    setSearchQuery('')\n  }, [])\n\n  const resetPath = useCallback(() => {\n    setActivePath([])\n    setSearchQuery('')\n  }, [])\n\n  const recordUsage = useCallback(\n    (commandId: string) => {\n      frecency.recordUsage(commandId)\n    },\n    [frecency],\n  )\n\n  const select = useCallback(\n    (itemOrId: CommandItem | string) => {\n      const item =\n        typeof itemOrId === 'string'\n          ? limitedResults.find((r) => r.item.id === itemOrId)?.item\n          : itemOrId\n      if (!item) return\n\n      // If item has children, drill down instead of executing\n      if (item.children && item.children.length > 0) {\n        drillDown(item)\n        return\n      }\n\n      frecency.recordUsage(item.id)\n\n      // Record search history if enabled\n      if (config.searchHistory?.enabled && searchQuery.trim()) {\n        searchHistory.record(searchQuery, limitedResults.length)\n      }\n\n      if (config.onSelect) {\n        config.onSelect(item)\n      } else if (item.action) {\n        item.action(item)\n      } else if (item.href) {\n        window.location.href = item.href\n      }\n\n      close()\n    },\n    [limitedResults, frecency, searchHistory, config, searchQuery, close, drillDown],\n  )\n\n  return {\n    search: searchQuery,\n    setSearch: setSearchQuery,\n    results: limitedResults,\n    flatResults: limitedResults,\n    groupedResults,\n    groups,\n    isOpen,\n    isLoading: false,\n    breadcrumbs: activePath,\n    depth: activePath.length,\n    open,\n    close,\n    toggle,\n    recordUsage,\n    select,\n    drillDown,\n    drillUp,\n    resetPath,\n  }\n}\n","import React, { useCallback, useEffect, useRef } from 'react'\nimport { Command as Cmdk } from 'cmdk'\nimport { useCommandPalette } from '../../react/use-command-palette'\nimport { useEngineContext } from '../../react/context'\nimport type { CommandItem, ScoredItem, CommandGroup } from '../../core/types'\nimport type { GroupedResults } from '../../core/grouping'\n\n// ============================================================\n// Types\n// ============================================================\n\nexport interface CommandPaletteProps {\n  /** Render function for each command item */\n  renderItem?: (item: CommandItem, score: number) => React.ReactNode\n  /** Render function for empty state */\n  renderEmpty?: () => React.ReactNode\n  /** Render function for loading state */\n  renderLoading?: () => React.ReactNode\n  /** Render function for group heading */\n  renderGroupHeading?: (group: CommandGroup) => React.ReactNode\n  /** Render function for breadcrumbs (nested commands) */\n  renderBreadcrumbs?: (crumbs: CommandItem[], onBack: () => void) => React.ReactNode\n  /** Callback when a command is selected */\n  onSelect?: (item: CommandItem) => void\n  /** Enable keyboard loop navigation */\n  loop?: boolean\n  /** Accessible label for the command menu */\n  label?: string\n  /** Placeholder text for the search input (defaults to i18n value) */\n  placeholder?: string\n  /** Additional className for the root Command element */\n  className?: string\n  /** Additional className for the input element */\n  inputClassName?: string\n  /** Additional className for the list element */\n  listClassName?: string\n  /** Additional className for individual items */\n  itemClassName?: string\n  /** Additional className for group elements */\n  groupClassName?: string\n  /** Additional className for empty state */\n  emptyClassName?: string\n  /** Whether to show as dialog (with overlay) */\n  dialog?: boolean\n  /** Dialog overlay className */\n  overlayClassName?: string\n  /** Dialog content className */\n  contentClassName?: string\n  /** Portal container for dialog mode */\n  container?: HTMLElement\n  /** Disable pointer-based selection */\n  disablePointerSelection?: boolean\n  /** Enable vim-style keybindings (ctrl+n/p/j/k) */\n  vimBindings?: boolean\n  /** Footer content rendered below the list */\n  footer?: React.ReactNode\n}\n\n// ============================================================\n// Default renderers\n// ============================================================\n\nfunction DefaultItem({ item }: { item: CommandItem }) {\n  const hasChildren = item.children && item.children.length > 0\n  return (\n    <div data-cmdk-engine-item=\"\">\n      {item.icon && <span data-cmdk-engine-icon=\"\">{item.icon}</span>}\n      <div data-cmdk-engine-item-content=\"\">\n        <span data-cmdk-engine-item-label=\"\">{item.label}</span>\n        {item.description && (\n          <span data-cmdk-engine-item-description=\"\">{item.description}</span>\n        )}\n      </div>\n      {item.shortcut && (\n        <span data-cmdk-engine-item-shortcut=\"\">\n          {item.shortcut.map((key, i) => (\n            <kbd key={i}>{key}</kbd>\n          ))}\n        </span>\n      )}\n      {hasChildren && (\n        <span data-cmdk-engine-item-chevron=\"\" aria-hidden=\"true\">\n          ›\n        </span>\n      )}\n    </div>\n  )\n}\n\nfunction DefaultBreadcrumbs({ crumbs, onBack }: { crumbs: CommandItem[]; onBack: () => void }) {\n  return (\n    <div data-cmdk-engine-breadcrumbs=\"\">\n      <button data-cmdk-engine-breadcrumb-back=\"\" onClick={onBack} type=\"button\">\n        ‹\n      </button>\n      {crumbs.map((crumb, i) => (\n        <span key={crumb.id} data-cmdk-engine-breadcrumb=\"\">\n          {i > 0 && <span data-cmdk-engine-breadcrumb-separator=\"\">/</span>}\n          {crumb.label}\n        </span>\n      ))}\n    </div>\n  )\n}\n\n// ============================================================\n// CommandPalette Component\n// ============================================================\n\n/**\n * Pre-wired command palette component using cmdk.\n *\n * Sets `shouldFilter={false}` to let cmdk-engine own all filtering,\n * sorting, and ranking. Solves cmdk issues #264, #280, #375.\n *\n * Must be used within a `<CommandEngineProvider>`.\n */\nexport function CommandPalette({\n  renderItem,\n  renderEmpty,\n  renderLoading,\n  renderGroupHeading,\n  renderBreadcrumbs,\n  onSelect,\n  loop = true,\n  label = 'Command palette',\n  placeholder,\n  className,\n  inputClassName,\n  listClassName,\n  itemClassName,\n  groupClassName,\n  emptyClassName,\n  dialog = false,\n  overlayClassName,\n  contentClassName,\n  container,\n  disablePointerSelection = false,\n  vimBindings = true,\n  footer,\n}: CommandPaletteProps) {\n  const {\n    search, setSearch, results, isOpen, close, recordUsage, isLoading,\n    breadcrumbs, depth, drillUp, select,\n  } = useCommandPalette()\n  const { groupManager, t } = useEngineContext()\n\n  const { onSelect: configOnSelect } = useEngineContext().config\n\n  // Use i18n for defaults\n  const resolvedPlaceholder = placeholder ?? t('palette.placeholder')\n  const resolvedRenderEmpty = renderEmpty ?? (() => (\n    <div data-cmdk-engine-empty=\"\">{t('palette.empty')}</div>\n  ))\n\n  const handleSelect = useCallback(\n    (value: string) => {\n      const scored = results.find((r) => r.item.id === value)\n      if (!scored) return\n      const item = scored.item\n\n      // If item has children, drill down\n      if (item.children && item.children.length > 0) {\n        select(item) // select() handles drillDown internally\n        return\n      }\n\n      recordUsage(item.id)\n\n      if (onSelect) {\n        onSelect(item)\n      } else if (configOnSelect) {\n        configOnSelect(item)\n      } else if (item.action) {\n        item.action(item)\n      } else if (item.href) {\n        window.location.href = item.href\n      }\n\n      close()\n    },\n    [results, recordUsage, onSelect, configOnSelect, close, select],\n  )\n\n  // Handle backspace for nested navigation\n  const handleKeyDown = useCallback(\n    (e: React.KeyboardEvent) => {\n      if (e.key === 'Backspace' && search === '' && depth > 0) {\n        e.preventDefault()\n        drillUp()\n      }\n    },\n    [search, depth, drillUp],\n  )\n\n  // Auto-select first item when results change (solves cmdk #280)\n  const firstItemId = results[0]?.item.id\n  const valueRef = useRef(firstItemId)\n\n  useEffect(() => {\n    valueRef.current = firstItemId\n  }, [firstItemId])\n\n  // Group results for rendering — pass search query for relevance-based group ordering\n  const groupedResults: GroupedResults = groupManager.groupResults(results, search)\n\n  const renderItems = (items: ScoredItem[]) =>\n    items.map(({ item, score }) => (\n      <Cmdk.Item\n        key={item.id}\n        value={item.id}\n        disabled={item.disabled}\n        onSelect={handleSelect}\n        className={itemClassName}\n        keywords={item.keywords}\n      >\n        {renderItem ? renderItem(item, score) : <DefaultItem item={item} />}\n      </Cmdk.Item>\n    ))\n\n  const content = (\n    <>\n      {depth > 0 && (\n        renderBreadcrumbs\n          ? renderBreadcrumbs(breadcrumbs, drillUp)\n          : <DefaultBreadcrumbs crumbs={breadcrumbs} onBack={drillUp} />\n      )}\n      <Cmdk.Input\n        value={search}\n        onValueChange={setSearch}\n        placeholder={resolvedPlaceholder}\n        className={inputClassName}\n        onKeyDown={handleKeyDown}\n      />\n      <Cmdk.List className={listClassName}>\n        {isLoading && renderLoading && (\n          <Cmdk.Loading>{renderLoading()}</Cmdk.Loading>\n        )}\n        {results.length === 0 && !isLoading && (\n          <Cmdk.Empty className={emptyClassName}>{resolvedRenderEmpty()}</Cmdk.Empty>\n        )}\n        {groupedResults.map(({ group, items }) => (\n          <Cmdk.Group\n            key={group.id}\n            heading={renderGroupHeading ? renderGroupHeading(group) : group.label}\n            value={group.id}\n            forceMount\n            className={groupClassName}\n          >\n            {renderItems(items)}\n          </Cmdk.Group>\n        ))}\n      </Cmdk.List>\n      {footer}\n    </>\n  )\n\n  if (dialog) {\n    return (\n      <Cmdk.Dialog\n        open={isOpen}\n        onOpenChange={(open) => (open ? open : close())}\n        shouldFilter={false}\n        loop={loop}\n        label={label}\n        className={className}\n        disablePointerSelection={disablePointerSelection}\n        vimBindings={vimBindings}\n        overlayClassName={overlayClassName}\n        contentClassName={contentClassName}\n        container={container}\n        value={firstItemId}\n        onValueChange={() => {}}\n      >\n        {content}\n      </Cmdk.Dialog>\n    )\n  }\n\n  return (\n    <Cmdk\n      shouldFilter={false}\n      loop={loop}\n      label={label}\n      className={className}\n      disablePointerSelection={disablePointerSelection}\n      vimBindings={vimBindings}\n      value={firstItemId}\n      onValueChange={() => {}}\n    >\n      {content}\n    </Cmdk>\n  )\n}\n\n/**\n * Hook to control the command palette open/close state.\n * Provides keyboard shortcut binding (Cmd+K / Ctrl+K).\n *\n * Must be used within a `<CommandEngineProvider>`.\n */\nexport function useCommandPaletteShortcut(shortcut = 'k') {\n  const { isOpen, toggle } = useCommandPalette()\n\n  useEffect(() => {\n    const handler = (e: KeyboardEvent) => {\n      if (e.key === shortcut && (e.metaKey || e.ctrlKey)) {\n        e.preventDefault()\n        toggle()\n      }\n    }\n\n    document.addEventListener('keydown', handler)\n    return () => document.removeEventListener('keydown', handler)\n  }, [shortcut, toggle])\n\n  return { isOpen, toggle }\n}\n"]}