{"version":3,"file":"np-button.vue2.mjs","sources":["../../../src/np-button/src/np-button.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n  name: 'NpButton',\n});\n</script>\n<template>\n  <div\n    class=\"flex\"\n    :class=\"[bemClass, props.class]\"\n    style=\"padding: 0\"\n    :style=\"wrapperStyle\"\n  >\n    <n-spin\n      :show=\"loading\"\n      :size=\"14\"\n      :class=\"{ 'cursor-wait': loading }\"\n      class=\"flex\"\n    >\n      <n-button\n        ref=\"buttonRef\"\n        style=\"margin: 0\"\n        v-bind=\"$attrs\"\n        :class=\"props.class\"\n        @click=\"handleClick\"\n      >\n        <template v-if=\"$slots['icon']\" #icon>\n          <slot name=\"icon\"></slot>\n        </template>\n        <slot></slot>\n      </n-button>\n    </n-spin>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useCreate } from '../../_hooks/create'\nimport { npButtonProps } from './props'\nimport { NButton, NSpin } from 'naive-ui'\nimport { throttle } from 'lodash-es'\nimport { computed, ref, useAttrs, type CSSProperties } from 'vue'\nimport { run } from '../../utils'\n\nconst { bemClass } = useCreate('np-button')\n\n\n\nconst props = defineProps(npButtonProps)\n\nconst emit = defineEmits<{\n  (event: 'click', e?: MouseEvent): void\n}>()\n\nconst wrapperStyle = computed(() => {\n  const _style: CSSProperties = {}\n  const attrs = useAttrs()\n  const { style = {} } = attrs as { style: CSSProperties }\n  if (style.width) {\n    _style.width = style.width\n  }\n  return style\n})\n\nconst loading = ref(false)\nlet timer: any\nconst handleClick = throttle(\n  (e?: MouseEvent) => {\n    if (timer !== undefined) {\n      return\n    }\n    if (props.click !== undefined) {\n      timer = setTimeout(() => {\n        loading.value = true\n      }, 300)\n      run(props.click, e)\n        .then(() => {})\n        .finally(() => {\n          clearTimeout(timer)\n          timer = undefined\n          loading.value = false\n        })\n    } else {\n      emit('click', e)\n    }\n  },\n  350,\n  {\n    leading: true,\n    trailing: false,\n  }\n)\n\nconst buttonRef = ref()\ndefineExpose(\n  new Proxy(\n    {},\n    {\n      get(_, p) {\n        if (p === 'click') {\n          return handleClick\n        }\n        return buttonRef.value?.[p]\n      },\n      has(_, p) {\n        if (p === 'click') {\n          return true\n        }\n        return p in buttonRef.value\n      },\n    }\n  )\n)\n</script>\n"],"names":["__MACROS_defineComponent"],"mappings":";;;;;;;;AAEA,MAA6B,cAAAA,eAAyB,CAAA;AAAA,EACpD,IAAM,EAAA,UAAA;AACR,CAAC,CAAA,CAAA;;;;;;;AAuCD,IAAA,MAAM,EAAE,QAAA,EAAa,GAAA,SAAA,CAAU,WAAW,CAAA,CAAA;AAU1C,IAAM,MAAA,YAAA,GAAe,SAAS,MAAM;AAClC,MAAA,MAAM,SAAwB,EAAC,CAAA;AAC/B,MAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AACvB,MAAA,MAAM,EAAE,KAAA,GAAQ,EAAC,EAAM,GAAA,KAAA,CAAA;AACvB,MAAA,IAAI,MAAM,KAAO,EAAA;AACf,QAAA,MAAA,CAAO,QAAQ,KAAM,CAAA,KAAA,CAAA;AAAA,OACvB;AACA,MAAO,OAAA,KAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,OAAA,GAAU,IAAI,KAAK,CAAA,CAAA;AACzB,IAAI,IAAA,KAAA,CAAA;AACJ,IAAA,MAAM,WAAc,GAAA,QAAA;AAAA,MAClB,CAAC,CAAmB,KAAA;AAClB,QAAA,IAAI,UAAU,KAAW,CAAA,EAAA;AACvB,UAAA,OAAA;AAAA,SACF;AACA,QAAI,IAAA,KAAA,CAAM,UAAU,KAAW,CAAA,EAAA;AAC7B,UAAA,KAAA,GAAQ,WAAW,MAAM;AACvB,YAAA,OAAA,CAAQ,KAAQ,GAAA,IAAA,CAAA;AAAA,aACf,GAAG,CAAA,CAAA;AACN,UAAA,GAAA,CAAI,KAAM,CAAA,KAAA,EAAO,CAAC,CAAA,CACf,KAAK,MAAM;AAAA,WAAE,CACb,CAAA,OAAA,CAAQ,MAAM;AACb,YAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAClB,YAAQ,KAAA,GAAA,KAAA,CAAA,CAAA;AACR,YAAA,OAAA,CAAQ,KAAQ,GAAA,KAAA,CAAA;AAAA,WACjB,CAAA,CAAA;AAAA,SACE,MAAA;AACL,UAAA,IAAA,CAAK,SAAS,CAAC,CAAA,CAAA;AAAA,SACjB;AAAA,OACF;AAAA,MACA,GAAA;AAAA,MACA;AAAA,QACE,OAAS,EAAA,IAAA;AAAA,QACT,QAAU,EAAA,KAAA;AAAA,OACZ;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,YAAY,GAAI,EAAA,CAAA;AACtB,IAAA,QAAA;AAAA,MACE,IAAI,KAAA;AAAA,QACF,EAAC;AAAA,QACD;AAAA,UACE,GAAA,CAAI,GAAG,CAAG,EAAA;AACR,YAAA,IAAI,MAAM,OAAS,EAAA;AACjB,cAAO,OAAA,WAAA,CAAA;AAAA,aACT;AACA,YAAO,OAAA,SAAA,CAAU,QAAQ,CAAC,CAAA,CAAA;AAAA,WAC5B;AAAA,UACA,GAAA,CAAI,GAAG,CAAG,EAAA;AACR,YAAA,IAAI,MAAM,OAAS,EAAA;AACjB,cAAO,OAAA,IAAA,CAAA;AAAA,aACT;AACA,YAAA,OAAO,KAAK,SAAU,CAAA,KAAA,CAAA;AAAA,WACxB;AAAA,SACF;AAAA,OACF;AAAA,KACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}