{"version":3,"file":"index.mjs","sources":["../../../../../packages/directives/permission/index.ts"],"sourcesContent":["import type { Directive } from 'vue'\nimport { http } from '@el-plus/utils/http'\n\n// v-permisson:CGXQD:QXSP\nexport type Permission = `${string}:${string}`\nexport type HasPermission = Permission | boolean\nconst vPermisson: Directive<HTMLElement> & { name: string } = {\n  name: 'permission',\n  mounted(el, binding) {\n    const { arg, value } = binding.value\n    if (!arg && !value) {\n      return\n    }\n    el.style.display = 'none'\n    const permission: Permission = `${arg}:${value}`\n    checkPermission(permission, el)\n  },\n  updated(el, binding) {\n    const { arg, value } = binding.value\n    if (!arg && !value) {\n      if (el.style.display === 'none') {\n        el.style.display = ''\n      }\n      return\n    }\n    const permission = `${arg}:${value}`\n    checkPermission(permission, el)\n  },\n}\n\nexport async function checkPermission(permission: string, el: HTMLElement) {\n  const { data: roles = [] } = await queryRoles()\n  const hasPermission = roles.indexOf(permission) > -1\n  if (!hasPermission) {\n    el && el.parentNode && el.parentNode.removeChild(el)\n  } else {\n    el.style.display = ''\n  }\n  return hasPermission\n}\ntype RequestPromise = Promise<{ data: string[] }>\nlet requestPromise: RequestPromise | null = null\nasync function queryRoles(): RequestPromise {\n  try {\n    if (requestPromise) {\n      return requestPromise\n    }\n    requestPromise = http.post('/api-u/api/saas/user/appButtonRoleList', {\n      loading: true,\n    })\n    return requestPromise\n  } catch (error) {\n    console.error(error)\n    return { data: [] }\n  }\n}\n\nexport default vPermisson\n"],"names":[],"mappings":";;AAMA,MAAM,UAAA,GAAwD;AAAA,EAC5D,IAAA,EAAM,YAAA;AAAA,EACN,OAAA,CAAQ,IAAI,OAAA,EAAS;AACnB,IAAA,MAAM,EAAE,GAAA,EAAK,KAAA,EAAM,GAAI,OAAA,CAAQ,KAAA;AAC/B,IAAA,IAAI,CAAC,GAAA,IAAO,CAAC,KAAA,EAAO;AAClB,MAAA;AAAA,IACF;AACA,IAAA,EAAA,CAAG,MAAM,OAAA,GAAU,MAAA;AACnB,IAAA,MAAM,UAAA,GAAyB,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAC9C,IAAA,eAAA,CAAgB,YAAY,EAAE,CAAA;AAAA,EAChC,CAAA;AAAA,EACA,OAAA,CAAQ,IAAI,OAAA,EAAS;AACnB,IAAA,MAAM,EAAE,GAAA,EAAK,KAAA,EAAM,GAAI,OAAA,CAAQ,KAAA;AAC/B,IAAA,IAAI,CAAC,GAAA,IAAO,CAAC,KAAA,EAAO;AAClB,MAAA,IAAI,EAAA,CAAG,KAAA,CAAM,OAAA,KAAY,MAAA,EAAQ;AAC/B,QAAA,EAAA,CAAG,MAAM,OAAA,GAAU,EAAA;AAAA,MACrB;AACA,MAAA;AAAA,IACF;AACA,IAAA,MAAM,UAAA,GAAa,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAClC,IAAA,eAAA,CAAgB,YAAY,EAAE,CAAA;AAAA,EAChC;AACF;AAEA,eAAsB,eAAA,CAAgB,YAAoB,EAAA,EAAiB;AACzE,EAAA,MAAM,EAAE,IAAA,EAAM,KAAA,GAAQ,EAAC,EAAE,GAAI,MAAM,UAAA,EAAW;AAC9C,EAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAA,GAAI,EAAA;AAClD,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,EAAA,IAAM,EAAA,CAAG,UAAA,IAAc,EAAA,CAAG,UAAA,CAAW,YAAY,EAAE,CAAA;AAAA,EACrD,CAAA,MAAO;AACL,IAAA,EAAA,CAAG,MAAM,OAAA,GAAU,EAAA;AAAA,EACrB;AACA,EAAA,OAAO,aAAA;AACT;AAEA,IAAI,cAAA,GAAwC,IAAA;AAC5C,eAAe,UAAA,GAA6B;AAC1C,EAAA,IAAI;AACF,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,OAAO,cAAA;AAAA,IACT;AACA,IAAA,cAAA,GAAiB,IAAA,CAAK,KAAK,wCAAA,EAA0C;AAAA,MACnE,OAAA,EAAS;AAAA,KACV,CAAA;AACD,IAAA,OAAO,cAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AACnB,IAAA,OAAO,EAAE,IAAA,EAAM,EAAC,EAAE;AAAA,EACpB;AACF;;;;"}