UNPKG

@oku-ui/motion

Version:

A tiny, performant animation library for VueJS

62 lines (57 loc) 1.66 kB
'use strict'; const kit = require('@nuxt/kit'); const motion = require('@oku-ui/motion'); const index = kit.defineNuxtModule({ meta: { name: "@oku-ui/motion", configKey: "okuMotion", compatibility: { nuxt: ">=3.14" } }, defaults: { prefix: "", components: true }, setup(options, _nuxtApp) { kit.addPluginTemplate({ filename: "001.okumotion.client.mjs", getContents() { return `import { motionPlugin } from '@oku-ui/motion' export default defineNuxtPlugin((nuxtApp) => { nuxtApp.vueApp.use(motionPlugin) })`; } }); function getComponents() { if (typeof options.components === "object") { return Object.entries(motion.components).filter(([name]) => options.components[name]).flatMap(([_, components]) => components); } if (options.components) return Object.values(motion.components).flat(); return []; } for (const component of getComponents()) { kit.addComponent({ name: `${options.prefix}${component}`, export: component, filePath: "@oku-ui/motion" }); } function getUtilities() { if (typeof options.components === "object") { return Object.entries(motion.utilities).filter(([name]) => options.components[name]).flatMap(([_, utilities]) => utilities); } if (options.components) return Object.values(motion.utilities).flat(); return []; } for (const utility of getUtilities()) { kit.addImports({ from: "@oku-ui/motion", name: utility }); } } }); module.exports = index;