{"version":3,"file":"drawer.vue2.mjs","sources":["../../../components/drawer/drawer.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Button } from '@/components/button'\r\nimport { Icon } from '@/components/icon'\r\nimport { Masker } from '@/components/masker'\r\nimport { Renderer } from '@/components/renderer'\r\n\r\nimport { computed, nextTick, reactive, ref, shallowReadonly, toRef, watch } from 'vue'\r\n\r\nimport {\r\n  createSizeProp,\r\n  emitEvent,\r\n  useIcons,\r\n  useId,\r\n  useLocale,\r\n  useNameHelper,\r\n  useProps,\r\n} from '@vexip-ui/config'\r\nimport { useMoving } from '@vexip-ui/hooks'\r\nimport { isPromise, toNumber } from '@vexip-ui/utils'\r\nimport { drawerProps } from './props'\r\nimport { drawerPlacements } from './symbol'\r\n\r\nimport type { DrawerSlots } from './symbol'\r\n\r\ndefineOptions({ name: 'Drawer' })\r\n\r\nconst _props = defineProps(drawerProps)\r\nconst props = useProps('drawer', _props, {\r\n  locale: null,\r\n  transfer: false,\r\n  active: {\r\n    default: false,\r\n    static: true,\r\n  },\r\n  width: {\r\n    default: 280,\r\n    validator: value => typeof value === 'string' || value > 0,\r\n  },\r\n  height: {\r\n    default: 280,\r\n    validator: value => typeof value === 'string' || value > 0,\r\n  },\r\n  placement: {\r\n    default: 'right',\r\n    validator: value => drawerPlacements.includes(value),\r\n  },\r\n  title: '',\r\n  closable: true,\r\n  inner: false,\r\n  maskClose: true,\r\n  drawerClass: null,\r\n  hideMask: false,\r\n  onBeforeClose: {\r\n    default: null,\r\n    isFunc: true,\r\n  },\r\n  resizable: false,\r\n  autoRemove: false,\r\n  footer: false,\r\n  confirmText: null,\r\n  confirmProps: null,\r\n  cancelText: null,\r\n  cancelProps: null,\r\n  loading: false,\r\n  confirmType: 'primary',\r\n  cancelType: 'default',\r\n  actionSize: createSizeProp('small'),\r\n  undivided: false,\r\n  disableEsc: false,\r\n  slots: () => ({}),\r\n})\r\n\r\nconst emit = defineEmits(['update:active'])\r\n\r\nconst slots = defineSlots<DrawerSlots>()\r\n\r\nconst nh = useNameHelper('drawer')\r\nconst icons = useIcons()\r\nconst locale = useLocale('drawer', toRef(props, 'locale'))\r\n\r\nconst currentActive = ref(props.active)\r\nconst currentWidth = ref(props.width)\r\nconst currentHeight = ref(props.height)\r\n\r\nconst wrapper = ref<HTMLElement>()\r\n\r\nconst { target: resizer, moving: resizing } = useMoving({\r\n  onStart: (state, event) => {\r\n    if (!props.resizable || event.button > 0 || !wrapper.value) {\r\n      return false\r\n    }\r\n\r\n    const width = `${currentWidth.value}`.endsWith('%')\r\n      ? wrapper.value.offsetWidth\r\n      : toNumber(currentWidth.value)\r\n    const height = `${currentHeight.value}`.endsWith('%')\r\n      ? wrapper.value.offsetHeight\r\n      : toNumber(currentHeight.value)\r\n\r\n    state.xStart = width\r\n    state.yStart = height\r\n\r\n    emitEvent(props.onResizeStart, { width, height })\r\n  },\r\n  onMove: (state, event) => {\r\n    const deltaX = event.clientX - state.clientX\r\n    const deltaY = event.clientY - state.clientY\r\n\r\n    let width = toNumber(currentWidth.value)\r\n    let height = toNumber(currentHeight.value)\r\n\r\n    switch (props.placement) {\r\n      case 'top': {\r\n        height = state.yStart + deltaY\r\n        break\r\n      }\r\n      case 'right': {\r\n        width = state.xStart - deltaX\r\n        break\r\n      }\r\n      case 'bottom': {\r\n        height = state.yStart - deltaY\r\n        break\r\n      }\r\n      default: {\r\n        width = state.xStart + deltaX\r\n      }\r\n    }\r\n\r\n    currentWidth.value = Math.max(width, 100)\r\n    currentHeight.value = Math.max(height, 100)\r\n\r\n    emitEvent(props.onResizeMove, {\r\n      width: toNumber(currentWidth.value),\r\n      height: toNumber(currentHeight.value),\r\n    })\r\n  },\r\n  onEnd: () => {\r\n    emitEvent(props.onResizeEnd, {\r\n      width: toNumber(currentWidth.value),\r\n      height: toNumber(currentHeight.value),\r\n    })\r\n  },\r\n})\r\n\r\nconst className = computed(() => {\r\n  return [\r\n    nh.b(),\r\n    nh.bs('vars'),\r\n    {\r\n      [nh.bm('inherit')]: props.inherit,\r\n      [nh.bm('inner')]: props.inner,\r\n      [nh.bm('closable')]: props.closable,\r\n      [nh.bm('resizable')]: props.resizable,\r\n      [nh.bm('undivided')]: props.undivided,\r\n    },\r\n  ]\r\n})\r\nconst moveTransition = computed(() => {\r\n  return nh.ns(`move-${props.placement}`)\r\n})\r\nconst wrapperClass = computed(() => {\r\n  return [\r\n    nh.be('wrapper'),\r\n    nh.bem('wrapper', props.placement),\r\n    {\r\n      [nh.bem('wrapper', 'hide-mask')]: props.hideMask,\r\n      [nh.bem('wrapper', 'resizing')]: resizing.value,\r\n    },\r\n    props.drawerClass,\r\n  ]\r\n})\r\nconst wrapperStyle = computed(() => {\r\n  const placement = props.placement\r\n\r\n  if (placement === 'top' || placement === 'bottom') {\r\n    const height = currentHeight.value\r\n\r\n    return {\r\n      height: `${height}`.endsWith('%') ? height : `${height}px`,\r\n    }\r\n  }\r\n\r\n  const width = currentWidth.value\r\n\r\n  return {\r\n    width: `${width}`.endsWith('%') ? width : `${width}px`,\r\n  }\r\n})\r\nconst hasTitle = computed(() => {\r\n  return !!(slots.header || slots.title || props.title || props.slots.header || props.slots.title)\r\n})\r\nconst titleId = useId()\r\nconst bodyId = useId()\r\n\r\nwatch(\r\n  () => props.active,\r\n  value => {\r\n    currentActive.value = value\r\n  },\r\n)\r\nwatch(\r\n  () => props.width,\r\n  value => {\r\n    currentWidth.value = value\r\n  },\r\n)\r\nwatch(\r\n  () => props.height,\r\n  value => {\r\n    currentHeight.value = value\r\n  },\r\n)\r\n\r\ndefineExpose({\r\n  resizing,\r\n  titleId,\r\n  bodyId,\r\n  wrapper,\r\n  resizer,\r\n  handleConfirm,\r\n  handleCancel,\r\n  handleClose,\r\n})\r\n\r\nconst slotParams = shallowReadonly(\r\n  reactive({\r\n    resizing,\r\n    handleConfirm,\r\n    handleCancel,\r\n    handleClose,\r\n  }),\r\n)\r\n\r\nfunction setActive(active: boolean) {\r\n  if (currentActive.value === active) return\r\n\r\n  currentActive.value = active\r\n\r\n  emit('update:active', active)\r\n  emitEvent(props.onToggle, active)\r\n}\r\n\r\nasync function handleClose(isConfirm = false) {\r\n  let result: unknown = true\r\n\r\n  if (typeof props.onBeforeClose === 'function') {\r\n    result = props.onBeforeClose(isConfirm)\r\n\r\n    if (isPromise(result)) {\r\n      result = await result\r\n    }\r\n  }\r\n\r\n  if (result !== false) {\r\n    nextTick(() => {\r\n      setActive(false)\r\n      emitEvent(props.onClose)\r\n    })\r\n  }\r\n\r\n  return result\r\n}\r\n\r\nfunction handleMaskClose() {\r\n  if (props.maskClose) {\r\n    return handleClose()\r\n  }\r\n}\r\n\r\nfunction handleShow() {\r\n  emitEvent(props.onShow)\r\n}\r\n\r\nfunction handleHide() {\r\n  emitEvent(props.onHide)\r\n}\r\n\r\nfunction handleConfirm() {\r\n  handleClose(true)\r\n  emitEvent(props.onConfirm)\r\n}\r\n\r\nfunction handleCancel() {\r\n  handleClose(false)\r\n  emitEvent(props.onCancel)\r\n}\r\n</script>\r\n\r\n<template>\r\n  <Masker\r\n    v-model:active=\"currentActive\"\r\n    :inherit=\"props.inherit\"\r\n    :class=\"className\"\r\n    :inner=\"props.inner\"\r\n    :transition-name=\"moveTransition\"\r\n    :closable=\"props.maskClose\"\r\n    :disabled=\"props.hideMask\"\r\n    :on-before-close=\"handleMaskClose\"\r\n    :transfer=\"props.transfer\"\r\n    :auto-remove=\"props.autoRemove\"\r\n    :disable-esc=\"props.disableEsc\"\r\n    @show=\"handleShow\"\r\n    @hide=\"handleHide\"\r\n  >\r\n    <template #default=\"{ show }\">\r\n      <section\r\n        v-show=\"show\"\r\n        ref=\"wrapper\"\r\n        :class=\"wrapperClass\"\r\n        :style=\"wrapperStyle\"\r\n        role=\"dialog\"\r\n        :aria-modal=\"show ? 'true' : undefined\"\r\n        :aria-labelledby=\"titleId\"\r\n        :aria-describedby=\"bodyId\"\r\n      >\r\n        <div v-if=\"hasTitle\" :class=\"nh.be('header')\">\r\n          <slot name=\"header\" v-bind=\"slotParams\">\r\n            <Renderer :renderer=\"props.slots.header\" :data=\"slotParams\">\r\n              <div :id=\"titleId\" :class=\"nh.be('title')\">\r\n                <slot name=\"title\" v-bind=\"slotParams\">\r\n                  <Renderer :renderer=\"props.slots.title\" :data=\"slotParams\">\r\n                    {{ props.title }}\r\n                  </Renderer>\r\n                </slot>\r\n              </div>\r\n              <button\r\n                v-if=\"props.closable\"\r\n                type=\"button\"\r\n                :class=\"nh.be('close')\"\r\n                @click=\"handleClose()\"\r\n              >\r\n                <slot name=\"close\" v-bind=\"slotParams\">\r\n                  <Renderer :renderer=\"props.slots.close\" :data=\"slotParams\">\r\n                    <Icon\r\n                      v-bind=\"icons.close\"\r\n                      :scale=\"+(icons.close.scale || 1) * 1.2\"\r\n                      label=\"close\"\r\n                    ></Icon>\r\n                  </Renderer>\r\n                </slot>\r\n              </button>\r\n            </Renderer>\r\n          </slot>\r\n        </div>\r\n        <div :id=\"bodyId\" :class=\"nh.be('content')\">\r\n          <slot v-bind=\"slotParams\">\r\n            <Renderer :renderer=\"props.slots.default\" :data=\"slotParams\"></Renderer>\r\n          </slot>\r\n        </div>\r\n        <div v-if=\"props.footer || slots.footer || props.slots.footer\" :class=\"nh.be('footer')\">\r\n          <slot name=\"footer\" v-bind=\"slotParams\">\r\n            <Renderer :renderer=\"props.slots.footer\" :data=\"slotParams\">\r\n              <Button\r\n                :class=\"[nh.be('button'), nh.bem('button', 'cancel')]\"\r\n                inherit\r\n                text\r\n                :type=\"props.cancelType\"\r\n                :size=\"props.actionSize\"\r\n                v-bind=\"props.cancelProps\"\r\n                @click=\"handleCancel\"\r\n              >\r\n                {{ props.cancelText || locale.cancel }}\r\n              </Button>\r\n              <Button\r\n                :class=\"[nh.be('button'), nh.bem('button', 'confirm')]\"\r\n                inherit\r\n                :type=\"props.confirmType\"\r\n                :size=\"props.actionSize\"\r\n                :loading=\"props.loading\"\r\n                v-bind=\"props.confirmProps\"\r\n                @click=\"handleConfirm\"\r\n              >\r\n                {{ props.confirmText || locale.confirm }}\r\n              </Button>\r\n            </Renderer>\r\n          </slot>\r\n        </div>\r\n        <div\r\n          v-if=\"props.resizable\"\r\n          ref=\"resizer\"\r\n          :class=\"[\r\n            nh.be('handler'),\r\n            nh.bem('handler', props.placement),\r\n            {\r\n              [nh.bem('handler', 'resizing')]: resizing\r\n            }\r\n          ]\"\r\n        >\r\n          <slot name=\"handler\" v-bind=\"slotParams\">\r\n            <Renderer :renderer=\"props.slots.handler\" :data=\"slotParams\"></Renderer>\r\n          </slot>\r\n        </div>\r\n      </section>\r\n    </template>\r\n  </Masker>\r\n</template>\r\n"],"names":["props","useProps","__props","value","drawerPlacements","createSizeProp","emit","__emit","slots","_useSlots","nh","useNameHelper","icons","useIcons","locale","useLocale","toRef","currentActive","ref","currentWidth","currentHeight","wrapper","resizer","resizing","useMoving","state","event","width","toNumber","height","emitEvent","deltaX","deltaY","className","computed","moveTransition","wrapperClass","wrapperStyle","placement","hasTitle","titleId","useId","bodyId","watch","__expose","handleConfirm","handleCancel","handleClose","slotParams","shallowReadonly","reactive","setActive","active","isConfirm","result","isPromise","nextTick","handleMaskClose","handleShow","handleHide","_createBlock","_unref","Masker","$event","_withCtx","show","_createElementVNode","_createElementBlock","_normalizeClass","_renderSlot","_ctx","_normalizeProps","_guardReactiveProps","_createVNode","Renderer","_createTextVNode","_toDisplayString","Icon","_mergeProps"],"mappings":"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"}