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