{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-attrs/index.ts"],"sourcesContent":["import { getCurrentInstance, reactive, shallowRef, watchEffect } from 'vue'\nimport type { Recordable } from '@tni-plus/types'\n\ninterface UseAttrsOptions {\n  excludeListeners?: boolean\n  excludeKeys?: string[]\n  excludeDefaultKeys?: boolean\n}\n\nconst DEFAULT_EXCLUDE_KEYS = ['class', 'style']\nconst LISTENER_PREFIX = /^on[A-Z]/\n\nfunction entries<T>(obj: Recordable<T>): [string, T][] {\n  return Object.keys(obj).map((key: string) => [key, obj[key]])\n}\n\nfunction useAttrs(options: UseAttrsOptions = {}): Recordable<any> {\n  const instance = getCurrentInstance()\n  if (!instance) return {}\n\n  const {\n    excludeListeners = false,\n    excludeKeys = [],\n    excludeDefaultKeys = true,\n  } = options\n  const attrs = shallowRef({})\n  const allExcludeKeys = excludeKeys.concat(\n    excludeDefaultKeys ? DEFAULT_EXCLUDE_KEYS : []\n  )\n\n  instance.attrs = reactive(instance.attrs)\n\n  watchEffect(() => {\n    const res = entries(instance.attrs).reduce((acm, [key, val]) => {\n      if (\n        !allExcludeKeys.includes(key) &&\n        !(excludeListeners && LISTENER_PREFIX.test(key))\n      ) {\n        acm[key] = val\n      }\n\n      return acm\n    }, {} as Recordable<any>)\n\n    attrs.value = res\n  })\n\n  return attrs\n}\n\nexport { useAttrs, type UseAttrsOptions }\n"],"names":[],"mappings":";;AASA,MAAM,oBAAA,GAAuB,CAAC,OAAA,EAAS,OAAO,CAAA,CAAA;AAC9C,MAAM,eAAkB,GAAA,UAAA,CAAA;AAExB,SAAS,QAAW,GAAmC,EAAA;AACrD,EAAO,OAAA,MAAA,CAAO,IAAK,CAAA,GAAG,CAAE,CAAA,GAAA,CAAI,CAAC,GAAA,KAAgB,CAAC,GAAA,EAAK,GAAI,CAAA,GAAA,CAAI,CAAC,CAAA,CAAA;AAC9D,CAAA;AAEA,SAAS,QAAA,CAAS,OAA2B,GAAA,EAAqB,EAAA;AAChE,EAAA,MAAM,WAAW,kBAAmB,EAAA,CAAA;AACpC,EAAA,IAAI,CAAC,QAAA;AAAU,IAAA,OAAO,EAAC,CAAA;AAEvB,EAAM,MAAA;AAAA,IACJ,gBAAmB,GAAA,KAAA;AAAA,IACnB,cAAc,EAAC;AAAA,IACf,kBAAqB,GAAA,IAAA;AAAA,GACnB,GAAA,OAAA,CAAA;AACJ,EAAM,MAAA,KAAA,GAAQ,UAAW,CAAA,EAAE,CAAA,CAAA;AAC3B,EAAA,MAAM,iBAAiB,WAAY,CAAA,MAAA;AAAA,IACjC,kBAAA,GAAqB,uBAAuB,EAAC;AAAA,GAC/C,CAAA;AAEA,EAAS,QAAA,CAAA,KAAA,GAAQ,QAAS,CAAA,QAAA,CAAS,KAAK,CAAA,CAAA;AAExC,EAAA,WAAA,CAAY,MAAM;AAChB,IAAM,MAAA,GAAA,GAAM,OAAQ,CAAA,QAAA,CAAS,KAAK,CAAA,CAAE,MAAO,CAAA,CAAC,GAAK,EAAA,CAAC,GAAK,EAAA,GAAG,CAAM,KAAA;AAC9D,MACE,IAAA,CAAC,cAAe,CAAA,QAAA,CAAS,GAAG,CAAA,IAC5B,EAAE,gBAAoB,IAAA,eAAA,CAAgB,IAAK,CAAA,GAAG,CAC9C,CAAA,EAAA;AACA,QAAA,GAAA,CAAI,GAAO,CAAA,GAAA,GAAA,CAAA;AAAA,OACb;AAEA,MAAO,OAAA,GAAA,CAAA;AAAA,KACT,EAAG,EAAqB,CAAA,CAAA;AAExB,IAAA,KAAA,CAAM,KAAQ,GAAA,GAAA,CAAA;AAAA,GACf,CAAA,CAAA;AAED,EAAO,OAAA,KAAA,CAAA;AACT;;;;"}