mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-10-31 10:13:32 -04:00 
			
		
		
		
	feature/improve-parser-ux (#789)
* cleanup console.logs * default to panels open * feat(frontend): ✨ add ingredient on enter * feat(frontend): ✨ automatically trigger parser on navigation * feat(frontend): ✨ prompt user before leaving when in editor * add deep copy utility * improve flow of parser * add tooltip and match disable with disableAmount * force admin users to have advanced access Co-authored-by: hay-kot <hay-kot@pm.me>
This commit is contained in:
		| @@ -46,14 +46,15 @@ export interface Unit { | |||||||
|  |  | ||||||
| export interface Food { | export interface Food { | ||||||
|   name: string; |   name: string; | ||||||
|   description: string; |   description?: string; | ||||||
| } | } | ||||||
|  |  | ||||||
| export interface Ingredient { | export interface Ingredient { | ||||||
|  |   referenceId: string; | ||||||
|   title: string; |   title: string; | ||||||
|   note: string; |   note: string; | ||||||
|   unit: Unit; |   unit: Unit | null; | ||||||
|   food: Food; |   food: Food | null; | ||||||
|   disableAmount: boolean; |   disableAmount: boolean; | ||||||
|   quantity: number; |   quantity: number; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -38,7 +38,11 @@ | |||||||
|           item-text="name" |           item-text="name" | ||||||
|           class="mx-1" |           class="mx-1" | ||||||
|           placeholder="Choose Unit" |           placeholder="Choose Unit" | ||||||
|  |           @keyup.enter="handleUnitEnter" | ||||||
|         > |         > | ||||||
|  |           <template #no-data> | ||||||
|  |             <div class="caption text-center pb-2">Press Enter to Create</div> | ||||||
|  |           </template> | ||||||
|           <template #append-item> |           <template #append-item> | ||||||
|             <div class="px-2"> |             <div class="px-2"> | ||||||
|               <BaseButton block small @click="createAssignUnit()"></BaseButton> |               <BaseButton block small @click="createAssignUnit()"></BaseButton> | ||||||
| @@ -60,7 +64,11 @@ | |||||||
|           item-text="name" |           item-text="name" | ||||||
|           class="mx-1 py-0" |           class="mx-1 py-0" | ||||||
|           placeholder="Choose Food" |           placeholder="Choose Food" | ||||||
|  |           @keyup.enter="handleFoodEnter" | ||||||
|         > |         > | ||||||
|  |           <template #no-data> | ||||||
|  |             <div class="caption text-center pb-2">Press Enter to Create</div> | ||||||
|  |           </template> | ||||||
|           <template #append-item> |           <template #append-item> | ||||||
|             <div class="px-2"> |             <div class="px-2"> | ||||||
|               <BaseButton block small @click="createAssignFood()"></BaseButton> |               <BaseButton block small @click="createAssignFood()"></BaseButton> | ||||||
| @@ -132,7 +140,6 @@ export default defineComponent({ | |||||||
|       workingUnitData.name = unitSearch.value; |       workingUnitData.name = unitSearch.value; | ||||||
|       await unitActions.createOne(); |       await unitActions.createOne(); | ||||||
|       value.unit = units.value?.find((unit) => unit.name === unitSearch.value); |       value.unit = units.value?.find((unit) => unit.name === unitSearch.value); | ||||||
|       console.log(value.unit); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     const state = reactive({ |     const state = reactive({ | ||||||
| @@ -149,7 +156,23 @@ export default defineComponent({ | |||||||
|       } |       } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     function handleUnitEnter() { | ||||||
|  |       if (value.unit === null || !value.unit.name.includes(unitSearch.value)) { | ||||||
|  |         console.log("Creating"); | ||||||
|  |         createAssignUnit(); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     function handleFoodEnter() { | ||||||
|  |       if (value.food === null || !value.food.name.includes(foodSearch.value)) { | ||||||
|  |         console.log("Creating"); | ||||||
|  |         createAssignFood(); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     return { |     return { | ||||||
|  |       handleUnitEnter, | ||||||
|  |       handleFoodEnter, | ||||||
|       ...toRefs(state), |       ...toRefs(state), | ||||||
|       createAssignFood, |       createAssignFood, | ||||||
|       createAssignUnit, |       createAssignUnit, | ||||||
|   | |||||||
| @@ -1,52 +0,0 @@ | |||||||
| <template> |  | ||||||
|   <v-menu offset-y offset-overflow left top nudge-top="6" :close-on-content-click="false"> |  | ||||||
|     <template #activator="{ on, attrs }"> |  | ||||||
|       <v-btn color="accent" dark v-bind="attrs" v-on="on"> |  | ||||||
|         <v-icon left> |  | ||||||
|           {{ $globals.icons.foods }} |  | ||||||
|         </v-icon> |  | ||||||
|         Parse |  | ||||||
|       </v-btn> |  | ||||||
|     </template> |  | ||||||
|     <v-card width="400"> |  | ||||||
|       <v-card-title class="mb-1 pb-0"> |  | ||||||
|         <v-icon left color="warning"> {{ $globals.icons.alert }}</v-icon> Experimental |  | ||||||
|       </v-card-title> |  | ||||||
|       <v-divider class="mx-2"> </v-divider> |  | ||||||
|       <v-card-text> |  | ||||||
|         Mealie can use natural language processing to attempt to parse and create units, and foods for your Recipe |  | ||||||
|         ingredients. This is experimental and may not work as expected. If you choose to not use the parsed results you |  | ||||||
|         can click the close button at the top of the page and your changes will not be saved. |  | ||||||
|       </v-card-text> |  | ||||||
|       <v-card-actions> |  | ||||||
|         <v-spacer></v-spacer> |  | ||||||
|         <BaseButton small color="accent" :to="`${slug}/ingredient-parser`"> |  | ||||||
|           <template #icon> |  | ||||||
|             {{ $globals.icons.check }} |  | ||||||
|           </template> |  | ||||||
|           {{ $t("general.confirm") }} |  | ||||||
|         </BaseButton> |  | ||||||
|       </v-card-actions> |  | ||||||
|     </v-card> |  | ||||||
|   </v-menu> |  | ||||||
| </template> |  | ||||||
|  |  | ||||||
| <script lang="ts"> |  | ||||||
| import { defineComponent } from "@nuxtjs/composition-api"; |  | ||||||
|  |  | ||||||
| export default defineComponent({ |  | ||||||
|   props: { |  | ||||||
|     ingredients: { |  | ||||||
|       type: Array, |  | ||||||
|       required: true, |  | ||||||
|     }, |  | ||||||
|     slug: { |  | ||||||
|       type: String, |  | ||||||
|       required: true, |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
|   setup() { |  | ||||||
|     return {}; |  | ||||||
|   }, |  | ||||||
| }); |  | ||||||
| </script> |  | ||||||
| @@ -26,7 +26,14 @@ | |||||||
|  |  | ||||||
|         <v-card-actions> |         <v-card-actions> | ||||||
|           <slot name="card-actions"> |           <slot name="card-actions"> | ||||||
|             <v-btn text color="grey" @click="dialog = false"> |             <v-btn | ||||||
|  |               text | ||||||
|  |               color="grey" | ||||||
|  |               @click=" | ||||||
|  |                 dialog = false; | ||||||
|  |                 $emit('cancel'); | ||||||
|  |               " | ||||||
|  |             > | ||||||
|               {{ $t("general.cancel") }} |               {{ $t("general.cancel") }} | ||||||
|             </v-btn> |             </v-btn> | ||||||
|             <v-spacer></v-spacer> |             <v-spacer></v-spacer> | ||||||
|   | |||||||
| @@ -8,3 +8,49 @@ export function uuid4() { | |||||||
|     (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16) |     (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16) | ||||||
|   ); |   ); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // https://stackoverflow.com/questions/28876300/deep-copying-array-of-nested-objects-in-javascript | ||||||
|  | const toString = Object.prototype.toString; | ||||||
|  | export function deepCopy(obj: any) { | ||||||
|  |   let rv; | ||||||
|  |  | ||||||
|  |   switch (typeof obj) { | ||||||
|  |     case "object": | ||||||
|  |       if (obj === null) { | ||||||
|  |         // null => null | ||||||
|  |         rv = null; | ||||||
|  |       } else { | ||||||
|  |         switch (toString.call(obj)) { | ||||||
|  |           case "[object Array]": | ||||||
|  |             // It's an array, create a new array with | ||||||
|  |             // deep copies of the entries | ||||||
|  |             rv = obj.map(deepCopy); | ||||||
|  |             break; | ||||||
|  |           case "[object Date]": | ||||||
|  |             // Clone the date | ||||||
|  |             rv = new Date(obj); | ||||||
|  |             break; | ||||||
|  |           case "[object RegExp]": | ||||||
|  |             // Clone the RegExp | ||||||
|  |             rv = new RegExp(obj); | ||||||
|  |             break; | ||||||
|  |           // ...probably a few others | ||||||
|  |           default: | ||||||
|  |             // Some other kind of object, deep-copy its | ||||||
|  |             // properties into a new object | ||||||
|  |             rv = Object.keys(obj).reduce(function (prev, key) { | ||||||
|  |               // @ts-ignore | ||||||
|  |               prev[key] = deepCopy(obj[key]); | ||||||
|  |               return prev; | ||||||
|  |             }, {}); | ||||||
|  |             break; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |       break; | ||||||
|  |     default: | ||||||
|  |       // It's a primitive, copy via assignment | ||||||
|  |       rv = obj; | ||||||
|  |       break; | ||||||
|  |   } | ||||||
|  |   return rv; | ||||||
|  | } | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ | |||||||
|     "@nuxtjs/proxy": "^2.1.0", |     "@nuxtjs/proxy": "^2.1.0", | ||||||
|     "@nuxtjs/pwa": "^3.3.5", |     "@nuxtjs/pwa": "^3.3.5", | ||||||
|     "@vue/composition-api": "^1.0.5", |     "@vue/composition-api": "^1.0.5", | ||||||
|     "@vueuse/core": "^5.2.0", |     "@vueuse/core": "^6.8.0", | ||||||
|     "core-js": "^3.15.1", |     "core-js": "^3.15.1", | ||||||
|     "date-fns": "^2.23.0", |     "date-fns": "^2.23.0", | ||||||
|     "fuse.js": "^6.4.6", |     "fuse.js": "^6.4.6", | ||||||
| @@ -35,7 +35,7 @@ | |||||||
|     "@babel/eslint-parser": "^7.14.7", |     "@babel/eslint-parser": "^7.14.7", | ||||||
|     "@nuxt/types": "^2.15.7", |     "@nuxt/types": "^2.15.7", | ||||||
|     "@nuxt/typescript-build": "^2.1.0", |     "@nuxt/typescript-build": "^2.1.0", | ||||||
|     "@nuxtjs/composition-api": "^0.28.0", |     "@nuxtjs/composition-api": "^0.30.0", | ||||||
|     "@nuxtjs/eslint-config-typescript": "^6.0.1", |     "@nuxtjs/eslint-config-typescript": "^6.0.1", | ||||||
|     "@nuxtjs/eslint-module": "^3.0.2", |     "@nuxtjs/eslint-module": "^3.0.2", | ||||||
|     "@nuxtjs/vuetify": "^1.12.1", |     "@nuxtjs/vuetify": "^1.12.1", | ||||||
|   | |||||||
| @@ -120,7 +120,26 @@ | |||||||
|               /> |               /> | ||||||
|             </draggable> |             </draggable> | ||||||
|             <div class="d-flex justify-end mt-2"> |             <div class="d-flex justify-end mt-2"> | ||||||
|               <RecipeIngredientParserMenu :slug="recipe.slug" :ingredients="recipe.recipeIngredient" /> |               <v-tooltip top color="accent"> | ||||||
|  |                 <template #activator="{ on, attrs }"> | ||||||
|  |                   <span v-on="on"> | ||||||
|  |                     <BaseButton | ||||||
|  |                       :disabled="recipe.settings.disableAmount" | ||||||
|  |                       color="accent" | ||||||
|  |                       :to="`${recipe.slug}/ingredient-parser`" | ||||||
|  |                       v-bind="attrs" | ||||||
|  |                     > | ||||||
|  |                       <template #icon> | ||||||
|  |                         {{ $globals.icons.foods }} | ||||||
|  |                       </template> | ||||||
|  |                       Parse | ||||||
|  |                     </BaseButton> | ||||||
|  |                   </span> | ||||||
|  |                 </template> | ||||||
|  |                 <span>{{ | ||||||
|  |                   recipe.settings.disableAmount ? "Enable ingredient amounts to use this feature" : "Parse ingredients" | ||||||
|  |                 }}</span> | ||||||
|  |               </v-tooltip> | ||||||
|               <RecipeDialogBulkAdd class="ml-1 mr-1" @bulk-data="addIngredient" /> |               <RecipeDialogBulkAdd class="ml-1 mr-1" @bulk-data="addIngredient" /> | ||||||
|               <BaseButton @click="addIngredient"> {{ $t("general.new") }} </BaseButton> |               <BaseButton @click="addIngredient"> {{ $t("general.new") }} </BaseButton> | ||||||
|             </div> |             </div> | ||||||
| @@ -279,6 +298,7 @@ import { | |||||||
|   computed, |   computed, | ||||||
|   defineComponent, |   defineComponent, | ||||||
|   reactive, |   reactive, | ||||||
|  |   ref, | ||||||
|   toRefs, |   toRefs, | ||||||
|   useContext, |   useContext, | ||||||
|   useMeta, |   useMeta, | ||||||
| @@ -288,6 +308,7 @@ import { | |||||||
| // @ts-ignore | // @ts-ignore | ||||||
| import VueMarkdown from "@adapttive/vue-markdown"; | import VueMarkdown from "@adapttive/vue-markdown"; | ||||||
| import draggable from "vuedraggable"; | import draggable from "vuedraggable"; | ||||||
|  | import { invoke, until } from "@vueuse/core"; | ||||||
| import RecipeCategoryTagSelector from "@/components/Domain/Recipe/RecipeCategoryTagSelector.vue"; | import RecipeCategoryTagSelector from "@/components/Domain/Recipe/RecipeCategoryTagSelector.vue"; | ||||||
| import RecipeDialogBulkAdd from "@/components/Domain/Recipe//RecipeDialogBulkAdd.vue"; | import RecipeDialogBulkAdd from "@/components/Domain/Recipe//RecipeDialogBulkAdd.vue"; | ||||||
| import { useUserApi, useStaticRoutes } from "~/composables/api"; | import { useUserApi, useStaticRoutes } from "~/composables/api"; | ||||||
| @@ -305,10 +326,9 @@ import RecipeNotes from "~/components/Domain/Recipe/RecipeNotes.vue"; | |||||||
| import RecipeImageUploadBtn from "~/components/Domain/Recipe/RecipeImageUploadBtn.vue"; | import RecipeImageUploadBtn from "~/components/Domain/Recipe/RecipeImageUploadBtn.vue"; | ||||||
| import RecipeSettingsMenu from "~/components/Domain/Recipe/RecipeSettingsMenu.vue"; | import RecipeSettingsMenu from "~/components/Domain/Recipe/RecipeSettingsMenu.vue"; | ||||||
| import RecipeIngredientEditor from "~/components/Domain/Recipe/RecipeIngredientEditor.vue"; | import RecipeIngredientEditor from "~/components/Domain/Recipe/RecipeIngredientEditor.vue"; | ||||||
| import RecipeIngredientParserMenu from "~/components/Domain/Recipe/RecipeIngredientParserMenu.vue"; |  | ||||||
| import RecipePrintView from "~/components/Domain/Recipe/RecipePrintView.vue"; | import RecipePrintView from "~/components/Domain/Recipe/RecipePrintView.vue"; | ||||||
| import { Recipe } from "~/types/api-types/recipe"; | import { Recipe } from "~/types/api-types/recipe"; | ||||||
| import { uuid4 } from "~/composables/use-utils"; | import { uuid4, deepCopy } from "~/composables/use-utils"; | ||||||
|  |  | ||||||
| export default defineComponent({ | export default defineComponent({ | ||||||
|   components: { |   components: { | ||||||
| @@ -320,7 +340,6 @@ export default defineComponent({ | |||||||
|     RecipeDialogBulkAdd, |     RecipeDialogBulkAdd, | ||||||
|     RecipeImageUploadBtn, |     RecipeImageUploadBtn, | ||||||
|     RecipeIngredientEditor, |     RecipeIngredientEditor, | ||||||
|     RecipeIngredientParserMenu, |  | ||||||
|     RecipeIngredients, |     RecipeIngredients, | ||||||
|     RecipeInstructions, |     RecipeInstructions, | ||||||
|     RecipeNotes, |     RecipeNotes, | ||||||
| @@ -331,12 +350,31 @@ export default defineComponent({ | |||||||
|     RecipeTimeCard, |     RecipeTimeCard, | ||||||
|     VueMarkdown, |     VueMarkdown, | ||||||
|   }, |   }, | ||||||
|  |   async beforeRouteLeave(_to, _from, next) { | ||||||
|  |     const isSame = JSON.stringify(this.recipe) === JSON.stringify(this.originalRecipe); | ||||||
|  |  | ||||||
|  |     console.log({ working: this.recipe, saved: this.originalRecipe }); | ||||||
|  |  | ||||||
|  |     if (this.form && !isSame) { | ||||||
|  |       if (window.confirm("You have unsaved changes. Do you want to save before leaving?")) { | ||||||
|  |         // @ts-ignore | ||||||
|  |         await this.api.recipes.updateOne(this.recipe.slug, this.recipe); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     next(); | ||||||
|  |   }, | ||||||
|  |  | ||||||
|   setup() { |   setup() { | ||||||
|     const route = useRoute(); |     const route = useRoute(); | ||||||
|     const router = useRouter(); |     const router = useRouter(); | ||||||
|     const slug = route.value.params.slug; |     const slug = route.value.params.slug; | ||||||
|     const api = useUserApi(); |     const api = useUserApi(); | ||||||
|  |  | ||||||
|  |     // =============================================================== | ||||||
|  |     // Check Before Leaving | ||||||
|  |  | ||||||
|  |     const domSaveChangesDialog = ref(null); | ||||||
|  |  | ||||||
|     const state = reactive({ |     const state = reactive({ | ||||||
|       form: false, |       form: false, | ||||||
|       scale: 1, |       scale: 1, | ||||||
| @@ -354,6 +392,16 @@ export default defineComponent({ | |||||||
|  |  | ||||||
|     const { recipe, loading, fetchRecipe } = useRecipe(slug); |     const { recipe, loading, fetchRecipe } = useRecipe(slug); | ||||||
|  |  | ||||||
|  |     // Manage a deep copy of the recipe so we can detect if changes have occured and inform | ||||||
|  |     // the user if they try to navigate away from the page without saving. | ||||||
|  |     const originalRecipe = ref<Recipe | null>(null); | ||||||
|  |  | ||||||
|  |     invoke(async () => { | ||||||
|  |       await until(recipe).not.toBeNull(); | ||||||
|  |  | ||||||
|  |       originalRecipe.value = deepCopy(recipe.value); | ||||||
|  |     }); | ||||||
|  |  | ||||||
|     const { recipeImage } = useStaticRoutes(); |     const { recipeImage } = useStaticRoutes(); | ||||||
|  |  | ||||||
|     // @ts-ignore |     // @ts-ignore | ||||||
| @@ -504,6 +552,8 @@ export default defineComponent({ | |||||||
|     }); |     }); | ||||||
|  |  | ||||||
|     return { |     return { | ||||||
|  |       originalRecipe, | ||||||
|  |       domSaveChangesDialog, | ||||||
|       enableLandscape, |       enableLandscape, | ||||||
|       scaledYield, |       scaledYield, | ||||||
|       toggleJson, |       toggleJson, | ||||||
|   | |||||||
| @@ -1,6 +1,15 @@ | |||||||
| <template> | <template> | ||||||
|   <v-container v-if="recipe"> |   <v-container v-if="recipe"> | ||||||
|     <v-container> |     <v-container> | ||||||
|  |       <v-alert dismissible border="left" colored-border type="warning" elevation="2" :icon="$globals.icons.alert"> | ||||||
|  |         <b>Experimental Feature</b> | ||||||
|  |         <div> | ||||||
|  |           Mealie can use natural language processing to attempt to parse and create units, and foods for your Recipe | ||||||
|  |           ingredients. This is experimental and may not work as expected. If you choose to not use the parsed results | ||||||
|  |           you can seleect cancel and your changes will not be saved. | ||||||
|  |         </div> | ||||||
|  |       </v-alert> | ||||||
|  |  | ||||||
|       <BaseCardSectionTitle title="Ingredients Processor"> |       <BaseCardSectionTitle title="Ingredients Processor"> | ||||||
|         To use the ingredient parser, click the "Parse All" button and the process will start. When the processed |         To use the ingredient parser, click the "Parse All" button and the process will start. When the processed | ||||||
|         ingredients are available, you can look through the items and verify that they were parsed correctly. The models |         ingredients are available, you can look through the items and verify that they were parsed correctly. The models | ||||||
| @@ -30,13 +39,14 @@ | |||||||
|         </div> |         </div> | ||||||
|       </BaseCardSectionTitle> |       </BaseCardSectionTitle> | ||||||
|  |  | ||||||
|       <v-card-actions class="justify-end"> |       <div class="d-flex mt-n3 mb-4 justify-end" style="gap: 5px"> | ||||||
|  |         <BaseButton cancel class="mr-auto" @click="$router.go(-1)"></BaseButton> | ||||||
|         <BaseButton color="info" @click="fetchParsed"> |         <BaseButton color="info" @click="fetchParsed"> | ||||||
|           <template #icon> {{ $globals.icons.foods }}</template> |           <template #icon> {{ $globals.icons.foods }}</template> | ||||||
|           Parse All |           Parse All | ||||||
|         </BaseButton> |         </BaseButton> | ||||||
|         <BaseButton save @click="saveAll"> Save All </BaseButton> |         <BaseButton save @click="saveAll"> Save All </BaseButton> | ||||||
|       </v-card-actions> |       </div> | ||||||
|  |  | ||||||
|       <v-expansion-panels v-model="panels" multiple> |       <v-expansion-panels v-model="panels" multiple> | ||||||
|         <v-expansion-panel v-for="(ing, index) in parsedIng" :key="index"> |         <v-expansion-panel v-for="(ing, index) in parsedIng" :key="index"> | ||||||
| @@ -73,12 +83,12 @@ | |||||||
|    |    | ||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
| import { defineComponent, ref, useRoute, useRouter } from "@nuxtjs/composition-api"; | import { defineComponent, ref, useRoute, useRouter } from "@nuxtjs/composition-api"; | ||||||
|  | import { until, invoke } from "@vueuse/core"; | ||||||
| import { Food, ParsedIngredient, Parser } from "~/api/class-interfaces/recipes"; | import { Food, ParsedIngredient, Parser } from "~/api/class-interfaces/recipes"; | ||||||
| import RecipeIngredientEditor from "~/components/Domain/Recipe/RecipeIngredientEditor.vue"; | import RecipeIngredientEditor from "~/components/Domain/Recipe/RecipeIngredientEditor.vue"; | ||||||
| import { useUserApi } from "~/composables/api"; | import { useUserApi } from "~/composables/api"; | ||||||
| import { useRecipe, useFoods, useUnits } from "~/composables/recipes"; | import { useRecipe, useFoods, useUnits } from "~/composables/recipes"; | ||||||
| import { RecipeIngredientUnit } from "~/types/api-types/recipe"; | import { RecipeIngredientUnit } from "~/types/api-types/recipe"; | ||||||
|  |  | ||||||
| interface Error { | interface Error { | ||||||
|   ingredientIndex: number; |   ingredientIndex: number; | ||||||
|   unitError: Boolean; |   unitError: Boolean; | ||||||
| @@ -101,28 +111,29 @@ export default defineComponent({ | |||||||
|  |  | ||||||
|     const { recipe, loading } = useRecipe(slug); |     const { recipe, loading } = useRecipe(slug); | ||||||
|  |  | ||||||
|  |     invoke(async () => { | ||||||
|  |       await until(recipe).not.toBeNull(); | ||||||
|  |  | ||||||
|  |       fetchParsed(); | ||||||
|  |     }); | ||||||
|  |  | ||||||
|     const ingredients = ref<any[]>([]); |     const ingredients = ref<any[]>([]); | ||||||
|  |  | ||||||
|     // ========================================================= |     // ========================================================= | ||||||
|     // Parser Logic |     // Parser Logic | ||||||
|  |  | ||||||
|     const parser = ref<Parser>("nlp"); |     const parser = ref<Parser>("nlp"); | ||||||
|  |     const parsedIng = ref<ParsedIngredient[]>([]); | ||||||
|     const parsedIng = ref<any[]>([]); |  | ||||||
|  |  | ||||||
|     async function fetchParsed() { |     async function fetchParsed() { | ||||||
|       if (!recipe.value) { |       if (!recipe.value) { | ||||||
|         return; |         return; | ||||||
|       } |       } | ||||||
|       const raw = recipe.value.recipeIngredient.map((ing) => ing.note); |       const raw = recipe.value.recipeIngredient.map((ing) => ing.note); | ||||||
|       const { response, data } = await api.recipes.parseIngredients(parser.value, raw); |       const { data } = await api.recipes.parseIngredients(parser.value, raw); | ||||||
|       console.log({ response }); |  | ||||||
|  |  | ||||||
|       if (data) { |       if (data) { | ||||||
|         parsedIng.value = data; |         parsedIng.value = data; | ||||||
|  |  | ||||||
|         console.log(data); |  | ||||||
|  |  | ||||||
|         // @ts-ignore |         // @ts-ignore | ||||||
|         errors.value = data.map((ing, index: number) => { |         errors.value = data.map((ing, index: number) => { | ||||||
|           const unitError = !checkForUnit(ing.ingredient.unit); |           const unitError = !checkForUnit(ing.ingredient.unit); | ||||||
| @@ -142,9 +153,9 @@ export default defineComponent({ | |||||||
|               if (ing?.ingredient?.food?.name) { |               if (ing?.ingredient?.food?.name) { | ||||||
|                 foodErrorMessage = `Create missing food '${ing.ingredient.food.name || "No food"}'?`; |                 foodErrorMessage = `Create missing food '${ing.ingredient.food.name || "No food"}'?`; | ||||||
|               } |               } | ||||||
|               panels.value.push(index); |  | ||||||
|             } |             } | ||||||
|           } |           } | ||||||
|  |           panels.value.push(index); | ||||||
|  |  | ||||||
|           return { |           return { | ||||||
|             ingredientIndex: index, |             ingredientIndex: index, | ||||||
| @@ -176,14 +187,20 @@ export default defineComponent({ | |||||||
|  |  | ||||||
|     const errors = ref<Error[]>([]); |     const errors = ref<Error[]>([]); | ||||||
|  |  | ||||||
|     function checkForUnit(unit: RecipeIngredientUnit) { |     function checkForUnit(unit: RecipeIngredientUnit | null) { | ||||||
|  |       if (!unit) { | ||||||
|  |         return false; | ||||||
|  |       } | ||||||
|       if (units.value && unit?.name) { |       if (units.value && unit?.name) { | ||||||
|         return units.value.some((u) => u.name === unit.name); |         return units.value.some((u) => u.name === unit.name); | ||||||
|       } |       } | ||||||
|       return false; |       return false; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     function checkForFood(food: Food) { |     function checkForFood(food: Food | null) { | ||||||
|  |       if (!food) { | ||||||
|  |         return false; | ||||||
|  |       } | ||||||
|       if (foods.value && food?.name) { |       if (foods.value && food?.name) { | ||||||
|         return foods.value.some((f) => f.name === food.name); |         return foods.value.some((f) => f.name === food.name); | ||||||
|       } |       } | ||||||
| @@ -205,21 +222,17 @@ export default defineComponent({ | |||||||
|         }; |         }; | ||||||
|       }); |       }); | ||||||
|  |  | ||||||
|       console.log(ingredients); |  | ||||||
|  |  | ||||||
|       ingredients = ingredients.map((ing) => { |       ingredients = ingredients.map((ing) => { | ||||||
|         if (!foods.value || !units.value) { |         if (!foods.value || !units.value) { | ||||||
|           return ing; |           return ing; | ||||||
|         } |         } | ||||||
|         // Get food from foods |         // Get food from foods | ||||||
|         const food = foods.value.find((f) => f.name === ing.food.name); |         const food = foods.value.find((f) => f.name === ing.food?.name); | ||||||
|         ing.food = food || null; |         ing.food = food || null; | ||||||
|  |  | ||||||
|         // Get unit from units |         // Get unit from units | ||||||
|         const unit = units.value.find((u) => u.name === ing.unit.name); |         const unit = units.value.find((u) => u.name === ing.unit?.name); | ||||||
|         ing.unit = unit || null; |         ing.unit = unit || null; | ||||||
|         console.log(ing); |  | ||||||
|  |  | ||||||
|         return ing; |         return ing; | ||||||
|       }); |       }); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -18,6 +18,13 @@ | |||||||
|     markdown-it-sup "^1.0.0" |     markdown-it-sup "^1.0.0" | ||||||
|     markdown-it-toc-and-anchor "^4.2.0" |     markdown-it-toc-and-anchor "^4.2.0" | ||||||
|  |  | ||||||
|  | "@antfu/utils@^0.3.0": | ||||||
|  |   version "0.3.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-0.3.0.tgz#6306c43b52a883bd8e973e3ed8dd64248418bcc4" | ||||||
|  |   integrity sha512-UU8TLr/EoXdg7OjMp0h9oDoIAVr+Z/oW9cpOxQQyrsz6Qzd2ms/1CdWx8fl2OQdFpxGmq5Vc4TwfLHId6nAZjA== | ||||||
|  |   dependencies: | ||||||
|  |     "@types/throttle-debounce" "^2.1.0" | ||||||
|  |  | ||||||
| "@babel/code-frame@7.12.11": | "@babel/code-frame@7.12.11": | ||||||
|   version "7.12.11" |   version "7.12.11" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" |   resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" | ||||||
| @@ -32,11 +39,23 @@ | |||||||
|   dependencies: |   dependencies: | ||||||
|     "@babel/highlight" "^7.14.5" |     "@babel/highlight" "^7.14.5" | ||||||
|  |  | ||||||
|  | "@babel/code-frame@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" | ||||||
|  |   integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/highlight" "^7.16.0" | ||||||
|  |  | ||||||
| "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.0", "@babel/compat-data@^7.14.7", "@babel/compat-data@^7.15.0": | "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.0", "@babel/compat-data@^7.14.7", "@babel/compat-data@^7.15.0": | ||||||
|   version "7.15.0" |   version "7.15.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" |   resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" | ||||||
|   integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== |   integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== | ||||||
|  |  | ||||||
|  | "@babel/compat-data@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.0.tgz#ea269d7f78deb3a7826c39a4048eecda541ebdaa" | ||||||
|  |   integrity sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew== | ||||||
|  |  | ||||||
| "@babel/core@^7.11.6", "@babel/core@^7.12.16", "@babel/core@^7.14.0", "@babel/core@^7.15.0": | "@babel/core@^7.11.6", "@babel/core@^7.12.16", "@babel/core@^7.14.0", "@babel/core@^7.15.0": | ||||||
|   version "7.15.5" |   version "7.15.5" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9" |   resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9" | ||||||
| @@ -58,6 +77,27 @@ | |||||||
|     semver "^6.3.0" |     semver "^6.3.0" | ||||||
|     source-map "^0.5.0" |     source-map "^0.5.0" | ||||||
|  |  | ||||||
|  | "@babel/core@^7.15.5": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.0.tgz#c4ff44046f5fe310525cc9eb4ef5147f0c5374d4" | ||||||
|  |   integrity sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/code-frame" "^7.16.0" | ||||||
|  |     "@babel/generator" "^7.16.0" | ||||||
|  |     "@babel/helper-compilation-targets" "^7.16.0" | ||||||
|  |     "@babel/helper-module-transforms" "^7.16.0" | ||||||
|  |     "@babel/helpers" "^7.16.0" | ||||||
|  |     "@babel/parser" "^7.16.0" | ||||||
|  |     "@babel/template" "^7.16.0" | ||||||
|  |     "@babel/traverse" "^7.16.0" | ||||||
|  |     "@babel/types" "^7.16.0" | ||||||
|  |     convert-source-map "^1.7.0" | ||||||
|  |     debug "^4.1.0" | ||||||
|  |     gensync "^1.0.0-beta.2" | ||||||
|  |     json5 "^2.1.2" | ||||||
|  |     semver "^6.3.0" | ||||||
|  |     source-map "^0.5.0" | ||||||
|  |  | ||||||
| "@babel/eslint-parser@^7.12.16", "@babel/eslint-parser@^7.14.7": | "@babel/eslint-parser@^7.12.16", "@babel/eslint-parser@^7.14.7": | ||||||
|   version "7.15.4" |   version "7.15.4" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.15.4.tgz#46385943726291fb3e8db99522c8099b15684387" |   resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.15.4.tgz#46385943726291fb3e8db99522c8099b15684387" | ||||||
| @@ -76,6 +116,15 @@ | |||||||
|     jsesc "^2.5.1" |     jsesc "^2.5.1" | ||||||
|     source-map "^0.5.0" |     source-map "^0.5.0" | ||||||
|  |  | ||||||
|  | "@babel/generator@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.0.tgz#d40f3d1d5075e62d3500bccb67f3daa8a95265b2" | ||||||
|  |   integrity sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/types" "^7.16.0" | ||||||
|  |     jsesc "^2.5.1" | ||||||
|  |     source-map "^0.5.0" | ||||||
|  |  | ||||||
| "@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4": | "@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4": | ||||||
|   version "7.15.4" |   version "7.15.4" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835" |   resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835" | ||||||
| @@ -101,6 +150,16 @@ | |||||||
|     browserslist "^4.16.6" |     browserslist "^4.16.6" | ||||||
|     semver "^6.3.0" |     semver "^6.3.0" | ||||||
|  |  | ||||||
|  | "@babel/helper-compilation-targets@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.0.tgz#01d615762e796c17952c29e3ede9d6de07d235a8" | ||||||
|  |   integrity sha512-S7iaOT1SYlqK0sQaCi21RX4+13hmdmnxIEAnQUB/eh7GeAnRjOUgTYpLkUOiRXzD+yog1JxP0qyAQZ7ZxVxLVg== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/compat-data" "^7.16.0" | ||||||
|  |     "@babel/helper-validator-option" "^7.14.5" | ||||||
|  |     browserslist "^4.16.6" | ||||||
|  |     semver "^6.3.0" | ||||||
|  |  | ||||||
| "@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.4": | "@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.4": | ||||||
|   version "7.15.4" |   version "7.15.4" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e" |   resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e" | ||||||
| @@ -151,6 +210,15 @@ | |||||||
|     "@babel/template" "^7.15.4" |     "@babel/template" "^7.15.4" | ||||||
|     "@babel/types" "^7.15.4" |     "@babel/types" "^7.15.4" | ||||||
|  |  | ||||||
|  | "@babel/helper-function-name@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481" | ||||||
|  |   integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/helper-get-function-arity" "^7.16.0" | ||||||
|  |     "@babel/template" "^7.16.0" | ||||||
|  |     "@babel/types" "^7.16.0" | ||||||
|  |  | ||||||
| "@babel/helper-get-function-arity@^7.15.4": | "@babel/helper-get-function-arity@^7.15.4": | ||||||
|   version "7.15.4" |   version "7.15.4" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" |   resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" | ||||||
| @@ -158,6 +226,13 @@ | |||||||
|   dependencies: |   dependencies: | ||||||
|     "@babel/types" "^7.15.4" |     "@babel/types" "^7.15.4" | ||||||
|  |  | ||||||
|  | "@babel/helper-get-function-arity@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa" | ||||||
|  |   integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/types" "^7.16.0" | ||||||
|  |  | ||||||
| "@babel/helper-hoist-variables@^7.15.4": | "@babel/helper-hoist-variables@^7.15.4": | ||||||
|   version "7.15.4" |   version "7.15.4" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" |   resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" | ||||||
| @@ -165,6 +240,13 @@ | |||||||
|   dependencies: |   dependencies: | ||||||
|     "@babel/types" "^7.15.4" |     "@babel/types" "^7.15.4" | ||||||
|  |  | ||||||
|  | "@babel/helper-hoist-variables@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a" | ||||||
|  |   integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/types" "^7.16.0" | ||||||
|  |  | ||||||
| "@babel/helper-member-expression-to-functions@^7.15.4": | "@babel/helper-member-expression-to-functions@^7.15.4": | ||||||
|   version "7.15.4" |   version "7.15.4" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" |   resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" | ||||||
| @@ -172,6 +254,13 @@ | |||||||
|   dependencies: |   dependencies: | ||||||
|     "@babel/types" "^7.15.4" |     "@babel/types" "^7.15.4" | ||||||
|  |  | ||||||
|  | "@babel/helper-member-expression-to-functions@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz#29287040efd197c77636ef75188e81da8bccd5a4" | ||||||
|  |   integrity sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/types" "^7.16.0" | ||||||
|  |  | ||||||
| "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.15.4": | "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.15.4": | ||||||
|   version "7.15.4" |   version "7.15.4" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" |   resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" | ||||||
| @@ -179,6 +268,13 @@ | |||||||
|   dependencies: |   dependencies: | ||||||
|     "@babel/types" "^7.15.4" |     "@babel/types" "^7.15.4" | ||||||
|  |  | ||||||
|  | "@babel/helper-module-imports@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3" | ||||||
|  |   integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/types" "^7.16.0" | ||||||
|  |  | ||||||
| "@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4": | "@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4": | ||||||
|   version "7.15.4" |   version "7.15.4" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz#962cc629a7f7f9a082dd62d0307fa75fe8788d7c" |   resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz#962cc629a7f7f9a082dd62d0307fa75fe8788d7c" | ||||||
| @@ -193,6 +289,20 @@ | |||||||
|     "@babel/traverse" "^7.15.4" |     "@babel/traverse" "^7.15.4" | ||||||
|     "@babel/types" "^7.15.4" |     "@babel/types" "^7.15.4" | ||||||
|  |  | ||||||
|  | "@babel/helper-module-transforms@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz#1c82a8dd4cb34577502ebd2909699b194c3e9bb5" | ||||||
|  |   integrity sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/helper-module-imports" "^7.16.0" | ||||||
|  |     "@babel/helper-replace-supers" "^7.16.0" | ||||||
|  |     "@babel/helper-simple-access" "^7.16.0" | ||||||
|  |     "@babel/helper-split-export-declaration" "^7.16.0" | ||||||
|  |     "@babel/helper-validator-identifier" "^7.15.7" | ||||||
|  |     "@babel/template" "^7.16.0" | ||||||
|  |     "@babel/traverse" "^7.16.0" | ||||||
|  |     "@babel/types" "^7.16.0" | ||||||
|  |  | ||||||
| "@babel/helper-optimise-call-expression@^7.15.4": | "@babel/helper-optimise-call-expression@^7.15.4": | ||||||
|   version "7.15.4" |   version "7.15.4" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" |   resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" | ||||||
| @@ -200,6 +310,13 @@ | |||||||
|   dependencies: |   dependencies: | ||||||
|     "@babel/types" "^7.15.4" |     "@babel/types" "^7.15.4" | ||||||
|  |  | ||||||
|  | "@babel/helper-optimise-call-expression@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz#cecdb145d70c54096b1564f8e9f10cd7d193b338" | ||||||
|  |   integrity sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/types" "^7.16.0" | ||||||
|  |  | ||||||
| "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": | "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": | ||||||
|   version "7.14.5" |   version "7.14.5" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" |   resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" | ||||||
| @@ -224,6 +341,16 @@ | |||||||
|     "@babel/traverse" "^7.15.4" |     "@babel/traverse" "^7.15.4" | ||||||
|     "@babel/types" "^7.15.4" |     "@babel/types" "^7.15.4" | ||||||
|  |  | ||||||
|  | "@babel/helper-replace-supers@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz#73055e8d3cf9bcba8ddb55cad93fedc860f68f17" | ||||||
|  |   integrity sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/helper-member-expression-to-functions" "^7.16.0" | ||||||
|  |     "@babel/helper-optimise-call-expression" "^7.16.0" | ||||||
|  |     "@babel/traverse" "^7.16.0" | ||||||
|  |     "@babel/types" "^7.16.0" | ||||||
|  |  | ||||||
| "@babel/helper-simple-access@^7.15.4": | "@babel/helper-simple-access@^7.15.4": | ||||||
|   version "7.15.4" |   version "7.15.4" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" |   resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" | ||||||
| @@ -231,6 +358,13 @@ | |||||||
|   dependencies: |   dependencies: | ||||||
|     "@babel/types" "^7.15.4" |     "@babel/types" "^7.15.4" | ||||||
|  |  | ||||||
|  | "@babel/helper-simple-access@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz#21d6a27620e383e37534cf6c10bba019a6f90517" | ||||||
|  |   integrity sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/types" "^7.16.0" | ||||||
|  |  | ||||||
| "@babel/helper-skip-transparent-expression-wrappers@^7.14.5", "@babel/helper-skip-transparent-expression-wrappers@^7.15.4": | "@babel/helper-skip-transparent-expression-wrappers@^7.14.5", "@babel/helper-skip-transparent-expression-wrappers@^7.15.4": | ||||||
|   version "7.15.4" |   version "7.15.4" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz#707dbdba1f4ad0fa34f9114fc8197aec7d5da2eb" |   resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz#707dbdba1f4ad0fa34f9114fc8197aec7d5da2eb" | ||||||
| @@ -245,11 +379,23 @@ | |||||||
|   dependencies: |   dependencies: | ||||||
|     "@babel/types" "^7.15.4" |     "@babel/types" "^7.15.4" | ||||||
|  |  | ||||||
|  | "@babel/helper-split-export-declaration@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438" | ||||||
|  |   integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/types" "^7.16.0" | ||||||
|  |  | ||||||
| "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9": | "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9": | ||||||
|   version "7.14.9" |   version "7.14.9" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" |   resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" | ||||||
|   integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== |   integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== | ||||||
|  |  | ||||||
|  | "@babel/helper-validator-identifier@^7.15.7": | ||||||
|  |   version "7.15.7" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" | ||||||
|  |   integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== | ||||||
|  |  | ||||||
| "@babel/helper-validator-option@^7.14.5": | "@babel/helper-validator-option@^7.14.5": | ||||||
|   version "7.14.5" |   version "7.14.5" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" |   resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" | ||||||
| @@ -274,6 +420,15 @@ | |||||||
|     "@babel/traverse" "^7.15.4" |     "@babel/traverse" "^7.15.4" | ||||||
|     "@babel/types" "^7.15.4" |     "@babel/types" "^7.15.4" | ||||||
|  |  | ||||||
|  | "@babel/helpers@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.0.tgz#875519c979c232f41adfbd43a3b0398c2e388183" | ||||||
|  |   integrity sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/template" "^7.16.0" | ||||||
|  |     "@babel/traverse" "^7.16.0" | ||||||
|  |     "@babel/types" "^7.16.0" | ||||||
|  |  | ||||||
| "@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": | "@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": | ||||||
|   version "7.14.5" |   version "7.14.5" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" |   resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" | ||||||
| @@ -283,11 +438,25 @@ | |||||||
|     chalk "^2.0.0" |     chalk "^2.0.0" | ||||||
|     js-tokens "^4.0.0" |     js-tokens "^4.0.0" | ||||||
|  |  | ||||||
|  | "@babel/highlight@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" | ||||||
|  |   integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/helper-validator-identifier" "^7.15.7" | ||||||
|  |     chalk "^2.0.0" | ||||||
|  |     js-tokens "^4.0.0" | ||||||
|  |  | ||||||
| "@babel/parser@^7.1.0", "@babel/parser@^7.13.10", "@babel/parser@^7.15.0", "@babel/parser@^7.15.3", "@babel/parser@^7.15.4", "@babel/parser@^7.15.5", "@babel/parser@^7.9.6": | "@babel/parser@^7.1.0", "@babel/parser@^7.13.10", "@babel/parser@^7.15.0", "@babel/parser@^7.15.3", "@babel/parser@^7.15.4", "@babel/parser@^7.15.5", "@babel/parser@^7.9.6": | ||||||
|   version "7.15.5" |   version "7.15.5" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.5.tgz#d33a58ca69facc05b26adfe4abebfed56c1c2dac" |   resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.5.tgz#d33a58ca69facc05b26adfe4abebfed56c1c2dac" | ||||||
|   integrity sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg== |   integrity sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg== | ||||||
|  |  | ||||||
|  | "@babel/parser@^7.15.6", "@babel/parser@^7.16.0": | ||||||
|  |   version "7.16.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.2.tgz#3723cd5c8d8773eef96ce57ea1d9b7faaccd12ac" | ||||||
|  |   integrity sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw== | ||||||
|  |  | ||||||
| "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4": | "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4": | ||||||
|   version "7.15.4" |   version "7.15.4" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz#dbdeabb1e80f622d9f0b583efb2999605e0a567e" |   resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz#dbdeabb1e80f622d9f0b583efb2999605e0a567e" | ||||||
| @@ -928,6 +1097,15 @@ | |||||||
|     "@babel/parser" "^7.15.4" |     "@babel/parser" "^7.15.4" | ||||||
|     "@babel/types" "^7.15.4" |     "@babel/types" "^7.15.4" | ||||||
|  |  | ||||||
|  | "@babel/template@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" | ||||||
|  |   integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/code-frame" "^7.16.0" | ||||||
|  |     "@babel/parser" "^7.16.0" | ||||||
|  |     "@babel/types" "^7.16.0" | ||||||
|  |  | ||||||
| "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.0", "@babel/traverse@^7.15.4": | "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.0", "@babel/traverse@^7.15.4": | ||||||
|   version "7.15.4" |   version "7.15.4" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" |   resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" | ||||||
| @@ -943,6 +1121,21 @@ | |||||||
|     debug "^4.1.0" |     debug "^4.1.0" | ||||||
|     globals "^11.1.0" |     globals "^11.1.0" | ||||||
|  |  | ||||||
|  | "@babel/traverse@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.0.tgz#965df6c6bfc0a958c1e739284d3c9fa4a6e3c45b" | ||||||
|  |   integrity sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/code-frame" "^7.16.0" | ||||||
|  |     "@babel/generator" "^7.16.0" | ||||||
|  |     "@babel/helper-function-name" "^7.16.0" | ||||||
|  |     "@babel/helper-hoist-variables" "^7.16.0" | ||||||
|  |     "@babel/helper-split-export-declaration" "^7.16.0" | ||||||
|  |     "@babel/parser" "^7.16.0" | ||||||
|  |     "@babel/types" "^7.16.0" | ||||||
|  |     debug "^4.1.0" | ||||||
|  |     globals "^11.1.0" | ||||||
|  |  | ||||||
| "@babel/types@^7.0.0", "@babel/types@^7.15.0", "@babel/types@^7.15.4", "@babel/types@^7.3.0", "@babel/types@^7.4.4": | "@babel/types@^7.0.0", "@babel/types@^7.15.0", "@babel/types@^7.15.4", "@babel/types@^7.3.0", "@babel/types@^7.4.4": | ||||||
|   version "7.15.4" |   version "7.15.4" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.4.tgz#74eeb86dbd6748d2741396557b9860e57fce0a0d" |   resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.4.tgz#74eeb86dbd6748d2741396557b9860e57fce0a0d" | ||||||
| @@ -951,6 +1144,14 @@ | |||||||
|     "@babel/helper-validator-identifier" "^7.14.9" |     "@babel/helper-validator-identifier" "^7.14.9" | ||||||
|     to-fast-properties "^2.0.0" |     to-fast-properties "^2.0.0" | ||||||
|  |  | ||||||
|  | "@babel/types@^7.15.6", "@babel/types@^7.16.0": | ||||||
|  |   version "7.16.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" | ||||||
|  |   integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== | ||||||
|  |   dependencies: | ||||||
|  |     "@babel/helper-validator-identifier" "^7.15.7" | ||||||
|  |     to-fast-properties "^2.0.0" | ||||||
|  |  | ||||||
| "@csstools/convert-colors@^1.4.0": | "@csstools/convert-colors@^1.4.0": | ||||||
|   version "1.4.0" |   version "1.4.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" |   resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" | ||||||
| @@ -1445,18 +1646,18 @@ | |||||||
|     consola "^2.15.3" |     consola "^2.15.3" | ||||||
|     defu "^5.0.0" |     defu "^5.0.0" | ||||||
|  |  | ||||||
| "@nuxtjs/composition-api@^0.28.0": | "@nuxtjs/composition-api@^0.30.0": | ||||||
|   version "0.28.0" |   version "0.30.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@nuxtjs/composition-api/-/composition-api-0.28.0.tgz#ba384eecff094820adbc534d69157b8c878e24d6" |   resolved "https://registry.yarnpkg.com/@nuxtjs/composition-api/-/composition-api-0.30.0.tgz#ea123798b8a9b2e74f80e22ccb38a3879b931e38" | ||||||
|   integrity sha512-YSchyQsOrpADtFXFxFjsQuYSQSuAjnidzPpF+bxeVLj1/yhwzy2CQGIBabKJbkMPoDFwive7dKf6LdkbPQL4RQ== |   integrity sha512-IEuzCY5oUmXOTYkMNwdYQMagAxtlJRzQSDJ1o7LYt5KulOawfOm+wyyNfQxQMIPz/p5Df1UQ14ORDdQ+ZjWXIw== | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@vue/composition-api" "^1.1.4" |     "@vue/composition-api" "^1.3.3" | ||||||
|     defu "^5.0.0" |     defu "^5.0.0" | ||||||
|     estree-walker "^2.0.2" |     estree-walker "^2.0.2" | ||||||
|     fs-extra "^9.1.0" |     fs-extra "^9.1.0" | ||||||
|     magic-string "^0.25.7" |     magic-string "^0.25.7" | ||||||
|     ufo "^0.7.9" |     ufo "^0.7.9" | ||||||
|     unplugin-vue2-script-setup "^0.5.6" |     unplugin-vue2-script-setup "^0.6.13" | ||||||
|     upath "^2.0.1" |     upath "^2.0.1" | ||||||
|  |  | ||||||
| "@nuxtjs/eslint-config-typescript@^6.0.1": | "@nuxtjs/eslint-config-typescript@^6.0.1": | ||||||
| @@ -1555,7 +1756,7 @@ | |||||||
|   resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.20.tgz#111b5db0f501aa89b05076fa31f0ea0e0c292cd3" |   resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.20.tgz#111b5db0f501aa89b05076fa31f0ea0e0c292cd3" | ||||||
|   integrity sha512-88p7+M0QGxKpmnkfXjS4V26AnoC/eiqZutE8GLdaI5X12NY75bXSdTY9NkmYb2Xyk1O+MmkuO6Frmsj84V6I8Q== |   integrity sha512-88p7+M0QGxKpmnkfXjS4V26AnoC/eiqZutE8GLdaI5X12NY75bXSdTY9NkmYb2Xyk1O+MmkuO6Frmsj84V6I8Q== | ||||||
|  |  | ||||||
| "@rollup/pluginutils@^4.1.0": | "@rollup/pluginutils@^4.1.0", "@rollup/pluginutils@^4.1.1": | ||||||
|   version "4.1.1" |   version "4.1.1" | ||||||
|   resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.1.tgz#1d4da86dd4eded15656a57d933fda2b9a08d47ec" |   resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.1.tgz#1d4da86dd4eded15656a57d933fda2b9a08d47ec" | ||||||
|   integrity sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ== |   integrity sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ== | ||||||
| @@ -1861,6 +2062,11 @@ | |||||||
|     "@types/webpack" "^4" |     "@types/webpack" "^4" | ||||||
|     terser "^4.6.13" |     terser "^4.6.13" | ||||||
|  |  | ||||||
|  | "@types/throttle-debounce@^2.1.0": | ||||||
|  |   version "2.1.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz#1c3df624bfc4b62f992d3012b84c56d41eab3776" | ||||||
|  |   integrity sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ== | ||||||
|  |  | ||||||
| "@types/uglify-js@*": | "@types/uglify-js@*": | ||||||
|   version "3.13.1" |   version "3.13.1" | ||||||
|   resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.1.tgz#5e889e9e81e94245c75b6450600e1c5ea2878aea" |   resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.1.tgz#5e889e9e81e94245c75b6450600e1c5ea2878aea" | ||||||
| @@ -2073,14 +2279,13 @@ | |||||||
|     "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" |     "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" | ||||||
|     camelcase "^5.0.0" |     camelcase "^5.0.0" | ||||||
|  |  | ||||||
| "@vue/compiler-core@3.2.8": | "@vue/compiler-core@3.2.21": | ||||||
|   version "3.2.8" |   version "3.2.21" | ||||||
|   resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.8.tgz#13b2386bdb03455c9f6c6af2f3468561a5ae5b1d" |   resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.21.tgz#26566c32b2ad838199d471ef5df620a83846f24e" | ||||||
|   integrity sha512-Sx8qJ030+QM/NakUrkQuUGCeDEb+0d0AgFOl5W4qRvR6e+YgLnW2ew0jREf4T1hak9Fdk8Edl67StECHrhEuew== |   integrity sha512-NhhiQZNG71KNq1h5pMW/fAXdTF7lJRaSI7LDm2edhHXVz1ROMICo8SreUmQnSf4Fet0UPBVqJ988eF4+936iDQ== | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@babel/parser" "^7.15.0" |     "@babel/parser" "^7.15.0" | ||||||
|     "@babel/types" "^7.15.0" |     "@vue/shared" "3.2.21" | ||||||
|     "@vue/shared" "3.2.8" |  | ||||||
|     estree-walker "^2.0.2" |     estree-walker "^2.0.2" | ||||||
|     source-map "^0.6.1" |     source-map "^0.6.1" | ||||||
|  |  | ||||||
| @@ -2100,13 +2305,20 @@ | |||||||
|   optionalDependencies: |   optionalDependencies: | ||||||
|     prettier "^1.18.2" |     prettier "^1.18.2" | ||||||
|  |  | ||||||
| "@vue/composition-api@^1.0.5", "@vue/composition-api@^1.1.4": | "@vue/composition-api@^1.0.5": | ||||||
|   version "1.1.4" |   version "1.1.4" | ||||||
|   resolved "https://registry.yarnpkg.com/@vue/composition-api/-/composition-api-1.1.4.tgz#b4cd566e575350b86c22fa02632e4a356ac2e26e" |   resolved "https://registry.yarnpkg.com/@vue/composition-api/-/composition-api-1.1.4.tgz#b4cd566e575350b86c22fa02632e4a356ac2e26e" | ||||||
|   integrity sha512-f618a79X0VepQUoZofaAYzaherBuzfIIYah4gQPcwmXgN3oeuGdhO7DY2s3Rjcw7r9yTEh5sQIowbNWy6INGjg== |   integrity sha512-f618a79X0VepQUoZofaAYzaherBuzfIIYah4gQPcwmXgN3oeuGdhO7DY2s3Rjcw7r9yTEh5sQIowbNWy6INGjg== | ||||||
|   dependencies: |   dependencies: | ||||||
|     tslib "^2.3.0" |     tslib "^2.3.0" | ||||||
|  |  | ||||||
|  | "@vue/composition-api@^1.3.3": | ||||||
|  |   version "1.3.3" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@vue/composition-api/-/composition-api-1.3.3.tgz#a782f2d40e41d4cbb6b4550692c7e01d2182d457" | ||||||
|  |   integrity sha512-mjhfLjpCBecARYVJX65F0TYerlJQWtEgKjom4Btuu0x7k701EcvL66zyWQryf64HuIj9YR4h6aNRhM0AP/E3eQ== | ||||||
|  |   dependencies: | ||||||
|  |     tslib "^2.3.1" | ||||||
|  |  | ||||||
| "@vue/reactivity@3.2.9": | "@vue/reactivity@3.2.9": | ||||||
|   version "3.2.9" |   version "3.2.9" | ||||||
|   resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.9.tgz#f4ec61519f4779224d98a23ac07b481d95687cae" |   resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.9.tgz#f4ec61519f4779224d98a23ac07b481d95687cae" | ||||||
| @@ -2114,14 +2326,14 @@ | |||||||
|   dependencies: |   dependencies: | ||||||
|     "@vue/shared" "3.2.9" |     "@vue/shared" "3.2.9" | ||||||
|  |  | ||||||
| "@vue/ref-transform@^3.2.6": | "@vue/ref-transform@^3.2.11": | ||||||
|   version "3.2.8" |   version "3.2.21" | ||||||
|   resolved "https://registry.yarnpkg.com/@vue/ref-transform/-/ref-transform-3.2.8.tgz#a527047bab43ce50ef3d400ce71312ab30f825dc" |   resolved "https://registry.yarnpkg.com/@vue/ref-transform/-/ref-transform-3.2.21.tgz#b0c554c9f640c3f005f77e676066aa0faba90984" | ||||||
|   integrity sha512-9LdADd4JM3klt+b2qNT8a7b7JvBETNBy2Btv5rDzyPrAVS4Vrw+1WWay6gZBgnxfJ9TPSvG8f/9zu6gNGHmJLA== |   integrity sha512-uiEWWBsrGeun9O7dQExYWzXO3rHm/YdtFNXDVqCSoPypzOVxWxdiL+8hHeWzxMB58fVuV2sT80aUtIVyaBVZgQ== | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@babel/parser" "^7.15.0" |     "@babel/parser" "^7.15.0" | ||||||
|     "@vue/compiler-core" "3.2.8" |     "@vue/compiler-core" "3.2.21" | ||||||
|     "@vue/shared" "3.2.8" |     "@vue/shared" "3.2.21" | ||||||
|     estree-walker "^2.0.2" |     estree-walker "^2.0.2" | ||||||
|     magic-string "^0.25.7" |     magic-string "^0.25.7" | ||||||
|  |  | ||||||
| @@ -2142,28 +2354,33 @@ | |||||||
|     "@vue/shared" "3.2.9" |     "@vue/shared" "3.2.9" | ||||||
|     csstype "^2.6.8" |     csstype "^2.6.8" | ||||||
|  |  | ||||||
| "@vue/shared@3.2.8", "@vue/shared@^3.2.4", "@vue/shared@^3.2.6": | "@vue/shared@3.2.21", "@vue/shared@^3.2.11": | ||||||
|   version "3.2.8" |   version "3.2.21" | ||||||
|   resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.8.tgz#2f918e330aeb3f56ab1031ca60a5b30672512457" |   resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.21.tgz#4cd80c0e62cf65a7adab2449e86b6f0cb33a130b" | ||||||
|   integrity sha512-E2DQQnG7Qr4GwTs3GlfPPlHliGVADoufTnhpwfoViw7JlyLMmYtjfnTwM6nXAwvSJWiF7D+7AxpnWBBT3VWo6Q== |   integrity sha512-5EQmIPK6gw4UVYUbM959B0uPsJ58+xoMESCZs3N89XyvJ9e+fX4pqEPrOGV8OroIk3SbEvJcC+eYc8BH9JQrHA== | ||||||
|  |  | ||||||
| "@vue/shared@3.2.9": | "@vue/shared@3.2.9": | ||||||
|   version "3.2.9" |   version "3.2.9" | ||||||
|   resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.9.tgz#44e44dbd82819997f192fb7dbdb90af5715dbf52" |   resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.9.tgz#44e44dbd82819997f192fb7dbdb90af5715dbf52" | ||||||
|   integrity sha512-+CifxkLVhjKT14g/LMZil8//SdCzkMkS8VfRX0cqNJiFKK4AWvxj0KV1dhbr8czikY0DZUGQew3tRMRRChMGtA== |   integrity sha512-+CifxkLVhjKT14g/LMZil8//SdCzkMkS8VfRX0cqNJiFKK4AWvxj0KV1dhbr8czikY0DZUGQew3tRMRRChMGtA== | ||||||
|  |  | ||||||
| "@vueuse/core@^5.2.0": | "@vue/shared@^3.2.4": | ||||||
|   version "5.3.0" |   version "3.2.8" | ||||||
|   resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-5.3.0.tgz#d8c6e939e18089afa224fab6e443fae2bdb57a51" |   resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.8.tgz#2f918e330aeb3f56ab1031ca60a5b30672512457" | ||||||
|   integrity sha512-bBL1/JMRHFWmbgQzUZHF4WOwlqfenR1B8+elriXsbnHlogQM5foSz9++WyDBR0YPIVgCJq7fvNLqd4T7+cjc5w== |   integrity sha512-E2DQQnG7Qr4GwTs3GlfPPlHliGVADoufTnhpwfoViw7JlyLMmYtjfnTwM6nXAwvSJWiF7D+7AxpnWBBT3VWo6Q== | ||||||
|  |  | ||||||
|  | "@vueuse/core@^6.8.0": | ||||||
|  |   version "6.8.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-6.8.0.tgz#dc004bc30031e053e9ef5011203c4a80f00986ed" | ||||||
|  |   integrity sha512-C6KMBus29L/mVtA5eK26WAqj6tyPlugrKaPLi2uLtbV//BHjbxe1uo3gVXCc5SwouDEdc7zswlGPw/l0/++NRg== | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@vueuse/shared" "5.3.0" |     "@vueuse/shared" "6.8.0" | ||||||
|     vue-demi "*" |     vue-demi "*" | ||||||
|  |  | ||||||
| "@vueuse/shared@5.3.0": | "@vueuse/shared@6.8.0": | ||||||
|   version "5.3.0" |   version "6.8.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-5.3.0.tgz#2b9583f80f1284242f808925e7e141310e400e45" |   resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-6.8.0.tgz#50713b770941293e557a4eae9424cad2aad44a85" | ||||||
|   integrity sha512-qZfkPFH0qTScFpYiPOFpTcxWriRhlM3bgSzl3DFTgr/U0eZg3w2EFWaRZHdWeSvAUdNQyjOC4Toa8S0zJyEjHw== |   integrity sha512-+YjehQ8Qe4Qgyq8iTToVOzp4sZBAZvScv3AGJSMi6HYbe54+nyjrRfS8DN4fA0eUahyftHKZ00WKgMe7TS5N0w== | ||||||
|   dependencies: |   dependencies: | ||||||
|     vue-demi "*" |     vue-demi "*" | ||||||
|  |  | ||||||
| @@ -4442,7 +4659,7 @@ domelementtype@^2.0.1, domelementtype@^2.2.0: | |||||||
|   resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" |   resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" | ||||||
|   integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== |   integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== | ||||||
|  |  | ||||||
| domhandler@^4.0.0, domhandler@^4.2.0: | domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.2.2: | ||||||
|   version "4.2.2" |   version "4.2.2" | ||||||
|   resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" |   resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" | ||||||
|   integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w== |   integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w== | ||||||
| @@ -4457,7 +4674,7 @@ domutils@^1.7.0: | |||||||
|     dom-serializer "0" |     dom-serializer "0" | ||||||
|     domelementtype "1" |     domelementtype "1" | ||||||
|  |  | ||||||
| domutils@^2.5.2, domutils@^2.6.0: | domutils@^2.5.2, domutils@^2.6.0, domutils@^2.8.0: | ||||||
|   version "2.8.0" |   version "2.8.0" | ||||||
|   resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" |   resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" | ||||||
|   integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== |   integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== | ||||||
| @@ -4572,6 +4789,11 @@ entities@^2.0.0: | |||||||
|   resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" |   resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" | ||||||
|   integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== |   integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== | ||||||
|  |  | ||||||
|  | entities@^3.0.1: | ||||||
|  |   version "3.0.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" | ||||||
|  |   integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== | ||||||
|  |  | ||||||
| entities@~2.1.0: | entities@~2.1.0: | ||||||
|   version "2.1.0" |   version "2.1.0" | ||||||
|   resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" |   resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" | ||||||
| @@ -5749,6 +5971,16 @@ htmlparser2@^6.1.0: | |||||||
|     domutils "^2.5.2" |     domutils "^2.5.2" | ||||||
|     entities "^2.0.0" |     entities "^2.0.0" | ||||||
|  |  | ||||||
|  | htmlparser2@^7.1.2: | ||||||
|  |   version "7.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.1.2.tgz#587923d38f03bc89e03076e00cba2c7473f37f7c" | ||||||
|  |   integrity sha512-d6cqsbJba2nRdg8WW2okyD4ceonFHn9jLFxhwlNcLhQWcFPdxXeJulgOLjLKtAK9T6ahd+GQNZwG9fjmGW7lyg== | ||||||
|  |   dependencies: | ||||||
|  |     domelementtype "^2.0.1" | ||||||
|  |     domhandler "^4.2.2" | ||||||
|  |     domutils "^2.8.0" | ||||||
|  |     entities "^3.0.1" | ||||||
|  |  | ||||||
| http-errors@1.7.2: | http-errors@1.7.2: | ||||||
|   version "1.7.2" |   version "1.7.2" | ||||||
|   resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" |   resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" | ||||||
| @@ -9994,7 +10226,7 @@ tslib@^1.8.1, tslib@^1.9.0: | |||||||
|   resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" |   resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" | ||||||
|   integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== |   integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== | ||||||
|  |  | ||||||
| tslib@^2.0.3, tslib@^2.3.0: | tslib@^2.0.3, tslib@^2.3.0, tslib@^2.3.1: | ||||||
|   version "2.3.1" |   version "2.3.1" | ||||||
|   resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" |   resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" | ||||||
|   integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== |   integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== | ||||||
| @@ -10168,22 +10400,24 @@ unpipe@1.0.0, unpipe@~1.0.0: | |||||||
|   resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" |   resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" | ||||||
|   integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= |   integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= | ||||||
|  |  | ||||||
| unplugin-vue2-script-setup@^0.5.6: | unplugin-vue2-script-setup@^0.6.13: | ||||||
|   version "0.5.6" |   version "0.6.13" | ||||||
|   resolved "https://registry.yarnpkg.com/unplugin-vue2-script-setup/-/unplugin-vue2-script-setup-0.5.6.tgz#c411f83a5f2607153b3998721ad55e8e691ce16f" |   resolved "https://registry.yarnpkg.com/unplugin-vue2-script-setup/-/unplugin-vue2-script-setup-0.6.13.tgz#ec492ce0101684facbc0b116be3314df23d337f5" | ||||||
|   integrity sha512-aVbkP+hNRV5KqrzhqBx8sHr6/vuM6NOo6MOsIqquXq4NxGFY1/TsOqXScYKrPYcgaEF05mpNHKStaHgvDwz5DA== |   integrity sha512-3jfzUhdKdI2gv1j62JZnuusbVWgBivUU24L3eAtezYe78xxa1CzEllTv34aCSAVC8ET6IdmiHcGvgSysmrv0pQ== | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@babel/core" "^7.15.0" |     "@antfu/utils" "^0.3.0" | ||||||
|     "@babel/generator" "^7.15.0" |     "@babel/core" "^7.15.5" | ||||||
|     "@babel/parser" "^7.15.3" |     "@babel/generator" "^7.15.4" | ||||||
|     "@babel/traverse" "^7.15.0" |     "@babel/parser" "^7.15.6" | ||||||
|     "@babel/types" "^7.15.0" |     "@babel/traverse" "^7.15.4" | ||||||
|     "@vue/ref-transform" "^3.2.6" |     "@babel/types" "^7.15.6" | ||||||
|     "@vue/shared" "^3.2.6" |     "@rollup/pluginutils" "^4.1.1" | ||||||
|  |     "@vue/ref-transform" "^3.2.11" | ||||||
|  |     "@vue/shared" "^3.2.11" | ||||||
|     defu "^5.0.0" |     defu "^5.0.0" | ||||||
|     htmlparser2 "^6.1.0" |     htmlparser2 "^7.1.2" | ||||||
|     magic-string "^0.25.7" |     magic-string "^0.25.7" | ||||||
|     unplugin "^0.2.7" |     unplugin "^0.2.11" | ||||||
|  |  | ||||||
| unplugin@^0.0.6: | unplugin@^0.0.6: | ||||||
|   version "0.0.6" |   version "0.0.6" | ||||||
| @@ -10192,12 +10426,11 @@ unplugin@^0.0.6: | |||||||
|   dependencies: |   dependencies: | ||||||
|     webpack-virtual-modules "^0.4.3" |     webpack-virtual-modules "^0.4.3" | ||||||
|  |  | ||||||
| unplugin@^0.2.7: | unplugin@^0.2.11: | ||||||
|   version "0.2.7" |   version "0.2.20" | ||||||
|   resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-0.2.7.tgz#40072145287943abbc552185ee7df1525932133d" |   resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-0.2.20.tgz#fd579b8f302459eb1ae3616f71c2ba93e6076187" | ||||||
|   integrity sha512-KcMTl+aF+UhNOUvUdxwxHiOhvIoFe++foE2GgblFmXsnjdRYYggd2Tg7wopljCnOyiv5IspQRKfAvpyc4qtzuw== |   integrity sha512-CGnCaTqNjqeixpIlNEkpysxfR2hb4xv21xa4IURXnhYTfCp73UWuG0KcdanuhFJbwO5w+EGK4XaAaqdb/1vWbg== | ||||||
|   dependencies: |   dependencies: | ||||||
|     upath "^2.0.1" |  | ||||||
|     webpack-virtual-modules "^0.4.3" |     webpack-virtual-modules "^0.4.3" | ||||||
|  |  | ||||||
| unquote@~1.1.1: | unquote@~1.1.1: | ||||||
| @@ -10403,9 +10636,9 @@ vue-client-only@^2.0.0: | |||||||
|   integrity sha512-vKl1skEKn8EK9f8P2ZzhRnuaRHLHrlt1sbRmazlvsx6EiC3A8oWF8YCBrMJzoN+W3OnElwIGbVjsx6/xelY1AA== |   integrity sha512-vKl1skEKn8EK9f8P2ZzhRnuaRHLHrlt1sbRmazlvsx6EiC3A8oWF8YCBrMJzoN+W3OnElwIGbVjsx6/xelY1AA== | ||||||
|  |  | ||||||
| vue-demi@*: | vue-demi@*: | ||||||
|   version "0.11.4" |   version "0.12.1" | ||||||
|   resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.11.4.tgz#6101992fe4724cf5634018a16e953f3052e94e2a" |   resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.12.1.tgz#f7e18efbecffd11ab069d1472d7a06e319b4174c" | ||||||
|   integrity sha512-/3xFwzSykLW2HiiLie43a+FFgNOcokbBJ+fzvFXd0r2T8MYohqvphUyDQ8lbAwzQ3Dlcrb1c9ykifGkhSIAk6A== |   integrity sha512-QL3ny+wX8c6Xm1/EZylbgzdoDolye+VpCXRhI2hug9dJTP3OUJ3lmiKN3CsVV3mOJKwFi0nsstbgob0vG7aoIw== | ||||||
|  |  | ||||||
| vue-eslint-parser@^7.1.1, vue-eslint-parser@^7.10.0: | vue-eslint-parser@^7.1.1, vue-eslint-parser@^7.10.0: | ||||||
|   version "7.10.0" |   version "7.10.0" | ||||||
|   | |||||||
| @@ -111,6 +111,7 @@ class User(SqlAlchemyBase, BaseMixins): | |||||||
|             self.can_manage = True |             self.can_manage = True | ||||||
|             self.can_invite = True |             self.can_invite = True | ||||||
|             self.can_organize = True |             self.can_organize = True | ||||||
|  |             self.advanced = True | ||||||
|         else: |         else: | ||||||
|             self.can_manage = can_manage |             self.can_manage = can_manage | ||||||
|             self.can_invite = can_invite |             self.can_invite = can_invite | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user