-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path223.js.map
1 lines (1 loc) · 99.8 KB
/
223.js.map
1
{"version":3,"file":"223.js","mappings":"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","sources":["webpack://@lenna-project/lenna-web/./src/App.vue","webpack://@lenna-project/lenna-web/./src/App.vue?a603","webpack://@lenna-project/lenna-web/./src/assets/banner.png","webpack://@lenna-project/lenna-web/./src/components/Navbar.vue","webpack://@lenna-project/lenna-web/./src/components/Navbar.vue?3f83","webpack://@lenna-project/lenna-web/./src/components/Navbar.vue?fb62","webpack://@lenna-project/lenna-web/./src/components/Navbar.vue?7c37","webpack://@lenna-project/lenna-web/./src/components/Navbar.vue?75b5","webpack://@lenna-project/lenna-web/./src/components/Footer.vue","webpack://@lenna-project/lenna-web/./src/components/Footer.vue?b083","webpack://@lenna-project/lenna-web/./src/components/Footer.vue?162e","webpack://@lenna-project/lenna-web/./src/App.vue?2120","webpack://@lenna-project/lenna-web/./src/App.vue?3b2b","webpack://@lenna-project/lenna-web/./src/views/Home.vue","webpack://@lenna-project/lenna-web/./src/views/Home.vue?e891","webpack://@lenna-project/lenna-web/./src/components/PluginsManager.vue","webpack://@lenna-project/lenna-web/./src/components/PluginsManager.vue?427c","webpack://@lenna-project/lenna-web/./src/components/Plugin.vue","webpack://@lenna-project/lenna-web/./src/components/Plugin.vue?cef3","webpack://@lenna-project/lenna-web/./src/components/PluginConfig.vue","webpack://@lenna-project/lenna-web/./src/components/PluginConfig.vue?f0b6","webpack://@lenna-project/lenna-web/./src/components/PluginConfig.vue?9bfb","webpack://@lenna-project/lenna-web/./src/components/PluginConfig.vue?e272","webpack://@lenna-project/lenna-web/./src/components/PluginConfig.vue?a92a","webpack://@lenna-project/lenna-web/./src/components/Checkbox.vue","webpack://@lenna-project/lenna-web/./src/components/Checkbox.vue?86ca","webpack://@lenna-project/lenna-web/./src/components/Checkbox.vue?3095","webpack://@lenna-project/lenna-web/./src/components/Checkbox.vue?d8a2","webpack://@lenna-project/lenna-web/./src/components/Checkbox.vue?4fbc","webpack://@lenna-project/lenna-web/./src/components/Icon.vue","webpack://@lenna-project/lenna-web/./src/components/Icon.vue?cd77","webpack://@lenna-project/lenna-web/./src/components/Icon.vue?433b","webpack://@lenna-project/lenna-web/./src/components/Icon.vue?08f8","webpack://@lenna-project/lenna-web/./src/components/Icon.vue?62a3","webpack://@lenna-project/lenna-web/./src/controllers/storage.ts","webpack://@lenna-project/lenna-web/./src/components/Plugin.vue?f390","webpack://@lenna-project/lenna-web/./src/components/Plugin.vue?8b08","webpack://@lenna-project/lenna-web/./src/components/Plugin.vue?1d89","webpack://@lenna-project/lenna-web/./src/components/PluginsManager.vue?d84f","webpack://@lenna-project/lenna-web/./src/components/PluginsManager.vue?0710","webpack://@lenna-project/lenna-web/./src/components/PluginsManager.vue?4be4","webpack://@lenna-project/lenna-web/./src/components/ImageUpload.vue","webpack://@lenna-project/lenna-web/./src/components/ImageUpload.vue?3dad","webpack://@lenna-project/lenna-web/./src/components/ImageUpload.vue?d272","webpack://@lenna-project/lenna-web/./src/components/ImageUpload.vue?dfcb","webpack://@lenna-project/lenna-web/./src/components/ImageUpload.vue?4182","webpack://@lenna-project/lenna-web/./src/components/ImagePreview.vue","webpack://@lenna-project/lenna-web/./src/components/ImagePreview.vue?f7e4","webpack://@lenna-project/lenna-web/./src/components/ImagePreview.vue?01bf","webpack://@lenna-project/lenna-web/./src/components/ImagePreview.vue?bfa7","webpack://@lenna-project/lenna-web/./src/components/ImagePreview.vue?da5e","webpack://@lenna-project/lenna-web/./src/components/Config.vue","webpack://@lenna-project/lenna-web/./src/components/Config.vue?349a","webpack://@lenna-project/lenna-web/./src/components/Config.vue?60b5","webpack://@lenna-project/lenna-web/./src/components/Config.vue?d755","webpack://@lenna-project/lenna-web/./src/components/Help.vue","webpack://@lenna-project/lenna-web/./src/components/Help.vue?6165","webpack://@lenna-project/lenna-web/./src/components/Help.vue?ed81","webpack://@lenna-project/lenna-web/./src/views/Home.vue?58e5","webpack://@lenna-project/lenna-web/./src/views/Home.vue?39a7","webpack://@lenna-project/lenna-web/./src/views/Home.vue?caea","webpack://@lenna-project/lenna-web/./src/views/About.vue","webpack://@lenna-project/lenna-web/./src/views/About.vue?eb7a","webpack://@lenna-project/lenna-web/./src/views/About.vue?b54e","webpack://@lenna-project/lenna-web/./src/views/About.vue?d489","webpack://@lenna-project/lenna-web/./src/views/About.vue?99e7","webpack://@lenna-project/lenna-web/./src/router.ts","webpack://@lenna-project/lenna-web/./src/bootstrap.ts"],"sourcesContent":["<template>\n <div>\n <Navbar />\n <router-view />\n <Footer />\n </div>\n</template>\n<script>\nimport { defineComponent } from \"vue\";\nimport Navbar from \"@/components/Navbar.vue\";\nimport Footer from \"@/components/Footer.vue\";\nexport default defineComponent({\n name: \"App\",\n components: {\n Navbar,\n Footer\n },\n});\n</script>","export * from \"-!../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[1]!../node_modules/vue-loader/dist/index.js??ruleSet[0]!./App.vue?vue&type=template&id=0acc35d2\"","export default __webpack_public_path__ + \"aad257b5f9f4288436c6e6e0ebb2e336.png\";","<template>\n <div class=\"navbar\">\n <div id=\"banner\"><img src=\"@/assets/banner.png\" /></div>\n <router-link to=\"/\">Home</router-link>\n <a href=\"marketplace\">Marketplace</a>\n <router-link to=\"/about\">About</router-link>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nexport default defineComponent({\n name: \"Navbar\",\n});\n</script>\n<style scoped lang=\"scss\">\n@import \"@/styles/_variables.scss\";\n\n$navbar_padding: 20px;\n\n.navbar {\n padding: 0px $navbar_padding;\n position: fixed;\n top: 0;\n width: calc(100% - 2 * #{$navbar_padding});\n height: 120px;\n margin: 0;\n overflow: hidden;\n background-color: $nav_background;\n justify-content: flex-end;\n display: flex;\n color: $text_color;\n text-transform: uppercase;\n}\n\n.navbar a {\n display: block;\n color: $text_color;\n text-align: center;\n margin: 40px 0px;\n padding: 14px 16px;\n text-decoration: none;\n}\n\n.navbar a:hover {\n background-color: $primary_color;\n}\n.navbar .router-link-active {\n color: white;\n background-color: $primary_color;\n}\n\n.navbar a:active {\n background-color: $primary_color;\n transform: translateY(8px);\n opacity: 0.5;\n}\n\n#banner {\n position: absolute;\n top: 10px;\n left: 40%;\n max-height: 100px;\n}\n\n#banner img {\n max-height: 100px;\n}\n\n@media screen and (max-width: 800px) {\n #banner {\n left: 10px;\n top: 40px;\n }\n #banner img {\n display: none;\n }\n #banner::before {\n background-image: url(\"https://lenna.app/logo.png\");\n background-size: 30px 30px;\n width: 30px;\n height: 30px;\n display: inline-block;\n content: \"\";\n }\n}\n</style>\n","export * from \"-!../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Navbar.vue?vue&type=template&id=48f88512&scoped=true\"","\nimport { defineComponent } from \"vue\";\nexport default defineComponent({\n name: \"Navbar\",\n});\n","export { default } from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Navbar.vue?vue&type=script&lang=ts\"; export * from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Navbar.vue?vue&type=script&lang=ts\"","import { render } from \"./Navbar.vue?vue&type=template&id=48f88512&scoped=true\"\nimport script from \"./Navbar.vue?vue&type=script&lang=ts\"\nexport * from \"./Navbar.vue?vue&type=script&lang=ts\"\n\nimport \"./Navbar.vue?vue&type=style&index=0&id=48f88512&scoped=true&lang=scss\"\nscript.render = render\nscript.__scopeId = \"data-v-48f88512\"\n\nexport default script","<template>\n <div class=\"footer\">\n <v-footer>\n Convert images online without upload of your data.\n <p>\n © {{ new Date().getFullYear() }} —\n <a href=\"https://lenna.app\"> lenna.app </a>\n </p>\n </v-footer>\n </div>\n</template>\n<style scoped>\n.footer {\n text-align: center;\n}\n</style>\n","export * from \"-!../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Footer.vue?vue&type=template&id=0add3bce&scoped=true\"","import { render } from \"./Footer.vue?vue&type=template&id=0add3bce&scoped=true\"\nconst script = {}\n\nimport \"./Footer.vue?vue&type=style&index=0&id=0add3bce&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-0add3bce\"\n\nexport default script","export { default } from \"-!../node_modules/vue-loader/dist/index.js??ruleSet[0]!./App.vue?vue&type=script&lang=js\"; export * from \"-!../node_modules/vue-loader/dist/index.js??ruleSet[0]!./App.vue?vue&type=script&lang=js\"","import { render } from \"./App.vue?vue&type=template&id=0acc35d2\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\nscript.render = render\n\nexport default script","<template>\n <div>\n <Slide>\n <button v-on:click=\"loadPlugin(pluginUrl)\">add plugin</button>\n <input\n v-model=\"pluginUrl\"\n placeholder=\"https://lenna.app/lenna-plugins/desaturate/remoteEntry.js\"\n />\n <br />\n <Config v-if=\"pluginsManager\" :plugins=\"pluginsManager.plugins\" />\n <Help />\n </Slide>\n <div class=\"main\">\n <h1>Convert images online without upload of your data</h1>\n <h2 v-if=\"just\">{{ just }}</h2>\n <div class=\"top_main\">\n <ImageUpload\n class=\"v-step-3\"\n ref=\"imageUpload\"\n @changeImage=\"changeImages($event)\"\n />\n <div id=\"process\">\n <button class=\"v-step-5\" v-on:click=\"processImages\">\n process images\n </button>\n </div>\n <ImagePreview class=\"v-step-6\" :images=\"resultImages\" />\n </div>\n <div class=\"bottom_main\">\n <PluginsManager\n class=\"v-step-4\"\n ref=\"pluginsManager\"\n :filter=\"just\"\n :defaultConfig=\"defaultConfig\"\n :defaultPlugins=\"defaultPlugins\"\n pluginsmap=\"https://lenna.app/lenna-plugins/importmap.json\"\n pluginsjson=\"https://lenna.app/lenna-plugins/plugins.json\"\n />\n </div>\n <div id=\"line\">\n <hr />\n <div class=\"plus radius\" v-on:click=\"onMorePlugins()\"></div>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref } from \"vue\";\nimport * as NProgress from \"nprogress\";\nimport { Slide } from \"vue3-burger-menu\";\nimport { useToast } from \"vue-toastification\";\nimport PluginsManager from \"@/components/PluginsManager.vue\";\nimport ImageUpload from \"@/components/ImageUpload.vue\";\nimport ImagePreview from \"@/components/ImagePreview.vue\";\nimport Config from \"@/components/Config.vue\";\nimport Help from \"@/components/Help.vue\";\n\ninterface Image {\n name: string\n}\n\ndeclare interface HomeData {\n pluginUrl: string;\n just: string | null;\n defaultConfig: [];\n defaultPlugins: string[];\n sourceImages: Image[];\n resultImages: Image[];\n}\n\nexport default defineComponent({\n name: \"Home\",\n components: {\n Slide,\n PluginsManager,\n ImageUpload,\n ImagePreview,\n Config,\n Help,\n },\n data(): HomeData {\n return {\n pluginUrl: \"\",\n just: null,\n defaultConfig: [],\n defaultPlugins: [],\n sourceImages: [],\n resultImages: [],\n };\n },\n setup: () => {\n const imageUpload = ref(ImageUpload);\n const pluginsManager = ref(PluginsManager);\n return {\n imageUpload,\n pluginsManager,\n };\n },\n created() {\n if (this.$route.query[\"config\"]) {\n this.defaultConfig = JSON.parse(\n // eslint-disable-next-line no-undef\n Buffer.from(this.$route.query[\"config\"].toString(), \"base64\").toString(\n \"binary\"\n )\n );\n console.log(this.defaultConfig);\n }\n if (this.$route.query.plugin) {\n this.defaultPlugins = [this.$route.query.plugin.toString()];\n }\n if (this.$route.query.just) {\n this.just = this.$route.query.just.toString();\n }\n },\n methods: {\n loadPlugin(pluginUrl: string) {\n console.log(\"loaded plugin: \", pluginUrl);\n this.pluginsManager.importPlugin(pluginUrl, pluginUrl);\n },\n onMorePlugins() {\n window.location.replace(\"/marketplace\");\n },\n changeImages(files: any) {\n this.sourceImages.push(files.file);\n },\n async processImages() {\n const toast = useToast();\n const imageCount = this.sourceImages.length;\n let convertedCount = 0;\n toast.info(`converting ${imageCount} images started`);\n this.resultImages = [];\n let tasks = [];\n for (let sourceImage of this.sourceImages) {\n tasks.push(\n this.process(sourceImage).then((image) => {\n let file = new File([image], sourceImage.name, {\n type: \"image/png\",\n });\n this.resultImages.push(file);\n convertedCount++;\n toast.success(\n `converted ${convertedCount} of ${imageCount} images`\n );\n })\n );\n }\n this.imageUpload.images = [];\n this.sourceImages = [];\n return Promise.all(tasks).then(() => {\n toast.info(`converted ${convertedCount} images`);\n });\n },\n async process(imageFile: any) {\n NProgress.configure({ parent: \"#process\" });\n NProgress.start();\n let img = new Uint8Array(await imageFile.arrayBuffer());\n for (let plugin of this.pluginsManager.plugins) {\n NProgress.inc(0.2);\n if (plugin.enabled) {\n img = await plugin.plugin.process(plugin.config, img);\n }\n }\n\n NProgress.done();\n NProgress.remove();\n return img;\n },\n },\n});\n</script>\n<style scoped lang=\"scss\">\n@import \"@/styles/_variables.scss\";\n@import \"//unpkg.com/[email protected]/nprogress.css\";\n@import url(\"https://fonts.googleapis.com/css2?family=Amatic+SC&display=swap\");\n\n.main {\n background-color: $body_background;\n padding: 150px;\n padding-top: 120px;\n text-align: center;\n}\n.main h1 {\n text-transform: uppercase;\n font-family: \"Amatic SC\", cursive;\n font-size: 32pt;\n}\n.main hr {\n margin-top: 10px;\n border: none;\n border-top: 2px dotted blue;\n color: #fff;\n background-color: #fff;\n height: 2px;\n width: 100%;\n}\n.top_main {\n display: flex;\n justify-content: space-between;\n}\n.bottom_main {\n padding-top: 20px;\n padding-bottom: 0;\n}\n#process button {\n margin-top: 40%;\n width: 350px;\n align-self: center;\n font-size: 20pt;\n text-transform: uppercase;\n padding: 12px;\n border-radius: 30px;\n border: none;\n box-shadow: 5px 5px 5px $shadow;\n}\n#process button:hover {\n transform: scale(1.05);\n}\n#line {\n margin-top: 50px;\n position: relative;\n}\n\n.plus {\n position: absolute;\n top: -25px;\n left: calc(50% - 20px);\n\n display: inline-block;\n width: 50px;\n height: 50px;\n\n background: linear-gradient(#fff, #fff), linear-gradient(#fff, #fff), blue;\n background-position: center;\n background-size: 50% 2px, 2px 50%; /*thickness = 2px, length = 50% (25px)*/\n background-repeat: no-repeat;\n}\n.radius {\n border-radius: 50%;\n}\n.plus:hover {\n transform: scale(1.1);\n}\n\n@media screen and (max-width: 800px) {\n .main {\n margin-top: 120px;\n padding: 0;\n }\n #process button {\n width: 150px;\n }\n}\n</style>\n","export * from \"-!../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Home.vue?vue&type=template&id=0e5fdee8&scoped=true\"","<template>\n <div class=\"plugins-manager\">\n <draggable class=\"dragArea list-group plugins\" :list=\"plugins\">\n <div class=\"list-group-item\" v-for=\"item in plugins\" :key=\"item.name\">\n <Plugin\n :name=\"item.name\"\n :plugin=\"item.plugin\"\n :url=\"item.url\"\n :defaultConfig=\"configs\"\n @changeEnabled=\"changeEnabled(item.name, $event)\"\n @changeConfig=\"changeConfig(item.name, $event)\"\n />\n </div>\n </draggable>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { VueDraggableNext } from \"vue-draggable-next\";\nimport Plugin from \"@/components/Plugin.vue\";\nimport { loadConfig, listPlugins } from \"@/controllers/storage\";\nimport { useToast } from \"vue-toastification\";\nimport {LennaPlugin} from \"@/models/plugin\";\n\ninterface Configs {\n [key: string]: any\n}\n\ndeclare interface PluginsManagerData {\n plugins: LennaPlugin[];\n configs: Configs;\n}\n\nexport default defineComponent({\n name: \"PluginsManager\",\n props: {\n filter: String,\n pluginsmap: String,\n pluginsjson: String,\n defaultConfig: Object,\n defaultPlugins: Array as () => Array<string>,\n },\n components: {\n Plugin,\n draggable: VueDraggableNext,\n },\n data(): PluginsManagerData {\n return {\n plugins: [],\n configs: {},\n };\n },\n beforeMount() {\n let tasks = [this.getPluginsmap(), this.getPluginsjson()];\n this.configs = this.defaultConfig || {};\n if (this.defaultPlugins) {\n this.defaultPlugins.forEach((plugin: string) => {\n tasks.push(this.importPlugin(plugin, plugin));\n });\n }\n listPlugins().forEach((plugin) => {\n tasks.push(this.importPlugin(plugin, plugin));\n });\n Promise.all(tasks)\n .then(() => {\n if (this.plugins.length < 1) {\n const toast = useToast();\n toast.warning(\n `No plugin enabled. Find more plugins in the marketplace.`\n );\n }\n })\n .catch(console.log);\n\n //this.importPlugin(\"local\", \"http://localhost:3002/remoteEntry.js\");\n },\n methods: {\n changeEnabled(name: string, enabled: boolean) {\n let plugin = this.plugins.find((o: any) => o.name === name);\n if (plugin) {\n plugin.enabled = enabled;\n }\n },\n changeConfig(name: string, config: Object) {\n let plugin = this.plugins.find((o: LennaPlugin) => o.name === name);\n if (plugin) {\n plugin.config = config;\n }\n },\n raw(comp: any) {\n return comp;\n },\n async importPlugin(key: string, url: string) {\n // eslint-disable-next-line no-undef\n return System.import(url).then(async (module: any) => {\n // eslint-disable-next-line no-undef\n await module.init(__webpack_require__.S[\"default\"]);\n return module.get(\"default\").then((plugin: any) => {\n let pluginConfig = loadConfig({\n name: key,\n url: url,\n plugin: plugin(),\n enabled: false,\n config: {},\n });\n if (this.filter) {\n if (pluginConfig.name.includes(this.filter)) {\n pluginConfig.enabled = true;\n this.configs.push({\n name: pluginConfig.name,\n enabled: true,\n config: pluginConfig.config,\n });\n this.plugins.push(pluginConfig);\n }\n } else {\n this.plugins.push(pluginConfig);\n }\n });\n });\n },\n async getPluginsmap() {\n let tasks = [];\n if (this.pluginsmap) {\n const res = await fetch(this.pluginsmap);\n const data = await res.json();\n for (const key in data.imports) {\n tasks.push(\n // eslint-disable-next-line no-undef\n System.import(key).then((plugin: any) => {\n let pluginConfig = loadConfig({\n name: key,\n url: data.imports[key],\n plugin: plugin,\n enabled: false,\n config: {},\n });\n if (this.filter) {\n if (pluginConfig.name.includes(this.filter)) {\n pluginConfig.enabled = true;\n this.configs.push({\n name: pluginConfig.name,\n enabled: true,\n config: pluginConfig.config,\n });\n this.plugins.push(pluginConfig);\n }\n } else {\n this.plugins.push(pluginConfig);\n }\n })\n );\n }\n }\n return Promise.all(tasks);\n },\n async getPluginsjson() {\n let tasks = [];\n if (this.pluginsjson) {\n const res = await fetch(this.pluginsjson);\n const data = await res.json();\n for (const key in data.plugins) {\n let url = data.plugins[key];\n tasks.push(this.importPlugin(key, url));\n }\n }\n return Promise.all(tasks);\n },\n },\n});\n</script>\n<style scoped lang=\"scss\">\n@import \"@/styles/_variables.scss\";\n.plugins-manager {\n background-color: $body_background;\n}\n.plugins {\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n}\n</style>\n","export * from \"-!../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./PluginsManager.vue?vue&type=template&id=2b22642c&scoped=true\"","<template>\n <div class=\"plugin\" v-if=\"plugin\">\n <Icon v-if=\"icon && !enabled\" :src=\"icon\" />\n <div>\n <h2>{{ plugin.name() }}</h2>\n <Checkbox :checked=\"enabled\" @update:checked=\"updateEnabled($event)\" />\n </div>\n <div v-if=\"enabled\">\n <span>{{ plugin.description() }}</span>\n <div v-if=\"ui && config\">\n <component\n :key=\"pluginKey\"\n :is=\"ui\"\n :defaultConfig=\"config\"\n @changeConfig=\"updateConfig($event)\"\n ></component>\n </div>\n <div v-else>\n <PluginConfig\n :key=\"pluginKey\"\n :defaultConfig=\"config\"\n @changeConfig=\"updateConfig($event)\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { shallowRef, Ref, defineComponent } from \"vue\";\nimport PluginConfig from \"./PluginConfig.vue\";\nimport Checkbox from \"./Checkbox.vue\";\nimport Icon from \"./Icon.vue\";\nimport {\n loadConfig,\n loadConfigFromParams,\n saveConfig,\n} from \"@/controllers/storage\";\n\ndeclare interface PluginData {\n ui: Ref;\n icon: Ref;\n processor: any;\n enabled: boolean;\n keyCounter: number;\n pluginKey: string;\n config: Object;\n}\n\nexport default defineComponent({\n name: \"Plugin\",\n props: {\n name: String,\n plugin: Object,\n url: String,\n defaultConfig: Object,\n },\n components: {\n Checkbox,\n Icon,\n PluginConfig,\n },\n data(): PluginData {\n return {\n ui: shallowRef(null),\n icon: shallowRef(null),\n processor: null,\n enabled: false,\n keyCounter: 0,\n pluginKey: \"\",\n config: {},\n };\n },\n methods: {\n async loadDefaultConfig() {\n this.plugin?.defaultConfig().then((defaultConfig: any) => {\n if (this.defaultConfig && this.defaultConfig.length > 0) {\n const { enabled, config } = loadConfigFromParams(\n {\n name: this.name || \"\",\n enabled: true,\n config: defaultConfig,\n },\n this.defaultConfig\n );\n this.config = config;\n this.enabled = enabled || false;\n } else {\n const { enabled, config } = loadConfig({\n name: this.name || \"\",\n enabled: false,\n config: defaultConfig,\n });\n this.config = config;\n this.enabled = enabled || false;\n }\n });\n },\n async loadUI() {\n if (this.plugin?.ui && this.url) {\n // eslint-disable-next-line no-undef\n System.import(this.url)\n .then((module: any) => {\n module.get(\"./Widget\").then((widget: Function) => {\n this.ui = widget().default;\n });\n })\n .catch((e: any) => console.log(e));\n }\n if (this.plugin?.icon) {\n this.icon = this.plugin.icon();\n }\n },\n async updateConfig(config: Object) {\n saveConfig({\n name: this.name || \"\",\n enabled: this.enabled,\n config: config,\n });\n this.$emit(\"changeConfig\", config);\n },\n async updateEnabled(enabled: boolean) {\n this.enabled = enabled;\n saveConfig({\n name: this.name || \"\",\n enabled: this.enabled,\n config: this.config,\n });\n this.$emit(\"changeEnabled\", enabled);\n },\n },\n created() {\n console.log(this.name);\n this.loadUI();\n this.loadDefaultConfig();\n },\n watch: {\n defaultConfig: {\n handler: function () {\n this.keyCounter += 1;\n this.pluginKey = (this.name || \"\") + this.keyCounter;\n },\n },\n },\n});\n</script>\n<style scoped lang=\"scss\">\n@import \"@/styles/_variables.scss\";\n.plugin {\n margin: 10px;\n padding: 10px;\n min-width: 250px;\n min-height: 250px;\n background-color: white;\n border-radius: 5px;\n box-shadow: 5px 5px 5px $shadow;\n text-align: center;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.plugin:hover {\n box-shadow: 10px 10px 5px $shadow;\n transform: scale(1.1);\n}\n.plugin h2 {\n font-weight: normal;\n font-style: normal;\n font-size: 14pt;\n text-transform: uppercase;\n}\n</style>\n","export * from \"-!../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Plugin.vue?vue&type=template&id=199c6c00&scoped=true\"","<template>\n <div class=\"plugin-config\" v-if=\"config\">\n <div v-for=\"c in config\" :key=\"c.key\">\n <div class=\"parameter\">\n <label>{{ c.key }}: </label>\n <input\n type=\"number\"\n :placeholder=\"c.key\"\n v-model.number=\"c.value\"\n @change=\"updateConfig()\"\n v-bind:id=\"c.key\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\ninterface Config {\n key: string,\n value: any\n}\n\ndeclare interface PluginConfigData {\n config: Config[]\n}\n\nexport default defineComponent({\n name: \"PluginConfig\",\n props: {\n defaultConfig: Object,\n },\n data(): PluginConfigData {\n return {\n config: [],\n };\n },\n methods: {\n async updateConfig() {\n let config: Map<string, Object> = new Map();\n for (let c of this.config) {\n config.set(c.key, c.value);\n }\n this.$emit(\"changeConfig\", config);\n },\n },\n created() {\n for (let key in this.defaultConfig) {\n let config = { key: key, value: this.defaultConfig[key] };\n this.config.push(config);\n }\n this.updateConfig();\n },\n});\n</script>\n\n<style scoped>\n.plugin-config {\n margin: 5px;\n}\n.parameter {\n display: flex;\n justify-content: space-between;\n min-height: 50px;\n}\n.parameter input {\n min-width: 50px;\n max-width: 100px;\n}\n</style>\n","export * from \"-!../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./PluginConfig.vue?vue&type=template&id=8f565294&scoped=true\"","\nimport { defineComponent } from 'vue'\n\ninterface Config {\n key: string,\n value: any\n}\n\ndeclare interface PluginConfigData {\n config: Config[]\n}\n\nexport default defineComponent({\n name: \"PluginConfig\",\n props: {\n defaultConfig: Object,\n },\n data(): PluginConfigData {\n return {\n config: [],\n };\n },\n methods: {\n async updateConfig() {\n let config: Map<string, Object> = new Map();\n for (let c of this.config) {\n config.set(c.key, c.value);\n }\n this.$emit(\"changeConfig\", config);\n },\n },\n created() {\n for (let key in this.defaultConfig) {\n let config = { key: key, value: this.defaultConfig[key] };\n this.config.push(config);\n }\n this.updateConfig();\n },\n});\n","export { default } from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./PluginConfig.vue?vue&type=script&lang=ts\"; export * from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./PluginConfig.vue?vue&type=script&lang=ts\"","import { render } from \"./PluginConfig.vue?vue&type=template&id=8f565294&scoped=true\"\nimport script from \"./PluginConfig.vue?vue&type=script&lang=ts\"\nexport * from \"./PluginConfig.vue?vue&type=script&lang=ts\"\n\nimport \"./PluginConfig.vue?vue&type=style&index=0&id=8f565294&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-8f565294\"\n\nexport default script","<template>\n <div class=\"checkbox-container\">\n <label class=\"checkbox\">\n <input\n @input=\"(event) => $emit('update:checked', event.target.checked)\"\n type=\"checkbox\"\n :checked=\"checked\"\n id=\"checkbox\"\n />\n <span></span>\n </label>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nexport default defineComponent({\n name: \"Checkbox\",\n props: {\n checked: {\n type: Boolean,\n },\n },\n emits: [\"update:checked\"],\n computed: {\n value: {\n get() {\n return this.checked\n },\n set(value: boolean) {\n this.$emit('update:checked', value)\n }\n }\n }\n});\n</script>\n<style scoped lang=\"scss\">\n.checkbox-container {\n height: 50px;\n}\n.checkbox {\n cursor: pointer;\n position: relative;\n}\n.checkbox > input {\n height: 40px;\n width: 50px;\n position: absolute;\n left: -25px;\n top: 0rem;\n -webkit-appearance: none;\n -moz-appearance: none;\n -o-appearance: none;\n appearance: none;\n border-radius: 25px;\n outline: none;\n transition-duration: 0.3s;\n background-color: #a2f6f2;\n cursor: pointer;\n}\n.checkbox > input:checked {\n background-color: #a2f6f2;\n}\n.checkbox > input:checked + span::before {\n font-size: 2.4em;\n content: \"\\2713\";\n text-align: center;\n color: white;\n position: absolute;\n left: -0.5rem;\n top: 0rem;\n}\n.checkbox > input:active {\n border: 2px solid #34495e;\n}\n.checkbox-container:hover {\n transform: scale(0.9);\n}\n</style>\n","export * from \"-!../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Checkbox.vue?vue&type=template&id=3a505396&scoped=true\"","\nimport { defineComponent } from \"vue\";\nexport default defineComponent({\n name: \"Checkbox\",\n props: {\n checked: {\n type: Boolean,\n },\n },\n emits: [\"update:checked\"],\n computed: {\n value: {\n get() {\n return this.checked\n },\n set(value: boolean) {\n this.$emit('update:checked', value)\n }\n }\n }\n});\n","export { default } from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Checkbox.vue?vue&type=script&lang=ts\"; export * from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Checkbox.vue?vue&type=script&lang=ts\"","import { render } from \"./Checkbox.vue?vue&type=template&id=3a505396&scoped=true\"\nimport script from \"./Checkbox.vue?vue&type=script&lang=ts\"\nexport * from \"./Checkbox.vue?vue&type=script&lang=ts\"\n\nimport \"./Checkbox.vue?vue&type=style&index=0&id=3a505396&scoped=true&lang=scss\"\nscript.render = render\nscript.__scopeId = \"data-v-3a505396\"\n\nexport default script","<template>\n <div>\n <img id=\"icon\" :src=\"src\" />\n </div>\n</template>\n<script lang=\"ts\">\nexport default {\n props: {\n src: {\n type: [Object, String],\n },\n },\n};\n</script>\n<style scoped lang=\"scss\">\n#icon {\n margin: 10px;\n margin-top: 20px;\n height: 96px;\n left: 50%;\n}\n</style>\n","export * from \"-!../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Icon.vue?vue&type=template&id=223afea4&scoped=true\"","\nexport default {\n props: {\n src: {\n type: [Object, String],\n },\n },\n};\n","export { default } from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Icon.vue?vue&type=script&lang=ts\"; export * from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Icon.vue?vue&type=script&lang=ts\"","import { render } from \"./Icon.vue?vue&type=template&id=223afea4&scoped=true\"\nimport script from \"./Icon.vue?vue&type=script&lang=ts\"\nexport * from \"./Icon.vue?vue&type=script&lang=ts\"\n\nimport \"./Icon.vue?vue&type=style&index=0&id=223afea4&scoped=true&lang=scss\"\nscript.render = render\nscript.__scopeId = \"data-v-223afea4\"\n\nexport default script","import { LennaPlugin } from \"@/models/plugin\";\n\nconst saveConfig = (plugin: LennaPlugin) => {\n const config: Config = {\n name: plugin.name,\n enabled: plugin.enabled,\n config: plugin.config,\n };\n localStorage.setItem(plugin.name, JSON.stringify(config));\n};\n\nconst loadConfig = (plugin: LennaPlugin): LennaPlugin => {\n const savedConfig = localStorage.getItem(plugin.name);\n if (savedConfig) {\n const config: Config = JSON.parse(savedConfig);\n plugin.enabled = config.enabled;\n plugin.config = Object.assign(plugin.config, config.config);\n }\n return plugin;\n};\n\nconst loadConfigFromParams = (plugin: LennaPlugin, params: any): LennaPlugin => {\n params.forEach((config: Config) => {\n if (config.name === plugin.name) {\n console.log(config);\n plugin.enabled = config.enabled;\n plugin.config = Object.assign(plugin.config, config.config);\n }\n });\n return plugin;\n};\n\nconst listPlugins = (): string[] => {\n const plugins = localStorage.getItem(\"plugins\") || \"[]\";\n return JSON.parse(plugins);\n}\n\nexport { saveConfig, loadConfig, loadConfigFromParams, listPlugins };\n","\nimport { shallowRef, Ref, defineComponent } from \"vue\";\nimport PluginConfig from \"./PluginConfig.vue\";\nimport Checkbox from \"./Checkbox.vue\";\nimport Icon from \"./Icon.vue\";\nimport {\n loadConfig,\n loadConfigFromParams,\n saveConfig,\n} from \"@/controllers/storage\";\n\ndeclare interface PluginData {\n ui: Ref;\n icon: Ref;\n processor: any;\n enabled: boolean;\n keyCounter: number;\n pluginKey: string;\n config: Object;\n}\n\nexport default defineComponent({\n name: \"Plugin\",\n props: {\n name: String,\n plugin: Object,\n url: String,\n defaultConfig: Object,\n },\n components: {\n Checkbox,\n Icon,\n PluginConfig,\n },\n data(): PluginData {\n return {\n ui: shallowRef(null),\n icon: shallowRef(null),\n processor: null,\n enabled: false,\n keyCounter: 0,\n pluginKey: \"\",\n config: {},\n };\n },\n methods: {\n async loadDefaultConfig() {\n this.plugin?.defaultConfig().then((defaultConfig: any) => {\n if (this.defaultConfig && this.defaultConfig.length > 0) {\n const { enabled, config } = loadConfigFromParams(\n {\n name: this.name || \"\",\n enabled: true,\n config: defaultConfig,\n },\n this.defaultConfig\n );\n this.config = config;\n this.enabled = enabled || false;\n } else {\n const { enabled, config } = loadConfig({\n name: this.name || \"\",\n enabled: false,\n config: defaultConfig,\n });\n this.config = config;\n this.enabled = enabled || false;\n }\n });\n },\n async loadUI() {\n if (this.plugin?.ui && this.url) {\n // eslint-disable-next-line no-undef\n System.import(this.url)\n .then((module: any) => {\n module.get(\"./Widget\").then((widget: Function) => {\n this.ui = widget().default;\n });\n })\n .catch((e: any) => console.log(e));\n }\n if (this.plugin?.icon) {\n this.icon = this.plugin.icon();\n }\n },\n async updateConfig(config: Object) {\n saveConfig({\n name: this.name || \"\",\n enabled: this.enabled,\n config: config,\n });\n this.$emit(\"changeConfig\", config);\n },\n async updateEnabled(enabled: boolean) {\n this.enabled = enabled;\n saveConfig({\n name: this.name || \"\",\n enabled: this.enabled,\n config: this.config,\n });\n this.$emit(\"changeEnabled\", enabled);\n },\n },\n created() {\n console.log(this.name);\n this.loadUI();\n this.loadDefaultConfig();\n },\n watch: {\n defaultConfig: {\n handler: function () {\n this.keyCounter += 1;\n this.pluginKey = (this.name || \"\") + this.keyCounter;\n },\n },\n },\n});\n","export { default } from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Plugin.vue?vue&type=script&lang=ts\"; export * from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Plugin.vue?vue&type=script&lang=ts\"","import { render } from \"./Plugin.vue?vue&type=template&id=199c6c00&scoped=true\"\nimport script from \"./Plugin.vue?vue&type=script&lang=ts\"\nexport * from \"./Plugin.vue?vue&type=script&lang=ts\"\n\nimport \"./Plugin.vue?vue&type=style&index=0&id=199c6c00&scoped=true&lang=scss\"\nscript.render = render\nscript.__scopeId = \"data-v-199c6c00\"\n\nexport default script","\nimport { defineComponent } from \"vue\";\nimport { VueDraggableNext } from \"vue-draggable-next\";\nimport Plugin from \"@/components/Plugin.vue\";\nimport { loadConfig, listPlugins } from \"@/controllers/storage\";\nimport { useToast } from \"vue-toastification\";\nimport {LennaPlugin} from \"@/models/plugin\";\n\ninterface Configs {\n [key: string]: any\n}\n\ndeclare interface PluginsManagerData {\n plugins: LennaPlugin[];\n configs: Configs;\n}\n\nexport default defineComponent({\n name: \"PluginsManager\",\n props: {\n filter: String,\n pluginsmap: String,\n pluginsjson: String,\n defaultConfig: Object,\n defaultPlugins: Array as () => Array<string>,\n },\n components: {\n Plugin,\n draggable: VueDraggableNext,\n },\n data(): PluginsManagerData {\n return {\n plugins: [],\n configs: {},\n };\n },\n beforeMount() {\n let tasks = [this.getPluginsmap(), this.getPluginsjson()];\n this.configs = this.defaultConfig || {};\n if (this.defaultPlugins) {\n this.defaultPlugins.forEach((plugin: string) => {\n tasks.push(this.importPlugin(plugin, plugin));\n });\n }\n listPlugins().forEach((plugin) => {\n tasks.push(this.importPlugin(plugin, plugin));\n });\n Promise.all(tasks)\n .then(() => {\n if (this.plugins.length < 1) {\n const toast = useToast();\n toast.warning(\n `No plugin enabled. Find more plugins in the marketplace.`\n );\n }\n })\n .catch(console.log);\n\n //this.importPlugin(\"local\", \"http://localhost:3002/remoteEntry.js\");\n },\n methods: {\n changeEnabled(name: string, enabled: boolean) {\n let plugin = this.plugins.find((o: any) => o.name === name);\n if (plugin) {\n plugin.enabled = enabled;\n }\n },\n changeConfig(name: string, config: Object) {\n let plugin = this.plugins.find((o: LennaPlugin) => o.name === name);\n if (plugin) {\n plugin.config = config;\n }\n },\n raw(comp: any) {\n return comp;\n },\n async importPlugin(key: string, url: string) {\n // eslint-disable-next-line no-undef\n return System.import(url).then(async (module: any) => {\n // eslint-disable-next-line no-undef\n await module.init(__webpack_require__.S[\"default\"]);\n return module.get(\"default\").then((plugin: any) => {\n let pluginConfig = loadConfig({\n name: key,\n url: url,\n plugin: plugin(),\n enabled: false,\n config: {},\n });\n if (this.filter) {\n if (pluginConfig.name.includes(this.filter)) {\n pluginConfig.enabled = true;\n this.configs.push({\n name: pluginConfig.name,\n enabled: true,\n config: pluginConfig.config,\n });\n this.plugins.push(pluginConfig);\n }\n } else {\n this.plugins.push(pluginConfig);\n }\n });\n });\n },\n async getPluginsmap() {\n let tasks = [];\n if (this.pluginsmap) {\n const res = await fetch(this.pluginsmap);\n const data = await res.json();\n for (const key in data.imports) {\n tasks.push(\n // eslint-disable-next-line no-undef\n System.import(key).then((plugin: any) => {\n let pluginConfig = loadConfig({\n name: key,\n url: data.imports[key],\n plugin: plugin,\n enabled: false,\n config: {},\n });\n if (this.filter) {\n if (pluginConfig.name.includes(this.filter)) {\n pluginConfig.enabled = true;\n this.configs.push({\n name: pluginConfig.name,\n enabled: true,\n config: pluginConfig.config,\n });\n this.plugins.push(pluginConfig);\n }\n } else {\n this.plugins.push(pluginConfig);\n }\n })\n );\n }\n }\n return Promise.all(tasks);\n },\n async getPluginsjson() {\n let tasks = [];\n if (this.pluginsjson) {\n const res = await fetch(this.pluginsjson);\n const data = await res.json();\n for (const key in data.plugins) {\n let url = data.plugins[key];\n tasks.push(this.importPlugin(key, url));\n }\n }\n return Promise.all(tasks);\n },\n },\n});\n","export { default } from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./PluginsManager.vue?vue&type=script&lang=ts\"; export * from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./PluginsManager.vue?vue&type=script&lang=ts\"","import { render } from \"./PluginsManager.vue?vue&type=template&id=2b22642c&scoped=true\"\nimport script from \"./PluginsManager.vue?vue&type=script&lang=ts\"\nexport * from \"./PluginsManager.vue?vue&type=script&lang=ts\"\n\nimport \"./PluginsManager.vue?vue&type=style&index=0&id=2b22642c&scoped=true&lang=scss\"\nscript.render = render\nscript.__scopeId = \"data-v-2b22642c\"\n\nexport default script","<template>\n <div class=\"image-upload\">\n <FileUpload\n :multiple=\"true\"\n :drop=\"true\"\n :drop-directory=\"true\"\n extensions=\"gif,jpg,jpeg,png,webp\"\n accept=\"image/png,image/gif,image/jpeg,image/webp\"\n v-model=\"files\"\n @input-filter=\"inputFilter\"\n @input-file=\"inputFile\"\n ref=\"upload\"\n class=\"file-upload\"\n >\n drop<br />or<br />select files</FileUpload\n >\n <div v-if=\"images.length > 0\" class=\"image-container\">\n <div\n v-for=\"(src, index) in images\"\n :key=\"index\"\n class=\"pic\"\n @click=\"() => showImg(index)\"\n >\n <img height=\"140\" :src=\"src\" />\n </div>\n <vue-easy-lightbox\n escDisabled\n moveDisabled\n :visible=\"visible\"\n :imgs=\"images\"\n :index=\"index\"\n @hide=\"handleHide\"\n ></vue-easy-lightbox>\n </div>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport FileUpload from \"vue-upload-component\";\nimport VueEasyLightbox from \"vue-easy-lightbox\";\n\ndeclare interface ImageUploadData {\n files: Object[];\n images: Object[];\n visible: boolean;\n index: number;\n}\n\nexport default defineComponent({\n components: {\n FileUpload,\n VueEasyLightbox,\n },\n data(): ImageUploadData {\n return {\n files: [],\n images: [],\n visible: false,\n index: 0,\n };\n },\n methods: {\n // eslint-disable-next-line no-unused-vars\n inputFile(newFile: any, oldFile: any, prevent: any) {\n this.images.push(newFile.url);\n this.$emit(\"changeImage\", newFile);\n },\n inputFilter(newFile: any, oldFile: any, prevent: any) {\n if (newFile && !oldFile) {\n if (!/\\.(gif|jpg|jpeg|png|webp)$/i.test(newFile.name)) {\n alert(\"Your choice is not a picture\");\n return prevent();\n }\n }\n if (newFile && (!oldFile || newFile.file !== oldFile.file)) {\n newFile.url = \"\";\n let URL = window.URL || window.webkitURL;\n if (URL && URL.createObjectURL) {\n newFile.url = URL.createObjectURL(newFile.file);\n }\n }\n },\n showImg(index: number) {\n this.index = index;\n this.visible = true;\n },\n handleHide() {\n this.visible = false;\n },\n },\n});\n</script>\n<style scoped lang=\"scss\">\n@import \"@/styles/_variables.scss\";\n.image-upload {\n margin: 10px;\n width: 300px;\n height: 350px;\n background-color: $background_color;\n border: 2px solid black;\n border-radius: 10px;\n box-shadow: 10px 5px 5px $shadow;\n text-align: center;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n.file-upload {\n text-transform: uppercase;\n font-size: 14pt;\n margin: 10px;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.file-upload:hover {\n transform: scale(1.05);\n}\n.image-container {\n height: 200px;\n display: flex;\n flex-wrap: wrap;\n overflow-y: auto;\n}\n</style>\n","export * from \"-!../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./ImageUpload.vue?vue&type=template&id=3b69b15e&scoped=true\"","\nimport { defineComponent } from \"vue\";\nimport FileUpload from \"vue-upload-component\";\nimport VueEasyLightbox from \"vue-easy-lightbox\";\n\ndeclare interface ImageUploadData {\n files: Object[];\n images: Object[];\n visible: boolean;\n index: number;\n}\n\nexport default defineComponent({\n components: {\n FileUpload,\n VueEasyLightbox,\n },\n data(): ImageUploadData {\n return {\n files: [],\n images: [],\n visible: false,\n index: 0,\n };\n },\n methods: {\n // eslint-disable-next-line no-unused-vars\n inputFile(newFile: any, oldFile: any, prevent: any) {\n this.images.push(newFile.url);\n this.$emit(\"changeImage\", newFile);\n },\n inputFilter(newFile: any, oldFile: any, prevent: any) {\n if (newFile && !oldFile) {\n if (!/\\.(gif|jpg|jpeg|png|webp)$/i.test(newFile.name)) {\n alert(\"Your choice is not a picture\");\n return prevent();\n }\n }\n if (newFile && (!oldFile || newFile.file !== oldFile.file)) {\n newFile.url = \"\";\n let URL = window.URL || window.webkitURL;\n if (URL && URL.createObjectURL) {\n newFile.url = URL.createObjectURL(newFile.file);\n }\n }\n },\n showImg(index: number) {\n this.index = index;\n this.visible = true;\n },\n handleHide() {\n this.visible = false;\n },\n },\n});\n","export { default } from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./ImageUpload.vue?vue&type=script&lang=ts\"; export * from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./ImageUpload.vue?vue&type=script&lang=ts\"","import { render } from \"./ImageUpload.vue?vue&type=template&id=3b69b15e&scoped=true\"\nimport script from \"./ImageUpload.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageUpload.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageUpload.vue?vue&type=style&index=0&id=3b69b15e&scoped=true&lang=scss\"\nscript.render = render\nscript.__scopeId = \"data-v-3b69b15e\"\n\nexport default script","<template>\n <div class=\"image-preview\">\n <div id=\"save\">\n <select v-model=\"filetype\">\n <option\n v-for=\"option in options\"\n :value=\"option.value\"\n :key=\"option.text\"\n >\n {{ option.text }}\n </option>\n </select>\n <p v-on:click=\"downloadZip\">save files</p>\n </div>\n <br />\n <div v-if=\"imgs.length > 0\" class=\"image-container\">\n <div\n v-for=\"(src, index) in imgs\"\n :key=\"index\"\n class=\"pic\"\n @click=\"() => showImg(index)\"\n >\n <img height=\"140\" :src=\"src\" />\n </div>\n </div>\n <vue-easy-lightbox\n escDisabled\n moveDisabled\n :visible=\"visible\"\n :imgs=\"imgs\"\n :index=\"index\"\n @hide=\"handleHide\"\n ></vue-easy-lightbox>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport VueEasyLightbox from \"vue-easy-lightbox\";\nimport { saveAs } from \"file-saver\";\nimport JSZip from \"jszip\";\nimport { useToast } from \"vue-toastification\";\n\ninterface ImagePreviewImage {\n name: string\n}\n\ndeclare interface ImagePreviewData {\n imgs: string[];\n visible: boolean;\n index: number;\n filetype: string;\n options: Object[];\n}\n\nexport default defineComponent({\n components: {\n VueEasyLightbox,\n },\n props: {\n images: {\n type: Array as () => Array<ImagePreviewImage>,\n required: true,\n },\n },\n data(): ImagePreviewData {\n return {\n imgs: [],\n visible: false,\n index: 0,\n filetype: \"png\",\n options: [\n { text: \"png\", value: \"png\" },\n { text: \"jpg\", value: \"jpg\" },\n { text: \"bmp\", value: \"bmp\" },\n { text: \"ico\", value: \"ico\" },\n { text: \"gif\", value: \"gif\" },\n ],\n };\n },\n methods: {\n createObjectURL(image: ImagePreviewImage) {\n return URL.createObjectURL(image);\n },\n async safeImage(cli: any, file: any, format: string) {\n let data = await file\n .arrayBuffer()\n .then((image: any) => new Uint8Array(image));\n return cli.save(data, format);\n },\n async downloadZip() {\n // eslint-disable-next-line no-undef\n let cli = await System.import(\n \"https://lenna.app/lenna-cli/remoteEntry.js\"\n ).then((module: any) => {\n // eslint-disable-next-line no-undef\n module.init(__webpack_require__.S[\"default\"]);\n return module.get(\"default\").then((cli: Function) => {\n return cli();\n });\n });\n\n let zip = new JSZip();\n const toast = useToast();\n const imageCount = this.images.length;\n if (imageCount < 1) {\n return;\n }\n let compressedCount = 0;\n toast.info(`compressing of ${this.images.length} images started`);\n let promises = this.images.map((image: ImagePreviewImage) => {\n let type = `image/${this.filetype}`;\n\n return this.safeImage(cli, image, this.filetype).then(\n (compressed_image) => {\n let file = new File([compressed_image], image.name, { type });\n compressedCount++;\n toast.success(\n `compressed ${image.name} ${compressedCount} / ${imageCount} images`\n );\n return zip.file(\n `${image.name.replace(/(\\.[^/.]+)+$/, \"\")}.${this.filetype}`,\n file\n );\n }\n );\n });\n await Promise.all(promises);\n zip.generateAsync({ type: \"blob\" }).then(function (blob) {\n saveAs(blob, \"images.zip\");\n });\n },\n show() {\n this.visible = true;\n },\n showImg(index: any) {\n this.index = index;\n this.visible = true;\n },\n handleHide() {\n this.visible = false;\n },\n },\n watch: {\n $props: {\n handler() {\n this.imgs = [];\n this.index = 0;\n this.images.forEach((image) => {\n this.imgs.push(this.createObjectURL(image));\n });\n },\n deep: true,\n immediate: true,\n },\n },\n});\n</script>\n<style scoped lang=\"scss\">\n@import \"@/styles/_variables.scss\";\n.image-preview {\n margin: 10px;\n width: 300px;\n height: 350px;\n background-color: $background_color;\n border: 2px solid black;\n border-radius: 10px;\n box-shadow: 10px 5px 5px $shadow;\n align-items: center;\n text-align: center;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n.image-container {\n height: 200px;\n display: flex;\n flex-wrap: wrap;\n overflow-y: auto;\n}\n#save {\n text-transform: uppercase;\n font-size: 14pt;\n cursor: pointer;\n margin: 10px;\n}\n#save:hover {\n transform: scale(1.05);\n}\n#save select {\n height: 40px;\n min-width: 60px;\n color: $text_color;\n font-family: \"Open Sans\", sans-serif;\n font-size: 16px;\n cursor: pointer;\n box-shadow: 2px 2px 5px 1px rgba(0, 0, 0, 0.3);\n border-radius: 3px;\n outline: none;\n background-color: white;\n}\n</style>\n","export * from \"-!../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./ImagePreview.vue?vue&type=template&id=a1b2b00c&scoped=true\"","\nimport { defineComponent } from \"vue\";\nimport VueEasyLightbox from \"vue-easy-lightbox\";\nimport { saveAs } from \"file-saver\";\nimport JSZip from \"jszip\";\nimport { useToast } from \"vue-toastification\";\n\ninterface ImagePreviewImage {\n name: string\n}\n\ndeclare interface ImagePreviewData {\n imgs: string[];\n visible: boolean;\n index: number;\n filetype: string;\n options: Object[];\n}\n\nexport default defineComponent({\n components: {\n VueEasyLightbox,\n },\n props: {\n images: {\n type: Array as () => Array<ImagePreviewImage>,\n required: true,\n },\n },\n data(): ImagePreviewData {\n return {\n imgs: [],\n visible: false,\n index: 0,\n filetype: \"png\",\n options: [\n { text: \"png\", value: \"png\" },\n { text: \"jpg\", value: \"jpg\" },\n { text: \"bmp\", value: \"bmp\" },\n { text: \"ico\", value: \"ico\" },\n { text: \"gif\", value: \"gif\" },\n ],\n };\n },\n methods: {\n createObjectURL(image: ImagePreviewImage) {\n return URL.createObjectURL(image);\n },\n async safeImage(cli: any, file: any, format: string) {\n let data = await file\n .arrayBuffer()\n .then((image: any) => new Uint8Array(image));\n return cli.save(data, format);\n },\n async downloadZip() {\n // eslint-disable-next-line no-undef\n let cli = await System.import(\n \"https://lenna.app/lenna-cli/remoteEntry.js\"\n ).then((module: any) => {\n // eslint-disable-next-line no-undef\n module.init(__webpack_require__.S[\"default\"]);\n return module.get(\"default\").then((cli: Function) => {\n return cli();\n });\n });\n\n let zip = new JSZip();\n const toast = useToast();\n const imageCount = this.images.length;\n if (imageCount < 1) {\n return;\n }\n let compressedCount = 0;\n toast.info(`compressing of ${this.images.length} images started`);\n let promises = this.images.map((image: ImagePreviewImage) => {\n let type = `image/${this.filetype}`;\n\n return this.safeImage(cli, image, this.filetype).then(\n (compressed_image) => {\n let file = new File([compressed_image], image.name, { type });\n compressedCount++;\n toast.success(\n `compressed ${image.name} ${compressedCount} / ${imageCount} images`\n );\n return zip.file(\n `${image.name.replace(/(\\.[^/.]+)+$/, \"\")}.${this.filetype}`,\n file\n );\n }\n );\n });\n await Promise.all(promises);\n zip.generateAsync({ type: \"blob\" }).then(function (blob) {\n saveAs(blob, \"images.zip\");\n });\n },\n show() {\n this.visible = true;\n },\n showImg(index: any) {\n this.index = index;\n this.visible = true;\n },\n handleHide() {\n this.visible = false;\n },\n },\n watch: {\n $props: {\n handler() {\n this.imgs = [];\n this.index = 0;\n this.images.forEach((image) => {\n this.imgs.push(this.createObjectURL(image));\n });\n },\n deep: true,\n immediate: true,\n },\n },\n});\n","export { default } from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./ImagePreview.vue?vue&type=script&lang=ts\"; export * from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./ImagePreview.vue?vue&type=script&lang=ts\"","import { render } from \"./ImagePreview.vue?vue&type=template&id=a1b2b00c&scoped=true\"\nimport script from \"./ImagePreview.vue?vue&type=script&lang=ts\"\nexport * from \"./ImagePreview.vue?vue&type=script&lang=ts\"\n\nimport \"./ImagePreview.vue?vue&type=style&index=0&id=a1b2b00c&scoped=true&lang=scss\"\nscript.render = render\nscript.__scopeId = \"data-v-a1b2b00c\"\n\nexport default script","<template>\n<div>\n <button v-on:click=\"generateConfigUrlBase64\" v-if=\"plugins\">\n generate actual config url\n </button>\n <div class=\"config\" v-if=\"base64config\">\n <textarea v-model=\"base64config\" :readonly=\"true\"></textarea>\n </div>\n\n <button v-on:click=\"generateLennaConfig\">lenna.yml</button>\n</div>\n</template>\n\n<script>\nimport YAML from \"yaml\";\nexport default {\n name: \"Plugin\",\n props: {\n plugins: Array,\n },\n data() {\n return {\n url: \"https://lenna.app/?config=\",\n base64config: \"\",\n };\n },\n methods: {\n download(filename, text) {\n var element = document.createElement(\"a\");\n element.setAttribute(\n \"href\",\n \"data:text/plain;charset=utf-8,\" + encodeURIComponent(text)\n );\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n },\n generateConfigUrlBase64() {\n let plugins = [];\n for (let id in this.plugins) {\n let plugin = this.plugins[id];\n if (plugin.enabled) {\n plugins.push({\n name: plugin.name,\n enabled: plugin.enabled,\n config: plugin.config,\n });\n }\n }\n let config = JSON.stringify(plugins);\n this.base64config = this.url + btoa(config);\n },\n generateLennaConfig() {\n let plugins = [];\n for (let id in this.plugins) {\n let plugin = this.plugins[id];\n if (plugin.enabled) {\n let config = plugin.config;\n config.id = plugin.plugin.name();\n plugins.push(config);\n }\n }\n let comment = \"# https://github.com/lenna-project/lenna-cli\\n\"\n + \"# lenna-cli images_path --config lenna.yml\\n\"\n let lenna_yml = YAML.stringify({\"pipeline\": plugins });\n this.download(\"lenna.yml\", comment + lenna_yml);\n },\n },\n};\n</script>\n\n<style scoped>\n.config {\n margin: 10px;\n width: 200px;\n height: 300px;\n background-color: #efcda4;\n border: 1px solid darkgray;\n border-radius: 5px;\n}\n</style>\n","export * from \"-!../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Config.vue?vue&type=template&id=123d8a62&scoped=true\"","export { default } from \"-!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Config.vue?vue&type=script&lang=js\"; export * from \"-!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Config.vue?vue&type=script&lang=js\"","import { render } from \"./Config.vue?vue&type=template&id=123d8a62&scoped=true\"\nimport script from \"./Config.vue?vue&type=script&lang=js\"\nexport * from \"./Config.vue?vue&type=script&lang=js\"\n\nimport \"./Config.vue?vue&type=style&index=0&id=123d8a62&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-123d8a62\"\n\nexport default script","<template>\n <div class=\"help\">\n <h2>How to Convert Images</h2>\n <ol>\n <li>Drop images into left box.</li>\n <li>Enable the plugins you want to use in convertion.</li>\n <li>Order the plugins via drag and drop</li>\n <li>Press the process button.</li>\n <li>Select file type you want to download on the right.</li>\n <li>Download your converted images compressed as zip.</li>\n </ol>\n </div>\n</template>\n<script lang=\"ts\">\n</script>\n<style scoped>\n.help {\n display: block;\n}\n</style>\n","export * from \"-!../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Help.vue?vue&type=template&id=3d751e3e&scoped=true\"","import { render } from \"./Help.vue?vue&type=template&id=3d751e3e&scoped=true\"\nconst script = {}\n\nimport \"./Help.vue?vue&type=style&index=0&id=3d751e3e&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-3d751e3e\"\n\nexport default script","\nimport { defineComponent, ref } from \"vue\";\nimport * as NProgress from \"nprogress\";\nimport { Slide } from \"vue3-burger-menu\";\nimport { useToast } from \"vue-toastification\";\nimport PluginsManager from \"@/components/PluginsManager.vue\";\nimport ImageUpload from \"@/components/ImageUpload.vue\";\nimport ImagePreview from \"@/components/ImagePreview.vue\";\nimport Config from \"@/components/Config.vue\";\nimport Help from \"@/components/Help.vue\";\n\ninterface Image {\n name: string\n}\n\ndeclare interface HomeData {\n pluginUrl: string;\n just: string | null;\n defaultConfig: [];\n defaultPlugins: string[];\n sourceImages: Image[];\n resultImages: Image[];\n}\n\nexport default defineComponent({\n name: \"Home\",\n components: {\n Slide,\n PluginsManager,\n ImageUpload,\n ImagePreview,\n Config,\n Help,\n },\n data(): HomeData {\n return {\n pluginUrl: \"\",\n just: null,\n defaultConfig: [],\n defaultPlugins: [],\n sourceImages: [],\n resultImages: [],\n };\n },\n setup: () => {\n const imageUpload = ref(ImageUpload);\n const pluginsManager = ref(PluginsManager);\n return {\n imageUpload,\n pluginsManager,\n };\n },\n created() {\n if (this.$route.query[\"config\"]) {\n this.defaultConfig = JSON.parse(\n // eslint-disable-next-line no-undef\n Buffer.from(this.$route.query[\"config\"].toString(), \"base64\").toString(\n \"binary\"\n )\n );\n console.log(this.defaultConfig);\n }\n if (this.$route.query.plugin) {\n this.defaultPlugins = [this.$route.query.plugin.toString()];\n }\n if (this.$route.query.just) {\n this.just = this.$route.query.just.toString();\n }\n },\n methods: {\n loadPlugin(pluginUrl: string) {\n console.log(\"loaded plugin: \", pluginUrl);\n this.pluginsManager.importPlugin(pluginUrl, pluginUrl);\n },\n onMorePlugins() {\n window.location.replace(\"/marketplace\");\n },\n changeImages(files: any) {\n this.sourceImages.push(files.file);\n },\n async processImages() {\n const toast = useToast();\n const imageCount = this.sourceImages.length;\n let convertedCount = 0;\n toast.info(`converting ${imageCount} images started`);\n this.resultImages = [];\n let tasks = [];\n for (let sourceImage of this.sourceImages) {\n tasks.push(\n this.process(sourceImage).then((image) => {\n let file = new File([image], sourceImage.name, {\n type: \"image/png\",\n });\n this.resultImages.push(file);\n convertedCount++;\n toast.success(\n `converted ${convertedCount} of ${imageCount} images`\n );\n })\n );\n }\n this.imageUpload.images = [];\n this.sourceImages = [];\n return Promise.all(tasks).then(() => {\n toast.info(`converted ${convertedCount} images`);\n });\n },\n async process(imageFile: any) {\n NProgress.configure({ parent: \"#process\" });\n NProgress.start();\n let img = new Uint8Array(await imageFile.arrayBuffer());\n for (let plugin of this.pluginsManager.plugins) {\n NProgress.inc(0.2);\n if (plugin.enabled) {\n img = await plugin.plugin.process(plugin.config, img);\n }\n }\n\n NProgress.done();\n NProgress.remove();\n return img;\n },\n },\n});\n","export { default } from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Home.vue?vue&type=script&lang=ts\"; export * from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Home.vue?vue&type=script&lang=ts\"","import { render } from \"./Home.vue?vue&type=template&id=0e5fdee8&scoped=true\"\nimport script from \"./Home.vue?vue&type=script&lang=ts\"\nexport * from \"./Home.vue?vue&type=script&lang=ts\"\n\nimport \"./Home.vue?vue&type=style&index=0&id=0e5fdee8&scoped=true&lang=scss\"\nscript.render = render\nscript.__scopeId = \"data-v-0e5fdee8\"\n\nexport default script","<template>\n <div class=\"about\">\n <h1>About Lenna Project</h1>\n <p>\n Lenna is a library for image processing algorithms. The web page allows to\n test and use them.\n </p>\n <Help />\n <h2>Thanks</h2>\n <ul>\n <li>Silvia (<a href=\"https://github.com/silvia-odwyer/photon\">photon</a>)</li>\n </ul>\n <h2>Plugins</h2>\n <p>\n Lenna allows to plug in more algorithms. \n The plugins can be activated for use in the <a href=\"https://lenna.app/marketplace/\">marketplace</a>. \n Some examples can be found at\n <a href=\"https://github.com/lenna-project/lenna-plugins\"\n >lenna-project/lenna-plugins</a\n >\n on github.\n <br/>\n Following a list of available plugins:\n\n <ul>\n <li><b>blur</b> - Blurs the image. The strength can be configured.</li>\n <li><b>dramatic</b> - Gives the image a dramatic touch.</li>\n <li><b>exif</b> - Allows to clear exif data of the image.</li>\n <li><b>rotate</b> - Rotates the image.</li>\n <li><b>canny</b> - Shows edges of objects in the image.</li>\n </ul>\n </p>\n \n <h2>Jupyter Notebooks</h2>\n View some notebooks <a href=\"/jupyter\">here</a> to see how the plugins can be used in python.\n \n <h2>Command Line Interface</h2>\n <iframe src=\"https://snapcraft.io/lenna-cli/embedded?button=black&summary=true\" frameborder=\"0\" width=\"100%\" height=\"380px\" style=\"border: 1px solid #CCC; border-radius: 2px;\"></iframe>\n <p>\n A command line interface allows to use the algorithms and run them on\n multiple images at once. The source for\n <a href=\"https://github.com/lenna-project/lenna-cli\">lenna-cli</a>\n can be found on github.\n </p>\n <img src=\"https://raw.githubusercontent.com/lenna-project/lenna-cli/main/docs/images/run.gif\" />\n\n <h2>Desktop App</h2>\n <a href=\"https://sourceforge.net/projects/lenna/files/latest/download\"><img alt=\"Download lenna\" src=\"https://a.fsdn.com/con/app/sf-download-button\" width=276 height=48 srcset=\"https://a.fsdn.com/con/app/sf-download-button?button_size=2x 2x\"></a>\n <br />\n <iframe src=\"https://snapcraft.io/lenna/embedded?button=black&summary=true&screenshot=true\" frameborder=\"0\" width=\"100%\" height=\"620px\" style=\"border: 1px solid #CCC; border-radius: 2px;\"></iframe>\n\n <h2>Desktop Web App</h2>\n <a href=\"https://github.com/lenna-project/lenna-gui/releases/latest\">Lenna GUI</a>\n This App supports convertion of images in folders.\n <br />\n You can find installers for Mac, Linux and Windows.\n <br />\n\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport Help from \"@/components/Help.vue\";\n\nexport default defineComponent({\n name: \"About\",\n components: {\n Help,\n },\n});\n</script>\n<style scoped lang=\"scss\">\n@import \"@/styles/_variables.scss\";\n.about {\n padding: 100px;\n padding-left: 30%;\n background-color: $body_background;\n height: 100%;\n}\n</style>\n","export * from \"-!../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./About.vue?vue&type=template&id=603296e7&scoped=true\"","\nimport { defineComponent } from \"vue\";\nimport Help from \"@/components/Help.vue\";\n\nexport default defineComponent({\n name: \"About\",\n components: {\n Help,\n },\n});\n","export { default } from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./About.vue?vue&type=script&lang=ts\"; export * from \"-!../../node_modules/ts-loader/index.js??clonedRuleSet-1!../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./About.vue?vue&type=script&lang=ts\"","import { render } from \"./About.vue?vue&type=template&id=603296e7&scoped=true\"\nimport script from \"./About.vue?vue&type=script&lang=ts\"\nexport * from \"./About.vue?vue&type=script&lang=ts\"\n\nimport \"./About.vue?vue&type=style&index=0&id=603296e7&scoped=true&lang=scss\"\nscript.render = render\nscript.__scopeId = \"data-v-603296e7\"\n\nexport default script","import { createWebHistory, createRouter } from \"vue-router\";\nimport Home from \"@/views/Home.vue\";\nimport About from \"@/views/About.vue\";\n\nconst routes = [\n {\n path: \"/\",\n name: \"Home\",\n component: Home,\n },\n {\n path: \"/about\",\n name: \"About\",\n component: About,\n },\n {\n path: \"/just/${just}\",\n name: \"Just\",\n component: Home,\n }\n];\n\nconst router = createRouter({\n history: createWebHistory(),\n routes,\n});\n\nexport default router;","import { createApp } from \"vue\";\nimport App from \"./App.vue\";\nimport route from \"./router\"\nimport \"./styles/index.scss\";\n\nimport Toast, { POSITION } from \"vue-toastification\";\nimport \"vue-toastification/dist/index.css\";\n\ncreateApp(App)\n .use(route)\n .use(Toast, { position: POSITION.TOP_LEFT })\n .mount(\"#app\");\n"],"names":[],"sourceRoot":""}