{"version":3,"file":"Hotkey.mjs","names":["Flexbox"],"sources":["../../src/Hotkey/Hotkey.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useThemeMode } from 'antd-style';\nimport {\n  ArrowBigUpIcon,\n  ArrowDownIcon,\n  ArrowLeftIcon,\n  ArrowRightIcon,\n  ArrowRightToLineIcon,\n  ArrowUpIcon,\n  ChevronUpIcon,\n  Command,\n  CornerDownLeftIcon,\n  Delete,\n  Grid2X2Icon,\n  MouseIcon,\n  Option,\n  SpaceIcon,\n} from 'lucide-react';\nimport { memo, useEffect, useMemo, useState } from 'react';\n\nimport { Center, Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\nimport LeftClickIcon from '@/icons/lucideExtra/LeftClickIcon';\nimport LeftDoubleClickIcon from '@/icons/lucideExtra/LeftDoubleClickIcon';\nimport RightClickIcon from '@/icons/lucideExtra/RightClickIcon';\nimport RightDoubleClickIcon from '@/icons/lucideExtra/RightDoubleClickIcon';\n\nimport { KeyMapEnum } from './const';\nimport { variants } from './style';\nimport type { HotkeyProps } from './type';\nimport { checkIsAppleDevice, splitKeysByPlus, startCase } from './utils';\n\nconst mappingKey = (isAppleDevice: boolean) => ({\n  [KeyMapEnum.Alt]: isAppleDevice ? <Icon icon={Option} size={{ size: '0.95em' }} /> : 'Alt',\n  [KeyMapEnum.Backspace]: isAppleDevice ? <Icon icon={Delete} /> : 'Backspace',\n  [KeyMapEnum.CommandOrControl]: isAppleDevice ? (\n    <Icon icon={Command} size={{ size: '0.95em' }} />\n  ) : (\n    'Ctrl'\n  ),\n  [KeyMapEnum.Ctrl]: isAppleDevice ? <Icon icon={ChevronUpIcon} /> : 'Ctrl',\n  [KeyMapEnum.Control]: isAppleDevice ? <Icon icon={ChevronUpIcon} /> : 'Ctrl',\n  [KeyMapEnum.Down]: <Icon icon={ArrowDownIcon} />,\n  [KeyMapEnum.Enter]: isAppleDevice ? <Icon icon={CornerDownLeftIcon} /> : 'Enter',\n  [KeyMapEnum.LeftClick]: <Icon icon={LeftClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />,\n  [KeyMapEnum.Left]: <Icon icon={ArrowLeftIcon} />,\n  [KeyMapEnum.Meta]: isAppleDevice ? (\n    <Icon icon={Command} size={{ size: '0.95em' }} />\n  ) : (\n    <Icon icon={Grid2X2Icon} />\n  ),\n  [KeyMapEnum.MiddleClick]: <Icon icon={MouseIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />,\n  [KeyMapEnum.Mod]: isAppleDevice ? <Icon icon={Command} size={{ size: '0.95em' }} /> : 'Ctrl',\n  [KeyMapEnum.RightClick]: (\n    <Icon icon={RightClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />\n  ),\n  [KeyMapEnum.RightDoubleClick]: (\n    <Icon icon={RightDoubleClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />\n  ),\n  [KeyMapEnum.LeftDoubleClick]: (\n    <Icon icon={LeftDoubleClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />\n  ),\n  [KeyMapEnum.Right]: <Icon icon={ArrowRightIcon} />,\n  [KeyMapEnum.Shift]: isAppleDevice ? (\n    <Icon icon={ArrowBigUpIcon} size={{ size: '1.15em', strokeWidth: 1.75 }} />\n  ) : (\n    'Shift'\n  ),\n  [KeyMapEnum.Space]: <Icon icon={SpaceIcon} />,\n  [KeyMapEnum.Tab]: isAppleDevice ? <Icon icon={ArrowRightToLineIcon} /> : 'Tab',\n  [KeyMapEnum.Up]: <Icon icon={ArrowUpIcon} />,\n  [KeyMapEnum.Comma]: ',',\n  [KeyMapEnum.Period]: '.',\n  [KeyMapEnum.Slash]: '?',\n  [KeyMapEnum.Semicolon]: ';',\n  [KeyMapEnum.Quote]: \"'\",\n  [KeyMapEnum.Backquote]: '`',\n  [KeyMapEnum.Backslash]: '\\\\',\n  [KeyMapEnum.BracketLeft]: '[',\n  [KeyMapEnum.BracketRight]: ']',\n  [KeyMapEnum.Minus]: '-',\n  [KeyMapEnum.Equal]: '+',\n});\n\nconst Hotkey = memo<HotkeyProps>(\n  ({\n    variant = 'filled',\n    classNames,\n    styles: customStyles,\n    keys,\n    inverseTheme,\n    isApple,\n    compact,\n    className,\n    style,\n    ...rest\n  }) => {\n    const { isDarkMode } = useThemeMode();\n    const isBorderless = variant === 'borderless';\n    const [keysGroup, setKeysGroup] = useState(() => splitKeysByPlus(keys));\n    const isAppleDevice = useMemo(() => checkIsAppleDevice(isApple), [isApple]);\n\n    useEffect(() => {\n      const newValue = splitKeysByPlus(keys);\n      setKeysGroup(newValue);\n    }, [keys]);\n\n    const mapping: Record<string, any> = useMemo(() => mappingKey(isAppleDevice), [isAppleDevice]);\n\n    return (\n      <Flexbox\n        horizontal\n        align={'center'}\n        className={className}\n        gap={isBorderless ? 6 : 2}\n        style={style}\n        {...rest}\n      >\n        {compact || isBorderless ? (\n          <Center\n            horizontal\n            as={'kbd'}\n            gap={6}\n            style={customStyles?.kbdStyle}\n            className={cx(\n              variants({ inverseTheme, isDarkMode, variant }),\n              classNames?.kbdClassName,\n            )}\n          >\n            {keysGroup.map((key, index) => (\n              <div key={index}>{mapping[key] ?? startCase(key)}</div>\n            ))}\n          </Center>\n        ) : (\n          keysGroup.map((key, index) => (\n            <Center\n              as={'kbd'}\n              key={index}\n              style={customStyles?.kbdStyle}\n              className={cx(\n                variants({ inverseTheme, isDarkMode, variant }),\n                classNames?.kbdClassName,\n              )}\n            >\n              {mapping[key] ?? startCase(key)}\n            </Center>\n          ))\n        )}\n      </Flexbox>\n    );\n  },\n);\n\nHotkey.displayName = 'Hotkey';\n\nexport default Hotkey;\n"],"mappings":"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"}