{ "name": "morphing-dialog", "type": "registry:ui", "registryDependencies": [], "dependencies": [ "motion-v", "@vueuse/core" ], "devDependencies": [], "tailwind": {}, "cssVars": { "light": {}, "dark": {} }, "files": [ { "path": "MorphingDialog.vue", "content": "\n\n\n", "type": "registry:ui" }, { "path": "MorphingDialogClose.vue", "content": "\n\n\n", "type": "registry:ui" }, { "path": "MorphingDialogContainer.vue", "content": "\n\n\n", "type": "registry:ui" }, { "path": "MorphingDialogContent.vue", "content": "\n\n\n", "type": "registry:ui" }, { "path": "MorphingDialogDescription.vue", "content": "\n\n\n", "type": "registry:ui" }, { "path": "MorphingDialogImage.vue", "content": "\n\n\n", "type": "registry:ui" }, { "path": "MorphingDialogSubtitle.vue", "content": "\n\n\n", "type": "registry:ui" }, { "path": "MorphingDialogTitle.vue", "content": "\n\n\n", "type": "registry:ui" }, { "path": "MorphingDialogTrigger.vue", "content": "\n\n\n", "type": "registry:ui" }, { "path": "composables/useClickOutside.ts", "content": "import type { Ref } from 'vue'\n\nexport function useClickOutside(\n ref: Ref,\n handler: (event: MouseEvent | TouchEvent) => void,\n): void {\n const handleClickOutside = (event: MouseEvent | TouchEvent) => {\n if (!ref.value || ref.value.contains(event.target as Node)) {\n return\n }\n handler(event)\n }\n\n onMounted(() => {\n document.addEventListener('mousedown', handleClickOutside)\n document.addEventListener('touchstart', handleClickOutside)\n })\n\n onUnmounted(() => {\n document.removeEventListener('mousedown', handleClickOutside)\n document.removeEventListener('touchstart', handleClickOutside)\n })\n}\n", "type": "registry:hook" } ] }