{"version":3,"file":"resizeObserver2.mjs","sources":["../../../../../../packages/components/resize-observer/src/resizeObserver.vue"],"sourcesContent":["<template>\n  <div\n    ref=\"resizableDiv\"\n    :class=\"[ns.b()]\"\n    :style=\"{ cursor: disabled ? 'not-allowed' : 'se-resize' }\"\n    @mousedown.prevent=\"startResize\"\n  >\n    <slot />\n    <div ref=\"resizer\" class=\"resizer\" @mousedown.prevent=\"startResize\" />\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, onUnmounted, ref, watch } from 'vue'\nimport { useNamespace } from '@lit-element/hooks'\nimport { resizeObserverProps } from './resizeObserver'\nimport { throttle } from './performance'\n\ndefineOptions({\n  name: 'LtResizeObserver',\n})\nconst ns = useNamespace('resize-observer')\nconst props = defineProps(resizeObserverProps)\nconst emit = defineEmits(['update:width', 'update:height', 'onResize'])\n\nconst resizableDiv = ref<HTMLElement | null>(null)\nconst resizer = ref<HTMLElement | null>(null)\nlet startX = 0\nlet startY = 0\nlet startWidth = 0\nlet startHeight = 0\nlet rafId: number | null = null\nconst localWidth = ref<number>(props.width)\nconst localHeight = ref<number>(props.height)\n\nconst resize = (e: MouseEvent) => {\n  if (!resizableDiv.value) return\n\n  const newWidth = startWidth + (e.clientX - startX)\n  const newHeight = startHeight + (e.clientY - startY)\n\n  if (rafId !== null) {\n    cancelAnimationFrame(rafId)\n  }\n\n  rafId = requestAnimationFrame(() => {\n    resizableDiv.value!.style.width = `${newWidth}px`\n    resizableDiv.value!.style.height = `${newHeight}px`\n\n    localWidth.value = newWidth\n    localHeight.value = newHeight\n    const contentRect = resizableDiv.value!.getBoundingClientRect()\n    const entry: ResizeObserverEntry = {\n      target: resizableDiv.value!,\n      contentRect,\n      contentBoxSize: [\n        { inlineSize: contentRect.width, blockSize: contentRect.height },\n      ],\n      borderBoxSize: [\n        { inlineSize: contentRect.width, blockSize: contentRect.height },\n      ],\n      devicePixelContentBoxSize: [\n        { inlineSize: contentRect.width, blockSize: contentRect.height },\n      ],\n    }\n    emit('update:width', newWidth)\n    emit('update:height', newHeight)\n    emit('onResize', entry)\n  })\n}\n\nlet throttledResize: (...args: any[]) => void\n\nif (props.throttle) {\n  const interval = typeof props.throttle === 'number' ? props.throttle : 16\n  throttledResize = throttle(resize, interval)\n} else {\n  throttledResize = resize\n}\n\nconst startResize = (e: MouseEvent) => {\n  if (props.disabled || !resizableDiv.value) return\n  startX = e.clientX\n  startY = e.clientY\n  startWidth = resizableDiv.value.offsetWidth\n  startHeight = resizableDiv.value.offsetHeight\n\n  document.addEventListener('mousemove', throttledResize)\n  document.addEventListener('mouseup', stopResize)\n}\n\nconst stopResize = () => {\n  if (rafId !== null) {\n    cancelAnimationFrame(rafId)\n    rafId = null\n  }\n  document.removeEventListener('mousemove', throttledResize)\n  document.removeEventListener('mouseup', stopResize)\n}\n\nonMounted(() => {\n  if (resizableDiv.value) {\n    resizableDiv.value.style.width = `${localWidth.value}px` // 初始宽度\n    resizableDiv.value.style.height = `${localHeight.value}px` // 初始高度\n  }\n})\n\nonUnmounted(() => {\n  document.removeEventListener('mousemove', throttledResize)\n  document.removeEventListener('mouseup', stopResize)\n})\n\nwatch([() => props.width, () => props.height], ([newWidth, newHeight]) => {\n  if (resizableDiv.value) {\n    if (newWidth !== undefined) {\n      localWidth.value = newWidth\n      resizableDiv.value.style.width = `${newWidth}px`\n    }\n    if (newHeight !== undefined) {\n      localHeight.value = newHeight\n      resizableDiv.value.style.height = `${newHeight}px`\n    }\n  }\n})\n</script>\n"],"names":[],"mappings":"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"}