{"version":3,"file":"autoFocus2.mjs","sources":["../../../../../../packages/directives/src/autoFocus.ts"],"sourcesContent":["import { nextTick } from 'vue'\nimport { isNullOrUnDef } from '@tav-ui/utils'\nimport type { App, ObjectDirective } from 'vue'\n// 根据el获取input\nconst getInput = (el: HTMLElement): HTMLInputElement | HTMLTextAreaElement | null =>\n  el instanceof HTMLInputElement ? el : el.querySelector('input') || el.querySelector('textarea')\n\nconst AutoFocusDirective: ObjectDirective = {\n  mounted: async (el: HTMLInputElement | HTMLTextAreaElement, { arg }) => {\n    // 为了防止数据未及时更新。\n    await nextTick()\n    // 对于非文本框聚焦（使用了 contenteditable ）的直接聚焦即可 加上兼容InputNumber值为0选中全部\n    const relEle = arg ? el : getInput(el)\n    if (!isNullOrUnDef(relEle)) {\n      relEle.focus()\n      const className = relEle.getAttribute('class')\n      const value = relEle.value\n      if (!Number.isNaN(value) && className && className.indexOf('number-input') > -1) {\n        relEle?.setSelectionRange(0, 1000)\n      }\n    }\n  },\n}\n\nexport function setupAutoFocusDirective(app: App) {\n  app.directive('autoFocus', AutoFocusDirective)\n}\n\nexport default AutoFocusDirective\n"],"names":[],"mappings":";;;;AAEA,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,gBAAgB,GAAG,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACpH,MAAC,kBAAkB,GAAG;AAC3B,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK;AAClC,IAAI,MAAM,QAAQ,EAAE,CAAC;AACrB,IAAI,MAAM,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AAChC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;AACrB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACrD,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE;AACvF,QAAQ,MAAM,EAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1C,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE;AACK,SAAS,uBAAuB,CAAC,GAAG,EAAE;AAC7C,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;AACjD;;;;"}