{"version":3,"file":"useAttrs2.mjs","sources":["../../../../../../packages/hooks/core/useAttrs.ts"],"sourcesContent":["import { getCurrentInstance, reactive, shallowRef, watchEffect } from 'vue'\nimport type { Ref } from 'vue'\n\ninterface Params {\n  excludeListeners?: boolean\n  excludeKeys?: string[]\n  excludeDefaultKeys?: boolean\n}\n\ndeclare type Recordable<T = any> = Record<string, T>\n\nconst DEFAULT_EXCLUDE_KEYS = ['class', 'style']\nconst LISTENER_PREFIX = /^on[A-Z]/\n\nexport function entries<T>(obj: Recordable<T>): [string, T][] {\n  return Object.keys(obj).map((key: string) => [key, obj[key]])\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function useAttrs(params: Params = {}): Ref<Recordable> | {} {\n  const instance = getCurrentInstance()\n  if (!instance) return {}\n\n  const { excludeListeners = false, excludeKeys = [], excludeDefaultKeys = true } = params\n  const attrs = shallowRef({})\n  const allExcludeKeys = excludeKeys.concat(excludeDefaultKeys ? DEFAULT_EXCLUDE_KEYS : [])\n\n  // Since attrs are not reactive, make it reactive instead of doing in `onUpdated` hook for better performance\n  instance.attrs = reactive(instance.attrs)\n\n  watchEffect(() => {\n    const res = entries(instance.attrs).reduce((acm, [key, val]) => {\n      if (!allExcludeKeys.includes(key) && !(excludeListeners && LISTENER_PREFIX.test(key)))\n        acm[key] = val\n\n      return acm\n    }, {} as Recordable)\n\n    attrs.value = res\n  })\n\n  return attrs\n}\n"],"names":[],"mappings":";;AACA,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAChD,MAAM,eAAe,GAAG,UAAU,CAAC;AAC5B,SAAS,OAAO,CAAC,GAAG,EAAE;AAC7B,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AACM,SAAS,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE;AACtC,EAAE,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;AACxC,EAAE,IAAI,CAAC,QAAQ;AACf,IAAI,OAAO,EAAE,CAAC;AACd,EAAE,MAAM,EAAE,gBAAgB,GAAG,KAAK,EAAE,WAAW,GAAG,EAAE,EAAE,kBAAkB,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;AAC3F,EAAE,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;AAC/B,EAAE,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,kBAAkB,GAAG,oBAAoB,GAAG,EAAE,CAAC,CAAC;AAC5F,EAAE,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5C,EAAE,WAAW,CAAC,MAAM;AACpB,IAAI,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK;AACpE,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3F,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACvB,MAAM,OAAO,GAAG,CAAC;AACjB,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,IAAI,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;AACtB,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,KAAK,CAAC;AACf;;;;"}