{"version":3,"file":"button.mjs","sources":["../../../components/button/button.tsx"],"sourcesContent":["import { Badge } from '@/components/badge'\r\nimport { CollapseTransition } from '@/components/collapse-transition'\r\nimport { Icon } from '@/components/icon'\r\nimport { FIELD_OPTIONS } from '@/components/form/symbol'\r\nimport { Renderer } from '@/components/renderer'\r\n\r\nimport { computed, defineComponent, inject, onBeforeUnmount, reactive, ref, renderSlot } from 'vue'\r\n\r\nimport {\r\n  createIconProp,\r\n  createSizeProp,\r\n  emitEvent,\r\n  useIcons,\r\n  useNameHelper,\r\n  useProps,\r\n} from '@vexip-ui/config'\r\nimport { adjustAlpha, isClient, mixColor, parseColorToRgba } from '@vexip-ui/utils'\r\nimport { buttonProps } from './props'\r\nimport { GROUP_STATE, buttonTypes } from './symbol'\r\n\r\nexport default defineComponent({\r\n  name: 'Button',\r\n  props: buttonProps,\r\n  emits: [],\r\n  setup(_props, { slots }) {\r\n    const fieldActions = inject(FIELD_OPTIONS, null)\r\n\r\n    const props = useProps('button', _props, {\r\n      size: createSizeProp(fieldActions ? fieldActions.size : undefined),\r\n      type: {\r\n        default: null,\r\n        validator: value => buttonTypes.includes(value),\r\n      },\r\n      dashed: false,\r\n      text: false,\r\n      simple: false,\r\n      ghost: false,\r\n      disabled: () => (fieldActions ? fieldActions.disabled.value : false),\r\n      loading: () => (fieldActions ? fieldActions.loading.value : false),\r\n      circle: false,\r\n      loadingIcon: createIconProp(),\r\n      loadingEffect: null,\r\n      icon: createIconProp(),\r\n      color: null,\r\n      buttonType: {\r\n        default: 'button',\r\n        validator: value => ['button', 'submit', 'reset'].includes(value),\r\n      },\r\n      block: false,\r\n      tag: 'button',\r\n      noPulse: false,\r\n      badge: null,\r\n      slots: () => ({}),\r\n    })\r\n\r\n    const groupState = inject(GROUP_STATE, null)\r\n\r\n    const nh = useNameHelper('button')\r\n    const icons = useIcons()\r\n    const pulsing = ref(false)\r\n    const index = ref(0)\r\n    const isLast = ref(false)\r\n\r\n    const isIconOnly = computed(() => {\r\n      return !slots.default && !props.slots.default\r\n    })\r\n    const type = computed(() => {\r\n      return props.type ?? groupState?.type ?? 'default'\r\n    })\r\n    const size = computed(() => {\r\n      return groupState?.size ?? props.size\r\n    })\r\n    const className = computed(() => {\r\n      return {\r\n        [nh.b()]: true,\r\n        [nh.bs('vars')]: true,\r\n        [nh.bm('inherit')]: props.inherit,\r\n        [nh.bm(type.value)]: type.value !== 'default',\r\n        [nh.bm('simple')]: !props.ghost && props.simple,\r\n        [nh.bm('ghost')]: props.ghost,\r\n        [nh.bm('text')]: props.text,\r\n        [nh.bm('dashed')]: props.dashed,\r\n        [nh.bm('disabled')]: props.disabled,\r\n        [nh.bm('loading')]: props.loading,\r\n        [nh.bm('circle')]: props.circle,\r\n        [nh.bm('icon-only')]: isIconOnly.value,\r\n        [nh.bm(size.value)]: size.value !== 'default',\r\n        [nh.bm('pulsing')]: pulsing.value,\r\n        [nh.bm('first')]: index.value === 1,\r\n        [nh.bm('last')]: isLast.value,\r\n        [nh.bm('block')]: props.block,\r\n      }\r\n    })\r\n    const colorMap = computed(() => {\r\n      if (!props.color) return null\r\n\r\n      const rootStyle = isClient ? getComputedStyle(document.documentElement) : null\r\n      const black = parseColorToRgba(rootStyle?.getPropertyValue(nh.nv('color-black')) || '#000')\r\n      const white = parseColorToRgba(rootStyle?.getPropertyValue(nh.nv('color-white')) || '#fff')\r\n      const baseColor = parseColorToRgba(props.color)\r\n\r\n      return {\r\n        base: baseColor.toString(),\r\n        light2: mixColor(white, baseColor, 0.2).toString(),\r\n        dark1: mixColor(black, baseColor, 0.1).toString(),\r\n        opacity1: adjustAlpha(baseColor, 0.9).toString(),\r\n        opacity3: adjustAlpha(baseColor, 0.7).toString(),\r\n        opacity4: adjustAlpha(baseColor, 0.6).toString(),\r\n        opacity7: adjustAlpha(baseColor, 0.3).toString(),\r\n        opacity8: adjustAlpha(baseColor, 0.2).toString(),\r\n        white8: adjustAlpha(white, 0.2).toString(),\r\n        white9: adjustAlpha(white, 0.1).toString(),\r\n      }\r\n    })\r\n    const style = computed<Record<string, string>>(() => {\r\n      if (!colorMap.value) return {}\r\n\r\n      const {\r\n        base,\r\n        light2,\r\n        dark1,\r\n        opacity1,\r\n        opacity3,\r\n        opacity4,\r\n        opacity7,\r\n        opacity8,\r\n        white8,\r\n        white9,\r\n      } = colorMap.value\r\n      const { cvm, gnv } = nh\r\n\r\n      if (props.ghost) {\r\n        return cvm({\r\n          color: base,\r\n          'color-hover': base,\r\n          'color-focus': base,\r\n          'color-active': base,\r\n          'color-disabled': base,\r\n          'bg-color': 'transparent',\r\n          'bg-color-hover': white9,\r\n          'bg-color-focus': white9,\r\n          'bg-color-active': white8,\r\n          'bg-color-disabled': 'transparent',\r\n          'b-color': base,\r\n          'b-color-hover': light2,\r\n          'b-color-focus': light2,\r\n          'b-color-active': dark1,\r\n          'b-color-disabled': gnv('content-color-disabled'),\r\n          'pulse-s-color': dark1,\r\n        })\r\n      }\r\n\r\n      if (props.simple) {\r\n        return cvm({\r\n          color: base,\r\n          'color-hover': base,\r\n          'color-focus': gnv('color-white'),\r\n          'color-active': gnv('color-white'),\r\n          'color-disabled': gnv('content-color-disabled'),\r\n          'bg-color': opacity8,\r\n          'bg-color-hover': opacity7,\r\n          'bg-color-focus': opacity1,\r\n          'bg-color-active': opacity1,\r\n          'bg-color-disabled': gnv('fill-color-background'),\r\n          'b-color': opacity4,\r\n          'b-color-hover': opacity4,\r\n          'b-color-focus': opacity3,\r\n          'b-color-active': opacity3,\r\n          'b-color-disabled': gnv('border-color-light-1'),\r\n          'pulse-s-color': dark1,\r\n        })\r\n      }\r\n\r\n      if (props.text || props.dashed) {\r\n        return cvm({\r\n          ...(props.dashed\r\n            ? {\r\n              'b-color': base,\r\n              'b-color-hover': light2,\r\n              'b-color-focus': light2,\r\n              'b-color-active': dark1,\r\n              'pulse-s-color': dark1,\r\n            }\r\n            : {}),\r\n          color: base,\r\n          'color-hover': light2,\r\n          'color-focus': light2,\r\n          'color-active': dark1,\r\n          'color-disabled': opacity4,\r\n        })\r\n      }\r\n\r\n      return cvm({\r\n        color: gnv('color-white'),\r\n        'color-hover': gnv('color-white'),\r\n        'color-focus': gnv('color-white'),\r\n        'color-active': gnv('color-white'),\r\n        'color-disabled': gnv('content-color-disabled'),\r\n        'bg-color': base,\r\n        'bg-color-hover': light2,\r\n        'bg-color-focus': light2,\r\n        'bg-color-active': dark1,\r\n        'bg-color-disabled': gnv('fill-color-background'),\r\n        'b-color': base,\r\n        'b-color-hover': light2,\r\n        'b-color-focus': light2,\r\n        'b-color-active': dark1,\r\n        'b-color-disabled': gnv('border-color-light-1'),\r\n        'pulse-s-color': dark1,\r\n      })\r\n    })\r\n\r\n    if (groupState) {\r\n      const state = reactive({ index, isLast })\r\n\r\n      groupState.increaseItem(state)\r\n\r\n      onBeforeUnmount(() => {\r\n        groupState.decreaseItem(state)\r\n      })\r\n    }\r\n\r\n    function handleClick(event: MouseEvent) {\r\n      if (props.disabled || props.loading || event.button) return\r\n\r\n      if (!props.noPulse) {\r\n        pulsing.value = false\r\n        requestAnimationFrame(() => {\r\n          pulsing.value = true\r\n        })\r\n      }\r\n\r\n      emitEvent(props.onClick, event)\r\n    }\r\n\r\n    function handleAnimationEnd() {\r\n      pulsing.value = false\r\n    }\r\n\r\n    function renderLoadingIcon() {\r\n      return (\r\n        <div class={[nh.be('icon'), nh.bem('icon', 'loading')]}>\r\n          {renderSlot(slots, 'loading', undefined, () => [\r\n            <Renderer renderer={props.slots.loading}>\r\n              <Icon\r\n                {...icons.value.loading}\r\n                effect={props.loadingEffect || icons.value.loading.effect}\r\n                icon={props.loadingIcon || icons.value.loading.icon}\r\n                label={'loading'}\r\n              ></Icon>\r\n            </Renderer>,\r\n          ])}\r\n        </div>\r\n      )\r\n    }\r\n\r\n    function renderSingleIcon() {\r\n      return props.loading ? (\r\n        renderLoadingIcon()\r\n      ) : (\r\n        <div class={nh.be('icon')}>\r\n          {renderSlot(slots, 'icon', undefined, () => [\r\n            <Renderer renderer={props.slots.icon}>\r\n              {props.icon ? <Icon icon={props.icon}></Icon> : null}\r\n            </Renderer>,\r\n          ])}\r\n        </div>\r\n      )\r\n    }\r\n\r\n    function renderCollapseIcon() {\r\n      if (props.icon || slots.icon || props.slots.icon) {\r\n        return props.loading ? (\r\n          renderLoadingIcon()\r\n        ) : (\r\n          <div class={nh.be('icon')}>\r\n            {renderSlot(slots, 'icon', undefined, () => [\r\n              <Renderer renderer={props.slots.icon}>\r\n                <Icon icon={props.icon}></Icon>\r\n              </Renderer>,\r\n            ])}\r\n          </div>\r\n        )\r\n      }\r\n\r\n      return (\r\n        <CollapseTransition appear horizontal fade-effect>\r\n          {props.loading && renderLoadingIcon()}\r\n        </CollapseTransition>\r\n      )\r\n    }\r\n\r\n    function renderBadge() {\r\n      const badgeType = props.disabled\r\n        ? 'disabled'\r\n        : props.type === 'default'\r\n          ? 'error'\r\n          : props.type\r\n\r\n      return (\r\n        <Badge\r\n          inherit\r\n          class={[nh.be('badge'), nh.bem('badge', badgeType)]}\r\n          content={props.badge}\r\n          type={badgeType}\r\n        ></Badge>\r\n      )\r\n    }\r\n\r\n    return () => {\r\n      const Button = (props.tag || 'button') as any\r\n\r\n      return (\r\n        <Button\r\n          type={props.buttonType}\r\n          class={className.value}\r\n          role={'button'}\r\n          style={style.value}\r\n          disabled={props.disabled}\r\n          onClick={handleClick}\r\n          onAnimationend={handleAnimationEnd}\r\n        >\r\n          {isIconOnly.value ? renderSingleIcon() : renderCollapseIcon()}\r\n          {!isIconOnly.value &&\r\n            renderSlot(slots, 'default', undefined, () => [\r\n              <Renderer renderer={props.slots.default}></Renderer>,\r\n            ])}\r\n          {!isIconOnly.value && (props.badge || props.badge === 0) ? renderBadge() : null}\r\n        </Button>\r\n      )\r\n    }\r\n  },\r\n})\r\n"],"names":["defineComponent","name","props","buttonProps","emits","setup","_props","slots","fieldActions","inject","FIELD_OPTIONS","useProps","size","createSizeProp","undefined","type","default","validator","value","buttonTypes","includes","dashed","text","simple","ghost","disabled","loading","circle","loadingIcon","createIconProp","loadingEffect","icon","color","buttonType","block","tag","noPulse","badge","groupState","GROUP_STATE","nh","useNameHelper","icons","useIcons","pulsing","ref","index","isLast","isIconOnly","computed","className","b","bs","bm","inherit","colorMap","rootStyle","isClient","getComputedStyle","document","documentElement","black","parseColorToRgba","getPropertyValue","nv","white","baseColor","base","toString","light2","mixColor","dark1","opacity1","adjustAlpha","opacity3","opacity4","opacity7","opacity8","white8","white9","style","cvm","gnv","state","reactive","increaseItem","onBeforeUnmount","decreaseItem","handleClick","event","button","requestAnimationFrame","emitEvent","onClick","handleAnimationEnd","renderLoadingIcon","_createVNode","be","bem","renderSlot","Renderer","Icon","_mergeProps","effect","renderSingleIcon","renderCollapseIcon","CollapseTransition","renderBadge","badgeType","Badge","Button"],"mappings":"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"}