{"version":3,"file":"use-menu.mjs","sources":["../../../../../packages/components/menu/src/use-menu.ts"],"sourcesContent":["import { computed, inject } from 'vue'\nimport { throwError } from '@element-ultra/utils'\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\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":";;;;AAMwB,SAAA,OAAA,CACtB,UACA,YACA,EAAA;AACA,EAAM,MAAA,QAAA,GAAW,OAAqB,UAAU,CAAA,CAAA;AAChD,EAAA,IAAI,CAAC,QAAA;AAAU,IAAA,UAAA,CAAW,WAAW,0BAA0B,CAAA,CAAA;AAE/D,EAAM,MAAA,SAAA,GAAY,SAAS,MAAM;AAC/B,IAAA,IAAI,SAAS,QAAS,CAAA,MAAA,CAAA;AACtB,IAAM,MAAA,IAAA,GAAO,CAAC,YAAA,CAAa,KAAK,CAAA,CAAA;AAChC,IAAO,OAAA,MAAA,CAAO,IAAK,CAAA,IAAA,KAAS,QAAU,EAAA;AACpC,MAAI,IAAA,MAAA,CAAO,MAAM,KAAO,EAAA;AACtB,QAAK,IAAA,CAAA,OAAA,CAAQ,MAAO,CAAA,KAAA,CAAM,KAAe,CAAA,CAAA;AAAA,OAC3C;AACA,MAAA,MAAA,GAAS,MAAO,CAAA,MAAA,CAAA;AAAA,KAClB;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAM,MAAA,UAAA,GAAa,SAAS,MAAM;AAChC,IAAA,IAAI,SAAS,QAAS,CAAA,MAAA,CAAA;AACtB,IAAO,OAAA,MAAA,IAAU,CAAC,CAAC,QAAU,EAAA,WAAW,EAAE,QAAS,CAAA,MAAA,CAAO,IAAK,CAAA,IAAK,CAAG,EAAA;AACrE,MAAA,MAAA,GAAS,MAAO,CAAA,MAAA,CAAA;AAAA,KAClB;AACA,IAAO,OAAA,MAAA,CAAA;AAAA,GACR,CAAA,CAAA;AACD,EAAM,MAAA,YAAA,GAAe,SAAwB,MAAM;AACjD,IAAA,IAAI,SAAS,QAAS,CAAA,MAAA,CAAA;AAEtB,IAAA,IAAI,OAAU,GAAA,EAAA,CAAA;AAEd,IAAI,IAAA,QAAA,CAAS,MAAM,QAAU,EAAA;AAC3B,MAAU,OAAA,GAAA,EAAA,CAAA;AAAA,KACL,MAAA;AACL,MAAA,OAAO,MAAU,IAAA,MAAA,CAAO,IAAK,CAAA,IAAA,KAAS,QAAU,EAAA;AAC9C,QAAI,IAAA,MAAA,CAAO,IAAK,CAAA,IAAA,KAAS,WAAa,EAAA;AACpC,UAAW,OAAA,IAAA,EAAA,CAAA;AAAA,SACb;AACA,QAAA,MAAA,GAAS,MAAO,CAAA,MAAA,CAAA;AAAA,OAClB;AAAA,KACF;AACA,IAAO,OAAA,EAAE,WAAa,EAAA,CAAA,EAAG,OAAY,CAAA,EAAA,CAAA,EAAA,CAAA;AAAA,GACtC,CAAA,CAAA;AAED,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,GACF,CAAA;AACF;;;;"}