{"version":3,"file":"render.cjs","sources":["../../../components/contextmenu/render.tsx"],"sourcesContent":["import { Dropdown } from '@/components/dropdown'\nimport { DropdownList } from '@/components/dropdown-list'\nimport { DropdownItem } from '@/components/dropdown-item'\nimport { Icon } from '@/components/icon'\n\nimport { useIcons } from '@vexip-ui/config'\nimport { useRtl } from '@vexip-ui/hooks'\n\nimport type { NameHelper } from '@vexip-ui/config'\nimport type { ContextmenuConfig } from './symbol'\n\nfunction renderItemIcon(item: ContextmenuConfig, nh: NameHelper) {\n  if (!item.icon) return null\n\n  return (\n    <div class={nh.be('icon')}>\n      <Icon\n        icon={item.icon}\n        style={[{ color: item.iconColor || item.color }, (item.icon as any).style]}\n      ></Icon>\n    </div>\n  )\n}\n\nfunction renderItemShortcut(item: ContextmenuConfig, nh: NameHelper) {\n  if (!item.shortcut) return null\n\n  return <div class={nh.be('shortcut')}>{item.shortcut}</div>\n}\n\nfunction renderGroupItem(item: ContextmenuConfig, nh: NameHelper) {\n  const icons = useIcons()\n  const { isRtl } = useRtl()\n\n  return (\n    <Dropdown\n      inherit\n      transfer={false}\n      {...{\n        onContextmenu: (event: MouseEvent) => {\n          event.preventDefault()\n          event.stopPropagation()\n        },\n      }}\n    >\n      {{\n        default: () => (\n          <DropdownItem\n            class={nh.be('item')}\n            label={item.key}\n            divided={item.divided}\n            disabled={item.disabled}\n          >\n            {renderItemIcon(item, nh)}\n            {typeof item.renderer === 'function' ? (\n              item.renderer()\n            ) : (\n              <span class={nh.be('label')} style={{ color: item.color }}>\n                {item.label || item.key}\n              </span>\n            )}\n            {renderItemShortcut(item, nh)}\n            <div class={[nh.be('icon'), nh.be('arrow')]}>\n              <Icon\n                {...(isRtl.value ? icons.value.angleLeft : icons.value.angleRight)}\n                style={{ color: item.iconColor || item.color }}\n              ></Icon>\n            </div>\n          </DropdownItem>\n        ),\n        drop: () => (\n          <DropdownList\n            class={[\n              nh.be('list'),\n              item.children!.some(c => c.icon)\n                ? nh.bem('list', 'icons')\n                : nh.bem('list', 'no-icon'),\n              item.children!.some(c => c.children?.length)\n                ? nh.bem('list', 'arrows')\n                : nh.bem('list', 'no-arrow'),\n            ]}\n          >\n            {item.children!.map(i => renderItem({ nh, config: i }))}\n          </DropdownList>\n        ),\n      }}\n    </Dropdown>\n  )\n}\n\nexport function renderItem({ config, nh }: { config: ContextmenuConfig, nh: NameHelper }) {\n  if (config.children?.length) {\n    return renderGroupItem(config, nh)\n  } else {\n    return (\n      <DropdownItem\n        class={nh.be('item')}\n        label={config.key}\n        divided={config.divided}\n        disabled={config.disabled}\n      >\n        {renderItemIcon(config, nh)}\n        {typeof config.renderer === 'function' ? (\n          config.renderer()\n        ) : (\n          <span class={nh.be('label')} style={{ color: config.color }}>\n            {config.label || config.key}\n          </span>\n        )}\n        {renderItemShortcut(config, nh)}\n      </DropdownItem>\n    )\n  }\n}\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","renderItemIcon","item","nh","icon","_createVNode","be","Icon","color","iconColor","style","renderItemShortcut","shortcut","renderGroupItem","icons","useIcons","isRtl","useRtl","Dropdown","_mergeProps","onContextmenu","event","preventDefault","stopPropagation","default","DropdownItem","key","divided","disabled","renderer","label","value","angleLeft","angleRight","drop","_slot","DropdownList","children","some","c","bem","length","map","i","renderItem","config"],"mappings":"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"}