{"version":3,"file":"use-menu.mjs","sources":["../../../../../../packages/components/menu/src/use-menu.ts"],"sourcesContent":["import { computed, inject } from 'vue'\nimport { throwError } from '@element-plus/utils/error'\n\nimport type { ComponentInternalInstance, Ref, CSSProperties } from 'vue'\nimport type { MenuProvider } from './types'\n\nexport default function useMenu(\n  instance: ComponentInternalInstance,\n  currentIndex: Ref<string>\n) {\n  const rootMenu = inject<MenuProvider>('rootMenu')\n  if (!rootMenu) throwError('useMenu', 'can not inject root menu')\n\n  const indexPath = computed(() => {\n    let parent = instance.parent!\n    const path = [currentIndex.value]\n    while (parent.type.name !== 'ElMenu') {\n      if (parent.props.index) {\n        path.unshift(parent.props.index as string)\n      }\n      parent = parent.parent!\n    }\n    return path\n  })\n\n  const parentMenu = computed(() => {\n    let parent = instance.parent\n    while (parent && !['ElMenu', 'ElSubMenu'].includes(parent.type.name!)) {\n      parent = parent.parent\n    }\n    return parent!\n  })\n  const paddingStyle = computed<CSSProperties>(() => {\n    let parent = instance.parent\n    if (rootMenu.props.mode !== 'vertical') return {}\n\n    let padding = 20\n\n    if (rootMenu.props.collapse) {\n      padding = 20\n    } else {\n      while (parent && parent.type.name !== 'ElMenu') {\n        if (parent.type.name === 'ElSubMenu') {\n          padding += 20\n        }\n        parent = parent.parent\n      }\n    }\n    return { paddingLeft: `${padding}px` }\n  })\n\n  return {\n    parentMenu,\n    paddingStyle,\n    indexPath,\n  }\n}\n"],"names":[],"mappings":";;;iBAOE,UACA,cACA;AACA,QAAM,WAAW,OAAqB;AACtC,MAAI,CAAC;AAAU,eAAW,WAAW;AAErC,QAAM,YAAY,SAAS,MAAM;AAC/B,QAAI,SAAS,SAAS;AACtB,UAAM,OAAO,CAAC,aAAa;AAC3B,WAAO,OAAO,KAAK,SAAS,UAAU;AACpC,UAAI,OAAO,MAAM,OAAO;AACtB,aAAK,QAAQ,OAAO,MAAM;AAAA;AAE5B,eAAS,OAAO;AAAA;AAElB,WAAO;AAAA;AAGT,QAAM,aAAa,SAAS,MAAM;AAChC,QAAI,SAAS,SAAS;AACtB,WAAO,UAAU,CAAC,CAAC,UAAU,aAAa,SAAS,OAAO,KAAK,OAAQ;AACrE,eAAS,OAAO;AAAA;AAElB,WAAO;AAAA;AAET,QAAM,eAAe,SAAwB,MAAM;AACjD,QAAI,SAAS,SAAS;AACtB,QAAI,SAAS,MAAM,SAAS;AAAY,aAAO;AAE/C,QAAI,UAAU;AAEd,QAAI,SAAS,MAAM,UAAU;AAC3B,gBAAU;AAAA,WACL;AACL,aAAO,UAAU,OAAO,KAAK,SAAS,UAAU;AAC9C,YAAI,OAAO,KAAK,SAAS,aAAa;AACpC,qBAAW;AAAA;AAEb,iBAAS,OAAO;AAAA;AAAA;AAGpB,WAAO,EAAE,aAAa,GAAG;AAAA;AAG3B,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA;AAAA;;;;"}