{"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":";;;;;;;;;;;;;;;;AAiCA,MAAM,cAAc,mBAA4B;EAC7C,WAAW,MAAM,gBAAgB,oBAAC,MAAD;EAAM,MAAM;EAAQ,MAAM,EAAE,MAAM,SAAS;CAAI,CAAA,IAAI;EACpF,WAAW,YAAY,gBAAgB,oBAAC,MAAD,EAAM,MAAM,OAAS,CAAA,IAAI;EAChE,WAAW,mBAAmB,gBAC7B,oBAAC,MAAD;EAAM,MAAM;EAAS,MAAM,EAAE,MAAM,SAAS;CAAI,CAAA,IAEhD;EAED,WAAW,OAAO,gBAAgB,oBAAC,MAAD,EAAM,MAAM,cAAgB,CAAA,IAAI;EAClE,WAAW,UAAU,gBAAgB,oBAAC,MAAD,EAAM,MAAM,cAAgB,CAAA,IAAI;EACrE,WAAW,OAAO,oBAAC,MAAD,EAAM,MAAM,cAAgB,CAAA;EAC9C,WAAW,QAAQ,gBAAgB,oBAAC,MAAD,EAAM,MAAM,mBAAqB,CAAA,IAAI;EACxE,WAAW,YAAY,oBAAC,MAAD;EAAM,MAAM;EAAe,MAAM;GAAE,MAAM;GAAS,aAAa;EAAK;CAAI,CAAA;EAC/F,WAAW,OAAO,oBAAC,MAAD,EAAM,MAAM,cAAgB,CAAA;EAC9C,WAAW,OAAO,gBACjB,oBAAC,MAAD;EAAM,MAAM;EAAS,MAAM,EAAE,MAAM,SAAS;CAAI,CAAA,IAEhD,oBAAC,MAAD,EAAM,MAAM,YAAc,CAAA;EAE3B,WAAW,cAAc,oBAAC,MAAD;EAAM,MAAM;EAAW,MAAM;GAAE,MAAM;GAAS,aAAa;EAAK;CAAI,CAAA;EAC7F,WAAW,MAAM,gBAAgB,oBAAC,MAAD;EAAM,MAAM;EAAS,MAAM,EAAE,MAAM,SAAS;CAAI,CAAA,IAAI;EACrF,WAAW,aACV,oBAAC,MAAD;EAAM,MAAM;EAAgB,MAAM;GAAE,MAAM;GAAS,aAAa;EAAK;CAAI,CAAA;EAE1E,WAAW,mBACV,oBAAC,MAAD;EAAM,MAAM;EAAsB,MAAM;GAAE,MAAM;GAAS,aAAa;EAAK;CAAI,CAAA;EAEhF,WAAW,kBACV,oBAAC,MAAD;EAAM,MAAM;EAAqB,MAAM;GAAE,MAAM;GAAS,aAAa;EAAK;CAAI,CAAA;EAE/E,WAAW,QAAQ,oBAAC,MAAD,EAAM,MAAM,eAAiB,CAAA;EAChD,WAAW,QAAQ,gBAClB,oBAAC,MAAD;EAAM,MAAM;EAAgB,MAAM;GAAE,MAAM;GAAU,aAAa;EAAK;CAAI,CAAA,IAE1E;EAED,WAAW,QAAQ,oBAAC,MAAD,EAAM,MAAM,UAAY,CAAA;EAC3C,WAAW,MAAM,gBAAgB,oBAAC,MAAD,EAAM,MAAM,qBAAuB,CAAA,IAAI;EACxE,WAAW,KAAK,oBAAC,MAAD,EAAM,MAAM,YAAc,CAAA;EAC1C,WAAW,QAAQ;EACnB,WAAW,SAAS;EACpB,WAAW,QAAQ;EACnB,WAAW,YAAY;EACvB,WAAW,QAAQ;EACnB,WAAW,YAAY;EACvB,WAAW,YAAY;EACvB,WAAW,cAAc;EACzB,WAAW,eAAe;EAC1B,WAAW,QAAQ;EACnB,WAAW,QAAQ;AACtB;AAEA,MAAM,SAAS,MACZ,EACC,UAAU,UACV,YACA,QAAQ,cACR,MACA,cACA,SACA,SACA,WACA,OACA,GAAG,WACC;CACJ,MAAM,EAAE,eAAe,aAAa;CACpC,MAAM,eAAe,YAAY;CACjC,MAAM,CAAC,WAAW,gBAAgB,eAAe,gBAAgB,IAAI,CAAC;CACtE,MAAM,gBAAgB,cAAc,mBAAmB,OAAO,GAAG,CAAC,OAAO,CAAC;CAE1E,gBAAgB;EACd,MAAM,WAAW,gBAAgB,IAAI;EACrC,aAAa,QAAQ;CACvB,GAAG,CAAC,IAAI,CAAC;CAET,MAAM,UAA+B,cAAc,WAAW,aAAa,GAAG,CAAC,aAAa,CAAC;CAE7F,OACE,oBAACA,mBAAD;EACE,YAAA;EACA,OAAO;EACI;EACX,KAAK,eAAe,IAAI;EACjB;EACP,GAAI;YAEH,WAAW,eACV,oBAAC,QAAD;GACE,YAAA;GACA,IAAI;GACJ,KAAK;GACL,OAAO,cAAc;GACrB,WAAW,GACT,SAAS;IAAE;IAAc;IAAY;GAAQ,CAAC,GAC9C,YAAY,YACd;aAEC,UAAU,KAAK,KAAK,UACnB,oBAAC,OAAD,EAAA,UAAkB,QAAQ,QAAQ,UAAU,GAAG,EAAO,GAA5C,KAA4C,CACvD;EACK,CAAA,IAER,UAAU,KAAK,KAAK,UAClB,oBAAC,QAAD;GACE,IAAI;GAEJ,OAAO,cAAc;GACrB,WAAW,GACT,SAAS;IAAE;IAAc;IAAY;GAAQ,CAAC,GAC9C,YAAY,YACd;aAEC,QAAQ,QAAQ,UAAU,GAAG;EACxB,GARD,KAQC,CACT;CAEI,CAAA;AAEb,CACF;AAEA,OAAO,cAAc"}