From 6e91f3477941a61188186bade0b87b1be3763297 Mon Sep 17 00:00:00 2001 From: its_me_gb Date: Mon, 26 Apr 2021 16:55:08 +0100 Subject: [PATCH 01/97] add RecipeKeeper as an import/export method --- cookbook/forms.py | 3 +- cookbook/integration/recipekeeper.py | 59 ++++++++++++++++++++++++++++ cookbook/views/import_export.py | 3 ++ 3 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 cookbook/integration/recipekeeper.py diff --git a/cookbook/forms.py b/cookbook/forms.py index 39a230e46..56c584cca 100644 --- a/cookbook/forms.py +++ b/cookbook/forms.py @@ -112,6 +112,7 @@ class ImportExportBase(forms.Form): SAFRON = 'SAFRON' CHEFTAP = 'CHEFTAP' PEPPERPLATE = 'PEPPERPLATE' + RECIPEKEEPER = 'RECIPEKEEPER' RECIPESAGE = 'RECIPESAGE' DOMESTICA = 'DOMESTICA' MEALMASTER = 'MEALMASTER' @@ -120,7 +121,7 @@ class ImportExportBase(forms.Form): type = forms.ChoiceField(choices=( (DEFAULT, _('Default')), (PAPRIKA, 'Paprika'), (NEXTCLOUD, 'Nextcloud Cookbook'), (MEALIE, 'Mealie'), (CHOWDOWN, 'Chowdown'), (SAFRON, 'Safron'), (CHEFTAP, 'ChefTap'), - (PEPPERPLATE, 'Pepperplate'), (RECIPESAGE, 'Recipe Sage'), (DOMESTICA, 'Domestica'), + (PEPPERPLATE, 'Pepperplate'), (RECIPEKEEPER, 'Recipe Keeper'), (RECIPESAGE, 'Recipe Sage'), (DOMESTICA, 'Domestica'), (MEALMASTER, 'MealMaster'), (REZKONV, 'RezKonv'), )) diff --git a/cookbook/integration/recipekeeper.py b/cookbook/integration/recipekeeper.py new file mode 100644 index 000000000..dc375d4cc --- /dev/null +++ b/cookbook/integration/recipekeeper.py @@ -0,0 +1,59 @@ +import re + +from django.utils.translation import gettext as _ + +from cookbook.helper.ingredient_parser import parse, get_food, get_unit +from cookbook.integration.integration import Integration +from cookbook.models import Recipe, Step, Food, Unit, Ingredient + + +class RecipeKeeper(Integration): + + def import_file_name_filter(self, zip_info_object): + return re.match(r'^recipes.html$', zip_info_object.filename) + + def get_recipe_from_file(self, file): + source_url = '' + + ingredient_mode = 0 + + ingredients = [] + directions = [] + for i, fl in enumerate(file.readlines(), start=0): + line = fl.decode("utf-8") + if i == 0: + title = line.strip() + else: + if line.startswith('https:') or line.startswith('http:'): + source_url = line.strip() + else: + if ingredient_mode == 1 and len(line.strip()) == 0: + ingredient_mode = 2 + if re.match(r'^([0-9])[^.](.)*$', line) and ingredient_mode < 2: + ingredient_mode = 1 + ingredients.append(line.strip()) + else: + directions.append(line.strip()) + + recipe = Recipe.objects.create(name=title, created_by=self.request.user, internal=True, space=self.request.space, ) + + step = Step.objects.create(instruction='\n'.join(directions)) + + if source_url != '': + step.instruction += '\n' + source_url + step.save() + + for ingredient in ingredients: + if len(ingredient.strip()) > 0: + amount, unit, ingredient, note = parse(ingredient) + f = get_food(ingredient, self.request.space) + u = get_unit(unit, self.request.space) + step.ingredients.add(Ingredient.objects.create( + food=f, unit=u, amount=amount, note=note + )) + recipe.steps.add(step) + + return recipe + + def get_file_from_recipe(self, recipe): + raise NotImplementedError('Method not implemented in storage integration') diff --git a/cookbook/views/import_export.py b/cookbook/views/import_export.py index 127630676..367174411 100644 --- a/cookbook/views/import_export.py +++ b/cookbook/views/import_export.py @@ -19,6 +19,7 @@ from cookbook.integration.mealie import Mealie from cookbook.integration.mealmaster import MealMaster from cookbook.integration.nextcloud_cookbook import NextcloudCookbook from cookbook.integration.paprika import Paprika +from cookbook.integration.recipekeeper import RecipeKeeper from cookbook.integration.recipesage import RecipeSage from cookbook.integration.rezkonv import RezKonv from cookbook.integration.safron import Safron @@ -44,6 +45,8 @@ def get_integration(request, export_type): return Pepperplate(request, export_type) if export_type == ImportExportBase.DOMESTICA: return Domestica(request, export_type) + if export_type == ImportExportBase.RECIPEKEEPER: + return RecipeKeeper(request, export_type) if export_type == ImportExportBase.RECIPESAGE: return RecipeSage(request, export_type) if export_type == ImportExportBase.REZKONV: From eba3bfa82898e09999dedc4b70377290d523eac7 Mon Sep 17 00:00:00 2001 From: its_me_gb Date: Tue, 27 Apr 2021 15:32:07 +0100 Subject: [PATCH 02/97] Basic import functionality working --- cookbook/integration/integration.py | 13 ++++- cookbook/integration/recipekeeper.py | 74 +++++++++++++++------------- 2 files changed, 52 insertions(+), 35 deletions(-) diff --git a/cookbook/integration/integration.py b/cookbook/integration/integration.py index 33ed72cfc..ba55c58d3 100644 --- a/cookbook/integration/integration.py +++ b/cookbook/integration/integration.py @@ -105,7 +105,18 @@ class Integration: try: self.files = files for f in files: - if '.zip' in f['name'] or '.paprikarecipes' in f['name']: + if 'RecipeKeeper' in f['name']: + import_zip = ZipFile(f['file']) + for z in import_zip.filelist: + if self.import_file_name_filter(z): + data_list = self.split_recipe_file(import_zip.read(z.filename).decode('utf-8')) + for d in data_list: + recipe = self.get_recipe_from_file(d) + recipe.keywords.add(self.keyword) + il.msg += f'{recipe.pk} - {recipe.name} \n' + self.handle_duplicates(recipe, import_duplicates) + import_zip.close() + elif '.zip' in f['name'] or '.paprikarecipes' in f['name']: import_zip = ZipFile(f['file']) for z in import_zip.filelist: if self.import_file_name_filter(z): diff --git a/cookbook/integration/recipekeeper.py b/cookbook/integration/recipekeeper.py index dc375d4cc..91e3a46c5 100644 --- a/cookbook/integration/recipekeeper.py +++ b/cookbook/integration/recipekeeper.py @@ -1,10 +1,11 @@ import re +from bs4 import BeautifulSoup from django.utils.translation import gettext as _ from cookbook.helper.ingredient_parser import parse, get_food, get_unit from cookbook.integration.integration import Integration -from cookbook.models import Recipe, Step, Food, Unit, Ingredient +from cookbook.models import Recipe, Step, Food, Unit, Ingredient, Keyword class RecipeKeeper(Integration): @@ -12,46 +13,51 @@ class RecipeKeeper(Integration): def import_file_name_filter(self, zip_info_object): return re.match(r'^recipes.html$', zip_info_object.filename) + def split_recipe_file(self, file): + recipe_html = BeautifulSoup(file, 'html.parser') + return recipe_html.find_all('div',class_='recipe-details') + def get_recipe_from_file(self, file): - source_url = '' + # 'file' comes is as a beautifulsoup object + recipe = Recipe.objects.create(name=file.find("h2",{"itemprop":"name"}).text.strip(), created_by=self.request.user, internal=True, space=self.request.space, ) - ingredient_mode = 0 + # add 'Courses' and 'Categories' as keywords + for course in file.find_all("span", {"itemprop": "recipeCourse"}): + keyword, created = Keyword.objects.get_or_create(name=course.text, space=self.request.space) + recipe.keywords.add(keyword) - ingredients = [] - directions = [] - for i, fl in enumerate(file.readlines(), start=0): - line = fl.decode("utf-8") - if i == 0: - title = line.strip() - else: - if line.startswith('https:') or line.startswith('http:'): - source_url = line.strip() - else: - if ingredient_mode == 1 and len(line.strip()) == 0: - ingredient_mode = 2 - if re.match(r'^([0-9])[^.](.)*$', line) and ingredient_mode < 2: - ingredient_mode = 1 - ingredients.append(line.strip()) - else: - directions.append(line.strip()) + for category in file.find_all("meta", {"itemprop":"recipeCategory"}): + keyword, created = Keyword.objects.get_or_create(name=category.get("content"), space=self.request.space) + recipe.keywords.add(keyword) - recipe = Recipe.objects.create(name=title, created_by=self.request.user, internal=True, space=self.request.space, ) + # TODO: import prep and cook times + # Recipe Keeper uses ISO 8601 format for its duration periods. - step = Step.objects.create(instruction='\n'.join(directions)) + ingredients_added = False + for s in file.find("div", {"itemprop": "recipeDirections"}).find_all("p"): + + if s.text == "": + continue - if source_url != '': - step.instruction += '\n' + source_url - step.save() + step = Step.objects.create( + instruction=s.text + ) + if not ingredients_added: + ingredients_added = True + for ingredient in file.find("div", {"itemprop": "recipeIngredients"}).findChildren("p"): + if ingredient.text == "": + continue + amount, unit, ingredient, note = parse(ingredient.text.strip()) + f = get_food(ingredient, self.request.space) + u = get_unit(unit, self.request.space) + step.ingredients.add(Ingredient.objects.create( + food=f, unit=u, amount=amount, note=note + )) + recipe.steps.add(step) - for ingredient in ingredients: - if len(ingredient.strip()) > 0: - amount, unit, ingredient, note = parse(ingredient) - f = get_food(ingredient, self.request.space) - u = get_unit(unit, self.request.space) - step.ingredients.add(Ingredient.objects.create( - food=f, unit=u, amount=amount, note=note - )) - recipe.steps.add(step) + # if source_url != '': + # step.instruction += '\n' + source_url + # step.save() return recipe From d00fa10b9fa7ab05c7fa805e7316929a485432cb Mon Sep 17 00:00:00 2001 From: its_me_gb Date: Wed, 28 Apr 2021 13:16:55 +0100 Subject: [PATCH 03/97] Import the recipe image from the zip file. --- cookbook/integration/recipekeeper.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/cookbook/integration/recipekeeper.py b/cookbook/integration/recipekeeper.py index 91e3a46c5..dea102f11 100644 --- a/cookbook/integration/recipekeeper.py +++ b/cookbook/integration/recipekeeper.py @@ -1,5 +1,7 @@ import re from bs4 import BeautifulSoup +from io import BytesIO +from zipfile import ZipFile from django.utils.translation import gettext as _ @@ -15,18 +17,18 @@ class RecipeKeeper(Integration): def split_recipe_file(self, file): recipe_html = BeautifulSoup(file, 'html.parser') - return recipe_html.find_all('div',class_='recipe-details') + return recipe_html.find_all('div', class_='recipe-details') def get_recipe_from_file(self, file): # 'file' comes is as a beautifulsoup object - recipe = Recipe.objects.create(name=file.find("h2",{"itemprop":"name"}).text.strip(), created_by=self.request.user, internal=True, space=self.request.space, ) + recipe = Recipe.objects.create(name=file.find("h2", {"itemprop": "name"}).text.strip(), created_by=self.request.user, internal=True, space=self.request.space, ) # add 'Courses' and 'Categories' as keywords for course in file.find_all("span", {"itemprop": "recipeCourse"}): keyword, created = Keyword.objects.get_or_create(name=course.text, space=self.request.space) recipe.keywords.add(keyword) - for category in file.find_all("meta", {"itemprop":"recipeCategory"}): + for category in file.find_all("meta", {"itemprop": "recipeCategory"}): keyword, created = Keyword.objects.get_or_create(name=category.get("content"), space=self.request.space) recipe.keywords.add(keyword) @@ -35,7 +37,7 @@ class RecipeKeeper(Integration): ingredients_added = False for s in file.find("div", {"itemprop": "recipeDirections"}).find_all("p"): - + if s.text == "": continue @@ -55,6 +57,16 @@ class RecipeKeeper(Integration): )) recipe.steps.add(step) + # import the Primary recipe image that is stored in the Zip + try: + for f in self.files: + if '.zip' in f['name']: + import_zip = ZipFile(f['file']) + self.import_recipe_image(recipe, BytesIO(import_zip.read(file.find("img", class_="recipe-photo").get("src")))) + except Exception as e: + pass + + # TODO: Import the source url # if source_url != '': # step.instruction += '\n' + source_url # step.save() From 0ec29636b330823052a5098b07e958fc4d97bbd1 Mon Sep 17 00:00:00 2001 From: its_me_gb Date: Fri, 30 Apr 2021 09:14:31 +0100 Subject: [PATCH 04/97] Add original source url to the first recipe step --- cookbook/integration/recipekeeper.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/cookbook/integration/recipekeeper.py b/cookbook/integration/recipekeeper.py index dea102f11..dc2079165 100644 --- a/cookbook/integration/recipekeeper.py +++ b/cookbook/integration/recipekeeper.py @@ -35,6 +35,7 @@ class RecipeKeeper(Integration): # TODO: import prep and cook times # Recipe Keeper uses ISO 8601 format for its duration periods. + source_url_added = False ingredients_added = False for s in file.find("div", {"itemprop": "recipeDirections"}).find_all("p"): @@ -44,6 +45,14 @@ class RecipeKeeper(Integration): step = Step.objects.create( instruction=s.text ) + + if not source_url_added: + # If there is a source URL, add it to the first step field. + if file.find("span", {"itemprop": "recipeSource"}).text != '': + step.instruction += "\n\nImported from: " + file.find("span", {"itemprop": "recipeSource"}).text + step.save() + source_url_added = True + if not ingredients_added: ingredients_added = True for ingredient in file.find("div", {"itemprop": "recipeIngredients"}).findChildren("p"): @@ -66,11 +75,6 @@ class RecipeKeeper(Integration): except Exception as e: pass - # TODO: Import the source url - # if source_url != '': - # step.instruction += '\n' + source_url - # step.save() - return recipe def get_file_from_recipe(self, recipe): From c9fcbc9ff04908ef8900a9d4322fad878e62af5b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 5 Jun 2021 12:42:19 +0000 Subject: [PATCH 05/97] Bump ws from 6.2.1 to 6.2.2 in /vue Bumps [ws](https://github.com/websockets/ws) from 6.2.1 to 6.2.2. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/commits) --- updated-dependencies: - dependency-name: ws dependency-type: indirect ... Signed-off-by: dependabot[bot] --- vue/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vue/yarn.lock b/vue/yarn.lock index bde2262c3..f176dd815 100644 --- a/vue/yarn.lock +++ b/vue/yarn.lock @@ -10073,9 +10073,9 @@ wrappy@1: integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= ws@^6.0.0, ws@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + version "6.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== dependencies: async-limiter "~1.0.0" From 348c1c78f129ba0e937210c80c1a67daa0ca57e4 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Mon, 7 Jun 2021 16:03:10 +0200 Subject: [PATCH 06/97] split signup forms working again --- cookbook/forms.py | 30 +++++++++++++++--------------- cookbook/tables.py | 10 +++++----- cookbook/templates/space.html | 33 +++++++++++++++++++++++---------- cookbook/views/new.py | 2 +- cookbook/views/views.py | 28 ++++++++++++++++------------ 5 files changed, 60 insertions(+), 43 deletions(-) diff --git a/cookbook/forms.py b/cookbook/forms.py index 801ff5fb9..71d664e7d 100644 --- a/cookbook/forms.py +++ b/cookbook/forms.py @@ -70,21 +70,6 @@ class UserPreferenceForm(forms.ModelForm): } -class AllAuthSignupForm(forms.Form): - captcha = hCaptchaField() - terms = forms.BooleanField(label=_('Accept Terms and Privacy')) - - def __init__(self, **kwargs): - super(AllAuthSignupForm, self).__init__(**kwargs) - if settings.PRIVACY_URL == '' and settings.TERMS_URL == '': - self.fields.pop('terms') - if settings.HCAPTCHA_SECRET == '': - self.fields.pop('captcha') - - def signup(self, request, user): - pass - - class UserNameForm(forms.ModelForm): prefix = 'name' @@ -464,6 +449,21 @@ class SpaceJoinForm(forms.Form): token = forms.CharField() +class AllAuthSignupForm(forms.Form): + captcha = hCaptchaField() + terms = forms.BooleanField(label=_('Accept Terms and Privacy')) + + def __init__(self, **kwargs): + super(AllAuthSignupForm, self).__init__(**kwargs) + if settings.PRIVACY_URL == '' and settings.TERMS_URL == '': + self.fields.pop('terms') + if settings.HCAPTCHA_SECRET == '': + self.fields.pop('captcha') + + def signup(self, request, user): + pass + + class UserCreateForm(forms.Form): name = forms.CharField(label='Username') password = forms.CharField( diff --git a/cookbook/tables.py b/cookbook/tables.py index 395f5f9c5..3872ea130 100644 --- a/cookbook/tables.py +++ b/cookbook/tables.py @@ -141,17 +141,17 @@ class ShoppingListTable(tables.Table): class InviteLinkTable(tables.Table): link = tables.TemplateColumn( - "" + _('Link') + "" + "" + ) + delete_link = tables.TemplateColumn( + "" + _('Delete') + "", verbose_name=_('Delete') ) - # delete = tables.TemplateColumn( - # "" + _('Delete') + "" - # ) class Meta: model = InviteLink template_name = 'generic/table_template.html' fields = ( - 'username', 'group', 'valid_until', 'created_by', 'created_at' + 'username', 'group', 'valid_until', ) diff --git a/cookbook/templates/space.html b/cookbook/templates/space.html index 20369fff4..4ecc250f9 100644 --- a/cookbook/templates/space.html +++ b/cookbook/templates/space.html @@ -1,4 +1,5 @@ {% extends "base.html" %} +{% load django_tables2 %} {% load crispy_forms_filters %} {% load static %} {% load i18n %} @@ -90,18 +91,19 @@ {% if u.user != request.user %} -
- - +
+ + {% trans 'Update' %} + :href="editUserUrl({{ u.pk }}, {{ u.space.pk }})">{% trans 'Update' %} -
+
{% else %} {% trans 'You cannot edit yourself.' %} {% endif %} @@ -115,6 +117,17 @@ +
+
+

{% trans 'Invite Links' %}

+ {% render_table invite_links %} +
+
+ +
+
+
+ {% endblock %} {% block script %} diff --git a/cookbook/views/new.py b/cookbook/views/new.py index 57bea340c..6edc95bd1 100644 --- a/cookbook/views/new.py +++ b/cookbook/views/new.py @@ -245,7 +245,7 @@ class InviteLinkCreate(GroupRequiredMixin, CreateView): except (SMTPException, BadHeaderError, TimeoutError): messages.add_message(self.request, messages.ERROR, _('Email to user could not be send, please share link manually.')) - return HttpResponseRedirect(reverse('index')) + return HttpResponseRedirect(reverse('view_space')) def get_context_data(self, **kwargs): context = super(InviteLinkCreate, self).get_context_data(**kwargs) diff --git a/cookbook/views/views.py b/cookbook/views/views.py index a5fcb8340..2d4b4fa20 100644 --- a/cookbook/views/views.py +++ b/cookbook/views/views.py @@ -3,6 +3,7 @@ import re from datetime import datetime from uuid import UUID +from allauth.account.forms import SignupForm from django.conf import settings from django.contrib import messages from django.contrib.auth import update_session_auth_hash @@ -25,13 +26,13 @@ from rest_framework.authtoken.models import Token from cookbook.filters import RecipeFilter from cookbook.forms import (CommentForm, Recipe, RecipeBookEntryForm, User, UserCreateForm, UserNameForm, UserPreference, - UserPreferenceForm, SpaceJoinForm, SpaceCreateForm) + UserPreferenceForm, SpaceJoinForm, SpaceCreateForm, AllAuthSignupForm) from cookbook.helper.permission_helper import group_required, share_link_valid, has_group_permission from cookbook.models import (Comment, CookLog, InviteLink, MealPlan, RecipeBook, RecipeBookEntry, ViewLog, ShoppingList, Space, Keyword, RecipeImport, Unit, Food) from cookbook.tables import (CookLogTable, RecipeTable, RecipeTableSmall, - ViewLogTable) + ViewLogTable, InviteLinkTable) from cookbook.views.data import Object from recipes.version import BUILD_REF, VERSION_NUMBER @@ -444,23 +445,23 @@ def signup(request, token): messages.add_message(request, messages.SUCCESS, _('Successfully joined space.')) return HttpResponseRedirect(reverse('index')) else: - request.session['signup_token'] = token + request.session['signup_token'] = str(token) if request.method == 'POST': updated_request = request.POST.copy() if link.username != '': - updated_request.update({'name': link.username}) + updated_request.update({'username': link.username}) - form = UserCreateForm(updated_request) + form = SignupForm(data=updated_request) if form.is_valid(): - if form.cleaned_data['password'] != form.cleaned_data['password_confirm']: # noqa: E501 - form.add_error('password', _('Passwords dont match!')) + if form.cleaned_data['password1'] != form.cleaned_data['password_confirm']: # noqa: E501 + form.add_error('password1', _('Passwords dont match!')) else: - user = User(username=form.cleaned_data['name'], ) + user = User(username=form.cleaned_data['username'], ) try: - validate_password(form.cleaned_data['password'], user=user) - user.set_password(form.cleaned_data['password']) + validate_password(form.cleaned_data['password1'], user=user) + user.set_password(form.cleaned_data['password1']) user.save() messages.add_message(request, messages.SUCCESS, _('User has been created, please login!')) @@ -477,7 +478,7 @@ def signup(request, token): for m in e: form.add_error('password', m) else: - form = UserCreateForm() + form = SignupForm() if link.username != '': form.fields['name'].initial = link.username @@ -505,7 +506,10 @@ def space(request): counts.recipes_no_keyword = Recipe.objects.filter(keywords=None, space=request.space).count() - return render(request, 'space.html', {'space_users': space_users, 'counts': counts}) + invite_links = InviteLinkTable(InviteLink.objects.filter(valid_until__gte=datetime.today(), used_by=None, space=request.space).all()) + RequestConfig(request, paginate={'per_page': 25}).configure(invite_links) + + return render(request, 'space.html', {'space_users': space_users, 'counts': counts, 'invite_links': invite_links}) # TODO super hacky and quick solution, safe but needs rework From bf467b1ec0a458f4746d9e6118cae038182d4989 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Mon, 7 Jun 2021 16:09:26 +0200 Subject: [PATCH 07/97] manage link for hosted version --- cookbook/helper/context_processors.py | 1 + cookbook/templates/space.html | 6 ++++-- recipes/settings.py | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/cookbook/helper/context_processors.py b/cookbook/helper/context_processors.py index a558f81bb..449ccbf57 100644 --- a/cookbook/helper/context_processors.py +++ b/cookbook/helper/context_processors.py @@ -6,6 +6,7 @@ def context_settings(request): 'EMAIL_ENABLED': settings.EMAIL_HOST != '', 'SIGNUP_ENABLED': settings.ENABLE_SIGNUP, 'CAPTCHA_ENABLED': settings.HCAPTCHA_SITEKEY != '', + 'HOSTED': settings.HOSTED, 'TERMS_URL': settings.TERMS_URL, 'PRIVACY_URL': settings.PRIVACY_URL, 'IMPRINT_URL': settings.IMPRINT_URL, diff --git a/cookbook/templates/space.html b/cookbook/templates/space.html index 4ecc250f9..86a20283b 100644 --- a/cookbook/templates/space.html +++ b/cookbook/templates/space.html @@ -14,7 +14,9 @@ {% block content %} -

{{ request.space.name }}

+

{{ request.space.name }} {% if HOSTED %} + {% trans 'Manage Subscription' %}{% endif %}

+
@@ -120,7 +122,7 @@

{% trans 'Invite Links' %}

- {% render_table invite_links %} + {% render_table invite_links %}
diff --git a/recipes/settings.py b/recipes/settings.py index 38e1e442a..175fc7815 100644 --- a/recipes/settings.py +++ b/recipes/settings.py @@ -67,13 +67,14 @@ DJANGO_TABLES2_PAGE_RANGE = 8 HCAPTCHA_SITEKEY = os.getenv('HCAPTCHA_SITEKEY', '') HCAPTCHA_SECRET = os.getenv('HCAPTCHA_SECRET', '') - ACCOUNT_SIGNUP_FORM_CLASS = 'cookbook.forms.AllAuthSignupForm' TERMS_URL = os.getenv('TERMS_URL', '') PRIVACY_URL = os.getenv('PRIVACY_URL', '') IMPRINT_URL = os.getenv('IMPRINT_URL', '') +HOSTED = bool(int(os.getenv('HOSTED', False))) + MESSAGE_TAGS = { messages.ERROR: 'danger' } From 3074d916dc2d9c49554ce57cdb81db701cdc4e5b Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Mon, 7 Jun 2021 16:46:28 +0200 Subject: [PATCH 08/97] many signup and space management fixes --- cookbook/admin.py | 2 +- cookbook/forms.py | 12 +---- cookbook/helper/scope_middleware.py | 5 +- .../0127_remove_invitelink_username.py | 17 +++++++ cookbook/models.py | 1 - cookbook/tables.py | 2 +- cookbook/templates/account/signup.html | 3 ++ cookbook/templates/space.html | 8 +-- cookbook/urls.py | 3 +- cookbook/views/new.py | 2 +- cookbook/views/views.py | 50 ++++--------------- recipes/settings.py | 5 ++ 12 files changed, 49 insertions(+), 61 deletions(-) create mode 100644 cookbook/migrations/0127_remove_invitelink_username.py diff --git a/cookbook/admin.py b/cookbook/admin.py index e9613ec0d..3d52ac2bc 100644 --- a/cookbook/admin.py +++ b/cookbook/admin.py @@ -166,7 +166,7 @@ admin.site.register(ViewLog, ViewLogAdmin) class InviteLinkAdmin(admin.ModelAdmin): list_display = ( - 'username', 'group', 'valid_until', + 'group', 'valid_until', 'created_by', 'created_at', 'used_by' ) diff --git a/cookbook/forms.py b/cookbook/forms.py index 71d664e7d..d96ba1648 100644 --- a/cookbook/forms.py +++ b/cookbook/forms.py @@ -413,19 +413,11 @@ class InviteLinkForm(forms.ModelForm): return email - def clean_username(self): - username = self.cleaned_data['username'] - with scopes_disabled(): - if username != '' and (User.objects.filter(username=username).exists() or InviteLink.objects.filter(username=username).exists()): - raise ValidationError(_('Username already taken!')) - return username - class Meta: model = InviteLink - fields = ('username', 'email', 'group', 'valid_until', 'space') + fields = ('email', 'group', 'valid_until', 'space') help_texts = { - 'username': _('A username is not required, if left blank the new user can choose one.'), - 'email': _('An email address is not required but if present the invite link will be send to the user.') + 'email': _('An email address is not required but if present the invite link will be send to the user.'), } field_classes = { 'space': SafeModelChoiceField, diff --git a/cookbook/helper/scope_middleware.py b/cookbook/helper/scope_middleware.py index c7de19dd4..809a7eb1a 100644 --- a/cookbook/helper/scope_middleware.py +++ b/cookbook/helper/scope_middleware.py @@ -16,7 +16,10 @@ class ScopeMiddleware: with scopes_disabled(): return self.get_response(request) - if request.path.startswith('/signup/'): + if request.path.startswith('/signup/') or request.path.startswith('/invite/'): + return self.get_response(request) + + if request.path.startswith('/accounts/'): return self.get_response(request) with scopes_disabled(): diff --git a/cookbook/migrations/0127_remove_invitelink_username.py b/cookbook/migrations/0127_remove_invitelink_username.py new file mode 100644 index 000000000..ffb25260d --- /dev/null +++ b/cookbook/migrations/0127_remove_invitelink_username.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.3 on 2021-06-07 14:21 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0126_alter_userpreference_theme'), + ] + + operations = [ + migrations.RemoveField( + model_name='invitelink', + name='username', + ), + ] diff --git a/cookbook/models.py b/cookbook/models.py index 3a7997e83..3f198e640 100644 --- a/cookbook/models.py +++ b/cookbook/models.py @@ -612,7 +612,6 @@ def default_valid_until(): class InviteLink(ExportModelOperationsMixin('invite_link'), models.Model, PermissionModelMixin): uuid = models.UUIDField(default=uuid.uuid4) - username = models.CharField(blank=True, max_length=64) email = models.EmailField(blank=True) group = models.ForeignKey(Group, on_delete=models.CASCADE) valid_until = models.DateField(default=default_valid_until) diff --git a/cookbook/tables.py b/cookbook/tables.py index 3872ea130..2adf47a74 100644 --- a/cookbook/tables.py +++ b/cookbook/tables.py @@ -141,7 +141,7 @@ class ShoppingListTable(tables.Table): class InviteLinkTable(tables.Table): link = tables.TemplateColumn( - "" + "" ) delete_link = tables.TemplateColumn( "" + _('Delete') + "", verbose_name=_('Delete') diff --git a/cookbook/templates/account/signup.html b/cookbook/templates/account/signup.html index f124621bc..e6785b7d5 100644 --- a/cookbook/templates/account/signup.html +++ b/cookbook/templates/account/signup.html @@ -25,6 +25,9 @@
{{ form.email |as_crispy_field }}
+
+ {{ form.email2 |as_crispy_field }} +
{{ form.password1 |as_crispy_field }}
diff --git a/cookbook/templates/space.html b/cookbook/templates/space.html index 86a20283b..7cf193691 100644 --- a/cookbook/templates/space.html +++ b/cookbook/templates/space.html @@ -96,10 +96,10 @@
', views.signup, name='view_signup'), + path('signup/', views.signup, name='view_signup'), # TODO deprecated with 0.16.2 remove at some point + path('invite/', views.invite_link, name='view_invite'), path('system/', views.system, name='view_system'), path('search/', views.search, name='view_search'), path('search/v2/', views.search_v2, name='view_search_v2'), diff --git a/cookbook/views/new.py b/cookbook/views/new.py index 6edc95bd1..46aa8b324 100644 --- a/cookbook/views/new.py +++ b/cookbook/views/new.py @@ -225,7 +225,7 @@ class InviteLinkCreate(GroupRequiredMixin, CreateView): if InviteLink.objects.filter(space=self.request.space, created_at__gte=datetime.now() - timedelta(hours=4)).count() < 20: message = _('Hello') + '!\n\n' + _('You have been invited by ') + escape(self.request.user.username) message += _(' to join their Tandoor Recipes space ') + escape(self.request.space.name) + '.\n\n' - message += _('Click the following link to activate your account: ') + self.request.build_absolute_uri(reverse('view_signup', args=[str(obj.uuid)])) + '\n\n' + message += _('Click the following link to activate your account: ') + self.request.build_absolute_uri(reverse('view_invite', args=[str(obj.uuid)])) + '\n\n' message += _('If the link does not work use the following code to manually join the space: ') + str(obj.uuid) + '\n\n' message += _('The invitation is valid until ') + str(obj.valid_until) + '\n\n' message += _('Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub ') + 'https://github.com/vabene1111/recipes/' diff --git a/cookbook/views/views.py b/cookbook/views/views.py index 2d4b4fa20..b7cc57461 100644 --- a/cookbook/views/views.py +++ b/cookbook/views/views.py @@ -126,7 +126,7 @@ def no_space(request): return HttpResponseRedirect(reverse('index')) if join_form.is_valid(): - return HttpResponseRedirect(reverse('view_signup', args=[join_form.cleaned_data['token']])) + return HttpResponseRedirect(reverse('view_invite', args=[join_form.cleaned_data['token']])) else: if settings.SOCIAL_DEFAULT_ACCESS: request.user.userpreference.space = Space.objects.first() @@ -134,7 +134,7 @@ def no_space(request): request.user.groups.add(Group.objects.get(name=settings.SOCIAL_DEFAULT_GROUP)) return HttpResponseRedirect(reverse('index')) if 'signup_token' in request.session: - return HttpResponseRedirect(reverse('view_signup', args=[request.session.pop('signup_token', '')])) + return HttpResponseRedirect(reverse('view_invite', args=[request.session.pop('signup_token', '')])) create_form = SpaceCreateForm() join_form = SpaceJoinForm() @@ -420,7 +420,7 @@ def setup(request): return render(request, 'setup.html', {'form': form}) -def signup(request, token): +def invite_link(request, token): with scopes_disabled(): try: token = UUID(token, version=4) @@ -446,47 +446,15 @@ def signup(request, token): return HttpResponseRedirect(reverse('index')) else: request.session['signup_token'] = str(token) + return HttpResponseRedirect(reverse('account_signup')) - if request.method == 'POST': - updated_request = request.POST.copy() - if link.username != '': - updated_request.update({'username': link.username}) + messages.add_message(request, messages.ERROR, _('Invite Link not valid or already used!')) + return HttpResponseRedirect(reverse('index')) - form = SignupForm(data=updated_request) - if form.is_valid(): - if form.cleaned_data['password1'] != form.cleaned_data['password_confirm']: # noqa: E501 - form.add_error('password1', _('Passwords dont match!')) - else: - user = User(username=form.cleaned_data['username'], ) - try: - validate_password(form.cleaned_data['password1'], user=user) - user.set_password(form.cleaned_data['password1']) - user.save() - messages.add_message(request, messages.SUCCESS, _('User has been created, please login!')) - - link.used_by = user - link.save() - - request.user.groups.clear() - user.groups.add(link.group) - - user.userpreference.space = link.space - user.userpreference.save() - return HttpResponseRedirect(reverse('account_login')) - except ValidationError as e: - for m in e: - form.add_error('password', m) - else: - form = SignupForm() - - if link.username != '': - form.fields['name'].initial = link.username - form.fields['name'].disabled = True - return render(request, 'account/signup.html', {'form': form, 'link': link}) - - messages.add_message(request, messages.ERROR, _('Invite Link not valid or already used!')) - return HttpResponseRedirect(reverse('index')) +# TODO deprecated with 0.16.2 remove at some point +def signup(request, token): + return HttpResponseRedirect(reverse('view_invite', args=[token])) @group_required('admin') diff --git a/recipes/settings.py b/recipes/settings.py index 175fc7815..6d86fa117 100644 --- a/recipes/settings.py +++ b/recipes/settings.py @@ -113,6 +113,11 @@ INSTALLED_APPS = [ SOCIAL_PROVIDERS = os.getenv('SOCIAL_PROVIDERS').split(',') if os.getenv('SOCIAL_PROVIDERS') else [] INSTALLED_APPS = INSTALLED_APPS + SOCIAL_PROVIDERS +ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE = True +ACCOUNT_MAX_EMAIL_ADDRESSES = 3 +ACCOUNT_EMAIL_REQUIRED = True +ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 90 + SOCIALACCOUNT_PROVIDERS = ast.literal_eval( os.getenv('SOCIALACCOUNT_PROVIDERS') if os.getenv('SOCIALACCOUNT_PROVIDERS') else '{}') From 94c51f90cd02a1651706238a81f4e3a87b143684 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Mon, 7 Jun 2021 17:12:00 +0200 Subject: [PATCH 09/97] fixed recipe book entry remove --- cookbook/models.py | 9 ++++++--- cookbook/templates/base.html | 2 +- cookbook/views/data.py | 12 +++++------- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/cookbook/models.py b/cookbook/models.py index 3f198e640..c4816ed6f 100644 --- a/cookbook/models.py +++ b/cookbook/models.py @@ -1,3 +1,4 @@ +import operator import re import uuid from datetime import date, timedelta @@ -53,9 +54,11 @@ class PermissionModelMixin: def get_space(self): p = '.'.join(self.get_space_key()) - if getattr(self, p, None): - return getattr(self, p) - raise NotImplementedError('get space for method not implemented and standard fields not available') + try: + if space := operator.attrgetter(p)(self): + return space + except AttributeError: + raise NotImplementedError('get space for method not implemented and standard fields not available') class Space(ExportModelOperationsMixin('space'), models.Model): diff --git a/cookbook/templates/base.html b/cookbook/templates/base.html index cd9a7018c..17ebea158 100644 --- a/cookbook/templates/base.html +++ b/cookbook/templates/base.html @@ -140,7 +140,7 @@ {% page_help request.resolver_match.url_name as help_button %} {% if help_button %}{{ help_button|safe }}{% endif %} -
")})),u=function(){return"$0"==="a".replace(/./,"$0")}(),l=i("replace"),h=function(){return!!/./[l]&&""===/./[l]("a","$0")}(),f=!o((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));t.exports=function(t,e,n,l){var p=i(t),d=!o((function(){var e={};return e[p]=function(){return 7},7!=""[t](e)})),g=d&&!o((function(){var e=!1,n=/a/;return"split"===t&&(n={},n.constructor={},n.constructor[c]=function(){return n},n.flags="",n[p]=/./[p]),n.exec=function(){return e=!0,null},n[p](""),!e}));if(!d||!g||"replace"===t&&(!s||!u||h)||"split"===t&&!f){var y=/./[p],m=n(p,""[t],(function(t,e,n,r,o){return e.exec===RegExp.prototype.exec?d&&!o?{done:!0,value:y.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:h}),v=m[0],w=m[1];r(String.prototype,t,v),r(RegExp.prototype,p,2==e?function(t,e){return w.call(t,this,e)}:function(t){return w.call(t,this)})}l&&a(RegExp.prototype[p],"sham",!0)}},d8a5:function(t,e,n){"use strict";try{self["workbox:expiration:6.1.5"]&&_()}catch(r){}},da84:function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||function(){return this}()||Function("return this")()}).call(this,n("c8ba"))},e6d2:function(t,e,n){"use strict";try{self["workbox:routing:6.1.5"]&&_()}catch(r){}},e893:function(t,e,n){var r=n("5135"),o=n("56ef"),i=n("06cf"),a=n("9bf2");t.exports=function(t,e){for(var n=o(e),c=a.f,s=i.f,u=0;u{let n=t;return e.length>0&&(n+=" :: "+JSON.stringify(e)),n},a=i;class c extends Error{constructor(t,e){const n=a(t,e);super(n),this.name=t,this.details=e}}const s={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!==typeof registration?registration.scope:""},u=t=>[s.prefix,t,s.suffix].filter(t=>t&&t.length>0).join("-"),l=t=>{for(const e of Object.keys(s))t(e)},h={updateDetails:t=>{l(e=>{"string"===typeof t[e]&&(s[e]=t[e])})},getGoogleAnalyticsName:t=>t||u(s.googleAnalytics),getPrecacheName:t=>t||u(s.precache),getPrefix:()=>s.prefix,getRuntimeName:t=>t||u(s.runtime),getSuffix:()=>s.suffix};n("c700");let f;function p(){if(void 0===f){const e=new Response("");if("body"in e)try{new Response(e.body),f=!0}catch(t){f=!1}f=!1}return f}async function d(t,e){let n=null;if(t.url){const e=new URL(t.url);n=e.origin}if(n!==self.location.origin)throw new c("cross-origin-copy-response",{origin:n});const r=t.clone(),o={headers:new Headers(r.headers),status:r.status,statusText:r.statusText},i=e?e(o):o,a=p()?r.body:await r.blob();return new Response(a,i)}const g=t=>{const e=new URL(String(t),location.href);return e.href.replace(new RegExp("^"+location.origin),"")};function y(t,e){const n=new URL(t);for(const r of e)n.searchParams.delete(r);return n.href}async function m(t,e,n,r){const o=y(e.url,n);if(e.url===o)return t.match(e,r);const i={...r,ignoreSearch:!0},a=await t.keys(e,i);for(const c of a){const e=y(c.url,n);if(o===e)return t.match(c,r)}}class v{constructor(){this.promise=new Promise((t,e)=>{this.resolve=t,this.reject=e})}}const w=new Set;async function b(){for(const t of w)await t()}function x(t){return new Promise(e=>setTimeout(e,t))}n("6aa8");function _(t){return"string"===typeof t?new Request(t):t}class E{constructor(t,e){this._cacheKeys={},Object.assign(this,e),this.event=e.event,this._strategy=t,this._handlerDeferred=new v,this._extendLifetimePromises=[],this._plugins=[...t.plugins],this._pluginStateMap=new Map;for(const n of this._plugins)this._pluginStateMap.set(n,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(t){const{event:e}=this;let n=_(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const r=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(i){throw new c("plugin-error-request-will-fetch",{thrownError:i})}const o=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this._strategy.fetchOptions);for(const n of this.iterateCallbacks("fetchDidSucceed"))t=await n({event:e,request:o,response:t});return t}catch(a){throw r&&await this.runCallbacks("fetchDidFail",{error:a,event:e,originalRequest:r.clone(),request:o.clone()}),a}}async fetchAndCachePut(t){const e=await this.fetch(t),n=e.clone();return this.waitUntil(this.cachePut(t,n)),e}async cacheMatch(t){const e=_(t);let n;const{cacheName:r,matchOptions:o}=this._strategy,i=await this.getCacheKey(e,"read"),a={...o,cacheName:r};n=await caches.match(i,a);for(const c of this.iterateCallbacks("cachedResponseWillBeUsed"))n=await c({cacheName:r,matchOptions:o,cachedResponse:n,request:i,event:this.event})||void 0;return n}async cachePut(t,e){const n=_(t);await x(0);const r=await this.getCacheKey(n,"write");if(!e)throw new c("cache-put-with-no-response",{url:g(r.url)});const o=await this._ensureResponseSafeToCache(e);if(!o)return!1;const{cacheName:i,matchOptions:a}=this._strategy,s=await self.caches.open(i),u=this.hasCallback("cacheDidUpdate"),l=u?await m(s,r.clone(),["__WB_REVISION__"],a):null;try{await s.put(r,u?o.clone():o)}catch(h){throw"QuotaExceededError"===h.name&&await b(),h}for(const c of this.iterateCallbacks("cacheDidUpdate"))await c({cacheName:i,oldResponse:l,newResponse:o.clone(),request:r,event:this.event});return!0}async getCacheKey(t,e){if(!this._cacheKeys[e]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=_(await t({mode:e,request:n,event:this.event,params:this.params}));this._cacheKeys[e]=n}return this._cacheKeys[e]}hasCallback(t){for(const e of this._strategy.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const n of this.iterateCallbacks(t))await n(e)}*iterateCallbacks(t){for(const e of this._strategy.plugins)if("function"===typeof e[t]){const n=this._pluginStateMap.get(e),r=r=>{const o={...r,state:n};return e[t](o)};yield r}}waitUntil(t){return this._extendLifetimePromises.push(t),t}async doneWaiting(){let t;while(t=this._extendLifetimePromises.shift())await t}destroy(){this._handlerDeferred.resolve()}async _ensureResponseSafeToCache(t){let e=t,n=!1;for(const r of this.iterateCallbacks("cacheWillUpdate"))if(e=await r({request:this.request,response:e,event:this.event})||void 0,n=!0,!e)break;return n||e&&200!==e.status&&(e=void 0),e}}class R{constructor(t={}){this.cacheName=h.getRuntimeName(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,n="string"===typeof t.request?new Request(t.request):t.request,r="params"in t?t.params:void 0,o=new E(this,{event:e,request:n,params:r}),i=this._getResponse(o,n,e),a=this._awaitComplete(i,o,n,e);return[i,a]}async _getResponse(t,e,n){await t.runCallbacks("handlerWillStart",{event:n,request:e});let r=void 0;try{if(r=await this._handle(e,t),!r||"error"===r.type)throw new c("no-response",{url:e.url})}catch(o){for(const i of t.iterateCallbacks("handlerDidError"))if(r=await i({error:o,event:n,request:e}),r)break;if(!r)throw o}for(const i of t.iterateCallbacks("handlerWillRespond"))r=await i({event:n,request:e,response:r});return r}async _awaitComplete(t,e,n,r){let o,i;try{o=await t}catch(i){}try{await e.runCallbacks("handlerDidRespond",{event:r,request:n,response:o}),await e.doneWaiting()}catch(a){i=a}if(await e.runCallbacks("handlerDidComplete",{event:r,request:n,response:o,error:i}),e.destroy(),i)throw i}}class S extends R{constructor(t={}){t.cacheName=h.getPrecacheName(t.cacheName),super(t),this._fallbackToNetwork=!1!==t.fallbackToNetwork,this.plugins.push(S.copyRedirectedCacheableResponsesPlugin)}async _handle(t,e){const n=await e.cacheMatch(t);return n||(e.event&&"install"===e.event.type?await this._handleInstall(t,e):await this._handleFetch(t,e))}async _handleFetch(t,e){let n;if(!this._fallbackToNetwork)throw new c("missing-precache-entry",{cacheName:this.cacheName,url:t.url});return n=await e.fetch(t),n}async _handleInstall(t,e){this._useDefaultCacheabilityPluginIfNeeded();const n=await e.fetch(t),r=await e.cachePut(t,n.clone());if(!r)throw new c("bad-precaching-response",{url:t.url,status:n.status});return n}_useDefaultCacheabilityPluginIfNeeded(){let t=null,e=0;for(const[n,r]of this.plugins.entries())r!==S.copyRedirectedCacheableResponsesPlugin&&(r===S.defaultPrecacheCacheabilityPlugin&&(t=n),r.cacheWillUpdate&&e++);0===e?this.plugins.push(S.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}S.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:t}){return!t||t.status>=400?null:t}},S.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:t}){return t.redirected?await d(t):t}};n("e6d2");const O="GET",P=t=>t&&"object"===typeof t?t:{handle:t};class N{constructor(t,e,n=O){this.handler=P(e),this.match=t,this.method=n}setCatchHandler(t){this.catchHandler=P(t)}}class T extends N{constructor(t,e,n){const r=({url:e})=>{const n=t.exec(e.href);if(n&&(e.origin===location.origin||0===n.index))return n.slice(1)};super(r,e,n)}}class j{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",t=>{const{request:e}=t,n=this.handleRequest({request:e,event:t});n&&t.respondWith(n)})}addCacheListener(){self.addEventListener("message",t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data;0;const n=Promise.all(e.urlsToCache.map(e=>{"string"===typeof e&&(e=[e]);const n=new Request(...e);return this.handleRequest({request:n,event:t})}));t.waitUntil(n),t.ports&&t.ports[0]&&n.then(()=>t.ports[0].postMessage(!0))}})}handleRequest({request:t,event:e}){const n=new URL(t.url,location.href);if(!n.protocol.startsWith("http"))return void 0;const r=n.origin===location.origin,{params:o,route:i}=this.findMatchingRoute({event:e,request:t,sameOrigin:r,url:n});let a=i&&i.handler;const c=t.method;if(!a&&this._defaultHandlerMap.has(c)&&(a=this._defaultHandlerMap.get(c)),!a)return void 0;let s;try{s=a.handle({url:n,request:t,event:e,params:o})}catch(l){s=Promise.reject(l)}const u=i&&i.catchHandler;return s instanceof Promise&&(this._catchHandler||u)&&(s=s.catch(async r=>{if(u){0;try{return await u.handle({url:n,request:t,event:e,params:o})}catch(i){r=i}}if(this._catchHandler)return this._catchHandler.handle({url:n,request:t,event:e});throw r})),s}findMatchingRoute({url:t,sameOrigin:e,request:n,event:r}){const o=this._routes.get(n.method)||[];for(const i of o){let o;const a=i.match({url:t,sameOrigin:e,request:n,event:r});if(a)return o=a,(Array.isArray(a)&&0===a.length||a.constructor===Object&&0===Object.keys(a).length||"boolean"===typeof a)&&(o=void 0),{route:i,params:o}}return{}}setDefaultHandler(t,e=O){this._defaultHandlerMap.set(e,P(t))}setCatchHandler(t){this._catchHandler=P(t)}registerRoute(t){this._routes.has(t.method)||this._routes.set(t.method,[]),this._routes.get(t.method).push(t)}unregisterRoute(t){if(!this._routes.has(t.method))throw new c("unregister-route-but-not-found-with-method",{method:t.method});const e=this._routes.get(t.method).indexOf(t);if(!(e>-1))throw new c("unregister-route-route-not-registered");this._routes.get(t.method).splice(e,1)}}let k;const C=()=>(k||(k=new j,k.addFetchListener(),k.addCacheListener()),k);function q(t,e,n){let r;if("string"===typeof t){const o=new URL(t,location.href);0;const i=({url:t})=>t.href===o.href;r=new N(i,e,n)}else if(t instanceof RegExp)r=new T(t,e,n);else if("function"===typeof t)r=new N(t,e,n);else{if(!(t instanceof N))throw new c("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});r=t}const o=C();return o.registerRoute(r),r}function A(t){const e=C();e.setCatchHandler(t)}class L extends R{async _handle(t,e){let n,r=await e.cacheMatch(t);if(r)0;else{0;try{r=await e.fetchAndCachePut(t)}catch(o){n=o}0}if(!r)throw new c("no-response",{url:t.url,error:n});return r}}const M={cacheWillUpdate:async({response:t})=>200===t.status||0===t.status?t:null};class U extends R{constructor(t={}){super(t),this.plugins.some(t=>"cacheWillUpdate"in t)||this.plugins.unshift(M),this._networkTimeoutSeconds=t.networkTimeoutSeconds||0}async _handle(t,e){const n=[];const r=[];let o;if(this._networkTimeoutSeconds){const{id:i,promise:a}=this._getTimeoutPromise({request:t,logs:n,handler:e});o=i,r.push(a)}const i=this._getNetworkPromise({timeoutId:o,request:t,logs:n,handler:e});r.push(i);const a=await e.waitUntil((async()=>await e.waitUntil(Promise.race(r))||await i)());if(!a)throw new c("no-response",{url:t.url});return a}_getTimeoutPromise({request:t,logs:e,handler:n}){let r;const o=new Promise(e=>{const o=async()=>{e(await n.cacheMatch(t))};r=setTimeout(o,1e3*this._networkTimeoutSeconds)});return{promise:o,id:r}}async _getNetworkPromise({timeoutId:t,request:e,logs:n,handler:r}){let o,i;try{i=await r.fetchAndCachePut(e)}catch(a){o=a}return t&&clearTimeout(t),!o&&i||(i=await r.cacheMatch(e)),i}}class I extends R{constructor(t){super(t),this.plugins.some(t=>"cacheWillUpdate"in t)||this.plugins.unshift(M)}async _handle(t,e){const n=e.fetchAndCachePut(t).catch(()=>{});let r,o=await e.cacheMatch(t);if(o)0;else{0;try{o=await n}catch(i){r=i}}if(!o)throw new c("no-response",{url:t.url,error:r});return o}}function D(t){t.then(()=>{})}class F{constructor(t,e,{onupgradeneeded:n,onversionchange:r}={}){this._db=null,this._name=t,this._version=e,this._onupgradeneeded=n,this._onversionchange=r||(()=>this.close())}get db(){return this._db}async open(){if(!this._db)return this._db=await new Promise((t,e)=>{let n=!1;setTimeout(()=>{n=!0,e(new Error("The open request was blocked and timed out"))},this.OPEN_TIMEOUT);const r=indexedDB.open(this._name,this._version);r.onerror=()=>e(r.error),r.onupgradeneeded=t=>{n?(r.transaction.abort(),r.result.close()):"function"===typeof this._onupgradeneeded&&this._onupgradeneeded(t)},r.onsuccess=()=>{const e=r.result;n?e.close():(e.onversionchange=this._onversionchange.bind(this),t(e))}}),this}async getKey(t,e){return(await this.getAllKeys(t,e,1))[0]}async getAll(t,e,n){return await this.getAllMatching(t,{query:e,count:n})}async getAllKeys(t,e,n){const r=await this.getAllMatching(t,{query:e,count:n,includeKeys:!0});return r.map(t=>t.key)}async getAllMatching(t,{index:e,query:n=null,direction:r="next",count:o,includeKeys:i=!1}={}){return await this.transaction([t],"readonly",(a,c)=>{const s=a.objectStore(t),u=e?s.index(e):s,l=[],h=u.openCursor(n,r);h.onsuccess=()=>{const t=h.result;t?(l.push(i?t:t.value),o&&l.length>=o?c(l):t.continue()):c(l)}})}async transaction(t,e,n){return await this.open(),await new Promise((r,o)=>{const i=this._db.transaction(t,e);i.onabort=()=>o(i.error),i.oncomplete=()=>r(),n(i,t=>r(t))})}async _call(t,e,n,...r){const o=(n,o)=>{const i=n.objectStore(e),a=i[t].apply(i,r);a.onsuccess=()=>o(a.result)};return await this.transaction([e],n,o)}close(){this._db&&(this._db.close(),this._db=null)}}F.prototype.OPEN_TIMEOUT=2e3;const W={readonly:["get","count","getKey","getAll","getAllKeys"],readwrite:["add","put","clear","delete"]};for(const[X,Z]of Object.entries(W))for(const t of Z)t in IDBObjectStore.prototype&&(F.prototype[t]=async function(e,...n){return await this._call(t,e,X,...n)});const H=async t=>{await new Promise((e,n)=>{const r=indexedDB.deleteDatabase(t);r.onerror=()=>{n(r.error)},r.onblocked=()=>{n(new Error("Delete blocked"))},r.onsuccess=()=>{e()}})};n("d8a5");const K="workbox-expiration",G="cache-entries",B=t=>{const e=new URL(t,location.href);return e.hash="",e.href};class z{constructor(t){this._cacheName=t,this._db=new F(K,1,{onupgradeneeded:t=>this._handleUpgrade(t)})}_handleUpgrade(t){const e=t.target.result,n=e.createObjectStore(G,{keyPath:"id"});n.createIndex("cacheName","cacheName",{unique:!1}),n.createIndex("timestamp","timestamp",{unique:!1}),H(this._cacheName)}async setTimestamp(t,e){t=B(t);const n={url:t,timestamp:e,cacheName:this._cacheName,id:this._getId(t)};await this._db.put(G,n)}async getTimestamp(t){const e=await this._db.get(G,this._getId(t));return e.timestamp}async expireEntries(t,e){const n=await this._db.transaction(G,"readwrite",(n,r)=>{const o=n.objectStore(G),i=o.index("timestamp").openCursor(null,"prev"),a=[];let c=0;i.onsuccess=()=>{const n=i.result;if(n){const r=n.value;r.cacheName===this._cacheName&&(t&&r.timestamp=e?a.push(n.value):c++),n.continue()}else r(a)}}),r=[];for(const o of n)await this._db.delete(G,o.id),r.push(o.url);return r}_getId(t){return this._cacheName+"|"+B(t)}}class Y{constructor(t,e={}){this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=e.maxEntries,this._maxAgeSeconds=e.maxAgeSeconds,this._matchOptions=e.matchOptions,this._cacheName=t,this._timestampModel=new z(t)}async expireEntries(){if(this._isRunning)return void(this._rerunRequested=!0);this._isRunning=!0;const t=this._maxAgeSeconds?Date.now()-1e3*this._maxAgeSeconds:0,e=await this._timestampModel.expireEntries(t,this._maxEntries),n=await self.caches.open(this._cacheName);for(const r of e)await n.delete(r,this._matchOptions);this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,D(this.expireEntries()))}async updateTimestamp(t){await this._timestampModel.setTimestamp(t,Date.now())}async isURLExpired(t){if(this._maxAgeSeconds){const e=await this._timestampModel.getTimestamp(t),n=Date.now()-1e3*this._maxAgeSeconds;return e{if(!r)return null;const o=this._isResponseDateFresh(r),i=this._getCacheExpiration(n);D(i.expireEntries());const a=i.updateTimestamp(e.url);if(t)try{t.waitUntil(a)}catch(c){0}return o?r:null},this.cacheDidUpdate=async({cacheName:t,request:e})=>{const n=this._getCacheExpiration(t);await n.updateTimestamp(e.url),await n.expireEntries()},this._config=t,this._maxAgeSeconds=t.maxAgeSeconds,this._cacheExpirations=new Map,t.purgeOnQuotaError&&$(()=>this.deleteCacheAndMetadata())}_getCacheExpiration(t){if(t===h.getRuntimeName())throw new c("expire-custom-caches-only");let e=this._cacheExpirations.get(t);return e||(e=new Y(t,this._config),this._cacheExpirations.set(t,e)),e}_isResponseDateFresh(t){if(!this._maxAgeSeconds)return!0;const e=this._getDateHeaderTimestamp(t);if(null===e)return!0;const n=Date.now();return e>=n-1e3*this._maxAgeSeconds}_getDateHeaderTimestamp(t){if(!t.headers.has("date"))return null;const e=t.headers.get("date"),n=new Date(e),r=n.getTime();return isNaN(r)?null:r}async deleteCacheAndMetadata(){for(const[t,e]of this._cacheExpirations)await self.caches.delete(t),await e.delete();this._cacheExpirations=new Map}}var V="offline-html",J="/offline/";self.addEventListener("install",function(){var t=o(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:e.waitUntil(caches.open(V).then((function(t){return t.add(new Request(J,{cache:"reload"}))})));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()),[{'url':'static/vue/css/chunk-vendors.css'},{'url':'static/vue/import_response_view.html'},{'url':'static/vue/js/chunk-vendors.js'},{'url':'static/vue/js/import_response_view.js'},{'url':'static/vue/js/offline_view.js'},{'url':'static/vue/js/recipe_search_view.js'},{'url':'static/vue/js/recipe_view.js'},{'url':'static/vue/js/supermarket_view.js'},{'url':'static/vue/js/user_file_view.js'},{'url':'static/vue/manifest.json'},{'url':'static/vue/offline_view.html'},{'url':'static/vue/recipe_search_view.html'},{'url':'static/vue/recipe_view.html'},{'url':'static/vue/supermarket_view.html'},{'url':'static/vue/user_file_view.html'}],A((function(t){var e=t.event;switch(e.request.destination){case"document":return console.log("Triggered fallback HTML"),caches.open(V).then((function(t){return t.match(J)}));default:return console.log("Triggered response ERROR"),Response.error()}})),q((function(t){var e=t.request;return"image"===e.destination}),new L({cacheName:"images",plugins:[new Q({maxEntries:20})]})),q((function(t){var e=t.request;return"script"===e.destination||"style"===e.destination}),new I({cacheName:"assets"})),q(new RegExp("jsreverse"),new I({cacheName:"assets"})),q(new RegExp("jsi18n"),new I({cacheName:"assets"})),q(new RegExp("api/recipe/([0-9]+)"),new U({cacheName:"api-recipe",plugins:[new Q({maxEntries:50})]})),q(new RegExp("api/*"),new U({cacheName:"api",plugins:[new Q({maxEntries:50})]})),q((function(t){var e=t.request;return"document"===e.destination}),new U({cacheName:"html",plugins:[new Q({maxAgeSeconds:2592e3,maxEntries:50})]}))},"25f0":function(t,e,n){"use strict";var r=n("6eeb"),o=n("825a"),i=n("d039"),a=n("ad6d"),c="toString",s=RegExp.prototype,u=s[c],l=i((function(){return"/a/b"!=u.call({source:"a",flags:"b"})})),h=u.name!=c;(l||h)&&r(RegExp.prototype,c,(function(){var t=o(this),e=String(t.source),n=t.flags,r=String(void 0===n&&t instanceof RegExp&&!("flags"in s)?a.call(t):n);return"/"+e+"/"+r}),{unsafe:!0})},2626:function(t,e,n){"use strict";var r=n("d066"),o=n("9bf2"),i=n("b622"),a=n("83ab"),c=i("species");t.exports=function(t){var e=r(t),n=o.f;a&&e&&!e[c]&&n(e,c,{configurable:!0,get:function(){return this}})}},"2d00":function(t,e,n){var r,o,i=n("da84"),a=n("342f"),c=i.process,s=c&&c.versions,u=s&&s.v8;u?(r=u.split("."),o=r[0]+r[1]):a&&(r=a.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/),r&&(o=r[1]))),t.exports=o&&+o},"342f":function(t,e,n){var r=n("d066");t.exports=r("navigator","userAgent")||""},"3bbe":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},"428f":function(t,e,n){var r=n("da84");t.exports=r},"44ad":function(t,e,n){var r=n("d039"),o=n("c6b6"),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},"44e7":function(t,e,n){var r=n("861d"),o=n("c6b6"),i=n("b622"),a=i("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[a])?!!e:"RegExp"==o(t))}},"466d":function(t,e,n){"use strict";var r=n("d784"),o=n("825a"),i=n("50c4"),a=n("1d80"),c=n("8aa5"),s=n("14c3");r("match",1,(function(t,e,n){return[function(e){var n=a(this),r=void 0==e?void 0:e[t];return void 0!==r?r.call(e,n):new RegExp(e)[t](String(n))},function(t){var r=n(e,t,this);if(r.done)return r.value;var a=o(t),u=String(this);if(!a.global)return s(a,u);var l=a.unicode;a.lastIndex=0;var h,f=[],p=0;while(null!==(h=s(a,u))){var d=String(h[0]);f[p]=d,""===d&&(a.lastIndex=c(u,i(a.lastIndex),l)),p++}return 0===p?null:f}]}))},4930:function(t,e,n){var r=n("605d"),o=n("2d00"),i=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!i((function(){return!Symbol.sham&&(r?38===o:o>37&&o<41)}))},"4d63":function(t,e,n){var r=n("83ab"),o=n("da84"),i=n("94ca"),a=n("7156"),c=n("9bf2").f,s=n("241c").f,u=n("44e7"),l=n("ad6d"),h=n("9f7f"),f=n("6eeb"),p=n("d039"),d=n("69f3").enforce,g=n("2626"),y=n("b622"),m=y("match"),v=o.RegExp,w=v.prototype,b=/a/g,x=/a/g,_=new v(b)!==b,E=h.UNSUPPORTED_Y,R=r&&i("RegExp",!_||E||p((function(){return x[m]=!1,v(b)!=b||v(x)==x||"/a/i"!=v(b,"i")})));if(R){var S=function(t,e){var n,r=this instanceof S,o=u(t),i=void 0===e;if(!r&&o&&t.constructor===S&&i)return t;_?o&&!i&&(t=t.source):t instanceof S&&(i&&(e=l.call(t)),t=t.source),E&&(n=!!e&&e.indexOf("y")>-1,n&&(e=e.replace(/y/g,"")));var c=a(_?new v(t,e):v(t,e),r?this:w,S);if(E&&n){var s=d(c);s.sticky=!0}return c},O=function(t){t in S||c(S,t,{configurable:!0,get:function(){return v[t]},set:function(e){v[t]=e}})},P=s(v),N=0;while(P.length>N)O(P[N++]);w.constructor=S,S.prototype=w,f(o,"RegExp",S)}g("RegExp")},"4d64":function(t,e,n){var r=n("fc6a"),o=n("50c4"),i=n("23cb"),a=function(t){return function(e,n,a){var c,s=r(e),u=o(s.length),l=i(a,u);if(t&&n!=n){while(u>l)if(c=s[l++],c!=c)return!0}else for(;u>l;l++)if((t||l in s)&&s[l]===n)return t||l||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},"50c4":function(t,e,n){var r=n("a691"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},5135:function(t,e,n){var r=n("7b0b"),o={}.hasOwnProperty;t.exports=function(t,e){return o.call(r(t),e)}},5692:function(t,e,n){var r=n("c430"),o=n("c6cd");(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.11.0",mode:r?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},"56ef":function(t,e,n){var r=n("d066"),o=n("241c"),i=n("7418"),a=n("825a");t.exports=r("Reflect","ownKeys")||function(t){var e=o.f(a(t)),n=i.f;return n?e.concat(n(t)):e}},"5c6c":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"605d":function(t,e,n){var r=n("c6b6"),o=n("da84");t.exports="process"==r(o.process)},6547:function(t,e,n){var r=n("a691"),o=n("1d80"),i=function(t){return function(e,n){var i,a,c=String(o(e)),s=r(n),u=c.length;return s<0||s>=u?t?"":void 0:(i=c.charCodeAt(s),i<55296||i>56319||s+1===u||(a=c.charCodeAt(s+1))<56320||a>57343?t?c.charAt(s):i:t?c.slice(s,s+2):a-56320+(i-55296<<10)+65536)}};t.exports={codeAt:i(!1),charAt:i(!0)}},"69f3":function(t,e,n){var r,o,i,a=n("7f9a"),c=n("da84"),s=n("861d"),u=n("9112"),l=n("5135"),h=n("c6cd"),f=n("f772"),p=n("d012"),d="Object already initialized",g=c.WeakMap,y=function(t){return i(t)?o(t):r(t,{})},m=function(t){return function(e){var n;if(!s(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}};if(a){var v=h.state||(h.state=new g),w=v.get,b=v.has,x=v.set;r=function(t,e){if(b.call(v,t))throw new TypeError(d);return e.facade=t,x.call(v,t,e),e},o=function(t){return w.call(v,t)||{}},i=function(t){return b.call(v,t)}}else{var _=f("state");p[_]=!0,r=function(t,e){if(l(t,_))throw new TypeError(d);return e.facade=t,u(t,_,e),e},o=function(t){return l(t,_)?t[_]:{}},i=function(t){return l(t,_)}}t.exports={set:r,get:o,has:i,enforce:y,getterFor:m}},"6aa8":function(t,e,n){"use strict";try{self["workbox:strategies:6.1.5"]&&_()}catch(r){}},"6eeb":function(t,e,n){var r=n("da84"),o=n("9112"),i=n("5135"),a=n("ce4e"),c=n("8925"),s=n("69f3"),u=s.get,l=s.enforce,h=String(String).split("String");(t.exports=function(t,e,n,c){var s,u=!!c&&!!c.unsafe,f=!!c&&!!c.enumerable,p=!!c&&!!c.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||o(n,"name",e),s=l(n),s.source||(s.source=h.join("string"==typeof e?e:""))),t!==r?(u?!p&&t[e]&&(f=!0):delete t[e],f?t[e]=n:o(t,e,n)):f?t[e]=n:a(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&u(this).source||c(this)}))},7156:function(t,e,n){var r=n("861d"),o=n("d2bb");t.exports=function(t,e,n){var i,a;return o&&"function"==typeof(i=e.constructor)&&i!==n&&r(a=i.prototype)&&a!==n.prototype&&o(t,a),t}},7418:function(t,e){e.f=Object.getOwnPropertySymbols},7839:function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7b0b":function(t,e,n){var r=n("1d80");t.exports=function(t){return Object(r(t))}},"7f9a":function(t,e,n){var r=n("da84"),o=n("8925"),i=r.WeakMap;t.exports="function"===typeof i&&/native code/.test(o(i))},"825a":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},"83ab":function(t,e,n){var r=n("d039");t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},"861d":function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},8925:function(t,e,n){var r=n("c6cd"),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(t){return o.call(t)}),t.exports=r.inspectSource},"8aa5":function(t,e,n){"use strict";var r=n("6547").charAt;t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},"90e3":function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++n+r).toString(36)}},9112:function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("5c6c");t.exports=r?function(t,e,n){return o.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},9263:function(t,e,n){"use strict";var r=n("ad6d"),o=n("9f7f"),i=n("5692"),a=RegExp.prototype.exec,c=i("native-string-replace",String.prototype.replace),s=a,u=function(){var t=/a/,e=/b*/g;return a.call(t,"a"),a.call(e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),l=o.UNSUPPORTED_Y||o.BROKEN_CARET,h=void 0!==/()??/.exec("")[1],f=u||h||l;f&&(s=function(t){var e,n,o,i,s=this,f=l&&s.sticky,p=r.call(s),d=s.source,g=0,y=t;return f&&(p=p.replace("y",""),-1===p.indexOf("g")&&(p+="g"),y=String(t).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==t[s.lastIndex-1])&&(d="(?: "+d+")",y=" "+y,g++),n=new RegExp("^(?:"+d+")",p)),h&&(n=new RegExp("^"+d+"$(?!\\s)",p)),u&&(e=s.lastIndex),o=a.call(f?n:s,y),f?o?(o.input=o.input.slice(g),o[0]=o[0].slice(g),o.index=s.lastIndex,s.lastIndex+=o[0].length):s.lastIndex=0:u&&o&&(s.lastIndex=s.global?o.index+o[0].length:e),h&&o&&o.length>1&&c.call(o[0],n,(function(){for(i=1;i=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=r.call(a,"catchLoc"),u=r.call(a,"finallyLoc");if(s&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),N(n),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;N(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:j(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),g}},t}(t.exports);try{regeneratorRuntime=r}catch(o){Function("r","regeneratorRuntime = r")(r)}},"9bf2":function(t,e,n){var r=n("83ab"),o=n("0cfb"),i=n("825a"),a=n("c04e"),c=Object.defineProperty;e.f=r?c:function(t,e,n){if(i(t),e=a(e,!0),i(n),o)try{return c(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},"9f7f":function(t,e,n){"use strict";var r=n("d039");function o(t,e){return RegExp(t,e)}e.UNSUPPORTED_Y=r((function(){var t=o("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),e.BROKEN_CARET=r((function(){var t=o("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},a691:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},ac1f:function(t,e,n){"use strict";var r=n("23e7"),o=n("9263");r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},ad6d:function(t,e,n){"use strict";var r=n("825a");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},b041:function(t,e,n){"use strict";var r=n("00ee"),o=n("f5df");t.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},b622:function(t,e,n){var r=n("da84"),o=n("5692"),i=n("5135"),a=n("90e3"),c=n("4930"),s=n("fdbf"),u=o("wks"),l=r.Symbol,h=s?l:l&&l.withoutSetter||a;t.exports=function(t){return i(u,t)&&(c||"string"==typeof u[t])||(c&&i(l,t)?u[t]=l[t]:u[t]=h("Symbol."+t)),u[t]}},c04e:function(t,e,n){var r=n("861d");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},c430:function(t,e){t.exports=!1},c6b6:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},c6cd:function(t,e,n){var r=n("da84"),o=n("ce4e"),i="__core-js_shared__",a=r[i]||o(i,{});t.exports=a},c700:function(t,e,n){"use strict";try{self["workbox:precaching:6.1.5"]&&_()}catch(r){}},c8ba:function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}t.exports=n},ca84:function(t,e,n){var r=n("5135"),o=n("fc6a"),i=n("4d64").indexOf,a=n("d012");t.exports=function(t,e){var n,c=o(t),s=0,u=[];for(n in c)!r(a,n)&&r(c,n)&&u.push(n);while(e.length>s)r(c,n=e[s++])&&(~i(u,n)||u.push(n));return u}},cc12:function(t,e,n){var r=n("da84"),o=n("861d"),i=r.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},ce4e:function(t,e,n){var r=n("da84"),o=n("9112");t.exports=function(t,e){try{o(r,t,e)}catch(n){r[t]=e}return e}},d012:function(t,e){t.exports={}},d039:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},d066:function(t,e,n){var r=n("428f"),o=n("da84"),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},d1e7:function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},d2bb:function(t,e,n){var r=n("825a"),o=n("3bbe");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,t.call(n,[]),e=n instanceof Array}catch(i){}return function(n,i){return r(n),o(i),e?t.call(n,i):n.__proto__=i,n}}():void 0)},d3b7:function(t,e,n){var r=n("00ee"),o=n("6eeb"),i=n("b041");r||o(Object.prototype,"toString",i,{unsafe:!0})},d784:function(t,e,n){"use strict";n("ac1f");var r=n("6eeb"),o=n("d039"),i=n("b622"),a=n("9112"),c=i("species"),s=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),u=function(){return"$0"==="a".replace(/./,"$0")}(),l=i("replace"),h=function(){return!!/./[l]&&""===/./[l]("a","$0")}(),f=!o((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));t.exports=function(t,e,n,l){var p=i(t),d=!o((function(){var e={};return e[p]=function(){return 7},7!=""[t](e)})),g=d&&!o((function(){var e=!1,n=/a/;return"split"===t&&(n={},n.constructor={},n.constructor[c]=function(){return n},n.flags="",n[p]=/./[p]),n.exec=function(){return e=!0,null},n[p](""),!e}));if(!d||!g||"replace"===t&&(!s||!u||h)||"split"===t&&!f){var y=/./[p],m=n(p,""[t],(function(t,e,n,r,o){return e.exec===RegExp.prototype.exec?d&&!o?{done:!0,value:y.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:h}),v=m[0],w=m[1];r(String.prototype,t,v),r(RegExp.prototype,p,2==e?function(t,e){return w.call(t,this,e)}:function(t){return w.call(t,this)})}l&&a(RegExp.prototype[p],"sham",!0)}},d8a5:function(t,e,n){"use strict";try{self["workbox:expiration:6.1.5"]&&_()}catch(r){}},da84:function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||function(){return this}()||Function("return this")()}).call(this,n("c8ba"))},e6d2:function(t,e,n){"use strict";try{self["workbox:routing:6.1.5"]&&_()}catch(r){}},e893:function(t,e,n){var r=n("5135"),o=n("56ef"),i=n("06cf"),a=n("9bf2");t.exports=function(t,e){for(var n=o(e),c=a.f,s=i.f,u=0;u + +
+ + + + +
+
+ + + {{ current_file_size_mb.toFixed(2) }} / {{ max_file_size_mb }} MB + + +
+ +
+ +
+
+ + + + + + + + + + + +
{{ $t('Name') }}{{ $t('Size') }} (MB)
{{ f.name }}{{ f.file_size_kb / 1000 }}
+
+ +
+ +
+ + + + + diff --git a/vue/src/apps/UserFileView/main.js b/vue/src/apps/UserFileView/main.js new file mode 100644 index 000000000..6493ae903 --- /dev/null +++ b/vue/src/apps/UserFileView/main.js @@ -0,0 +1,10 @@ +import Vue from 'vue' +import App from './UserFileView.vue' +import i18n from '@/i18n' + +Vue.config.productionTip = false + +new Vue({ + i18n, + render: h => h(App), +}).$mount('#app') diff --git a/vue/src/locales/en.json b/vue/src/locales/en.json index 1534603b9..e85f3e8f2 100644 --- a/vue/src/locales/en.json +++ b/vue/src/locales/en.json @@ -48,6 +48,8 @@ "Waiting": "Waiting", "Preparation": "Preparation", "External": "External", + "Size": "Size", + "Files": "Files", "Edit": "Edit", "Open": "Open", "Save": "Save", diff --git a/vue/src/utils/openapi/api.ts b/vue/src/utils/openapi/api.ts index 28c4fc640..d3725ec41 100644 --- a/vue/src/utils/openapi/api.ts +++ b/vue/src/utils/openapi/api.ts @@ -1772,6 +1772,37 @@ export interface Unit { */ description?: string | null; } +/** + * + * @export + * @interface UserFile + */ +export interface UserFile { + /** + * + * @type {number} + * @memberof UserFile + */ + id?: number; + /** + * + * @type {string} + * @memberof UserFile + */ + name: string; + /** + * + * @type {number} + * @memberof UserFile + */ + file_size_kb?: number; + /** + * + * @type {any} + * @memberof UserFile + */ + file: any; +} /** * * @export @@ -1864,11 +1895,11 @@ export interface UserPreference { * @enum {string} */ export enum UserPreferenceThemeEnum { + Tandoor = 'TANDOOR', Bootstrap = 'BOOTSTRAP', Darkly = 'DARKLY', Flatly = 'FLATLY', - Superhero = 'SUPERHERO', - Tandoor = 'TANDOOR' + Superhero = 'SUPERHERO' } /** * @export @@ -2601,6 +2632,39 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) options: localVarRequestOptions, }; }, + /** + * + * @param {UserFile} [userFile] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createUserFile: async (userFile?: UserFile, options: any = {}): Promise => { + const localVarPath = `/api/user-file/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(userFile, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @param {UserPreference} [userPreference] @@ -3318,6 +3382,39 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this user file. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyUserFile: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('destroyUserFile', 'id', id) + const localVarPath = `/api/user-file/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; @@ -4090,6 +4187,35 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listUserFiles: async (options: any = {}): Promise => { + const localVarPath = `/api/user-file/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; @@ -4926,6 +5052,43 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) options: localVarRequestOptions, }; }, + /** + * + * @param {string} id A unique integer value identifying this user file. + * @param {UserFile} [userFile] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateUserFile: async (id: string, userFile?: UserFile, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('partialUpdateUserFile', 'id', id) + const localVarPath = `/api/user-file/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(userFile, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @param {string} user A unique value identifying this user preference. @@ -5717,6 +5880,39 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this user file. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveUserFile: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('retrieveUserFile', 'id', id) + const localVarPath = `/api/user-file/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; @@ -6532,6 +6728,43 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) options: localVarRequestOptions, }; }, + /** + * + * @param {string} id A unique integer value identifying this user file. + * @param {UserFile} [userFile] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateUserFile: async (id: string, userFile?: UserFile, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('updateUserFile', 'id', id) + const localVarPath = `/api/user-file/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(userFile, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @param {string} user A unique value identifying this user preference. @@ -6816,6 +7049,16 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.createUnit(unit, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {UserFile} [userFile] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createUserFile(userFile?: UserFile, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createUserFile(userFile, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {UserPreference} [userPreference] @@ -7036,6 +7279,16 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.destroyUnit(id, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {string} id A unique integer value identifying this user file. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async destroyUserFile(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.destroyUserFile(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} user A unique value identifying this user preference. @@ -7267,6 +7520,15 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.listUnits(options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listUserFiles(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listUserFiles(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {*} [options] Override http request option. @@ -7514,6 +7776,17 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.partialUpdateUnit(id, unit, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {string} id A unique integer value identifying this user file. + * @param {UserFile} [userFile] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async partialUpdateUserFile(id: string, userFile?: UserFile, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.partialUpdateUserFile(id, userFile, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} user A unique value identifying this user preference. @@ -7756,6 +8029,16 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.retrieveUser(id, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {string} id A unique integer value identifying this user file. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async retrieveUserFile(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.retrieveUserFile(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} user A unique value identifying this user preference. @@ -7996,6 +8279,17 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.updateUnit(id, unit, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {string} id A unique integer value identifying this user file. + * @param {UserFile} [userFile] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async updateUserFile(id: string, userFile?: UserFile, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.updateUserFile(id, userFile, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} user A unique value identifying this user preference. @@ -8208,6 +8502,15 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: createUnit(unit?: Unit, options?: any): AxiosPromise { return localVarFp.createUnit(unit, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {UserFile} [userFile] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createUserFile(userFile?: UserFile, options?: any): AxiosPromise { + return localVarFp.createUserFile(userFile, options).then((request) => request(axios, basePath)); + }, /** * * @param {UserPreference} [userPreference] @@ -8406,6 +8709,15 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: destroyUnit(id: string, options?: any): AxiosPromise { return localVarFp.destroyUnit(id, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {string} id A unique integer value identifying this user file. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyUserFile(id: string, options?: any): AxiosPromise { + return localVarFp.destroyUserFile(id, options).then((request) => request(axios, basePath)); + }, /** * * @param {string} user A unique value identifying this user preference. @@ -8613,6 +8925,14 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: listUnits(options?: any): AxiosPromise> { return localVarFp.listUnits(options).then((request) => request(axios, basePath)); }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listUserFiles(options?: any): AxiosPromise> { + return localVarFp.listUserFiles(options).then((request) => request(axios, basePath)); + }, /** * * @param {*} [options] Override http request option. @@ -8837,6 +9157,16 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: partialUpdateUnit(id: string, unit?: Unit, options?: any): AxiosPromise { return localVarFp.partialUpdateUnit(id, unit, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {string} id A unique integer value identifying this user file. + * @param {UserFile} [userFile] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateUserFile(id: string, userFile?: UserFile, options?: any): AxiosPromise { + return localVarFp.partialUpdateUserFile(id, userFile, options).then((request) => request(axios, basePath)); + }, /** * * @param {string} user A unique value identifying this user preference. @@ -9055,6 +9385,15 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: retrieveUser(id: string, options?: any): AxiosPromise { return localVarFp.retrieveUser(id, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {string} id A unique integer value identifying this user file. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveUserFile(id: string, options?: any): AxiosPromise { + return localVarFp.retrieveUserFile(id, options).then((request) => request(axios, basePath)); + }, /** * * @param {string} user A unique value identifying this user preference. @@ -9273,6 +9612,16 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: updateUnit(id: string, unit?: Unit, options?: any): AxiosPromise { return localVarFp.updateUnit(id, unit, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {string} id A unique integer value identifying this user file. + * @param {UserFile} [userFile] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateUserFile(id: string, userFile?: UserFile, options?: any): AxiosPromise { + return localVarFp.updateUserFile(id, userFile, options).then((request) => request(axios, basePath)); + }, /** * * @param {string} user A unique value identifying this user preference. @@ -9523,6 +9872,17 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).createUnit(unit, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {UserFile} [userFile] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public createUserFile(userFile?: UserFile, options?: any) { + return ApiApiFp(this.configuration).createUserFile(userFile, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {UserPreference} [userPreference] @@ -9765,6 +10125,17 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).destroyUnit(id, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {string} id A unique integer value identifying this user file. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public destroyUserFile(id: string, options?: any) { + return ApiApiFp(this.configuration).destroyUserFile(id, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} user A unique value identifying this user preference. @@ -10020,6 +10391,16 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).listUnits(options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public listUserFiles(options?: any) { + return ApiApiFp(this.configuration).listUserFiles(options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {*} [options] Override http request option. @@ -10290,6 +10671,18 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).partialUpdateUnit(id, unit, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {string} id A unique integer value identifying this user file. + * @param {UserFile} [userFile] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public partialUpdateUserFile(id: string, userFile?: UserFile, options?: any) { + return ApiApiFp(this.configuration).partialUpdateUserFile(id, userFile, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} user A unique value identifying this user preference. @@ -10556,6 +10949,17 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).retrieveUser(id, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {string} id A unique integer value identifying this user file. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public retrieveUserFile(id: string, options?: any) { + return ApiApiFp(this.configuration).retrieveUserFile(id, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} user A unique value identifying this user preference. @@ -10818,6 +11222,18 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).updateUnit(id, unit, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {string} id A unique integer value identifying this user file. + * @param {UserFile} [userFile] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public updateUserFile(id: string, userFile?: UserFile, options?: any) { + return ApiApiFp(this.configuration).updateUserFile(id, userFile, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} user A unique value identifying this user preference. diff --git a/vue/vue.config.js b/vue/vue.config.js index f5594dbd0..1e12e6018 100644 --- a/vue/vue.config.js +++ b/vue/vue.config.js @@ -21,6 +21,10 @@ const pages = { entry: './src/apps/SupermarketView/main.js', chunks: ['chunk-vendors'] }, + 'user_file_view': { + entry: './src/apps/UserFileView/main.js', + chunks: ['chunk-vendors'] + }, } module.exports = { diff --git a/vue/webpack-stats.json b/vue/webpack-stats.json index ccdc330c3..ba0d5eafa 100644 --- a/vue/webpack-stats.json +++ b/vue/webpack-stats.json @@ -1 +1 @@ -{"status":"done","chunks":{"recipe_search_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/recipe_search_view.js"],"recipe_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/recipe_view.js"],"offline_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/offline_view.js"],"import_response_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/import_response_view.js"],"supermarket_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/supermarket_view.js"]},"assets":{"../../templates/sw.js":{"name":"../../templates/sw.js","path":"..\\..\\templates\\sw.js"},"css/chunk-vendors.css":{"name":"css/chunk-vendors.css","path":"css\\chunk-vendors.css"},"js/chunk-vendors.js":{"name":"js/chunk-vendors.js","path":"js\\chunk-vendors.js"},"js/import_response_view.js":{"name":"js/import_response_view.js","path":"js\\import_response_view.js"},"js/offline_view.js":{"name":"js/offline_view.js","path":"js\\offline_view.js"},"js/recipe_search_view.js":{"name":"js/recipe_search_view.js","path":"js\\recipe_search_view.js"},"js/recipe_view.js":{"name":"js/recipe_view.js","path":"js\\recipe_view.js"},"js/supermarket_view.js":{"name":"js/supermarket_view.js","path":"js\\supermarket_view.js"},"recipe_search_view.html":{"name":"recipe_search_view.html","path":"recipe_search_view.html"},"recipe_view.html":{"name":"recipe_view.html","path":"recipe_view.html"},"offline_view.html":{"name":"offline_view.html","path":"offline_view.html"},"import_response_view.html":{"name":"import_response_view.html","path":"import_response_view.html"},"supermarket_view.html":{"name":"supermarket_view.html","path":"supermarket_view.html"},"manifest.json":{"name":"manifest.json","path":"manifest.json"}}} \ No newline at end of file +{"status":"done","chunks":{"recipe_search_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/recipe_search_view.js"],"recipe_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/recipe_view.js"],"offline_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/offline_view.js"],"import_response_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/import_response_view.js"],"supermarket_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/supermarket_view.js"],"user_file_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/user_file_view.js"]},"assets":{"../../templates/sw.js":{"name":"../../templates/sw.js","path":"..\\..\\templates\\sw.js"},"css/chunk-vendors.css":{"name":"css/chunk-vendors.css","path":"css\\chunk-vendors.css"},"js/chunk-vendors.js":{"name":"js/chunk-vendors.js","path":"js\\chunk-vendors.js"},"js/import_response_view.js":{"name":"js/import_response_view.js","path":"js\\import_response_view.js"},"js/offline_view.js":{"name":"js/offline_view.js","path":"js\\offline_view.js"},"js/recipe_search_view.js":{"name":"js/recipe_search_view.js","path":"js\\recipe_search_view.js"},"js/recipe_view.js":{"name":"js/recipe_view.js","path":"js\\recipe_view.js"},"js/supermarket_view.js":{"name":"js/supermarket_view.js","path":"js\\supermarket_view.js"},"js/user_file_view.js":{"name":"js/user_file_view.js","path":"js\\user_file_view.js"},"recipe_search_view.html":{"name":"recipe_search_view.html","path":"recipe_search_view.html"},"recipe_view.html":{"name":"recipe_view.html","path":"recipe_view.html"},"offline_view.html":{"name":"offline_view.html","path":"offline_view.html"},"import_response_view.html":{"name":"import_response_view.html","path":"import_response_view.html"},"supermarket_view.html":{"name":"supermarket_view.html","path":"supermarket_view.html"},"user_file_view.html":{"name":"user_file_view.html","path":"user_file_view.html"},"manifest.json":{"name":"manifest.json","path":"manifest.json"}}} \ No newline at end of file From 87e8268a43712fcf24127f52e991b7071f98a42e Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Tue, 8 Jun 2021 13:12:40 +0200 Subject: [PATCH 15/97] build sources --- cookbook/static/vue/js/import_response_view.js | 2 +- cookbook/static/vue/js/offline_view.js | 2 +- cookbook/static/vue/js/recipe_search_view.js | 2 +- cookbook/static/vue/js/recipe_view.js | 2 +- cookbook/static/vue/js/supermarket_view.js | 2 +- cookbook/static/vue/js/user_file_view.js | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cookbook/static/vue/js/import_response_view.js b/cookbook/static/vue/js/import_response_view.js index 58ae612f9..7c19b3d02 100644 --- a/cookbook/static/vue/js/import_response_view.js +++ b/cookbook/static/vue/js/import_response_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var n,a,c=t[0],s=t[1],u=t[2],p=0,h=[];p1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw"}')},d76c:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"row"},[r("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[r("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],o={name:"LoadingSpinner",props:{recipe:Object}},a=o,c=r("2877"),s=Object(c["a"])(a,n,i,!1,null,null,null);t["a"]=s.exports},edd4:function(e){e.exports=JSON.parse('{"import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return c})),r.d(t,"e",(function(){return s})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var c=(n+o)/(i+a);if(e===c){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var s=Math.floor(n/i);return[s,n-s*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var c={methods:{_:function(e){return s(e)}}};function s(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}}}); \ No newline at end of file +(function(e){function t(t){for(var n,a,c=t[0],s=t[1],u=t[2],p=0,h=[];p1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"row"},[r("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[r("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],o={name:"LoadingSpinner",props:{recipe:Object}},a=o,c=r("2877"),s=Object(c["a"])(a,n,i,!1,null,null,null);t["a"]=s.exports},edd4:function(e){e.exports=JSON.parse('{"import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return c})),r.d(t,"e",(function(){return s})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var c=(n+o)/(i+a);if(e===c){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var s=Math.floor(n/i);return[s,n-s*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var c={methods:{_:function(e){return s(e)}}};function s(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}}}); \ No newline at end of file diff --git a/cookbook/static/vue/js/offline_view.js b/cookbook/static/vue/js/offline_view.js index ed6b9065b..70da2bb8a 100644 --- a/cookbook/static/vue/js/offline_view.js +++ b/cookbook/static/vue/js/offline_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var r,i,s=t[0],c=t[1],l=t[2],f=0,u=[];f1){var a=r[1];t[a]=e(n)}})),t}r["default"].use(a["a"]),t["a"]=new a["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw"}')},da67:function(e,t,n){"use strict";n.r(t);n("e260"),n("e6cf"),n("cca6"),n("a79d");var r=n("a026"),a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"app"}},[n("label",[e._v(" "+e._s(e.$t("Search"))+" "),n("input",{directives:[{name:"model",rawName:"v-model",value:e.filter,expression:"filter"}],staticClass:"form-control",attrs:{type:"text"},domProps:{value:e.filter},on:{input:function(t){t.target.composing||(e.filter=t.target.value)}}})]),n("div",{staticClass:"row"},e._l(e.filtered_recipes,(function(t){return n("div",{key:t.id,staticClass:"col-md-3"},[n("b-card",{attrs:{title:t.name,tag:"article"}},[n("b-card-text",[n("span",{staticClass:"text-muted"},[e._v(e._s(e.formatDateTime(t.updated_at)))]),e._v(" "+e._s(t.description)+" ")]),n("b-button",{attrs:{href:e.resolveDjangoUrl("view_recipe",t.id),variant:"primary"}},[e._v(e._s(e.$t("Open")))])],1)],1)})),0)])},o=[],i=(n("159b"),n("caad"),n("2532"),n("b0c0"),n("4de4"),n("d3b7"),n("ddb0"),n("ac1f"),n("466d"),n("5f5b")),s=(n("2dd8"),n("fa7d")),c=n("c1df"),l=n.n(c);r["default"].use(i["a"]),r["default"].prototype.moment=l.a;var d={name:"OfflineView",mixins:[s["b"]],computed:{filtered_recipes:function(){var e=this,t={};return this.recipes.forEach((function(n){n.name.toLowerCase().includes(e.filter.toLowerCase())&&(n.id in t?n.updated_at>t[n.id].updated_at&&(t[n.id]=n):t[n.id]=n)})),t}},data:function(){return{recipes:[],filter:""}},mounted:function(){this.loadRecipe()},methods:{formatDateTime:function(e){return l.a.locale(window.navigator.language),l()(e).format("LLL")},loadRecipe:function(){var e=this;caches.open("api-recipe").then((function(t){t.keys().then((function(t){t.forEach((function(t){caches.match(t).then((function(t){t.json().then((function(t){e.recipes.push(t)}))}))}))}))}))}}},f=d,u=n("2877"),p=Object(u["a"])(f,a,o,!1,null,null,null),g=p.exports,b=n("9225");r["default"].config.productionTip=!1,new r["default"]({i18n:b["a"],render:function(e){return e(g)}}).$mount("#app")},edd4:function(e){e.exports=JSON.parse('{"import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information"}')},fa7d:function(e,t,n){"use strict";n.d(t,"c",(function(){return o})),n.d(t,"f",(function(){return i})),n.d(t,"a",(function(){return s})),n.d(t,"e",(function(){return c})),n.d(t,"b",(function(){return l})),n.d(t,"g",(function(){return d})),n.d(t,"d",(function(){return u}));n("99af");var r=n("59e4");function a(e,t,n){var r=Math.floor(e),a=1,o=r+1,i=1;if(e!==r)while(a<=t&&i<=t){var s=(r+o)/(a+i);if(e===s){a+i<=t?(a+=i,r+=o,i=t+1):a>i?i=t+1:a=t+1;break}et&&(a=i,r=o),!n)return[0,r,a];var c=Math.floor(r/a);return[c,r-c*a,a]}var o={methods:{makeToast:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return i(e,t,n)}}};function i(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=new r["a"];a.$bvToast.toast(t,{title:e,variant:n,toaster:"b-toaster-top-center",solid:!0})}var s={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var l={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function f(e){return window.USER_PREF[e]}function u(e,t){if(f("use_fractions")){var n="",r=a(e*t,9,!0);return r[0]>0&&(n+=r[0]),r[1]>0&&(n+=" ".concat(r[1],"").concat(r[2],"")),n}return p(e*t)}function p(e){var t=f("user_fractions")?f("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}}}); \ No newline at end of file +(function(e){function t(t){for(var r,i,s=t[0],c=t[1],l=t[2],f=0,u=[];f1){var a=r[1];t[a]=e(n)}})),t}r["default"].use(a["a"]),t["a"]=new a["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},da67:function(e,t,n){"use strict";n.r(t);n("e260"),n("e6cf"),n("cca6"),n("a79d");var r=n("a026"),a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"app"}},[n("label",[e._v(" "+e._s(e.$t("Search"))+" "),n("input",{directives:[{name:"model",rawName:"v-model",value:e.filter,expression:"filter"}],staticClass:"form-control",attrs:{type:"text"},domProps:{value:e.filter},on:{input:function(t){t.target.composing||(e.filter=t.target.value)}}})]),n("div",{staticClass:"row"},e._l(e.filtered_recipes,(function(t){return n("div",{key:t.id,staticClass:"col-md-3"},[n("b-card",{attrs:{title:t.name,tag:"article"}},[n("b-card-text",[n("span",{staticClass:"text-muted"},[e._v(e._s(e.formatDateTime(t.updated_at)))]),e._v(" "+e._s(t.description)+" ")]),n("b-button",{attrs:{href:e.resolveDjangoUrl("view_recipe",t.id),variant:"primary"}},[e._v(e._s(e.$t("Open")))])],1)],1)})),0)])},o=[],i=(n("159b"),n("caad"),n("2532"),n("b0c0"),n("4de4"),n("d3b7"),n("ddb0"),n("ac1f"),n("466d"),n("5f5b")),s=(n("2dd8"),n("fa7d")),c=n("c1df"),l=n.n(c);r["default"].use(i["a"]),r["default"].prototype.moment=l.a;var d={name:"OfflineView",mixins:[s["b"]],computed:{filtered_recipes:function(){var e=this,t={};return this.recipes.forEach((function(n){n.name.toLowerCase().includes(e.filter.toLowerCase())&&(n.id in t?n.updated_at>t[n.id].updated_at&&(t[n.id]=n):t[n.id]=n)})),t}},data:function(){return{recipes:[],filter:""}},mounted:function(){this.loadRecipe()},methods:{formatDateTime:function(e){return l.a.locale(window.navigator.language),l()(e).format("LLL")},loadRecipe:function(){var e=this;caches.open("api-recipe").then((function(t){t.keys().then((function(t){t.forEach((function(t){caches.match(t).then((function(t){t.json().then((function(t){e.recipes.push(t)}))}))}))}))}))}}},f=d,u=n("2877"),p=Object(u["a"])(f,a,o,!1,null,null,null),g=p.exports,b=n("9225");r["default"].config.productionTip=!1,new r["default"]({i18n:b["a"],render:function(e){return e(g)}}).$mount("#app")},edd4:function(e){e.exports=JSON.parse('{"import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information"}')},fa7d:function(e,t,n){"use strict";n.d(t,"c",(function(){return o})),n.d(t,"f",(function(){return i})),n.d(t,"a",(function(){return s})),n.d(t,"e",(function(){return c})),n.d(t,"b",(function(){return l})),n.d(t,"g",(function(){return d})),n.d(t,"d",(function(){return u}));n("99af");var r=n("59e4");function a(e,t,n){var r=Math.floor(e),a=1,o=r+1,i=1;if(e!==r)while(a<=t&&i<=t){var s=(r+o)/(a+i);if(e===s){a+i<=t?(a+=i,r+=o,i=t+1):a>i?i=t+1:a=t+1;break}et&&(a=i,r=o),!n)return[0,r,a];var c=Math.floor(r/a);return[c,r-c*a,a]}var o={methods:{makeToast:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return i(e,t,n)}}};function i(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=new r["a"];a.$bvToast.toast(t,{title:e,variant:n,toaster:"b-toaster-top-center",solid:!0})}var s={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var l={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function f(e){return window.USER_PREF[e]}function u(e,t){if(f("use_fractions")){var n="",r=a(e*t,9,!0);return r[0]>0&&(n+=r[0]),r[1]>0&&(n+=" ".concat(r[1],"").concat(r[2],"")),n}return p(e*t)}function p(e){var t=f("user_fractions")?f("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}}}); \ No newline at end of file diff --git a/cookbook/static/vue/js/recipe_search_view.js b/cookbook/static/vue/js/recipe_search_view.js index 5565890e7..b0ff1afeb 100644 --- a/cookbook/static/vue/js/recipe_search_view.js +++ b/cookbook/static/vue/js/recipe_search_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var n,a,s=t[0],c=t[1],u=t[2],p=0,h=[];pnew Date(Date.now()-6048e5)?r("b-badge",{attrs:{pill:"",variant:"success"}},[e._v(e._s(e.$t("New")))]):e._e()]:[e._v(e._s(e.meal_plan.note))]],2)],1),void 0!==e.footer_text?r("b-card-footer",[r("i",{class:e.footer_icon}),e._v(" "+e._s(e.footer_text)+" ")]):e._e()],1)},j=[],O=r("fc0d"),v=r("81d5"),g={name:"RecipeCard",mixins:[b["b"]],components:{Keywords:v["a"],RecipeContextMenu:O["a"]},props:{recipe:Object,meal_plan:Object,footer_text:String,footer_icon:String},data:function(){return{recipe_image:""}},mounted:function(){null==this.recipe||null===this.recipe.image?this.recipe_image=window.IMAGE_PLACEHOLDER:this.recipe_image=this.recipe.image},methods:{clickUrl:function(){return null!==this.recipe?Object(b["g"])("view_recipe",this.recipe.id):Object(b["g"])("view_plan_entry",this.meal_plan.id)}}},m=g,y=r("2877"),S=Object(y["a"])(m,f,j,!1,null,"6fcb509c",null),P=S.exports,U=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("multiselect",{attrs:{options:e.objects,"close-on-select":!0,"clear-on-select":!0,"hide-selected":!0,"preserve-search":!0,placeholder:e.placeholder,label:e.label,"track-by":"id",multiple:!0,loading:e.loading},on:{"search-change":e.search,input:e.selectionChanged},model:{value:e.selected_objects,callback:function(t){e.selected_objects=t},expression:"selected_objects"}})},w=[],k=(r("ac1f"),r("841c"),r("8e5f")),R=r.n(k),L={name:"GenericMultiselect",components:{Multiselect:R.a},data:function(){return{loading:!1,objects:[],selected_objects:[]}},props:{placeholder:String,search_function:String,label:String,parent_variable:String,initial_selection:Array},watch:{initial_selection:function(e,t){this.selected_objects=e}},mounted:function(){this.search("")},methods:{search:function(e){var t=this,r=new l["a"];r[this.search_function]({query:{query:e,limit:10}}).then((function(e){t.objects=e.data}))},selectionChanged:function(){this.$emit("change",{var:this.parent_variable,val:this.selected_objects})}}},_=L,C=Object(y["a"])(_,U,w,!1,null,"20923c58",null),I=C.exports;n["default"].use(h.a),n["default"].use(a["a"]);var E={name:"RecipeSearchView",mixins:[b["b"]],components:{GenericMultiselect:I,RecipeCard:P},data:function(){return{recipes:[],meal_plans:[],last_viewed_recipes:[],settings:{search_input:"",search_internal:!1,search_keywords:[],search_foods:[],search_books:[],search_keywords_or:!0,search_foods_or:!0,search_books_or:!0,advanced_search_visible:!1,show_meal_plan:!0,recently_viewed:5},pagination_count:0,pagination_page:1}},mounted:function(){this.$nextTick((function(){this.$cookies.isKey("search_settings_v2")&&(this.settings=this.$cookies.get("search_settings_v2")),this.loadMealPlan(),this.loadRecentlyViewed(),this.refreshData()})),this.$i18n.locale=window.CUSTOM_LOCALE},watch:{settings:{handler:function(){this.$cookies.set("search_settings_v2",this.settings,-1)},deep:!0},"settings.show_meal_plan":function(){this.loadMealPlan()},"settings.recently_viewed":function(){this.loadRecentlyViewed()},"settings.search_input":d()((function(){this.refreshData()}),300)},methods:{refreshData:function(){var e=this,t=new l["a"];t.listRecipes(this.settings.search_input,this.settings.search_keywords.map((function(e){return e["id"]})),this.settings.search_foods.map((function(e){return e["id"]})),this.settings.search_books.map((function(e){return e["id"]})),this.settings.search_keywords_or,this.settings.search_foods_or,this.settings.search_books_or,this.settings.search_internal,void 0,this.pagination_page).then((function(t){e.recipes=t.data.results,e.pagination_count=t.data.count}))},loadMealPlan:function(){var e=this,t=new l["a"];this.settings.show_meal_plan?t.listMealPlans({query:{from_date:c()().format("YYYY-MM-DD"),to_date:c()().format("YYYY-MM-DD")}}).then((function(t){e.meal_plans=t.data})):this.meal_plans=[]},loadRecentlyViewed:function(){var e=this,t=new l["a"];this.settings.recently_viewed>0?t.listRecipes(void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,{query:{last_viewed:this.settings.recently_viewed}}).then((function(t){e.last_viewed_recipes=t.data.results})):this.last_viewed_recipes=[]},genericSelectChanged:function(e){this.settings[e.var]=e.val,this.refreshData()},resetSearch:function(){this.settings.search_input="",this.settings.search_internal=!1,this.settings.search_keywords=[],this.settings.search_foods=[],this.settings.search_books=[],this.refreshData()},pageChange:function(e){this.pagination_page=e,this.refreshData()}}},T=E,x=(r("60bc"),Object(y["a"])(T,i,o,!1,null,null,null)),B=x.exports,q=r("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:q["a"],render:function(e){return e(B)}}).$mount("#app")},"6ce2":function(e){e.exports=JSON.parse('{"Import":"Import","import_running":"Import läuft, bitte warten!","Import_finished":"Import fertig","View_Recipes":"Rezepte Ansehen","Information":"Information","all_fields_optional":"Alle Felder sind optional und können leer gelassen werden.","convert_internal":"Zu internem Rezept wandeln","Log_Recipe_Cooking":"Kochen protokollieren","External_Recipe_Image":"Externes Rezept Bild","Add_to_Book":"Zu Buch hinzufügen","Add_to_Shopping":"Zu Einkaufsliste hinzufügen","Add_to_Plan":"Zu Plan hinzufügen","Step_start_time":"Schritt Startzeit","Select_Book":"Buch wählen","Recipe_Image":"Rezept Bild","Log_Cooking":"Kochen protokollieren","Proteins":"Proteine","Fats":"Fette","Carbohydrates":"Kohlenhydrate","Calories":"Kalorien","Nutrition":"Nährwerte","Keywords":"Stichwörter","Books":"Bücher","show_only_internal":"Nur interne Rezepte anzeigen","Ingredients":"Zutaten","min":"Min","Servings":"Portionen","Waiting":"Wartezeit","Preparation":"Zubereitung","Edit":"Bearbeiten","Open":"Öffnen","Save":"Speichern","Step":"Schritt","Search":"Suchen","Print":"Drucken","New_Recipe":"Neues Rezept","Url_Import":"URL Import","Reset_Search":"Suche zurücksetzen","or":"oder","and":"und","Recently_Viewed":"Kürzlich angesehen","External":"Extern","Settings":"Einstellungen","Meal_Plan":"Speiseplan","Date":"Datum","Share":"Teilen","Export":"Exportieren","Rating":"Bewertung","Close":"Schließen","Add":"Hinzufügen"}')},"7c15":function(e,t,r){"use strict";r.d(t,"c",(function(){return a})),r.d(t,"d",(function(){return s})),r.d(t,"b",(function(){return c})),r.d(t,"a",(function(){return u}));var n=r("bc3a"),i=r.n(n),o=r("fa7d");function a(e){var t=Object(o["g"])("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),i.a.get(t).then((function(e){return e.data})).catch((function(e){d(e,"There was an error loading a resource!","danger")}))}function s(e){return i.a.post(Object(o["g"])("api:cooklog-list"),e).then((function(e){Object(o["f"])("Saved","Cook Log entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function c(e){return i.a.get(Object(o["g"])("api:recipebook-list")+"?query="+e).then((function(e){return e.data})).catch((function(e){}))}function u(e){return i.a.post(Object(o["g"])("api:recipebookentry-list"),e).then((function(e){Object(o["f"])("Saved","Recipe Book entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function d(e,t){if("response"in e){console.log(e.response);var r="statusText"in e.response?e.response.statusText:Object(o["e"])("Error");t+="\n\n"+JSON.stringify(e.response.data),Object(o["f"])(r,t,"danger")}else Object(o["f"])("Error",t,"danger"),console.log(e)}i.a.defaults.xsrfCookieName="csrftoken",i.a.defaults.xsrfHeaderName="X-CSRFTOKEN"},"81d5":function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return e.recipe.keywords.length>0?r("div",e._l(e.recipe.keywords,(function(t){return r("small",{key:t.id,staticStyle:{padding:"2px"}},[r("b-badge",{attrs:{pill:"",variant:"light"}},[e._v(e._s(t.label))])],1)})),0):e._e()},i=[],o={name:"Keywords",props:{recipe:Object}},a=o,s=r("2877"),c=Object(s["a"])(a,n,i,!1,null,null,null);t["a"]=c.exports},9225:function(e,t,r){"use strict";r("159b"),r("d3b7"),r("ddb0"),r("ac1f"),r("466d");var n=r("a026"),i=r("a925");function o(){var e=r("49f8"),t={};return e.keys().forEach((function(r){var n=r.match(/([A-Za-z0-9-_]+)\./i);if(n&&n.length>1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw"}')},d76c:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"row"},[r("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[r("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],o={name:"LoadingSpinner",props:{recipe:Object}},a=o,s=r("2877"),c=Object(s["a"])(a,n,i,!1,null,null,null);t["a"]=c.exports},edd4:function(e){e.exports=JSON.parse('{"import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return s})),r.d(t,"e",(function(){return c})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var s=(n+o)/(i+a);if(e===s){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var c=Math.floor(n/i);return[c,n-c*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var s={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fc0d:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("div",{staticClass:"dropdown"},[e._m(0),r("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[r("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e.$t("Edit")))]),e.recipe.internal?e._e():r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[r("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e.$t("convert_internal")))]),r("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_add_book")}}},[r("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Book"))+" ")]),e.recipe.internal?r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Shopping"))+" ")]):e._e(),r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?recipe="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Plan"))+" ")]),r("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[r("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e.$t("Log_Cooking"))+" ")]),r("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[r("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e.$t("Print"))+" ")]),r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e.$t("Export")))]),e.recipe.internal?r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e.$t("Share")))]):e._e()])]),r("cook-log",{attrs:{recipe:e.recipe}})],1)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[r("i",{staticClass:"fas fa-ellipsis-v"})])}],o=(r("a9e3"),r("fa7d")),a=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e.$t("Log_Recipe_Cooking"),"ok-title":e.$t("Save"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.logCook()}}},[r("p",[e._v(e._s(e.$t("all_fields_optional")))]),r("form",[r("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e.$t("Servings")))]),r("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),r("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e.$t("Rating"))+" - "),r("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),r("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),r("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e.$t("Date")))]),r("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},s=[],c=r("c1df"),u=r.n(c),d=r("a026"),p=r("5f5b"),h=r("7c15");d["default"].prototype.moment=u.a,d["default"].use(p["a"]);var b={name:"CookLog",props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:u()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){Object(h["d"])(this.logObject)}}},l=b,f=r("2877"),j=Object(f["a"])(l,a,s,!1,null,null,null),O=j.exports,v={name:"RecipeContextMenu",mixins:[o["b"]],components:{CookLog:O},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},g=v,m=Object(f["a"])(g,n,i,!1,null,null,null);t["a"]=m.exports}}); \ No newline at end of file +(function(e){function t(t){for(var n,a,s=t[0],c=t[1],u=t[2],p=0,h=[];pnew Date(Date.now()-6048e5)?r("b-badge",{attrs:{pill:"",variant:"success"}},[e._v(e._s(e.$t("New")))]):e._e()]:[e._v(e._s(e.meal_plan.note))]],2)],1),void 0!==e.footer_text?r("b-card-footer",[r("i",{class:e.footer_icon}),e._v(" "+e._s(e.footer_text)+" ")]):e._e()],1)},j=[],O=r("fc0d"),v=r("81d5"),g={name:"RecipeCard",mixins:[b["b"]],components:{Keywords:v["a"],RecipeContextMenu:O["a"]},props:{recipe:Object,meal_plan:Object,footer_text:String,footer_icon:String},data:function(){return{recipe_image:""}},mounted:function(){null==this.recipe||null===this.recipe.image?this.recipe_image=window.IMAGE_PLACEHOLDER:this.recipe_image=this.recipe.image},methods:{clickUrl:function(){return null!==this.recipe?Object(b["g"])("view_recipe",this.recipe.id):Object(b["g"])("view_plan_entry",this.meal_plan.id)}}},m=g,y=r("2877"),S=Object(y["a"])(m,f,j,!1,null,"6fcb509c",null),P=S.exports,U=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("multiselect",{attrs:{options:e.objects,"close-on-select":!0,"clear-on-select":!0,"hide-selected":!0,"preserve-search":!0,placeholder:e.placeholder,label:e.label,"track-by":"id",multiple:!0,loading:e.loading},on:{"search-change":e.search,input:e.selectionChanged},model:{value:e.selected_objects,callback:function(t){e.selected_objects=t},expression:"selected_objects"}})},w=[],k=(r("ac1f"),r("841c"),r("8e5f")),R=r.n(k),L={name:"GenericMultiselect",components:{Multiselect:R.a},data:function(){return{loading:!1,objects:[],selected_objects:[]}},props:{placeholder:String,search_function:String,label:String,parent_variable:String,initial_selection:Array},watch:{initial_selection:function(e,t){this.selected_objects=e}},mounted:function(){this.search("")},methods:{search:function(e){var t=this,r=new l["a"];r[this.search_function]({query:{query:e,limit:10}}).then((function(e){t.objects=e.data}))},selectionChanged:function(){this.$emit("change",{var:this.parent_variable,val:this.selected_objects})}}},_=L,C=Object(y["a"])(_,U,w,!1,null,"20923c58",null),I=C.exports;n["default"].use(h.a),n["default"].use(a["a"]);var E={name:"RecipeSearchView",mixins:[b["b"]],components:{GenericMultiselect:I,RecipeCard:P},data:function(){return{recipes:[],meal_plans:[],last_viewed_recipes:[],settings:{search_input:"",search_internal:!1,search_keywords:[],search_foods:[],search_books:[],search_keywords_or:!0,search_foods_or:!0,search_books_or:!0,advanced_search_visible:!1,show_meal_plan:!0,recently_viewed:5},pagination_count:0,pagination_page:1}},mounted:function(){this.$nextTick((function(){this.$cookies.isKey("search_settings_v2")&&(this.settings=this.$cookies.get("search_settings_v2")),this.loadMealPlan(),this.loadRecentlyViewed(),this.refreshData()})),this.$i18n.locale=window.CUSTOM_LOCALE},watch:{settings:{handler:function(){this.$cookies.set("search_settings_v2",this.settings,-1)},deep:!0},"settings.show_meal_plan":function(){this.loadMealPlan()},"settings.recently_viewed":function(){this.loadRecentlyViewed()},"settings.search_input":d()((function(){this.refreshData()}),300)},methods:{refreshData:function(){var e=this,t=new l["a"];t.listRecipes(this.settings.search_input,this.settings.search_keywords.map((function(e){return e["id"]})),this.settings.search_foods.map((function(e){return e["id"]})),this.settings.search_books.map((function(e){return e["id"]})),this.settings.search_keywords_or,this.settings.search_foods_or,this.settings.search_books_or,this.settings.search_internal,void 0,this.pagination_page).then((function(t){e.recipes=t.data.results,e.pagination_count=t.data.count}))},loadMealPlan:function(){var e=this,t=new l["a"];this.settings.show_meal_plan?t.listMealPlans({query:{from_date:c()().format("YYYY-MM-DD"),to_date:c()().format("YYYY-MM-DD")}}).then((function(t){e.meal_plans=t.data})):this.meal_plans=[]},loadRecentlyViewed:function(){var e=this,t=new l["a"];this.settings.recently_viewed>0?t.listRecipes(void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,{query:{last_viewed:this.settings.recently_viewed}}).then((function(t){e.last_viewed_recipes=t.data.results})):this.last_viewed_recipes=[]},genericSelectChanged:function(e){this.settings[e.var]=e.val,this.refreshData()},resetSearch:function(){this.settings.search_input="",this.settings.search_internal=!1,this.settings.search_keywords=[],this.settings.search_foods=[],this.settings.search_books=[],this.refreshData()},pageChange:function(e){this.pagination_page=e,this.refreshData()}}},T=E,x=(r("60bc"),Object(y["a"])(T,i,o,!1,null,null,null)),B=x.exports,q=r("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:q["a"],render:function(e){return e(B)}}).$mount("#app")},"6ce2":function(e){e.exports=JSON.parse('{"Import":"Import","import_running":"Import läuft, bitte warten!","Import_finished":"Import fertig","View_Recipes":"Rezepte Ansehen","Information":"Information","all_fields_optional":"Alle Felder sind optional und können leer gelassen werden.","convert_internal":"Zu internem Rezept wandeln","Log_Recipe_Cooking":"Kochen protokollieren","External_Recipe_Image":"Externes Rezept Bild","Add_to_Book":"Zu Buch hinzufügen","Add_to_Shopping":"Zu Einkaufsliste hinzufügen","Add_to_Plan":"Zu Plan hinzufügen","Step_start_time":"Schritt Startzeit","Select_Book":"Buch wählen","Recipe_Image":"Rezept Bild","Log_Cooking":"Kochen protokollieren","Proteins":"Proteine","Fats":"Fette","Carbohydrates":"Kohlenhydrate","Calories":"Kalorien","Nutrition":"Nährwerte","Keywords":"Stichwörter","Books":"Bücher","show_only_internal":"Nur interne Rezepte anzeigen","Ingredients":"Zutaten","min":"Min","Servings":"Portionen","Waiting":"Wartezeit","Preparation":"Zubereitung","Edit":"Bearbeiten","Open":"Öffnen","Save":"Speichern","Step":"Schritt","Search":"Suchen","Print":"Drucken","New_Recipe":"Neues Rezept","Url_Import":"URL Import","Reset_Search":"Suche zurücksetzen","or":"oder","and":"und","Recently_Viewed":"Kürzlich angesehen","External":"Extern","Settings":"Einstellungen","Meal_Plan":"Speiseplan","Date":"Datum","Share":"Teilen","Export":"Exportieren","Rating":"Bewertung","Close":"Schließen","Add":"Hinzufügen"}')},"7c15":function(e,t,r){"use strict";r.d(t,"c",(function(){return a})),r.d(t,"d",(function(){return s})),r.d(t,"b",(function(){return c})),r.d(t,"a",(function(){return u}));var n=r("bc3a"),i=r.n(n),o=r("fa7d");function a(e){var t=Object(o["g"])("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),i.a.get(t).then((function(e){return e.data})).catch((function(e){d(e,"There was an error loading a resource!","danger")}))}function s(e){return i.a.post(Object(o["g"])("api:cooklog-list"),e).then((function(e){Object(o["f"])("Saved","Cook Log entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function c(e){return i.a.get(Object(o["g"])("api:recipebook-list")+"?query="+e).then((function(e){return e.data})).catch((function(e){}))}function u(e){return i.a.post(Object(o["g"])("api:recipebookentry-list"),e).then((function(e){Object(o["f"])("Saved","Recipe Book entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function d(e,t){if("response"in e){console.log(e.response);var r="statusText"in e.response?e.response.statusText:Object(o["e"])("Error");t+="\n\n"+JSON.stringify(e.response.data),Object(o["f"])(r,t,"danger")}else Object(o["f"])("Error",t,"danger"),console.log(e)}i.a.defaults.xsrfCookieName="csrftoken",i.a.defaults.xsrfHeaderName="X-CSRFTOKEN"},"81d5":function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return e.recipe.keywords.length>0?r("div",e._l(e.recipe.keywords,(function(t){return r("span",{key:t.id,staticStyle:{padding:"2px"}},[r("b-badge",{attrs:{pill:"",variant:"light"}},[e._v(e._s(t.label))])],1)})),0):e._e()},i=[],o={name:"Keywords",props:{recipe:Object}},a=o,s=r("2877"),c=Object(s["a"])(a,n,i,!1,null,null,null);t["a"]=c.exports},9225:function(e,t,r){"use strict";r("159b"),r("d3b7"),r("ddb0"),r("ac1f"),r("466d");var n=r("a026"),i=r("a925");function o(){var e=r("49f8"),t={};return e.keys().forEach((function(r){var n=r.match(/([A-Za-z0-9-_]+)\./i);if(n&&n.length>1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"row"},[r("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[r("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],o={name:"LoadingSpinner",props:{recipe:Object}},a=o,s=r("2877"),c=Object(s["a"])(a,n,i,!1,null,null,null);t["a"]=c.exports},edd4:function(e){e.exports=JSON.parse('{"import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return s})),r.d(t,"e",(function(){return c})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var s=(n+o)/(i+a);if(e===s){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var c=Math.floor(n/i);return[c,n-c*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var s={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fc0d:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("div",{staticClass:"dropdown"},[e._m(0),r("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[r("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e.$t("Edit")))]),e.recipe.internal?e._e():r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[r("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e.$t("convert_internal")))]),r("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_add_book")}}},[r("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Book"))+" ")]),e.recipe.internal?r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Shopping"))+" ")]):e._e(),r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?recipe="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Plan"))+" ")]),r("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[r("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e.$t("Log_Cooking"))+" ")]),r("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[r("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e.$t("Print"))+" ")]),r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e.$t("Export")))]),e.recipe.internal?r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e.$t("Share")))]):e._e()])]),r("cook-log",{attrs:{recipe:e.recipe}})],1)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[r("i",{staticClass:"fas fa-ellipsis-v"})])}],o=(r("a9e3"),r("fa7d")),a=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e.$t("Log_Recipe_Cooking"),"ok-title":e.$t("Save"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.logCook()}}},[r("p",[e._v(e._s(e.$t("all_fields_optional")))]),r("form",[r("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e.$t("Servings")))]),r("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),r("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e.$t("Rating"))+" - "),r("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),r("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),r("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e.$t("Date")))]),r("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},s=[],c=r("c1df"),u=r.n(c),d=r("a026"),p=r("5f5b"),h=r("7c15");d["default"].prototype.moment=u.a,d["default"].use(p["a"]);var b={name:"CookLog",props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:u()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){Object(h["d"])(this.logObject)}}},l=b,f=r("2877"),j=Object(f["a"])(l,a,s,!1,null,null,null),O=j.exports,v={name:"RecipeContextMenu",mixins:[o["b"]],components:{CookLog:O},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},g=v,m=Object(f["a"])(g,n,i,!1,null,null,null);t["a"]=m.exports}}); \ No newline at end of file diff --git a/cookbook/static/vue/js/recipe_view.js b/cookbook/static/vue/js/recipe_view.js index 0d3e61721..7eb1d2b94 100644 --- a/cookbook/static/vue/js/recipe_view.js +++ b/cookbook/static/vue/js/recipe_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var n,s,o=t[0],c=t[1],l=t[2],p=0,u=[];p0?i("div",{staticClass:"col-md-6 order-md-1 col-sm-12 order-sm-2 col-12 order-2"},[i("div",{staticClass:"card border-primary"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-pepper-hot"}),e._v(" "+e._s(e.$t("Ingredients")))])])]),i("br"),i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-12"},[i("table",{staticClass:"table table-sm"},[e._l(e.recipe.steps,(function(t){return[e._l(t.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":e.updateIngredientCheckedState}})]}))]}))],2)])])])])]):e._e(),i("div",{staticClass:"col-12 order-1 col-sm-12 order-sm-1 col-md-6 order-md-2"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[null!==e.recipe.image?i("img",{staticClass:"img img-fluid rounded",staticStyle:{"max-height":"30vh"},attrs:{src:e.recipe.image,alt:e.$t("Recipe_Image")}}):e._e()])]),i("div",{staticClass:"row",staticStyle:{"margin-top":"2vh","margin-bottom":"2vh"}},[i("div",{staticClass:"col-12"},[i("Nutrition",{attrs:{recipe:e.recipe,ingredient_factor:e.ingredient_factor}})],1)])])]),e.recipe.internal?e._e():[e.recipe.file_path.includes(".pdf")?i("div",[i("PdfViewer",{attrs:{recipe:e.recipe}})],1):e._e(),e.recipe.file_path.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")||e.recipe.file_path.includes(".gif")?i("div",[i("ImageViewer",{attrs:{recipe:e.recipe}})],1):e._e()],e._l(e.recipe.steps,(function(t,n){return i("div",{key:t.id,staticStyle:{"margin-top":"1vh"}},[i("Step",{attrs:{recipe:e.recipe,step:t,ingredient_factor:e.ingredient_factor,index:n,start_time:e.start_time},on:{"update-start-time":e.updateStartTime,"checked-state-changed":e.updateIngredientCheckedState}})],1)}))],2),i("add-recipe-to-book",{attrs:{recipe:e.recipe}})],2)},r=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-user-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"far fa-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-pizza-slice fa-2x text-primary"})])}],s=i("b85c"),o=i("5f5b"),c=(i("2dd8"),i("7c15")),l=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("hr"),"TEXT"===e.step.type?[e.recipe.steps.length>1?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h5",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))],0!==e.step.time?i("small",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fas fa-user-clock"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min"))+" ")]):e._e(),""!==e.start_time?i("small",{staticClass:"d-print-none"},[i("b-link",{attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")])],1):e._e()],2)]),i("div",{staticClass:"col col-md-4",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]):e._e(),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[i("div",{staticClass:"row"},[e.step.ingredients.length>0&&e.recipe.steps.length>1?i("div",{staticClass:"col col-md-4"},[i("table",{staticClass:"table table-sm"},[e._l(e.step.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":function(i){return e.$emit("checked-state-changed",t)}}})]}))],2)]):e._e(),i("div",{staticClass:"col",class:{"col-md-8":e.recipe.steps.length>1,"col-md-12":e.recipe.steps.length<=1}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)])])]:e._e(),"TIME"===e.step.type?[i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-8 offset-md-2",staticStyle:{"text-align":"center"}},[i("h4",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))]],2),0!==e.step.time?i("span",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fa fa-stopwatch"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min")))]):e._e(),""!==e.start_time?i("b-link",{staticClass:"d-print-none",attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")]):e._e()],1),i("div",{staticClass:"col-md-2",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[""!==e.step.instruction?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-12",staticStyle:{"text-align":"center"}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)]):e._e()])]:e._e(),""!==e.start_time?i("div",[i("b-popover",{ref:"id_reactive_popover_"+e.step.id,attrs:{target:"id_reactive_popover_"+e.step.id,triggers:"click",placement:"bottom",title:e.$t("Step start time")}},[i("div",[i("b-form-group",{staticClass:"mb-1",attrs:{label:"Time","label-for":"popover-input-1","label-cols":"3"}},[i("b-form-input",{attrs:{type:"datetime-local",id:"popover-input-1",size:"sm"},model:{value:e.set_time_input,callback:function(t){e.set_time_input=t},expression:"set_time_input"}})],1)],1),i("div",{staticClass:"row",staticStyle:{"margin-top":"1vh"}},[i("div",{staticClass:"col-12",staticStyle:{"text-align":"right"}},[i("b-button",{staticStyle:{"margin-right":"8px"},attrs:{size:"sm",variant:"secondary"},on:{click:e.closePopover}},[e._v("Cancel")]),i("b-button",{attrs:{size:"sm",variant:"primary"},on:{click:e.updateTime}},[e._v("Ok")])],1)])])],1):e._e()],2)},d=[],p=(i("a9e3"),i("fa7d")),u=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("tr",{on:{click:function(t){return e.$emit("checked-state-changed",e.ingredient)}}},[e.ingredient.is_header?[i("td",{attrs:{colspan:"5"}},[i("b",[e._v(e._s(e.ingredient.note))])])]:[i("td",[e.ingredient.checked?i("i",{staticClass:"far fa-check-circle text-success"}):e._e(),e.ingredient.checked?e._e():i("i",{staticClass:"far fa-check-circle text-primary"})]),i("td",[0!==e.ingredient.amount?i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.ingredient.amount))}}):e._e()]),i("td",[null===e.ingredient.unit||e.ingredient.no_amount?e._e():i("span",[e._v(e._s(e.ingredient.unit.name))])]),i("td",[null!==e.ingredient.food?[null!==e.ingredient.food.recipe?i("a",{attrs:{href:e.resolveDjangoUrl("view_recipe",e.ingredient.food.recipe),target:"_blank",rel:"noopener noreferrer"}},[e._v(e._s(e.ingredient.food.name))]):e._e(),null===e.ingredient.food.recipe?i("span",[e._v(e._s(e.ingredient.food.name))]):e._e()]:e._e()],2),i("td",[e.ingredient.note?i("div",[i("span",{directives:[{name:"b-popover",rawName:"v-b-popover.hover",value:e.ingredient.note,expression:"ingredient.note",modifiers:{hover:!0}}],staticClass:"d-print-none"},[i("i",{staticClass:"far fa-comment"})]),i("div",{staticClass:"d-none d-print-block"},[i("i",{staticClass:"far fa-comment-alt"}),e._v(" "+e._s(e.ingredient.note)+" ")])]):e._e()])]],2)},f=[],_={name:"Ingredient",props:{ingredient:Object,ingredient_factor:{type:Number,default:1}},mixins:[p["b"]],data:function(){return{checked:!1}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},m=_,g=i("2877"),v=Object(g["a"])(m,u,f,!1,null,null,null),b=v.exports,h=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i(e.compiled,{tag:"component",attrs:{ingredient_factor:e.ingredient_factor,code:e.code}})],1)},j=[],k=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.number))}})},C=[],y={name:"ScalableNumber",props:{number:Number,factor:{type:Number,default:4}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.factor)}}},w=y,S=Object(g["a"])(w,k,C,!1,null,null,null),x=S.exports,O={name:"CompileComponent",props:["code","ingredient_factor"],data:function(){return{compiled:null}},mounted:function(){this.compiled=n["default"].component("compiled-component",{props:["ingredient_factor","code"],components:{ScalableNumber:x},template:"
".concat(this.code,"
")})}},E=O,R=Object(g["a"])(E,h,j,!1,null,null,null),I=R.exports,$=i("c1df"),P=i.n($);n["default"].prototype.moment=P.a;var A={name:"Step",mixins:[p["a"]],components:{Ingredient:b,CompileComponent:I},props:{step:Object,ingredient_factor:Number,index:Number,recipe:Object,start_time:String},data:function(){return{details_visible:!0,set_time_input:""}},mounted:function(){this.set_time_input=P()(this.start_time).add(this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm")},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)},updateTime:function(){var e=P()(this.set_time_input).add(-1*this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm");this.$emit("update-start-time",e),this.closePopover()},closePopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("close")},openPopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("open")}}},N=A,z=Object(g["a"])(N,l,d,!1,null,null,null),L=z.exports,B=i("fc0d"),M=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("iframe",{staticStyle:{border:"none"},attrs:{src:e.pdfUrl,width:"100%",height:"700px"}})])},T=[],D={name:"PdfViewer",mixins:[p["b"]],props:{recipe:Object},computed:{pdfUrl:function(){return"/static/pdfjs/viewer.html?file="+Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},U=D,V=Object(g["a"])(U,M,T,!1,null,null,null),H=V.exports,F=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticStyle:{"text-align":"center"}},[i("b-img",{attrs:{src:e.pdfUrl,alt:e.$t("External_Recipe_Image")}})],1)},K=[],Z={name:"ImageViewer",props:{recipe:Object},computed:{pdfUrl:function(){return Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},W=Z,J=Object(g["a"])(W,F,K,!1,null,null,null),q=J.exports,G=function(){var e=this,t=e.$createElement,i=e._self._c||t;return null!==e.recipe.nutrition?i("div",[i("div",{staticClass:"card border-success"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-carrot"}),e._v(" "+e._s(e.$t("Nutrition")))])])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-fire fa-fw text-primary"}),e._v(" "+e._s(e.$t("Calories"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.calories))}}),e._v(" kcal ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-bread-slice fa-fw text-primary"}),e._v(" "+e._s(e.$t("Carbohydrates"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.carbohydrates))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-cheese fa-fw text-primary"}),e._v(" "+e._s(e.$t("Fats"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.fats))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-drumstick-bite fa-fw text-primary"}),e._v(" "+e._s(e.$t("Proteins"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.proteins))}}),e._v(" g ")])])])])]):e._e()},X=[],Q={name:"Nutrition",props:{recipe:Object,ingredient_factor:Number},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},Y=Q,ee=Object(g["a"])(Y,G,X,!1,null,null,null),te=ee.exports,ie=i("81d5"),ne=i("d76c"),ae=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_add_book",title:e.$t("Add_to_Book"),"ok-title":e.$t("Add"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.addToBook()}}},[i("multiselect",{attrs:{options:e.books,"preserve-search":!0,placeholder:e.$t("Select_Book"),label:"name","track-by":"id",id:"id_books",multiple:!1},on:{"search-change":e.loadBook},model:{value:e.selected_book,callback:function(t){e.selected_book=t},expression:"selected_book"}})],1)],1)},re=[],se=i("8e5f"),oe=i.n(se);n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ce={name:"AddRecipeToBook",components:{Multiselect:oe.a},props:{recipe:Object},data:function(){return{books:[],selected_book:null}},mounted:function(){this.loadBook("")},methods:{loadBook:function(e){var t=this;Object(c["b"])(e).then((function(e){t.books=e}))},addToBook:function(){Object(c["a"])({recipe:this.recipe.id,book:this.selected_book.id})}}},le=ce,de=(i("60bc"),Object(g["a"])(le,ae,re,!1,null,null,null)),pe=de.exports;n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ue={name:"RecipeView",mixins:[p["b"],p["c"]],components:{PdfViewer:H,ImageViewer:q,Ingredient:b,Step:L,RecipeContextMenu:B["a"],Nutrition:te,Keywords:ie["a"],LoadingSpinner:ne["a"],AddRecipeToBook:pe},computed:{ingredient_factor:function(){return this.servings/this.recipe.servings}},data:function(){return{loading:!0,recipe:void 0,ingredient_count:0,servings:1,start_time:""}},mounted:function(){this.loadRecipe(window.RECIPE_ID),this.$i18n.locale=window.CUSTOM_LOCALE},methods:{loadRecipe:function(e){var t=this;Object(c["c"])(e).then((function(e){0!==window.USER_SERVINGS&&(e.servings=window.USER_SERVINGS),t.servings=e.servings;var i,n=0,a=Object(s["a"])(e.steps);try{for(a.s();!(i=a.n()).done;){var r=i.value;t.ingredient_count+=r.ingredients.length;var o,c=Object(s["a"])(r.ingredients);try{for(c.s();!(o=c.n()).done;){var l=o.value;t.$set(l,"checked",!1)}}catch(d){c.e(d)}finally{c.f()}r.time_offset=n,n+=r.time}}catch(d){a.e(d)}finally{a.f()}n>0&&(t.start_time=P()().format("yyyy-MM-DDTHH:mm")),t.recipe=e,t.loading=!1}))},updateStartTime:function(e){this.start_time=e},updateIngredientCheckedState:function(e){var t,i=Object(s["a"])(this.recipe.steps);try{for(i.s();!(t=i.n()).done;){var n,a=t.value,r=Object(s["a"])(a.ingredients);try{for(r.s();!(n=r.n()).done;){var o=n.value;o.id===e.id&&this.$set(o,"checked",!o.checked)}}catch(c){r.e(c)}finally{r.f()}}}catch(c){i.e(c)}finally{i.f()}}}},fe=ue,_e=Object(g["a"])(fe,a,r,!1,null,null,null),me=_e.exports,ge=i("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:ge["a"],render:function(e){return e(me)}}).$mount("#app")},1:function(e,t,i){e.exports=i("0671")},4678:function(e,t,i){var n={"./af":"2bfb","./af.js":"2bfb","./ar":"8e73","./ar-dz":"a356","./ar-dz.js":"a356","./ar-kw":"423e","./ar-kw.js":"423e","./ar-ly":"1cfd","./ar-ly.js":"1cfd","./ar-ma":"0a84","./ar-ma.js":"0a84","./ar-sa":"8230","./ar-sa.js":"8230","./ar-tn":"6d83","./ar-tn.js":"6d83","./ar.js":"8e73","./az":"485c","./az.js":"485c","./be":"1fc1","./be.js":"1fc1","./bg":"84aa","./bg.js":"84aa","./bm":"a7fa","./bm.js":"a7fa","./bn":"9043","./bn-bd":"9686","./bn-bd.js":"9686","./bn.js":"9043","./bo":"d26a","./bo.js":"d26a","./br":"6887","./br.js":"6887","./bs":"2554","./bs.js":"2554","./ca":"d716","./ca.js":"d716","./cs":"3c0d","./cs.js":"3c0d","./cv":"03ec","./cv.js":"03ec","./cy":"9797","./cy.js":"9797","./da":"0f14","./da.js":"0f14","./de":"b469","./de-at":"b3eb","./de-at.js":"b3eb","./de-ch":"bb71","./de-ch.js":"bb71","./de.js":"b469","./dv":"598a","./dv.js":"598a","./el":"8d47","./el.js":"8d47","./en-au":"0e6b","./en-au.js":"0e6b","./en-ca":"3886","./en-ca.js":"3886","./en-gb":"39a6","./en-gb.js":"39a6","./en-ie":"e1d3","./en-ie.js":"e1d3","./en-il":"7333","./en-il.js":"7333","./en-in":"ec2e","./en-in.js":"ec2e","./en-nz":"6f50","./en-nz.js":"6f50","./en-sg":"b7e9","./en-sg.js":"b7e9","./eo":"65db","./eo.js":"65db","./es":"898b","./es-do":"0a3c","./es-do.js":"0a3c","./es-mx":"b5b7","./es-mx.js":"b5b7","./es-us":"55c9","./es-us.js":"55c9","./es.js":"898b","./et":"ec18","./et.js":"ec18","./eu":"0ff2","./eu.js":"0ff2","./fa":"8df4","./fa.js":"8df4","./fi":"81e9","./fi.js":"81e9","./fil":"d69a","./fil.js":"d69a","./fo":"0721","./fo.js":"0721","./fr":"9f26","./fr-ca":"d9f8","./fr-ca.js":"d9f8","./fr-ch":"0e49","./fr-ch.js":"0e49","./fr.js":"9f26","./fy":"7118","./fy.js":"7118","./ga":"5120","./ga.js":"5120","./gd":"f6b4","./gd.js":"f6b4","./gl":"8840","./gl.js":"8840","./gom-deva":"aaf2","./gom-deva.js":"aaf2","./gom-latn":"0caa","./gom-latn.js":"0caa","./gu":"e0c5","./gu.js":"e0c5","./he":"c7aa","./he.js":"c7aa","./hi":"dc4d","./hi.js":"dc4d","./hr":"4ba9","./hr.js":"4ba9","./hu":"5b14","./hu.js":"5b14","./hy-am":"d6b6","./hy-am.js":"d6b6","./id":"5038","./id.js":"5038","./is":"0558","./is.js":"0558","./it":"6e98","./it-ch":"6f12","./it-ch.js":"6f12","./it.js":"6e98","./ja":"079e","./ja.js":"079e","./jv":"b540","./jv.js":"b540","./ka":"201b","./ka.js":"201b","./kk":"6d79","./kk.js":"6d79","./km":"e81d","./km.js":"e81d","./kn":"3e92","./kn.js":"3e92","./ko":"22f8","./ko.js":"22f8","./ku":"2421","./ku.js":"2421","./ky":"9609","./ky.js":"9609","./lb":"440c","./lb.js":"440c","./lo":"b29d","./lo.js":"b29d","./lt":"26f9","./lt.js":"26f9","./lv":"b97c","./lv.js":"b97c","./me":"293c","./me.js":"293c","./mi":"688b","./mi.js":"688b","./mk":"6909","./mk.js":"6909","./ml":"02fb","./ml.js":"02fb","./mn":"958b","./mn.js":"958b","./mr":"39bd","./mr.js":"39bd","./ms":"ebe4","./ms-my":"6403","./ms-my.js":"6403","./ms.js":"ebe4","./mt":"1b45","./mt.js":"1b45","./my":"8689","./my.js":"8689","./nb":"6ce3","./nb.js":"6ce3","./ne":"3a39","./ne.js":"3a39","./nl":"facd","./nl-be":"db29","./nl-be.js":"db29","./nl.js":"facd","./nn":"b84c","./nn.js":"b84c","./oc-lnc":"167b","./oc-lnc.js":"167b","./pa-in":"f3ff","./pa-in.js":"f3ff","./pl":"8d57","./pl.js":"8d57","./pt":"f260","./pt-br":"d2d4","./pt-br.js":"d2d4","./pt.js":"f260","./ro":"972c","./ro.js":"972c","./ru":"957c","./ru.js":"957c","./sd":"6784","./sd.js":"6784","./se":"ffff","./se.js":"ffff","./si":"eda5","./si.js":"eda5","./sk":"7be6","./sk.js":"7be6","./sl":"8155","./sl.js":"8155","./sq":"c8f3","./sq.js":"c8f3","./sr":"cf1e","./sr-cyrl":"13e9","./sr-cyrl.js":"13e9","./sr.js":"cf1e","./ss":"52bd","./ss.js":"52bd","./sv":"5fbd","./sv.js":"5fbd","./sw":"74dc","./sw.js":"74dc","./ta":"3de5","./ta.js":"3de5","./te":"5cbb","./te.js":"5cbb","./tet":"576c","./tet.js":"576c","./tg":"3b1b","./tg.js":"3b1b","./th":"10e8","./th.js":"10e8","./tk":"5aff","./tk.js":"5aff","./tl-ph":"0f38","./tl-ph.js":"0f38","./tlh":"cf755","./tlh.js":"cf755","./tr":"0e81","./tr.js":"0e81","./tzl":"cf51","./tzl.js":"cf51","./tzm":"c109","./tzm-latn":"b53d","./tzm-latn.js":"b53d","./tzm.js":"c109","./ug-cn":"6117","./ug-cn.js":"6117","./uk":"ada2","./uk.js":"ada2","./ur":"5294","./ur.js":"5294","./uz":"2e8c","./uz-latn":"010e","./uz-latn.js":"010e","./uz.js":"2e8c","./vi":"2921","./vi.js":"2921","./x-pseudo":"fd7e","./x-pseudo.js":"fd7e","./yo":"7f33","./yo.js":"7f33","./zh-cn":"5c3a","./zh-cn.js":"5c3a","./zh-hk":"49ab","./zh-hk.js":"49ab","./zh-mo":"3a6c","./zh-mo.js":"3a6c","./zh-tw":"90ea","./zh-tw.js":"90ea"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="4678"},"49f8":function(e,t,i){var n={"./de.json":"6ce2","./en.json":"edd4","./nl.json":"a625","./sv.json":"4c5b"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="49f8"},"4c5b":function(e){e.exports=JSON.parse('{"import_running":"Import pågår, var god vänta!","all_fields_optional":"Alla rutor är valfria och kan lämnas tomma.","convert_internal":"Konvertera till internt recept","Log_Recipe_Cooking":"Logga tillagningen av receptet","External_Recipe_Image":"Externt receptbild","Add_to_Book":"Lägg till i kokbok","Add_to_Shopping":"Lägg till i handelslista","Add_to_Plan":"Lägg till i matsedel","Step_start_time":"Steg starttid","Select_Book":"Välj kokbok","Recipe_Image":"Receptbild","Import_finished":"Importering klar","View_Recipes":"Visa recept","Log_Cooking":"Logga tillagning","Proteins":"Protein","Fats":"Fett","Carbohydrates":"Kolhydrater","Calories":"Kalorier","Nutrition":"Näringsinnehåll","Date":"Datum","Share":"Dela","Export":"Exportera","Rating":"Betyg","Close":"Stäng","Add":"Lägg till","Ingredients":"Ingredienser","min":"min","Servings":"Portioner","Waiting":"Väntan","Preparation":"Förberedelse","Edit":"Redigera","Open":"Öppna","Save":"Spara","Step":"Steg","Search":"Sök","Import":"Importera","Print":"Skriv ut","Information":"Information"}')},"6ce2":function(e){e.exports=JSON.parse('{"Import":"Import","import_running":"Import läuft, bitte warten!","Import_finished":"Import fertig","View_Recipes":"Rezepte Ansehen","Information":"Information","all_fields_optional":"Alle Felder sind optional und können leer gelassen werden.","convert_internal":"Zu internem Rezept wandeln","Log_Recipe_Cooking":"Kochen protokollieren","External_Recipe_Image":"Externes Rezept Bild","Add_to_Book":"Zu Buch hinzufügen","Add_to_Shopping":"Zu Einkaufsliste hinzufügen","Add_to_Plan":"Zu Plan hinzufügen","Step_start_time":"Schritt Startzeit","Select_Book":"Buch wählen","Recipe_Image":"Rezept Bild","Log_Cooking":"Kochen protokollieren","Proteins":"Proteine","Fats":"Fette","Carbohydrates":"Kohlenhydrate","Calories":"Kalorien","Nutrition":"Nährwerte","Keywords":"Stichwörter","Books":"Bücher","show_only_internal":"Nur interne Rezepte anzeigen","Ingredients":"Zutaten","min":"Min","Servings":"Portionen","Waiting":"Wartezeit","Preparation":"Zubereitung","Edit":"Bearbeiten","Open":"Öffnen","Save":"Speichern","Step":"Schritt","Search":"Suchen","Print":"Drucken","New_Recipe":"Neues Rezept","Url_Import":"URL Import","Reset_Search":"Suche zurücksetzen","or":"oder","and":"und","Recently_Viewed":"Kürzlich angesehen","External":"Extern","Settings":"Einstellungen","Meal_Plan":"Speiseplan","Date":"Datum","Share":"Teilen","Export":"Exportieren","Rating":"Bewertung","Close":"Schließen","Add":"Hinzufügen"}')},"7c15":function(e,t,i){"use strict";i.d(t,"c",(function(){return s})),i.d(t,"d",(function(){return o})),i.d(t,"b",(function(){return c})),i.d(t,"a",(function(){return l}));var n=i("bc3a"),a=i.n(n),r=i("fa7d");function s(e){var t=Object(r["g"])("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),a.a.get(t).then((function(e){return e.data})).catch((function(e){d(e,"There was an error loading a resource!","danger")}))}function o(e){return a.a.post(Object(r["g"])("api:cooklog-list"),e).then((function(e){Object(r["f"])("Saved","Cook Log entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function c(e){return a.a.get(Object(r["g"])("api:recipebook-list")+"?query="+e).then((function(e){return e.data})).catch((function(e){}))}function l(e){return a.a.post(Object(r["g"])("api:recipebookentry-list"),e).then((function(e){Object(r["f"])("Saved","Recipe Book entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function d(e,t){if("response"in e){console.log(e.response);var i="statusText"in e.response?e.response.statusText:Object(r["e"])("Error");t+="\n\n"+JSON.stringify(e.response.data),Object(r["f"])(i,t,"danger")}else Object(r["f"])("Error",t,"danger"),console.log(e)}a.a.defaults.xsrfCookieName="csrftoken",a.a.defaults.xsrfHeaderName="X-CSRFTOKEN"},"81d5":function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.recipe.keywords.length>0?i("div",e._l(e.recipe.keywords,(function(t){return i("small",{key:t.id,staticStyle:{padding:"2px"}},[i("b-badge",{attrs:{pill:"",variant:"light"}},[e._v(e._s(t.label))])],1)})),0):e._e()},a=[],r={name:"Keywords",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},9225:function(e,t,i){"use strict";i("159b"),i("d3b7"),i("ddb0"),i("ac1f"),i("466d");var n=i("a026"),a=i("a925");function r(){var e=i("49f8"),t={};return e.keys().forEach((function(i){var n=i.match(/([A-Za-z0-9-_]+)\./i);if(n&&n.length>1){var a=n[1];t[a]=e(i)}})),t}n["default"].use(a["a"]),t["a"]=new a["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:r()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw"}')},d76c:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"row"},[i("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[i("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],r={name:"LoadingSpinner",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},edd4:function(e){e.exports=JSON.parse('{"import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information"}')},fa7d:function(e,t,i){"use strict";i.d(t,"c",(function(){return r})),i.d(t,"f",(function(){return s})),i.d(t,"a",(function(){return o})),i.d(t,"e",(function(){return c})),i.d(t,"b",(function(){return l})),i.d(t,"g",(function(){return d})),i.d(t,"d",(function(){return u}));i("99af");var n=i("59e4");function a(e,t,i){var n=Math.floor(e),a=1,r=n+1,s=1;if(e!==n)while(a<=t&&s<=t){var o=(n+r)/(a+s);if(e===o){a+s<=t?(a+=s,n+=r,s=t+1):a>s?s=t+1:a=t+1;break}et&&(a=s,n=r),!i)return[0,n,a];var c=Math.floor(n/a);return[c,n-c*a,a]}var r={methods:{makeToast:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return s(e,t,i)}}};function s(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=new n["a"];a.$bvToast.toast(t,{title:e,variant:i,toaster:"b-toaster-top-center",solid:!0})}var o={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var l={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function u(e,t){if(p("use_fractions")){var i="",n=a(e*t,9,!0);return n[0]>0&&(i+=n[0]),n[1]>0&&(i+=" ".concat(n[1],"").concat(n[2],"")),i}return f(e*t)}function f(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fc0d:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("div",{staticClass:"dropdown"},[e._m(0),i("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e.$t("Edit")))]),e.recipe.internal?e._e():i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e.$t("convert_internal")))]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_add_book")}}},[i("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Book"))+" ")]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Shopping"))+" ")]):e._e(),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?recipe="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Plan"))+" ")]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[i("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e.$t("Log_Cooking"))+" ")]),i("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[i("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e.$t("Print"))+" ")]),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e.$t("Export")))]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e.$t("Share")))]):e._e()])]),i("cook-log",{attrs:{recipe:e.recipe}})],1)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[i("i",{staticClass:"fas fa-ellipsis-v"})])}],r=(i("a9e3"),i("fa7d")),s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e.$t("Log_Recipe_Cooking"),"ok-title":e.$t("Save"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.logCook()}}},[i("p",[e._v(e._s(e.$t("all_fields_optional")))]),i("form",[i("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e.$t("Servings")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),i("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e.$t("Rating"))+" - "),i("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),i("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),i("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e.$t("Date")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},o=[],c=i("c1df"),l=i.n(c),d=i("a026"),p=i("5f5b"),u=i("7c15");d["default"].prototype.moment=l.a,d["default"].use(p["a"]);var f={name:"CookLog",props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:l()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){Object(u["d"])(this.logObject)}}},_=f,m=i("2877"),g=Object(m["a"])(_,s,o,!1,null,null,null),v=g.exports,b={name:"RecipeContextMenu",mixins:[r["b"]],components:{CookLog:v},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},h=b,j=Object(m["a"])(h,n,a,!1,null,null,null);t["a"]=j.exports}}); \ No newline at end of file +(function(e){function t(t){for(var n,s,o=t[0],c=t[1],l=t[2],p=0,u=[];p0?i("div",{staticClass:"col-md-6 order-md-1 col-sm-12 order-sm-2 col-12 order-2"},[i("div",{staticClass:"card border-primary"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-pepper-hot"}),e._v(" "+e._s(e.$t("Ingredients")))])])]),i("br"),i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-12"},[i("table",{staticClass:"table table-sm"},[e._l(e.recipe.steps,(function(t){return[e._l(t.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":e.updateIngredientCheckedState}})]}))]}))],2)])])])])]):e._e(),i("div",{staticClass:"col-12 order-1 col-sm-12 order-sm-1 col-md-6 order-md-2"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[null!==e.recipe.image?i("img",{staticClass:"img img-fluid rounded",staticStyle:{"max-height":"30vh"},attrs:{src:e.recipe.image,alt:e.$t("Recipe_Image")}}):e._e()])]),i("div",{staticClass:"row",staticStyle:{"margin-top":"2vh","margin-bottom":"2vh"}},[i("div",{staticClass:"col-12"},[i("Nutrition",{attrs:{recipe:e.recipe,ingredient_factor:e.ingredient_factor}})],1)])])]),e.recipe.internal?e._e():[e.recipe.file_path.includes(".pdf")?i("div",[i("PdfViewer",{attrs:{recipe:e.recipe}})],1):e._e(),e.recipe.file_path.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")||e.recipe.file_path.includes(".gif")?i("div",[i("ImageViewer",{attrs:{recipe:e.recipe}})],1):e._e()],e._l(e.recipe.steps,(function(t,n){return i("div",{key:t.id,staticStyle:{"margin-top":"1vh"}},[i("Step",{attrs:{recipe:e.recipe,step:t,ingredient_factor:e.ingredient_factor,index:n,start_time:e.start_time},on:{"update-start-time":e.updateStartTime,"checked-state-changed":e.updateIngredientCheckedState}})],1)}))],2),i("add-recipe-to-book",{attrs:{recipe:e.recipe}})],2)},r=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-user-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"far fa-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-pizza-slice fa-2x text-primary"})])}],s=i("b85c"),o=i("5f5b"),c=(i("2dd8"),i("7c15")),l=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("hr"),"TEXT"===e.step.type?[e.recipe.steps.length>1?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h5",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))],0!==e.step.time?i("small",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fas fa-user-clock"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min"))+" ")]):e._e(),""!==e.start_time?i("small",{staticClass:"d-print-none"},[i("b-link",{attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")])],1):e._e()],2)]),i("div",{staticClass:"col col-md-4",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]):e._e(),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[i("div",{staticClass:"row"},[e.step.ingredients.length>0&&e.recipe.steps.length>1?i("div",{staticClass:"col col-md-4"},[i("table",{staticClass:"table table-sm"},[e._l(e.step.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":function(i){return e.$emit("checked-state-changed",t)}}})]}))],2)]):e._e(),i("div",{staticClass:"col",class:{"col-md-8":e.recipe.steps.length>1,"col-md-12":e.recipe.steps.length<=1}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)])])]:e._e(),"TIME"===e.step.type?[i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-8 offset-md-2",staticStyle:{"text-align":"center"}},[i("h4",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))]],2),0!==e.step.time?i("span",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fa fa-stopwatch"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min")))]):e._e(),""!==e.start_time?i("b-link",{staticClass:"d-print-none",attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")]):e._e()],1),i("div",{staticClass:"col-md-2",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[""!==e.step.instruction?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-12",staticStyle:{"text-align":"center"}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)]):e._e()])]:e._e(),""!==e.start_time?i("div",[i("b-popover",{ref:"id_reactive_popover_"+e.step.id,attrs:{target:"id_reactive_popover_"+e.step.id,triggers:"click",placement:"bottom",title:e.$t("Step start time")}},[i("div",[i("b-form-group",{staticClass:"mb-1",attrs:{label:"Time","label-for":"popover-input-1","label-cols":"3"}},[i("b-form-input",{attrs:{type:"datetime-local",id:"popover-input-1",size:"sm"},model:{value:e.set_time_input,callback:function(t){e.set_time_input=t},expression:"set_time_input"}})],1)],1),i("div",{staticClass:"row",staticStyle:{"margin-top":"1vh"}},[i("div",{staticClass:"col-12",staticStyle:{"text-align":"right"}},[i("b-button",{staticStyle:{"margin-right":"8px"},attrs:{size:"sm",variant:"secondary"},on:{click:e.closePopover}},[e._v("Cancel")]),i("b-button",{attrs:{size:"sm",variant:"primary"},on:{click:e.updateTime}},[e._v("Ok")])],1)])])],1):e._e()],2)},d=[],p=(i("a9e3"),i("fa7d")),u=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("tr",{on:{click:function(t){return e.$emit("checked-state-changed",e.ingredient)}}},[e.ingredient.is_header?[i("td",{attrs:{colspan:"5"}},[i("b",[e._v(e._s(e.ingredient.note))])])]:[i("td",[e.ingredient.checked?i("i",{staticClass:"far fa-check-circle text-success"}):e._e(),e.ingredient.checked?e._e():i("i",{staticClass:"far fa-check-circle text-primary"})]),i("td",[0!==e.ingredient.amount?i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.ingredient.amount))}}):e._e()]),i("td",[null===e.ingredient.unit||e.ingredient.no_amount?e._e():i("span",[e._v(e._s(e.ingredient.unit.name))])]),i("td",[null!==e.ingredient.food?[null!==e.ingredient.food.recipe?i("a",{attrs:{href:e.resolveDjangoUrl("view_recipe",e.ingredient.food.recipe),target:"_blank",rel:"noopener noreferrer"}},[e._v(e._s(e.ingredient.food.name))]):e._e(),null===e.ingredient.food.recipe?i("span",[e._v(e._s(e.ingredient.food.name))]):e._e()]:e._e()],2),i("td",[e.ingredient.note?i("div",[i("span",{directives:[{name:"b-popover",rawName:"v-b-popover.hover",value:e.ingredient.note,expression:"ingredient.note",modifiers:{hover:!0}}],staticClass:"d-print-none"},[i("i",{staticClass:"far fa-comment"})]),i("div",{staticClass:"d-none d-print-block"},[i("i",{staticClass:"far fa-comment-alt"}),e._v(" "+e._s(e.ingredient.note)+" ")])]):e._e()])]],2)},f=[],_={name:"Ingredient",props:{ingredient:Object,ingredient_factor:{type:Number,default:1}},mixins:[p["b"]],data:function(){return{checked:!1}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},m=_,g=i("2877"),v=Object(g["a"])(m,u,f,!1,null,null,null),b=v.exports,h=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i(e.compiled,{tag:"component",attrs:{ingredient_factor:e.ingredient_factor,code:e.code}})],1)},j=[],k=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.number))}})},C=[],y={name:"ScalableNumber",props:{number:Number,factor:{type:Number,default:4}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.factor)}}},w=y,S=Object(g["a"])(w,k,C,!1,null,null,null),x=S.exports,O={name:"CompileComponent",props:["code","ingredient_factor"],data:function(){return{compiled:null}},mounted:function(){this.compiled=n["default"].component("compiled-component",{props:["ingredient_factor","code"],components:{ScalableNumber:x},template:"
".concat(this.code,"
")})}},E=O,R=Object(g["a"])(E,h,j,!1,null,null,null),I=R.exports,$=i("c1df"),P=i.n($);n["default"].prototype.moment=P.a;var A={name:"Step",mixins:[p["a"]],components:{Ingredient:b,CompileComponent:I},props:{step:Object,ingredient_factor:Number,index:Number,recipe:Object,start_time:String},data:function(){return{details_visible:!0,set_time_input:""}},mounted:function(){this.set_time_input=P()(this.start_time).add(this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm")},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)},updateTime:function(){var e=P()(this.set_time_input).add(-1*this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm");this.$emit("update-start-time",e),this.closePopover()},closePopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("close")},openPopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("open")}}},N=A,z=Object(g["a"])(N,l,d,!1,null,null,null),L=z.exports,B=i("fc0d"),M=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("iframe",{staticStyle:{border:"none"},attrs:{src:e.pdfUrl,width:"100%",height:"700px"}})])},T=[],D={name:"PdfViewer",mixins:[p["b"]],props:{recipe:Object},computed:{pdfUrl:function(){return"/static/pdfjs/viewer.html?file="+Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},U=D,V=Object(g["a"])(U,M,T,!1,null,null,null),H=V.exports,F=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticStyle:{"text-align":"center"}},[i("b-img",{attrs:{src:e.pdfUrl,alt:e.$t("External_Recipe_Image")}})],1)},K=[],Z={name:"ImageViewer",props:{recipe:Object},computed:{pdfUrl:function(){return Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},W=Z,J=Object(g["a"])(W,F,K,!1,null,null,null),q=J.exports,G=function(){var e=this,t=e.$createElement,i=e._self._c||t;return null!==e.recipe.nutrition?i("div",[i("div",{staticClass:"card border-success"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-carrot"}),e._v(" "+e._s(e.$t("Nutrition")))])])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-fire fa-fw text-primary"}),e._v(" "+e._s(e.$t("Calories"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.calories))}}),e._v(" kcal ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-bread-slice fa-fw text-primary"}),e._v(" "+e._s(e.$t("Carbohydrates"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.carbohydrates))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-cheese fa-fw text-primary"}),e._v(" "+e._s(e.$t("Fats"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.fats))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-drumstick-bite fa-fw text-primary"}),e._v(" "+e._s(e.$t("Proteins"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.proteins))}}),e._v(" g ")])])])])]):e._e()},X=[],Q={name:"Nutrition",props:{recipe:Object,ingredient_factor:Number},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},Y=Q,ee=Object(g["a"])(Y,G,X,!1,null,null,null),te=ee.exports,ie=i("81d5"),ne=i("d76c"),ae=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_add_book",title:e.$t("Add_to_Book"),"ok-title":e.$t("Add"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.addToBook()}}},[i("multiselect",{attrs:{options:e.books,"preserve-search":!0,placeholder:e.$t("Select_Book"),label:"name","track-by":"id",id:"id_books",multiple:!1},on:{"search-change":e.loadBook},model:{value:e.selected_book,callback:function(t){e.selected_book=t},expression:"selected_book"}})],1)],1)},re=[],se=i("8e5f"),oe=i.n(se);n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ce={name:"AddRecipeToBook",components:{Multiselect:oe.a},props:{recipe:Object},data:function(){return{books:[],selected_book:null}},mounted:function(){this.loadBook("")},methods:{loadBook:function(e){var t=this;Object(c["b"])(e).then((function(e){t.books=e}))},addToBook:function(){Object(c["a"])({recipe:this.recipe.id,book:this.selected_book.id})}}},le=ce,de=(i("60bc"),Object(g["a"])(le,ae,re,!1,null,null,null)),pe=de.exports;n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ue={name:"RecipeView",mixins:[p["b"],p["c"]],components:{PdfViewer:H,ImageViewer:q,Ingredient:b,Step:L,RecipeContextMenu:B["a"],Nutrition:te,Keywords:ie["a"],LoadingSpinner:ne["a"],AddRecipeToBook:pe},computed:{ingredient_factor:function(){return this.servings/this.recipe.servings}},data:function(){return{loading:!0,recipe:void 0,ingredient_count:0,servings:1,start_time:""}},mounted:function(){this.loadRecipe(window.RECIPE_ID),this.$i18n.locale=window.CUSTOM_LOCALE},methods:{loadRecipe:function(e){var t=this;Object(c["c"])(e).then((function(e){0!==window.USER_SERVINGS&&(e.servings=window.USER_SERVINGS),t.servings=e.servings;var i,n=0,a=Object(s["a"])(e.steps);try{for(a.s();!(i=a.n()).done;){var r=i.value;t.ingredient_count+=r.ingredients.length;var o,c=Object(s["a"])(r.ingredients);try{for(c.s();!(o=c.n()).done;){var l=o.value;t.$set(l,"checked",!1)}}catch(d){c.e(d)}finally{c.f()}r.time_offset=n,n+=r.time}}catch(d){a.e(d)}finally{a.f()}n>0&&(t.start_time=P()().format("yyyy-MM-DDTHH:mm")),t.recipe=e,t.loading=!1}))},updateStartTime:function(e){this.start_time=e},updateIngredientCheckedState:function(e){var t,i=Object(s["a"])(this.recipe.steps);try{for(i.s();!(t=i.n()).done;){var n,a=t.value,r=Object(s["a"])(a.ingredients);try{for(r.s();!(n=r.n()).done;){var o=n.value;o.id===e.id&&this.$set(o,"checked",!o.checked)}}catch(c){r.e(c)}finally{r.f()}}}catch(c){i.e(c)}finally{i.f()}}}},fe=ue,_e=Object(g["a"])(fe,a,r,!1,null,null,null),me=_e.exports,ge=i("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:ge["a"],render:function(e){return e(me)}}).$mount("#app")},1:function(e,t,i){e.exports=i("0671")},4678:function(e,t,i){var n={"./af":"2bfb","./af.js":"2bfb","./ar":"8e73","./ar-dz":"a356","./ar-dz.js":"a356","./ar-kw":"423e","./ar-kw.js":"423e","./ar-ly":"1cfd","./ar-ly.js":"1cfd","./ar-ma":"0a84","./ar-ma.js":"0a84","./ar-sa":"8230","./ar-sa.js":"8230","./ar-tn":"6d83","./ar-tn.js":"6d83","./ar.js":"8e73","./az":"485c","./az.js":"485c","./be":"1fc1","./be.js":"1fc1","./bg":"84aa","./bg.js":"84aa","./bm":"a7fa","./bm.js":"a7fa","./bn":"9043","./bn-bd":"9686","./bn-bd.js":"9686","./bn.js":"9043","./bo":"d26a","./bo.js":"d26a","./br":"6887","./br.js":"6887","./bs":"2554","./bs.js":"2554","./ca":"d716","./ca.js":"d716","./cs":"3c0d","./cs.js":"3c0d","./cv":"03ec","./cv.js":"03ec","./cy":"9797","./cy.js":"9797","./da":"0f14","./da.js":"0f14","./de":"b469","./de-at":"b3eb","./de-at.js":"b3eb","./de-ch":"bb71","./de-ch.js":"bb71","./de.js":"b469","./dv":"598a","./dv.js":"598a","./el":"8d47","./el.js":"8d47","./en-au":"0e6b","./en-au.js":"0e6b","./en-ca":"3886","./en-ca.js":"3886","./en-gb":"39a6","./en-gb.js":"39a6","./en-ie":"e1d3","./en-ie.js":"e1d3","./en-il":"7333","./en-il.js":"7333","./en-in":"ec2e","./en-in.js":"ec2e","./en-nz":"6f50","./en-nz.js":"6f50","./en-sg":"b7e9","./en-sg.js":"b7e9","./eo":"65db","./eo.js":"65db","./es":"898b","./es-do":"0a3c","./es-do.js":"0a3c","./es-mx":"b5b7","./es-mx.js":"b5b7","./es-us":"55c9","./es-us.js":"55c9","./es.js":"898b","./et":"ec18","./et.js":"ec18","./eu":"0ff2","./eu.js":"0ff2","./fa":"8df4","./fa.js":"8df4","./fi":"81e9","./fi.js":"81e9","./fil":"d69a","./fil.js":"d69a","./fo":"0721","./fo.js":"0721","./fr":"9f26","./fr-ca":"d9f8","./fr-ca.js":"d9f8","./fr-ch":"0e49","./fr-ch.js":"0e49","./fr.js":"9f26","./fy":"7118","./fy.js":"7118","./ga":"5120","./ga.js":"5120","./gd":"f6b4","./gd.js":"f6b4","./gl":"8840","./gl.js":"8840","./gom-deva":"aaf2","./gom-deva.js":"aaf2","./gom-latn":"0caa","./gom-latn.js":"0caa","./gu":"e0c5","./gu.js":"e0c5","./he":"c7aa","./he.js":"c7aa","./hi":"dc4d","./hi.js":"dc4d","./hr":"4ba9","./hr.js":"4ba9","./hu":"5b14","./hu.js":"5b14","./hy-am":"d6b6","./hy-am.js":"d6b6","./id":"5038","./id.js":"5038","./is":"0558","./is.js":"0558","./it":"6e98","./it-ch":"6f12","./it-ch.js":"6f12","./it.js":"6e98","./ja":"079e","./ja.js":"079e","./jv":"b540","./jv.js":"b540","./ka":"201b","./ka.js":"201b","./kk":"6d79","./kk.js":"6d79","./km":"e81d","./km.js":"e81d","./kn":"3e92","./kn.js":"3e92","./ko":"22f8","./ko.js":"22f8","./ku":"2421","./ku.js":"2421","./ky":"9609","./ky.js":"9609","./lb":"440c","./lb.js":"440c","./lo":"b29d","./lo.js":"b29d","./lt":"26f9","./lt.js":"26f9","./lv":"b97c","./lv.js":"b97c","./me":"293c","./me.js":"293c","./mi":"688b","./mi.js":"688b","./mk":"6909","./mk.js":"6909","./ml":"02fb","./ml.js":"02fb","./mn":"958b","./mn.js":"958b","./mr":"39bd","./mr.js":"39bd","./ms":"ebe4","./ms-my":"6403","./ms-my.js":"6403","./ms.js":"ebe4","./mt":"1b45","./mt.js":"1b45","./my":"8689","./my.js":"8689","./nb":"6ce3","./nb.js":"6ce3","./ne":"3a39","./ne.js":"3a39","./nl":"facd","./nl-be":"db29","./nl-be.js":"db29","./nl.js":"facd","./nn":"b84c","./nn.js":"b84c","./oc-lnc":"167b","./oc-lnc.js":"167b","./pa-in":"f3ff","./pa-in.js":"f3ff","./pl":"8d57","./pl.js":"8d57","./pt":"f260","./pt-br":"d2d4","./pt-br.js":"d2d4","./pt.js":"f260","./ro":"972c","./ro.js":"972c","./ru":"957c","./ru.js":"957c","./sd":"6784","./sd.js":"6784","./se":"ffff","./se.js":"ffff","./si":"eda5","./si.js":"eda5","./sk":"7be6","./sk.js":"7be6","./sl":"8155","./sl.js":"8155","./sq":"c8f3","./sq.js":"c8f3","./sr":"cf1e","./sr-cyrl":"13e9","./sr-cyrl.js":"13e9","./sr.js":"cf1e","./ss":"52bd","./ss.js":"52bd","./sv":"5fbd","./sv.js":"5fbd","./sw":"74dc","./sw.js":"74dc","./ta":"3de5","./ta.js":"3de5","./te":"5cbb","./te.js":"5cbb","./tet":"576c","./tet.js":"576c","./tg":"3b1b","./tg.js":"3b1b","./th":"10e8","./th.js":"10e8","./tk":"5aff","./tk.js":"5aff","./tl-ph":"0f38","./tl-ph.js":"0f38","./tlh":"cf755","./tlh.js":"cf755","./tr":"0e81","./tr.js":"0e81","./tzl":"cf51","./tzl.js":"cf51","./tzm":"c109","./tzm-latn":"b53d","./tzm-latn.js":"b53d","./tzm.js":"c109","./ug-cn":"6117","./ug-cn.js":"6117","./uk":"ada2","./uk.js":"ada2","./ur":"5294","./ur.js":"5294","./uz":"2e8c","./uz-latn":"010e","./uz-latn.js":"010e","./uz.js":"2e8c","./vi":"2921","./vi.js":"2921","./x-pseudo":"fd7e","./x-pseudo.js":"fd7e","./yo":"7f33","./yo.js":"7f33","./zh-cn":"5c3a","./zh-cn.js":"5c3a","./zh-hk":"49ab","./zh-hk.js":"49ab","./zh-mo":"3a6c","./zh-mo.js":"3a6c","./zh-tw":"90ea","./zh-tw.js":"90ea"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="4678"},"49f8":function(e,t,i){var n={"./de.json":"6ce2","./en.json":"edd4","./nl.json":"a625","./sv.json":"4c5b"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="49f8"},"4c5b":function(e){e.exports=JSON.parse('{"import_running":"Import pågår, var god vänta!","all_fields_optional":"Alla rutor är valfria och kan lämnas tomma.","convert_internal":"Konvertera till internt recept","Log_Recipe_Cooking":"Logga tillagningen av receptet","External_Recipe_Image":"Externt receptbild","Add_to_Book":"Lägg till i kokbok","Add_to_Shopping":"Lägg till i handelslista","Add_to_Plan":"Lägg till i matsedel","Step_start_time":"Steg starttid","Select_Book":"Välj kokbok","Recipe_Image":"Receptbild","Import_finished":"Importering klar","View_Recipes":"Visa recept","Log_Cooking":"Logga tillagning","Proteins":"Protein","Fats":"Fett","Carbohydrates":"Kolhydrater","Calories":"Kalorier","Nutrition":"Näringsinnehåll","Date":"Datum","Share":"Dela","Export":"Exportera","Rating":"Betyg","Close":"Stäng","Add":"Lägg till","Ingredients":"Ingredienser","min":"min","Servings":"Portioner","Waiting":"Väntan","Preparation":"Förberedelse","Edit":"Redigera","Open":"Öppna","Save":"Spara","Step":"Steg","Search":"Sök","Import":"Importera","Print":"Skriv ut","Information":"Information"}')},"6ce2":function(e){e.exports=JSON.parse('{"Import":"Import","import_running":"Import läuft, bitte warten!","Import_finished":"Import fertig","View_Recipes":"Rezepte Ansehen","Information":"Information","all_fields_optional":"Alle Felder sind optional und können leer gelassen werden.","convert_internal":"Zu internem Rezept wandeln","Log_Recipe_Cooking":"Kochen protokollieren","External_Recipe_Image":"Externes Rezept Bild","Add_to_Book":"Zu Buch hinzufügen","Add_to_Shopping":"Zu Einkaufsliste hinzufügen","Add_to_Plan":"Zu Plan hinzufügen","Step_start_time":"Schritt Startzeit","Select_Book":"Buch wählen","Recipe_Image":"Rezept Bild","Log_Cooking":"Kochen protokollieren","Proteins":"Proteine","Fats":"Fette","Carbohydrates":"Kohlenhydrate","Calories":"Kalorien","Nutrition":"Nährwerte","Keywords":"Stichwörter","Books":"Bücher","show_only_internal":"Nur interne Rezepte anzeigen","Ingredients":"Zutaten","min":"Min","Servings":"Portionen","Waiting":"Wartezeit","Preparation":"Zubereitung","Edit":"Bearbeiten","Open":"Öffnen","Save":"Speichern","Step":"Schritt","Search":"Suchen","Print":"Drucken","New_Recipe":"Neues Rezept","Url_Import":"URL Import","Reset_Search":"Suche zurücksetzen","or":"oder","and":"und","Recently_Viewed":"Kürzlich angesehen","External":"Extern","Settings":"Einstellungen","Meal_Plan":"Speiseplan","Date":"Datum","Share":"Teilen","Export":"Exportieren","Rating":"Bewertung","Close":"Schließen","Add":"Hinzufügen"}')},"7c15":function(e,t,i){"use strict";i.d(t,"c",(function(){return s})),i.d(t,"d",(function(){return o})),i.d(t,"b",(function(){return c})),i.d(t,"a",(function(){return l}));var n=i("bc3a"),a=i.n(n),r=i("fa7d");function s(e){var t=Object(r["g"])("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),a.a.get(t).then((function(e){return e.data})).catch((function(e){d(e,"There was an error loading a resource!","danger")}))}function o(e){return a.a.post(Object(r["g"])("api:cooklog-list"),e).then((function(e){Object(r["f"])("Saved","Cook Log entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function c(e){return a.a.get(Object(r["g"])("api:recipebook-list")+"?query="+e).then((function(e){return e.data})).catch((function(e){}))}function l(e){return a.a.post(Object(r["g"])("api:recipebookentry-list"),e).then((function(e){Object(r["f"])("Saved","Recipe Book entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function d(e,t){if("response"in e){console.log(e.response);var i="statusText"in e.response?e.response.statusText:Object(r["e"])("Error");t+="\n\n"+JSON.stringify(e.response.data),Object(r["f"])(i,t,"danger")}else Object(r["f"])("Error",t,"danger"),console.log(e)}a.a.defaults.xsrfCookieName="csrftoken",a.a.defaults.xsrfHeaderName="X-CSRFTOKEN"},"81d5":function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.recipe.keywords.length>0?i("div",e._l(e.recipe.keywords,(function(t){return i("span",{key:t.id,staticStyle:{padding:"2px"}},[i("b-badge",{attrs:{pill:"",variant:"light"}},[e._v(e._s(t.label))])],1)})),0):e._e()},a=[],r={name:"Keywords",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},9225:function(e,t,i){"use strict";i("159b"),i("d3b7"),i("ddb0"),i("ac1f"),i("466d");var n=i("a026"),a=i("a925");function r(){var e=i("49f8"),t={};return e.keys().forEach((function(i){var n=i.match(/([A-Za-z0-9-_]+)\./i);if(n&&n.length>1){var a=n[1];t[a]=e(i)}})),t}n["default"].use(a["a"]),t["a"]=new a["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:r()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"row"},[i("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[i("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],r={name:"LoadingSpinner",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},edd4:function(e){e.exports=JSON.parse('{"import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information"}')},fa7d:function(e,t,i){"use strict";i.d(t,"c",(function(){return r})),i.d(t,"f",(function(){return s})),i.d(t,"a",(function(){return o})),i.d(t,"e",(function(){return c})),i.d(t,"b",(function(){return l})),i.d(t,"g",(function(){return d})),i.d(t,"d",(function(){return u}));i("99af");var n=i("59e4");function a(e,t,i){var n=Math.floor(e),a=1,r=n+1,s=1;if(e!==n)while(a<=t&&s<=t){var o=(n+r)/(a+s);if(e===o){a+s<=t?(a+=s,n+=r,s=t+1):a>s?s=t+1:a=t+1;break}et&&(a=s,n=r),!i)return[0,n,a];var c=Math.floor(n/a);return[c,n-c*a,a]}var r={methods:{makeToast:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return s(e,t,i)}}};function s(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=new n["a"];a.$bvToast.toast(t,{title:e,variant:i,toaster:"b-toaster-top-center",solid:!0})}var o={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var l={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function u(e,t){if(p("use_fractions")){var i="",n=a(e*t,9,!0);return n[0]>0&&(i+=n[0]),n[1]>0&&(i+=" ".concat(n[1],"").concat(n[2],"")),i}return f(e*t)}function f(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fc0d:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("div",{staticClass:"dropdown"},[e._m(0),i("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e.$t("Edit")))]),e.recipe.internal?e._e():i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e.$t("convert_internal")))]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_add_book")}}},[i("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Book"))+" ")]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Shopping"))+" ")]):e._e(),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?recipe="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Plan"))+" ")]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[i("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e.$t("Log_Cooking"))+" ")]),i("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[i("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e.$t("Print"))+" ")]),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e.$t("Export")))]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e.$t("Share")))]):e._e()])]),i("cook-log",{attrs:{recipe:e.recipe}})],1)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[i("i",{staticClass:"fas fa-ellipsis-v"})])}],r=(i("a9e3"),i("fa7d")),s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e.$t("Log_Recipe_Cooking"),"ok-title":e.$t("Save"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.logCook()}}},[i("p",[e._v(e._s(e.$t("all_fields_optional")))]),i("form",[i("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e.$t("Servings")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),i("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e.$t("Rating"))+" - "),i("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),i("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),i("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e.$t("Date")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},o=[],c=i("c1df"),l=i.n(c),d=i("a026"),p=i("5f5b"),u=i("7c15");d["default"].prototype.moment=l.a,d["default"].use(p["a"]);var f={name:"CookLog",props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:l()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){Object(u["d"])(this.logObject)}}},_=f,m=i("2877"),g=Object(m["a"])(_,s,o,!1,null,null,null),v=g.exports,b={name:"RecipeContextMenu",mixins:[r["b"]],components:{CookLog:v},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},h=b,j=Object(m["a"])(h,n,a,!1,null,null,null);t["a"]=j.exports}}); \ No newline at end of file diff --git a/cookbook/static/vue/js/supermarket_view.js b/cookbook/static/vue/js/supermarket_view.js index 648328753..251717ca2 100644 --- a/cookbook/static/vue/js/supermarket_view.js +++ b/cookbook/static/vue/js/supermarket_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var n,a,c=t[0],s=t[1],u=t[2],p=0,h=[];p1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw"}')},edd4:function(e){e.exports=JSON.parse('{"import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return c})),r.d(t,"e",(function(){return s})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var c=(n+o)/(i+a);if(e===c){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var s=Math.floor(n/i);return[s,n-s*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var c={methods:{_:function(e){return s(e)}}};function s(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}}}); \ No newline at end of file +(function(e){function t(t){for(var n,a,c=t[0],s=t[1],u=t[2],p=0,h=[];p1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},edd4:function(e){e.exports=JSON.parse('{"import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return c})),r.d(t,"e",(function(){return s})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var c=(n+o)/(i+a);if(e===c){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var s=Math.floor(n/i);return[s,n-s*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var c={methods:{_:function(e){return s(e)}}};function s(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}}}); \ No newline at end of file diff --git a/cookbook/static/vue/js/user_file_view.js b/cookbook/static/vue/js/user_file_view.js index d861fbcdd..895a44952 100644 --- a/cookbook/static/vue/js/user_file_view.js +++ b/cookbook/static/vue/js/user_file_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var n,a,c=t[0],s=t[1],u=t[2],p=0,h=[];p1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw"}')},edd4:function(e){e.exports=JSON.parse('{"import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return c})),r.d(t,"e",(function(){return s})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var c=(n+o)/(i+a);if(e===c){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var s=Math.floor(n/i);return[s,n-s*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var c={methods:{_:function(e){return s(e)}}};function s(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fd4d:function(e,t,r){"use strict";r.r(t);r("e260"),r("e6cf"),r("cca6"),r("a79d");var n=r("a026"),i=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{attrs:{id:"app"}},[r("div",{staticClass:"row"},[r("div",{staticClass:"col col-md-12"},[r("h3",[e._v(e._s(e.$t("Files"))+" "),r("a",{staticClass:"btn btn-success float-right"},[r("i",{staticClass:"fas fa-plus-circle"}),e._v(" "+e._s(e.$t("New")))])])])]),r("div",{staticClass:"row",staticStyle:{"margin-top":"2vh"}},[r("div",{staticClass:"col col-md-12"},[r("b-progress",{attrs:{max:e.max_file_size_mb}},[r("b-progress-bar",{attrs:{value:e.current_file_size_mb}},[r("span",[r("strong",[e._v(e._s(e.current_file_size_mb.toFixed(2))+" / "+e._s(e.max_file_size_mb)+" MB")])])])],1)],1)]),r("div",{staticClass:"row",staticStyle:{"margin-top":"2vh"}},[r("div",{staticClass:"col col-md-12"},[r("table",{staticClass:"table"},[r("thead",[r("tr",[r("th",[e._v(e._s(e.$t("Name")))]),r("th",[e._v(e._s(e.$t("Size"))+" (MB)")])])]),e._l(e.files,(function(t){return r("tr",{key:t.id},[r("td",[e._v(e._s(t.name))]),r("td",[e._v(e._s(t.file_size_kb/1e3))])])}))],2)])])])},o=[],a=(r("b0c0"),r("5f5b")),c=(r("2dd8"),r("fa7d")),s=r("2b2d"),u=r("bc3a"),d=r.n(u);n["default"].use(a["a"]),d.a.defaults.xsrfHeaderName="X-CSRFToken",d.a.defaults.xsrfCookieName="csrftoken";var p={name:"UserFileView",mixins:[c["b"],c["c"]],components:{},data:function(){return{files:[],current_file_size_mb:window.CURRENT_FILE_SIZE_MB,max_file_size_mb:window.MAX_FILE_SIZE_MB}},mounted:function(){this.$i18n.locale=window.CUSTOM_LOCALE,this.loadInitial()},methods:{loadInitial:function(){var e=this,t=new s["a"];t.listUserFiles().then((function(t){e.files=t.data}))},supermarketModalOk:function(){var e=this,t=new s["a"];this.selected_supermarket.new?t.createSupermarket({name:this.selected_supermarket.name}).then((function(t){e.selected_supermarket=void 0,e.loadInitial()})):t.partialUpdateSupermarket(this.selected_supermarket.id,{name:this.selected_supermarket.name})}}},h=p,b=r("2877"),f=Object(b["a"])(h,i,o,!1,null,null,null),l=f.exports,O=r("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:O["a"],render:function(e){return e(l)}}).$mount("#app")}}); \ No newline at end of file +(function(e){function t(t){for(var n,a,c=t[0],s=t[1],u=t[2],p=0,h=[];p1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},edd4:function(e){e.exports=JSON.parse('{"import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return c})),r.d(t,"e",(function(){return s})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var c=(n+o)/(i+a);if(e===c){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var s=Math.floor(n/i);return[s,n-s*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var c={methods:{_:function(e){return s(e)}}};function s(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fd4d:function(e,t,r){"use strict";r.r(t);r("e260"),r("e6cf"),r("cca6"),r("a79d");var n=r("a026"),i=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{attrs:{id:"app"}},[r("div",{staticClass:"row"},[r("div",{staticClass:"col col-md-12"},[r("h3",[e._v(e._s(e.$t("Files"))+" "),r("a",{staticClass:"btn btn-success float-right"},[r("i",{staticClass:"fas fa-plus-circle"}),e._v(" "+e._s(e.$t("New")))])])])]),r("div",{staticClass:"row",staticStyle:{"margin-top":"2vh"}},[r("div",{staticClass:"col col-md-12"},[r("b-progress",{attrs:{max:e.max_file_size_mb}},[r("b-progress-bar",{attrs:{value:e.current_file_size_mb}},[r("span",[r("strong",[e._v(e._s(e.current_file_size_mb.toFixed(2))+" / "+e._s(e.max_file_size_mb)+" MB")])])])],1)],1)]),r("div",{staticClass:"row",staticStyle:{"margin-top":"2vh"}},[r("div",{staticClass:"col col-md-12"},[r("table",{staticClass:"table"},[r("thead",[r("tr",[r("th",[e._v(e._s(e.$t("Name")))]),r("th",[e._v(e._s(e.$t("Size"))+" (MB)")])])]),e._l(e.files,(function(t){return r("tr",{key:t.id},[r("td",[e._v(e._s(t.name))]),r("td",[e._v(e._s(t.file_size_kb/1e3))])])}))],2)])])])},o=[],a=(r("b0c0"),r("5f5b")),c=(r("2dd8"),r("fa7d")),s=r("2b2d"),u=r("bc3a"),d=r.n(u);n["default"].use(a["a"]),d.a.defaults.xsrfHeaderName="X-CSRFToken",d.a.defaults.xsrfCookieName="csrftoken";var p={name:"UserFileView",mixins:[c["b"],c["c"]],components:{},data:function(){return{files:[],current_file_size_mb:window.CURRENT_FILE_SIZE_MB,max_file_size_mb:window.MAX_FILE_SIZE_MB}},mounted:function(){this.$i18n.locale=window.CUSTOM_LOCALE,this.loadInitial()},methods:{loadInitial:function(){var e=this,t=new s["a"];t.listUserFiles().then((function(t){e.files=t.data}))},supermarketModalOk:function(){var e=this,t=new s["a"];this.selected_supermarket.new?t.createSupermarket({name:this.selected_supermarket.name}).then((function(t){e.selected_supermarket=void 0,e.loadInitial()})):t.partialUpdateSupermarket(this.selected_supermarket.id,{name:this.selected_supermarket.name})}}},h=p,b=r("2877"),f=Object(b["a"])(h,i,o,!1,null,null,null),l=f.exports,O=r("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:O["a"],render:function(e){return e(l)}}).$mount("#app")}}); \ No newline at end of file From b92e51c0c794bc1ce9192b9e6c55764704a0d748 Mon Sep 17 00:00:00 2001 From: Kaibu Date: Tue, 8 Jun 2021 14:55:18 +0200 Subject: [PATCH 16/97] login form style fixes --- cookbook/templates/account/login.html | 5 +++-- cookbook/templates/account/password_reset.html | 2 +- cookbook/templates/account/signup.html | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/cookbook/templates/account/login.html b/cookbook/templates/account/login.html index fe6a633ce..c3e7c16e8 100644 --- a/cookbook/templates/account/login.html +++ b/cookbook/templates/account/login.html @@ -18,7 +18,7 @@
-
+

diff --git a/cookbook/templates/account/password_reset.html b/cookbook/templates/account/password_reset.html index 8bc2b0f4c..60cfd702b 100644 --- a/cookbook/templates/account/password_reset.html +++ b/cookbook/templates/account/password_reset.html @@ -18,7 +18,7 @@
-
+

{% if EMAIL_ENABLED %}

{% trans "Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it." %}

diff --git a/cookbook/templates/account/signup.html b/cookbook/templates/account/signup.html index e6785b7d5..2750af973 100644 --- a/cookbook/templates/account/signup.html +++ b/cookbook/templates/account/signup.html @@ -14,7 +14,7 @@
-
+

{% csrf_token %} From c71a7dad2474d6e0d20b5ace7ed472bf0feb13d2 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Tue, 8 Jun 2021 17:26:39 +0200 Subject: [PATCH 17/97] updated javascript dependencies --- cookbook/static/vue/js/chunk-vendors.js | 30 +- cookbook/templates/sw.js | 2 +- requirements.txt | 6 +- vue/package.json | 34 +- vue/src/sw.js | 2 +- vue/yarn.lock | 1419 +++++++++++------------ 6 files changed, 715 insertions(+), 778 deletions(-) diff --git a/cookbook/static/vue/js/chunk-vendors.js b/cookbook/static/vue/js/chunk-vendors.js index 7c1ca97ef..014df40fe 100644 --- a/cookbook/static/vue/js/chunk-vendors.js +++ b/cookbook/static/vue/js/chunk-vendors.js @@ -66,7 +66,7 @@ var e={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta" * */function r(t){return t&&"object"===typeof t&&"default"in t?t["default"]:t}Object.defineProperty(e,"__esModule",{value:!0});var i=r(n("a026"));function a(t){return a="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function o(t){return s(t)||c(t)||u()}function s(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e1&&void 0!==arguments[1]?arguments[1]:{};return t.reduce((function(t,n){var r=n.passengers[0],i="function"===typeof r?r(e):n.passengers;return t.concat(i)}),[])}function h(t,e){return t.map((function(t,e){return[e,t]})).sort((function(t,n){return e(t[1],n[1])||t[0]-n[0]})).map((function(t){return t[1]}))}function p(t,e){return e.reduce((function(e,n){return t.hasOwnProperty(n)&&(e[n]=t[n]),e}),{})}var m={},b={},v={},_=i.extend({data:function(){return{transports:m,targets:b,sources:v,trackInstances:l}},methods:{open:function(t){if(l){var e=t.to,n=t.from,r=t.passengers,a=t.order,o=void 0===a?1/0:a;if(e&&n&&r){var s={to:e,from:n,passengers:d(r),order:o},c=Object.keys(this.transports);-1===c.indexOf(e)&&i.set(this.transports,e,[]);var u=this.$_getTransportIndex(s),f=this.transports[e].slice(0);-1===u?f.push(s):f[u]=s,this.transports[e]=h(f,(function(t,e){return t.order-e.order}))}}},close:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.to,r=t.from;if(n&&(r||!1!==e)&&this.transports[n])if(e)this.transports[n]=[];else{var i=this.$_getTransportIndex(t);if(i>=0){var a=this.transports[n].slice(0);a.splice(i,1),this.transports[n]=a}}},registerTarget:function(t,e,n){l&&(this.trackInstances&&!n&&this.targets[t]&&console.warn("[portal-vue]: Target ".concat(t," already exists")),this.$set(this.targets,t,Object.freeze([e])))},unregisterTarget:function(t){this.$delete(this.targets,t)},registerSource:function(t,e,n){l&&(this.trackInstances&&!n&&this.sources[t]&&console.warn("[portal-vue]: source ".concat(t," already exists")),this.$set(this.sources,t,Object.freeze([e])))},unregisterSource:function(t){this.$delete(this.sources,t)},hasTarget:function(t){return!(!this.targets[t]||!this.targets[t][0])},hasSource:function(t){return!(!this.sources[t]||!this.sources[t][0])},hasContentFor:function(t){return!!this.transports[t]&&!!this.transports[t].length},$_getTransportIndex:function(t){var e=t.to,n=t.from;for(var r in this.transports[e])if(this.transports[e][r].from===n)return+r;return-1}}}),g=new _(m),y=1,O=i.extend({name:"portal",props:{disabled:{type:Boolean},name:{type:String,default:function(){return String(y++)}},order:{type:Number,default:0},slim:{type:Boolean},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"DIV"},to:{type:String,default:function(){return String(Math.round(1e7*Math.random()))}}},created:function(){var t=this;this.$nextTick((function(){g.registerSource(t.name,t)}))},mounted:function(){this.disabled||this.sendUpdate()},updated:function(){this.disabled?this.clear():this.sendUpdate()},beforeDestroy:function(){g.unregisterSource(this.name),this.clear()},watch:{to:function(t,e){e&&e!==t&&this.clear(e),this.sendUpdate()}},methods:{clear:function(t){var e={from:this.name,to:t||this.to};g.close(e)},normalizeSlots:function(){return this.$scopedSlots.default?[this.$scopedSlots.default]:this.$slots.default},normalizeOwnChildren:function(t){return"function"===typeof t?t(this.slotProps):t},sendUpdate:function(){var t=this.normalizeSlots();if(t){var e={from:this.name,to:this.to,passengers:o(t),order:this.order};g.open(e)}else this.clear()}},render:function(t){var e=this.$slots.default||this.$scopedSlots.default||[],n=this.tag;return e&&this.disabled?e.length<=1&&this.slim?this.normalizeOwnChildren(e)[0]:t(n,[this.normalizeOwnChildren(e)]):this.slim?t():t(n,{class:{"v-portal":!0},style:{display:"none"},key:"v-portal-placeholder"})}}),j=i.extend({name:"portalTarget",props:{multiple:{type:Boolean,default:!1},name:{type:String,required:!0},slim:{type:Boolean,default:!1},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"div"},transition:{type:[String,Object,Function]}},data:function(){return{transports:g.transports,firstRender:!0}},created:function(){var t=this;this.$nextTick((function(){g.registerTarget(t.name,t)}))},watch:{ownTransports:function(){this.$emit("change",this.children().length>0)},name:function(t,e){g.unregisterTarget(e),g.registerTarget(t,this)}},mounted:function(){var t=this;this.transition&&this.$nextTick((function(){t.firstRender=!1}))},beforeDestroy:function(){g.unregisterTarget(this.name)},computed:{ownTransports:function(){var t=this.transports[this.name]||[];return this.multiple?t:0===t.length?[]:[t[t.length-1]]},passengers:function(){return f(this.ownTransports,this.slotProps)}},methods:{children:function(){return 0!==this.passengers.length?this.passengers:this.$scopedSlots.default?this.$scopedSlots.default(this.slotProps):this.$slots.default||[]},noWrapper:function(){var t=this.slim&&!this.transition;return t&&this.children().length>1&&console.warn("[portal-vue]: PortalTarget with `slim` option received more than one child element."),t}},render:function(t){var e=this.noWrapper(),n=this.children(),r=this.transition||this.tag;return e?n[0]:this.slim&&!r?t():t(r,{props:{tag:this.transition&&this.tag?this.tag:void 0},class:{"vue-portal-target":!0}},n)}}),w=0,M=["disabled","name","order","slim","slotProps","tag","to"],L=["multiple","transition"],k=i.extend({name:"MountingPortal",inheritAttrs:!1,props:{append:{type:[Boolean,String]},bail:{type:Boolean},mountTo:{type:String,required:!0},disabled:{type:Boolean},name:{type:String,default:function(){return"mounted_"+String(w++)}},order:{type:Number,default:0},slim:{type:Boolean},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"DIV"},to:{type:String,default:function(){return String(Math.round(1e7*Math.random()))}},multiple:{type:Boolean,default:!1},targetSlim:{type:Boolean},targetSlotProps:{type:Object,default:function(){return{}}},targetTag:{type:String,default:"div"},transition:{type:[String,Object,Function]}},created:function(){if("undefined"!==typeof document){var t=document.querySelector(this.mountTo);if(t){var e=this.$props;if(g.targets[e.name])e.bail?console.warn("[portal-vue]: Target ".concat(e.name," is already mounted.\n Aborting because 'bail: true' is set")):this.portalTarget=g.targets[e.name];else{var n=e.append;if(n){var r="string"===typeof n?n:"DIV",i=document.createElement(r);t.appendChild(i),t=i}var a=p(this.$props,L);a.slim=this.targetSlim,a.tag=this.targetTag,a.slotProps=this.targetSlotProps,a.name=this.to,this.portalTarget=new j({el:t,parent:this.$parent||this,propsData:a})}}else console.error("[portal-vue]: Mount Point '".concat(this.mountTo,"' not found in document"))}},beforeDestroy:function(){var t=this.portalTarget;if(this.append){var e=t.$el;e.parentNode.removeChild(e)}t.$destroy()},render:function(t){if(!this.portalTarget)return console.warn("[portal-vue] Target wasn't mounted"),t();if(!this.$scopedSlots.manual){var e=p(this.$props,M);return t(O,{props:e,attrs:this.$attrs,on:this.$listeners,scopedSlots:this.$scopedSlots},this.$slots.default)}var n=this.$scopedSlots.manual({to:this.to});return Array.isArray(n)&&(n=n[0]),n||t()}});function T(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.component(e.portalName||"Portal",O),t.component(e.portalTargetName||"PortalTarget",j),t.component(e.MountingPortalName||"MountingPortal",k)}var D={install:T};e.default=D,e.Portal=O,e.PortalTarget=j,e.MountingPortal=k,e.Wormhole=g},"2bfb":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration -var e=t.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(t){return/^nm$/i.test(t)},meridiem:function(t,e,n){return t<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}});return e}))},"2cf4":function(t,e,n){var r,i,a,o=n("da84"),s=n("d039"),c=n("0366"),u=n("1be4"),l=n("cc12"),d=n("1cdc"),f=n("605d"),h=o.location,p=o.setImmediate,m=o.clearImmediate,b=o.process,v=o.MessageChannel,_=o.Dispatch,g=0,y={},O="onreadystatechange",j=function(t){if(y.hasOwnProperty(t)){var e=y[t];delete y[t],e()}},w=function(t){return function(){j(t)}},M=function(t){j(t.data)},L=function(t){o.postMessage(t+"",h.protocol+"//"+h.host)};p&&m||(p=function(t){var e=[],n=1;while(arguments.length>n)e.push(arguments[n++]);return y[++g]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},r(g),g},m=function(t){delete y[t]},f?r=function(t){b.nextTick(w(t))}:_&&_.now?r=function(t){_.now(w(t))}:v&&!d?(i=new v,a=i.port2,i.port1.onmessage=M,r=c(a.postMessage,a,1)):o.addEventListener&&"function"==typeof postMessage&&!o.importScripts&&h&&"file:"!==h.protocol&&!s(L)?(r=L,o.addEventListener("message",M,!1)):r=O in l("script")?function(t){u.appendChild(l("script"))[O]=function(){u.removeChild(this),j(t)}}:function(t){setTimeout(w(t),0)}),t.exports={set:p,clear:m}},"2d00":function(t,e,n){var r,i,a=n("da84"),o=n("342f"),s=a.process,c=s&&s.versions,u=c&&c.v8;u?(r=u.split("."),i=r[0]+r[1]):o&&(r=o.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=o.match(/Chrome\/(\d+)/),r&&(i=r[1]))),t.exports=i&&+i},"2d83":function(t,e,n){"use strict";var r=n("387f");t.exports=function(t,e,n,i,a){var o=new Error(t);return r(o,e,n,i,a)}},"2dd8":function(t,e,n){},"2e67":function(t,e,n){"use strict";t.exports=function(t){return!(!t||!t.__CANCEL__)}},"2e8c":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; +var e=t.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(t){return/^nm$/i.test(t)},meridiem:function(t,e,n){return t<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}});return e}))},"2cf4":function(t,e,n){var r,i,a,o=n("da84"),s=n("d039"),c=n("0366"),u=n("1be4"),l=n("cc12"),d=n("1cdc"),f=n("605d"),h=o.location,p=o.setImmediate,m=o.clearImmediate,b=o.process,v=o.MessageChannel,_=o.Dispatch,g=0,y={},O="onreadystatechange",j=function(t){if(y.hasOwnProperty(t)){var e=y[t];delete y[t],e()}},w=function(t){return function(){j(t)}},M=function(t){j(t.data)},L=function(t){o.postMessage(t+"",h.protocol+"//"+h.host)};p&&m||(p=function(t){var e=[],n=1;while(arguments.length>n)e.push(arguments[n++]);return y[++g]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},r(g),g},m=function(t){delete y[t]},f?r=function(t){b.nextTick(w(t))}:_&&_.now?r=function(t){_.now(w(t))}:v&&!d?(i=new v,a=i.port2,i.port1.onmessage=M,r=c(a.postMessage,a,1)):o.addEventListener&&"function"==typeof postMessage&&!o.importScripts&&h&&"file:"!==h.protocol&&!s(L)?(r=L,o.addEventListener("message",M,!1)):r=O in l("script")?function(t){u.appendChild(l("script"))[O]=function(){u.removeChild(this),j(t)}}:function(t){setTimeout(w(t),0)}),t.exports={set:p,clear:m}},"2d00":function(t,e,n){var r,i,a=n("da84"),o=n("342f"),s=a.process,c=s&&s.versions,u=c&&c.v8;u?(r=u.split("."),i=r[0]<4?1:r[0]+r[1]):o&&(r=o.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=o.match(/Chrome\/(\d+)/),r&&(i=r[1]))),t.exports=i&&+i},"2d83":function(t,e,n){"use strict";var r=n("387f");t.exports=function(t,e,n,i,a){var o=new Error(t);return r(o,e,n,i,a)}},"2dd8":function(t,e,n){},"2e67":function(t,e,n){"use strict";t.exports=function(t){return!(!t||!t.__CANCEL__)}},"2e8c":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration var e=t.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}});return e}))},"2f79":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));n("b42e");var r="_uid"},"30b5":function(t,e,n){"use strict";var r=n("c532");function i(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}t.exports=function(t,e,n){if(!e)return t;var a;if(n)a=n(e);else if(r.isURLSearchParams(e))a=e.toString();else{var o=[];r.forEach(e,(function(t,e){null!==t&&"undefined"!==typeof t&&(r.isArray(t)?e+="[]":t=[t],r.forEach(t,(function(t){r.isDate(t)?t=t.toISOString():r.isObject(t)&&(t=JSON.stringify(t)),o.push(i(e)+"="+i(t))})))})),a=o.join("&")}if(a){var s=t.indexOf("#");-1!==s&&(t=t.slice(0,s)),t+=(-1===t.indexOf("?")?"?":"&")+a}return t}},"342f":function(t,e,n){var r=n("d066");t.exports=r("navigator","userAgent")||""},"35a1":function(t,e,n){var r=n("f5df"),i=n("3f8c"),a=n("b622"),o=a("iterator");t.exports=function(t){if(void 0!=t)return t[o]||t["@@iterator"]||i[r(t)]}},"365c":function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return s}));var r=n("2326"),i=n("6c06"),a=n("7b1e"),o=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t=Object(r["b"])(t).filter(i["a"]),t.some((function(t){return e[t]||n[t]}))},s=function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};t=Object(r["b"])(t).filter(i["a"]);for(var c=0;cc)i.f(t,n=r[c++],e[n]);return t}},"387f":function(t,e,n){"use strict";t.exports=function(t,e,n,r,i){return t.config=e,n&&(t.code=n),t.request=r,t.response=i,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},t}},3886:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration @@ -92,7 +92,7 @@ var e=t.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبري //! moment.js locale configuration function e(t,e,n,r){var i={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return e?i[n][0]:i[n][1]}function n(t){var e=t.substr(0,t.indexOf(" "));return i(e)?"a "+t:"an "+t}function r(t){var e=t.substr(0,t.indexOf(" "));return i(e)?"viru "+t:"virun "+t}function i(t){if(t=parseInt(t,10),isNaN(t))return!1;if(t<0)return!0;if(t<10)return 4<=t&&t<=7;if(t<100){var e=t%10,n=t/10;return i(0===e?n:e)}if(t<1e4){while(t>=10)t/=10;return i(t)}return t/=1e3,i(t)}var a=t.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:n,past:r,s:"e puer Sekonnen",ss:"%d Sekonnen",m:e,mm:"%d Minutten",h:e,hh:"%d Stonnen",d:e,dd:"%d Deeg",M:e,MM:"%d Méint",y:e,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return a}))},"44ad":function(t,e,n){var r=n("d039"),i=n("c6b6"),a="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==i(t)?a.call(t,""):Object(t)}:Object},"44d2":function(t,e,n){var r=n("b622"),i=n("7c73"),a=n("9bf2"),o=r("unscopables"),s=Array.prototype;void 0==s[o]&&a.f(s,o,{configurable:!0,value:i(null)}),t.exports=function(t){s[o][t]=!0}},"44de":function(t,e,n){var r=n("da84");t.exports=function(t,e){var n=r.console;n&&n.error&&(1===arguments.length?n.error(t):n.error(t,e))}},"44e7":function(t,e,n){var r=n("861d"),i=n("c6b6"),a=n("b622"),o=a("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[o])?!!e:"RegExp"==i(t))}},"466d":function(t,e,n){"use strict";var r=n("d784"),i=n("825a"),a=n("50c4"),o=n("1d80"),s=n("8aa5"),c=n("14c3");r("match",1,(function(t,e,n){return[function(e){var n=o(this),r=void 0==e?void 0:e[t];return void 0!==r?r.call(e,n):new RegExp(e)[t](String(n))},function(t){var r=n(e,t,this);if(r.done)return r.value;var o=i(t),u=String(this);if(!o.global)return c(o,u);var l=o.unicode;o.lastIndex=0;var d,f=[],h=0;while(null!==(d=c(o,u))){var p=String(d[0]);f[h]=p,""===p&&(o.lastIndex=s(u,a(o.lastIndex),l)),h++}return 0===h?null:f}]}))},"467f":function(t,e,n){"use strict";var r=n("2d83");t.exports=function(t,e,n){var i=n.config.validateStatus;n.status&&i&&!i(n.status)?e(r("Request failed with status code "+n.status,n.config,null,n.request,n)):t(n)}},4840:function(t,e,n){var r=n("825a"),i=n("1c0b"),a=n("b622"),o=a("species");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||void 0==(n=r(a)[o])?e:i(n)}},"485c":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration -var e={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"},n=t.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"bir neçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(t){return/^(gündüz|axşam)$/.test(t)},meridiem:function(t,e,n){return t<4?"gecə":t<12?"səhər":t<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(t){if(0===t)return t+"-ıncı";var n=t%10,r=t%100-n,i=t>=100?100:null;return t+(e[n]||e[r]||e[i])},week:{dow:1,doy:7}});return n}))},4930:function(t,e,n){var r=n("605d"),i=n("2d00"),a=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!a((function(){return!Symbol.sham&&(r?38===i:i>37&&i<41)}))},"493b":function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var r=n("8c4e"),i=Object(r["a"])("$attrs","bvAttrs")},"49ab":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; +var e={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"},n=t.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"bir neçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(t){return/^(gündüz|axşam)$/.test(t)},meridiem:function(t,e,n){return t<4?"gecə":t<12?"səhər":t<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(t){if(0===t)return t+"-ıncı";var n=t%10,r=t%100-n,i=t>=100?100:null;return t+(e[n]||e[r]||e[i])},week:{dow:1,doy:7}});return n}))},4930:function(t,e,n){var r=n("2d00"),i=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!i((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},"493b":function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var r=n("8c4e"),i=Object(r["a"])("$attrs","bvAttrs")},"49ab":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration var e=t.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"中午"===e?t>=11?t:t+12:"下午"===e||"晚上"===e?t+12:void 0},meridiem:function(t,e,n){var r=100*t+e;return r<600?"凌晨":r<900?"早上":r<1200?"上午":1200===r?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"週";default:return t}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}});return e}))},"4a38":function(t,e,n){"use strict";n.d(e,"f",(function(){return h})),n.d(e,"d",(function(){return p})),n.d(e,"e",(function(){return m})),n.d(e,"c",(function(){return b})),n.d(e,"b",(function(){return v})),n.d(e,"a",(function(){return _}));var r=n("992e"),i=n("906c"),a=n("7b1e"),o=n("d82f"),s=n("fa73"),c="a",u=function(t){return"%"+t.charCodeAt(0).toString(16)},l=function(t){return encodeURIComponent(Object(s["g"])(t)).replace(r["j"],u).replace(r["i"],",")},d=decodeURIComponent,f=function(t){if(!Object(a["k"])(t))return"";var e=Object(o["h"])(t).map((function(e){var n=t[e];return Object(a["o"])(n)?"":Object(a["g"])(n)?l(e):Object(a["a"])(n)?n.reduce((function(t,n){return Object(a["g"])(n)?t.push(l(e)):Object(a["o"])(n)||t.push(l(e)+"="+l(n)),t}),[]).join("&"):l(e)+"="+l(n)})).filter((function(t){return t.length>0})).join("&");return e?"?".concat(e):""},h=function(t){var e={};return t=Object(s["g"])(t).trim().replace(r["u"],""),t?(t.split("&").forEach((function(t){var n=t.replace(r["t"]," ").split("="),i=d(n.shift()),o=n.length>0?d(n.join("=")):null;Object(a["o"])(e[i])?e[i]=o:Object(a["a"])(e[i])?e[i].push(o):e[i]=[e[i],o]})),e):e},p=function(t){return!(!t.href&&!t.to)},m=function(t){return!(!t||Object(i["t"])(t,"a"))},b=function(t,e){var n=t.to,r=t.disabled,i=t.routerComponentName,a=!!e.$router;return!a||a&&(r||!n)?c:i||(e.$nuxt?"nuxt-link":"router-link")},v=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.target,n=t.rel;return"_blank"===e&&Object(a["g"])(n)?"noopener":n||null},_=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.href,n=t.to,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"#",o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"/";if(e)return e;if(m(r))return null;if(Object(a["n"])(n))return n||o;if(Object(a["k"])(n)&&(n.path||n.query||n.hash)){var u=Object(s["g"])(n.path),l=f(n.query),d=Object(s["g"])(n.hash);return d=d&&"#"!==d.charAt(0)?"#".concat(d):d,"".concat(u).concat(l).concat(d)||o}return i}},"4a7b":function(t,e,n){"use strict";var r=n("c532");t.exports=function(t,e){e=e||{};var n={},i=["url","method","data"],a=["headers","auth","proxy","params"],o=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],s=["validateStatus"];function c(t,e){return r.isPlainObject(t)&&r.isPlainObject(e)?r.merge(t,e):r.isPlainObject(e)?r.merge({},e):r.isArray(e)?e.slice():e}function u(i){r.isUndefined(e[i])?r.isUndefined(t[i])||(n[i]=c(void 0,t[i])):n[i]=c(t[i],e[i])}r.forEach(i,(function(t){r.isUndefined(e[t])||(n[t]=c(void 0,e[t]))})),r.forEach(a,u),r.forEach(o,(function(i){r.isUndefined(e[i])?r.isUndefined(t[i])||(n[i]=c(void 0,t[i])):n[i]=c(void 0,e[i])})),r.forEach(s,(function(r){r in e?n[r]=c(t[r],e[r]):r in t&&(n[r]=c(void 0,t[r]))}));var l=i.concat(a).concat(o).concat(s),d=Object.keys(t).concat(Object.keys(e)).filter((function(t){return-1===l.indexOf(t)}));return r.forEach(d,u),n}},"4ba9":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration @@ -100,13 +100,13 @@ function e(t,e,n){var r=t+" ";switch(n){case"ss":return r+=1===t?"sekunda":2===t //! moment.js locale configuration var e=t.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"siang"===e?t>=11?t:t+12:"sore"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"siang":t<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:0,doy:6}});return e}))},"50c4":function(t,e,n){var r=n("a691"),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},"50d3":function(t,e,n){"use strict";n.d(e,"b",(function(){return r})),n.d(e,"c",(function(){return i})),n.d(e,"a",(function(){return a}));var r="BvConfig",i="$bvConfig",a=["xs","sm","md","lg","xl"]},5120:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration -var e=["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Meitheamh","Iúil","Lúnasa","Meán Fómhair","Deireadh Fómhair","Samhain","Nollaig"],n=["Ean","Feabh","Márt","Aib","Beal","Meith","Iúil","Lún","M.F.","D.F.","Samh","Noll"],r=["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Sathairn"],i=["Domh","Luan","Máirt","Céad","Déar","Aoine","Sath"],a=["Do","Lu","Má","Cé","Dé","A","Sa"],o=t.defineLocale("ga",{months:e,monthsShort:n,monthsParseExact:!0,weekdays:r,weekdaysShort:i,weekdaysMin:a,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d míonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(t){var e=1===t?"d":t%10===2?"na":"mh";return t+e},week:{dow:1,doy:4}});return o}))},5135:function(t,e,n){var r=n("7b0b"),i={}.hasOwnProperty;t.exports=function(t,e){return i.call(r(t),e)}},5270:function(t,e,n){"use strict";var r=n("c532"),i=n("c401"),a=n("2e67"),o=n("2444");function s(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){s(t),t.headers=t.headers||{},t.data=i(t.data,t.headers,t.transformRequest),t.headers=r.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]}));var e=t.adapter||o.adapter;return e(t).then((function(e){return s(t),e.data=i(e.data,e.headers,t.transformResponse),e}),(function(e){return a(e)||(s(t),e&&e.response&&(e.response.data=i(e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},5294:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; +var e=["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Meitheamh","Iúil","Lúnasa","Meán Fómhair","Deireadh Fómhair","Samhain","Nollaig"],n=["Ean","Feabh","Márt","Aib","Beal","Meith","Iúil","Lún","M.F.","D.F.","Samh","Noll"],r=["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Sathairn"],i=["Domh","Luan","Máirt","Céad","Déar","Aoine","Sath"],a=["Do","Lu","Má","Cé","Dé","A","Sa"],o=t.defineLocale("ga",{months:e,monthsShort:n,monthsParseExact:!0,weekdays:r,weekdaysShort:i,weekdaysMin:a,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d míonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(t){var e=1===t?"d":t%10===2?"na":"mh";return t+e},week:{dow:1,doy:4}});return o}))},5135:function(t,e,n){var r=n("7b0b"),i={}.hasOwnProperty;t.exports=Object.hasOwn||function(t,e){return i.call(r(t),e)}},5270:function(t,e,n){"use strict";var r=n("c532"),i=n("c401"),a=n("2e67"),o=n("2444");function s(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){s(t),t.headers=t.headers||{},t.data=i(t.data,t.headers,t.transformRequest),t.headers=r.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]}));var e=t.adapter||o.adapter;return e(t).then((function(e){return s(t),e.data=i(e.data,e.headers,t.transformResponse),e}),(function(e){return a(e)||(s(t),e&&e.response&&(e.response.data=i(e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},5294:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration var e=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"],r=t.defineLocale("ur",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(t){return"شام"===t},meridiem:function(t,e,n){return t<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:4}});return r}))},"52bd":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration var e=t.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(t,e,n){return t<11?"ekuseni":t<15?"emini":t<19?"entsambama":"ebusuku"},meridiemHour:function(t,e){return 12===t&&(t=0),"ekuseni"===e?t:"emini"===e?t>=11?t:t+12:"entsambama"===e||"ebusuku"===e?0===t?0:t+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}});return e}))},5319:function(t,e,n){"use strict";var r=n("d784"),i=n("825a"),a=n("50c4"),o=n("a691"),s=n("1d80"),c=n("8aa5"),u=n("0cb2"),l=n("14c3"),d=Math.max,f=Math.min,h=function(t){return void 0===t?t:String(t)};r("replace",2,(function(t,e,n,r){var p=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,m=r.REPLACE_KEEPS_$0,b=p?"$":"$0";return[function(n,r){var i=s(this),a=void 0==n?void 0:n[t];return void 0!==a?a.call(n,i,r):e.call(String(i),n,r)},function(t,r){if(!p&&m||"string"===typeof r&&-1===r.indexOf(b)){var s=n(e,t,this,r);if(s.done)return s.value}var v=i(t),_=String(this),g="function"===typeof r;g||(r=String(r));var y=v.global;if(y){var O=v.unicode;v.lastIndex=0}var j=[];while(1){var w=l(v,_);if(null===w)break;if(j.push(w),!y)break;var M=String(w[0]);""===M&&(v.lastIndex=c(_,a(v.lastIndex),O))}for(var L="",k=0,T=0;T=k&&(L+=_.slice(k,S)+E,k=S+D.length)}return L+_.slice(k)}]}))},"55c9":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration -var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],i=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,a=t.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,r){return t?/-MMM-/.test(r)?n[t.month()]:e[t.month()]:e},monthsRegex:i,monthsShortRegex:i,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}});return a}))},5692:function(t,e,n){var r=n("c430"),i=n("c6cd");(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.11.0",mode:r?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},"56ef":function(t,e,n){var r=n("d066"),i=n("241c"),a=n("7418"),o=n("825a");t.exports=r("Reflect","ownKeys")||function(t){var e=i.f(o(t)),n=a.f;return n?e.concat(n(t)):e}},"576c":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; +var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],i=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,a=t.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,r){return t?/-MMM-/.test(r)?n[t.month()]:e[t.month()]:e},monthsRegex:i,monthsShortRegex:i,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}});return a}))},5692:function(t,e,n){var r=n("c430"),i=n("c6cd");(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.14.0",mode:r?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},"56ef":function(t,e,n){var r=n("d066"),i=n("241c"),a=n("7418"),o=n("825a");t.exports=r("Reflect","ownKeys")||function(t){var e=i.f(o(t)),n=a.f;return n?e.concat(n(t)):e}},"576c":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration var e=t.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10,n=1===~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+n},week:{dow:1,doy:4}});return e}))},"585a":function(t,e,n){(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(this,n("c8ba"))},5899:function(t,e){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},"58a8":function(t,e,n){var r=n("1d80"),i=n("5899"),a="["+i+"]",o=RegExp("^"+a+a+"*"),s=RegExp(a+a+"*$"),c=function(t){return function(e){var n=String(r(e));return 1&t&&(n=n.replace(o,"")),2&t&&(n=n.replace(s,"")),n}};t.exports={start:c(1),end:c(2),trim:c(3)}},"58f2":function(t,e,n){"use strict";n.d(e,"a",(function(){return c}));var r=n("a026"),i=n("0056"),a=n("a723"),o=n("cf75");function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var c=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.type,c=void 0===n?a["a"]:n,u=e.defaultValue,l=void 0===u?void 0:u,d=e.validator,f=void 0===d?void 0:d,h=e.event,p=void 0===h?i["y"]:h,m=s({},t,Object(o["c"])(c,l,f)),b=r["default"].extend({model:{prop:t,event:p},props:m});return{mixin:b,props:m,prop:t,event:p}}},"598a":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration @@ -127,7 +127,7 @@ var e=t.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మ * https://github.com/twbs/icons/blob/master/LICENSE.md */function Vt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function zt(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:"";return String(t).replace(s["o"],"")},Je=function(t,e){return t?{innerHTML:t}:e?{textContent:e}:{}};function qe(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Ke(t){for(var e=1;e-1&&(e=e.slice(0,n).reverse(),Object(A["d"])(e[0]))},focusNext:function(t){var e=this.getItems(),n=e.indexOf(t.target);n>-1&&(e=e.slice(n+1),Object(A["d"])(e[0]))},focusLast:function(){var t=this.getItems().reverse();Object(A["d"])(t[0])},onFocusin:function(t){var e=this.$el;t.target!==e||Object(A["f"])(e,t.relatedTarget)||(Object(le["f"])(t),this.focusFirst(t))},onKeydown:function(t){var e=t.keyCode,n=t.shiftKey;e===ce||e===re?(Object(le["f"])(t),n?this.focusFirst(t):this.focusPrev(t)):e!==Zt&&e!==oe||(Object(le["f"])(t),n?this.focusLast(t):this.focusNext(t))}},render:function(t){var e=this.keyNav;return t("div",{staticClass:"btn-toolbar",class:{"justify-content-between":this.justify},attrs:{role:"toolbar",tabindex:e?"0":null},on:e?{focusin:this.onFocusin,keydown:this.onKeydown}:{}},[this.normalizeSlot()])}}),gn=L({components:{BButtonToolbar:_n,BBtnToolbar:_n}}),yn="gregory",On="long",jn="narrow",wn="short",Mn="2-digit",Ln="numeric";function kn(t,e){return xn(t)||Yn(t,e)||Dn(t,e)||Tn()}function Tn(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Dn(t,e){if(t){if("string"===typeof t)return Sn(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Sn(t,e):void 0}}function Sn(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:yn;t=Object(ue["b"])(t).filter(c["a"]);var n=new Intl.DateTimeFormat(t,{calendar:e});return n.resolvedOptions().locale},Bn=function(t,e){var n=new Intl.DateTimeFormat(t,e);return n.format},Rn=function(t,e){return Fn(t)===Fn(e)},Nn=function(t){return t=An(t),t.setDate(1),t},Vn=function(t){return t=An(t),t.setMonth(t.getMonth()+1),t.setDate(0),t},zn=function(t,e){t=An(t);var n=t.getMonth();return t.setFullYear(t.getFullYear()+e),t.getMonth()!==n&&t.setDate(0),t},Wn=function(t){t=An(t);var e=t.getMonth();return t.setMonth(e-1),t.getMonth()===e&&t.setDate(0),t},Un=function(t){t=An(t);var e=t.getMonth();return t.setMonth(e+1),t.getMonth()===(e+2)%12&&t.setDate(0),t},Gn=function(t){return zn(t,-1)},Jn=function(t){return zn(t,1)},qn=function(t){return zn(t,-10)},Kn=function(t){return zn(t,10)},Xn=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return t=$n(t),e=$n(e)||t,n=$n(n)||t,t?tn?n:t:null},Zn=["ar","az","ckb","fa","he","ks","lrc","mzn","ps","sd","te","ug","ur","yi"].map((function(t){return t.toLowerCase()})),Qn=function(t){var e=Object(mt["g"])(t).toLowerCase().replace(s["A"],"").split("-"),n=e.slice(0,2).join("-"),r=e[0];return Object(ue["a"])(Zn,n)||Object(ue["a"])(Zn,r)},tr=n("3c21"),er=n("493b"),nr=n("90ef");function rr(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ir(t){for(var e=1;ee}},dateDisabled:function(){var t=this,e=this.dateOutOfRange;return function(n){n=$n(n);var r=Fn(n);return!(!e(n)&&!t.computedDateDisabledFn(r,n))}},formatDateString:function(){return Bn(this.calendarLocale,ir(ir({year:Ln,month:Mn,day:Mn},this.dateFormatOptions),{},{hour:void 0,minute:void 0,second:void 0,calendar:yn}))},formatYearMonth:function(){return Bn(this.calendarLocale,{year:Ln,month:On,calendar:yn})},formatWeekdayName:function(){return Bn(this.calendarLocale,{weekday:On,calendar:yn})},formatWeekdayNameShort:function(){return Bn(this.calendarLocale,{weekday:this.weekdayHeaderFormat||wn,calendar:yn})},formatDay:function(){var t=new Intl.NumberFormat([this.computedLocale],{style:"decimal",minimumIntegerDigits:1,minimumFractionDigits:0,maximumFractionDigits:0,notation:"standard"});return function(e){return t.format(e.getDate())}},prevDecadeDisabled:function(){var t=this.computedMin;return this.disabled||t&&Vn(qn(this.activeDate))t},nextYearDisabled:function(){var t=this.computedMax;return this.disabled||t&&Nn(Jn(this.activeDate))>t},nextDecadeDisabled:function(){var t=this.computedMax;return this.disabled||t&&Nn(Kn(this.activeDate))>t},calendar:function(){for(var t=[],e=this.calendarFirstDay,n=e.getFullYear(),r=e.getMonth(),i=this.calendarDaysInMonth,a=e.getDay(),o=(this.computedWeekStarts>a?7:0)-this.computedWeekStarts,s=0-o-a,c=0;c<6&&s0);n!==this.visible&&(this.visible=n,this.callback(n),this.once&&this.visible&&(this.doneOnce=!0,this.stop()))}},{key:"stop",value:function(){this.observer&&this.observer.disconnect(),this.observer=null}}]),t}(),ri=function(t){var e=t[ei];e&&e.stop&&e.stop(),delete t[ei]},ii=function(t,e,n){var r=e.value,i=e.modifiers,a={margin:"0px",once:!1,callback:r};Object(f["h"])(i).forEach((function(t){s["h"].test(t)?a.margin="".concat(t,"px"):"once"===t.toLowerCase()&&(a.once=!0)})),ri(t),t[ei]=new ni(t,a,n),t[ei]._prevModifiers=Object(f["b"])(i)},ai=function(t,e,n){var r=e.value,i=e.oldValue,a=e.modifiers;a=Object(f["b"])(a),!t||r===i&&t[ei]&&Object(tr["a"])(a,t[ei]._prevModifiers)||ii(t,{value:r,modifiers:a},n)},oi=function(t){ri(t)},si={bind:ii,componentUpdated:ai,unbind:oi};function ci(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ui(t){for(var e=1;e0||i.removedNodes.length>0))&&(n=!0)}n&&e()}));return r.observe(t,Di({childList:!0,subtree:!0},n)),r};function Pi(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Ci(t){for(var e=1;e0),touchStartX:0,touchDeltaX:0}},computed:{numSlides:function(){return this.slides.length}},watch:(Yi={},Ei(Yi,Fi,(function(t,e){t!==e&&this.setSlide(Object(F["c"])(t,0))})),Ei(Yi,"interval",(function(t,e){t!==e&&(t?(this.pause(!0),this.start(!1)):this.pause(!1))})),Ei(Yi,"isPaused",(function(t,e){t!==e&&this.$emit(t?C["G"]:C["ab"])})),Ei(Yi,"index",(function(t,e){t===e||this.isSliding||this.doSlide(t,e)})),Yi),created:function(){this.$_interval=null,this.$_animationTimeout=null,this.$_touchTimeout=null,this.$_observer=null,this.isPaused=!(Object(F["c"])(this.interval,0)>0)},mounted:function(){this.transitionEndEvent=Ui(this.$el)||null,this.updateSlides(),this.setObserver(!0)},beforeDestroy:function(){this.clearInterval(),this.clearAnimationTimeout(),this.clearTouchTimeout(),this.setObserver(!1)},methods:{clearInterval:function(t){function e(){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(){clearInterval(this.$_interval),this.$_interval=null})),clearAnimationTimeout:function(){clearTimeout(this.$_animationTimeout),this.$_animationTimeout=null},clearTouchTimeout:function(){clearTimeout(this.$_touchTimeout),this.$_touchTimeout=null},setObserver:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.$_observer&&this.$_observer.disconnect(),this.$_observer=null,t&&(this.$_observer=xi(this.$refs.inner,this.updateSlides.bind(this),{subtree:!1,childList:!0,attributes:!0,attributeFilter:["id"]}))},setSlide:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!(i["i"]&&document.visibilityState&&document.hidden)){var r=this.noWrap,a=this.numSlides;t=Object(nt["c"])(t),0!==a&&(this.isSliding?this.$once(C["V"],(function(){Object(A["D"])((function(){return e.setSlide(t,n)}))})):(this.direction=n,this.index=t>=a?r?a-1:0:t<0?r?0:a-1:t,r&&this.index!==t&&this.index!==this[Fi]&&this.$emit(Ii,this.index)))}},prev:function(){this.setSlide(this.index-1,"prev")},next:function(){this.setSlide(this.index+1,"next")},pause:function(t){t||(this.isPaused=!0),this.clearInterval()},start:function(t){t||(this.isPaused=!1),this.clearInterval(),this.interval&&this.numSlides>1&&(this.$_interval=setInterval(this.next,Object(nt["d"])(1e3,this.interval)))},restart:function(){this.$el.contains(Object(A["g"])())||this.start()},doSlide:function(t,e){var n=this,r=Boolean(this.interval),i=this.calcDirection(this.direction,e,t),a=i.overlayClass,o=i.dirClass,s=this.slides[e],c=this.slides[t];if(s&&c){if(this.isSliding=!0,r&&this.pause(!1),this.$emit(C["W"],t),this.$emit(Ii,this.index),this.noAnimation)Object(A["b"])(c,"active"),Object(A["A"])(s,"active"),this.isSliding=!1,this.$nextTick((function(){return n.$emit(C["V"],t)}));else{Object(A["b"])(c,a),Object(A["y"])(c),Object(A["b"])(s,o),Object(A["b"])(c,o);var u=!1,l=function e(){if(!u){if(u=!0,n.transitionEndEvent){var r=n.transitionEndEvent.split(/\s+/);r.forEach((function(t){return Object(le["a"])(c,t,e,C["cb"])}))}n.clearAnimationTimeout(),Object(A["A"])(c,o),Object(A["A"])(c,a),Object(A["b"])(c,"active"),Object(A["A"])(s,"active"),Object(A["A"])(s,o),Object(A["A"])(s,a),Object(A["G"])(s,"aria-current","false"),Object(A["G"])(c,"aria-current","true"),Object(A["G"])(s,"aria-hidden","true"),Object(A["G"])(c,"aria-hidden","false"),n.isSliding=!1,n.direction=null,n.$nextTick((function(){return n.$emit(C["V"],t)}))}};if(this.transitionEndEvent){var d=this.transitionEndEvent.split(/\s+/);d.forEach((function(t){return Object(le["b"])(c,t,l,C["cb"])}))}this.$_animationTimeout=setTimeout(l,Ri)}r&&this.start(!1)}},updateSlides:function(){this.pause(!0),this.slides=Object(A["F"])(".carousel-item",this.$refs.inner);var t=this.slides.length,e=Object(nt["d"])(0,Object(nt["e"])(Object(nt["c"])(this.index),t-1));this.slides.forEach((function(n,r){var i=r+1;r===e?(Object(A["b"])(n,"active"),Object(A["G"])(n,"aria-current","true")):(Object(A["A"])(n,"active"),Object(A["G"])(n,"aria-current","false")),Object(A["G"])(n,"aria-posinset",String(i)),Object(A["G"])(n,"aria-setsize",String(t))})),this.setSlide(e),this.start(this.isPaused)},calcDirection:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return t?Bi[t]:n>e?Bi.next:Bi.prev},handleClick:function(t,e){var n=t.keyCode;"click"!==t.type&&n!==se&&n!==te||(Object(le["f"])(t),e())},handleSwipe:function(){var t=Object(nt["a"])(this.touchDeltaX);if(!(t<=Vi)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0?this.prev():e<0&&this.next()}},touchStart:function(t){i["e"]&&zi[t.pointerType.toUpperCase()]?this.touchStartX=t.clientX:i["e"]||(this.touchStartX=t.touches[0].clientX)},touchMove:function(t){t.touches&&t.touches.length>1?this.touchDeltaX=0:this.touchDeltaX=t.touches[0].clientX-this.touchStartX},touchEnd:function(t){i["e"]&&zi[t.pointerType.toUpperCase()]&&(this.touchDeltaX=t.clientX-this.touchStartX),this.handleSwipe(),this.pause(!1),this.clearTouchTimeout(),this.$_touchTimeout=setTimeout(this.start,Ni+Object(nt["d"])(1e3,this.interval))}},render:function(t){var e=this,n=this.indicators,r=this.background,a=this.noAnimation,o=this.noHoverPause,s=this.noTouch,c=this.index,u=this.isSliding,l=this.pause,d=this.restart,f=this.touchStart,h=this.touchEnd,p=this.safeId("__BV_inner_"),m=t("div",{staticClass:"carousel-inner",attrs:{id:p,role:"list"},ref:"inner"},[this.normalizeSlot()]),b=t();if(this.controls){var v=function(n,r,i){var a=function(t){u?Object(le["f"])(t,{propagation:!1}):e.handleClick(t,i)};return t("a",{staticClass:"carousel-control-".concat(n),attrs:{href:"#",role:"button","aria-controls":p,"aria-disabled":u?"true":null},on:{click:a,keydown:a}},[t("span",{staticClass:"carousel-control-".concat(n,"-icon"),attrs:{"aria-hidden":"true"}}),t("span",{class:"sr-only"},[r])])};b=[v("prev",this.labelPrev,this.prev),v("next",this.labelNext,this.next)]}var _=t("ol",{staticClass:"carousel-indicators",directives:[{name:"show",value:n}],attrs:{id:this.safeId("__BV_indicators_"),"aria-hidden":n?"false":"true","aria-label":this.labelIndicators,"aria-owns":p}},this.slides.map((function(r,i){var a=function(t){e.handleClick(t,(function(){e.setSlide(i)}))};return t("li",{class:{active:i===c},attrs:{role:"button",id:e.safeId("__BV_indicator_".concat(i+1,"_")),tabindex:n?"0":"-1","aria-current":i===c?"true":"false","aria-label":"".concat(e.labelGotoSlide," ").concat(i+1),"aria-describedby":r.id||null,"aria-controls":p},on:{click:a,keydown:a},key:"slide_".concat(i)})}))),g={mouseenter:o?ki:l,mouseleave:o?ki:d,focusin:l,focusout:d,keydown:function(t){if(!/input|textarea/i.test(t.target.tagName)){var n=t.keyCode;n!==re&&n!==oe||(Object(le["f"])(t),e[n===re?"prev":"next"]())}}};return i["g"]&&!s&&(i["e"]?(g["&pointerdown"]=f,g["&pointerup"]=h):(g["&touchstart"]=f,g["&touchmove"]=this.touchMove,g["&touchend"]=h)),t("div",{staticClass:"carousel",class:{slide:!a,"carousel-fade":!a&&this.fade,"pointer-event":i["g"]&&i["e"]&&!s},style:{background:r},attrs:{role:"region",id:this.safeId(),"aria-busy":u?"true":"false"},on:g},[m,b,_])}});function qi(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Ki(t){for(var e=1;e0?(Object(A["G"])(t,$a,r.join(" ")),Object(A["H"])(t,Ra,"none")):(Object(A["z"])(t,$a),Object(A["C"])(t,Ra)),Object(A["D"])((function(){Ka(t,n)})),Object(tr["a"])(r,t[Ea])||(t[Ea]=r,r.forEach((function(t){n.context.$root.$emit(Wa,t)})))}},no={bind:function(t,e,n){t[Ca]=!1,t[Ea]=[],Za(t,n),eo(t,e,n)},componentUpdated:eo,updated:eo,unbind:function(t,e,n){qa(t),Xa(t,n),to(t,xa),to(t,Pa),to(t,Ca),to(t,Ea),Object(A["A"])(t,Da),Object(A["A"])(t,Sa),Object(A["z"])(t,Fa),Object(A["z"])(t,$a),Object(A["z"])(t,Ia),Object(A["C"])(t,Ra)}},ro=L({directives:{VBToggle:no}}),io=L({components:{BCollapse:Ta},plugins:{VBTogglePlugin:ro}}),ao=n("f0bd"),oo="top-start",so="top-end",co="bottom-start",uo="bottom-end",lo="right-start",fo="left-start",ho=n("ca88"),po=n("6d40"),mo=r["default"].extend({data:function(){return{listenForClickOut:!1}},watch:{listenForClickOut:function(t,e){t!==e&&(Object(le["a"])(this.clickOutElement,this.clickOutEventName,this._clickOutHandler,C["cb"]),t&&Object(le["b"])(this.clickOutElement,this.clickOutEventName,this._clickOutHandler,C["cb"]))}},beforeCreate:function(){this.clickOutElement=null,this.clickOutEventName=null},mounted:function(){this.clickOutElement||(this.clickOutElement=document),this.clickOutEventName||(this.clickOutEventName="click"),this.listenForClickOut&&Object(le["b"])(this.clickOutElement,this.clickOutEventName,this._clickOutHandler,C["cb"])},beforeDestroy:function(){Object(le["a"])(this.clickOutElement,this.clickOutEventName,this._clickOutHandler,C["cb"])},methods:{isClickOut:function(t){return!Object(A["f"])(this.$el,t.target)},_clickOutHandler:function(t){this.clickOutHandler&&this.isClickOut(t)&&this.clickOutHandler(t)}}}),bo=r["default"].extend({data:function(){return{listenForFocusIn:!1}},watch:{listenForFocusIn:function(t,e){t!==e&&(Object(le["a"])(this.focusInElement,"focusin",this._focusInHandler,C["cb"]),t&&Object(le["b"])(this.focusInElement,"focusin",this._focusInHandler,C["cb"]))}},beforeCreate:function(){this.focusInElement=null},mounted:function(){this.focusInElement||(this.focusInElement=document),this.listenForFocusIn&&Object(le["b"])(this.focusInElement,"focusin",this._focusInHandler,C["cb"])},beforeDestroy:function(){Object(le["a"])(this.focusInElement,"focusin",this._focusInHandler,C["cb"])},methods:{_focusInHandler:function(t){this.focusInHandler&&this.focusInHandler(t)}}});function vo(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function _o(t){for(var e=1;e0&&void 0!==arguments[0]&&arguments[0];this.disabled||(this.visible=!1,t&&this.$once(C["v"],this.focusToggler))},toggle:function(t){t=t||{};var e=t,n=e.type,r=e.keyCode;("click"===n||"keydown"===n&&-1!==[te,se,Zt].indexOf(r))&&(this.disabled?this.visible=!1:(this.$emit(C["Z"],t),Object(le["f"])(t),this.visible?this.hide(!0):this.show()))},onMousedown:function(t){Object(le["f"])(t,{propagation:!1})},onKeydown:function(t){var e=t.keyCode;e===ee?this.onEsc(t):e===Zt?this.focusNext(t,!1):e===ce&&this.focusNext(t,!0)},onEsc:function(t){this.visible&&(this.visible=!1,Object(le["f"])(t),this.$once(C["v"],this.focusToggler))},onSplitClick:function(t){this.disabled?this.visible=!1:this.$emit(C["f"],t)},hideHandler:function(t){var e=this,n=t.target;!this.visible||Object(A["f"])(this.$refs.menu,n)||Object(A["f"])(this.toggler,n)||(this.clearHideTimeout(),this.$_hideTimeout=setTimeout((function(){return e.hide()}),this.inNavbar?300:0))},clickOutHandler:function(t){this.hideHandler(t)},focusInHandler:function(t){this.hideHandler(t)},focusNext:function(t,e){var n=this,r=t.target;!this.visible||t&&Object(A["e"])(jo,r)||(Object(le["f"])(t),this.$nextTick((function(){var t=n.getItems();if(!(t.length<1)){var i=t.indexOf(r);e&&i>0?i--:!e&&i1&&void 0!==arguments[1]?arguments[1]:null;if(Object(u["k"])(t)){var n=d(t,this.valueField),r=d(t,this.textField);return{value:Object(u["o"])(n)?e||r:n,text:Ge(String(Object(u["o"])(r)?e:r)),html:d(t,this.htmlField),disabled:Boolean(d(t,this.disabledField))}}return{value:e||t,text:Ge(String(t)),disabled:!1}},normalizeOptions:function(t){var e=this;return Object(u["a"])(t)?t.map((function(t){return e.normalizeOption(t)})):Object(u["k"])(t)?(Object(h["a"])(ys,this.$options.name),Object(f["h"])(t).map((function(n){return e.normalizeOption(t[n]||{},n)}))):[]}}});function ws(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Ms(t){for(var e=1;e-1:Object(tr["a"])(e,t)},isRadio:function(){return!1}},watch:uc({},lc,(function(t,e){Object(tr["a"])(t,e)||this.setIndeterminate(t)})),mounted:function(){this.setIndeterminate(this[lc])},methods:{computedLocalCheckedWatcher:function(t,e){if(!Object(tr["a"])(t,e)){this.$emit(ic,t);var n=this.$refs.input;n&&this.$emit(dc,n.indeterminate)}},handleChange:function(t){var e=this,n=t.target,r=n.checked,i=n.indeterminate,a=this.value,o=this.uncheckedValue,s=this.computedLocalChecked;if(Object(u["a"])(s)){var c=Bs(s,a);r&&c<0?s=s.concat(a):!r&&c>-1&&(s=s.slice(0,c).concat(s.slice(c+1)))}else s=r?a:o;this.computedLocalChecked=s,this.$nextTick((function(){e.$emit(C["d"],s),e.isGroup&&e.bvGroup.$emit(C["d"],s),e.$emit(dc,i)}))},setIndeterminate:function(t){Object(u["a"])(this.computedLocalChecked)&&(t=!1);var e=this.$refs.input;e&&(e.indeterminate=t,this.$emit(dc,t))}}});function pc(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function mc(t){for(var e=1;e0&&(c=[t("div",{staticClass:"b-form-date-controls d-flex flex-wrap",class:{"justify-content-between":c.length>1,"justify-content-end":c.length<2}},c)]);var p=t(fr,{staticClass:"b-form-date-calendar w-100",props:Zc(Zc({},Object(I["e"])(ou,a)),{},{hidden:!this.isVisible,value:e,valueAsDate:!1,width:this.calendarWidth}),on:{selected:this.onSelected,input:this.onInput,context:this.onContext},scopedSlots:Object(f["k"])(o,["nav-prev-decade","nav-prev-year","nav-prev-month","nav-this-month","nav-next-month","nav-next-year","nav-next-decade"]),key:"calendar",ref:"calendar"},c);return t(Kc,{staticClass:"b-form-datepicker",props:Zc(Zc({},Object(I["e"])(su,a)),{},{formattedValue:e?this.formattedValue:"",id:this.safeId(),lang:this.computedLang,menuClass:[{"bg-dark":i,"text-light":i},this.menuClass],placeholder:s,rtl:this.isRTL,value:e}),on:{show:this.onShow,shown:this.onShown,hidden:this.onHidden},scopedSlots:Qc({},H["f"],o[H["f"]]||this.defaultButtonFn),ref:"control"},[p])}}),lu=L({components:{BFormDatepicker:uu,BDatepicker:uu}});function du(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function fu(t){for(var e=1;e1&&void 0!==arguments[1])||arguments[1];return Promise.all(Object(ue["f"])(t).filter((function(t){return"file"===t.kind})).map((function(t){var n=Ou(t);if(n){if(n.isDirectory&&e)return wu(n.createReader(),"".concat(n.name,"/"));if(n.isFile)return new Promise((function(t){n.file((function(e){e.$path="",t(e)}))}))}return null})).filter(c["a"]))},wu=function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return new Promise((function(r){var i=[],a=function a(){e.readEntries((function(e){0===e.length?r(Promise.all(i).then((function(t){return Object(ue["d"])(t)}))):(i.push(Promise.all(e.map((function(e){if(e){if(e.isDirectory)return t(e.createReader(),"".concat(n).concat(e.name,"/"));if(e.isFile)return new Promise((function(t){e.file((function(e){e.$path="".concat(n).concat(e.name),t(e)}))}))}return null})).filter(c["a"]))),a())}))};a()}))},Mu=Object(I["d"])(Object(f["m"])(fu(fu(fu(fu(fu(fu(fu({},nr["b"]),bu),Ns),zs),Js),Us),{},{accept:Object(I["c"])(E["u"],""),browseText:Object(I["c"])(E["u"],"Browse"),capture:Object(I["c"])(E["g"],!1),directory:Object(I["c"])(E["g"],!1),dropPlaceholder:Object(I["c"])(E["u"],"Drop files here"),fileNameFormatter:Object(I["c"])(E["l"]),multiple:Object(I["c"])(E["g"],!1),noDrop:Object(I["c"])(E["g"],!1),noDropPlaceholder:Object(I["c"])(E["u"],"Not allowed"),noTraverse:Object(I["c"])(E["g"],!1),placeholder:Object(I["c"])(E["u"],"No file chosen")})),P["S"]),Lu=r["default"].extend({name:P["S"],mixins:[er["a"],nr["a"],mu,B["a"],Vs,qs,Ws,B["a"]],inheritAttrs:!1,props:Mu,data:function(){return{files:[],dragging:!1,dropAllowed:!this.noDrop,hasFocus:!1}},computed:{computedAccept:function(){var t=this.accept;return t=(t||"").trim().split(/[,\s]+/).filter(c["a"]),0===t.length?null:t.map((function(t){var e="name",n="^",r="$";s["k"].test(t)?n="":(e="type",s["y"].test(t)&&(r=".+$",t=t.slice(0,-1))),t=Object(mt["a"])(t);var i=new RegExp("".concat(n).concat(t).concat(r));return{rx:i,prop:e}}))},computedCapture:function(){var t=this.capture;return!0===t||""===t||(t||null)},computedAttrs:function(){var t=this.name,e=this.disabled,n=this.required,r=this.form,i=this.computedCapture,a=this.accept,o=this.multiple,s=this.directory;return fu(fu({},this.bvAttrs),{},{type:"file",id:this.safeId(),name:t,disabled:e,required:n,form:r||null,capture:i,accept:a||null,multiple:o,directory:s,webkitdirectory:s,"aria-required":n?"true":null})},computedFileNameFormatter:function(){var t=this.fileNameFormatter;return Object(I["b"])(t)?t:this.defaultFileNameFormatter},clonedFiles:function(){return Object(o["a"])(this.files)},flattenedFiles:function(){return Object(ue["e"])(this.files)},fileNames:function(){return this.flattenedFiles.map((function(t){return t.name}))},labelContent:function(){if(this.dragging&&!this.noDrop)return this.normalizeSlot(H["l"],{allowed:this.dropAllowed})||(this.dropAllowed?this.dropPlaceholder:this.$createElement("span",{staticClass:"text-danger"},this.noDropPlaceholder));if(0===this.files.length)return this.normalizeSlot(H["X"])||this.placeholder;var t=this.flattenedFiles,e=this.clonedFiles,n=this.fileNames,r=this.computedFileNameFormatter;return this.hasNormalizedSlot(H["p"])?this.normalizeSlot(H["p"],{files:t,filesTraversed:e,names:n}):r(t,e,n)}},watch:(tu={},hu(tu,vu,(function(t){(!t||Object(u["a"])(t)&&0===t.length)&&this.reset()})),hu(tu,"files",(function(t,e){if(!Object(tr["a"])(t,e)){var n=this.multiple,r=this.noTraverse,i=!n||r?Object(ue["e"])(t):t;this.$emit(_u,n?i:i[0]||null)}})),tu),created:function(){this.$_form=null},mounted:function(){var t=Object(A["e"])("form",this.$el);t&&(Object(le["b"])(t,"reset",this.reset,C["db"]),this.$_form=t)},beforeDestroy:function(){var t=this.$_form;t&&Object(le["a"])(t,"reset",this.reset,C["db"])},methods:{isFileValid:function(t){if(!t)return!1;var e=this.computedAccept;return!e||e.some((function(e){return e.rx.test(t[e.prop])}))},isFilesArrayValid:function(t){var e=this;return Object(u["a"])(t)?t.every((function(t){return e.isFileValid(t)})):this.isFileValid(t)},defaultFileNameFormatter:function(t,e,n){return n.join(", ")},setFiles:function(t){this.dropAllowed=!this.noDrop,this.dragging=!1,this.files=this.multiple?this.directory?t:Object(ue["e"])(t):Object(ue["e"])(t).slice(0,1)},setInputFiles:function(t){try{var e=new ClipboardEvent("").clipboardData||new DataTransfer;Object(ue["e"])(Object(o["a"])(t)).forEach((function(t){delete t.$path,e.items.add(t)})),this.$refs.input.files=e.files}catch(n){}},reset:function(){try{var t=this.$refs.input;t.value="",t.type="",t.type="file"}catch(e){}this.files=[]},handleFiles:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(e){var n=t.filter(this.isFilesArrayValid);n.length>0&&(this.setFiles(n),this.setInputFiles(n))}else this.setFiles(t)},focusHandler:function(t){this.plain||"focusout"===t.type?this.hasFocus=!1:this.hasFocus=!0},onChange:function(t){var e=this,n=t.type,r=t.target,a=t.dataTransfer,o=void 0===a?{}:a,s="drop"===n;this.$emit(C["d"],t);var c=Object(ue["f"])(o.items||[]);if(i["f"]&&c.length>0&&!Object(u["g"])(Ou(c[0])))ju(c,this.directory).then((function(t){return e.handleFiles(t,s)}));else{var l=Object(ue["f"])(r.files||o.files||[]).map((function(t){return t.$path=t.webkitRelativePath||"",t}));this.handleFiles(l,s)}},onDragenter:function(t){Object(le["f"])(t),this.dragging=!0;var e=t.dataTransfer,n=void 0===e?{}:e;if(this.noDrop||this.disabled||!this.dropAllowed)return n.dropEffect="none",void(this.dropAllowed=!1);n.dropEffect="copy"},onDragover:function(t){Object(le["f"])(t),this.dragging=!0;var e=t.dataTransfer,n=void 0===e?{}:e;if(this.noDrop||this.disabled||!this.dropAllowed)return n.dropEffect="none",void(this.dropAllowed=!1);n.dropEffect="copy"},onDragleave:function(t){var e=this;Object(le["f"])(t),this.$nextTick((function(){e.dragging=!1,e.dropAllowed=!e.noDrop}))},onDrop:function(t){var e=this;Object(le["f"])(t),this.dragging=!1,this.noDrop||this.disabled||!this.dropAllowed?this.$nextTick((function(){e.dropAllowed=!e.noDrop})):this.onChange(t)}},render:function(t){var e=this.custom,n=this.plain,r=this.size,i=this.dragging,a=this.stateClass,o=this.bvAttrs,s=t("input",{class:[{"form-control-file":n,"custom-file-input":e,focus:e&&this.hasFocus},a],style:e?{zIndex:-5}:{},attrs:this.computedAttrs,on:{change:this.onChange,focusin:this.focusHandler,focusout:this.focusHandler,reset:this.reset},ref:"input"});if(n)return s;var c=t("label",{staticClass:"custom-file-label",class:{dragging:i},attrs:{for:this.safeId(),"data-browse":this.browseText||null}},[t("span",{staticClass:"d-block form-file-text",style:{pointerEvents:"none"}},[this.labelContent])]);return t("div",{staticClass:"custom-file b-form-file",class:[hu({},"b-custom-control-".concat(r),r),a,o.class],style:o.style,attrs:{id:this.safeId("_BV_file_outer_")},on:{dragenter:this.onDragenter,dragover:this.onDragover,dragleave:this.onDragleave,drop:this.onDrop}},[s,c])}}),ku=L({components:{BFormFile:Lu,BFile:Lu}}),Tu=n("228e"),Du=function(t){return"\\"+t},Su=function(t){t=Object(mt["g"])(t);var e=t.length,n=t.charCodeAt(0);return t.split("").reduce((function(r,i,a){var o=t.charCodeAt(a);return 0===o?r+"�":127===o||o>=1&&o<=31||0===a&&o>=48&&o<=57||1===a&&o>=48&&o<=57&&45===n?r+Du("".concat(o.toString(16)," ")):0===a&&45===o&&1===e?r+Du(i):o>=128||45===o||95===o||o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122?r+i:r+Du(i)}),"")},Yu=n("b508");function xu(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Pu(t){for(var e=1;e0||Object(f["h"])(this.labelColProps).length>0}},watch:{ariaDescribedby:function(t,e){t!==e&&this.updateAriaDescribedby(t,e)}},mounted:function(){var t=this;this.$nextTick((function(){t.updateAriaDescribedby(t.ariaDescribedby)}))},methods:{getAlignClasses:function(t,e){return Object(Tu["b"])().reduce((function(n,r){var i=t[Object(I["g"])(r,"".concat(e,"Align"))]||null;return i&&n.push(["text",r,i].filter(c["a"]).join("-")),n}),[])},getColProps:function(t,e){return Object(Tu["b"])().reduce((function(n,r){var i=t[Object(I["g"])(r,"".concat(e,"Cols"))];return i=""===i||(i||!1),Object(u["b"])(i)||"auto"===i||(i=Object(F["c"])(i,0),i=i>0&&i),i&&(n[r||(Object(u["b"])(i)?"col":"cols")]=i),n}),{})},updateAriaDescribedby:function(t,e){var n=this.labelFor;if(i["i"]&&n){var r=Object(A["E"])("#".concat(Su(n)),this.$refs.content);if(r){var a="aria-describedby",o=(t||"").split(s["x"]),u=(e||"").split(s["x"]),l=(Object(A["h"])(r,a)||"").split(s["x"]).filter((function(t){return!Object(ue["a"])(u,t)})).concat(o).filter((function(t,e,n){return n.indexOf(t)===e})).filter(c["a"]).join(" ").trim();l?Object(A["G"])(r,a,l):Object(A["z"])(r,a)}}},onLegendClick:function(t){if(!this.labelFor){var e=t.target,n=e?e.tagName:"";if(-1===Wu.indexOf(n)){var r=Object(A["F"])(zu,this.$refs.content).filter(A["u"]);1===r.length&&Object(A["d"])(r[0])}}}},render:function(t){var e=this.computedState,n=this.feedbackAriaLive,r=this.isHorizontal,i=this.labelFor,a=this.normalizeSlot,o=this.safeId,s=this.tooltip,u=o(),l=!i,d=t(),f=a(H["C"])||this.label,h=f?o("_BV_label_"):null;if(f||r){var p=this.labelSize,m=this.labelColProps,b=l?"legend":"label";this.labelSrOnly?(f&&(d=t(b,{class:"sr-only",attrs:{id:h,for:i||null}},[f])),d=t(r?Iu:"div",{props:r?m:{}},[d])):d=t(r?Iu:b,{on:l?{click:this.onLegendClick}:{},props:r?Ru(Ru({},m),{},{tag:b}):{},attrs:{id:h,for:i||null,tabindex:l?"-1":null},class:[l?"bv-no-focus-ring":"",r||l?"col-form-label":"",!r&&l?"pt-0":"",r||l?"":"d-block",p?"col-form-label-".concat(p):"",this.labelAlignClasses,this.labelClass]},[f])}var v=t(),_=a(H["B"])||this.invalidFeedback,g=_?o("_BV_feedback_invalid_"):null;_&&(v=t(Es,{props:{ariaLive:n,id:g,role:n?"alert":null,state:e,tooltip:s},attrs:{tabindex:_?"-1":null}},[_]));var y=t(),O=a(H["lb"])||this.validFeedback,j=O?o("_BV_feedback_valid_"):null;O&&(y=t(As,{props:{ariaLive:n,id:j,role:n?"alert":null,state:e,tooltip:s},attrs:{tabindex:O?"-1":null}},[O]));var w=t(),M=a(H["j"])||this.description,L=M?o("_BV_description_"):null;M&&(w=t(Ps,{attrs:{id:L,tabindex:"-1"}},[M]));var k=this.ariaDescribedby=[L,!1===e?g:null,!0===e?j:null].filter(c["a"]).join(" ")||null,T=t(r?Iu:"div",{props:r?this.contentColProps:{},ref:"content"},[a(H["i"],{ariaDescribedby:k,descriptionId:L,id:u,labelId:h})||t(),v,y,w]);return t(l?"fieldset":r?Fs:"div",{staticClass:"form-group",class:[{"was-validated":this.validated},this.stateClass],attrs:{id:u,disabled:l?this.disabled:null,role:l?null:"group","aria-invalid":this.computedAriaInvalid,"aria-labelledby":l&&r?h:null}},r&&l?[t(Fs,[d,T])]:[d,T])}},Ju=L({components:{BFormGroup:Gu,BFormFieldset:Gu}}),qu=r["default"].extend({computed:{selectionStart:{cache:!1,get:function(){return this.$refs.input.selectionStart},set:function(t){this.$refs.input.selectionStart=t}},selectionEnd:{cache:!1,get:function(){return this.$refs.input.selectionEnd},set:function(t){this.$refs.input.selectionEnd=t}},selectionDirection:{cache:!1,get:function(){return this.$refs.input.selectionDirection},set:function(t){this.$refs.input.selectionDirection=t}}},methods:{select:function(){var t;(t=this.$refs.input).select.apply(t,arguments)},setSelectionRange:function(){var t;(t=this.$refs.input).setSelectionRange.apply(t,arguments)},setRangeText:function(){var t;(t=this.$refs.input).setRangeText.apply(t,arguments)}}});function Ku(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Xu(t){for(var e=1;e2&&void 0!==arguments[2]&&arguments[2];return t=Object(mt["g"])(t),!this.hasFormatter||this.lazyFormatter&&!n||(t=this.formatter(t,e)),t},modifyValue:function(t){return t=Object(mt["g"])(t),this.trim&&(t=t.trim()),this.number&&(t=Object(F["b"])(t,t)),t},updateValue:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.lazy;if(!r||n){this.clearDebounce();var i=function(){if(t=e.modifyValue(t),t!==e.vModelValue)e.vModelValue=t,e.$emit(rl,t);else if(e.hasFormatter){var n=e.$refs.input;n&&t!==n.value&&(n.value=t)}},a=this.computedDebounce;a>0&&!r&&!n?this.$_inputDebounceTimer=setTimeout(i,a):i()}},onInput:function(t){if(!t.target.composing){var e=t.target.value,n=this.formatValue(e,t);!1===n||t.defaultPrevented?Object(le["f"])(t,{propagation:!1}):(this.localValue=n,this.updateValue(n),this.$emit(C["y"],n))}},onChange:function(t){var e=t.target.value,n=this.formatValue(e,t);!1===n||t.defaultPrevented?Object(le["f"])(t,{propagation:!1}):(this.localValue=n,this.updateValue(n,!0),this.$emit(C["d"],n))},onBlur:function(t){var e=t.target.value,n=this.formatValue(e,t,!0);!1!==n&&(this.localValue=Object(mt["g"])(this.modifyValue(n)),this.updateValue(n,!0)),this.$emit(C["b"],t)},focus:function(){this.disabled||Object(A["d"])(this.$el)},blur:function(){this.disabled||Object(A["c"])(this.$el)}}}),ol=r["default"].extend({computed:{validity:{cache:!1,get:function(){return this.$refs.input.validity}},validationMessage:{cache:!1,get:function(){return this.$refs.input.validationMessage}},willValidate:{cache:!1,get:function(){return this.$refs.input.willValidate}}},methods:{setCustomValidity:function(){var t;return(t=this.$refs.input).setCustomValidity.apply(t,arguments)},checkValidity:function(){var t;return(t=this.$refs.input).checkValidity.apply(t,arguments)},reportValidity:function(){var t;return(t=this.$refs.input).reportValidity.apply(t,arguments)}}}),sl=n("bc9a");function cl(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ul(t){for(var e=1;e=n?"full":e>=n-.5?"half":"empty",l={variant:a,disabled:o,readonly:s};return t("span",{staticClass:"b-rating-star",class:{focused:r&&e===n||!Object(F["c"])(e)&&n===c,"b-rating-star-empty":"empty"===u,"b-rating-star-half":"half"===u,"b-rating-star-full":"full"===u},attrs:{tabindex:o||s?null:"-1"},on:{click:this.onClick}},[t("span",{staticClass:"b-rating-icon"},[this.normalizeSlot(u,l)])])}}),Pl=Object(I["d"])(Object(f["m"])(yl(yl(yl(yl(yl({},nr["b"]),Ml),Object(f["j"])(Ns,["required","autofocus"])),Us),{},{color:Object(I["c"])(E["u"]),iconClear:Object(I["c"])(E["u"],"x"),iconEmpty:Object(I["c"])(E["u"],"star"),iconFull:Object(I["c"])(E["u"],"star-fill"),iconHalf:Object(I["c"])(E["u"],"star-half"),inline:Object(I["c"])(E["g"],!1),locale:Object(I["c"])(E["f"]),noBorder:Object(I["c"])(E["g"],!1),precision:Object(I["c"])(E["p"]),readonly:Object(I["c"])(E["g"],!1),showClear:Object(I["c"])(E["g"],!1),showValue:Object(I["c"])(E["g"],!1),showValueMax:Object(I["c"])(E["g"],!1),stars:Object(I["c"])(E["p"],Dl,(function(t){return Object(F["c"])(t)>=Tl})),variant:Object(I["c"])(E["u"])})),P["Y"]),Cl=r["default"].extend({name:P["Y"],components:{BIconStar:It,BIconStarHalf:Rt,BIconStarFill:Bt,BIconX:Nt},mixins:[nr["a"],wl,Gs],props:Pl,data:function(){var t=Object(F["b"])(this[Ll],null),e=Sl(this.stars);return{localValue:Object(u["g"])(t)?null:Yl(t,0,e),hasFocus:!1}},computed:{computedStars:function(){return Sl(this.stars)},computedRating:function(){var t=Object(F["b"])(this.localValue,0),e=Object(F["c"])(this.precision,3);return Yl(Object(F["b"])(t.toFixed(e)),0,this.computedStars)},computedLocale:function(){var t=Object(ue["b"])(this.locale).filter(c["a"]),e=new Intl.NumberFormat(t);return e.resolvedOptions().locale},isInteractive:function(){return!this.disabled&&!this.readonly},isRTL:function(){return Qn(this.computedLocale)},formattedRating:function(){var t=Object(F["c"])(this.precision),e=this.showValueMax,n=this.computedLocale,r={notation:"standard",minimumFractionDigits:isNaN(t)?0:t,maximumFractionDigits:isNaN(t)?3:t},i=this.computedStars.toLocaleString(n),a=this.localValue;return a=Object(u["g"])(a)?e?"-":"":a.toLocaleString(n,r),e?"".concat(a,"/").concat(i):a}},watch:(dl={},Ol(dl,Ll,(function(t,e){if(t!==e){var n=Object(F["b"])(t,null);this.localValue=Object(u["g"])(n)?null:Yl(n,0,this.computedStars)}})),Ol(dl,"localValue",(function(t,e){t!==e&&t!==(this.value||0)&&this.$emit(kl,t||null)})),Ol(dl,"disabled",(function(t){t&&(this.hasFocus=!1,this.blur())})),dl),methods:{focus:function(){this.disabled||Object(A["d"])(this.$el)},blur:function(){this.disabled||Object(A["c"])(this.$el)},onKeydown:function(t){var e=t.keyCode;if(this.isInteractive&&Object(ue["a"])([re,Zt,oe,ce],e)){Object(le["f"])(t,{propagation:!1});var n=Object(F["c"])(this.localValue,0),r=this.showClear?0:1,i=this.computedStars,a=this.isRTL?-1:1;e===re?this.localValue=Yl(n-a,r,i)||null:e===oe?this.localValue=Yl(n+a,r,i):e===Zt?this.localValue=Yl(n-1,r,i)||null:e===ce&&(this.localValue=Yl(n+1,r,i))}},onSelected:function(t){this.isInteractive&&(this.localValue=t)},onFocus:function(t){this.hasFocus=!!this.isInteractive&&"focus"===t.type},renderIcon:function(t){return this.$createElement(qt,{props:{icon:t,variant:this.disabled||this.color?null:this.variant||null}})},iconEmptyFn:function(){return this.renderIcon(this.iconEmpty)},iconHalfFn:function(){return this.renderIcon(this.iconHalf)},iconFullFn:function(){return this.renderIcon(this.iconFull)},iconClearFn:function(){return this.$createElement(qt,{props:{icon:this.iconClear}})}},render:function(t){var e=this,n=this.disabled,r=this.readonly,i=this.name,a=this.form,o=this.inline,s=this.variant,c=this.color,l=this.noBorder,d=this.hasFocus,f=this.computedRating,h=this.computedStars,p=this.formattedRating,m=this.showClear,b=this.isRTL,v=this.isInteractive,_=this.$scopedSlots,g=[];if(m&&!n&&!r){var y=t("span",{staticClass:"b-rating-icon"},[(_[H["v"]]||this.iconClearFn)()]);g.push(t("span",{staticClass:"b-rating-star b-rating-star-clear flex-grow-1",class:{focused:d&&0===f},attrs:{tabindex:v?"-1":null},on:{click:function(){return e.onSelected(null)}},key:"clear"},[y]))}for(var O=0;O1&&void 0!==arguments[1]?arguments[1]:null;if(Object(u["k"])(t)){var n=d(t,this.valueField),r=d(t,this.textField),i=d(t,this.optionsField,null);return Object(u["g"])(i)?{value:Object(u["o"])(n)?e||r:n,text:String(Object(u["o"])(r)?e:r),html:d(t,this.htmlField),disabled:Boolean(d(t,this.disabledField))}:{label:String(d(t,this.labelField)||r),options:this.normalizeOptions(i)}}return{value:e||t,text:String(t),disabled:!1}}}}),Wl=Object(I["d"])({disabled:Object(I["c"])(E["g"],!1),value:Object(I["c"])(E["a"],void 0,!0)},P["cb"]),Ul=r["default"].extend({name:P["cb"],functional:!0,props:Wl,render:function(t,e){var n=e.props,r=e.data,i=e.children,a=n.value,o=n.disabled;return t("option",Object(pt["a"])(r,{attrs:{disabled:o},domProps:{value:a}}),i)}});function Gl(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Jl(t){for(var e=1;e0?t:bd},computedInterval:function(){var t=Object(F["c"])(this.repeatInterval,0);return t>0?t:vd},computedThreshold:function(){return Object(nt["d"])(Object(F["c"])(this.repeatThreshold,_d),1)},computedStepMultiplier:function(){return Object(nt["d"])(Object(F["c"])(this.repeatStepMultiplier,gd),1)},computedPrecision:function(){var t=this.computedStep;return Object(nt["c"])(t)===t?0:(t.toString().split(".")[1]||"").length},computedMultiplier:function(){return Object(nt["f"])(10,this.computedPrecision||0)},valueAsFixed:function(){var t=this.localValue;return Object(u["g"])(t)?"":t.toFixed(this.computedPrecision)},computedLocale:function(){var t=Object(ue["b"])(this.locale).filter(c["a"]),e=new Intl.NumberFormat(t);return e.resolvedOptions().locale},computedRTL:function(){return Qn(this.computedLocale)},defaultFormatter:function(){var t=this.computedPrecision,e=new Intl.NumberFormat(this.computedLocale,{style:"decimal",useGrouping:!1,minimumIntegerDigits:1,minimumFractionDigits:t,maximumFractionDigits:t,notation:"standard"});return e.format},computedFormatter:function(){var t=this.formatterFn;return Object(I["b"])(t)?t:this.defaultFormatter},computedAttrs:function(){return od(od({},this.bvAttrs),{},{role:"group",lang:this.computedLocale,tabindex:this.disabled?null:"-1",title:this.ariaLabel})},computedSpinAttrs:function(){var t=this.spinId,e=this.localValue,n=this.computedRequired,r=this.disabled,i=this.state,a=this.computedFormatter,o=!Object(u["g"])(e);return od(od({dir:this.computedRTL?"rtl":"ltr"},this.bvAttrs),{},{id:t,role:"spinbutton",tabindex:r?null:"0","aria-live":"off","aria-label":this.ariaLabel||null,"aria-controls":this.ariaControls||null,"aria-invalid":!1===i||!o&&n?"true":null,"aria-required":n?"true":null,"aria-valuemin":Object(mt["g"])(this.computedMin),"aria-valuemax":Object(mt["g"])(this.computedMax),"aria-valuenow":o?e:null,"aria-valuetext":o?a(e):null})}},watch:(ed={},sd(ed,dd,(function(t){this.localValue=Object(F["b"])(t,null)})),sd(ed,"localValue",(function(t){this.$emit(fd,t)})),sd(ed,"disabled",(function(t){t&&this.clearRepeat()})),sd(ed,"readonly",(function(t){t&&this.clearRepeat()})),ed),created:function(){this.$_autoDelayTimer=null,this.$_autoRepeatTimer=null,this.$_keyIsDown=!1},beforeDestroy:function(){this.clearRepeat()},deactivated:function(){this.clearRepeat()},methods:{focus:function(){this.disabled||Object(A["d"])(this.$refs.spinner)},blur:function(){this.disabled||Object(A["c"])(this.$refs.spinner)},emitChange:function(){this.$emit(C["d"],this.localValue)},stepValue:function(t){var e=this.localValue;if(!this.disabled&&!Object(u["g"])(e)){var n=this.computedStep*t,r=this.computedMin,i=this.computedMax,a=this.computedMultiplier,o=this.wrap;e=Object(nt["g"])((e-r)/n)*n+r+n,e=Object(nt["g"])(e*a)/a,this.localValue=e>i?o?r:i:e0&&void 0!==arguments[0]?arguments[0]:1,e=this.localValue;Object(u["g"])(e)?this.localValue=this.computedMin:this.stepValue(1*t)},stepDown:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=this.localValue;Object(u["g"])(e)?this.localValue=this.wrap?this.computedMax:this.computedMin:this.stepValue(-1*t)},onKeydown:function(t){var e=t.keyCode,n=t.altKey,r=t.ctrlKey,i=t.metaKey;if(!(this.disabled||this.readonly||n||r||i)&&Object(ue["a"])(yd,e)){if(Object(le["f"])(t,{propagation:!1}),this.$_keyIsDown)return;this.resetTimers(),Object(ue["a"])([ce,Zt],e)?(this.$_keyIsDown=!0,e===ce?this.handleStepRepeat(t,this.stepUp):e===Zt&&this.handleStepRepeat(t,this.stepDown)):e===ae?this.stepUp(this.computedStepMultiplier):e===ie?this.stepDown(this.computedStepMultiplier):e===ne?this.localValue=this.computedMin:e===Qt&&(this.localValue=this.computedMax)}},onKeyup:function(t){var e=t.keyCode,n=t.altKey,r=t.ctrlKey,i=t.metaKey;this.disabled||this.readonly||n||r||i||Object(ue["a"])(yd,e)&&(Object(le["f"])(t,{propagation:!1}),this.resetTimers(),this.$_keyIsDown=!1,this.emitChange())},handleStepRepeat:function(t,e){var n=this,r=t||{},i=r.type,a=r.button;if(!this.disabled&&!this.readonly){if("mousedown"===i&&a)return;this.resetTimers(),e(1);var o=this.computedThreshold,s=this.computedStepMultiplier,c=this.computedDelay,u=this.computedInterval;this.$_autoDelayTimer=setTimeout((function(){var t=0;n.$_autoRepeatTimer=setInterval((function(){e(tt.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&n.indexOf(t)===e}))},Jd=function(t){return Object(u["n"])(t)?t:Object(u["d"])(t)&&t.target.value||""},qd=function(){return{all:[],valid:[],invalid:[],duplicate:[]}},Kd=Object(I["d"])(Object(f["m"])($d($d($d($d($d($d({},nr["b"]),Rd),Ns),Us),Js),{},{addButtonText:Object(I["c"])(E["u"],"Add"),addButtonVariant:Object(I["c"])(E["u"],"outline-secondary"),addOnChange:Object(I["c"])(E["g"],!1),duplicateTagText:Object(I["c"])(E["u"],"Duplicate tag(s)"),ignoreInputFocusSelector:Object(I["c"])(E["f"],Wd),inputAttrs:Object(I["c"])(E["q"],{}),inputClass:Object(I["c"])(E["e"]),inputId:Object(I["c"])(E["u"]),inputType:Object(I["c"])(E["u"],"text",(function(t){return Object(ue["a"])(zd,t)})),invalidTagText:Object(I["c"])(E["u"],"Invalid tag(s)"),limit:Object(I["c"])(E["n"]),limitTagsText:Object(I["c"])(E["u"],"Tag limit reached"),noAddOnEnter:Object(I["c"])(E["g"],!1),noOuterFocus:Object(I["c"])(E["g"],!1),noTagRemove:Object(I["c"])(E["g"],!1),placeholder:Object(I["c"])(E["u"],"Add tag..."),removeOnDelete:Object(I["c"])(E["g"],!1),separator:Object(I["c"])(E["f"]),tagClass:Object(I["c"])(E["e"]),tagPills:Object(I["c"])(E["g"],!1),tagRemoveLabel:Object(I["c"])(E["u"],"Remove tag"),tagRemovedLabel:Object(I["c"])(E["u"],"Tag removed"),tagValidator:Object(I["c"])(E["l"]),tagVariant:Object(I["c"])(E["u"],"secondary")})),P["gb"]),Xd=r["default"].extend({name:P["gb"],mixins:[nr["a"],Bd,Vs,Gs,qs,B["a"]],props:Kd,data:function(){return{hasFocus:!1,newTag:"",tags:[],removedTags:[],tagsState:qd()}},computed:{computedInputId:function(){return this.inputId||this.safeId("__input__")},computedInputType:function(){return Object(ue["a"])(zd,this.inputType)?this.inputType:"text"},computedInputAttrs:function(){var t=this.disabled,e=this.form;return $d($d({},this.inputAttrs),{},{id:this.computedInputId,value:this.newTag,disabled:t,form:e})},computedInputHandlers:function(){return{input:this.onInputInput,change:this.onInputChange,keydown:this.onInputKeydown,reset:this.reset}},computedSeparator:function(){return Object(ue["b"])(this.separator).filter(u["n"]).filter(c["a"]).join("")},computedSeparatorRegExp:function(){var t=this.computedSeparator;return t?new RegExp("[".concat(Ud(t),"]+")):null},computedJoiner:function(){var t=this.computedSeparator.charAt(0);return" "!==t?"".concat(t," "):t},computeIgnoreInputFocusSelector:function(){return Object(ue["b"])(this.ignoreInputFocusSelector).filter(c["a"]).join(",").trim()},disableAddButton:function(){var t=this,e=Object(mt["h"])(this.newTag);return""===e||!this.splitTags(e).some((function(e){return!Object(ue["a"])(t.tags,e)&&t.validateTag(e)}))},duplicateTags:function(){return this.tagsState.duplicate},hasDuplicateTags:function(){return this.duplicateTags.length>0},invalidTags:function(){return this.tagsState.invalid},hasInvalidTags:function(){return this.invalidTags.length>0},isLimitReached:function(){var t=this.limit;return Object(u["h"])(t)&&t>=0&&this.tags.length>=t}},watch:(Td={},Fd(Td,Nd,(function(t){this.tags=Gd(t)})),Fd(Td,"tags",(function(t,e){Object(tr["a"])(t,this[Nd])||this.$emit(Vd,t),Object(tr["a"])(t,e)||(t=Object(ue["b"])(t).filter(c["a"]),e=Object(ue["b"])(e).filter(c["a"]),this.removedTags=e.filter((function(e){return!Object(ue["a"])(t,e)})))})),Fd(Td,"tagsState",(function(t,e){Object(tr["a"])(t,e)||this.$emit(C["Y"],t.valid,t.invalid,t.duplicate)})),Td),created:function(){this.tags=Gd(this[Nd])},mounted:function(){var t=this,e=Object(A["e"])("form",this.$el);e&&(Object(le["b"])(e,"reset",this.reset,C["db"]),this.$on(C["eb"],(function(){Object(le["a"])(e,"reset",t.reset,C["db"])})))},methods:{addTag:function(t){if(t=Object(u["n"])(t)?t:this.newTag,!this.disabled&&""!==Object(mt["h"])(t)&&!this.isLimitReached){var e=this.parseTags(t);if(e.valid.length>0||0===e.all.length)if(Object(A["v"])(this.getInput(),"select"))this.newTag="";else{var n=[].concat(Yd(e.invalid),Yd(e.duplicate));this.newTag=e.all.filter((function(t){return Object(ue["a"])(n,t)})).join(this.computedJoiner).concat(n.length>0?this.computedJoiner.charAt(0):"")}e.valid.length>0&&(this.tags=Object(ue["b"])(this.tags,e.valid)),this.tagsState=e,this.focus()}},removeTag:function(t){var e=this;this.disabled||(this.tags=this.tags.filter((function(e){return e!==t})),this.$nextTick((function(){e.focus()})))},reset:function(){var t=this;this.newTag="",this.tags=[],this.$nextTick((function(){t.removedTags=[],t.tagsState=qd()}))},onInputInput:function(t){if(!(this.disabled||Object(u["d"])(t)&&t.target.composing)){var e=Jd(t),n=this.computedSeparatorRegExp;this.newTag!==e&&(this.newTag=e),e=Object(mt["i"])(e),n&&n.test(e.slice(-1))?this.addTag():this.tagsState=""===e?qd():this.parseTags(e)}},onInputChange:function(t){if(!this.disabled&&this.addOnChange){var e=Jd(t);this.newTag!==e&&(this.newTag=e),this.addTag()}},onInputKeydown:function(t){if(!this.disabled&&Object(u["d"])(t)){var e=t.keyCode,n=t.target.value||"";this.noAddOnEnter||e!==te?!this.removeOnDelete||e!==Kt&&e!==Xt||""!==n||(Object(le["f"])(t,{propagation:!1}),this.tags=this.tags.slice(0,-1)):(Object(le["f"])(t,{propagation:!1}),this.addTag())}},onClick:function(t){var e=this,n=this.computeIgnoreInputFocusSelector,r=t.target;this.disabled||Object(A["q"])(r)||n&&Object(A["e"])(n,r,!0)||this.$nextTick((function(){e.focus()}))},onFocusin:function(){this.hasFocus=!0},onFocusout:function(){this.hasFocus=!1},handleAutofocus:function(){var t=this;this.$nextTick((function(){Object(A["D"])((function(){t.autofocus&&!t.disabled&&t.focus()}))}))},focus:function(){this.disabled||Object(A["d"])(this.getInput())},blur:function(){this.disabled||Object(A["c"])(this.getInput())},splitTags:function(t){t=Object(mt["g"])(t);var e=this.computedSeparatorRegExp;return(e?t.split(e):[t]).map(mt["h"]).filter(c["a"])},parseTags:function(t){var e=this,n=this.splitTags(t),r={all:n,valid:[],invalid:[],duplicate:[]};return n.forEach((function(t){Object(ue["a"])(e.tags,t)||Object(ue["a"])(r.valid,t)?Object(ue["a"])(r.duplicate,t)||r.duplicate.push(t):e.validateTag(t)?r.valid.push(t):Object(ue["a"])(r.invalid,t)||r.invalid.push(t)})),r},validateTag:function(t){var e=this.tagValidator;return!Object(I["b"])(e)||e(t)},getInput:function(){return Object(A["E"])("#".concat(Su(this.computedInputId)),this.$el)},defaultRender:function(t){var e=t.addButtonText,n=t.addButtonVariant,r=t.addTag,i=t.disableAddButton,a=t.disabled,o=t.duplicateTagText,s=t.inputAttrs,u=t.inputClass,l=t.inputHandlers,d=t.inputType,f=t.invalidTagText,h=t.isDuplicate,p=t.isInvalid,m=t.isLimitReached,b=t.limitTagsText,v=t.noTagRemove,_=t.placeholder,g=t.removeTag,y=t.tagClass,O=t.tagPills,j=t.tagRemoveLabel,w=t.tagVariant,M=t.tags,L=this.$createElement,k=M.map((function(t){return t=Object(mt["g"])(t),L(Sd,{class:y,props:{disabled:a,noRemove:v,pill:O,removeLabel:j,tag:"li",title:t,variant:w},on:{remove:function(){return g(t)}},key:"tags_".concat(t)},t)})),T=f&&p?this.safeId("__invalid_feedback__"):null,D=o&&h?this.safeId("__duplicate_feedback__"):null,S=b&&m?this.safeId("__limit_feedback__"):null,Y=[s["aria-describedby"],T,D,S].filter(c["a"]).join(" "),x=L("input",{staticClass:"b-form-tags-input w-100 flex-grow-1 p-0 m-0 bg-transparent border-0",class:u,style:{outline:0,minWidth:"5rem"},attrs:$d($d({},s),{},{"aria-describedby":Y||null,type:d,placeholder:_||null}),domProps:{value:s.value},on:l,directives:[{name:"model",value:s.value}],ref:"input"}),P=L(Le,{staticClass:"b-form-tags-button py-0",class:{invisible:i},style:{fontSize:"90%"},props:{disabled:i||m,variant:n},on:{click:function(){return r()}},ref:"button"},[this.normalizeSlot(H["a"])||e]),C=this.safeId("__tag_list__"),E=L("li",{staticClass:"b-from-tags-field flex-grow-1",attrs:{role:"none","aria-live":"off","aria-controls":C},key:"tags_field"},[L("div",{staticClass:"d-flex",attrs:{role:"group"}},[x,P])]),A=L("ul",{staticClass:"b-form-tags-list list-unstyled mb-0 d-flex flex-wrap align-items-center",attrs:{id:C},key:"tags_list"},[k,E]),$=L();if(f||o||b){var F=this.computedJoiner,I=L();T&&(I=L(Es,{props:{id:T,forceShow:!0},key:"tags_invalid_feedback"},[this.invalidTagText,": ",this.invalidTags.join(F)]));var B=L();D&&(B=L(Ps,{props:{id:D},key:"tags_duplicate_feedback"},[this.duplicateTagText,": ",this.duplicateTags.join(F)]));var R=L();S&&(R=L(Ps,{props:{id:S},key:"tags_limit_feedback"},[b])),$=L("div",{attrs:{"aria-live":"polite","aria-atomic":"true"},key:"tags_feedback"},[I,B,R])}return[A,$]}},render:function(t){var e=this.name,n=this.disabled,r=this.required,i=this.form,a=this.tags,o=this.computedInputId,s=this.hasFocus,c=this.noOuterFocus,u=$d({tags:a.slice(),inputAttrs:this.computedInputAttrs,inputType:this.computedInputType,inputHandlers:this.computedInputHandlers,removeTag:this.removeTag,addTag:this.addTag,reset:this.reset,inputId:o,isInvalid:this.hasInvalidTags,invalidTags:this.invalidTags.slice(),isDuplicate:this.hasDuplicateTags,duplicateTags:this.duplicateTags.slice(),isLimitReached:this.isLimitReached,disableAddButton:this.disableAddButton},Object(f["k"])(this.$props,["addButtonText","addButtonVariant","disabled","duplicateTagText","form","inputClass","invalidTagText","limit","limitTagsText","noTagRemove","placeholder","required","separator","size","state","tagClass","tagPills","tagRemoveLabel","tagVariant"])),l=this.normalizeSlot(H["i"],u)||this.defaultRender(u),d=t("output",{staticClass:"sr-only",attrs:{id:this.safeId("__selected_tags__"),role:"status",for:o,"aria-live":s?"polite":"off","aria-atomic":"true","aria-relevant":"additions text"}},this.tags.join(", ")),h=t("div",{staticClass:"sr-only",attrs:{id:this.safeId("__removed_tags__"),role:"status","aria-live":s?"assertive":"off","aria-atomic":"true"}},this.removedTags.length>0?"(".concat(this.tagRemovedLabel,") ").concat(this.removedTags.join(", ")):""),p=t();if(e&&!n){var m=a.length>0;p=(m?a:[""]).map((function(n){return t("input",{class:{"sr-only":!m},attrs:{type:m?"hidden":"text",value:n,required:r,name:e,form:i},key:"tag_input_".concat(n)})}))}return t("div",{staticClass:"b-form-tags form-control h-auto",class:[{focus:s&&!c&&!n,disabled:n},this.sizeFormClass,this.stateClass],attrs:{id:this.safeId(),role:"group",tabindex:n||c?null:"-1","aria-describedby":this.safeId("__selected_tags__")},on:{click:this.onClick,focusin:this.onFocusin,focusout:this.onFocusout}},[d,h,l,p])}}),Zd=L({components:{BFormTags:Xd,BTags:Xd,BFormTag:Sd,BTag:Sd}});function Qd(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function tf(t){for(var e=1;ef?s:"".concat(f,"px")}},render:function(t){return t("textarea",{class:this.computedClass,style:this.computedStyle,directives:[{name:"b-visible",value:this.visibleCallback,modifiers:{640:!0}}],attrs:this.computedAttrs,domProps:{value:this.localValue},on:this.computedListeners,ref:"input"})}}),of=L({components:{BFormTextarea:af,BTextarea:af}});function sf(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function cf(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]&&arguments[1];if(Object(u["g"])(e)||Object(u["g"])(n)||i&&Object(u["g"])(r))return"";var a=[e,n,i?r:0];return a.map(wf).join(":")},kf=Object(I["d"])(Object(f["m"])(cf(cf(cf(cf({},nr["b"]),gf),Object(f["k"])(Od,["labelIncrement","labelDecrement"])),{},{ariaLabelledby:Object(I["c"])(E["u"]),disabled:Object(I["c"])(E["g"],!1),hidden:Object(I["c"])(E["g"],!1),hideHeader:Object(I["c"])(E["g"],!1),hour12:Object(I["c"])(E["g"],null),labelAm:Object(I["c"])(E["u"],"AM"),labelAmpm:Object(I["c"])(E["u"],"AM/PM"),labelHours:Object(I["c"])(E["u"],"Hours"),labelMinutes:Object(I["c"])(E["u"],"Minutes"),labelNoTimeSelected:Object(I["c"])(E["u"],"No time selected"),labelPm:Object(I["c"])(E["u"],"PM"),labelSeconds:Object(I["c"])(E["u"],"Seconds"),labelSelected:Object(I["c"])(E["u"],"Selected time"),locale:Object(I["c"])(E["f"]),minutesStep:Object(I["c"])(E["p"],1),readonly:Object(I["c"])(E["g"],!1),secondsStep:Object(I["c"])(E["p"],1),showSeconds:Object(I["c"])(E["g"],!1)})),P["oc"]),Tf=r["default"].extend({name:P["oc"],mixins:[nr["a"],_f,B["a"]],props:kf,data:function(){var t=Mf(this[yf]||"");return{modelHours:t.hours,modelMinutes:t.minutes,modelSeconds:t.seconds,modelAmpm:t.ampm,isLive:!1}},computed:{computedHMS:function(){var t=this.modelHours,e=this.modelMinutes,n=this.modelSeconds;return Lf({hours:t,minutes:e,seconds:n},this.showSeconds)},resolvedOptions:function(){var t=Object(ue["b"])(this.locale).filter(c["a"]),e={hour:jf,minute:jf,second:jf};Object(u["p"])(this.hour12)||(e.hour12=!!this.hour12);var n=new Intl.DateTimeFormat(t,e),r=n.resolvedOptions(),i=r.hour12||!1,a=r.hourCycle||(i?"h12":"h23");return{locale:r.locale,hour12:i,hourCycle:a}},computedLocale:function(){return this.resolvedOptions.locale},computedLang:function(){return(this.computedLocale||"").replace(/-u-.*$/,"")},computedRTL:function(){return Qn(this.computedLang)},computedHourCycle:function(){return this.resolvedOptions.hourCycle},is12Hour:function(){return!!this.resolvedOptions.hour12},context:function(){return{locale:this.computedLocale,isRTL:this.computedRTL,hourCycle:this.computedHourCycle,hour12:this.is12Hour,hours:this.modelHours,minutes:this.modelMinutes,seconds:this.showSeconds?this.modelSeconds:0,value:this.computedHMS,formatted:this.formattedTimeString}},valueId:function(){return this.safeId()||null},computedAriaLabelledby:function(){return[this.ariaLabelledby,this.valueId].filter(c["a"]).join(" ")||null},timeFormatter:function(){var t={hour12:this.is12Hour,hourCycle:this.computedHourCycle,hour:jf,minute:jf,timeZone:"UTC"};return this.showSeconds&&(t.second=jf),Bn(this.computedLocale,t)},numberFormatter:function(){var t=new Intl.NumberFormat(this.computedLocale,{style:"decimal",minimumIntegerDigits:2,minimumFractionDigits:0,maximumFractionDigits:0,notation:"standard"});return t.format},formattedTimeString:function(){var t=this.modelHours,e=this.modelMinutes,n=this.showSeconds&&this.modelSeconds||0;return this.computedHMS?this.timeFormatter(An(Date.UTC(0,0,1,t,e,n))):this.labelNoTimeSelected||" "},spinScopedSlots:function(){var t=this.$createElement;return{increment:function(e){var n=e.hasFocus;return t(Pt,{props:{scale:n?1.5:1.25},attrs:{"aria-hidden":"true"}})},decrement:function(e){var n=e.hasFocus;return t(Pt,{props:{flipV:!0,scale:n?1.5:1.25},attrs:{"aria-hidden":"true"}})}}}},watch:(nf={},uf(nf,yf,(function(t,e){if(t!==e&&!Object(tr["a"])(Mf(t),Mf(this.computedHMS))){var n=Mf(t),r=n.hours,i=n.minutes,a=n.seconds,o=n.ampm;this.modelHours=r,this.modelMinutes=i,this.modelSeconds=a,this.modelAmpm=o}})),uf(nf,"computedHMS",(function(t,e){t!==e&&this.$emit(Of,t)})),uf(nf,"context",(function(t,e){Object(tr["a"])(t,e)||this.$emit(C["h"],t)})),uf(nf,"modelAmpm",(function(t,e){var n=this;if(t!==e){var r=Object(u["g"])(this.modelHours)?0:this.modelHours;this.$nextTick((function(){0===t&&r>11?n.modelHours=r-12:1===t&&r<12&&(n.modelHours=r+12)}))}})),uf(nf,"modelHours",(function(t,e){t!==e&&(this.modelAmpm=t>11?1:0)})),nf),created:function(){var t=this;this.$nextTick((function(){t.$emit(C["h"],t.context)}))},mounted:function(){this.setLive(!0)},activated:function(){this.setLive(!0)},deactivated:function(){this.setLive(!1)},beforeDestroy:function(){this.setLive(!1)},methods:{focus:function(){this.disabled||Object(A["d"])(this.$refs.spinners[0])},blur:function(){if(!this.disabled){var t=Object(A["g"])();Object(A["f"])(this.$el,t)&&Object(A["c"])(t)}},formatHours:function(t){var e=this.computedHourCycle;return t=this.is12Hour&&t>12?t-12:t,t=0===t&&"h12"===e?12:0===t&&"h24"===e?24:12===t&&"h11"===e?0:t,this.numberFormatter(t)},formatMinutes:function(t){return this.numberFormatter(t)},formatSeconds:function(t){return this.numberFormatter(t)},formatAmpm:function(t){return 0===t?this.labelAm:1===t?this.labelPm:""},setHours:function(t){this.modelHours=t},setMinutes:function(t){this.modelMinutes=t},setSeconds:function(t){this.modelSeconds=t},setAmpm:function(t){this.modelAmpm=t},onSpinLeftRight:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.type,n=t.keyCode;if(!this.disabled&&"keydown"===e&&(n===re||n===oe)){Object(le["f"])(t);var r=this.$refs.spinners||[],i=r.map((function(t){return!!t.hasFocus})).indexOf(!0);i+=n===re?-1:1,i=i>=r.length?0:i<0?r.length-1:i,Object(A["d"])(r[i])}},setLive:function(t){var e=this;t?this.$nextTick((function(){Object(A["D"])((function(){e.isLive=!0}))})):this.isLive=!1}},render:function(t){var e=this;if(this.hidden)return t();var n=this.valueId,r=this.computedAriaLabelledby,i=[],a=function(r,a,o){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},c=e.safeId("_spinbutton_".concat(a,"_"))||null;return i.push(c),t(jd,{class:o,props:cf({id:c,placeholder:"--",vertical:!0,required:!0,disabled:e.disabled,readonly:e.readonly,locale:e.computedLocale,labelIncrement:e.labelIncrement,labelDecrement:e.labelDecrement,wrap:!0,ariaControls:n,min:0},s),scopedSlots:e.spinScopedSlots,on:{change:r},key:a,ref:"spinners",refInFor:!0})},o=function(){return t("div",{staticClass:"d-flex flex-column",class:{"text-muted":e.disabled||e.readonly},attrs:{"aria-hidden":"true"}},[t(Ct,{props:{shiftV:4,scale:.5}}),t(Ct,{props:{shiftV:-4,scale:.5}})])},s=[];s.push(a(this.setHours,"hours","b-time-hours",{value:this.modelHours,max:23,step:1,formatterFn:this.formatHours,ariaLabel:this.labelHours})),s.push(o()),s.push(a(this.setMinutes,"minutes","b-time-minutes",{value:this.modelMinutes,max:59,step:this.minutesStep||1,formatterFn:this.formatMinutes,ariaLabel:this.labelMinutes})),this.showSeconds&&(s.push(o()),s.push(a(this.setSeconds,"seconds","b-time-seconds",{value:this.modelSeconds,max:59,step:this.secondsStep||1,formatterFn:this.formatSeconds,ariaLabel:this.labelSeconds}))),this.is12Hour&&s.push(a(this.setAmpm,"ampm","b-time-ampm",{value:this.modelAmpm,max:1,formatterFn:this.formatAmpm,ariaLabel:this.labelAmpm,required:!1})),s=t("div",{staticClass:"d-flex align-items-center justify-content-center mx-auto",attrs:{role:"group",tabindex:this.disabled||this.readonly?null:"-1","aria-labelledby":r},on:{keydown:this.onSpinLeftRight,click:function(t){t.target===t.currentTarget&&e.focus()}}},s);var u=t("output",{staticClass:"form-control form-control-sm text-center",class:{disabled:this.disabled||this.readonly},attrs:{id:n,role:"status",for:i.filter(c["a"]).join(" ")||null,tabindex:this.disabled?null:"-1","aria-live":this.isLive?"polite":"off","aria-atomic":"true"},on:{click:this.focus,focus:this.focus}},[t("bdi",this.formattedTimeString),this.computedHMS?t("span",{staticClass:"sr-only"}," (".concat(this.labelSelected,") ")):""]),l=t("header",{staticClass:"b-time-header",class:{"sr-only":this.hideHeader}},[u]),d=this.normalizeSlot();return d=d?t("footer",{staticClass:"b-time-footer"},d):t(),t("div",{staticClass:"b-time d-inline-flex flex-column text-center",attrs:{role:"group",lang:this.computedLang||null,"aria-labelledby":r||null,"aria-disabled":this.disabled?"true":null,"aria-readonly":this.readonly&&!this.disabled?"true":null}},[l,s,d])}});function Df(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Sf(t){for(var e=1;e0&&o.push(t("span"," "));var c=this.labelResetButton;o.push(t(Le,{props:{size:"sm",disabled:n||r,variant:this.resetButtonVariant},attrs:{"aria-label":c||null},on:{click:this.onResetButton},key:"reset-btn"},c))}if(!this.noCloseButton){o.length>0&&o.push(t("span"," "));var l=this.labelCloseButton;o.push(t(Le,{props:{size:"sm",disabled:n,variant:this.closeButtonVariant},attrs:{"aria-label":l||null},on:{click:this.onCloseButton},key:"close-btn"},l))}o.length>0&&(o=[t("div",{staticClass:"b-form-date-controls d-flex flex-wrap",class:{"justify-content-between":o.length>1,"justify-content-end":o.length<2}},o)]);var d=t(Tf,{staticClass:"b-form-time-control",props:Sf(Sf({},Object(I["e"])(Af,i)),{},{value:e,hidden:!this.isVisible}),on:{input:this.onInput,context:this.onContext},ref:"time"},o);return t(Kc,{staticClass:"b-form-timepicker",props:Sf(Sf({},Object(I["e"])($f,i)),{},{id:this.safeId(),value:e,formattedValue:e?this.formattedValue:"",placeholder:a,rtl:this.isRTL,lang:this.computedLang}),on:{show:this.onShow,shown:this.onShown,hidden:this.onHidden},scopedSlots:Yf({},H["f"],this.$scopedSlots[H["f"]]||this.defaultButtonFn),ref:"control"},[d])}}),Bf=L({components:{BFormTimepicker:If,BTimepicker:If}}),Rf=L({components:{BImg:Ir,BImgLazy:mi}}),Nf=Object(I["d"])({tag:Object(I["c"])(E["u"],"div")},P["tb"]),Vf=r["default"].extend({name:P["tb"],functional:!0,props:Nf,render:function(t,e){var n=e.props,r=e.data,i=e.children;return t(n.tag,Object(pt["a"])(r,{staticClass:"input-group-text"}),i)}}),zf=Object(I["d"])({append:Object(I["c"])(E["g"],!1),id:Object(I["c"])(E["u"]),isText:Object(I["c"])(E["g"],!1),tag:Object(I["c"])(E["u"],"div")},P["qb"]),Wf=r["default"].extend({name:P["qb"],functional:!0,props:zf,render:function(t,e){var n=e.props,r=e.data,i=e.children,a=n.append;return t(n.tag,Object(pt["a"])(r,{class:{"input-group-append":a,"input-group-prepend":!a},attrs:{id:n.id}}),n.isText?[t(Vf,i)]:i)}});function Uf(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Gf(t){for(var e=1;e0&&!n[0].text?n[0]:t()}}),qh={container:Object(I["c"])([ho["c"],E["u"]],"body"),disabled:Object(I["c"])(E["g"],!1),tag:Object(I["c"])(E["u"],"div")},Kh=r["default"].extend({name:P["xc"],mixins:[B["a"]],props:qh,watch:{disabled:{immediate:!0,handler:function(t){t?this.unmountTarget():this.$nextTick(this.mountTarget)}}},created:function(){this.$_defaultFn=null,this.$_target=null},beforeMount:function(){this.mountTarget()},updated:function(){this.updateTarget()},beforeDestroy:function(){this.unmountTarget(),this.$_defaultFn=null},methods:{getContainer:function(){if(i["i"]){var t=this.container;return Object(u["n"])(t)?Object(A["E"])(t):t}return null},mountTarget:function(){if(!this.$_target){var t=this.getContainer();if(t){var e=document.createElement("div");t.appendChild(e),this.$_target=new Jh({el:e,parent:this,propsData:{nodes:Object(ue["b"])(this.normalizeSlot())}})}}},updateTarget:function(){if(i["i"]&&this.$_target){var t=this.$scopedSlots.default;this.disabled||(t&&this.$_defaultFn!==t?this.$_target.updatedNodes=t:t||(this.$_target.updatedNodes=this.$slots.default)),this.$_defaultFn=t}},unmountTarget:function(){this.$_target&&this.$_target.$destroy(),this.$_target=null}},render:function(t){if(this.disabled){var e=Object(ue["b"])(this.normalizeSlot()).filter(c["a"]);if(e.length>0&&!e[0].text)return e[0]}return t()}});function Xh(t){return Xh="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Xh(t)}function Zh(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Qh(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{};return ep(this,n),r=e.call(this,t,i),Object(f["d"])(lp(r),{trigger:Object(f["l"])()}),r}return rp(n,null,[{key:"Defaults",get:function(){return Qh(Qh({},ip(fp(n),"Defaults",this)),{},{trigger:null})}}]),n}(po["a"]),pp=1040,mp=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",bp=".sticky-top",vp=".navbar-toggler",_p=r["default"].extend({data:function(){return{modals:[],baseZIndex:null,scrollbarWidth:null,isBodyOverflowing:!1}},computed:{modalCount:function(){return this.modals.length},modalsAreOpen:function(){return this.modalCount>0}},watch:{modalCount:function(t,e){i["i"]&&(this.getScrollbarWidth(),t>0&&0===e?(this.checkScrollbar(),this.setScrollbar(),Object(A["b"])(document.body,"modal-open")):0===t&&e>0&&(this.resetScrollbar(),Object(A["A"])(document.body,"modal-open")),Object(A["G"])(document.body,"data-modal-open-count",String(t)))},modals:function(t){var e=this;this.checkScrollbar(),Object(A["D"])((function(){e.updateModals(t||[])}))}},methods:{registerModal:function(t){var e=this;t&&-1===this.modals.indexOf(t)&&(this.modals.push(t),t.$once(C["eb"],(function(){e.unregisterModal(t)})))},unregisterModal:function(t){var e=this.modals.indexOf(t);e>-1&&(this.modals.splice(e,1),t._isBeingDestroyed||t._isDestroyed||this.resetModal(t))},getBaseZIndex:function(){if(Object(u["g"])(this.baseZIndex)&&i["i"]){var t=document.createElement("div");Object(A["b"])(t,"modal-backdrop"),Object(A["b"])(t,"d-none"),Object(A["H"])(t,"display","none"),document.body.appendChild(t),this.baseZIndex=Object(F["c"])(Object(A["k"])(t).zIndex,pp),document.body.removeChild(t)}return this.baseZIndex||pp},getScrollbarWidth:function(){if(Object(u["g"])(this.scrollbarWidth)&&i["i"]){var t=document.createElement("div");Object(A["b"])(t,"modal-scrollbar-measure"),document.body.appendChild(t),this.scrollbarWidth=Object(A["i"])(t).width-t.clientWidth,document.body.removeChild(t)}return this.scrollbarWidth||0},updateModals:function(t){var e=this,n=this.getBaseZIndex(),r=this.getScrollbarWidth();t.forEach((function(t,i){t.zIndex=n+i,t.scrollbarWidth=r,t.isTop=i===e.modals.length-1,t.isBodyOverflowing=e.isBodyOverflowing}))},resetModal:function(t){t&&(t.zIndex=this.getBaseZIndex(),t.isTop=!0,t.isBodyOverflowing=!1)},checkScrollbar:function(){var t=Object(A["i"])(document.body),e=t.left,n=t.right;this.isBodyOverflowing=e+n0&&void 0!==arguments[0]&&arguments[0];this.$_observer&&this.$_observer.disconnect(),this.$_observer=null,t&&(this.$_observer=xi(this.$refs.content,this.checkModalOverflow.bind(this),Ap))},updateModel:function(t){t!==this[kp]&&this.$emit(Tp,t)},buildEvent:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new hp(t,Op(Op({cancelable:!1,target:this.$refs.modal||this.$el||null,relatedTarget:null,trigger:null},e),{},{vueTarget:this,componentId:this.modalId}))},show:function(){if(!this.isVisible&&!this.isOpening)if(this.isClosing)this.$once(C["v"],this.show);else{this.isOpening=!0,this.$_returnFocus=this.$_returnFocus||this.getActiveElement();var t=this.buildEvent(C["T"],{cancelable:!0});if(this.emitEvent(t),t.defaultPrevented||this.isVisible)return this.isOpening=!1,void this.updateModel(!1);this.doShow()}},hide:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(this.isVisible&&!this.isClosing){this.isClosing=!0;var e=this.buildEvent(C["w"],{cancelable:t!==Yp,trigger:t||null});if(t===Ep?this.$emit(C["D"],e):t===Pp?this.$emit(C["c"],e):t===Cp&&this.$emit(C["g"],e),this.emitEvent(e),e.defaultPrevented||!this.isVisible)return this.isClosing=!1,void this.updateModel(!0);this.setObserver(!1),this.isVisible=!1,this.updateModel(!1)}},toggle:function(t){t&&(this.$_returnFocus=t),this.isVisible?this.hide(xp):this.show()},getActiveElement:function(){var t=Object(A["g"])(i["i"]?[document.body]:[]);return t&&t.focus?t:null},doShow:function(){var t=this;gp.modalsAreOpen&&this.noStacking?this.listenOnRootOnce(Object(le["e"])(P["Bb"],C["v"]),this.doShow):(gp.registerModal(this),this.isHidden=!1,this.$nextTick((function(){t.isVisible=!0,t.isOpening=!1,t.updateModel(!0),t.$nextTick((function(){t.setObserver(!0)}))})))},onBeforeEnter:function(){this.isTransitioning=!0,this.setResizeEvent(!0)},onEnter:function(){var t=this;this.isBlock=!0,Object(A["D"])((function(){Object(A["D"])((function(){t.isShow=!0}))}))},onAfterEnter:function(){var t=this;this.checkModalOverflow(),this.isTransitioning=!1,Object(A["D"])((function(){t.emitEvent(t.buildEvent(C["U"])),t.setEnforceFocus(!0),t.$nextTick((function(){t.focusFirst()}))}))},onBeforeLeave:function(){this.isTransitioning=!0,this.setResizeEvent(!1),this.setEnforceFocus(!1)},onLeave:function(){this.isShow=!1},onAfterLeave:function(){var t=this;this.isBlock=!1,this.isTransitioning=!1,this.isModalOverflowing=!1,this.isHidden=!0,this.$nextTick((function(){t.isClosing=!1,gp.unregisterModal(t),t.returnFocusTo(),t.emitEvent(t.buildEvent(C["v"]))}))},emitEvent:function(t){var e=t.type;this.emitOnRoot(Object(le["e"])(P["Bb"],e),t,t.componentId),this.$emit(e,t)},onDialogMousedown:function(){var t=this,e=this.$refs.modal,n=function n(r){Object(le["a"])(e,"mouseup",n,C["cb"]),r.target===e&&(t.ignoreBackdropClick=!0)};Object(le["b"])(e,"mouseup",n,C["cb"])},onClickOut:function(t){this.ignoreBackdropClick?this.ignoreBackdropClick=!1:this.isVisible&&!this.noCloseOnBackdrop&&Object(A["f"])(document.body,t.target)&&(Object(A["f"])(this.$refs.content,t.target)||this.hide(Dp))},onOk:function(){this.hide(Ep)},onCancel:function(){this.hide(Pp)},onClose:function(){this.hide(Cp)},onEsc:function(t){t.keyCode===ee&&this.isVisible&&!this.noCloseOnEsc&&this.hide(Sp)},focusHandler:function(t){var e=this.$refs.content,n=t.target;if(!(this.noEnforceFocus||!this.isTop||!this.isVisible||!e||document===n||Object(A["f"])(e,n)||this.computeIgnoreEnforceFocusSelector&&Object(A["e"])(this.computeIgnoreEnforceFocusSelector,n,!0))){var r=Object(A["n"])(this.$refs.content),i=this.$refs["bottom-trap"],a=this.$refs["top-trap"];if(i&&n===i){if(Object(A["d"])(r[0]))return}else if(a&&n===a&&Object(A["d"])(r[r.length-1]))return;Object(A["d"])(e,{preventScroll:!0})}},setEnforceFocus:function(t){this.listenDocument(t,"focusin",this.focusHandler)},setResizeEvent:function(t){this.listenWindow(t,"resize",this.checkModalOverflow),this.listenWindow(t,"orientationchange",this.checkModalOverflow)},showHandler:function(t,e){t===this.modalId&&(this.$_returnFocus=e||this.getActiveElement(),this.show())},hideHandler:function(t){t===this.modalId&&this.hide("event")},toggleHandler:function(t,e){t===this.modalId&&this.toggle(e)},modalListener:function(t){this.noStacking&&t.vueTarget!==this&&this.hide()},focusFirst:function(){var t=this;i["i"]&&Object(A["D"])((function(){var e=t.$refs.modal,n=t.$refs.content,r=t.getActiveElement();if(e&&n&&(!r||!Object(A["f"])(n,r))){var i=t.$refs["ok-button"],a=t.$refs["cancel-button"],o=t.$refs["close-button"],s=t.autoFocusButton,c=s===Ep&&i?i.$el||i:s===Pp&&a?a.$el||a:s===Cp&&o?o.$el||o:n;Object(A["d"])(c),c===n&&t.$nextTick((function(){e.scrollTop=0}))}}))},returnFocusTo:function(){var t=this.returnFocus||this.$_returnFocus||null;this.$_returnFocus=null,this.$nextTick((function(){t=Object(u["n"])(t)?Object(A["E"])(t):t,t&&(t=t.$el||t,Object(A["d"])(t))}))},checkModalOverflow:function(){if(this.isVisible){var t=this.$refs.modal;this.isModalOverflowing=t.scrollHeight>document.documentElement.clientHeight}},makeModal:function(t){var e=t();if(!this.hideHeader){var n=this.normalizeSlot(H["J"],this.slotScope);if(!n){var r=t();this.hideHeaderClose||(r=t(R["a"],{props:{content:this.headerCloseContent,disabled:this.isTransitioning,ariaLabel:this.headerCloseLabel,textVariant:this.headerCloseVariant||this.headerTextVariant},on:{click:this.onClose},ref:"close-button"},[this.normalizeSlot(H["K"])])),n=[t(this.titleTag,{staticClass:"modal-title",class:this.titleClasses,attrs:{id:this.modalTitleId},domProps:this.hasNormalizedSlot(H["M"])?{}:Je(this.titleHtml,this.title)},this.normalizeSlot(H["M"],this.slotScope)),r]}e=t("header",{staticClass:"modal-header",class:this.headerClasses,attrs:{id:this.modalHeaderId},ref:"header"},[n])}var i=t("div",{staticClass:"modal-body",class:this.bodyClasses,attrs:{id:this.modalBodyId},ref:"body"},this.normalizeSlot(H["i"],this.slotScope)),a=t();if(!this.hideFooter){var o=this.normalizeSlot(H["I"],this.slotScope);if(!o){var s=t();this.okOnly||(s=t(Le,{props:{variant:this.cancelVariant,size:this.buttonSize,disabled:this.cancelDisabled||this.busy||this.isTransitioning},domProps:this.hasNormalizedSlot(H["H"])?{}:Je(this.cancelTitleHtml,this.cancelTitle),on:{click:this.onCancel},ref:"cancel-button"},this.normalizeSlot(H["H"])));var c=t(Le,{props:{variant:this.okVariant,size:this.buttonSize,disabled:this.okDisabled||this.busy||this.isTransitioning},domProps:this.hasNormalizedSlot(H["L"])?{}:Je(this.okTitleHtml,this.okTitle),on:{click:this.onOk},ref:"ok-button"},this.normalizeSlot(H["L"]));o=[s,c]}a=t("footer",{staticClass:"modal-footer",class:this.footerClasses,attrs:{id:this.modalFooterId},ref:"footer"},[o])}var u=t("div",{staticClass:"modal-content",class:this.contentClass,attrs:{id:this.modalContentId,tabindex:"-1"},ref:"content"},[e,i,a]),l=t(),d=t();this.isVisible&&!this.noEnforceFocus&&(l=t("span",{attrs:{tabindex:"0"},ref:"top-trap"}),d=t("span",{attrs:{tabindex:"0"},ref:"bottom-trap"}));var f=t("div",{staticClass:"modal-dialog",class:this.dialogClasses,on:{mousedown:this.onDialogMousedown},ref:"dialog"},[l,u,d]),h=t("div",{staticClass:"modal",class:this.modalClasses,style:this.modalStyles,attrs:this.computedModalAttrs,on:{keydown:this.onEsc,click:this.onClickOut},directives:[{name:"show",value:this.isVisible}],ref:"modal"},[f]);h=t("transition",{props:{enterClass:"",enterToClass:"",enterActiveClass:"",leaveClass:"",leaveActiveClass:"",leaveToClass:""},on:{beforeEnter:this.onBeforeEnter,enter:this.onEnter,afterEnter:this.onAfterEnter,beforeLeave:this.onBeforeLeave,leave:this.onLeave,afterLeave:this.onAfterLeave}},[h]);var p=t();return!this.hideBackdrop&&this.isVisible&&(p=t("div",{staticClass:"modal-backdrop",attrs:{id:this.modalBackdropId}},this.normalizeSlot(H["G"]))),p=t(N["a"],{props:{noFade:this.noFade}},[p]),t("div",{style:this.modalOuterStyle,attrs:this.computedAttrs,key:"modal-outer-".concat(this[x["a"]])},[h,p])}},render:function(t){return this.static?this.lazy&&this.isHidden?t():this.makeModal(t):this.isHidden?t():t(Kh,[this.makeModal(t)])}}),Ip=Object(le["d"])(P["Bb"],C["T"]),Bp="__bv_modal_directive__",Rp=function(t){var e=t.modifiers,n=void 0===e?{}:e,r=t.arg,i=t.value;return Object(u["n"])(i)?i:Object(u["n"])(r)?r:Object(f["h"])(n).reverse()[0]},Np=function(t){return t&&Object(A["v"])(t,".dropdown-menu > li, li.nav-item")&&Object(A["E"])("a, button",t)||t},Vp=function(t){t&&"BUTTON"!==t.tagName&&(Object(A["o"])(t,"role")||Object(A["G"])(t,"role","button"),"A"===t.tagName||Object(A["o"])(t,"tabindex")||Object(A["G"])(t,"tabindex","0"))},zp=function(t,e,n){var r=Rp(e),i=Np(t);if(r&&i){var a=function(t){var e=t.currentTarget;if(!Object(A["r"])(e)){var i=t.type,a=t.keyCode;"click"!==i&&("keydown"!==i||a!==te&&a!==se)||n.context.$root.$emit(Ip,r,e)}};t[Bp]={handler:a,target:r,trigger:i},Vp(i),Object(le["b"])(i,"click",a,C["db"]),"BUTTON"!==i.tagName&&"button"===Object(A["h"])(i,"role")&&Object(le["b"])(i,"keydown",a,C["db"])}},Wp=function(t){var e=t[Bp]||{},n=e.trigger,r=e.handler;n&&r&&(Object(le["a"])(n,"click",r,C["db"]),Object(le["a"])(n,"keydown",r,C["db"]),Object(le["a"])(t,"click",r,C["db"]),Object(le["a"])(t,"keydown",r,C["db"])),delete t[Bp]},Up=function(t,e,n){var r=t[Bp]||{},i=Rp(e),a=Np(t);i===r.target&&a===r.trigger||(Wp(t,e,n),zp(t,e,n)),Vp(a)},Gp=function(){},Jp={inserted:Up,updated:Gp,componentUpdated:Up,unbind:Wp};function qp(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Kp(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n2&&void 0!==arguments[2]?arguments[2]:lm;if(!Object(h["d"])(sm)&&!Object(h["c"])(sm)){var i=new e({parent:t,propsData:Qp(Qp(Qp({},fm(Object(Tu["c"])(P["Bb"]))),{},{hideHeaderClose:!0,hideHeader:!(n.title||n.titleHtml)},Object(f["j"])(n,Object(f["h"])(dm))),{},{lazy:!1,busy:!1,visible:!1,noStacking:!1,noEnforceFocus:!1})});return Object(f["h"])(dm).forEach((function(t){Object(u["o"])(n[t])||(i.$slots[dm[t]]=Object(ue["b"])(n[t]))})),new Promise((function(t,e){var n=!1;i.$once(C["fb"],(function(){n||e(new Error("BootstrapVue MsgBox destroyed before resolve"))})),i.$on(C["w"],(function(e){if(!e.defaultPrevented){var i=r(e);e.defaultPrevented||(n=!0,t(i))}}));var a=document.createElement("div");document.body.appendChild(a),i.$mount(a)}))}},r=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;if(e&&!Object(h["c"])(sm)&&!Object(h["d"])(sm)&&Object(u["f"])(i))return n(t,Qp(Qp({},fm(r)),{},{msgBoxContent:e}),i)},i=function(){function t(e){qp(this,t),Object(f["a"])(this,{_vm:e,_root:e.$root}),Object(f["d"])(this,{_vm:Object(f["l"])(),_root:Object(f["l"])()})}return Xp(t,[{key:"show",value:function(t){if(t&&this._root){for(var e,n=arguments.length,r=new Array(n>1?n-1:0),i=1;i1?n-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:{},n=Qp(Qp({},e),{},{okOnly:!0,okDisabled:!1,hideFooter:!1,msgBoxContent:t});return r(this._vm,t,n,(function(){return!0}))}},{key:"msgBoxConfirm",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Qp(Qp({},e),{},{okOnly:!1,okDisabled:!1,cancelDisabled:!1,hideFooter:!1});return r(this._vm,t,n,(function(t){var e=t.trigger;return"ok"===e||"cancel"!==e&&null}))}}]),t}();t.mixin({beforeCreate:function(){this[cm]=new i(this)}}),Object(f["g"])(t.prototype,sm)||Object(f["e"])(t.prototype,sm,{get:function(){return this&&this[cm]||Object(h["a"])('"'.concat(sm,'" must be accessed from a Vue instance "this" context.'),P["Bb"]),this[cm]}})},pm=L({plugins:{plugin:hm}}),mm=L({components:{BModal:Fp},directives:{VBModal:Jp},plugins:{BVModalPlugin:pm}});function bm(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var vm=function(t){return t="left"===t?"start":"right"===t?"end":t,"justify-content-".concat(t)},_m=Object(I["d"])({align:Object(I["c"])(E["u"]),cardHeader:Object(I["c"])(E["g"],!1),fill:Object(I["c"])(E["g"],!1),justified:Object(I["c"])(E["g"],!1),pills:Object(I["c"])(E["g"],!1),small:Object(I["c"])(E["g"],!1),tabs:Object(I["c"])(E["g"],!1),tag:Object(I["c"])(E["u"],"ul"),vertical:Object(I["c"])(E["g"],!1)},P["Db"]),gm=r["default"].extend({name:P["Db"],functional:!0,props:_m,render:function(t,e){var n,r=e.props,i=e.data,a=e.children,o=r.tabs,s=r.pills,c=r.vertical,u=r.align,l=r.cardHeader;return t(r.tag,Object(pt["a"])(i,{staticClass:"nav",class:(n={"nav-tabs":o,"nav-pills":s&&!o,"card-header-tabs":!c&&l&&o,"card-header-pills":!c&&l&&s&&!o,"flex-column":c,"nav-fill":!c&&r.fill,"nav-justified":!c&&r.justified},bm(n,vm(u),!c&&u),bm(n,"small",r.small),n)}),a)}});function ym(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Om(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0&&e<=1})),overlayTag:Object(I["c"])(E["u"],"div"),rounded:Object(I["c"])(E["j"],!1),show:Object(I["c"])(E["g"],!1),spinnerSmall:Object(I["c"])(E["g"],!1),spinnerType:Object(I["c"])(E["u"],"border"),spinnerVariant:Object(I["c"])(E["u"]),variant:Object(I["c"])(E["u"],"light"),wrapTag:Object(I["c"])(E["u"],"div"),zIndex:Object(I["c"])(E["p"],10)},P["Mb"]),yb=r["default"].extend({name:P["Mb"],mixins:[B["a"]],props:gb,computed:{computedRounded:function(){var t=this.rounded;return!0===t||""===t?"rounded":t?"rounded-".concat(t):""},computedVariant:function(){var t=this.variant;return t&&!this.bgColor?"bg-".concat(t):""},slotScope:function(){return{spinnerType:this.spinnerType||null,spinnerVariant:this.spinnerVariant||null,spinnerSmall:this.spinnerSmall}}},methods:{defaultOverlayFn:function(t){var e=t.spinnerType,n=t.spinnerVariant,r=t.spinnerSmall;return this.$createElement(hb,{props:{type:e,variant:n,small:r}})}},render:function(t){var e=this,n=this.show,r=this.fixed,i=this.noFade,a=this.noWrap,o=this.slotScope,s=t();if(n){var c=t("div",{staticClass:"position-absolute",class:[this.computedVariant,this.computedRounded],style:mb(mb({},_b),{},{opacity:this.opacity,backgroundColor:this.bgColor||null,backdropFilter:this.blur?"blur(".concat(this.blur,")"):null})}),u=t("div",{staticClass:"position-absolute",style:this.noCenter?mb({},_b):{top:"50%",left:"50%",transform:"translateX(-50%) translateY(-50%)"}},[this.normalizeSlot(H["V"],o)||this.defaultOverlayFn(o)]);s=t(this.overlayTag,{staticClass:"b-overlay",class:{"position-absolute":!a||a&&!r,"position-fixed":a&&r},style:mb(mb({},_b),{},{zIndex:this.zIndex||10}),on:{click:function(t){return e.$emit(C["f"],t)}},key:"overlay"},[c,u])}return s=t(N["a"],{props:{noFade:i,appear:!0},on:{"after-enter":function(){return e.$emit(C["U"])},"after-leave":function(){return e.$emit(C["v"])}}},[s]),a?s:t(this.wrapTag,{staticClass:"b-overlay-wrap position-relative",attrs:{"aria-busy":n?"true":null}},a?[s]:[this.normalizeSlot(),s])}}),Ob=L({components:{BOverlay:yb}});function jb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function wb(t){for(var e=1;ee?e:n<1?1:n},Hb=function(t){if(t.keyCode===se)return Object(le["f"])(t,{immediatePropagation:!0}),t.currentTarget.click(),!1},Ab=Object(I["d"])(Object(f["m"])(wb(wb({},Tb),{},{align:Object(I["c"])(E["u"],"left"),ariaLabel:Object(I["c"])(E["u"],"Pagination"),disabled:Object(I["c"])(E["g"],!1),ellipsisClass:Object(I["c"])(E["e"]),ellipsisText:Object(I["c"])(E["u"],"…"),firstClass:Object(I["c"])(E["e"]),firstNumber:Object(I["c"])(E["g"],!1),firstText:Object(I["c"])(E["u"],"«"),hideEllipsis:Object(I["c"])(E["g"],!1),hideGotoEndButtons:Object(I["c"])(E["g"],!1),labelFirstPage:Object(I["c"])(E["u"],"Go to first page"),labelLastPage:Object(I["c"])(E["u"],"Go to last page"),labelNextPage:Object(I["c"])(E["u"],"Go to next page"),labelPage:Object(I["c"])(E["m"],"Go to page"),labelPrevPage:Object(I["c"])(E["u"],"Go to previous page"),lastClass:Object(I["c"])(E["e"]),lastNumber:Object(I["c"])(E["g"],!1),lastText:Object(I["c"])(E["u"],"»"),limit:Object(I["c"])(E["p"],xb,(function(t){return!(Object(F["c"])(t,0)<1)||(Object(h["a"])('Prop "limit" must be a number greater than "0"',P["Nb"]),!1)})),nextClass:Object(I["c"])(E["e"]),nextText:Object(I["c"])(E["u"],"›"),pageClass:Object(I["c"])(E["e"]),pills:Object(I["c"])(E["g"],!1),prevClass:Object(I["c"])(E["e"]),prevText:Object(I["c"])(E["u"],"‹"),size:Object(I["c"])(E["u"])})),"pagination"),$b=r["default"].extend({mixins:[kb,B["a"]],props:Ab,data:function(){var t=Object(F["c"])(this[Db],0);return t=t>0?t:-1,{currentPage:t,localNumberOfPages:1,localLimit:xb}},computed:{btnSize:function(){var t=this.size;return t?"pagination-".concat(t):""},alignment:function(){var t=this.align;return"center"===t?"justify-content-center":"end"===t||"right"===t?"justify-content-end":"fill"===t?"text-center":""},styleClass:function(){return this.pills?"b-pagination-pills":""},computedCurrentPage:function(){return Eb(this.currentPage,this.localNumberOfPages)},paginationParams:function(){var t=this.localLimit,e=this.localNumberOfPages,n=this.computedCurrentPage,r=this.hideEllipsis,i=this.firstNumber,a=this.lastNumber,o=!1,s=!1,c=t,u=1;e<=t?c=e:nYb?(r&&!a||(s=!0,c=t-(i?0:1)),c=Object(nt["e"])(c,t)):e-n+2Yb?(r&&!i||(o=!0,c=t-(a?0:1)),u=e-c+1):(t>Yb&&(c=t-(r?0:2),o=!(r&&!i),s=!(r&&!a)),u=n-Object(nt["c"])(c/2)),u<1?(u=1,o=!1):u>e-c&&(u=e-c+1,s=!1),o&&i&&u<4&&(c+=2,u=1,o=!1);var l=u+c-1;return s&&a&&l>e-3&&(c+=l===e-2?2:3,s=!1),t<=Yb&&(i&&1===u?c=Object(nt["e"])(c+1,e,t+1):a&&e===u+c-1&&(u=Object(nt["d"])(u-1,1),c=Object(nt["e"])(e-u+1,e,t+1))),c=Object(nt["e"])(c,e-u+1),{showFirstDots:o,showLastDots:s,numberOfLinks:c,startNumber:u}},pageList:function(){var t=this.paginationParams,e=t.numberOfLinks,n=t.startNumber,r=this.computedCurrentPage,i=Pb(n,e);if(i.length>3){var a=r-n,o="bv-d-xs-down-none";if(0===a)for(var s=3;sa+1;l--)i[l].classes=o}}return i}},watch:(vb={},Mb(vb,Db,(function(t,e){t!==e&&(this.currentPage=Eb(t,this.localNumberOfPages))})),Mb(vb,"currentPage",(function(t,e){t!==e&&this.$emit(Sb,t>0?t:null)})),Mb(vb,"limit",(function(t,e){t!==e&&(this.localLimit=Cb(t))})),vb),created:function(){var t=this;this.localLimit=Cb(this.limit),this.$nextTick((function(){t.currentPage=t.currentPage>t.localNumberOfPages?t.localNumberOfPages:t.currentPage}))},methods:{handleKeyNav:function(t){var e=t.keyCode,n=t.shiftKey;this.isNav||(e===re||e===ce?(Object(le["f"])(t,{propagation:!1}),n?this.focusFirst():this.focusPrev()):e!==oe&&e!==Zt||(Object(le["f"])(t,{propagation:!1}),n?this.focusLast():this.focusNext()))},getButtons:function(){return Object(A["F"])("button.page-link, a.page-link",this.$el).filter((function(t){return Object(A["u"])(t)}))},focusCurrent:function(){var t=this;this.$nextTick((function(){var e=t.getButtons().find((function(e){return Object(F["c"])(Object(A["h"])(e,"aria-posinset"),0)===t.computedCurrentPage}));Object(A["d"])(e)||t.focusFirst()}))},focusFirst:function(){var t=this;this.$nextTick((function(){var e=t.getButtons().find((function(t){return!Object(A["r"])(t)}));Object(A["d"])(e)}))},focusLast:function(){var t=this;this.$nextTick((function(){var e=t.getButtons().reverse().find((function(t){return!Object(A["r"])(t)}));Object(A["d"])(e)}))},focusPrev:function(){var t=this;this.$nextTick((function(){var e=t.getButtons(),n=e.indexOf(Object(A["g"])());n>0&&!Object(A["r"])(e[n-1])&&Object(A["d"])(e[n-1])}))},focusNext:function(){var t=this;this.$nextTick((function(){var e=t.getButtons(),n=e.indexOf(Object(A["g"])());no,p=r<1?1:r>o?o:r,v={disabled:f,page:p,index:p-1},_=e.normalizeSlot(s,v)||Object(mt["g"])(c)||t(),g=t(f?"span":a?de["a"]:"button",{staticClass:"page-link",class:{"flex-grow-1":!a&&!f&&h},props:f||!a?{}:e.linkProps(r),attrs:{role:a?null:"menuitem",type:a||f?null:"button",tabindex:f||a?null:"-1","aria-label":i,"aria-controls":e.ariaControls||null,"aria-disabled":f?"true":null},on:f?{}:{"!click":function(t){e.onClick(t,r)},keydown:Hb}},[_]);return t("li",{key:d,staticClass:"page-item",class:[{disabled:f,"flex-fill":h,"d-flex":h&&!a&&!f},u],attrs:{role:a?null:"presentation","aria-hidden":f?"true":null}},[g])},_=function(n){return t("li",{staticClass:"page-item",class:["disabled","bv-d-xs-down-none",h?"flex-fill":"",e.ellipsisClass],attrs:{role:"separator"},key:"ellipsis-".concat(n?"last":"first")},[t("span",{staticClass:"page-link"},[e.normalizeSlot(H["m"])||Object(mt["g"])(e.ellipsisText)||t()])])},g=function(i,s){var c=i.number,l=m(c)&&!b,d=n?null:l||b&&0===s?"0":"-1",f={role:a?null:"menuitemradio",type:a||n?null:"button","aria-disabled":n?"true":null,"aria-controls":e.ariaControls||null,"aria-label":Object(I["b"])(r)?r(c):"".concat(Object(u["f"])(r)?r():r," ").concat(c),"aria-checked":a?null:l?"true":"false","aria-current":a&&l?"page":null,"aria-posinset":a?null:c,"aria-setsize":a?null:o,tabindex:a?null:d},p=Object(mt["g"])(e.makePage(c)),v={page:c,index:c-1,content:p,active:l,disabled:n},_=t(n?"span":a?de["a"]:"button",{props:n||!a?{}:e.linkProps(c),staticClass:"page-link",class:{"flex-grow-1":!a&&!n&&h},attrs:f,on:n?{}:{"!click":function(t){e.onClick(t,c)},keydown:Hb}},[e.normalizeSlot(H["W"],v)||p]);return t("li",{staticClass:"page-item",class:[{disabled:n,active:l,"flex-fill":h,"d-flex":h&&!a&&!n},i.classes,e.pageClass],attrs:{role:a?null:"presentation"},key:"page-".concat(c)},[_])},y=t();this.firstNumber||this.hideGotoEndButtons||(y=v(1,this.labelFirstPage,H["r"],this.firstText,this.firstClass,1,"pagination-goto-first")),p.push(y),p.push(v(s-1,this.labelPrevPage,H["Z"],this.prevText,this.prevClass,1,"pagination-goto-prev")),p.push(this.firstNumber&&1!==c[0]?g({number:1},0):t()),p.push(d?_(!1):t()),this.pageList.forEach((function(t,n){var r=d&&e.firstNumber&&1!==c[0]?1:0;p.push(g(t,n+r))})),p.push(f?_(!0):t()),p.push(this.lastNumber&&c[c.length-1]!==o?g({number:o},-1):t()),p.push(v(s+1,this.labelNextPage,H["U"],this.nextText,this.nextClass,o,"pagination-goto-next"));var O=t();this.lastNumber||this.hideGotoEndButtons||(O=v(o,this.labelLastPage,H["D"],this.lastText,this.lastClass,o,"pagination-goto-last")),p.push(O);var j=t("ul",{staticClass:"pagination",class:["b-pagination",this.btnSize,this.alignment,this.styleClass],attrs:{role:a?null:"menubar","aria-disabled":n?"true":"false","aria-label":a?null:i||null},on:a?{}:{keydown:this.handleKeyNav},ref:"ul"},p);return a?t("nav",{attrs:{"aria-disabled":n?"true":null,"aria-hidden":n?"true":"false","aria-label":a&&i||null}},[j]):j}});function Fb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Ib(t){for(var e=1;et.numberOfPages)&&(this.currentPage=1),this.localNumberOfPages=t.numberOfPages}},created:function(){var t=this;this.localNumberOfPages=this.numberOfPages;var e=Object(F["c"])(this[Db],0);e>0?this.currentPage=e:this.$nextTick((function(){t.currentPage=0}))},methods:{onClick:function(t,e){var n=this;if(e!==this.currentPage){var r=t.target,i=new po["a"](C["F"],{cancelable:!0,vueTarget:this,target:r});this.$emit(i.type,i,e),i.defaultPrevented||(this.currentPage=e,this.$emit(C["d"],this.currentPage),this.$nextTick((function(){Object(A["u"])(r)&&n.$el.contains(r)?Object(A["d"])(r):n.focusCurrent()})))}},makePage:function(t){return t},linkProps:function(){return{}}}}),Gb=L({components:{BPagination:Ub}});function Jb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function qb(t){for(var e=1;e0?this.localNumberOfPages=this.pages.length:this.localNumberOfPages=Xb(this.numberOfPages),this.$nextTick((function(){t.guessCurrentPage()}))},onClick:function(t,e){var n=this;if(e!==this.currentPage){var r=t.currentTarget||t.target,i=new po["a"](C["F"],{cancelable:!0,vueTarget:this,target:r});this.$emit(i.type,i,e),i.defaultPrevented||(Object(A["D"])((function(){n.currentPage=e,n.$emit(C["d"],e)})),this.$nextTick((function(){Object(A["c"])(r)})))}},getPageInfo:function(t){if(!Object(u["a"])(this.pages)||0===this.pages.length||Object(u["o"])(this.pages[t-1])){var e="".concat(this.baseUrl).concat(t);return{link:this.useRouter?{path:e}:e,text:Object(mt["g"])(t)}}var n=this.pages[t-1];if(Object(u["j"])(n)){var r=n.link;return{link:Object(u["j"])(r)?r:this.useRouter?{path:r}:r,text:Object(mt["g"])(n.text||t)}}return{link:Object(mt["g"])(n),text:Object(mt["g"])(t)}},makePage:function(t){var e=this.pageGen,n=this.getPageInfo(t);return Object(I["b"])(e)?e(t,n):n.text},makeLink:function(t){var e=this.linkGen,n=this.getPageInfo(t);return Object(I["b"])(e)?e(t,n):n.link},linkProps:function(t){var e=Object(I["e"])(Zb,this),n=this.makeLink(t);return this.useRouter||Object(u["j"])(n)?e.to=n:e.href=n,e},resolveLink:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";try{t=document.createElement("a"),t.href=Object(ht["a"])({to:e},"a","/","/"),document.body.appendChild(t);var n=t,r=n.pathname,i=n.hash,a=n.search;return document.body.removeChild(t),{path:r,hash:i,query:Object(ht["f"])(a)}}catch(o){try{t&&t.parentNode&&t.parentNode.removeChild(t)}catch(s){}return{}}},resolveRoute:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";try{var e=this.$router.resolve(t,this.$route).route;return{path:e.path,hash:e.hash,query:e.query}}catch(n){return{}}},guessCurrentPage:function(){var t=this.$router,e=this.$route,n=this.computedValue;if(!this.noPageDetect&&!n&&(i["i"]||!i["i"]&&t))for(var r=t&&e?{path:e.path,hash:e.hash,query:e.query}:{},a=i["i"]?window.location||document.location:null,o=a?{path:a.pathname,hash:a.hash,query:Object(ht["f"])(a.search)}:{},s=1;!n&&s<=this.localNumberOfPages;s++){var c=this.makeLink(s);n=t&&(Object(u["j"])(c)||this.useRouter)?Object(tr["a"])(this.resolveRoute(c),r)?s:null:i["i"]?Object(tr["a"])(this.resolveLink(c),o)?s:null:-1}this.currentPage=n>0?n:0}}}),ev=L({components:{BPaginationNav:tv}}),nv=n("be29"),rv={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left",TOPLEFT:"top",TOPRIGHT:"top",RIGHTTOP:"right",RIGHTBOTTOM:"right",BOTTOMLEFT:"bottom",BOTTOMRIGHT:"bottom",LEFTTOP:"left",LEFTBOTTOM:"left"},iv={AUTO:0,TOPLEFT:-1,TOP:0,TOPRIGHT:1,RIGHTTOP:-1,RIGHT:0,RIGHTBOTTOM:1,BOTTOMLEFT:-1,BOTTOM:0,BOTTOMRIGHT:1,LEFTTOP:-1,LEFT:0,LEFTBOTTOM:1},av={arrowPadding:Object(I["c"])(E["p"],6),boundary:Object(I["c"])([ho["c"],E["u"]],"scrollParent"),boundaryPadding:Object(I["c"])(E["p"],5),fallbackPlacement:Object(I["c"])(E["f"],"flip"),offset:Object(I["c"])(E["p"],0),placement:Object(I["c"])(E["u"],"top"),target:Object(I["c"])([ho["c"],ho["d"]])},ov=r["default"].extend({name:P["Sb"],props:av,data:function(){return{noFade:!1,localShow:!0,attachment:this.getAttachment(this.placement)}},computed:{templateType:function(){return"unknown"},popperConfig:function(){var t=this,e=this.placement;return{placement:this.getAttachment(e),modifiers:{offset:{offset:this.getOffset(e)},flip:{behavior:this.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{padding:this.boundaryPadding,boundariesElement:this.boundary}},onCreate:function(e){e.originalPlacement!==e.placement&&t.popperPlacementChange(e)},onUpdate:function(e){t.popperPlacementChange(e)}}}},created:function(){var t=this;this.$_popper=null,this.localShow=!0,this.$on(C["T"],(function(e){t.popperCreate(e)}));var e=function(){t.$nextTick((function(){Object(A["D"])((function(){t.$destroy()}))}))};this.$parent.$once(C["fb"],e),this.$once(C["v"],e)},beforeMount:function(){this.attachment=this.getAttachment(this.placement)},updated:function(){this.updatePopper()},beforeDestroy:function(){this.destroyPopper()},destroyed:function(){var t=this.$el;t&&t.parentNode&&t.parentNode.removeChild(t)},methods:{hide:function(){this.localShow=!1},getAttachment:function(t){return rv[String(t).toUpperCase()]||"auto"},getOffset:function(t){if(!this.offset){var e=this.$refs.arrow||Object(A["E"])(".arrow",this.$el),n=Object(F["b"])(Object(A["k"])(e).width,0)+Object(F["b"])(this.arrowPadding,0);switch(iv[String(t).toUpperCase()]||0){case 1:return"+50%p - ".concat(n,"px");case-1:return"-50%p + ".concat(n,"px");default:return 0}}return this.offset},popperCreate:function(t){this.destroyPopper(),this.$_popper=new ao["a"](this.target,t,this.popperConfig)},destroyPopper:function(){this.$_popper&&this.$_popper.destroy(),this.$_popper=null},updatePopper:function(){this.$_popper&&this.$_popper.scheduleUpdate()},popperPlacementChange:function(t){this.attachment=this.getAttachment(t.placement)},renderTemplate:function(t){return t("div")}},render:function(t){var e=this,n=this.noFade;return t(N["a"],{props:{appear:!0,noFade:n},on:{beforeEnter:function(t){return e.$emit(C["T"],t)},afterEnter:function(t){return e.$emit(C["U"],t)},beforeLeave:function(t){return e.$emit(C["w"],t)},afterLeave:function(t){return e.$emit(C["v"],t)}}},[this.localShow?this.renderTemplate(t):t()])}});function sv(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function cv(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},n=!1;Object(f["h"])(Mv).forEach((function(r){Object(u["o"])(e[r])||t[r]===e[r]||(t[r]=e[r],"title"===r&&(n=!0))})),n&&this.localShow&&this.fixTitle()},createTemplateAndShow:function(){var t=this.getContainer(),e=this.getTemplate(),n=this.$_tip=new e({parent:this,propsData:{id:this.computedId,html:this.html,placement:this.placement,fallbackPlacement:this.fallbackPlacement,target:this.getPlacementTarget(),boundary:this.getBoundary(),offset:Object(F["c"])(this.offset,0),arrowPadding:Object(F["c"])(this.arrowPadding,0),boundaryPadding:Object(F["c"])(this.boundaryPadding,0)}});this.handleTemplateUpdate(),n.$once(C["T"],this.onTemplateShow),n.$once(C["U"],this.onTemplateShown),n.$once(C["w"],this.onTemplateHide),n.$once(C["v"],this.onTemplateHidden),n.$once(C["fb"],this.destroyTemplate),n.$on(C["s"],this.handleEvent),n.$on(C["t"],this.handleEvent),n.$on(C["A"],this.handleEvent),n.$on(C["B"],this.handleEvent),n.$mount(t.appendChild(document.createElement("div")))},hideTemplate:function(){this.$_tip&&this.$_tip.hide(),this.clearActiveTriggers(),this.$_hoverState=""},destroyTemplate:function(){this.setWhileOpenListeners(!1),this.clearHoverTimeout(),this.$_hoverState="",this.clearActiveTriggers(),this.localPlacementTarget=null;try{this.$_tip.$destroy()}catch(t){}this.$_tip=null,this.removeAriaDescribedby(),this.restoreTitle(),this.localShow=!1},getTemplateElement:function(){return this.$_tip?this.$_tip.$el:null},handleTemplateUpdate:function(){var t=this,e=this.$_tip;if(e){var n=["title","content","variant","customClass","noFade","interactive"];n.forEach((function(n){e[n]!==t[n]&&(e[n]=t[n])}))}},show:function(){var t=this.getTarget();if(t&&Object(A["f"])(document.body,t)&&Object(A["u"])(t)&&!this.dropdownOpen()&&(!Object(u["p"])(this.title)&&""!==this.title||!Object(u["p"])(this.content)&&""!==this.content)&&!this.$_tip&&!this.localShow){this.localShow=!0;var e=this.buildEvent(C["T"],{cancelable:!0});this.emitEvent(e),e.defaultPrevented?this.destroyTemplate():(this.fixTitle(),this.addAriaDescribedby(),this.createTemplateAndShow())}},hide:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.getTemplateElement();if(e&&this.localShow){var n=this.buildEvent(C["w"],{cancelable:!t});this.emitEvent(n),n.defaultPrevented||this.hideTemplate()}else this.restoreTitle()},forceHide:function(){var t=this.getTemplateElement();t&&this.localShow&&(this.setWhileOpenListeners(!1),this.clearHoverTimeout(),this.$_hoverState="",this.clearActiveTriggers(),this.$_tip&&(this.$_tip.noFade=!0),this.hide(!0))},enable:function(){this.$_enabled=!0,this.emitEvent(this.buildEvent(C["p"]))},disable:function(){this.$_enabled=!1,this.emitEvent(this.buildEvent(C["l"]))},onTemplateShow:function(){this.setWhileOpenListeners(!0)},onTemplateShown:function(){var t=this.$_hoverState;this.$_hoverState="","out"===t&&this.leave(null),this.emitEvent(this.buildEvent(C["U"]))},onTemplateHide:function(){this.setWhileOpenListeners(!1)},onTemplateHidden:function(){this.destroyTemplate(),this.emitEvent(this.buildEvent(C["v"]))},getTarget:function(){var t=this.target;return Object(u["n"])(t)?t=Object(A["j"])(t.replace(/^#/,"")):Object(u["f"])(t)?t=t():t&&(t=t.$el||t),Object(A["s"])(t)?t:null},getPlacementTarget:function(){return this.getTarget()},getTargetId:function(){var t=this.getTarget();return t&&t.id?t.id:null},getContainer:function(){var t=!!this.container&&(this.container.$el||this.container),e=document.body,n=this.getTarget();return!1===t?Object(A["e"])(yv,n)||e:Object(u["n"])(t)&&Object(A["j"])(t.replace(/^#/,""))||e},getBoundary:function(){return this.boundary?this.boundary.$el||this.boundary:"scrollParent"},isInModal:function(){var t=this.getTarget();return t&&Object(A["e"])(vv,t)},isDropdown:function(){var t=this.getTarget();return t&&Object(A["p"])(t,Ov)},dropdownOpen:function(){var t=this.getTarget();return this.isDropdown()&&t&&Object(A["E"])(jv,t)},clearHoverTimeout:function(){clearTimeout(this.$_hoverTimeout),this.$_hoverTimeout=null},clearVisibilityInterval:function(){clearInterval(this.$_visibleInterval),this.$_visibleInterval=null},clearActiveTriggers:function(){for(var t in this.activeTrigger)this.activeTrigger[t]=!1},addAriaDescribedby:function(){var t=this.getTarget(),e=Object(A["h"])(t,"aria-describedby")||"";e=e.split(/\s+/).concat(this.computedId).join(" ").trim(),Object(A["G"])(t,"aria-describedby",e)},removeAriaDescribedby:function(){var t=this,e=this.getTarget(),n=Object(A["h"])(e,"aria-describedby")||"";n=n.split(/\s+/).filter((function(e){return e!==t.computedId})).join(" ").trim(),n?Object(A["G"])(e,"aria-describedby",n):Object(A["z"])(e,"aria-describedby")},fixTitle:function(){var t=this.getTarget();if(Object(A["o"])(t,"title")){var e=Object(A["h"])(t,"title");Object(A["G"])(t,"title",""),e&&Object(A["G"])(t,wv,e)}},restoreTitle:function(){var t=this.getTarget();if(Object(A["o"])(t,wv)){var e=Object(A["h"])(t,wv);Object(A["z"])(t,wv),e&&Object(A["G"])(t,"title",e)}},buildEvent:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new po["a"](t,hv({cancelable:!1,target:this.getTarget(),relatedTarget:this.getTemplateElement()||null,componentId:this.computedId,vueTarget:this},e))},emitEvent:function(t){var e=t.type;this.emitOnRoot(Object(le["e"])(this.templateType,e),t),this.$emit(e,t)},listen:function(){var t=this,e=this.getTarget();e&&(this.setRootListener(!0),this.computedTriggers.forEach((function(n){"click"===n?Object(le["b"])(e,"click",t.handleEvent,C["cb"]):"focus"===n?(Object(le["b"])(e,"focusin",t.handleEvent,C["cb"]),Object(le["b"])(e,"focusout",t.handleEvent,C["cb"])):"blur"===n?Object(le["b"])(e,"focusout",t.handleEvent,C["cb"]):"hover"===n&&(Object(le["b"])(e,"mouseenter",t.handleEvent,C["cb"]),Object(le["b"])(e,"mouseleave",t.handleEvent,C["cb"]))}),this))},unListen:function(){var t=this,e=["click","focusin","focusout","mouseenter","mouseleave"],n=this.getTarget();this.setRootListener(!1),e.forEach((function(e){n&&Object(le["a"])(n,e,t.handleEvent,C["cb"])}),this)},setRootListener:function(t){var e=this.$root;if(e){var n=t?"$on":"$off",r=this.templateType;e[n](Object(le["d"])(r,C["w"]),this.doHide),e[n](Object(le["d"])(r,C["T"]),this.doShow),e[n](Object(le["d"])(r,C["k"]),this.doDisable),e[n](Object(le["d"])(r,C["o"]),this.doEnable)}},setWhileOpenListeners:function(t){this.setModalListener(t),this.setDropdownListener(t),this.visibleCheck(t),this.setOnTouchStartListener(t)},visibleCheck:function(t){var e=this;this.clearVisibilityInterval();var n=this.getTarget(),r=this.getTemplateElement();t&&(this.$_visibleInterval=setInterval((function(){!r||!e.localShow||n.parentNode&&Object(A["u"])(n)||e.forceHide()}),100))},setModalListener:function(t){this.isInModal()&&this.$root[t?"$on":"$off"](_v,this.forceHide)},setOnTouchStartListener:function(t){var e=this;"ontouchstart"in document.documentElement&&Object(ue["f"])(document.body.children).forEach((function(n){Object(le["c"])(t,n,"mouseover",e.$_noop)}))},setDropdownListener:function(t){var e=this.getTarget();e&&this.$root&&this.isDropdown&&e.__vue__&&e.__vue__[t?"$on":"$off"](C["U"],this.forceHide)},handleEvent:function(t){var e=this.getTarget();if(e&&!Object(A["r"])(e)&&this.$_enabled&&!this.dropdownOpen()){var n=t.type,r=this.computedTriggers;if("click"===n&&Object(ue["a"])(r,"click"))this.click(t);else if("mouseenter"===n&&Object(ue["a"])(r,"hover"))this.enter(t);else if("focusin"===n&&Object(ue["a"])(r,"focus"))this.enter(t);else if("focusout"===n&&(Object(ue["a"])(r,"focus")||Object(ue["a"])(r,"blur"))||"mouseleave"===n&&Object(ue["a"])(r,"hover")){var i=this.getTemplateElement(),a=t.target,o=t.relatedTarget;if(i&&Object(A["f"])(i,a)&&Object(A["f"])(e,o)||i&&Object(A["f"])(e,a)&&Object(A["f"])(i,o)||i&&Object(A["f"])(i,a)&&Object(A["f"])(i,o)||Object(A["f"])(e,a)&&Object(A["f"])(e,o))return;this.leave(t)}}},doHide:function(t){t&&this.getTargetId()!==t&&this.computedId!==t||this.forceHide()},doShow:function(t){t&&this.getTargetId()!==t&&this.computedId!==t||this.show()},doDisable:function(t){t&&this.getTargetId()!==t&&this.computedId!==t||this.disable()},doEnable:function(t){t&&this.getTargetId()!==t&&this.computedId!==t||this.enable()},click:function(t){this.$_enabled&&!this.dropdownOpen()&&(Object(A["d"])(t.currentTarget),this.activeTrigger.click=!this.activeTrigger.click,this.isWithActiveTrigger?this.enter(null):this.leave(null))},toggle:function(){this.$_enabled&&!this.dropdownOpen()&&(this.localShow?this.leave(null):this.enter(null))},enter:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;e&&(this.activeTrigger["focusin"===e.type?"focus":"hover"]=!0),this.localShow||"in"===this.$_hoverState?this.$_hoverState="in":(this.clearHoverTimeout(),this.$_hoverState="in",this.computedDelay.show?(this.fixTitle(),this.$_hoverTimeout=setTimeout((function(){"in"===t.$_hoverState?t.show():t.localShow||t.restoreTitle()}),this.computedDelay.show)):this.show())},leave:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;e&&(this.activeTrigger["focusout"===e.type?"focus":"hover"]=!1,"focusout"===e.type&&Object(ue["a"])(this.computedTriggers,"blur")&&(this.activeTrigger.click=!1,this.activeTrigger.hover=!1)),this.isWithActiveTrigger||(this.clearHoverTimeout(),this.$_hoverState="out",this.computedDelay.hide?this.$_hoverTimeout=setTimeout((function(){"out"===t.$_hoverState&&t.hide()}),this.computedDelay.hide):this.hide())}}});function kv(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Tv(t){for(var e=1;e0&&t[Wv].updateData(e)}))}var o={title:r.title,content:r.content,triggers:r.trigger,placement:r.placement,fallbackPlacement:r.fallbackPlacement,variant:r.variant,customClass:r.customClass,container:r.container,boundary:r.boundary,delay:r.delay,offset:r.offset,noFade:!r.animation,id:r.id,disabled:r.disabled,html:r.html},s=t[Wv].__bv_prev_data__;if(t[Wv].__bv_prev_data__=o,!Object(tr["a"])(o,s)){var c={target:t};Object(f["h"])(o).forEach((function(e){o[e]!==s[e]&&(c[e]="title"!==e&&"content"!==e||!Object(u["f"])(o[e])?o[e]:o[e](t))})),t[Wv].updateData(c)}}},o_=function(t){t[Wv]&&(t[Wv].$destroy(),t[Wv]=null),delete t[Wv]},s_={bind:function(t,e,n){a_(t,e,n)},componentUpdated:function(t,e,n){n.context.$nextTick((function(){a_(t,e,n)}))},unbind:function(t){o_(t)}},c_=L({directives:{VBPopover:s_}}),u_=L({components:{BPopover:Rv},plugins:{VBPopoverPlugin:c_}}),l_=Object(I["d"])({animated:Object(I["c"])(E["g"],null),label:Object(I["c"])(E["u"]),labelHtml:Object(I["c"])(E["u"]),max:Object(I["c"])(E["p"],null),precision:Object(I["c"])(E["p"],null),showProgress:Object(I["c"])(E["g"],null),showValue:Object(I["c"])(E["g"],null),striped:Object(I["c"])(E["g"],null),value:Object(I["c"])(E["p"],0),variant:Object(I["c"])(E["u"])},P["Ub"]),d_=r["default"].extend({name:P["Ub"],mixins:[B["a"]],inject:{bvProgress:{default:function(){return{}}}},props:l_,computed:{progressBarClasses:function(){var t=this.computedAnimated,e=this.computedVariant;return[e?"bg-".concat(e):"",this.computedStriped||t?"progress-bar-striped":"",t?"progress-bar-animated":""]},progressBarStyles:function(){return{width:this.computedValue/this.computedMax*100+"%"}},computedValue:function(){return Object(F["b"])(this.value,0)},computedMax:function(){var t=Object(F["b"])(this.max)||Object(F["b"])(this.bvProgress.max,0);return t>0?t:100},computedPrecision:function(){return Object(nt["d"])(Object(F["c"])(this.precision,Object(F["c"])(this.bvProgress.precision,0)),0)},computedProgress:function(){var t=this.computedPrecision,e=Object(nt["f"])(10,t);return Object(F["a"])(100*e*this.computedValue/this.computedMax/e,t)},computedVariant:function(){return this.variant||this.bvProgress.variant},computedStriped:function(){return Object(u["b"])(this.striped)?this.striped:this.bvProgress.striped||!1},computedAnimated:function(){return Object(u["b"])(this.animated)?this.animated:this.bvProgress.animated||!1},computedShowProgress:function(){return Object(u["b"])(this.showProgress)?this.showProgress:this.bvProgress.showProgress||!1},computedShowValue:function(){return Object(u["b"])(this.showValue)?this.showValue:this.bvProgress.showValue||!1}},render:function(t){var e,n=this.label,r=this.labelHtml,i=this.computedValue,a=this.computedPrecision,o={};return this.hasNormalizedSlot()?e=this.normalizeSlot():n||r?o=Je(r,n):this.computedShowProgress?e=this.computedProgress:this.computedShowValue&&(e=Object(F["a"])(i,a)),t("div",{staticClass:"progress-bar",class:this.progressBarClasses,style:this.progressBarStyles,attrs:{role:"progressbar","aria-valuemin":"0","aria-valuemax":Object(mt["g"])(this.computedMax),"aria-valuenow":Object(F["a"])(i,a)},domProps:o},e)}});function f_(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function h_(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.noCloseOnRouteChange||t.fullPath===e.fullPath||this.hide()})),m_),created:function(){this.$_returnFocusEl=null},mounted:function(){var t=this;this.listenOnRoot(L_,this.handleToggle),this.listenOnRoot(M_,this.handleSync),this.$nextTick((function(){t.emitState(t.localShow)}))},activated:function(){this.emitSync()},beforeDestroy:function(){this.localShow=!1,this.$_returnFocusEl=null},methods:{hide:function(){this.localShow=!1},emitState:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.localShow;this.emitOnRoot(k_,this.safeId(),t)},emitSync:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.localShow;this.emitOnRoot(T_,this.safeId(),t)},handleToggle:function(t){t&&t===this.safeId()&&(this.localShow=!this.localShow)},handleSync:function(t){var e=this;t&&t===this.safeId()&&this.$nextTick((function(){e.emitSync(e.localShow)}))},onKeydown:function(t){var e=t.keyCode;!this.noCloseOnEsc&&e===ee&&this.localShow&&this.hide()},onBackdropClick:function(){this.localShow&&!this.noCloseOnBackdrop&&this.hide()},onTopTrapFocus:function(){var t=Object(A["n"])(this.$refs.content);this.enforceFocus(t.reverse()[0])},onBottomTrapFocus:function(){var t=Object(A["n"])(this.$refs.content);this.enforceFocus(t[0])},onBeforeEnter:function(){this.$_returnFocusEl=Object(A["g"])(i["i"]?[document.body]:[]),this.isOpen=!0},onAfterEnter:function(t){Object(A["f"])(t,Object(A["g"])())||this.enforceFocus(t),this.$emit(C["U"])},onAfterLeave:function(){this.enforceFocus(this.$_returnFocusEl),this.$_returnFocusEl=null,this.isOpen=!1,this.$emit(C["v"])},enforceFocus:function(t){this.noEnforceFocus||Object(A["d"])(t)}},render:function(t){var e,n=this.bgVariant,r=this.width,i=this.textVariant,a=this.localShow,o=""===this.shadow||this.shadow,s=t(this.tag,{staticClass:w_,class:[(e={shadow:!0===o},j_(e,"shadow-".concat(o),o&&!0!==o),j_(e,"".concat(w_,"-right"),this.right),j_(e,"bg-".concat(n),n),j_(e,"text-".concat(i),i),e),this.sidebarClass],style:{width:r},attrs:this.computedAttrs,directives:[{name:"show",value:a}],ref:"content"},[I_(t,this)]);s=t("transition",{props:this.transitionProps,on:{beforeEnter:this.onBeforeEnter,afterEnter:this.onAfterEnter,afterLeave:this.onAfterLeave}},[s]);var c=t(N["a"],{props:{noFade:this.noSlide}},[B_(t,this)]),u=t(),l=t();return this.backdrop&&a&&(u=t("div",{attrs:{tabindex:"0"},on:{focus:this.onTopTrapFocus}}),l=t("div",{attrs:{tabindex:"0"},on:{focus:this.onBottomTrapFocus}})),t("div",{staticClass:"b-sidebar-outer",style:{zIndex:this.zIndex},attrs:{tabindex:"-1"},on:{keydown:this.onKeydown}},[u,s,l,c])}}),N_=L({components:{BSidebar:R_},plugins:{VBTogglePlugin:ro}});function V_(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var z_=Object(I["d"])({animation:Object(I["c"])(E["u"],"wave"),height:Object(I["c"])(E["u"]),size:Object(I["c"])(E["u"]),type:Object(I["c"])(E["u"],"text"),variant:Object(I["c"])(E["u"]),width:Object(I["c"])(E["u"])},P["Xb"]),W_=r["default"].extend({name:P["Xb"],functional:!0,props:z_,render:function(t,e){var n,r=e.data,i=e.props,a=i.size,o=i.animation,s=i.variant;return t("div",Object(pt["a"])(r,{staticClass:"b-skeleton",style:{width:a||i.width,height:a||i.height},class:(n={},V_(n,"b-skeleton-".concat(i.type),!0),V_(n,"b-skeleton-animate-".concat(o),o),V_(n,"bg-".concat(s),s),n)}))}});function U_(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function G_(t){for(var e=1;e0}}});function eg(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var ng={stacked:Object(I["c"])(E["j"],!1)},rg=r["default"].extend({props:ng,computed:{isStacked:function(){var t=this.stacked;return""===t||t},isStackedAlways:function(){return!0===this.isStacked},stackedTableClasses:function(){var t=this.isStackedAlways;return eg({"b-table-stacked":t},"b-table-stacked-".concat(this.stacked),!t&&this.isStacked)}}});function ig(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ag(t){for(var e=1;e0&&!this.computedBusy,[this.tableClass,{"table-striped":this.striped,"table-hover":t,"table-dark":this.dark,"table-bordered":this.bordered,"table-borderless":this.borderless,"table-sm":this.small,border:this.outlined,"b-table-fixed":this.fixed,"b-table-caption-top":this.captionTop,"b-table-no-border-collapse":this.noBorderCollapse},e?"".concat(this.dark?"bg":"table","-").concat(e):"",this.stackedTableClasses,this.selectableTableClasses]},tableAttrs:function(){var t=this.computedItems,e=this.filteredItems,n=this.computedFields,r=this.selectableTableAttrs,i=this.isTableSimple?{}:{"aria-busy":this.computedBusy?"true":"false","aria-colcount":Object(mt["g"])(n.length),"aria-describedby":this.bvAttrs["aria-describedby"]||this.$refs.caption?this.captionId:null},a=t&&e&&e.length>t.length?Object(mt["g"])(e.length):null;return ag(ag(ag({"aria-rowcount":a},this.bvAttrs),{},{id:this.safeId(),role:"table"},i),r)}},render:function(t){var e=this.wrapperClasses,n=this.renderCaption,r=this.renderColgroup,i=this.renderThead,a=this.renderTbody,o=this.renderTfoot,s=[];this.isTableSimple?s.push(this.normalizeSlot()):(s.push(n?n():null),s.push(r?r():null),s.push(i?i():null),s.push(a?a():null),s.push(o?o():null));var u=t("table",{staticClass:"table b-table",class:this.tableClasses,attrs:this.tableAttrs,key:"b-table"},s.filter(c["a"]));return e.length>0?t("div",{class:e,style:this.wrapperStyles,key:"wrap"},[u]):u}});function ug(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function lg(t){for(var e=1;e0},_g=Object(I["d"])({animation:Object(I["c"])(E["u"]),columns:Object(I["c"])(E["n"],5,vg),hideHeader:Object(I["c"])(E["g"],!1),rows:Object(I["c"])(E["n"],3,vg),showFooter:Object(I["c"])(E["g"],!1),tableProps:Object(I["c"])(E["q"],{})},P["ac"]),gg=r["default"].extend({name:P["ac"],functional:!0,props:_g,render:function(t,e){var n=e.props,r=n.animation,i=n.columns,a=t("th",[t(W_,{props:{animation:r}})]),o=t("tr",Object(ue["c"])(i,a)),s=t("td",[t(W_,{props:{width:"75%",animation:r}})]),c=t("tr",Object(ue["c"])(i,s)),u=t("tbody",Object(ue["c"])(n.rows,c)),l=n.hideHeader?t():t("thead",[o]),d=n.showFooter?t("tfoot",[o]):t();return t(hg,{props:mg({},n.tableProps)},[l,u,d])}}),yg=Object(I["d"])({loading:Object(I["c"])(E["g"],!1)},P["bc"]),Og=r["default"].extend({name:P["bc"],functional:!0,props:yg,render:function(t,e){var n=e.data,r=e.props,i=e.slots,a=e.scopedSlots,o=i(),s=a||{},c={};return r.loading?t("div",Object(pt["a"])(n,{attrs:{role:"alert","aria-live":"polite","aria-busy":!0},staticClass:"b-skeleton-wrapper",key:"loading"}),Object(pr["b"])(H["F"],c,s,o)):Object(pr["b"])(H["i"],c,s,o)}}),jg=L({components:{BSkeleton:W_,BSkeletonIcon:K_,BSkeletonImg:Q_,BSkeletonTable:gg,BSkeletonWrapper:Og}}),wg=L({components:{BSpinner:hb}});function Mg(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Lg(t){for(var e=1;e0?t:null},$g=function(t){return Object(u["p"])(t)||Ag(t)>0},Fg=Object(I["d"])({colspan:Object(I["c"])(E["p"],null,$g),rowspan:Object(I["c"])(E["p"],null,$g),stackedHeading:Object(I["c"])(E["u"]),stickyColumn:Object(I["c"])(E["g"],!1),variant:Object(I["c"])(E["u"])},P["fc"]),Ig=r["default"].extend({name:P["fc"],mixins:[er["a"],sl["a"],B["a"]],inject:{bvTableTr:{default:function(){return{}}}},inheritAttrs:!1,props:Fg,computed:{tag:function(){return"td"},inTbody:function(){return this.bvTableTr.inTbody},inThead:function(){return this.bvTableTr.inThead},inTfoot:function(){return this.bvTableTr.inTfoot},isDark:function(){return this.bvTableTr.isDark},isStacked:function(){return this.bvTableTr.isStacked},isStackedCell:function(){return this.inTbody&&this.isStacked},isResponsive:function(){return this.bvTableTr.isResponsive},isStickyHeader:function(){return this.bvTableTr.isStickyHeader},hasStickyHeader:function(){return this.bvTableTr.hasStickyHeader},isStickyColumn:function(){return!this.isStacked&&(this.isResponsive||this.hasStickyHeader)&&this.stickyColumn},rowVariant:function(){return this.bvTableTr.variant},headVariant:function(){return this.bvTableTr.headVariant},footVariant:function(){return this.bvTableTr.footVariant},tableVariant:function(){return this.bvTableTr.tableVariant},computedColspan:function(){return Ag(this.colspan)},computedRowspan:function(){return Ag(this.rowspan)},cellClasses:function(){var t=this.variant,e=this.headVariant,n=this.isStickyColumn;return(!t&&this.isStickyHeader&&!e||!t&&n&&this.inTfoot&&!this.footVariant||!t&&n&&this.inThead&&!e||!t&&n&&this.inTbody)&&(t=this.rowVariant||this.tableVariant||"b-table-default"),[t?"".concat(this.isDark?"bg":"table","-").concat(t):null,n?"b-table-sticky-column":null]},cellAttrs:function(){var t=this.stackedHeading,e=this.inThead||this.inTfoot,n=this.computedColspan,r=this.computedRowspan,i="cell",a=null;return e?(i="columnheader",a=n>0?"colspan":"col"):Object(A["t"])(this.tag,"th")&&(i="rowheader",a=r>0?"rowgroup":"row"),Eg(Eg({colspan:n,rowspan:r,role:i,scope:a},this.bvAttrs),{},{"data-label":this.isStackedCell&&!Object(u["p"])(t)?Object(mt["g"])(t):null})}},render:function(t){var e=[this.normalizeSlot()];return t(this.tag,{class:this.cellClasses,attrs:this.cellAttrs,on:this.bvListeners},[this.isStackedCell?t("div",[e]):e])}});function Bg(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var Rg="busy",Ng=C["gb"]+Rg,Vg=Bg({},Rg,Object(I["c"])(E["g"],!1)),zg=r["default"].extend({props:Vg,data:function(){return{localBusy:!1}},computed:{computedBusy:function(){return this[Rg]||this.localBusy}},watch:{localBusy:function(t,e){t!==e&&this.$emit(Ng,t)}},methods:{stopIfBusy:function(t){return!!this.computedBusy&&(Object(le["f"])(t),!0)},renderBusy:function(){var t=this.tbodyTrClass,e=this.tbodyTrAttr,n=this.$createElement;return this.computedBusy&&this.hasNormalizedSlot(H["bb"])?n(Yg,{staticClass:"b-table-busy-slot",class:[Object(u["f"])(t)?t(null,H["bb"]):t],attrs:Object(u["f"])(e)?e(null,H["bb"]):e,key:"table-busy-slot"},[n(Ig,{props:{colspan:this.computedFields.length||null}},[this.normalizeSlot(H["bb"])])]):null}}}),Wg={caption:Object(I["c"])(E["u"]),captionHtml:Object(I["c"])(E["u"])},Ug=r["default"].extend({props:Wg,computed:{captionId:function(){return this.isStacked?this.safeId("_caption_"):null}},methods:{renderCaption:function(){var t=this.caption,e=this.captionHtml,n=this.$createElement,r=n(),i=this.hasNormalizedSlot(H["cb"]);return(i||t||e)&&(r=n("caption",{attrs:{id:this.captionId},domProps:i?{}:Je(e,t),key:"caption",ref:"caption"},this.normalizeSlot(H["cb"]))),r}}}),Gg={},Jg=r["default"].extend({methods:{renderColgroup:function(){var t=this.computedFields,e=this.$createElement,n=e();return this.hasNormalizedSlot(H["db"])&&(n=e("colgroup",{key:"colgroup"},[this.normalizeSlot(H["db"],{columns:t.length,fields:t})])),n}}}),qg={emptyFilteredHtml:Object(I["c"])(E["u"]),emptyFilteredText:Object(I["c"])(E["u"],"There are no records matching your request"),emptyHtml:Object(I["c"])(E["u"]),emptyText:Object(I["c"])(E["u"],"There are no records to show"),showEmpty:Object(I["c"])(E["g"],!1)},Kg=r["default"].extend({props:qg,methods:{renderEmpty:function(){var t=this.computedItems,e=this.$createElement,n=e();if(this.showEmpty&&(!t||0===t.length)&&(!this.computedBusy||!this.hasNormalizedSlot(H["bb"]))){var r=this.computedFields,i=this.isFiltered,a=this.emptyText,o=this.emptyHtml,s=this.emptyFilteredText,c=this.emptyFilteredHtml,l=this.tbodyTrClass,d=this.tbodyTrAttr;n=this.normalizeSlot(i?H["o"]:H["n"],{emptyFilteredHtml:c,emptyFilteredText:s,emptyHtml:o,emptyText:a,fields:r,items:t}),n||(n=e("div",{class:["text-center","my-2"],domProps:i?Je(c,s):Je(o,a)})),n=e(Ig,{props:{colspan:r.length||null}},[e("div",{attrs:{role:"alert","aria-live":"polite"}},[n])]),n=e(Yg,{staticClass:"b-table-empty-row",class:[Object(u["f"])(l)?l(null,"row-empty"):l],attrs:Object(u["f"])(d)?d(null,"row-empty"):d,key:i?"b-empty-filtered-row":"b-empty-row"},[n])}return n}}}),Xg=function t(e){return Object(u["p"])(e)?"":Object(u["j"])(e)&&!Object(u["c"])(e)?Object(f["h"])(e).sort().map((function(n){return t(e[n])})).filter((function(t){return!!t})).join(" "):Object(mt["g"])(e)};function Zg(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Qg(t){for(var e=1;e3&&void 0!==arguments[3]?arguments[3]:{},i=Object(f["h"])(r).reduce((function(e,n){var i=r[n],a=i.filterByFormatted,o=Object(u["f"])(a)?a:a?i.formatter:null;return Object(u["f"])(o)&&(e[n]=o(t[n],n,t)),e}),Object(f["b"])(t)),a=Object(f["h"])(i).filter((function(t){return!iy[t]&&!(Object(u["a"])(e)&&e.length>0&&Object(ue["a"])(e,t))&&!(Object(u["a"])(n)&&n.length>0&&!Object(ue["a"])(n,t))}));return Object(f["k"])(i,a)},sy=function(t,e,n,r){return Object(u["j"])(t)?Xg(oy(t,e,n,r)):""};function cy(t){return fy(t)||dy(t)||ly(t)||uy()}function uy(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function ly(t,e){if(t){if("string"===typeof t)return hy(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?hy(t,e):void 0}}function dy(t){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}function fy(t){if(Array.isArray(t))return hy(t)}function hy(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&Object(h["a"])(py,P["ec"]),t},localFiltering:function(){return!this.hasProvider||!!this.noProviderFiltering},filteredCheck:function(){var t=this.filteredItems,e=this.localItems,n=this.localFilter;return{filteredItems:t,localItems:e,localFilter:n}},localFilterFn:function(){var t=this.filterFunction;return Object(I["b"])(t)?t:null},filteredItems:function(){var t=this.localItems,e=this.localFilter,n=this.localFiltering?this.filterFnFactory(this.localFilterFn,e)||this.defaultFilterFnFactory(e):null;return n&&t.length>0?t.filter(n):t}},watch:{computedFilterDebounce:function(t){!t&&this.$_filterTimer&&(this.clearFilterTimer(),this.localFilter=this.filterSanitize(this.filter))},filter:{deep:!0,handler:function(t){var e=this,n=this.computedFilterDebounce;this.clearFilterTimer(),n&&n>0?this.$_filterTimer=setTimeout((function(){e.localFilter=e.filterSanitize(t)}),n):this.localFilter=this.filterSanitize(t)}},filteredCheck:function(t){var e=t.filteredItems,n=t.localFilter,r=!1;n?Object(tr["a"])(n,[])||Object(tr["a"])(n,{})?r=!1:n&&(r=!0):r=!1,r&&this.$emit(C["q"],e,e.length),this.isFiltered=r},isFiltered:function(t,e){if(!1===t&&!0===e){var n=this.localItems;this.$emit(C["q"],n,n.length)}}},created:function(){var t=this;this.$_filterTimer=null,this.$nextTick((function(){t.isFiltered=Boolean(t.localFilter)}))},beforeDestroy:function(){this.clearFilterTimer()},methods:{clearFilterTimer:function(){clearTimeout(this.$_filterTimer),this.$_filterTimer=null},filterSanitize:function(t){return!this.localFiltering||this.localFilterFn||Object(u["n"])(t)||Object(u["m"])(t)?Object(o["a"])(t):""},filterFnFactory:function(t,e){if(!t||!Object(u["f"])(t)||!e||Object(tr["a"])(e,[])||Object(tr["a"])(e,{}))return null;var n=function(n){return t(n,e)};return n},defaultFilterFnFactory:function(t){var e=this;if(!t||!Object(u["n"])(t)&&!Object(u["m"])(t))return null;var n=t;if(Object(u["n"])(n)){var r=Object(mt["a"])(t).replace(s["w"],"\\s+");n=new RegExp(".*".concat(r,".*"),"i")}var i=function(t){return n.lastIndex=0,n.test(sy(t,e.computedFilterIgnored,e.computedFilterIncluded,e.computedFieldsObj))};return i}}}),vy=function(t,e){var n=null;return Object(u["n"])(e)?n={key:t,label:e}:Object(u["f"])(e)?n={key:t,formatter:e}:Object(u["j"])(e)?(n=Object(f["b"])(e),n.key=n.key||t):!1!==e&&(n={key:t}),n},_y=function(t,e){var n=[];if(Object(u["a"])(t)&&t.filter(c["a"]).forEach((function(t){if(Object(u["n"])(t))n.push({key:t,label:Object(mt["f"])(t)});else if(Object(u["j"])(t)&&t.key&&Object(u["n"])(t.key))n.push(Object(f["b"])(t));else if(Object(u["j"])(t)&&1===Object(f["h"])(t).length){var e=Object(f["h"])(t)[0],r=vy(e,t[e]);r&&n.push(r)}})),0===n.length&&Object(u["a"])(e)&&e.length>0){var r=e[0];Object(f["h"])(r).forEach((function(t){iy[t]||n.push({key:t,label:Object(mt["f"])(t)})}))}var i={};return n.filter((function(t){return!i[t.key]&&(i[t.key]=!0,t.label=Object(u["n"])(t.label)?t.label:Object(mt["f"])(t.key),!0)}))};function gy(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function yy(t){for(var e=1;e0&&t.some(c["a"])},selectableIsMultiSelect:function(){return this.isSelectable&&Object(ue["a"])(["range","multi"],this.selectMode)},selectableTableClasses:function(){var t,e=this.isSelectable;return t={"b-table-selectable":e},Hy(t,"b-table-select-".concat(this.selectMode),e),Hy(t,"b-table-selecting",this.selectableHasSelection),Hy(t,"b-table-selectable-no-click",e&&!this.hasSelectableRowClick),t},selectableTableAttrs:function(){return{"aria-multiselectable":this.isSelectable?this.selectableIsMultiSelect?"true":"false":null}}},watch:{computedItems:function(t,e){var n=!1;if(this.isSelectable&&this.selectedRows.length>0){n=Object(u["a"])(t)&&Object(u["a"])(e)&&t.length===e.length;for(var r=0;n&&r=0&&t0&&(this.selectedLastClicked=-1,this.selectedRows=this.selectableIsMultiSelect?Object(ue["c"])(t,!0):[!0])},isRowSelected:function(t){return!(!Object(u["h"])(t)||!this.selectedRows[t])},clearSelected:function(){this.selectedLastClicked=-1,this.selectedRows=[]},selectableRowClasses:function(t){if(this.isSelectable&&this.isRowSelected(t)){var e=this.selectedVariant;return Hy({"b-table-row-selected":!0},"".concat(this.dark?"bg":"table","-").concat(e),e)}return{}},selectableRowAttrs:function(t){return{"aria-selected":this.isSelectable?this.isRowSelected(t)?"true":"false":null}},setSelectionHandlers:function(t){var e=t&&!this.noSelectOnClick?"$on":"$off";this[e](C["L"],this.selectionHandler),this[e](C["q"],this.clearSelected),this[e](C["i"],this.clearSelected)},selectionHandler:function(t,e,n){if(this.isSelectable&&!this.noSelectOnClick){var r=this.selectMode,i=this.selectedLastRow,a=this.selectedRows.slice(),o=!a[e];if("single"===r)a=[];else if("range"===r)if(i>-1&&n.shiftKey){for(var s=Object(nt["e"])(i,e);s<=Object(nt["d"])(i,e);s++)a[s]=!0;o=!0}else n.ctrlKey||n.metaKey||(a=[],o=!0),this.selectedLastRow=o?e:-1;a[e]=o,this.selectedRows=a}else this.clearSelected()}}}),Ry=function(t,e){return t.map((function(t,e){return[e,t]})).sort(function(t,e){return this(t[1],e[1])||t[0]-e[0]}.bind(e)).map((function(t){return t[1]}))},Ny=function(t){return Object(u["p"])(t)?"":Object(u["i"])(t)?Object(F["b"])(t,t):t},Vy=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.sortBy,i=void 0===r?null:r,a=n.formatter,o=void 0===a?null:a,s=n.locale,c=void 0===s?void 0:s,l=n.localeOptions,f=void 0===l?{}:l,h=n.nullLast,p=void 0!==h&&h,m=d(t,i,null),b=d(e,i,null);return Object(u["f"])(o)&&(m=o(m,i,t),b=o(b,i,e)),m=Ny(m),b=Ny(b),Object(u["c"])(m)&&Object(u["c"])(b)||Object(u["h"])(m)&&Object(u["h"])(b)?mb?1:0:p&&""===m&&""!==b?1:p&&""!==m&&""===b?-1:Xg(m).localeCompare(Xg(b),c,f)};function zy(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Wy(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:document,e=Object(A["l"])();return!!(e&&""!==e.toString().trim()&&e.containsNode&&Object(A["s"])(t))&&e.containsNode(t,!0)},dO=Object(I["d"])(Fg,P["mc"]),fO=r["default"].extend({name:P["mc"],extends:Ig,props:dO,computed:{tag:function(){return"th"}}});function hO(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function pO(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&(g=String((o-1)*s+e+1));var y=Object(mt["g"])(d(t,a))||null,O=y||Object(mt["g"])(e),j=y?this.safeId("_row_".concat(y)):null,w=this.selectableRowClasses?this.selectableRowClasses(e):{},M=this.selectableRowAttrs?this.selectableRowAttrs(e):{},L=Object(u["f"])(c)?c(t,"row"):c,k=Object(u["f"])(l)?l(t,"row"):l;if(b.push(f(Yg,{class:[L,w,p?"b-table-has-details":""],props:{variant:t[ny]||null},attrs:pO(pO({id:j},k),{},{tabindex:m?"0":null,"data-pk":y||null,"aria-details":v,"aria-owns":v,"aria-rowindex":g},M),on:{mouseenter:this.rowHovered,mouseleave:this.rowUnhovered},key:"__b-table-row-".concat(O,"__"),ref:"item-rows",refInFor:!0},_)),p){var T={item:t,index:e,fields:r,toggleDetails:this.toggleDetailsFactory(h,t)};this.supportsSelectableRows&&(T.rowSelected=this.isRowSelected(e),T.selectRow=function(){return n.selectRow(e)},T.unselectRow=function(){return n.unselectRow(e)});var D=f(Ig,{props:{colspan:r.length},class:this.detailsTdClass},[this.normalizeSlot(H["ab"],T)]);i&&b.push(f("tr",{staticClass:"d-none",attrs:{"aria-hidden":"true",role:"presentation"},key:"__b-table-details-stripe__".concat(O)}));var S=Object(u["f"])(this.tbodyTrClass)?this.tbodyTrClass(t,H["ab"]):this.tbodyTrClass,Y=Object(u["f"])(this.tbodyTrAttr)?this.tbodyTrAttr(t,H["ab"]):this.tbodyTrAttr;b.push(f(Yg,{staticClass:"b-table-details",class:[S],props:{variant:t[ny]||null},attrs:pO(pO({},Y),{},{id:v,tabindex:"-1"}),key:"__b-table-details__".concat(O)},[D]))}else h&&(b.push(f()),i&&b.push(f()));return b}}});function MO(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function LO(t){for(var e=1;e0&&n&&n.length>0?Object(ue["f"])(e.children).filter((function(t){return Object(ue["a"])(n,t)})):[]},getTbodyTrIndex:function(t){if(!Object(A["s"])(t))return-1;var e="TR"===t.tagName?t:Object(A["e"])("tr",t,!0);return e?this.getTbodyTrs().indexOf(e):-1},emitTbodyRowEvent:function(t,e){if(t&&this.hasListener(t)&&e&&e.target){var n=this.getTbodyTrIndex(e.target);if(n>-1){var r=this.computedItems[n];this.$emit(t,r,n,e)}}},tbodyRowEvtStopped:function(t){return this.stopIfBusy&&this.stopIfBusy(t)},onTbodyRowKeydown:function(t){var e=t.target,n=t.keyCode;if(!this.tbodyRowEvtStopped(t)&&"TR"===e.tagName&&Object(A["q"])(e)&&0===e.tabIndex)if(Object(ue["a"])([te,se],n))Object(le["f"])(t),this.onTBodyRowClicked(t);else if(Object(ue["a"])([ce,Zt,ne,Qt],n)){var r=this.getTbodyTrIndex(e);if(r>-1){Object(le["f"])(t);var i=this.getTbodyTrs(),a=t.shiftKey;n===ne||a&&n===ce?Object(A["d"])(i[0]):n===Qt||a&&n===Zt?Object(A["d"])(i[i.length-1]):n===ce&&r>0?Object(A["d"])(i[r-1]):n===Zt&&rt.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&void 0!==arguments[0]&&arguments[0],n=this.computedFields,r=this.isSortable,i=this.isSelectable,a=this.headVariant,o=this.footVariant,s=this.headRowVariant,l=this.footRowVariant,d=this.$createElement;if(this.isStackedAlways||0===n.length)return d();var f=r||this.hasListener(C["u"]),h=i?this.selectAllRows:ki,p=i?this.clearSelected:ki,m=function(n,i){var a=n.label,o=n.labelHtml,s=n.variant,u=n.stickyColumn,l=n.key,m=null;n.label.trim()||n.headerTitle||(m=Object(mt["f"])(n.key));var b={};f&&(b.click=function(r){t.headClicked(r,n,e)},b.keydown=function(r){var i=r.keyCode;i!==te&&i!==se||t.headClicked(r,n,e)});var v=r?t.sortTheadThAttrs(l,n,e):{},_=r?t.sortTheadThClasses(l,n,e):null,g=r?t.sortTheadThLabel(l,n,e):null,y={class:[t.fieldClasses(n),_],props:{variant:s,stickyColumn:u},style:n.thStyle||{},attrs:qO(qO({tabindex:f&&n.sortable?"0":null,abbr:n.headerAbbr||null,title:n.headerTitle||null,"aria-colindex":i+1,"aria-label":m},t.getThValues(null,l,n.thAttr,e?"foot":"head",{})),v),on:b,key:l},O=[XO(l),XO(l.toLowerCase()),XO()];e&&(O=[ZO(l),ZO(l.toLowerCase()),ZO()].concat(NO(O)));var j={label:a,column:l,field:n,isFoot:e,selectAllRows:h,clearSelected:p},w=t.normalizeSlot(O,j)||d("div",{domProps:Je(o,a)}),M=g?d("span",{staticClass:"sr-only"}," (".concat(g,")")):null;return d(fO,y,[w,M].filter(c["a"]))},b=n.map(m).filter(c["a"]),v=[];if(e)v.push(d(Yg,{class:this.tfootTrClass,props:{variant:Object(u["p"])(l)?s:l}},b));else{var _={columns:n.length,fields:n,selectAllRows:h,clearSelected:p};v.push(this.normalizeSlot(H["hb"],_)||d()),v.push(d(Yg,{class:this.theadTrClass,props:{variant:s}},b))}return d(e?EO:RO,{class:(e?this.tfootClass:this.theadClass)||null,props:e?{footVariant:o||a||null}:{headVariant:a||null},key:e?"bv-tfoot":"bv-thead"},v)}}}),ej={},nj=r["default"].extend({methods:{renderTopRow:function(){var t=this.computedFields,e=this.stacked,n=this.tbodyTrClass,r=this.tbodyTrAttr,i=this.$createElement;return this.hasNormalizedSlot(H["kb"])&&!0!==e&&""!==e?i(Yg,{staticClass:"b-table-top-row",class:[Object(u["f"])(n)?n(null,"row-top"):n],attrs:Object(u["f"])(r)?r(null,"row-top"):r,key:"b-top-row"},[this.normalizeSlot(H["kb"],{columns:t.length,fields:t})]):i()}}});function rj(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ij(t){for(var e=1;e0&&void 0!==arguments[0])||arguments[0];if(this.$_observer&&this.$_observer.disconnect(),this.$_observer=null,e){var n=function(){t.$nextTick((function(){Object(A["D"])((function(){t.updateTabs()}))}))};this.$_observer=xi(this.$refs.content,n,{childList:!0,subtree:!1,attributes:!0,attributeFilter:["id"]})}},getTabs:function(){var t=this.registeredTabs.filter((function(t){return 0===t.$children.filter((function(t){return t._isTab})).length})),e=[];if(i["i"]&&t.length>0){var n=t.map((function(t){return"#".concat(t.safeId())})).join(", ");e=Object(A["F"])(n,this.$el).map((function(t){return t.id})).filter(c["a"])}return Ry(t,(function(t,n){return e.indexOf(t.safeId())-e.indexOf(n.safeId())}))},updateTabs:function(){var t=this.getTabs(),e=t.indexOf(t.slice().reverse().find((function(t){return t.localActive&&!t.disabled})));if(e<0){var n=this.currentTab;n>=t.length?e=t.indexOf(t.slice().reverse().find(Tj)):t[n]&&!t[n].disabled&&(e=n)}e<0&&(e=t.indexOf(t.find(Tj))),t.forEach((function(t,n){t.localActive=n===e})),this.tabs=t,this.currentTab=e},getButtonForTab:function(t){return(this.$refs.buttons||[]).find((function(e){return e.tab===t}))},updateButton:function(t){var e=this.getButtonForTab(t);e&&e.$forceUpdate&&e.$forceUpdate()},activateTab:function(t){var e=this.currentTab,n=this.tabs,r=!1;if(t){var i=n.indexOf(t);if(i!==e&&i>-1&&!t.disabled){var a=new po["a"](C["a"],{cancelable:!0,vueTarget:this,componentId:this.safeId()});this.$emit(a.type,i,e,a),a.defaultPrevented||(this.currentTab=i,r=!0)}}return r||this[Lj]===e||this.$emit(kj,e),r},deactivateTab:function(t){return!!t&&this.activateTab(this.tabs.filter((function(e){return e!==t})).find(Tj))},focusButton:function(t){var e=this;this.$nextTick((function(){Object(A["d"])(e.getButtonForTab(t))}))},emitTabClick:function(t,e){Object(u["d"])(e)&&t&&t.$emit&&!t.disabled&&t.$emit(C["f"],e)},clickTab:function(t,e){this.activateTab(t),this.emitTabClick(t,e)},firstTab:function(t){var e=this.tabs.find(Tj);this.activateTab(e)&&t&&(this.focusButton(e),this.emitTabClick(e,t))},previousTab:function(t){var e=Object(nt["d"])(this.currentTab,0),n=this.tabs.slice(0,e).reverse().find(Tj);this.activateTab(n)&&t&&(this.focusButton(n),this.emitTabClick(n,t))},nextTab:function(t){var e=Object(nt["d"])(this.currentTab,-1),n=this.tabs.slice(e+1).find(Tj);this.activateTab(n)&&t&&(this.focusButton(n),this.emitTabClick(n,t))},lastTab:function(t){var e=this.tabs.slice().reverse().find(Tj);this.activateTab(e)&&t&&(this.focusButton(e),this.emitTabClick(e,t))}},render:function(t){var e=this,n=this.align,r=this.card,i=this.end,a=this.fill,o=this.firstTab,s=this.justified,c=this.lastTab,u=this.nextTab,l=this.noKeyNav,d=this.noNavStyle,f=this.pills,h=this.previousTab,p=this.small,m=this.tabs,b=this.vertical,v=m.find((function(t){return t.localActive&&!t.disabled})),_=m.find((function(t){return!t.disabled})),g=m.map((function(n,r){var i,a=n.safeId,s=null;return l||(s=-1,(n===v||!v&&n===_)&&(s=null)),t(Dj,{props:{controls:a?a():null,id:n.controlledBy||(a?a("_BV_tab_button_"):null),noKeyNav:l,posInSet:r+1,setSize:m.length,tab:n,tabIndex:s},on:(i={},gj(i,C["f"],(function(t){e.clickTab(n,t)})),gj(i,C["r"],o),gj(i,C["H"],h),gj(i,C["C"],u),gj(i,C["z"],c),i),key:n[x["a"]]||r,ref:"buttons",refInFor:!0})})),y=t(gm,{class:this.localNavClass,attrs:{role:"tablist",id:this.safeId("_BV_tab_controls_")},props:{fill:a,justified:s,align:n,tabs:!d&&!f,pills:!d&&f,vertical:b,small:p,cardHeader:r&&!b},ref:"nav"},[this.normalizeSlot(H["fb"])||t(),g,this.normalizeSlot(H["eb"])||t()]);y=t("div",{class:[{"card-header":r&&!b&&!i,"card-footer":r&&!b&&i,"col-auto":b},this.navWrapperClass],key:"bv-tabs-nav"},[y]);var O=this.normalizeSlot()||[],j=t();0===O.length&&(j=t("div",{class:["tab-pane","active",{"card-body":r}],key:"bv-empty-tab"},this.normalizeSlot(H["n"])));var w=t("div",{staticClass:"tab-content",class:[{col:b},this.contentClass],attrs:{id:this.safeId("_BV_tab_container_")},key:"bv-content",ref:"content"},[O,j]);return t(this.tag,{staticClass:"tabs",class:{row:b,"no-gutters":b&&r},attrs:{id:this.safeId()}},[i?w:t(),y,i?t():w])}});function Pj(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Cj(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:{};t&&!Object(h["d"])(tw)&&n(Uj(Uj({},iw(e)),{},{toastContent:t}),this._vm)}},{key:"show",value:function(t){t&&this._root.$emit(Object(le["d"])(P["pc"],C["T"]),t)}},{key:"hide",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this._root.$emit(Object(le["d"])(P["pc"],C["w"]),t)}}]),t}();t.mixin({beforeCreate:function(){this[ew]=new r(this)}}),Object(f["g"])(t.prototype,tw)||Object(f["e"])(t.prototype,tw,{get:function(){return this&&this[ew]||Object(h["a"])('"'.concat(tw,'" must be accessed from a Vue instance "this" context.'),P["pc"]),this[ew]}})},ow=L({plugins:{plugin:aw}}),sw=n("0f65"),cw=L({components:{BToast:Rj["a"],BToaster:sw["a"]},plugins:{BVToastPlugin:ow}});function uw(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function lw(t){for(var e=1;e=n){var r=this.$targets[this.$targets.length-1];this.$activeTarget!==r&&this.activate(r)}else{if(this.$activeTarget&&t0)return this.$activeTarget=null,void this.clear();for(var i=this.$offsets.length;i--;){var a=this.$activeTarget!==this.$targets[i]&&t>=this.$offsets[i]&&(Object(u["o"])(this.$offsets[i+1])||t0&&this.$root&&this.$root.$emit(Xw,t,n)}},{key:"clear",value:function(){var t=this;Object(A["F"])("".concat(this.$selector,", ").concat(Uw),this.$el).filter((function(t){return Object(A["p"])(t,Vw)})).forEach((function(e){return t.setActiveState(e,!1)}))}},{key:"setActiveState",value:function(t,e){t&&(e?Object(A["b"])(t,Vw):Object(A["A"])(t,Vw))}}],[{key:"Name",get:function(){return Rw}},{key:"Default",get:function(){return tM}},{key:"DefaultType",get:function(){return eM}}]),t}(),oM="__BV_ScrollSpy__",sM=/^\d+$/,cM=/^(auto|position|offset)$/,uM=function(t){var e={};return t.arg&&(e.element="#".concat(t.arg)),Object(f["h"])(t.modifiers).forEach((function(t){sM.test(t)?e.offset=Object(F["c"])(t,0):cM.test(t)&&(e.method=t)})),Object(u["n"])(t.value)?e.element=t.value:Object(u["h"])(t.value)?e.offset=Object(nt["g"])(t.value):Object(u["j"])(t.value)&&Object(f["h"])(t.value).filter((function(t){return!!aM.DefaultType[t]})).forEach((function(n){e[n]=t.value[n]})),e},lM=function(t,e,n){if(i["i"]){var r=uM(e);t[oM]?t[oM].updateConfig(r,n.context.$root):t[oM]=new aM(t,r,n.context.$root)}},dM=function(t){t[oM]&&(t[oM].dispose(),t[oM]=null,delete t[oM])},fM={bind:function(t,e,n){lM(t,e,n)},inserted:function(t,e,n){lM(t,e,n)},update:function(t,e,n){e.value!==e.oldValue&&lM(t,e,n)},componentUpdated:function(t,e,n){e.value!==e.oldValue&&lM(t,e,n)},unbind:function(t){dM(t)}},hM=L({directives:{VBScrollspy:fM}}),pM=L({directives:{VBVisible:si}}),mM=L({plugins:{VBHoverPlugin:Cw,VBModalPlugin:Ew,VBPopoverPlugin:c_,VBScrollspyPlugin:hM,VBTogglePlugin:ro,VBTooltipPlugin:Yw,VBVisiblePlugin:pM}}),bM="BootstrapVue",vM=M({plugins:{componentsPlugin:Pw,directivesPlugin:mM}}),_M={install:vM,NAME:bM}},"5fb2":function(t,e,n){"use strict";var r=2147483647,i=36,a=1,o=26,s=38,c=700,u=72,l=128,d="-",f=/[^\0-\u007E]/,h=/[.\u3002\uFF0E\uFF61]/g,p="Overflow: input needs wider integers to process",m=i-a,b=Math.floor,v=String.fromCharCode,_=function(t){var e=[],n=0,r=t.length;while(n=55296&&i<=56319&&n>1,t+=b(t/e);t>m*o>>1;r+=i)t=b(t/m);return b(r+(m+1)*t/(t+s))},O=function(t){var e=[];t=_(t);var n,s,c=t.length,f=l,h=0,m=u;for(n=0;n=f&&sb((r-h)/M))throw RangeError(p);for(h+=(w-f)*M,f=w,n=0;nr)throw RangeError(p);if(s==f){for(var L=h,k=i;;k+=i){var T=k<=m?a:k>=m+o?o:k-m;if(L1?n-1:0),i=1;il){var h,p=u(arguments[l++]),m=d?a(p).concat(d(p)):a(p),b=m.length,v=0;while(b>v)h=m[v++],r&&!f.call(p,h)||(n[h]=p[h])}return n}:l},6117:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; +var e=t.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(t){var e=t%10,n=1===~~(t%100/10)?":e":1===e||2===e?":a":":e";return t+n},week:{dow:1,doy:4}});return e}))},"602d":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var r=n("a026"),i=n("0056"),a=r["default"].extend({methods:{listenOnRoot:function(t,e){var n=this;this.$root.$on(t,e),this.$on(i["eb"],(function(){n.$root.$off(t,e)}))},listenOnRootOnce:function(t,e){var n=this;this.$root.$once(t,e),this.$on(i["eb"],(function(){n.$root.$off(t,e)}))},emitOnRoot:function(t){for(var e,n=arguments.length,r=new Array(n>1?n-1:0),i=1;il){var h,p=u(arguments[l++]),m=d?a(p).concat(d(p)):a(p),b=m.length,v=0;while(b>v)h=m[v++],r&&!f.call(p,h)||(n[h]=p[h])}return n}:l},6117:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration var e=t.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(t,e){return 12===t&&(t=0),"يېرىم كېچە"===e||"سەھەر"===e||"چۈشتىن بۇرۇن"===e?t:"چۈشتىن كېيىن"===e||"كەچ"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var r=100*t+e;return r<600?"يېرىم كېچە":r<900?"سەھەر":r<1130?"چۈشتىن بۇرۇن":r<1230?"چۈش":r<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"-كۈنى";case"w":case"W":return t+"-ھەپتە";default:return t}},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:7}});return e}))},"62e4":function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},6403:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration @@ -141,7 +141,7 @@ function e(t,e,n){var r={mm:"munutenn",MM:"miz",dd:"devezh"};return t+" "+i(r[n] //! moment.js locale configuration var e=t.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return e}))},6909:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration -var e=t.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"за %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"една минута",mm:"%d минути",h:"еден час",hh:"%d часа",d:"еден ден",dd:"%d дена",M:"еден месец",MM:"%d месеци",y:"една година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-ев":0===n?t+"-ен":n>10&&n<20?t+"-ти":1===e?t+"-ви":2===e?t+"-ри":7===e||8===e?t+"-ми":t+"-ти"},week:{dow:1,doy:7}});return e}))},"69f3":function(t,e,n){var r,i,a,o=n("7f9a"),s=n("da84"),c=n("861d"),u=n("9112"),l=n("5135"),d=n("c6cd"),f=n("f772"),h=n("d012"),p="Object already initialized",m=s.WeakMap,b=function(t){return a(t)?i(t):r(t,{})},v=function(t){return function(e){var n;if(!c(e)||(n=i(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}};if(o){var _=d.state||(d.state=new m),g=_.get,y=_.has,O=_.set;r=function(t,e){if(y.call(_,t))throw new TypeError(p);return e.facade=t,O.call(_,t,e),e},i=function(t){return g.call(_,t)||{}},a=function(t){return y.call(_,t)}}else{var j=f("state");h[j]=!0,r=function(t,e){if(l(t,j))throw new TypeError(p);return e.facade=t,u(t,j,e),e},i=function(t){return l(t,j)?t[j]:{}},a=function(t){return l(t,j)}}t.exports={set:r,get:i,has:a,enforce:b,getterFor:v}},"6b77":function(t,e,n){"use strict";n.d(e,"b",(function(){return u})),n.d(e,"a",(function(){return l})),n.d(e,"c",(function(){return d})),n.d(e,"f",(function(){return f})),n.d(e,"e",(function(){return p})),n.d(e,"d",(function(){return m}));var r=n("e863"),i=n("0056"),a=n("992e"),o=n("7b1e"),s=n("fa73"),c=function(t){return r["d"]?Object(o["j"])(t)?t:{capture:!!t||!1}:!!(Object(o["j"])(t)?t.capture:t)},u=function(t,e,n,r){t&&t.addEventListener&&t.addEventListener(e,n,c(r))},l=function(t,e,n,r){t&&t.removeEventListener&&t.removeEventListener(e,n,c(r))},d=function(t){for(var e=t?u:l,n=arguments.length,r=new Array(n>1?n-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:{},n=e.preventDefault,r=void 0===n||n,i=e.propagation,a=void 0===i||i,o=e.immediatePropagation,s=void 0!==o&&o;r&&t.preventDefault(),a&&t.stopPropagation(),s&&t.stopImmediatePropagation()},h=function(t){return Object(s["b"])(t.replace(a["d"],""))},p=function(t,e){return[i["hb"],h(t),e].join(i["ib"])},m=function(t,e){return[i["hb"],e,h(t)].join(i["ib"])}},"6c06":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var r=function(t){return t}},"6ce3":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; +var e=t.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"за %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"една минута",mm:"%d минути",h:"еден час",hh:"%d часа",d:"еден ден",dd:"%d дена",M:"еден месец",MM:"%d месеци",y:"една година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-ев":0===n?t+"-ен":n>10&&n<20?t+"-ти":1===e?t+"-ви":2===e?t+"-ри":7===e||8===e?t+"-ми":t+"-ти"},week:{dow:1,doy:7}});return e}))},"69f3":function(t,e,n){var r,i,a,o=n("7f9a"),s=n("da84"),c=n("861d"),u=n("9112"),l=n("5135"),d=n("c6cd"),f=n("f772"),h=n("d012"),p="Object already initialized",m=s.WeakMap,b=function(t){return a(t)?i(t):r(t,{})},v=function(t){return function(e){var n;if(!c(e)||(n=i(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}};if(o||d.state){var _=d.state||(d.state=new m),g=_.get,y=_.has,O=_.set;r=function(t,e){if(y.call(_,t))throw new TypeError(p);return e.facade=t,O.call(_,t,e),e},i=function(t){return g.call(_,t)||{}},a=function(t){return y.call(_,t)}}else{var j=f("state");h[j]=!0,r=function(t,e){if(l(t,j))throw new TypeError(p);return e.facade=t,u(t,j,e),e},i=function(t){return l(t,j)?t[j]:{}},a=function(t){return l(t,j)}}t.exports={set:r,get:i,has:a,enforce:b,getterFor:v}},"6b77":function(t,e,n){"use strict";n.d(e,"b",(function(){return u})),n.d(e,"a",(function(){return l})),n.d(e,"c",(function(){return d})),n.d(e,"f",(function(){return f})),n.d(e,"e",(function(){return p})),n.d(e,"d",(function(){return m}));var r=n("e863"),i=n("0056"),a=n("992e"),o=n("7b1e"),s=n("fa73"),c=function(t){return r["d"]?Object(o["j"])(t)?t:{capture:!!t||!1}:!!(Object(o["j"])(t)?t.capture:t)},u=function(t,e,n,r){t&&t.addEventListener&&t.addEventListener(e,n,c(r))},l=function(t,e,n,r){t&&t.removeEventListener&&t.removeEventListener(e,n,c(r))},d=function(t){for(var e=t?u:l,n=arguments.length,r=new Array(n>1?n-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:{},n=e.preventDefault,r=void 0===n||n,i=e.propagation,a=void 0===i||i,o=e.immediatePropagation,s=void 0!==o&&o;r&&t.preventDefault(),a&&t.stopPropagation(),s&&t.stopImmediatePropagation()},h=function(t){return Object(s["b"])(t.replace(a["d"],""))},p=function(t,e){return[i["hb"],h(t),e].join(i["ib"])},m=function(t,e){return[i["hb"],e,h(t)].join(i["ib"])}},"6c06":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var r=function(t){return t}},"6ce3":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration var e=t.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",w:"en uke",ww:"%d uker",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return e}))},"6d40":function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var r=n("d82f");function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if(i(this,t),!e)throw new TypeError("Failed to construct '".concat(this.constructor.name,"'. 1 argument required, ").concat(arguments.length," given."));Object(r["a"])(this,t.Defaults,this.constructor.Defaults,n,{type:e}),Object(r["d"])(this,{type:Object(r["l"])(),cancelable:Object(r["l"])(),nativeEvent:Object(r["l"])(),target:Object(r["l"])(),relatedTarget:Object(r["l"])(),vueTarget:Object(r["l"])(),componentId:Object(r["l"])()});var a=!1;this.preventDefault=function(){this.cancelable&&(a=!0)},Object(r["e"])(this,"defaultPrevented",{enumerable:!0,get:function(){return a}})}return o(t,null,[{key:"Defaults",get:function(){return{type:"",cancelable:!0,nativeEvent:null,target:null,relatedTarget:null,vueTarget:null,componentId:null}}}]),t}()},"6d79":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration @@ -220,20 +220,20 @@ var r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Arr //! moment.js locale configuration var e=/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,n=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,r=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,i=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i],a=t.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:e,monthsShortStrictRegex:n,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(t,e){switch(e){case"D":return t+(1===t?"er":"");default:case"M":case"Q":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}},week:{dow:1,doy:4}});return a}))},"9f7f":function(t,e,n){"use strict";var r=n("d039");function i(t,e){return RegExp(t,e)}e.UNSUPPORTED_Y=r((function(){var t=i("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),e.BROKEN_CARET=r((function(){var t=i("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},a026:function(t,e,n){"use strict";n.r(e),function(t){ /*! - * Vue.js v2.6.12 - * (c) 2014-2020 Evan You + * Vue.js v2.6.14 + * (c) 2014-2021 Evan You * Released under the MIT License. */ -var n=Object.freeze({});function r(t){return void 0===t||null===t}function i(t){return void 0!==t&&null!==t}function a(t){return!0===t}function o(t){return!1===t}function s(t){return"string"===typeof t||"number"===typeof t||"symbol"===typeof t||"boolean"===typeof t}function c(t){return null!==t&&"object"===typeof t}var u=Object.prototype.toString;function l(t){return"[object Object]"===u.call(t)}function d(t){return"[object RegExp]"===u.call(t)}function f(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function h(t){return i(t)&&"function"===typeof t.then&&"function"===typeof t.catch}function p(t){return null==t?"":Array.isArray(t)||l(t)&&t.toString===u?JSON.stringify(t,null,2):String(t)}function m(t){var e=parseFloat(t);return isNaN(e)?t:e}function b(t,e){for(var n=Object.create(null),r=t.split(","),i=0;i-1)return t.splice(n,1)}}var y=Object.prototype.hasOwnProperty;function O(t,e){return y.call(t,e)}function j(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}var w=/-(\w)/g,M=j((function(t){return t.replace(w,(function(t,e){return e?e.toUpperCase():""}))})),L=j((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),k=/\B([A-Z])/g,T=j((function(t){return t.replace(k,"-$1").toLowerCase()}));function D(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function S(t,e){return t.bind(e)}var Y=Function.prototype.bind?S:D;function x(t,e){e=e||0;var n=t.length-e,r=new Array(n);while(n--)r[n]=t[n+e];return r}function P(t,e){for(var n in e)t[n]=e[n];return t}function C(t){for(var e={},n=0;n0,it=et&&et.indexOf("edge/")>0,at=(et&&et.indexOf("android"),et&&/iphone|ipad|ipod|ios/.test(et)||"ios"===tt),ot=(et&&/chrome\/\d+/.test(et),et&&/phantomjs/.test(et),et&&et.match(/firefox\/(\d+)/)),st={}.watch,ct=!1;if(Z)try{var ut={};Object.defineProperty(ut,"passive",{get:function(){ct=!0}}),window.addEventListener("test-passive",null,ut)}catch(Xu){}var lt=function(){return void 0===K&&(K=!Z&&!Q&&"undefined"!==typeof t&&(t["process"]&&"server"===t["process"].env.VUE_ENV)),K},dt=Z&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ft(t){return"function"===typeof t&&/native code/.test(t.toString())}var ht,pt="undefined"!==typeof Symbol&&ft(Symbol)&&"undefined"!==typeof Reflect&&ft(Reflect.ownKeys);ht="undefined"!==typeof Set&&ft(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var mt=E,bt=0,vt=function(){this.id=bt++,this.subs=[]};vt.prototype.addSub=function(t){this.subs.push(t)},vt.prototype.removeSub=function(t){g(this.subs,t)},vt.prototype.depend=function(){vt.target&&vt.target.addDep(this)},vt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(a&&!O(i,"default"))o=!1;else if(""===o||o===T(t)){var c=ne(String,i.type);(c<0||s0&&(o=Se(o,(e||"")+"_"+n),De(o[0])&&De(u)&&(l[c]=Mt(u.text+o[0].text),o.shift()),l.push.apply(l,o)):s(o)?De(u)?l[c]=Mt(u.text+o):""!==o&&l.push(Mt(o)):De(o)&&De(u)?l[c]=Mt(u.text+o.text):(a(t._isVList)&&i(o.tag)&&r(o.key)&&i(e)&&(o.key="__vlist"+e+"_"+n+"__"),l.push(o)));return l}function Ye(t){var e=t.$options.provide;e&&(t._provided="function"===typeof e?e.call(t):e)}function xe(t){var e=Pe(t.$options.inject,t);e&&(xt(!1),Object.keys(e).forEach((function(n){At(t,n,e[n])})),xt(!0))}function Pe(t,e){if(t){for(var n=Object.create(null),r=pt?Reflect.ownKeys(t):Object.keys(t),i=0;i0,o=t?!!t.$stable:!a,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(o&&r&&r!==n&&s===r.$key&&!a&&!r.$hasNormal)return r;for(var c in i={},t)t[c]&&"$"!==c[0]&&(i[c]=Ae(e,c,t[c]))}else i={};for(var u in e)u in i||(i[u]=$e(e,u));return t&&Object.isExtensible(t)&&(t._normalized=i),G(i,"$stable",o),G(i,"$key",s),G(i,"$hasNormal",a),i}function Ae(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});return t=t&&"object"===typeof t&&!Array.isArray(t)?[t]:Te(t),t&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function $e(t,e){return function(){return t[e]}}function Fe(t,e){var n,r,a,o,s;if(Array.isArray(t)||"string"===typeof t)for(n=new Array(t.length),r=0,a=t.length;r1?x(n):n;for(var r=x(arguments,1),i='event handler for "'+t+'"',a=0,o=n.length;adocument.createEvent("Event").timeStamp&&(Kn=function(){return Xn.now()})}function Zn(){var t,e;for(qn=Kn(),Un=!0,Nn.sort((function(t,e){return t.id-e.id})),Gn=0;GnGn&&Nn[n].id>t.id)n--;Nn.splice(n+1,0,t)}else Nn.push(t);Wn||(Wn=!0,be(Zn))}}var rr=0,ir=function(t,e,n,r,i){this.vm=t,i&&(t._watcher=this),t._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++rr,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new ht,this.newDepIds=new ht,this.expression="","function"===typeof e?this.getter=e:(this.getter=q(e),this.getter||(this.getter=E)),this.value=this.lazy?void 0:this.get()};ir.prototype.get=function(){var t;gt(this);var e=this.vm;try{t=this.getter.call(e,e)}catch(Xu){if(!this.user)throw Xu;re(Xu,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&_e(t),yt(),this.cleanupDeps()}return t},ir.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},ir.prototype.cleanupDeps=function(){var t=this.deps.length;while(t--){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},ir.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():nr(this)},ir.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||c(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(Xu){re(Xu,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},ir.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},ir.prototype.depend=function(){var t=this.deps.length;while(t--)this.deps[t].depend()},ir.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||g(this.vm._watchers,this);var t=this.deps.length;while(t--)this.deps[t].removeSub(this);this.active=!1}};var ar={enumerable:!0,configurable:!0,get:E,set:E};function or(t,e,n){ar.get=function(){return this[e][n]},ar.set=function(t){this[e][n]=t},Object.defineProperty(t,n,ar)}function sr(t){t._watchers=[];var e=t.$options;e.props&&cr(t,e.props),e.methods&&br(t,e.methods),e.data?ur(t):Ht(t._data={},!0),e.computed&&fr(t,e.computed),e.watch&&e.watch!==st&&vr(t,e.watch)}function cr(t,e){var n=t.$options.propsData||{},r=t._props={},i=t.$options._propKeys=[],a=!t.$parent;a||xt(!1);var o=function(a){i.push(a);var o=Zt(a,e,n,t);At(r,a,o),a in t||or(t,"_props",a)};for(var s in e)o(s);xt(!0)}function ur(t){var e=t.$options.data;e=t._data="function"===typeof e?lr(e,t):e||{},l(e)||(e={});var n=Object.keys(e),r=t.$options.props,i=(t.$options.methods,n.length);while(i--){var a=n[i];0,r&&O(r,a)||U(a)||or(t,"_data",a)}Ht(e,!0)}function lr(t,e){gt();try{return t.call(e,e)}catch(Xu){return re(Xu,e,"data()"),{}}finally{yt()}}var dr={lazy:!0};function fr(t,e){var n=t._computedWatchers=Object.create(null),r=lt();for(var i in e){var a=e[i],o="function"===typeof a?a:a.get;0,r||(n[i]=new ir(t,o||E,E,dr)),i in t||hr(t,i,a)}}function hr(t,e,n){var r=!lt();"function"===typeof n?(ar.get=r?pr(e):mr(n),ar.set=E):(ar.get=n.get?r&&!1!==n.cache?pr(e):mr(n.get):E,ar.set=n.set||E),Object.defineProperty(t,e,ar)}function pr(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),vt.target&&e.depend(),e.value}}function mr(t){return function(){return t.call(this,this)}}function br(t,e){t.$options.props;for(var n in e)t[n]="function"!==typeof e[n]?E:Y(e[n],t)}function vr(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var i=0;i-1)return this;var n=x(arguments,1);return n.unshift(this),"function"===typeof t.install?t.install.apply(t,n):"function"===typeof t&&t.apply(null,n),e.push(t),this}}function Tr(t){t.mixin=function(t){return this.options=Kt(this.options,t),this}}function Dr(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,i=t._Ctor||(t._Ctor={});if(i[r])return i[r];var a=t.name||n.options.name;var o=function(t){this._init(t)};return o.prototype=Object.create(n.prototype),o.prototype.constructor=o,o.cid=e++,o.options=Kt(n.options,t),o["super"]=n,o.options.props&&Sr(o),o.options.computed&&Yr(o),o.extend=n.extend,o.mixin=n.mixin,o.use=n.use,N.forEach((function(t){o[t]=n[t]})),a&&(o.options.components[a]=o),o.superOptions=n.options,o.extendOptions=t,o.sealedOptions=P({},o.options),i[r]=o,o}}function Sr(t){var e=t.options.props;for(var n in e)or(t.prototype,"_props",n)}function Yr(t){var e=t.options.computed;for(var n in e)hr(t.prototype,n,e[n])}function xr(t){N.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&l(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"===typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}function Pr(t){return t&&(t.Ctor.options.name||t.tag)}function Cr(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"===typeof t?t.split(",").indexOf(e)>-1:!!d(t)&&t.test(e)}function Er(t,e){var n=t.cache,r=t.keys,i=t._vnode;for(var a in n){var o=n[a];if(o){var s=Pr(o.componentOptions);s&&!e(s)&&Hr(n,a,r,i)}}}function Hr(t,e,n,r){var i=t[e];!i||r&&i.tag===r.tag||i.componentInstance.$destroy(),t[e]=null,g(n,e)}Or(Lr),gr(Lr),xn(Lr),Hn(Lr),yn(Lr);var Ar=[String,RegExp,Array],$r={name:"keep-alive",abstract:!0,props:{include:Ar,exclude:Ar,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Hr(this.cache,t,this.keys)},mounted:function(){var t=this;this.$watch("include",(function(e){Er(t,(function(t){return Cr(e,t)}))})),this.$watch("exclude",(function(e){Er(t,(function(t){return!Cr(e,t)}))}))},render:function(){var t=this.$slots.default,e=Ln(t),n=e&&e.componentOptions;if(n){var r=Pr(n),i=this,a=i.include,o=i.exclude;if(a&&(!r||!Cr(a,r))||o&&r&&Cr(o,r))return e;var s=this,c=s.cache,u=s.keys,l=null==e.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):e.key;c[l]?(e.componentInstance=c[l].componentInstance,g(u,l),u.push(l)):(c[l]=e,u.push(l),this.max&&u.length>parseInt(this.max)&&Hr(c,u[0],u,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}},Fr={KeepAlive:$r};function Ir(t){var e={get:function(){return z}};Object.defineProperty(t,"config",e),t.util={warn:mt,extend:P,mergeOptions:Kt,defineReactive:At},t.set=$t,t.delete=Ft,t.nextTick=be,t.observable=function(t){return Ht(t),t},t.options=Object.create(null),N.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,P(t.options.components,Fr),kr(t),Tr(t),Dr(t),xr(t)}Ir(Lr),Object.defineProperty(Lr.prototype,"$isServer",{get:lt}),Object.defineProperty(Lr.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Lr,"FunctionalRenderContext",{value:Qe}),Lr.version="2.6.12";var Br=b("style,class"),Rr=b("input,textarea,option,select,progress"),Nr=function(t,e,n){return"value"===n&&Rr(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},Vr=b("contenteditable,draggable,spellcheck"),zr=b("events,caret,typing,plaintext-only"),Wr=function(t,e){return Kr(e)||"false"===e?"false":"contenteditable"===t&&zr(e)?e:"true"},Ur=b("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Gr="http://www.w3.org/1999/xlink",Jr=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},qr=function(t){return Jr(t)?t.slice(6,t.length):""},Kr=function(t){return null==t||!1===t};function Xr(t){var e=t.data,n=t,r=t;while(i(r.componentInstance))r=r.componentInstance._vnode,r&&r.data&&(e=Zr(r.data,e));while(i(n=n.parent))n&&n.data&&(e=Zr(e,n.data));return Qr(e.staticClass,e.class)}function Zr(t,e){return{staticClass:ti(t.staticClass,e.staticClass),class:i(t.class)?[t.class,e.class]:e.class}}function Qr(t,e){return i(t)||i(e)?ti(t,ei(e)):""}function ti(t,e){return t?e?t+" "+e:t:e||""}function ei(t){return Array.isArray(t)?ni(t):c(t)?ri(t):"string"===typeof t?t:""}function ni(t){for(var e,n="",r=0,a=t.length;r-1?li[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:li[t]=/HTMLUnknownElement/.test(e.toString())}var fi=b("text,number,password,search,email,tel,url");function hi(t){if("string"===typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function pi(t,e){var n=document.createElement(t);return"select"!==t||e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n}function mi(t,e){return document.createElementNS(ii[t],e)}function bi(t){return document.createTextNode(t)}function vi(t){return document.createComment(t)}function _i(t,e,n){t.insertBefore(e,n)}function gi(t,e){t.removeChild(e)}function yi(t,e){t.appendChild(e)}function Oi(t){return t.parentNode}function ji(t){return t.nextSibling}function wi(t){return t.tagName}function Mi(t,e){t.textContent=e}function Li(t,e){t.setAttribute(e,"")}var ki=Object.freeze({createElement:pi,createElementNS:mi,createTextNode:bi,createComment:vi,insertBefore:_i,removeChild:gi,appendChild:yi,parentNode:Oi,nextSibling:ji,tagName:wi,setTextContent:Mi,setStyleScope:Li}),Ti={create:function(t,e){Di(e)},update:function(t,e){t.data.ref!==e.data.ref&&(Di(t,!0),Di(e))},destroy:function(t){Di(t,!0)}};function Di(t,e){var n=t.data.ref;if(i(n)){var r=t.context,a=t.componentInstance||t.elm,o=r.$refs;e?Array.isArray(o[n])?g(o[n],a):o[n]===a&&(o[n]=void 0):t.data.refInFor?Array.isArray(o[n])?o[n].indexOf(a)<0&&o[n].push(a):o[n]=[a]:o[n]=a}}var Si=new Ot("",{},[]),Yi=["create","activate","update","remove","destroy"];function xi(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&i(t.data)===i(e.data)&&Pi(t,e)||a(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&r(e.asyncFactory.error))}function Pi(t,e){if("input"!==t.tag)return!0;var n,r=i(n=t.data)&&i(n=n.attrs)&&n.type,a=i(n=e.data)&&i(n=n.attrs)&&n.type;return r===a||fi(r)&&fi(a)}function Ci(t,e,n){var r,a,o={};for(r=e;r<=n;++r)a=t[r].key,i(a)&&(o[a]=r);return o}function Ei(t){var e,n,o={},c=t.modules,u=t.nodeOps;for(e=0;em?(d=r(n[_+1])?null:n[_+1].elm,w(t,d,n,p,_,a)):p>_&&L(e,f,m)}function D(t,e,n,r){for(var a=n;a-1?Wi(t,e,n):Ur(e)?Kr(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Vr(e)?t.setAttribute(e,Wr(e,n)):Jr(e)?Kr(n)?t.removeAttributeNS(Gr,qr(e)):t.setAttributeNS(Gr,e,n):Wi(t,e,n)}function Wi(t,e,n){if(Kr(n))t.removeAttribute(e);else{if(nt&&!rt&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var Ui={create:Vi,update:Vi};function Gi(t,e){var n=e.elm,a=e.data,o=t.data;if(!(r(a.staticClass)&&r(a.class)&&(r(o)||r(o.staticClass)&&r(o.class)))){var s=Xr(e),c=n._transitionClasses;i(c)&&(s=ti(s,ei(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Ji,qi,Ki,Xi,Zi,Qi,ta={create:Gi,update:Gi},ea=/[\w).+\-_$\]]/;function na(t){var e,n,r,i,a,o=!1,s=!1,c=!1,u=!1,l=0,d=0,f=0,h=0;for(r=0;r=0;p--)if(m=t.charAt(p)," "!==m)break;m&&ea.test(m)||(u=!0)}}else void 0===i?(h=r+1,i=t.slice(0,r).trim()):b();function b(){(a||(a=[])).push(t.slice(h,r).trim()),h=r+1}if(void 0===i?i=t.slice(0,r).trim():0!==h&&b(),a)for(r=0;r-1?{exp:t.slice(0,Xi),key:'"'+t.slice(Xi+1)+'"'}:{exp:t,key:null};qi=t,Xi=Zi=Qi=0;while(!Oa())Ki=ya(),ja(Ki)?Ma(Ki):91===Ki&&wa(Ki);return{exp:t.slice(0,Zi),key:t.slice(Zi+1,Qi)}}function ya(){return qi.charCodeAt(++Xi)}function Oa(){return Xi>=Ji}function ja(t){return 34===t||39===t}function wa(t){var e=1;Zi=Xi;while(!Oa())if(t=ya(),ja(t))Ma(t);else if(91===t&&e++,93===t&&e--,0===e){Qi=Xi;break}}function Ma(t){var e=t;while(!Oa())if(t=ya(),t===e)break}var La,ka="__r",Ta="__c";function Da(t,e,n){n;var r=e.value,i=e.modifiers,a=t.tag,o=t.attrsMap.type;if(t.component)return va(t,r,i),!1;if("select"===a)xa(t,r,i);else if("input"===a&&"checkbox"===o)Sa(t,r,i);else if("input"===a&&"radio"===o)Ya(t,r,i);else if("input"===a||"textarea"===a)Pa(t,r,i);else{if(!z.isReservedTag(a))return va(t,r,i),!1}return!0}function Sa(t,e,n){var r=n&&n.number,i=ha(t,"value")||"null",a=ha(t,"true-value")||"true",o=ha(t,"false-value")||"false";oa(t,"checked","Array.isArray("+e+")?_i("+e+","+i+")>-1"+("true"===a?":("+e+")":":_q("+e+","+a+")")),da(t,"change","var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+a+"):("+o+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+_a(e,"$$a.concat([$$v])")+")}else{$$i>-1&&("+_a(e,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+_a(e,"$$c")+"}",null,!0)}function Ya(t,e,n){var r=n&&n.number,i=ha(t,"value")||"null";i=r?"_n("+i+")":i,oa(t,"checked","_q("+e+","+i+")"),da(t,"change",_a(e,i),null,!0)}function xa(t,e,n){var r=n&&n.number,i='Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(r?"_n(val)":"val")+"})",a="$event.target.multiple ? $$selectedVal : $$selectedVal[0]",o="var $$selectedVal = "+i+";";o=o+" "+_a(e,a),da(t,"change",o,null,!0)}function Pa(t,e,n){var r=t.attrsMap.type,i=n||{},a=i.lazy,o=i.number,s=i.trim,c=!a&&"range"!==r,u=a?"change":"range"===r?ka:"input",l="$event.target.value";s&&(l="$event.target.value.trim()"),o&&(l="_n("+l+")");var d=_a(e,l);c&&(d="if($event.target.composing)return;"+d),oa(t,"value","("+e+")"),da(t,u,d,null,!0),(s||o)&&da(t,"blur","$forceUpdate()")}function Ca(t){if(i(t[ka])){var e=nt?"change":"input";t[e]=[].concat(t[ka],t[e]||[]),delete t[ka]}i(t[Ta])&&(t.change=[].concat(t[Ta],t.change||[]),delete t[Ta])}function Ea(t,e,n){var r=La;return function i(){var a=e.apply(null,arguments);null!==a&&$a(t,i,n,r)}}var Ha=ce&&!(ot&&Number(ot[1])<=53);function Aa(t,e,n,r){if(Ha){var i=qn,a=e;e=a._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=i||t.timeStamp<=0||t.target.ownerDocument!==document)return a.apply(this,arguments)}}La.addEventListener(t,e,ct?{capture:n,passive:r}:n)}function $a(t,e,n,r){(r||La).removeEventListener(t,e._wrapper||e,n)}function Fa(t,e){if(!r(t.data.on)||!r(e.data.on)){var n=e.data.on||{},i=t.data.on||{};La=e.elm,Ca(n),je(n,i,Aa,$a,Ea,e.context),La=void 0}}var Ia,Ba={create:Fa,update:Fa};function Ra(t,e){if(!r(t.data.domProps)||!r(e.data.domProps)){var n,a,o=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};for(n in i(c.__ob__)&&(c=e.data.domProps=P({},c)),s)n in c||(o[n]="");for(n in c){if(a=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),a===s[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){o._value=a;var u=r(a)?"":String(a);Na(o,u)&&(o.value=u)}else if("innerHTML"===n&&oi(o.tagName)&&r(o.innerHTML)){Ia=Ia||document.createElement("div"),Ia.innerHTML=""+a+"";var l=Ia.firstChild;while(o.firstChild)o.removeChild(o.firstChild);while(l.firstChild)o.appendChild(l.firstChild)}else if(a!==s[n])try{o[n]=a}catch(Xu){}}}}function Na(t,e){return!t.composing&&("OPTION"===t.tagName||Va(t,e)||za(t,e))}function Va(t,e){var n=!0;try{n=document.activeElement!==t}catch(Xu){}return n&&t.value!==e}function za(t,e){var n=t.value,r=t._vModifiers;if(i(r)){if(r.number)return m(n)!==m(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}var Wa={create:Ra,update:Ra},Ua=j((function(t){var e={},n=/;(?![^(]*\))/g,r=/:(.+)/;return t.split(n).forEach((function(t){if(t){var n=t.split(r);n.length>1&&(e[n[0].trim()]=n[1].trim())}})),e}));function Ga(t){var e=Ja(t.style);return t.staticStyle?P(t.staticStyle,e):e}function Ja(t){return Array.isArray(t)?C(t):"string"===typeof t?Ua(t):t}function qa(t,e){var n,r={};if(e){var i=t;while(i.componentInstance)i=i.componentInstance._vnode,i&&i.data&&(n=Ga(i.data))&&P(r,n)}(n=Ga(t.data))&&P(r,n);var a=t;while(a=a.parent)a.data&&(n=Ga(a.data))&&P(r,n);return r}var Ka,Xa=/^--/,Za=/\s*!important$/,Qa=function(t,e,n){if(Xa.test(e))t.style.setProperty(e,n);else if(Za.test(n))t.style.setProperty(T(e),n.replace(Za,""),"important");else{var r=eo(e);if(Array.isArray(n))for(var i=0,a=n.length;i-1?e.split(io).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function oo(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(io).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";while(n.indexOf(r)>=0)n=n.replace(r," ");n=n.trim(),n?t.setAttribute("class",n):t.removeAttribute("class")}}function so(t){if(t){if("object"===typeof t){var e={};return!1!==t.css&&P(e,co(t.name||"v")),P(e,t),e}return"string"===typeof t?co(t):void 0}}var co=j((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),uo=Z&&!rt,lo="transition",fo="animation",ho="transition",po="transitionend",mo="animation",bo="animationend";uo&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(ho="WebkitTransition",po="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(mo="WebkitAnimation",bo="webkitAnimationEnd"));var vo=Z?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function _o(t){vo((function(){vo(t)}))}function go(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),ao(t,e))}function yo(t,e){t._transitionClasses&&g(t._transitionClasses,e),oo(t,e)}function Oo(t,e,n){var r=wo(t,e),i=r.type,a=r.timeout,o=r.propCount;if(!i)return n();var s=i===lo?po:bo,c=0,u=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++c>=o&&u()};setTimeout((function(){c0&&(n=lo,l=o,d=a.length):e===fo?u>0&&(n=fo,l=u,d=c.length):(l=Math.max(o,u),n=l>0?o>u?lo:fo:null,d=n?n===lo?a.length:c.length:0);var f=n===lo&&jo.test(r[ho+"Property"]);return{type:n,timeout:l,propCount:d,hasTransform:f}}function Mo(t,e){while(t.length1}function Yo(t,e){!0!==e.data.show&&ko(e)}var xo=Z?{create:Yo,activate:Yo,remove:function(t,e){!0!==t.data.show?To(t,e):e()}}:{},Po=[Ui,ta,Ba,Wa,ro,xo],Co=Po.concat(Ni),Eo=Ei({nodeOps:ki,modules:Co});rt&&document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&&t.vmodel&&No(t,"input")}));var Ho={inserted:function(t,e,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?we(n,"postpatch",(function(){Ho.componentUpdated(t,e,n)})):Ao(t,e,n.context),t._vOptions=[].map.call(t.options,Io)):("textarea"===n.tag||fi(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",Bo),t.addEventListener("compositionend",Ro),t.addEventListener("change",Ro),rt&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){Ao(t,e,n.context);var r=t._vOptions,i=t._vOptions=[].map.call(t.options,Io);if(i.some((function(t,e){return!F(t,r[e])}))){var a=t.multiple?e.value.some((function(t){return Fo(t,i)})):e.value!==e.oldValue&&Fo(e.value,i);a&&No(t,"change")}}}};function Ao(t,e,n){$o(t,e,n),(nt||it)&&setTimeout((function(){$o(t,e,n)}),0)}function $o(t,e,n){var r=e.value,i=t.multiple;if(!i||Array.isArray(r)){for(var a,o,s=0,c=t.options.length;s-1,o.selected!==a&&(o.selected=a);else if(F(Io(o),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));i||(t.selectedIndex=-1)}}function Fo(t,e){return e.every((function(e){return!F(e,t)}))}function Io(t){return"_value"in t?t._value:t.value}function Bo(t){t.target.composing=!0}function Ro(t){t.target.composing&&(t.target.composing=!1,No(t.target,"input"))}function No(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Vo(t){return!t.componentInstance||t.data&&t.data.transition?t:Vo(t.componentInstance._vnode)}var zo={bind:function(t,e,n){var r=e.value;n=Vo(n);var i=n.data&&n.data.transition,a=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&i?(n.data.show=!0,ko(n,(function(){t.style.display=a}))):t.style.display=r?a:"none"},update:function(t,e,n){var r=e.value,i=e.oldValue;if(!r!==!i){n=Vo(n);var a=n.data&&n.data.transition;a?(n.data.show=!0,r?ko(n,(function(){t.style.display=t.__vOriginalDisplay})):To(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none"}},unbind:function(t,e,n,r,i){i||(t.style.display=t.__vOriginalDisplay)}},Wo={model:Ho,show:zo},Uo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Go(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Go(Ln(e.children)):t}function Jo(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var i=n._parentListeners;for(var a in i)e[M(a)]=i[a];return e}function qo(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function Ko(t){while(t=t.parent)if(t.data.transition)return!0}function Xo(t,e){return e.key===t.key&&e.tag===t.tag}var Zo=function(t){return t.tag||Mn(t)},Qo=function(t){return"show"===t.name},ts={name:"transition",props:Uo,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(Zo),n.length)){0;var r=this.mode;0;var i=n[0];if(Ko(this.$vnode))return i;var a=Go(i);if(!a)return i;if(this._leaving)return qo(t,i);var o="__transition-"+this._uid+"-";a.key=null==a.key?a.isComment?o+"comment":o+a.tag:s(a.key)?0===String(a.key).indexOf(o)?a.key:o+a.key:a.key;var c=(a.data||(a.data={})).transition=Jo(this),u=this._vnode,l=Go(u);if(a.data.directives&&a.data.directives.some(Qo)&&(a.data.show=!0),l&&l.data&&!Xo(a,l)&&!Mn(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var d=l.data.transition=P({},c);if("out-in"===r)return this._leaving=!0,we(d,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),qo(t,i);if("in-out"===r){if(Mn(a))return u;var f,h=function(){f()};we(c,"afterEnter",h),we(c,"enterCancelled",h),we(d,"delayLeave",(function(t){f=t}))}}return i}}},es=P({tag:String,moveClass:String},Uo);delete es.mode;var ns={props:es,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var i=Cn(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,i(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,i=this.$slots.default||[],a=this.children=[],o=Jo(this),s=0;sc&&(s.push(a=t.slice(c,i)),o.push(JSON.stringify(a)));var u=na(r[1].trim());o.push("_s("+u+")"),s.push({"@binding":u}),c=i+r[0].length}return c\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,ws=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Ms="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+W.source+"]*",Ls="((?:"+Ms+"\\:)?"+Ms+")",ks=new RegExp("^<"+Ls),Ts=/^\s*(\/?)>/,Ds=new RegExp("^<\\/"+Ls+"[^>]*>"),Ss=/^]+>/i,Ys=/^",""":'"',"&":"&"," ":"\n"," ":"\t","'":"'"},Hs=/&(?:lt|gt|quot|amp|#39);/g,As=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,$s=b("pre,textarea",!0),Fs=function(t,e){return t&&$s(t)&&"\n"===e[0]};function Is(t,e){var n=e?As:Hs;return t.replace(n,(function(t){return Es[t]}))}function Bs(t,e){var n,r,i=[],a=e.expectHTML,o=e.isUnaryTag||H,s=e.canBeLeftOpenTag||H,c=0;while(t){if(n=t,r&&Ps(r)){var u=0,l=r.toLowerCase(),d=Cs[l]||(Cs[l]=new RegExp("([\\s\\S]*?)(]*>)","i")),f=t.replace(d,(function(t,n,r){return u=r.length,Ps(l)||"noscript"===l||(n=n.replace(//g,"$1").replace(//g,"$1")),Fs(l,n)&&(n=n.slice(1)),e.chars&&e.chars(n),""}));c+=t.length-f.length,t=f,k(l,c-u,c)}else{var h=t.indexOf("<");if(0===h){if(Ys.test(t)){var p=t.indexOf("--\x3e");if(p>=0){e.shouldKeepComment&&e.comment(t.substring(4,p),c,c+p+3),w(p+3);continue}}if(xs.test(t)){var m=t.indexOf("]>");if(m>=0){w(m+2);continue}}var b=t.match(Ss);if(b){w(b[0].length);continue}var v=t.match(Ds);if(v){var _=c;w(v[0].length),k(v[1],_,c);continue}var g=M();if(g){L(g),Fs(g.tagName,t)&&w(1);continue}}var y=void 0,O=void 0,j=void 0;if(h>=0){O=t.slice(h);while(!Ds.test(O)&&!ks.test(O)&&!Ys.test(O)&&!xs.test(O)){if(j=O.indexOf("<",1),j<0)break;h+=j,O=t.slice(h)}y=t.substring(0,h)}h<0&&(y=t),y&&w(y.length),e.chars&&y&&e.chars(y,c-y.length,c)}if(t===n){e.chars&&e.chars(t);break}}function w(e){c+=e,t=t.substring(e)}function M(){var e=t.match(ks);if(e){var n,r,i={tagName:e[1],attrs:[],start:c};w(e[0].length);while(!(n=t.match(Ts))&&(r=t.match(ws)||t.match(js)))r.start=c,w(r[0].length),r.end=c,i.attrs.push(r);if(n)return i.unarySlash=n[1],w(n[0].length),i.end=c,i}}function L(t){var n=t.tagName,c=t.unarySlash;a&&("p"===r&&Os(n)&&k(r),s(n)&&r===n&&k(n));for(var u=o(n)||!!c,l=t.attrs.length,d=new Array(l),f=0;f=0;o--)if(i[o].lowerCasedTag===s)break}else o=0;if(o>=0){for(var u=i.length-1;u>=o;u--)e.end&&e.end(i[u].tag,n,a);i.length=o,r=o&&i[o-1].tag}else"br"===s?e.start&&e.start(t,[],!0,n,a):"p"===s&&(e.start&&e.start(t,[],!1,n,a),e.end&&e.end(t,n,a))}k()}var Rs,Ns,Vs,zs,Ws,Us,Gs,Js,qs=/^@|^v-on:/,Ks=/^v-|^@|^:|^#/,Xs=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Zs=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Qs=/^\(|\)$/g,tc=/^\[.*\]$/,ec=/:(.*)$/,nc=/^:|^\.|^v-bind:/,rc=/\.[^.\]]+(?=[^\]]*$)/g,ic=/^v-slot(:|$)|^#/,ac=/[\r\n]/,oc=/\s+/g,sc=j(_s.decode),cc="_empty_";function uc(t,e,n){return{type:1,tag:t,attrsList:e,attrsMap:Yc(e),rawAttrsMap:{},parent:n,children:[]}}function lc(t,e){Rs=e.warn||ia,Us=e.isPreTag||H,Gs=e.mustUseProp||H,Js=e.getTagNamespace||H;var n=e.isReservedTag||H;(function(t){return!!t.component||!n(t.tag)}),Vs=aa(e.modules,"transformNode"),zs=aa(e.modules,"preTransformNode"),Ws=aa(e.modules,"postTransformNode"),Ns=e.delimiters;var r,i,a=[],o=!1!==e.preserveWhitespace,s=e.whitespace,c=!1,u=!1;function l(t){if(d(t),c||t.processed||(t=hc(t,e)),a.length||t===r||r.if&&(t.elseif||t.else)&&Oc(r,{exp:t.elseif,block:t}),i&&!t.forbidden)if(t.elseif||t.else)gc(t,i);else{if(t.slotScope){var n=t.slotTarget||'"default"';(i.scopedSlots||(i.scopedSlots={}))[n]=t}i.children.push(t),t.parent=i}t.children=t.children.filter((function(t){return!t.slotScope})),d(t),t.pre&&(c=!1),Us(t.tag)&&(u=!1);for(var o=0;o|^function(?:\s+[\w$]+)?\s*\(/,tu=/\([^)]*?\);*$/,eu=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,nu={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},ru={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},iu=function(t){return"if("+t+")return null;"},au={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:iu("$event.target !== $event.currentTarget"),ctrl:iu("!$event.ctrlKey"),shift:iu("!$event.shiftKey"),alt:iu("!$event.altKey"),meta:iu("!$event.metaKey"),left:iu("'button' in $event && $event.button !== 0"),middle:iu("'button' in $event && $event.button !== 1"),right:iu("'button' in $event && $event.button !== 2")};function ou(t,e){var n=e?"nativeOn:":"on:",r="",i="";for(var a in t){var o=su(t[a]);t[a]&&t[a].dynamic?i+=a+","+o+",":r+='"'+a+'":'+o+","}return r="{"+r.slice(0,-1)+"}",i?n+"_d("+r+",["+i.slice(0,-1)+"])":n+r}function su(t){if(!t)return"function(){}";if(Array.isArray(t))return"["+t.map((function(t){return su(t)})).join(",")+"]";var e=eu.test(t.value),n=Qc.test(t.value),r=eu.test(t.value.replace(tu,""));if(t.modifiers){var i="",a="",o=[];for(var s in t.modifiers)if(au[s])a+=au[s],nu[s]&&o.push(s);else if("exact"===s){var c=t.modifiers;a+=iu(["ctrl","shift","alt","meta"].filter((function(t){return!c[t]})).map((function(t){return"$event."+t+"Key"})).join("||"))}else o.push(s);o.length&&(i+=cu(o)),a&&(i+=a);var u=e?"return "+t.value+"($event)":n?"return ("+t.value+")($event)":r?"return "+t.value:t.value;return"function($event){"+i+u+"}"}return e||n?t.value:"function($event){"+(r?"return "+t.value:t.value)+"}"}function cu(t){return"if(!$event.type.indexOf('key')&&"+t.map(uu).join("&&")+")return null;"}function uu(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var n=nu[t],r=ru[t];return"_k($event.keyCode,"+JSON.stringify(t)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}function lu(t,e){t.wrapListeners=function(t){return"_g("+t+","+e.value+")"}}function du(t,e){t.wrapData=function(n){return"_b("+n+",'"+t.tag+"',"+e.value+","+(e.modifiers&&e.modifiers.prop?"true":"false")+(e.modifiers&&e.modifiers.sync?",true":"")+")"}}var fu={on:lu,bind:du,cloak:E},hu=function(t){this.options=t,this.warn=t.warn||ia,this.transforms=aa(t.modules,"transformCode"),this.dataGenFns=aa(t.modules,"genData"),this.directives=P(P({},fu),t.directives);var e=t.isReservedTag||H;this.maybeComponent=function(t){return!!t.component||!e(t.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function pu(t,e){var n=new hu(e),r=t?mu(t,n):'_c("div")';return{render:"with(this){return "+r+"}",staticRenderFns:n.staticRenderFns}}function mu(t,e){if(t.parent&&(t.pre=t.pre||t.parent.pre),t.staticRoot&&!t.staticProcessed)return bu(t,e);if(t.once&&!t.onceProcessed)return vu(t,e);if(t.for&&!t.forProcessed)return yu(t,e);if(t.if&&!t.ifProcessed)return _u(t,e);if("template"!==t.tag||t.slotTarget||e.pre){if("slot"===t.tag)return Eu(t,e);var n;if(t.component)n=Hu(t.component,t,e);else{var r;(!t.plain||t.pre&&e.maybeComponent(t))&&(r=Ou(t,e));var i=t.inlineTemplate?null:Du(t,e,!0);n="_c('"+t.tag+"'"+(r?","+r:"")+(i?","+i:"")+")"}for(var a=0;a>>0}function ku(t){return 1===t.type&&("slot"===t.tag||t.children.some(ku))}function Tu(t,e){var n=t.attrsMap["slot-scope"];if(t.if&&!t.ifProcessed&&!n)return _u(t,e,Tu,"null");if(t.for&&!t.forProcessed)return yu(t,e,Tu);var r=t.slotScope===cc?"":String(t.slotScope),i="function("+r+"){return "+("template"===t.tag?t.if&&n?"("+t.if+")?"+(Du(t,e)||"undefined")+":undefined":Du(t,e)||"undefined":mu(t,e))+"}",a=r?"":",proxy:true";return"{key:"+(t.slotTarget||'"default"')+",fn:"+i+a+"}"}function Du(t,e,n,r,i){var a=t.children;if(a.length){var o=a[0];if(1===a.length&&o.for&&"template"!==o.tag&&"slot"!==o.tag){var s=n?e.maybeComponent(o)?",1":",0":"";return""+(r||mu)(o,e)+s}var c=n?Su(a,e.maybeComponent):0,u=i||xu;return"["+a.map((function(t){return u(t,e)})).join(",")+"]"+(c?","+c:"")}}function Su(t,e){for(var n=0,r=0;r':'
',Ru.innerHTML.indexOf(" ")>0}var Uu=!!Z&&Wu(!1),Gu=!!Z&&Wu(!0),Ju=j((function(t){var e=hi(t);return e&&e.innerHTML})),qu=Lr.prototype.$mount;function Ku(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}Lr.prototype.$mount=function(t,e){if(t=t&&hi(t),t===document.body||t===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"===typeof r)"#"===r.charAt(0)&&(r=Ju(r));else{if(!r.nodeType)return this;r=r.innerHTML}else t&&(r=Ku(t));if(r){0;var i=zu(r,{outputSourceRange:!1,shouldDecodeNewlines:Uu,shouldDecodeNewlinesForHref:Gu,delimiters:n.delimiters,comments:n.comments},this),a=i.render,o=i.staticRenderFns;n.render=a,n.staticRenderFns=o}}return qu.call(this,t,e)},Lr.compile=zu,e["default"]=Lr}.call(this,n("c8ba"))},a356:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; +var n=Object.freeze({});function r(t){return void 0===t||null===t}function i(t){return void 0!==t&&null!==t}function a(t){return!0===t}function o(t){return!1===t}function s(t){return"string"===typeof t||"number"===typeof t||"symbol"===typeof t||"boolean"===typeof t}function c(t){return null!==t&&"object"===typeof t}var u=Object.prototype.toString;function l(t){return"[object Object]"===u.call(t)}function d(t){return"[object RegExp]"===u.call(t)}function f(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function h(t){return i(t)&&"function"===typeof t.then&&"function"===typeof t.catch}function p(t){return null==t?"":Array.isArray(t)||l(t)&&t.toString===u?JSON.stringify(t,null,2):String(t)}function m(t){var e=parseFloat(t);return isNaN(e)?t:e}function b(t,e){for(var n=Object.create(null),r=t.split(","),i=0;i-1)return t.splice(n,1)}}var y=Object.prototype.hasOwnProperty;function O(t,e){return y.call(t,e)}function j(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}var w=/-(\w)/g,M=j((function(t){return t.replace(w,(function(t,e){return e?e.toUpperCase():""}))})),L=j((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),k=/\B([A-Z])/g,T=j((function(t){return t.replace(k,"-$1").toLowerCase()}));function D(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function S(t,e){return t.bind(e)}var Y=Function.prototype.bind?S:D;function x(t,e){e=e||0;var n=t.length-e,r=new Array(n);while(n--)r[n]=t[n+e];return r}function P(t,e){for(var n in e)t[n]=e[n];return t}function C(t){for(var e={},n=0;n0,it=et&&et.indexOf("edge/")>0,at=(et&&et.indexOf("android"),et&&/iphone|ipad|ipod|ios/.test(et)||"ios"===tt),ot=(et&&/chrome\/\d+/.test(et),et&&/phantomjs/.test(et),et&&et.match(/firefox\/(\d+)/)),st={}.watch,ct=!1;if(Z)try{var ut={};Object.defineProperty(ut,"passive",{get:function(){ct=!0}}),window.addEventListener("test-passive",null,ut)}catch(Zu){}var lt=function(){return void 0===K&&(K=!Z&&!Q&&"undefined"!==typeof t&&(t["process"]&&"server"===t["process"].env.VUE_ENV)),K},dt=Z&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ft(t){return"function"===typeof t&&/native code/.test(t.toString())}var ht,pt="undefined"!==typeof Symbol&&ft(Symbol)&&"undefined"!==typeof Reflect&&ft(Reflect.ownKeys);ht="undefined"!==typeof Set&&ft(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var mt=E,bt=0,vt=function(){this.id=bt++,this.subs=[]};vt.prototype.addSub=function(t){this.subs.push(t)},vt.prototype.removeSub=function(t){g(this.subs,t)},vt.prototype.depend=function(){vt.target&&vt.target.addDep(this)},vt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(a&&!O(i,"default"))o=!1;else if(""===o||o===T(t)){var c=re(String,i.type);(c<0||s0&&(o=Ye(o,(e||"")+"_"+n),Se(o[0])&&Se(u)&&(l[c]=Mt(u.text+o[0].text),o.shift()),l.push.apply(l,o)):s(o)?Se(u)?l[c]=Mt(u.text+o):""!==o&&l.push(Mt(o)):Se(o)&&Se(u)?l[c]=Mt(u.text+o.text):(a(t._isVList)&&i(o.tag)&&r(o.key)&&i(e)&&(o.key="__vlist"+e+"_"+n+"__"),l.push(o)));return l}function xe(t){var e=t.$options.provide;e&&(t._provided="function"===typeof e?e.call(t):e)}function Pe(t){var e=Ce(t.$options.inject,t);e&&(xt(!1),Object.keys(e).forEach((function(n){At(t,n,e[n])})),xt(!0))}function Ce(t,e){if(t){for(var n=Object.create(null),r=pt?Reflect.ownKeys(t):Object.keys(t),i=0;i0,o=t?!!t.$stable:!a,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(o&&r&&r!==n&&s===r.$key&&!a&&!r.$hasNormal)return r;for(var c in i={},t)t[c]&&"$"!==c[0]&&(i[c]=Fe(e,c,t[c]))}else i={};for(var u in e)u in i||(i[u]=Ie(e,u));return t&&Object.isExtensible(t)&&(t._normalized=i),G(i,"$stable",o),G(i,"$key",s),G(i,"$hasNormal",a),i}function Fe(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});t=t&&"object"===typeof t&&!Array.isArray(t)?[t]:De(t);var e=t&&t[0];return t&&(!e||1===t.length&&e.isComment&&!Ae(e))?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function Ie(t,e){return function(){return t[e]}}function Be(t,e){var n,r,a,o,s;if(Array.isArray(t)||"string"===typeof t)for(n=new Array(t.length),r=0,a=t.length;r1?x(n):n;for(var r=x(arguments,1),i='event handler for "'+t+'"',a=0,o=n.length;adocument.createEvent("Event").timeStamp&&(Xn=function(){return Zn.now()})}function Qn(){var t,e;for(Kn=Xn(),Gn=!0,Vn.sort((function(t,e){return t.id-e.id})),Jn=0;JnJn&&Vn[n].id>t.id)n--;Vn.splice(n+1,0,t)}else Vn.push(t);Un||(Un=!0,ve(Qn))}}var ir=0,ar=function(t,e,n,r,i){this.vm=t,i&&(t._watcher=this),t._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++ir,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new ht,this.newDepIds=new ht,this.expression="","function"===typeof e?this.getter=e:(this.getter=q(e),this.getter||(this.getter=E)),this.value=this.lazy?void 0:this.get()};ar.prototype.get=function(){var t;gt(this);var e=this.vm;try{t=this.getter.call(e,e)}catch(Zu){if(!this.user)throw Zu;ie(Zu,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&ge(t),yt(),this.cleanupDeps()}return t},ar.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},ar.prototype.cleanupDeps=function(){var t=this.deps.length;while(t--){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},ar.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():rr(this)},ar.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||c(t)||this.deep){var e=this.value;if(this.value=t,this.user){var n='callback for watcher "'+this.expression+'"';ae(this.cb,this.vm,[t,e],this.vm,n)}else this.cb.call(this.vm,t,e)}}},ar.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},ar.prototype.depend=function(){var t=this.deps.length;while(t--)this.deps[t].depend()},ar.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||g(this.vm._watchers,this);var t=this.deps.length;while(t--)this.deps[t].removeSub(this);this.active=!1}};var or={enumerable:!0,configurable:!0,get:E,set:E};function sr(t,e,n){or.get=function(){return this[e][n]},or.set=function(t){this[e][n]=t},Object.defineProperty(t,n,or)}function cr(t){t._watchers=[];var e=t.$options;e.props&&ur(t,e.props),e.methods&&vr(t,e.methods),e.data?lr(t):Ht(t._data={},!0),e.computed&&hr(t,e.computed),e.watch&&e.watch!==st&&_r(t,e.watch)}function ur(t,e){var n=t.$options.propsData||{},r=t._props={},i=t.$options._propKeys=[],a=!t.$parent;a||xt(!1);var o=function(a){i.push(a);var o=Zt(a,e,n,t);At(r,a,o),a in t||sr(t,"_props",a)};for(var s in e)o(s);xt(!0)}function lr(t){var e=t.$options.data;e=t._data="function"===typeof e?dr(e,t):e||{},l(e)||(e={});var n=Object.keys(e),r=t.$options.props,i=(t.$options.methods,n.length);while(i--){var a=n[i];0,r&&O(r,a)||U(a)||sr(t,"_data",a)}Ht(e,!0)}function dr(t,e){gt();try{return t.call(e,e)}catch(Zu){return ie(Zu,e,"data()"),{}}finally{yt()}}var fr={lazy:!0};function hr(t,e){var n=t._computedWatchers=Object.create(null),r=lt();for(var i in e){var a=e[i],o="function"===typeof a?a:a.get;0,r||(n[i]=new ar(t,o||E,E,fr)),i in t||pr(t,i,a)}}function pr(t,e,n){var r=!lt();"function"===typeof n?(or.get=r?mr(e):br(n),or.set=E):(or.get=n.get?r&&!1!==n.cache?mr(e):br(n.get):E,or.set=n.set||E),Object.defineProperty(t,e,or)}function mr(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),vt.target&&e.depend(),e.value}}function br(t){return function(){return t.call(this,this)}}function vr(t,e){t.$options.props;for(var n in e)t[n]="function"!==typeof e[n]?E:Y(e[n],t)}function _r(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var i=0;i-1)return this;var n=x(arguments,1);return n.unshift(this),"function"===typeof t.install?t.install.apply(t,n):"function"===typeof t&&t.apply(null,n),e.push(t),this}}function Dr(t){t.mixin=function(t){return this.options=Kt(this.options,t),this}}function Sr(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,i=t._Ctor||(t._Ctor={});if(i[r])return i[r];var a=t.name||n.options.name;var o=function(t){this._init(t)};return o.prototype=Object.create(n.prototype),o.prototype.constructor=o,o.cid=e++,o.options=Kt(n.options,t),o["super"]=n,o.options.props&&Yr(o),o.options.computed&&xr(o),o.extend=n.extend,o.mixin=n.mixin,o.use=n.use,N.forEach((function(t){o[t]=n[t]})),a&&(o.options.components[a]=o),o.superOptions=n.options,o.extendOptions=t,o.sealedOptions=P({},o.options),i[r]=o,o}}function Yr(t){var e=t.options.props;for(var n in e)sr(t.prototype,"_props",n)}function xr(t){var e=t.options.computed;for(var n in e)pr(t.prototype,n,e[n])}function Pr(t){N.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&l(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"===typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}function Cr(t){return t&&(t.Ctor.options.name||t.tag)}function Er(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"===typeof t?t.split(",").indexOf(e)>-1:!!d(t)&&t.test(e)}function Hr(t,e){var n=t.cache,r=t.keys,i=t._vnode;for(var a in n){var o=n[a];if(o){var s=o.name;s&&!e(s)&&Ar(n,a,r,i)}}}function Ar(t,e,n,r){var i=t[e];!i||r&&i.tag===r.tag||i.componentInstance.$destroy(),t[e]=null,g(n,e)}jr(kr),yr(kr),Pn(kr),An(kr),jn(kr);var $r=[String,RegExp,Array],Fr={name:"keep-alive",abstract:!0,props:{include:$r,exclude:$r,max:[String,Number]},methods:{cacheVNode:function(){var t=this,e=t.cache,n=t.keys,r=t.vnodeToCache,i=t.keyToCache;if(r){var a=r.tag,o=r.componentInstance,s=r.componentOptions;e[i]={name:Cr(s),tag:a,componentInstance:o},n.push(i),this.max&&n.length>parseInt(this.max)&&Ar(e,n[0],n,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Ar(this.cache,t,this.keys)},mounted:function(){var t=this;this.cacheVNode(),this.$watch("include",(function(e){Hr(t,(function(t){return Er(e,t)}))})),this.$watch("exclude",(function(e){Hr(t,(function(t){return!Er(e,t)}))}))},updated:function(){this.cacheVNode()},render:function(){var t=this.$slots.default,e=kn(t),n=e&&e.componentOptions;if(n){var r=Cr(n),i=this,a=i.include,o=i.exclude;if(a&&(!r||!Er(a,r))||o&&r&&Er(o,r))return e;var s=this,c=s.cache,u=s.keys,l=null==e.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):e.key;c[l]?(e.componentInstance=c[l].componentInstance,g(u,l),u.push(l)):(this.vnodeToCache=e,this.keyToCache=l),e.data.keepAlive=!0}return e||t&&t[0]}},Ir={KeepAlive:Fr};function Br(t){var e={get:function(){return z}};Object.defineProperty(t,"config",e),t.util={warn:mt,extend:P,mergeOptions:Kt,defineReactive:At},t.set=$t,t.delete=Ft,t.nextTick=ve,t.observable=function(t){return Ht(t),t},t.options=Object.create(null),N.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,P(t.options.components,Ir),Tr(t),Dr(t),Sr(t),Pr(t)}Br(kr),Object.defineProperty(kr.prototype,"$isServer",{get:lt}),Object.defineProperty(kr.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(kr,"FunctionalRenderContext",{value:en}),kr.version="2.6.14";var Rr=b("style,class"),Nr=b("input,textarea,option,select,progress"),Vr=function(t,e,n){return"value"===n&&Nr(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},zr=b("contenteditable,draggable,spellcheck"),Wr=b("events,caret,typing,plaintext-only"),Ur=function(t,e){return Xr(e)||"false"===e?"false":"contenteditable"===t&&Wr(e)?e:"true"},Gr=b("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),Jr="http://www.w3.org/1999/xlink",qr=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Kr=function(t){return qr(t)?t.slice(6,t.length):""},Xr=function(t){return null==t||!1===t};function Zr(t){var e=t.data,n=t,r=t;while(i(r.componentInstance))r=r.componentInstance._vnode,r&&r.data&&(e=Qr(r.data,e));while(i(n=n.parent))n&&n.data&&(e=Qr(e,n.data));return ti(e.staticClass,e.class)}function Qr(t,e){return{staticClass:ei(t.staticClass,e.staticClass),class:i(t.class)?[t.class,e.class]:e.class}}function ti(t,e){return i(t)||i(e)?ei(t,ni(e)):""}function ei(t,e){return t?e?t+" "+e:t:e||""}function ni(t){return Array.isArray(t)?ri(t):c(t)?ii(t):"string"===typeof t?t:""}function ri(t){for(var e,n="",r=0,a=t.length;r-1?di[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:di[t]=/HTMLUnknownElement/.test(e.toString())}var hi=b("text,number,password,search,email,tel,url");function pi(t){if("string"===typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function mi(t,e){var n=document.createElement(t);return"select"!==t||e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n}function bi(t,e){return document.createElementNS(ai[t],e)}function vi(t){return document.createTextNode(t)}function _i(t){return document.createComment(t)}function gi(t,e,n){t.insertBefore(e,n)}function yi(t,e){t.removeChild(e)}function Oi(t,e){t.appendChild(e)}function ji(t){return t.parentNode}function wi(t){return t.nextSibling}function Mi(t){return t.tagName}function Li(t,e){t.textContent=e}function ki(t,e){t.setAttribute(e,"")}var Ti=Object.freeze({createElement:mi,createElementNS:bi,createTextNode:vi,createComment:_i,insertBefore:gi,removeChild:yi,appendChild:Oi,parentNode:ji,nextSibling:wi,tagName:Mi,setTextContent:Li,setStyleScope:ki}),Di={create:function(t,e){Si(e)},update:function(t,e){t.data.ref!==e.data.ref&&(Si(t,!0),Si(e))},destroy:function(t){Si(t,!0)}};function Si(t,e){var n=t.data.ref;if(i(n)){var r=t.context,a=t.componentInstance||t.elm,o=r.$refs;e?Array.isArray(o[n])?g(o[n],a):o[n]===a&&(o[n]=void 0):t.data.refInFor?Array.isArray(o[n])?o[n].indexOf(a)<0&&o[n].push(a):o[n]=[a]:o[n]=a}}var Yi=new Ot("",{},[]),xi=["create","activate","update","remove","destroy"];function Pi(t,e){return t.key===e.key&&t.asyncFactory===e.asyncFactory&&(t.tag===e.tag&&t.isComment===e.isComment&&i(t.data)===i(e.data)&&Ci(t,e)||a(t.isAsyncPlaceholder)&&r(e.asyncFactory.error))}function Ci(t,e){if("input"!==t.tag)return!0;var n,r=i(n=t.data)&&i(n=n.attrs)&&n.type,a=i(n=e.data)&&i(n=n.attrs)&&n.type;return r===a||hi(r)&&hi(a)}function Ei(t,e,n){var r,a,o={};for(r=e;r<=n;++r)a=t[r].key,i(a)&&(o[a]=r);return o}function Hi(t){var e,n,o={},c=t.modules,u=t.nodeOps;for(e=0;em?(d=r(n[_+1])?null:n[_+1].elm,w(t,d,n,p,_,a)):p>_&&L(e,f,m)}function D(t,e,n,r){for(var a=n;a-1?Ui(t,e,n):Gr(e)?Xr(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):zr(e)?t.setAttribute(e,Ur(e,n)):qr(e)?Xr(n)?t.removeAttributeNS(Jr,Kr(e)):t.setAttributeNS(Jr,e,n):Ui(t,e,n)}function Ui(t,e,n){if(Xr(n))t.removeAttribute(e);else{if(nt&&!rt&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var Gi={create:zi,update:zi};function Ji(t,e){var n=e.elm,a=e.data,o=t.data;if(!(r(a.staticClass)&&r(a.class)&&(r(o)||r(o.staticClass)&&r(o.class)))){var s=Zr(e),c=n._transitionClasses;i(c)&&(s=ei(s,ni(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var qi,Ki,Xi,Zi,Qi,ta,ea={create:Ji,update:Ji},na=/[\w).+\-_$\]]/;function ra(t){var e,n,r,i,a,o=!1,s=!1,c=!1,u=!1,l=0,d=0,f=0,h=0;for(r=0;r=0;p--)if(m=t.charAt(p)," "!==m)break;m&&na.test(m)||(u=!0)}}else void 0===i?(h=r+1,i=t.slice(0,r).trim()):b();function b(){(a||(a=[])).push(t.slice(h,r).trim()),h=r+1}if(void 0===i?i=t.slice(0,r).trim():0!==h&&b(),a)for(r=0;r-1?{exp:t.slice(0,Zi),key:'"'+t.slice(Zi+1)+'"'}:{exp:t,key:null};Ki=t,Zi=Qi=ta=0;while(!ja())Xi=Oa(),wa(Xi)?La(Xi):91===Xi&&Ma(Xi);return{exp:t.slice(0,Qi),key:t.slice(Qi+1,ta)}}function Oa(){return Ki.charCodeAt(++Zi)}function ja(){return Zi>=qi}function wa(t){return 34===t||39===t}function Ma(t){var e=1;Qi=Zi;while(!ja())if(t=Oa(),wa(t))La(t);else if(91===t&&e++,93===t&&e--,0===e){ta=Zi;break}}function La(t){var e=t;while(!ja())if(t=Oa(),t===e)break}var ka,Ta="__r",Da="__c";function Sa(t,e,n){n;var r=e.value,i=e.modifiers,a=t.tag,o=t.attrsMap.type;if(t.component)return _a(t,r,i),!1;if("select"===a)Pa(t,r,i);else if("input"===a&&"checkbox"===o)Ya(t,r,i);else if("input"===a&&"radio"===o)xa(t,r,i);else if("input"===a||"textarea"===a)Ca(t,r,i);else{if(!z.isReservedTag(a))return _a(t,r,i),!1}return!0}function Ya(t,e,n){var r=n&&n.number,i=pa(t,"value")||"null",a=pa(t,"true-value")||"true",o=pa(t,"false-value")||"false";sa(t,"checked","Array.isArray("+e+")?_i("+e+","+i+")>-1"+("true"===a?":("+e+")":":_q("+e+","+a+")")),fa(t,"change","var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+a+"):("+o+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+ga(e,"$$a.concat([$$v])")+")}else{$$i>-1&&("+ga(e,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+ga(e,"$$c")+"}",null,!0)}function xa(t,e,n){var r=n&&n.number,i=pa(t,"value")||"null";i=r?"_n("+i+")":i,sa(t,"checked","_q("+e+","+i+")"),fa(t,"change",ga(e,i),null,!0)}function Pa(t,e,n){var r=n&&n.number,i='Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(r?"_n(val)":"val")+"})",a="$event.target.multiple ? $$selectedVal : $$selectedVal[0]",o="var $$selectedVal = "+i+";";o=o+" "+ga(e,a),fa(t,"change",o,null,!0)}function Ca(t,e,n){var r=t.attrsMap.type,i=n||{},a=i.lazy,o=i.number,s=i.trim,c=!a&&"range"!==r,u=a?"change":"range"===r?Ta:"input",l="$event.target.value";s&&(l="$event.target.value.trim()"),o&&(l="_n("+l+")");var d=ga(e,l);c&&(d="if($event.target.composing)return;"+d),sa(t,"value","("+e+")"),fa(t,u,d,null,!0),(s||o)&&fa(t,"blur","$forceUpdate()")}function Ea(t){if(i(t[Ta])){var e=nt?"change":"input";t[e]=[].concat(t[Ta],t[e]||[]),delete t[Ta]}i(t[Da])&&(t.change=[].concat(t[Da],t.change||[]),delete t[Da])}function Ha(t,e,n){var r=ka;return function i(){var a=e.apply(null,arguments);null!==a&&Fa(t,i,n,r)}}var Aa=ue&&!(ot&&Number(ot[1])<=53);function $a(t,e,n,r){if(Aa){var i=Kn,a=e;e=a._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=i||t.timeStamp<=0||t.target.ownerDocument!==document)return a.apply(this,arguments)}}ka.addEventListener(t,e,ct?{capture:n,passive:r}:n)}function Fa(t,e,n,r){(r||ka).removeEventListener(t,e._wrapper||e,n)}function Ia(t,e){if(!r(t.data.on)||!r(e.data.on)){var n=e.data.on||{},i=t.data.on||{};ka=e.elm,Ea(n),we(n,i,$a,Fa,Ha,e.context),ka=void 0}}var Ba,Ra={create:Ia,update:Ia};function Na(t,e){if(!r(t.data.domProps)||!r(e.data.domProps)){var n,a,o=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};for(n in i(c.__ob__)&&(c=e.data.domProps=P({},c)),s)n in c||(o[n]="");for(n in c){if(a=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),a===s[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){o._value=a;var u=r(a)?"":String(a);Va(o,u)&&(o.value=u)}else if("innerHTML"===n&&si(o.tagName)&&r(o.innerHTML)){Ba=Ba||document.createElement("div"),Ba.innerHTML=""+a+"";var l=Ba.firstChild;while(o.firstChild)o.removeChild(o.firstChild);while(l.firstChild)o.appendChild(l.firstChild)}else if(a!==s[n])try{o[n]=a}catch(Zu){}}}}function Va(t,e){return!t.composing&&("OPTION"===t.tagName||za(t,e)||Wa(t,e))}function za(t,e){var n=!0;try{n=document.activeElement!==t}catch(Zu){}return n&&t.value!==e}function Wa(t,e){var n=t.value,r=t._vModifiers;if(i(r)){if(r.number)return m(n)!==m(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}var Ua={create:Na,update:Na},Ga=j((function(t){var e={},n=/;(?![^(]*\))/g,r=/:(.+)/;return t.split(n).forEach((function(t){if(t){var n=t.split(r);n.length>1&&(e[n[0].trim()]=n[1].trim())}})),e}));function Ja(t){var e=qa(t.style);return t.staticStyle?P(t.staticStyle,e):e}function qa(t){return Array.isArray(t)?C(t):"string"===typeof t?Ga(t):t}function Ka(t,e){var n,r={};if(e){var i=t;while(i.componentInstance)i=i.componentInstance._vnode,i&&i.data&&(n=Ja(i.data))&&P(r,n)}(n=Ja(t.data))&&P(r,n);var a=t;while(a=a.parent)a.data&&(n=Ja(a.data))&&P(r,n);return r}var Xa,Za=/^--/,Qa=/\s*!important$/,to=function(t,e,n){if(Za.test(e))t.style.setProperty(e,n);else if(Qa.test(n))t.style.setProperty(T(e),n.replace(Qa,""),"important");else{var r=no(e);if(Array.isArray(n))for(var i=0,a=n.length;i-1?e.split(ao).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function so(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(ao).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";while(n.indexOf(r)>=0)n=n.replace(r," ");n=n.trim(),n?t.setAttribute("class",n):t.removeAttribute("class")}}function co(t){if(t){if("object"===typeof t){var e={};return!1!==t.css&&P(e,uo(t.name||"v")),P(e,t),e}return"string"===typeof t?uo(t):void 0}}var uo=j((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),lo=Z&&!rt,fo="transition",ho="animation",po="transition",mo="transitionend",bo="animation",vo="animationend";lo&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(po="WebkitTransition",mo="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(bo="WebkitAnimation",vo="webkitAnimationEnd"));var _o=Z?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function go(t){_o((function(){_o(t)}))}function yo(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),oo(t,e))}function Oo(t,e){t._transitionClasses&&g(t._transitionClasses,e),so(t,e)}function jo(t,e,n){var r=Mo(t,e),i=r.type,a=r.timeout,o=r.propCount;if(!i)return n();var s=i===fo?mo:vo,c=0,u=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++c>=o&&u()};setTimeout((function(){c0&&(n=fo,l=o,d=a.length):e===ho?u>0&&(n=ho,l=u,d=c.length):(l=Math.max(o,u),n=l>0?o>u?fo:ho:null,d=n?n===fo?a.length:c.length:0);var f=n===fo&&wo.test(r[po+"Property"]);return{type:n,timeout:l,propCount:d,hasTransform:f}}function Lo(t,e){while(t.length1}function xo(t,e){!0!==e.data.show&&To(e)}var Po=Z?{create:xo,activate:xo,remove:function(t,e){!0!==t.data.show?Do(t,e):e()}}:{},Co=[Gi,ea,Ra,Ua,io,Po],Eo=Co.concat(Vi),Ho=Hi({nodeOps:Ti,modules:Eo});rt&&document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&&t.vmodel&&Vo(t,"input")}));var Ao={inserted:function(t,e,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?Me(n,"postpatch",(function(){Ao.componentUpdated(t,e,n)})):$o(t,e,n.context),t._vOptions=[].map.call(t.options,Bo)):("textarea"===n.tag||hi(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",Ro),t.addEventListener("compositionend",No),t.addEventListener("change",No),rt&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){$o(t,e,n.context);var r=t._vOptions,i=t._vOptions=[].map.call(t.options,Bo);if(i.some((function(t,e){return!F(t,r[e])}))){var a=t.multiple?e.value.some((function(t){return Io(t,i)})):e.value!==e.oldValue&&Io(e.value,i);a&&Vo(t,"change")}}}};function $o(t,e,n){Fo(t,e,n),(nt||it)&&setTimeout((function(){Fo(t,e,n)}),0)}function Fo(t,e,n){var r=e.value,i=t.multiple;if(!i||Array.isArray(r)){for(var a,o,s=0,c=t.options.length;s-1,o.selected!==a&&(o.selected=a);else if(F(Bo(o),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));i||(t.selectedIndex=-1)}}function Io(t,e){return e.every((function(e){return!F(e,t)}))}function Bo(t){return"_value"in t?t._value:t.value}function Ro(t){t.target.composing=!0}function No(t){t.target.composing&&(t.target.composing=!1,Vo(t.target,"input"))}function Vo(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function zo(t){return!t.componentInstance||t.data&&t.data.transition?t:zo(t.componentInstance._vnode)}var Wo={bind:function(t,e,n){var r=e.value;n=zo(n);var i=n.data&&n.data.transition,a=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&i?(n.data.show=!0,To(n,(function(){t.style.display=a}))):t.style.display=r?a:"none"},update:function(t,e,n){var r=e.value,i=e.oldValue;if(!r!==!i){n=zo(n);var a=n.data&&n.data.transition;a?(n.data.show=!0,r?To(n,(function(){t.style.display=t.__vOriginalDisplay})):Do(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none"}},unbind:function(t,e,n,r,i){i||(t.style.display=t.__vOriginalDisplay)}},Uo={model:Ao,show:Wo},Go={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Jo(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Jo(kn(e.children)):t}function qo(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var i=n._parentListeners;for(var a in i)e[M(a)]=i[a];return e}function Ko(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function Xo(t){while(t=t.parent)if(t.data.transition)return!0}function Zo(t,e){return e.key===t.key&&e.tag===t.tag}var Qo=function(t){return t.tag||Ae(t)},ts=function(t){return"show"===t.name},es={name:"transition",props:Go,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(Qo),n.length)){0;var r=this.mode;0;var i=n[0];if(Xo(this.$vnode))return i;var a=Jo(i);if(!a)return i;if(this._leaving)return Ko(t,i);var o="__transition-"+this._uid+"-";a.key=null==a.key?a.isComment?o+"comment":o+a.tag:s(a.key)?0===String(a.key).indexOf(o)?a.key:o+a.key:a.key;var c=(a.data||(a.data={})).transition=qo(this),u=this._vnode,l=Jo(u);if(a.data.directives&&a.data.directives.some(ts)&&(a.data.show=!0),l&&l.data&&!Zo(a,l)&&!Ae(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var d=l.data.transition=P({},c);if("out-in"===r)return this._leaving=!0,Me(d,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),Ko(t,i);if("in-out"===r){if(Ae(a))return u;var f,h=function(){f()};Me(c,"afterEnter",h),Me(c,"enterCancelled",h),Me(d,"delayLeave",(function(t){f=t}))}}return i}}},ns=P({tag:String,moveClass:String},Go);delete ns.mode;var rs={props:ns,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var i=En(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,i(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,i=this.$slots.default||[],a=this.children=[],o=qo(this),s=0;sc&&(s.push(a=t.slice(c,i)),o.push(JSON.stringify(a)));var u=ra(r[1].trim());o.push("_s("+u+")"),s.push({"@binding":u}),c=i+r[0].length}return c\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Ms=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Ls="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+W.source+"]*",ks="((?:"+Ls+"\\:)?"+Ls+")",Ts=new RegExp("^<"+ks),Ds=/^\s*(\/?)>/,Ss=new RegExp("^<\\/"+ks+"[^>]*>"),Ys=/^]+>/i,xs=/^",""":'"',"&":"&"," ":"\n"," ":"\t","'":"'"},As=/&(?:lt|gt|quot|amp|#39);/g,$s=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Fs=b("pre,textarea",!0),Is=function(t,e){return t&&Fs(t)&&"\n"===e[0]};function Bs(t,e){var n=e?$s:As;return t.replace(n,(function(t){return Hs[t]}))}function Rs(t,e){var n,r,i=[],a=e.expectHTML,o=e.isUnaryTag||H,s=e.canBeLeftOpenTag||H,c=0;while(t){if(n=t,r&&Cs(r)){var u=0,l=r.toLowerCase(),d=Es[l]||(Es[l]=new RegExp("([\\s\\S]*?)(]*>)","i")),f=t.replace(d,(function(t,n,r){return u=r.length,Cs(l)||"noscript"===l||(n=n.replace(//g,"$1").replace(//g,"$1")),Is(l,n)&&(n=n.slice(1)),e.chars&&e.chars(n),""}));c+=t.length-f.length,t=f,k(l,c-u,c)}else{var h=t.indexOf("<");if(0===h){if(xs.test(t)){var p=t.indexOf("--\x3e");if(p>=0){e.shouldKeepComment&&e.comment(t.substring(4,p),c,c+p+3),w(p+3);continue}}if(Ps.test(t)){var m=t.indexOf("]>");if(m>=0){w(m+2);continue}}var b=t.match(Ys);if(b){w(b[0].length);continue}var v=t.match(Ss);if(v){var _=c;w(v[0].length),k(v[1],_,c);continue}var g=M();if(g){L(g),Is(g.tagName,t)&&w(1);continue}}var y=void 0,O=void 0,j=void 0;if(h>=0){O=t.slice(h);while(!Ss.test(O)&&!Ts.test(O)&&!xs.test(O)&&!Ps.test(O)){if(j=O.indexOf("<",1),j<0)break;h+=j,O=t.slice(h)}y=t.substring(0,h)}h<0&&(y=t),y&&w(y.length),e.chars&&y&&e.chars(y,c-y.length,c)}if(t===n){e.chars&&e.chars(t);break}}function w(e){c+=e,t=t.substring(e)}function M(){var e=t.match(Ts);if(e){var n,r,i={tagName:e[1],attrs:[],start:c};w(e[0].length);while(!(n=t.match(Ds))&&(r=t.match(Ms)||t.match(ws)))r.start=c,w(r[0].length),r.end=c,i.attrs.push(r);if(n)return i.unarySlash=n[1],w(n[0].length),i.end=c,i}}function L(t){var n=t.tagName,c=t.unarySlash;a&&("p"===r&&js(n)&&k(r),s(n)&&r===n&&k(n));for(var u=o(n)||!!c,l=t.attrs.length,d=new Array(l),f=0;f=0;o--)if(i[o].lowerCasedTag===s)break}else o=0;if(o>=0){for(var u=i.length-1;u>=o;u--)e.end&&e.end(i[u].tag,n,a);i.length=o,r=o&&i[o-1].tag}else"br"===s?e.start&&e.start(t,[],!0,n,a):"p"===s&&(e.start&&e.start(t,[],!1,n,a),e.end&&e.end(t,n,a))}k()}var Ns,Vs,zs,Ws,Us,Gs,Js,qs,Ks=/^@|^v-on:/,Xs=/^v-|^@|^:|^#/,Zs=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Qs=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,tc=/^\(|\)$/g,ec=/^\[.*\]$/,nc=/:(.*)$/,rc=/^:|^\.|^v-bind:/,ic=/\.[^.\]]+(?=[^\]]*$)/g,ac=/^v-slot(:|$)|^#/,oc=/[\r\n]/,sc=/[ \f\t\r\n]+/g,cc=j(gs.decode),uc="_empty_";function lc(t,e,n){return{type:1,tag:t,attrsList:e,attrsMap:xc(e),rawAttrsMap:{},parent:n,children:[]}}function dc(t,e){Ns=e.warn||aa,Gs=e.isPreTag||H,Js=e.mustUseProp||H,qs=e.getTagNamespace||H;var n=e.isReservedTag||H;(function(t){return!(!(t.component||t.attrsMap[":is"]||t.attrsMap["v-bind:is"])&&(t.attrsMap.is?n(t.attrsMap.is):n(t.tag)))}),zs=oa(e.modules,"transformNode"),Ws=oa(e.modules,"preTransformNode"),Us=oa(e.modules,"postTransformNode"),Vs=e.delimiters;var r,i,a=[],o=!1!==e.preserveWhitespace,s=e.whitespace,c=!1,u=!1;function l(t){if(d(t),c||t.processed||(t=pc(t,e)),a.length||t===r||r.if&&(t.elseif||t.else)&&jc(r,{exp:t.elseif,block:t}),i&&!t.forbidden)if(t.elseif||t.else)yc(t,i);else{if(t.slotScope){var n=t.slotTarget||'"default"';(i.scopedSlots||(i.scopedSlots={}))[n]=t}i.children.push(t),t.parent=i}t.children=t.children.filter((function(t){return!t.slotScope})),d(t),t.pre&&(c=!1),Gs(t.tag)&&(u=!1);for(var o=0;o|^function(?:\s+[\w$]+)?\s*\(/,eu=/\([^)]*?\);*$/,nu=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,ru={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},iu={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},au=function(t){return"if("+t+")return null;"},ou={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:au("$event.target !== $event.currentTarget"),ctrl:au("!$event.ctrlKey"),shift:au("!$event.shiftKey"),alt:au("!$event.altKey"),meta:au("!$event.metaKey"),left:au("'button' in $event && $event.button !== 0"),middle:au("'button' in $event && $event.button !== 1"),right:au("'button' in $event && $event.button !== 2")};function su(t,e){var n=e?"nativeOn:":"on:",r="",i="";for(var a in t){var o=cu(t[a]);t[a]&&t[a].dynamic?i+=a+","+o+",":r+='"'+a+'":'+o+","}return r="{"+r.slice(0,-1)+"}",i?n+"_d("+r+",["+i.slice(0,-1)+"])":n+r}function cu(t){if(!t)return"function(){}";if(Array.isArray(t))return"["+t.map((function(t){return cu(t)})).join(",")+"]";var e=nu.test(t.value),n=tu.test(t.value),r=nu.test(t.value.replace(eu,""));if(t.modifiers){var i="",a="",o=[];for(var s in t.modifiers)if(ou[s])a+=ou[s],ru[s]&&o.push(s);else if("exact"===s){var c=t.modifiers;a+=au(["ctrl","shift","alt","meta"].filter((function(t){return!c[t]})).map((function(t){return"$event."+t+"Key"})).join("||"))}else o.push(s);o.length&&(i+=uu(o)),a&&(i+=a);var u=e?"return "+t.value+".apply(null, arguments)":n?"return ("+t.value+").apply(null, arguments)":r?"return "+t.value:t.value;return"function($event){"+i+u+"}"}return e||n?t.value:"function($event){"+(r?"return "+t.value:t.value)+"}"}function uu(t){return"if(!$event.type.indexOf('key')&&"+t.map(lu).join("&&")+")return null;"}function lu(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var n=ru[t],r=iu[t];return"_k($event.keyCode,"+JSON.stringify(t)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}function du(t,e){t.wrapListeners=function(t){return"_g("+t+","+e.value+")"}}function fu(t,e){t.wrapData=function(n){return"_b("+n+",'"+t.tag+"',"+e.value+","+(e.modifiers&&e.modifiers.prop?"true":"false")+(e.modifiers&&e.modifiers.sync?",true":"")+")"}}var hu={on:du,bind:fu,cloak:E},pu=function(t){this.options=t,this.warn=t.warn||aa,this.transforms=oa(t.modules,"transformCode"),this.dataGenFns=oa(t.modules,"genData"),this.directives=P(P({},hu),t.directives);var e=t.isReservedTag||H;this.maybeComponent=function(t){return!!t.component||!e(t.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function mu(t,e){var n=new pu(e),r=t?"script"===t.tag?"null":bu(t,n):'_c("div")';return{render:"with(this){return "+r+"}",staticRenderFns:n.staticRenderFns}}function bu(t,e){if(t.parent&&(t.pre=t.pre||t.parent.pre),t.staticRoot&&!t.staticProcessed)return vu(t,e);if(t.once&&!t.onceProcessed)return _u(t,e);if(t.for&&!t.forProcessed)return Ou(t,e);if(t.if&&!t.ifProcessed)return gu(t,e);if("template"!==t.tag||t.slotTarget||e.pre){if("slot"===t.tag)return Hu(t,e);var n;if(t.component)n=Au(t.component,t,e);else{var r;(!t.plain||t.pre&&e.maybeComponent(t))&&(r=ju(t,e));var i=t.inlineTemplate?null:Su(t,e,!0);n="_c('"+t.tag+"'"+(r?","+r:"")+(i?","+i:"")+")"}for(var a=0;a>>0}function Tu(t){return 1===t.type&&("slot"===t.tag||t.children.some(Tu))}function Du(t,e){var n=t.attrsMap["slot-scope"];if(t.if&&!t.ifProcessed&&!n)return gu(t,e,Du,"null");if(t.for&&!t.forProcessed)return Ou(t,e,Du);var r=t.slotScope===uc?"":String(t.slotScope),i="function("+r+"){return "+("template"===t.tag?t.if&&n?"("+t.if+")?"+(Su(t,e)||"undefined")+":undefined":Su(t,e)||"undefined":bu(t,e))+"}",a=r?"":",proxy:true";return"{key:"+(t.slotTarget||'"default"')+",fn:"+i+a+"}"}function Su(t,e,n,r,i){var a=t.children;if(a.length){var o=a[0];if(1===a.length&&o.for&&"template"!==o.tag&&"slot"!==o.tag){var s=n?e.maybeComponent(o)?",1":",0":"";return""+(r||bu)(o,e)+s}var c=n?Yu(a,e.maybeComponent):0,u=i||Pu;return"["+a.map((function(t){return u(t,e)})).join(",")+"]"+(c?","+c:"")}}function Yu(t,e){for(var n=0,r=0;r':'
',Nu.innerHTML.indexOf(" ")>0}var Gu=!!Z&&Uu(!1),Ju=!!Z&&Uu(!0),qu=j((function(t){var e=pi(t);return e&&e.innerHTML})),Ku=kr.prototype.$mount;function Xu(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}kr.prototype.$mount=function(t,e){if(t=t&&pi(t),t===document.body||t===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"===typeof r)"#"===r.charAt(0)&&(r=qu(r));else{if(!r.nodeType)return this;r=r.innerHTML}else t&&(r=Xu(t));if(r){0;var i=Wu(r,{outputSourceRange:!1,shouldDecodeNewlines:Gu,shouldDecodeNewlinesForHref:Ju,delimiters:n.delimiters,comments:n.comments},this),a=i.render,o=i.staticRenderFns;n.render=a,n.staticRenderFns=o}}return Ku.call(this,t,e)},kr.compile=Wu,e["default"]=kr}.call(this,n("c8ba"))},a356:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration -var e=function(t){return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(t){return function(r,i,a,o){var s=e(r),c=n[t][e(r)];return 2===s&&(c=c[i?0:1]),c.replace(/%d/i,r)}},i=["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],a=t.defineLocale("ar-dz",{months:i,monthsShort:i,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:0,doy:4}});return a}))},a4b4:function(t,e,n){var r=n("342f");t.exports=/web0s(?!.*chrome)/i.test(r)},a4d3:function(t,e,n){"use strict";var r=n("23e7"),i=n("da84"),a=n("d066"),o=n("c430"),s=n("83ab"),c=n("4930"),u=n("fdbf"),l=n("d039"),d=n("5135"),f=n("e8b5"),h=n("861d"),p=n("825a"),m=n("7b0b"),b=n("fc6a"),v=n("c04e"),_=n("5c6c"),g=n("7c73"),y=n("df75"),O=n("241c"),j=n("057f"),w=n("7418"),M=n("06cf"),L=n("9bf2"),k=n("d1e7"),T=n("9112"),D=n("6eeb"),S=n("5692"),Y=n("f772"),x=n("d012"),P=n("90e3"),C=n("b622"),E=n("e538"),H=n("746f"),A=n("d44e"),$=n("69f3"),F=n("b727").forEach,I=Y("hidden"),B="Symbol",R="prototype",N=C("toPrimitive"),V=$.set,z=$.getterFor(B),W=Object[R],U=i.Symbol,G=a("JSON","stringify"),J=M.f,q=L.f,K=j.f,X=k.f,Z=S("symbols"),Q=S("op-symbols"),tt=S("string-to-symbol-registry"),et=S("symbol-to-string-registry"),nt=S("wks"),rt=i.QObject,it=!rt||!rt[R]||!rt[R].findChild,at=s&&l((function(){return 7!=g(q({},"a",{get:function(){return q(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=J(W,e);r&&delete W[e],q(t,e,n),r&&t!==W&&q(W,e,r)}:q,ot=function(t,e){var n=Z[t]=g(U[R]);return V(n,{type:B,tag:t,description:e}),s||(n.description=e),n},st=u?function(t){return"symbol"==typeof t}:function(t){return Object(t)instanceof U},ct=function(t,e,n){t===W&&ct(Q,e,n),p(t);var r=v(e,!0);return p(n),d(Z,r)?(n.enumerable?(d(t,I)&&t[I][r]&&(t[I][r]=!1),n=g(n,{enumerable:_(0,!1)})):(d(t,I)||q(t,I,_(1,{})),t[I][r]=!0),at(t,r,n)):q(t,r,n)},ut=function(t,e){p(t);var n=b(e),r=y(n).concat(pt(n));return F(r,(function(e){s&&!dt.call(n,e)||ct(t,e,n[e])})),t},lt=function(t,e){return void 0===e?g(t):ut(g(t),e)},dt=function(t){var e=v(t,!0),n=X.call(this,e);return!(this===W&&d(Z,e)&&!d(Q,e))&&(!(n||!d(this,e)||!d(Z,e)||d(this,I)&&this[I][e])||n)},ft=function(t,e){var n=b(t),r=v(e,!0);if(n!==W||!d(Z,r)||d(Q,r)){var i=J(n,r);return!i||!d(Z,r)||d(n,I)&&n[I][r]||(i.enumerable=!0),i}},ht=function(t){var e=K(b(t)),n=[];return F(e,(function(t){d(Z,t)||d(x,t)||n.push(t)})),n},pt=function(t){var e=t===W,n=K(e?Q:b(t)),r=[];return F(n,(function(t){!d(Z,t)||e&&!d(W,t)||r.push(Z[t])})),r};if(c||(U=function(){if(this instanceof U)throw TypeError("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,e=P(t),n=function(t){this===W&&n.call(Q,t),d(this,I)&&d(this[I],e)&&(this[I][e]=!1),at(this,e,_(1,t))};return s&&it&&at(W,e,{configurable:!0,set:n}),ot(e,t)},D(U[R],"toString",(function(){return z(this).tag})),D(U,"withoutSetter",(function(t){return ot(P(t),t)})),k.f=dt,L.f=ct,M.f=ft,O.f=j.f=ht,w.f=pt,E.f=function(t){return ot(C(t),t)},s&&(q(U[R],"description",{configurable:!0,get:function(){return z(this).description}}),o||D(W,"propertyIsEnumerable",dt,{unsafe:!0}))),r({global:!0,wrap:!0,forced:!c,sham:!c},{Symbol:U}),F(y(nt),(function(t){H(t)})),r({target:B,stat:!0,forced:!c},{for:function(t){var e=String(t);if(d(tt,e))return tt[e];var n=U(e);return tt[e]=n,et[n]=e,n},keyFor:function(t){if(!st(t))throw TypeError(t+" is not a symbol");if(d(et,t))return et[t]},useSetter:function(){it=!0},useSimple:function(){it=!1}}),r({target:"Object",stat:!0,forced:!c,sham:!s},{create:lt,defineProperty:ct,defineProperties:ut,getOwnPropertyDescriptor:ft}),r({target:"Object",stat:!0,forced:!c},{getOwnPropertyNames:ht,getOwnPropertySymbols:pt}),r({target:"Object",stat:!0,forced:l((function(){w.f(1)}))},{getOwnPropertySymbols:function(t){return w.f(m(t))}}),G){var mt=!c||l((function(){var t=U();return"[null]"!=G([t])||"{}"!=G({a:t})||"{}"!=G(Object(t))}));r({target:"JSON",stat:!0,forced:mt},{stringify:function(t,e,n){var r,i=[t],a=1;while(arguments.length>a)i.push(arguments[a++]);if(r=e,(h(e)||void 0!==t)&&!st(t))return f(e)||(e=function(t,e){if("function"==typeof r&&(e=r.call(this,t,e)),!st(e))return e}),i[1]=e,G.apply(null,i)}})}U[R][N]||T(U[R],N,U[R].valueOf),A(U,B),x[I]=!0},a630:function(t,e,n){var r=n("23e7"),i=n("4df4"),a=n("1c7e"),o=!a((function(t){Array.from(t)}));r({target:"Array",stat:!0,forced:o},{from:i})},a640:function(t,e,n){"use strict";var r=n("d039");t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){throw 1},1)}))}},a691:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},a723:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i})),n.d(e,"g",(function(){return a})),n.d(e,"l",(function(){return s})),n.d(e,"n",(function(){return c})),n.d(e,"q",(function(){return u})),n.d(e,"t",(function(){return l})),n.d(e,"u",(function(){return d})),n.d(e,"c",(function(){return f})),n.d(e,"d",(function(){return h})),n.d(e,"e",(function(){return p})),n.d(e,"f",(function(){return m})),n.d(e,"h",(function(){return b})),n.d(e,"i",(function(){return v})),n.d(e,"j",(function(){return _})),n.d(e,"k",(function(){return g})),n.d(e,"m",(function(){return y})),n.d(e,"p",(function(){return O})),n.d(e,"o",(function(){return j})),n.d(e,"r",(function(){return w})),n.d(e,"s",(function(){return M}));var r=void 0,i=Array,a=Boolean,o=Date,s=Function,c=Number,u=Object,l=RegExp,d=String,f=[i,s],h=[i,u],p=[i,u,d],m=[i,d],b=[a,c],v=[a,c,d],_=[a,d],g=[o,d],y=[s,d],O=[c,d],j=[c,u,d],w=[u,s],M=[u,d]},a79d:function(t,e,n){"use strict";var r=n("23e7"),i=n("c430"),a=n("fea9"),o=n("d039"),s=n("d066"),c=n("4840"),u=n("cdf9"),l=n("6eeb"),d=!!a&&o((function(){a.prototype["finally"].call({then:function(){}},(function(){}))}));r({target:"Promise",proto:!0,real:!0,forced:d},{finally:function(t){var e=c(this,s("Promise")),n="function"==typeof t;return this.then(n?function(n){return u(e,t()).then((function(){return n}))}:t,n?function(n){return u(e,t()).then((function(){throw n}))}:t)}}),i||"function"!=typeof a||a.prototype["finally"]||l(a.prototype,"finally",s("Promise").prototype["finally"])},a7fa:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; +var e=function(t){return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(t){return function(r,i,a,o){var s=e(r),c=n[t][e(r)];return 2===s&&(c=c[i?0:1]),c.replace(/%d/i,r)}},i=["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],a=t.defineLocale("ar-dz",{months:i,monthsShort:i,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:0,doy:4}});return a}))},a4b4:function(t,e,n){var r=n("342f");t.exports=/web0s(?!.*chrome)/i.test(r)},a4d3:function(t,e,n){"use strict";var r=n("23e7"),i=n("da84"),a=n("d066"),o=n("c430"),s=n("83ab"),c=n("4930"),u=n("fdbf"),l=n("d039"),d=n("5135"),f=n("e8b5"),h=n("861d"),p=n("825a"),m=n("7b0b"),b=n("fc6a"),v=n("c04e"),_=n("5c6c"),g=n("7c73"),y=n("df75"),O=n("241c"),j=n("057f"),w=n("7418"),M=n("06cf"),L=n("9bf2"),k=n("d1e7"),T=n("9112"),D=n("6eeb"),S=n("5692"),Y=n("f772"),x=n("d012"),P=n("90e3"),C=n("b622"),E=n("e538"),H=n("746f"),A=n("d44e"),$=n("69f3"),F=n("b727").forEach,I=Y("hidden"),B="Symbol",R="prototype",N=C("toPrimitive"),V=$.set,z=$.getterFor(B),W=Object[R],U=i.Symbol,G=a("JSON","stringify"),J=M.f,q=L.f,K=j.f,X=k.f,Z=S("symbols"),Q=S("op-symbols"),tt=S("string-to-symbol-registry"),et=S("symbol-to-string-registry"),nt=S("wks"),rt=i.QObject,it=!rt||!rt[R]||!rt[R].findChild,at=s&&l((function(){return 7!=g(q({},"a",{get:function(){return q(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=J(W,e);r&&delete W[e],q(t,e,n),r&&t!==W&&q(W,e,r)}:q,ot=function(t,e){var n=Z[t]=g(U[R]);return V(n,{type:B,tag:t,description:e}),s||(n.description=e),n},st=u?function(t){return"symbol"==typeof t}:function(t){return Object(t)instanceof U},ct=function(t,e,n){t===W&&ct(Q,e,n),p(t);var r=v(e,!0);return p(n),d(Z,r)?(n.enumerable?(d(t,I)&&t[I][r]&&(t[I][r]=!1),n=g(n,{enumerable:_(0,!1)})):(d(t,I)||q(t,I,_(1,{})),t[I][r]=!0),at(t,r,n)):q(t,r,n)},ut=function(t,e){p(t);var n=b(e),r=y(n).concat(pt(n));return F(r,(function(e){s&&!dt.call(n,e)||ct(t,e,n[e])})),t},lt=function(t,e){return void 0===e?g(t):ut(g(t),e)},dt=function(t){var e=v(t,!0),n=X.call(this,e);return!(this===W&&d(Z,e)&&!d(Q,e))&&(!(n||!d(this,e)||!d(Z,e)||d(this,I)&&this[I][e])||n)},ft=function(t,e){var n=b(t),r=v(e,!0);if(n!==W||!d(Z,r)||d(Q,r)){var i=J(n,r);return!i||!d(Z,r)||d(n,I)&&n[I][r]||(i.enumerable=!0),i}},ht=function(t){var e=K(b(t)),n=[];return F(e,(function(t){d(Z,t)||d(x,t)||n.push(t)})),n},pt=function(t){var e=t===W,n=K(e?Q:b(t)),r=[];return F(n,(function(t){!d(Z,t)||e&&!d(W,t)||r.push(Z[t])})),r};if(c||(U=function(){if(this instanceof U)throw TypeError("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,e=P(t),n=function(t){this===W&&n.call(Q,t),d(this,I)&&d(this[I],e)&&(this[I][e]=!1),at(this,e,_(1,t))};return s&&it&&at(W,e,{configurable:!0,set:n}),ot(e,t)},D(U[R],"toString",(function(){return z(this).tag})),D(U,"withoutSetter",(function(t){return ot(P(t),t)})),k.f=dt,L.f=ct,M.f=ft,O.f=j.f=ht,w.f=pt,E.f=function(t){return ot(C(t),t)},s&&(q(U[R],"description",{configurable:!0,get:function(){return z(this).description}}),o||D(W,"propertyIsEnumerable",dt,{unsafe:!0}))),r({global:!0,wrap:!0,forced:!c,sham:!c},{Symbol:U}),F(y(nt),(function(t){H(t)})),r({target:B,stat:!0,forced:!c},{for:function(t){var e=String(t);if(d(tt,e))return tt[e];var n=U(e);return tt[e]=n,et[n]=e,n},keyFor:function(t){if(!st(t))throw TypeError(t+" is not a symbol");if(d(et,t))return et[t]},useSetter:function(){it=!0},useSimple:function(){it=!1}}),r({target:"Object",stat:!0,forced:!c,sham:!s},{create:lt,defineProperty:ct,defineProperties:ut,getOwnPropertyDescriptor:ft}),r({target:"Object",stat:!0,forced:!c},{getOwnPropertyNames:ht,getOwnPropertySymbols:pt}),r({target:"Object",stat:!0,forced:l((function(){w.f(1)}))},{getOwnPropertySymbols:function(t){return w.f(m(t))}}),G){var mt=!c||l((function(){var t=U();return"[null]"!=G([t])||"{}"!=G({a:t})||"{}"!=G(Object(t))}));r({target:"JSON",stat:!0,forced:mt},{stringify:function(t,e,n){var r,i=[t],a=1;while(arguments.length>a)i.push(arguments[a++]);if(r=e,(h(e)||void 0!==t)&&!st(t))return f(e)||(e=function(t,e){if("function"==typeof r&&(e=r.call(this,t,e)),!st(e))return e}),i[1]=e,G.apply(null,i)}})}U[R][N]||T(U[R],N,U[R].valueOf),A(U,B),x[I]=!0},a630:function(t,e,n){var r=n("23e7"),i=n("4df4"),a=n("1c7e"),o=!a((function(t){Array.from(t)}));r({target:"Array",stat:!0,forced:o},{from:i})},a640:function(t,e,n){"use strict";var r=n("d039");t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){throw 1},1)}))}},a691:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},a723:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i})),n.d(e,"g",(function(){return a})),n.d(e,"l",(function(){return s})),n.d(e,"n",(function(){return c})),n.d(e,"q",(function(){return u})),n.d(e,"t",(function(){return l})),n.d(e,"u",(function(){return d})),n.d(e,"c",(function(){return f})),n.d(e,"d",(function(){return h})),n.d(e,"e",(function(){return p})),n.d(e,"f",(function(){return m})),n.d(e,"h",(function(){return b})),n.d(e,"i",(function(){return v})),n.d(e,"j",(function(){return _})),n.d(e,"k",(function(){return g})),n.d(e,"m",(function(){return y})),n.d(e,"p",(function(){return O})),n.d(e,"o",(function(){return j})),n.d(e,"r",(function(){return w})),n.d(e,"s",(function(){return M}));var r=void 0,i=Array,a=Boolean,o=Date,s=Function,c=Number,u=Object,l=RegExp,d=String,f=[i,s],h=[i,u],p=[i,u,d],m=[i,d],b=[a,c],v=[a,c,d],_=[a,d],g=[o,d],y=[s,d],O=[c,d],j=[c,u,d],w=[u,s],M=[u,d]},a79d:function(t,e,n){"use strict";var r=n("23e7"),i=n("c430"),a=n("fea9"),o=n("d039"),s=n("d066"),c=n("4840"),u=n("cdf9"),l=n("6eeb"),d=!!a&&o((function(){a.prototype["finally"].call({then:function(){}},(function(){}))}));if(r({target:"Promise",proto:!0,real:!0,forced:d},{finally:function(t){var e=c(this,s("Promise")),n="function"==typeof t;return this.then(n?function(n){return u(e,t()).then((function(){return n}))}:t,n?function(n){return u(e,t()).then((function(){throw n}))}:t)}}),!i&&"function"==typeof a){var f=s("Promise").prototype["finally"];a.prototype["finally"]!==f&&l(a.prototype,"finally",f,{unsafe:!0})}},a7fa:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration var e=t.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}});return e}))},a8c8:function(t,e,n){"use strict";n.d(e,"e",(function(){return r})),n.d(e,"d",(function(){return i})),n.d(e,"a",(function(){return a})),n.d(e,"b",(function(){return o})),n.d(e,"c",(function(){return s})),n.d(e,"f",(function(){return c})),n.d(e,"g",(function(){return u}));var r=Math.min,i=Math.max,a=Math.abs,o=Math.ceil,s=Math.floor,c=Math.pow,u=Math.round},a925:function(t,e,n){"use strict"; /*! - * vue-i18n v8.24.3 + * vue-i18n v8.24.4 * (c) 2021 kazuya kawaguchi * Released under the MIT License. - */var r=["compactDisplay","currency","currencyDisplay","currencySign","localeMatcher","notation","numberingSystem","signDisplay","style","unit","unitDisplay","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits"];function i(t,e){"undefined"!==typeof console&&(console.warn("[vue-i18n] "+t),e&&console.warn(e.stack))}function a(t,e){"undefined"!==typeof console&&(console.error("[vue-i18n] "+t),e&&console.error(e.stack))}var o=Array.isArray;function s(t){return null!==t&&"object"===typeof t}function c(t){return"boolean"===typeof t}function u(t){return"string"===typeof t}var l=Object.prototype.toString,d="[object Object]";function f(t){return l.call(t)===d}function h(t){return null===t||void 0===t}function p(t){return"function"===typeof t}function m(){var t=[],e=arguments.length;while(e--)t[e]=arguments[e];var n=null,r=null;return 1===t.length?s(t[0])||o(t[0])?r=t[0]:"string"===typeof t[0]&&(n=t[0]):2===t.length&&("string"===typeof t[0]&&(n=t[0]),(s(t[1])||o(t[1]))&&(r=t[1])),{locale:n,params:r}}function b(t){return JSON.parse(JSON.stringify(t))}function v(t,e){if(t.delete(e))return t}function _(t,e){return!!~t.indexOf(e)}var g=Object.prototype.hasOwnProperty;function y(t,e){return g.call(t,e)}function O(t){for(var e=arguments,n=Object(t),r=1;r/g,">").replace(/"/g,""").replace(/'/g,"'")}function M(t){return null!=t&&Object.keys(t).forEach((function(e){"string"==typeof t[e]&&(t[e]=w(t[e]))})),t}function L(t){t.prototype.hasOwnProperty("$i18n")||Object.defineProperty(t.prototype,"$i18n",{get:function(){return this._i18n}}),t.prototype.$t=function(t){var e=[],n=arguments.length-1;while(n-- >0)e[n]=arguments[n+1];var r=this.$i18n;return r._t.apply(r,[t,r.locale,r._getMessages(),this].concat(e))},t.prototype.$tc=function(t,e){var n=[],r=arguments.length-2;while(r-- >0)n[r]=arguments[r+2];var i=this.$i18n;return i._tc.apply(i,[t,i.locale,i._getMessages(),this,e].concat(n))},t.prototype.$te=function(t,e){var n=this.$i18n;return n._te(t,n.locale,n._getMessages(),e)},t.prototype.$d=function(t){var e,n=[],r=arguments.length-1;while(r-- >0)n[r]=arguments[r+1];return(e=this.$i18n).d.apply(e,[t].concat(n))},t.prototype.$n=function(t){var e,n=[],r=arguments.length-1;while(r-- >0)n[r]=arguments[r+1];return(e=this.$i18n).n.apply(e,[t].concat(n))}}var k={beforeCreate:function(){var t=this.$options;if(t.i18n=t.i18n||(t.__i18n?{}:null),t.i18n)if(t.i18n instanceof Mt){if(t.__i18n)try{var e=t.i18n&&t.i18n.messages?t.i18n.messages:{};t.__i18n.forEach((function(t){e=O(e,JSON.parse(t))})),Object.keys(e).forEach((function(n){t.i18n.mergeLocaleMessage(n,e[n])}))}catch(o){0}this._i18n=t.i18n,this._i18nWatcher=this._i18n.watchI18nData()}else if(f(t.i18n)){var n=this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof Mt?this.$root.$i18n:null;if(n&&(t.i18n.root=this.$root,t.i18n.formatter=n.formatter,t.i18n.fallbackLocale=n.fallbackLocale,t.i18n.formatFallbackMessages=n.formatFallbackMessages,t.i18n.silentTranslationWarn=n.silentTranslationWarn,t.i18n.silentFallbackWarn=n.silentFallbackWarn,t.i18n.pluralizationRules=n.pluralizationRules,t.i18n.preserveDirectiveContent=n.preserveDirectiveContent,this.$root.$once("hook:beforeDestroy",(function(){t.i18n.root=null,t.i18n.formatter=null,t.i18n.fallbackLocale=null,t.i18n.formatFallbackMessages=null,t.i18n.silentTranslationWarn=null,t.i18n.silentFallbackWarn=null,t.i18n.pluralizationRules=null,t.i18n.preserveDirectiveContent=null}))),t.__i18n)try{var r=t.i18n&&t.i18n.messages?t.i18n.messages:{};t.__i18n.forEach((function(t){r=O(r,JSON.parse(t))})),t.i18n.messages=r}catch(o){0}var i=t.i18n,a=i.sharedMessages;a&&f(a)&&(t.i18n.messages=O(t.i18n.messages,a)),this._i18n=new Mt(t.i18n),this._i18nWatcher=this._i18n.watchI18nData(),(void 0===t.i18n.sync||t.i18n.sync)&&(this._localeWatcher=this.$i18n.watchLocale()),n&&n.onComponentInstanceCreated(this._i18n)}else 0;else this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof Mt?this._i18n=this.$root.$i18n:t.parent&&t.parent.$i18n&&t.parent.$i18n instanceof Mt&&(this._i18n=t.parent.$i18n)},beforeMount:function(){var t=this.$options;t.i18n=t.i18n||(t.__i18n?{}:null),t.i18n?(t.i18n instanceof Mt||f(t.i18n))&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0):(this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof Mt||t.parent&&t.parent.$i18n&&t.parent.$i18n instanceof Mt)&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0)},mounted:function(){this!==this.$root&&this.$options.__INTLIFY_META__&&this.$el&&this.$el.setAttribute("data-intlify",this.$options.__INTLIFY_META__)},beforeDestroy:function(){if(this._i18n){var t=this;this.$nextTick((function(){t._subscribing&&(t._i18n.unsubscribeDataChanging(t),delete t._subscribing),t._i18nWatcher&&(t._i18nWatcher(),t._i18n.destroyVM(),delete t._i18nWatcher),t._localeWatcher&&(t._localeWatcher(),delete t._localeWatcher)}))}}},T={name:"i18n",functional:!0,props:{tag:{type:[String,Boolean,Object],default:"span"},path:{type:String,required:!0},locale:{type:String},places:{type:[Array,Object]}},render:function(t,e){var n=e.data,r=e.parent,i=e.props,a=e.slots,o=r.$i18n;if(o){var s=i.path,c=i.locale,u=i.places,l=a(),d=o.i(s,c,D(l)||u?S(l.default,u):l),f=i.tag&&!0!==i.tag||!1===i.tag?i.tag:"span";return f?t(f,n,d):d}}};function D(t){var e;for(e in t)if("default"!==e)return!1;return Boolean(e)}function S(t,e){var n=e?Y(e):{};if(!t)return n;t=t.filter((function(t){return t.tag||""!==t.text.trim()}));var r=t.every(C);return t.reduce(r?x:P,n)}function Y(t){return Array.isArray(t)?t.reduce(P,{}):Object.assign({},t)}function x(t,e){return e.data&&e.data.attrs&&e.data.attrs.place&&(t[e.data.attrs.place]=e),t}function P(t,e,n){return t[n]=e,t}function C(t){return Boolean(t.data&&t.data.attrs&&t.data.attrs.place)}var E,H={name:"i18n-n",functional:!0,props:{tag:{type:[String,Boolean,Object],default:"span"},value:{type:Number,required:!0},format:{type:[String,Object]},locale:{type:String}},render:function(t,e){var n=e.props,i=e.parent,a=e.data,o=i.$i18n;if(!o)return null;var c=null,l=null;u(n.format)?c=n.format:s(n.format)&&(n.format.key&&(c=n.format.key),l=Object.keys(n.format).reduce((function(t,e){var i;return _(r,e)?Object.assign({},t,(i={},i[e]=n.format[e],i)):t}),null));var d=n.locale||o.locale,f=o._ntp(n.value,d,c,l),h=f.map((function(t,e){var n,r=a.scopedSlots&&a.scopedSlots[t.type];return r?r((n={},n[t.type]=t.value,n.index=e,n.parts=f,n)):t.value})),p=n.tag&&!0!==n.tag||!1===n.tag?n.tag:"span";return p?t(p,{attrs:a.attrs,class:a["class"],staticClass:a.staticClass},h):h}};function A(t,e,n){I(t,n)&&R(t,e,n)}function $(t,e,n,r){if(I(t,n)){var i=n.context.$i18n;B(t,n)&&j(e.value,e.oldValue)&&j(t._localeMessage,i.getLocaleMessage(i.locale))||R(t,e,n)}}function F(t,e,n,r){var a=n.context;if(a){var o=n.context.$i18n||{};e.modifiers.preserve||o.preserveDirectiveContent||(t.textContent=""),t._vt=void 0,delete t["_vt"],t._locale=void 0,delete t["_locale"],t._localeMessage=void 0,delete t["_localeMessage"]}else i("Vue instance does not exists in VNode context")}function I(t,e){var n=e.context;return n?!!n.$i18n||(i("VueI18n instance does not exists in Vue instance"),!1):(i("Vue instance does not exists in VNode context"),!1)}function B(t,e){var n=e.context;return t._locale===n.$i18n.locale}function R(t,e,n){var r,a,o=e.value,s=N(o),c=s.path,u=s.locale,l=s.args,d=s.choice;if(c||u||l)if(c){var f=n.context;t._vt=t.textContent=null!=d?(r=f.$i18n).tc.apply(r,[c,d].concat(V(u,l))):(a=f.$i18n).t.apply(a,[c].concat(V(u,l))),t._locale=f.$i18n.locale,t._localeMessage=f.$i18n.getLocaleMessage(f.$i18n.locale)}else i("`path` is required in v-t directive");else i("value type not supported")}function N(t){var e,n,r,i;return u(t)?e=t:f(t)&&(e=t.path,n=t.locale,r=t.args,i=t.choice),{path:e,locale:n,args:r,choice:i}}function V(t,e){var n=[];return t&&n.push(t),e&&(Array.isArray(e)||f(e))&&n.push(e),n}function z(t){z.installed=!0,E=t;E.version&&Number(E.version.split(".")[0]);L(E),E.mixin(k),E.directive("t",{bind:A,update:$,unbind:F}),E.component(T.name,T),E.component(H.name,H);var e=E.config.optionMergeStrategies;e.i18n=function(t,e){return void 0===e?t:e}}var W=function(){this._caches=Object.create(null)};W.prototype.interpolate=function(t,e){if(!e)return[t];var n=this._caches[t];return n||(n=J(t),this._caches[t]=n),q(n,e)};var U=/^(?:\d)+/,G=/^(?:\w)+/;function J(t){var e=[],n=0,r="";while(n0)d--,l=it,f[K]();else{if(d=0,void 0===n)return!1;if(n=pt(n),!1===n)return!1;f[X]()}};while(null!==l)if(u++,e=t[u],"\\"!==e||!h()){if(i=ht(e),s=ut[l],a=s[i]||s["else"]||ct,a===ct)return;if(l=a[0],o=f[a[1]],o&&(r=a[2],r=void 0===r?e:r,!1===o()))return;if(l===st)return c}}var bt=function(){this._cache=Object.create(null)};bt.prototype.parsePath=function(t){var e=this._cache[t];return e||(e=mt(t),e&&(this._cache[t]=e)),e||[]},bt.prototype.getPathValue=function(t,e){if(!s(t))return null;var n=this.parsePath(e);if(0===n.length)return null;var r=n.length,i=t,a=0;while(a/,gt=/(?:@(?:\.[a-z]+)?:(?:[\w\-_|.]+|\([\w\-_|.]+\)))/g,yt=/^@(?:\.([a-z]+))?:/,Ot=/[()]/g,jt={upper:function(t){return t.toLocaleUpperCase()},lower:function(t){return t.toLocaleLowerCase()},capitalize:function(t){return""+t.charAt(0).toLocaleUpperCase()+t.substr(1)}},wt=new W,Mt=function(t){var e=this;void 0===t&&(t={}),!E&&"undefined"!==typeof window&&window.Vue&&z(window.Vue);var n=t.locale||"en-US",r=!1!==t.fallbackLocale&&(t.fallbackLocale||"en-US"),i=t.messages||{},a=t.dateTimeFormats||{},o=t.numberFormats||{};this._vm=null,this._formatter=t.formatter||wt,this._modifiers=t.modifiers||{},this._missing=t.missing||null,this._root=t.root||null,this._sync=void 0===t.sync||!!t.sync,this._fallbackRoot=void 0===t.fallbackRoot||!!t.fallbackRoot,this._formatFallbackMessages=void 0!==t.formatFallbackMessages&&!!t.formatFallbackMessages,this._silentTranslationWarn=void 0!==t.silentTranslationWarn&&t.silentTranslationWarn,this._silentFallbackWarn=void 0!==t.silentFallbackWarn&&!!t.silentFallbackWarn,this._dateTimeFormatters={},this._numberFormatters={},this._path=new bt,this._dataListeners=new Set,this._componentInstanceCreatedListener=t.componentInstanceCreatedListener||null,this._preserveDirectiveContent=void 0!==t.preserveDirectiveContent&&!!t.preserveDirectiveContent,this.pluralizationRules=t.pluralizationRules||{},this._warnHtmlInMessage=t.warnHtmlInMessage||"off",this._postTranslation=t.postTranslation||null,this._escapeParameterHtml=t.escapeParameterHtml||!1,this.getChoiceIndex=function(t,n){var r=Object.getPrototypeOf(e);if(r&&r.getChoiceIndex){var i=r.getChoiceIndex;return i.call(e,t,n)}var a=function(t,e){return t=Math.abs(t),2===e?t?t>1?1:0:1:t?Math.min(t,2):0};return e.locale in e.pluralizationRules?e.pluralizationRules[e.locale].apply(e,[t,n]):a(t,n)},this._exist=function(t,n){return!(!t||!n)&&(!h(e._path.getPathValue(t,n))||!!t[n])},"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||Object.keys(i).forEach((function(t){e._checkLocaleMessage(t,e._warnHtmlInMessage,i[t])})),this._initVM({locale:n,fallbackLocale:r,messages:i,dateTimeFormats:a,numberFormats:o})},Lt={vm:{configurable:!0},messages:{configurable:!0},dateTimeFormats:{configurable:!0},numberFormats:{configurable:!0},availableLocales:{configurable:!0},locale:{configurable:!0},fallbackLocale:{configurable:!0},formatFallbackMessages:{configurable:!0},missing:{configurable:!0},formatter:{configurable:!0},silentTranslationWarn:{configurable:!0},silentFallbackWarn:{configurable:!0},preserveDirectiveContent:{configurable:!0},warnHtmlInMessage:{configurable:!0},postTranslation:{configurable:!0}};Mt.prototype._checkLocaleMessage=function(t,e,n){var r=[],s=function(t,e,n,r){if(f(n))Object.keys(n).forEach((function(i){var a=n[i];f(a)?(r.push(i),r.push("."),s(t,e,a,r),r.pop(),r.pop()):(r.push(i),s(t,e,a,r),r.pop())}));else if(o(n))n.forEach((function(n,i){f(n)?(r.push("["+i+"]"),r.push("."),s(t,e,n,r),r.pop(),r.pop()):(r.push("["+i+"]"),s(t,e,n,r),r.pop())}));else if(u(n)){var c=_t.test(n);if(c){var l="Detected HTML in message '"+n+"' of keypath '"+r.join("")+"' at '"+e+"'. Consider component interpolation with '' to avoid XSS. See https://bit.ly/2ZqJzkp";"warn"===t?i(l):"error"===t&&a(l)}}};s(e,t,n,r)},Mt.prototype._initVM=function(t){var e=E.config.silent;E.config.silent=!0,this._vm=new E({data:t}),E.config.silent=e},Mt.prototype.destroyVM=function(){this._vm.$destroy()},Mt.prototype.subscribeDataChanging=function(t){this._dataListeners.add(t)},Mt.prototype.unsubscribeDataChanging=function(t){v(this._dataListeners,t)},Mt.prototype.watchI18nData=function(){var t=this;return this._vm.$watch("$data",(function(){t._dataListeners.forEach((function(t){E.nextTick((function(){t&&t.$forceUpdate()}))}))}),{deep:!0})},Mt.prototype.watchLocale=function(){if(!this._sync||!this._root)return null;var t=this._vm;return this._root.$i18n.vm.$watch("locale",(function(e){t.$set(t,"locale",e),t.$forceUpdate()}),{immediate:!0})},Mt.prototype.onComponentInstanceCreated=function(t){this._componentInstanceCreatedListener&&this._componentInstanceCreatedListener(t,this)},Lt.vm.get=function(){return this._vm},Lt.messages.get=function(){return b(this._getMessages())},Lt.dateTimeFormats.get=function(){return b(this._getDateTimeFormats())},Lt.numberFormats.get=function(){return b(this._getNumberFormats())},Lt.availableLocales.get=function(){return Object.keys(this.messages).sort()},Lt.locale.get=function(){return this._vm.locale},Lt.locale.set=function(t){this._vm.$set(this._vm,"locale",t)},Lt.fallbackLocale.get=function(){return this._vm.fallbackLocale},Lt.fallbackLocale.set=function(t){this._localeChainCache={},this._vm.$set(this._vm,"fallbackLocale",t)},Lt.formatFallbackMessages.get=function(){return this._formatFallbackMessages},Lt.formatFallbackMessages.set=function(t){this._formatFallbackMessages=t},Lt.missing.get=function(){return this._missing},Lt.missing.set=function(t){this._missing=t},Lt.formatter.get=function(){return this._formatter},Lt.formatter.set=function(t){this._formatter=t},Lt.silentTranslationWarn.get=function(){return this._silentTranslationWarn},Lt.silentTranslationWarn.set=function(t){this._silentTranslationWarn=t},Lt.silentFallbackWarn.get=function(){return this._silentFallbackWarn},Lt.silentFallbackWarn.set=function(t){this._silentFallbackWarn=t},Lt.preserveDirectiveContent.get=function(){return this._preserveDirectiveContent},Lt.preserveDirectiveContent.set=function(t){this._preserveDirectiveContent=t},Lt.warnHtmlInMessage.get=function(){return this._warnHtmlInMessage},Lt.warnHtmlInMessage.set=function(t){var e=this,n=this._warnHtmlInMessage;if(this._warnHtmlInMessage=t,n!==t&&("warn"===t||"error"===t)){var r=this._getMessages();Object.keys(r).forEach((function(t){e._checkLocaleMessage(t,e._warnHtmlInMessage,r[t])}))}},Lt.postTranslation.get=function(){return this._postTranslation},Lt.postTranslation.set=function(t){this._postTranslation=t},Mt.prototype._getMessages=function(){return this._vm.messages},Mt.prototype._getDateTimeFormats=function(){return this._vm.dateTimeFormats},Mt.prototype._getNumberFormats=function(){return this._vm.numberFormats},Mt.prototype._warnDefault=function(t,e,n,r,i,a){if(!h(n))return n;if(this._missing){var o=this._missing.apply(null,[t,e,r,i]);if(u(o))return o}else 0;if(this._formatFallbackMessages){var s=m.apply(void 0,i);return this._render(e,a,s.params,e)}return e},Mt.prototype._isFallbackRoot=function(t){return!t&&!h(this._root)&&this._fallbackRoot},Mt.prototype._isSilentFallbackWarn=function(t){return this._silentFallbackWarn instanceof RegExp?this._silentFallbackWarn.test(t):this._silentFallbackWarn},Mt.prototype._isSilentFallback=function(t,e){return this._isSilentFallbackWarn(e)&&(this._isFallbackRoot()||t!==this.fallbackLocale)},Mt.prototype._isSilentTranslationWarn=function(t){return this._silentTranslationWarn instanceof RegExp?this._silentTranslationWarn.test(t):this._silentTranslationWarn},Mt.prototype._interpolate=function(t,e,n,r,i,a,s){if(!e)return null;var c,l=this._path.getPathValue(e,n);if(o(l)||f(l))return l;if(h(l)){if(!f(e))return null;if(c=e[n],!u(c)&&!p(c))return null}else{if(!u(l)&&!p(l))return null;c=l}return u(c)&&(c.indexOf("@:")>=0||c.indexOf("@.")>=0)&&(c=this._link(t,e,c,r,"raw",a,s)),this._render(c,i,a,n)},Mt.prototype._link=function(t,e,n,r,i,a,s){var c=n,u=c.match(gt);for(var l in u)if(u.hasOwnProperty(l)){var d=u[l],f=d.match(yt),h=f[0],p=f[1],m=d.replace(h,"").replace(Ot,"");if(_(s,m))return c;s.push(m);var b=this._interpolate(t,e,m,r,"raw"===i?"string":i,"raw"===i?void 0:a,s);if(this._isFallbackRoot(b)){if(!this._root)throw Error("unexpected error");var v=this._root.$i18n;b=v._translate(v._getMessages(),v.locale,v.fallbackLocale,m,r,i,a)}b=this._warnDefault(t,m,b,r,o(a)?a:[a],i),this._modifiers.hasOwnProperty(p)?b=this._modifiers[p](b):jt.hasOwnProperty(p)&&(b=jt[p](b)),s.pop(),c=b?c.replace(d,b):c}return c},Mt.prototype._createMessageContext=function(t){var e=o(t)?t:[],n=s(t)?t:{},r=function(t){return e[t]},i=function(t){return n[t]};return{list:r,named:i}},Mt.prototype._render=function(t,e,n,r){if(p(t))return t(this._createMessageContext(n));var i=this._formatter.interpolate(t,n,r);return i||(i=wt.interpolate(t,n,r)),"string"!==e||u(i)?i:i.join("")},Mt.prototype._appendItemToChain=function(t,e,n){var r=!1;return _(t,e)||(r=!0,e&&(r="!"!==e[e.length-1],e=e.replace(/!/g,""),t.push(e),n&&n[e]&&(r=n[e]))),r},Mt.prototype._appendLocaleToChain=function(t,e,n){var r,i=e.split("-");do{var a=i.join("-");r=this._appendItemToChain(t,a,n),i.splice(-1,1)}while(i.length&&!0===r);return r},Mt.prototype._appendBlockToChain=function(t,e,n){for(var r=!0,i=0;i0)a[o]=arguments[o+4];if(!t)return"";var s=m.apply(void 0,a);this._escapeParameterHtml&&(s.params=M(s.params));var c=s.locale||e,u=this._translate(n,c,this.fallbackLocale,t,r,"string",s.params);if(this._isFallbackRoot(u)){if(!this._root)throw Error("unexpected error");return(i=this._root).$t.apply(i,[t].concat(a))}return u=this._warnDefault(c,t,u,r,a,"string"),this._postTranslation&&null!==u&&void 0!==u&&(u=this._postTranslation(u,t)),u},Mt.prototype.t=function(t){var e,n=[],r=arguments.length-1;while(r-- >0)n[r]=arguments[r+1];return(e=this)._t.apply(e,[t,this.locale,this._getMessages(),null].concat(n))},Mt.prototype._i=function(t,e,n,r,i){var a=this._translate(n,e,this.fallbackLocale,t,r,"raw",i);if(this._isFallbackRoot(a)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.i(t,e,i)}return this._warnDefault(e,t,a,r,[i],"raw")},Mt.prototype.i=function(t,e,n){return t?(u(e)||(e=this.locale),this._i(t,e,this._getMessages(),null,n)):""},Mt.prototype._tc=function(t,e,n,r,i){var a,o=[],s=arguments.length-5;while(s-- >0)o[s]=arguments[s+5];if(!t)return"";void 0===i&&(i=1);var c={count:i,n:i},u=m.apply(void 0,o);return u.params=Object.assign(c,u.params),o=null===u.locale?[u.params]:[u.locale,u.params],this.fetchChoice((a=this)._t.apply(a,[t,e,n,r].concat(o)),i)},Mt.prototype.fetchChoice=function(t,e){if(!t||!u(t))return null;var n=t.split("|");return e=this.getChoiceIndex(e,n.length),n[e]?n[e].trim():t},Mt.prototype.tc=function(t,e){var n,r=[],i=arguments.length-2;while(i-- >0)r[i]=arguments[i+2];return(n=this)._tc.apply(n,[t,this.locale,this._getMessages(),null,e].concat(r))},Mt.prototype._te=function(t,e,n){var r=[],i=arguments.length-3;while(i-- >0)r[i]=arguments[i+3];var a=m.apply(void 0,r).locale||e;return this._exist(n[a],t)},Mt.prototype.te=function(t,e){return this._te(t,this.locale,this._getMessages(),e)},Mt.prototype.getLocaleMessage=function(t){return b(this._vm.messages[t]||{})},Mt.prototype.setLocaleMessage=function(t,e){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(t,this._warnHtmlInMessage,e),this._vm.$set(this._vm.messages,t,e)},Mt.prototype.mergeLocaleMessage=function(t,e){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(t,this._warnHtmlInMessage,e),this._vm.$set(this._vm.messages,t,O("undefined"!==typeof this._vm.messages[t]&&Object.keys(this._vm.messages[t]).length?this._vm.messages[t]:{},e))},Mt.prototype.getDateTimeFormat=function(t){return b(this._vm.dateTimeFormats[t]||{})},Mt.prototype.setDateTimeFormat=function(t,e){this._vm.$set(this._vm.dateTimeFormats,t,e),this._clearDateTimeFormat(t,e)},Mt.prototype.mergeDateTimeFormat=function(t,e){this._vm.$set(this._vm.dateTimeFormats,t,O(this._vm.dateTimeFormats[t]||{},e)),this._clearDateTimeFormat(t,e)},Mt.prototype._clearDateTimeFormat=function(t,e){for(var n in e){var r=t+"__"+n;this._dateTimeFormatters.hasOwnProperty(r)&&delete this._dateTimeFormatters[r]}},Mt.prototype._localizeDateTime=function(t,e,n,r,i){for(var a=e,o=r[a],s=this._getLocaleChain(e,n),c=0;c0)e[n]=arguments[n+1];var r=this.locale,i=null;return 1===e.length?u(e[0])?i=e[0]:s(e[0])&&(e[0].locale&&(r=e[0].locale),e[0].key&&(i=e[0].key)):2===e.length&&(u(e[0])&&(i=e[0]),u(e[1])&&(r=e[1])),this._d(t,r,i)},Mt.prototype.getNumberFormat=function(t){return b(this._vm.numberFormats[t]||{})},Mt.prototype.setNumberFormat=function(t,e){this._vm.$set(this._vm.numberFormats,t,e),this._clearNumberFormat(t,e)},Mt.prototype.mergeNumberFormat=function(t,e){this._vm.$set(this._vm.numberFormats,t,O(this._vm.numberFormats[t]||{},e)),this._clearNumberFormat(t,e)},Mt.prototype._clearNumberFormat=function(t,e){for(var n in e){var r=t+"__"+n;this._numberFormatters.hasOwnProperty(r)&&delete this._numberFormatters[r]}},Mt.prototype._getNumberFormatter=function(t,e,n,r,i,a){for(var o=e,s=r[o],c=this._getLocaleChain(e,n),u=0;u0)e[n]=arguments[n+1];var i=this.locale,a=null,o=null;return 1===e.length?u(e[0])?a=e[0]:s(e[0])&&(e[0].locale&&(i=e[0].locale),e[0].key&&(a=e[0].key),o=Object.keys(e[0]).reduce((function(t,n){var i;return _(r,n)?Object.assign({},t,(i={},i[n]=e[0][n],i)):t}),null)):2===e.length&&(u(e[0])&&(a=e[0]),u(e[1])&&(i=e[1])),this._n(t,i,a,o)},Mt.prototype._ntp=function(t,e,n,r){if(!Mt.availabilities.numberFormat)return[];if(!n){var i=r?new Intl.NumberFormat(e,r):new Intl.NumberFormat(e);return i.formatToParts(t)}var a=this._getNumberFormatter(t,e,this.fallbackLocale,this._getNumberFormats(),n,r),o=a&&a.formatToParts(t);if(this._isFallbackRoot(o)){if(!this._root)throw Error("unexpected error");return this._root.$i18n._ntp(t,e,n,r)}return o||[]},Object.defineProperties(Mt.prototype,Lt),Object.defineProperty(Mt,"availabilities",{get:function(){if(!vt){var t="undefined"!==typeof Intl;vt={dateTimeFormat:t&&"undefined"!==typeof Intl.DateTimeFormat,numberFormat:t&&"undefined"!==typeof Intl.NumberFormat}}return vt}}),Mt.install=z,Mt.version="8.24.3",e["a"]=Mt},a9e3:function(t,e,n){"use strict";var r=n("83ab"),i=n("da84"),a=n("94ca"),o=n("6eeb"),s=n("5135"),c=n("c6b6"),u=n("7156"),l=n("c04e"),d=n("d039"),f=n("7c73"),h=n("241c").f,p=n("06cf").f,m=n("9bf2").f,b=n("58a8").trim,v="Number",_=i[v],g=_.prototype,y=c(f(g))==v,O=function(t){var e,n,r,i,a,o,s,c,u=l(t,!1);if("string"==typeof u&&u.length>2)if(u=b(u),e=u.charCodeAt(0),43===e||45===e){if(n=u.charCodeAt(2),88===n||120===n)return NaN}else if(48===e){switch(u.charCodeAt(1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+u}for(a=u.slice(2),o=a.length,s=0;si)return NaN;return parseInt(a,r)}return+u};if(a(v,!_(" 0o1")||!_("0b1")||_("+0x1"))){for(var j,w=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof w&&(y?d((function(){g.valueOf.call(n)})):c(n)!=v)?u(new _(O(e)),n,w):O(e)},M=r?h(_):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","),L=0;M.length>L;L++)s(_,j=M[L])&&!s(w,j)&&m(w,j,p(_,j));w.prototype=g,g.constructor=w,o(i,v,w)}},aa47:function(t,e,n){"use strict"; + */var r=["compactDisplay","currency","currencyDisplay","currencySign","localeMatcher","notation","numberingSystem","signDisplay","style","unit","unitDisplay","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits"];function i(t,e){"undefined"!==typeof console&&(console.warn("[vue-i18n] "+t),e&&console.warn(e.stack))}function a(t,e){"undefined"!==typeof console&&(console.error("[vue-i18n] "+t),e&&console.error(e.stack))}var o=Array.isArray;function s(t){return null!==t&&"object"===typeof t}function c(t){return"boolean"===typeof t}function u(t){return"string"===typeof t}var l=Object.prototype.toString,d="[object Object]";function f(t){return l.call(t)===d}function h(t){return null===t||void 0===t}function p(t){return"function"===typeof t}function m(){var t=[],e=arguments.length;while(e--)t[e]=arguments[e];var n=null,r=null;return 1===t.length?s(t[0])||o(t[0])?r=t[0]:"string"===typeof t[0]&&(n=t[0]):2===t.length&&("string"===typeof t[0]&&(n=t[0]),(s(t[1])||o(t[1]))&&(r=t[1])),{locale:n,params:r}}function b(t){return JSON.parse(JSON.stringify(t))}function v(t,e){if(t.delete(e))return t}function _(t,e){return!!~t.indexOf(e)}var g=Object.prototype.hasOwnProperty;function y(t,e){return g.call(t,e)}function O(t){for(var e=arguments,n=Object(t),r=1;r/g,">").replace(/"/g,""").replace(/'/g,"'")}function M(t){return null!=t&&Object.keys(t).forEach((function(e){"string"==typeof t[e]&&(t[e]=w(t[e]))})),t}function L(t){t.prototype.hasOwnProperty("$i18n")||Object.defineProperty(t.prototype,"$i18n",{get:function(){return this._i18n}}),t.prototype.$t=function(t){var e=[],n=arguments.length-1;while(n-- >0)e[n]=arguments[n+1];var r=this.$i18n;return r._t.apply(r,[t,r.locale,r._getMessages(),this].concat(e))},t.prototype.$tc=function(t,e){var n=[],r=arguments.length-2;while(r-- >0)n[r]=arguments[r+2];var i=this.$i18n;return i._tc.apply(i,[t,i.locale,i._getMessages(),this,e].concat(n))},t.prototype.$te=function(t,e){var n=this.$i18n;return n._te(t,n.locale,n._getMessages(),e)},t.prototype.$d=function(t){var e,n=[],r=arguments.length-1;while(r-- >0)n[r]=arguments[r+1];return(e=this.$i18n).d.apply(e,[t].concat(n))},t.prototype.$n=function(t){var e,n=[],r=arguments.length-1;while(r-- >0)n[r]=arguments[r+1];return(e=this.$i18n).n.apply(e,[t].concat(n))}}var k={beforeCreate:function(){var t=this.$options;if(t.i18n=t.i18n||(t.__i18n?{}:null),t.i18n)if(t.i18n instanceof Mt){if(t.__i18n)try{var e=t.i18n&&t.i18n.messages?t.i18n.messages:{};t.__i18n.forEach((function(t){e=O(e,JSON.parse(t))})),Object.keys(e).forEach((function(n){t.i18n.mergeLocaleMessage(n,e[n])}))}catch(o){0}this._i18n=t.i18n,this._i18nWatcher=this._i18n.watchI18nData()}else if(f(t.i18n)){var n=this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof Mt?this.$root.$i18n:null;if(n&&(t.i18n.root=this.$root,t.i18n.formatter=n.formatter,t.i18n.fallbackLocale=n.fallbackLocale,t.i18n.formatFallbackMessages=n.formatFallbackMessages,t.i18n.silentTranslationWarn=n.silentTranslationWarn,t.i18n.silentFallbackWarn=n.silentFallbackWarn,t.i18n.pluralizationRules=n.pluralizationRules,t.i18n.preserveDirectiveContent=n.preserveDirectiveContent),t.__i18n)try{var r=t.i18n&&t.i18n.messages?t.i18n.messages:{};t.__i18n.forEach((function(t){r=O(r,JSON.parse(t))})),t.i18n.messages=r}catch(o){0}var i=t.i18n,a=i.sharedMessages;a&&f(a)&&(t.i18n.messages=O(t.i18n.messages,a)),this._i18n=new Mt(t.i18n),this._i18nWatcher=this._i18n.watchI18nData(),(void 0===t.i18n.sync||t.i18n.sync)&&(this._localeWatcher=this.$i18n.watchLocale()),n&&n.onComponentInstanceCreated(this._i18n)}else 0;else this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof Mt?this._i18n=this.$root.$i18n:t.parent&&t.parent.$i18n&&t.parent.$i18n instanceof Mt&&(this._i18n=t.parent.$i18n)},beforeMount:function(){var t=this.$options;t.i18n=t.i18n||(t.__i18n?{}:null),t.i18n?(t.i18n instanceof Mt||f(t.i18n))&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0):(this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof Mt||t.parent&&t.parent.$i18n&&t.parent.$i18n instanceof Mt)&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0)},mounted:function(){this!==this.$root&&this.$options.__INTLIFY_META__&&this.$el&&this.$el.setAttribute("data-intlify",this.$options.__INTLIFY_META__)},beforeDestroy:function(){if(this._i18n){var t=this;this.$nextTick((function(){t._subscribing&&(t._i18n.unsubscribeDataChanging(t),delete t._subscribing),t._i18nWatcher&&(t._i18nWatcher(),t._i18n.destroyVM(),delete t._i18nWatcher),t._localeWatcher&&(t._localeWatcher(),delete t._localeWatcher)}))}}},T={name:"i18n",functional:!0,props:{tag:{type:[String,Boolean,Object],default:"span"},path:{type:String,required:!0},locale:{type:String},places:{type:[Array,Object]}},render:function(t,e){var n=e.data,r=e.parent,i=e.props,a=e.slots,o=r.$i18n;if(o){var s=i.path,c=i.locale,u=i.places,l=a(),d=o.i(s,c,D(l)||u?S(l.default,u):l),f=i.tag&&!0!==i.tag||!1===i.tag?i.tag:"span";return f?t(f,n,d):d}}};function D(t){var e;for(e in t)if("default"!==e)return!1;return Boolean(e)}function S(t,e){var n=e?Y(e):{};if(!t)return n;t=t.filter((function(t){return t.tag||""!==t.text.trim()}));var r=t.every(C);return t.reduce(r?x:P,n)}function Y(t){return Array.isArray(t)?t.reduce(P,{}):Object.assign({},t)}function x(t,e){return e.data&&e.data.attrs&&e.data.attrs.place&&(t[e.data.attrs.place]=e),t}function P(t,e,n){return t[n]=e,t}function C(t){return Boolean(t.data&&t.data.attrs&&t.data.attrs.place)}var E,H={name:"i18n-n",functional:!0,props:{tag:{type:[String,Boolean,Object],default:"span"},value:{type:Number,required:!0},format:{type:[String,Object]},locale:{type:String}},render:function(t,e){var n=e.props,i=e.parent,a=e.data,o=i.$i18n;if(!o)return null;var c=null,l=null;u(n.format)?c=n.format:s(n.format)&&(n.format.key&&(c=n.format.key),l=Object.keys(n.format).reduce((function(t,e){var i;return _(r,e)?Object.assign({},t,(i={},i[e]=n.format[e],i)):t}),null));var d=n.locale||o.locale,f=o._ntp(n.value,d,c,l),h=f.map((function(t,e){var n,r=a.scopedSlots&&a.scopedSlots[t.type];return r?r((n={},n[t.type]=t.value,n.index=e,n.parts=f,n)):t.value})),p=n.tag&&!0!==n.tag||!1===n.tag?n.tag:"span";return p?t(p,{attrs:a.attrs,class:a["class"],staticClass:a.staticClass},h):h}};function A(t,e,n){I(t,n)&&R(t,e,n)}function $(t,e,n,r){if(I(t,n)){var i=n.context.$i18n;B(t,n)&&j(e.value,e.oldValue)&&j(t._localeMessage,i.getLocaleMessage(i.locale))||R(t,e,n)}}function F(t,e,n,r){var a=n.context;if(a){var o=n.context.$i18n||{};e.modifiers.preserve||o.preserveDirectiveContent||(t.textContent=""),t._vt=void 0,delete t["_vt"],t._locale=void 0,delete t["_locale"],t._localeMessage=void 0,delete t["_localeMessage"]}else i("Vue instance does not exists in VNode context")}function I(t,e){var n=e.context;return n?!!n.$i18n||(i("VueI18n instance does not exists in Vue instance"),!1):(i("Vue instance does not exists in VNode context"),!1)}function B(t,e){var n=e.context;return t._locale===n.$i18n.locale}function R(t,e,n){var r,a,o=e.value,s=N(o),c=s.path,u=s.locale,l=s.args,d=s.choice;if(c||u||l)if(c){var f=n.context;t._vt=t.textContent=null!=d?(r=f.$i18n).tc.apply(r,[c,d].concat(V(u,l))):(a=f.$i18n).t.apply(a,[c].concat(V(u,l))),t._locale=f.$i18n.locale,t._localeMessage=f.$i18n.getLocaleMessage(f.$i18n.locale)}else i("`path` is required in v-t directive");else i("value type not supported")}function N(t){var e,n,r,i;return u(t)?e=t:f(t)&&(e=t.path,n=t.locale,r=t.args,i=t.choice),{path:e,locale:n,args:r,choice:i}}function V(t,e){var n=[];return t&&n.push(t),e&&(Array.isArray(e)||f(e))&&n.push(e),n}function z(t){z.installed=!0,E=t;E.version&&Number(E.version.split(".")[0]);L(E),E.mixin(k),E.directive("t",{bind:A,update:$,unbind:F}),E.component(T.name,T),E.component(H.name,H);var e=E.config.optionMergeStrategies;e.i18n=function(t,e){return void 0===e?t:e}}var W=function(){this._caches=Object.create(null)};W.prototype.interpolate=function(t,e){if(!e)return[t];var n=this._caches[t];return n||(n=J(t),this._caches[t]=n),q(n,e)};var U=/^(?:\d)+/,G=/^(?:\w)+/;function J(t){var e=[],n=0,r="";while(n0)d--,l=it,f[K]();else{if(d=0,void 0===n)return!1;if(n=pt(n),!1===n)return!1;f[X]()}};while(null!==l)if(u++,e=t[u],"\\"!==e||!h()){if(i=ht(e),s=ut[l],a=s[i]||s["else"]||ct,a===ct)return;if(l=a[0],o=f[a[1]],o&&(r=a[2],r=void 0===r?e:r,!1===o()))return;if(l===st)return c}}var bt=function(){this._cache=Object.create(null)};bt.prototype.parsePath=function(t){var e=this._cache[t];return e||(e=mt(t),e&&(this._cache[t]=e)),e||[]},bt.prototype.getPathValue=function(t,e){if(!s(t))return null;var n=this.parsePath(e);if(0===n.length)return null;var r=n.length,i=t,a=0;while(a/,gt=/(?:@(?:\.[a-z]+)?:(?:[\w\-_|.]+|\([\w\-_|.]+\)))/g,yt=/^@(?:\.([a-z]+))?:/,Ot=/[()]/g,jt={upper:function(t){return t.toLocaleUpperCase()},lower:function(t){return t.toLocaleLowerCase()},capitalize:function(t){return""+t.charAt(0).toLocaleUpperCase()+t.substr(1)}},wt=new W,Mt=function(t){var e=this;void 0===t&&(t={}),!E&&"undefined"!==typeof window&&window.Vue&&z(window.Vue);var n=t.locale||"en-US",r=!1!==t.fallbackLocale&&(t.fallbackLocale||"en-US"),i=t.messages||{},a=t.dateTimeFormats||{},o=t.numberFormats||{};this._vm=null,this._formatter=t.formatter||wt,this._modifiers=t.modifiers||{},this._missing=t.missing||null,this._root=t.root||null,this._sync=void 0===t.sync||!!t.sync,this._fallbackRoot=void 0===t.fallbackRoot||!!t.fallbackRoot,this._formatFallbackMessages=void 0!==t.formatFallbackMessages&&!!t.formatFallbackMessages,this._silentTranslationWarn=void 0!==t.silentTranslationWarn&&t.silentTranslationWarn,this._silentFallbackWarn=void 0!==t.silentFallbackWarn&&!!t.silentFallbackWarn,this._dateTimeFormatters={},this._numberFormatters={},this._path=new bt,this._dataListeners=new Set,this._componentInstanceCreatedListener=t.componentInstanceCreatedListener||null,this._preserveDirectiveContent=void 0!==t.preserveDirectiveContent&&!!t.preserveDirectiveContent,this.pluralizationRules=t.pluralizationRules||{},this._warnHtmlInMessage=t.warnHtmlInMessage||"off",this._postTranslation=t.postTranslation||null,this._escapeParameterHtml=t.escapeParameterHtml||!1,this.getChoiceIndex=function(t,n){var r=Object.getPrototypeOf(e);if(r&&r.getChoiceIndex){var i=r.getChoiceIndex;return i.call(e,t,n)}var a=function(t,e){return t=Math.abs(t),2===e?t?t>1?1:0:1:t?Math.min(t,2):0};return e.locale in e.pluralizationRules?e.pluralizationRules[e.locale].apply(e,[t,n]):a(t,n)},this._exist=function(t,n){return!(!t||!n)&&(!h(e._path.getPathValue(t,n))||!!t[n])},"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||Object.keys(i).forEach((function(t){e._checkLocaleMessage(t,e._warnHtmlInMessage,i[t])})),this._initVM({locale:n,fallbackLocale:r,messages:i,dateTimeFormats:a,numberFormats:o})},Lt={vm:{configurable:!0},messages:{configurable:!0},dateTimeFormats:{configurable:!0},numberFormats:{configurable:!0},availableLocales:{configurable:!0},locale:{configurable:!0},fallbackLocale:{configurable:!0},formatFallbackMessages:{configurable:!0},missing:{configurable:!0},formatter:{configurable:!0},silentTranslationWarn:{configurable:!0},silentFallbackWarn:{configurable:!0},preserveDirectiveContent:{configurable:!0},warnHtmlInMessage:{configurable:!0},postTranslation:{configurable:!0}};Mt.prototype._checkLocaleMessage=function(t,e,n){var r=[],s=function(t,e,n,r){if(f(n))Object.keys(n).forEach((function(i){var a=n[i];f(a)?(r.push(i),r.push("."),s(t,e,a,r),r.pop(),r.pop()):(r.push(i),s(t,e,a,r),r.pop())}));else if(o(n))n.forEach((function(n,i){f(n)?(r.push("["+i+"]"),r.push("."),s(t,e,n,r),r.pop(),r.pop()):(r.push("["+i+"]"),s(t,e,n,r),r.pop())}));else if(u(n)){var c=_t.test(n);if(c){var l="Detected HTML in message '"+n+"' of keypath '"+r.join("")+"' at '"+e+"'. Consider component interpolation with '' to avoid XSS. See https://bit.ly/2ZqJzkp";"warn"===t?i(l):"error"===t&&a(l)}}};s(e,t,n,r)},Mt.prototype._initVM=function(t){var e=E.config.silent;E.config.silent=!0,this._vm=new E({data:t}),E.config.silent=e},Mt.prototype.destroyVM=function(){this._vm.$destroy()},Mt.prototype.subscribeDataChanging=function(t){this._dataListeners.add(t)},Mt.prototype.unsubscribeDataChanging=function(t){v(this._dataListeners,t)},Mt.prototype.watchI18nData=function(){var t=this;return this._vm.$watch("$data",(function(){t._dataListeners.forEach((function(t){E.nextTick((function(){t&&t.$forceUpdate()}))}))}),{deep:!0})},Mt.prototype.watchLocale=function(){if(!this._sync||!this._root)return null;var t=this._vm;return this._root.$i18n.vm.$watch("locale",(function(e){t.$set(t,"locale",e),t.$forceUpdate()}),{immediate:!0})},Mt.prototype.onComponentInstanceCreated=function(t){this._componentInstanceCreatedListener&&this._componentInstanceCreatedListener(t,this)},Lt.vm.get=function(){return this._vm},Lt.messages.get=function(){return b(this._getMessages())},Lt.dateTimeFormats.get=function(){return b(this._getDateTimeFormats())},Lt.numberFormats.get=function(){return b(this._getNumberFormats())},Lt.availableLocales.get=function(){return Object.keys(this.messages).sort()},Lt.locale.get=function(){return this._vm.locale},Lt.locale.set=function(t){this._vm.$set(this._vm,"locale",t)},Lt.fallbackLocale.get=function(){return this._vm.fallbackLocale},Lt.fallbackLocale.set=function(t){this._localeChainCache={},this._vm.$set(this._vm,"fallbackLocale",t)},Lt.formatFallbackMessages.get=function(){return this._formatFallbackMessages},Lt.formatFallbackMessages.set=function(t){this._formatFallbackMessages=t},Lt.missing.get=function(){return this._missing},Lt.missing.set=function(t){this._missing=t},Lt.formatter.get=function(){return this._formatter},Lt.formatter.set=function(t){this._formatter=t},Lt.silentTranslationWarn.get=function(){return this._silentTranslationWarn},Lt.silentTranslationWarn.set=function(t){this._silentTranslationWarn=t},Lt.silentFallbackWarn.get=function(){return this._silentFallbackWarn},Lt.silentFallbackWarn.set=function(t){this._silentFallbackWarn=t},Lt.preserveDirectiveContent.get=function(){return this._preserveDirectiveContent},Lt.preserveDirectiveContent.set=function(t){this._preserveDirectiveContent=t},Lt.warnHtmlInMessage.get=function(){return this._warnHtmlInMessage},Lt.warnHtmlInMessage.set=function(t){var e=this,n=this._warnHtmlInMessage;if(this._warnHtmlInMessage=t,n!==t&&("warn"===t||"error"===t)){var r=this._getMessages();Object.keys(r).forEach((function(t){e._checkLocaleMessage(t,e._warnHtmlInMessage,r[t])}))}},Lt.postTranslation.get=function(){return this._postTranslation},Lt.postTranslation.set=function(t){this._postTranslation=t},Mt.prototype._getMessages=function(){return this._vm.messages},Mt.prototype._getDateTimeFormats=function(){return this._vm.dateTimeFormats},Mt.prototype._getNumberFormats=function(){return this._vm.numberFormats},Mt.prototype._warnDefault=function(t,e,n,r,i,a){if(!h(n))return n;if(this._missing){var o=this._missing.apply(null,[t,e,r,i]);if(u(o))return o}else 0;if(this._formatFallbackMessages){var s=m.apply(void 0,i);return this._render(e,a,s.params,e)}return e},Mt.prototype._isFallbackRoot=function(t){return!t&&!h(this._root)&&this._fallbackRoot},Mt.prototype._isSilentFallbackWarn=function(t){return this._silentFallbackWarn instanceof RegExp?this._silentFallbackWarn.test(t):this._silentFallbackWarn},Mt.prototype._isSilentFallback=function(t,e){return this._isSilentFallbackWarn(e)&&(this._isFallbackRoot()||t!==this.fallbackLocale)},Mt.prototype._isSilentTranslationWarn=function(t){return this._silentTranslationWarn instanceof RegExp?this._silentTranslationWarn.test(t):this._silentTranslationWarn},Mt.prototype._interpolate=function(t,e,n,r,i,a,s){if(!e)return null;var c,l=this._path.getPathValue(e,n);if(o(l)||f(l))return l;if(h(l)){if(!f(e))return null;if(c=e[n],!u(c)&&!p(c))return null}else{if(!u(l)&&!p(l))return null;c=l}return u(c)&&(c.indexOf("@:")>=0||c.indexOf("@.")>=0)&&(c=this._link(t,e,c,r,"raw",a,s)),this._render(c,i,a,n)},Mt.prototype._link=function(t,e,n,r,i,a,s){var c=n,u=c.match(gt);for(var l in u)if(u.hasOwnProperty(l)){var d=u[l],f=d.match(yt),h=f[0],p=f[1],m=d.replace(h,"").replace(Ot,"");if(_(s,m))return c;s.push(m);var b=this._interpolate(t,e,m,r,"raw"===i?"string":i,"raw"===i?void 0:a,s);if(this._isFallbackRoot(b)){if(!this._root)throw Error("unexpected error");var v=this._root.$i18n;b=v._translate(v._getMessages(),v.locale,v.fallbackLocale,m,r,i,a)}b=this._warnDefault(t,m,b,r,o(a)?a:[a],i),this._modifiers.hasOwnProperty(p)?b=this._modifiers[p](b):jt.hasOwnProperty(p)&&(b=jt[p](b)),s.pop(),c=b?c.replace(d,b):c}return c},Mt.prototype._createMessageContext=function(t){var e=o(t)?t:[],n=s(t)?t:{},r=function(t){return e[t]},i=function(t){return n[t]};return{list:r,named:i}},Mt.prototype._render=function(t,e,n,r){if(p(t))return t(this._createMessageContext(n));var i=this._formatter.interpolate(t,n,r);return i||(i=wt.interpolate(t,n,r)),"string"!==e||u(i)?i:i.join("")},Mt.prototype._appendItemToChain=function(t,e,n){var r=!1;return _(t,e)||(r=!0,e&&(r="!"!==e[e.length-1],e=e.replace(/!/g,""),t.push(e),n&&n[e]&&(r=n[e]))),r},Mt.prototype._appendLocaleToChain=function(t,e,n){var r,i=e.split("-");do{var a=i.join("-");r=this._appendItemToChain(t,a,n),i.splice(-1,1)}while(i.length&&!0===r);return r},Mt.prototype._appendBlockToChain=function(t,e,n){for(var r=!0,i=0;i0)a[o]=arguments[o+4];if(!t)return"";var s=m.apply(void 0,a);this._escapeParameterHtml&&(s.params=M(s.params));var c=s.locale||e,u=this._translate(n,c,this.fallbackLocale,t,r,"string",s.params);if(this._isFallbackRoot(u)){if(!this._root)throw Error("unexpected error");return(i=this._root).$t.apply(i,[t].concat(a))}return u=this._warnDefault(c,t,u,r,a,"string"),this._postTranslation&&null!==u&&void 0!==u&&(u=this._postTranslation(u,t)),u},Mt.prototype.t=function(t){var e,n=[],r=arguments.length-1;while(r-- >0)n[r]=arguments[r+1];return(e=this)._t.apply(e,[t,this.locale,this._getMessages(),null].concat(n))},Mt.prototype._i=function(t,e,n,r,i){var a=this._translate(n,e,this.fallbackLocale,t,r,"raw",i);if(this._isFallbackRoot(a)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.i(t,e,i)}return this._warnDefault(e,t,a,r,[i],"raw")},Mt.prototype.i=function(t,e,n){return t?(u(e)||(e=this.locale),this._i(t,e,this._getMessages(),null,n)):""},Mt.prototype._tc=function(t,e,n,r,i){var a,o=[],s=arguments.length-5;while(s-- >0)o[s]=arguments[s+5];if(!t)return"";void 0===i&&(i=1);var c={count:i,n:i},u=m.apply(void 0,o);return u.params=Object.assign(c,u.params),o=null===u.locale?[u.params]:[u.locale,u.params],this.fetchChoice((a=this)._t.apply(a,[t,e,n,r].concat(o)),i)},Mt.prototype.fetchChoice=function(t,e){if(!t||!u(t))return null;var n=t.split("|");return e=this.getChoiceIndex(e,n.length),n[e]?n[e].trim():t},Mt.prototype.tc=function(t,e){var n,r=[],i=arguments.length-2;while(i-- >0)r[i]=arguments[i+2];return(n=this)._tc.apply(n,[t,this.locale,this._getMessages(),null,e].concat(r))},Mt.prototype._te=function(t,e,n){var r=[],i=arguments.length-3;while(i-- >0)r[i]=arguments[i+3];var a=m.apply(void 0,r).locale||e;return this._exist(n[a],t)},Mt.prototype.te=function(t,e){return this._te(t,this.locale,this._getMessages(),e)},Mt.prototype.getLocaleMessage=function(t){return b(this._vm.messages[t]||{})},Mt.prototype.setLocaleMessage=function(t,e){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(t,this._warnHtmlInMessage,e),this._vm.$set(this._vm.messages,t,e)},Mt.prototype.mergeLocaleMessage=function(t,e){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(t,this._warnHtmlInMessage,e),this._vm.$set(this._vm.messages,t,O("undefined"!==typeof this._vm.messages[t]&&Object.keys(this._vm.messages[t]).length?this._vm.messages[t]:{},e))},Mt.prototype.getDateTimeFormat=function(t){return b(this._vm.dateTimeFormats[t]||{})},Mt.prototype.setDateTimeFormat=function(t,e){this._vm.$set(this._vm.dateTimeFormats,t,e),this._clearDateTimeFormat(t,e)},Mt.prototype.mergeDateTimeFormat=function(t,e){this._vm.$set(this._vm.dateTimeFormats,t,O(this._vm.dateTimeFormats[t]||{},e)),this._clearDateTimeFormat(t,e)},Mt.prototype._clearDateTimeFormat=function(t,e){for(var n in e){var r=t+"__"+n;this._dateTimeFormatters.hasOwnProperty(r)&&delete this._dateTimeFormatters[r]}},Mt.prototype._localizeDateTime=function(t,e,n,r,i){for(var a=e,o=r[a],s=this._getLocaleChain(e,n),c=0;c0)e[n]=arguments[n+1];var r=this.locale,i=null;return 1===e.length?u(e[0])?i=e[0]:s(e[0])&&(e[0].locale&&(r=e[0].locale),e[0].key&&(i=e[0].key)):2===e.length&&(u(e[0])&&(i=e[0]),u(e[1])&&(r=e[1])),this._d(t,r,i)},Mt.prototype.getNumberFormat=function(t){return b(this._vm.numberFormats[t]||{})},Mt.prototype.setNumberFormat=function(t,e){this._vm.$set(this._vm.numberFormats,t,e),this._clearNumberFormat(t,e)},Mt.prototype.mergeNumberFormat=function(t,e){this._vm.$set(this._vm.numberFormats,t,O(this._vm.numberFormats[t]||{},e)),this._clearNumberFormat(t,e)},Mt.prototype._clearNumberFormat=function(t,e){for(var n in e){var r=t+"__"+n;this._numberFormatters.hasOwnProperty(r)&&delete this._numberFormatters[r]}},Mt.prototype._getNumberFormatter=function(t,e,n,r,i,a){for(var o=e,s=r[o],c=this._getLocaleChain(e,n),u=0;u0)e[n]=arguments[n+1];var i=this.locale,a=null,o=null;return 1===e.length?u(e[0])?a=e[0]:s(e[0])&&(e[0].locale&&(i=e[0].locale),e[0].key&&(a=e[0].key),o=Object.keys(e[0]).reduce((function(t,n){var i;return _(r,n)?Object.assign({},t,(i={},i[n]=e[0][n],i)):t}),null)):2===e.length&&(u(e[0])&&(a=e[0]),u(e[1])&&(i=e[1])),this._n(t,i,a,o)},Mt.prototype._ntp=function(t,e,n,r){if(!Mt.availabilities.numberFormat)return[];if(!n){var i=r?new Intl.NumberFormat(e,r):new Intl.NumberFormat(e);return i.formatToParts(t)}var a=this._getNumberFormatter(t,e,this.fallbackLocale,this._getNumberFormats(),n,r),o=a&&a.formatToParts(t);if(this._isFallbackRoot(o)){if(!this._root)throw Error("unexpected error");return this._root.$i18n._ntp(t,e,n,r)}return o||[]},Object.defineProperties(Mt.prototype,Lt),Object.defineProperty(Mt,"availabilities",{get:function(){if(!vt){var t="undefined"!==typeof Intl;vt={dateTimeFormat:t&&"undefined"!==typeof Intl.DateTimeFormat,numberFormat:t&&"undefined"!==typeof Intl.NumberFormat}}return vt}}),Mt.install=z,Mt.version="8.24.4",e["a"]=Mt},a9e3:function(t,e,n){"use strict";var r=n("83ab"),i=n("da84"),a=n("94ca"),o=n("6eeb"),s=n("5135"),c=n("c6b6"),u=n("7156"),l=n("c04e"),d=n("d039"),f=n("7c73"),h=n("241c").f,p=n("06cf").f,m=n("9bf2").f,b=n("58a8").trim,v="Number",_=i[v],g=_.prototype,y=c(f(g))==v,O=function(t){var e,n,r,i,a,o,s,c,u=l(t,!1);if("string"==typeof u&&u.length>2)if(u=b(u),e=u.charCodeAt(0),43===e||45===e){if(n=u.charCodeAt(2),88===n||120===n)return NaN}else if(48===e){switch(u.charCodeAt(1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+u}for(a=u.slice(2),o=a.length,s=0;si)return NaN;return parseInt(a,r)}return+u};if(a(v,!_(" 0o1")||!_("0b1")||_("+0x1"))){for(var j,w=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof w&&(y?d((function(){g.valueOf.call(n)})):c(n)!=v)?u(new _(O(e)),n,w):O(e)},M=r?h(_):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","),L=0;M.length>L;L++)s(_,j=M[L])&&!s(w,j)&&m(w,j,p(_,j));w.prototype=g,g.constructor=w,o(i,v,w)}},aa47:function(t,e,n){"use strict"; /**! * Sortable 1.10.2 * @author RubaXa @@ -254,7 +254,7 @@ function e(t,e,n,r){var i={m:["eine Minute","einer Minute"],h:["eine Stunde","ei //! moment.js locale configuration var e=t.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}});return e}))},b540:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration -var e=t.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(t,e){return 12===t&&(t=0),"enjing"===e?t:"siyang"===e?t>=11?t:t+12:"sonten"===e||"ndalu"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"enjing":t<15?"siyang":t<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}});return e}))},b575:function(t,e,n){var r,i,a,o,s,c,u,l,d=n("da84"),f=n("06cf").f,h=n("2cf4").set,p=n("1cdc"),m=n("a4b4"),b=n("605d"),v=d.MutationObserver||d.WebKitMutationObserver,_=d.document,g=d.process,y=d.Promise,O=f(d,"queueMicrotask"),j=O&&O.value;j||(r=function(){var t,e;b&&(t=g.domain)&&t.exit();while(i){e=i.fn,i=i.next;try{e()}catch(n){throw i?o():a=void 0,n}}a=void 0,t&&t.enter()},p||b||m||!v||!_?y&&y.resolve?(u=y.resolve(void 0),l=u.then,o=function(){l.call(u,r)}):o=b?function(){g.nextTick(r)}:function(){h.call(d,r)}:(s=!0,c=_.createTextNode(""),new v(r).observe(c,{characterData:!0}),o=function(){c.data=s=!s})),t.exports=j||function(t){var e={fn:t,next:void 0};a&&(a.next=e),i||(i=e,o()),a=e}},b5b7:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; +var e=t.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(t,e){return 12===t&&(t=0),"enjing"===e?t:"siyang"===e?t>=11?t:t+12:"sonten"===e||"ndalu"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"enjing":t<15?"siyang":t<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}});return e}))},b575:function(t,e,n){var r,i,a,o,s,c,u,l,d=n("da84"),f=n("06cf").f,h=n("2cf4").set,p=n("1cdc"),m=n("a4b4"),b=n("605d"),v=d.MutationObserver||d.WebKitMutationObserver,_=d.document,g=d.process,y=d.Promise,O=f(d,"queueMicrotask"),j=O&&O.value;j||(r=function(){var t,e;b&&(t=g.domain)&&t.exit();while(i){e=i.fn,i=i.next;try{e()}catch(n){throw i?o():a=void 0,n}}a=void 0,t&&t.enter()},p||b||m||!v||!_?y&&y.resolve?(u=y.resolve(void 0),u.constructor=y,l=u.then,o=function(){l.call(u,r)}):o=b?function(){g.nextTick(r)}:function(){h.call(d,r)}:(s=!0,c=_.createTextNode(""),new v(r).observe(c,{characterData:!0}),o=function(){c.data=s=!s})),t.exports=j||function(t){var e={fn:t,next:void 0};a&&(a.next=e),i||(i=e,o()),a=e}},b5b7:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],i=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,a=t.defineLocale("es-mx",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,r){return t?/-MMM-/.test(r)?n[t.month()]:e[t.month()]:e},monthsRegex:i,monthsShortRegex:i,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:4},invalidDate:"Fecha inválida"});return a}))},b622:function(t,e,n){var r=n("da84"),i=n("5692"),a=n("5135"),o=n("90e3"),s=n("4930"),c=n("fdbf"),u=i("wks"),l=r.Symbol,d=c?l:l&&l.withoutSetter||o;t.exports=function(t){return a(u,t)&&(s||"string"==typeof u[t])||(s&&a(l,t)?u[t]=l[t]:u[t]=d("Symbol."+t)),u[t]}},b727:function(t,e,n){var r=n("0366"),i=n("44ad"),a=n("7b0b"),o=n("50c4"),s=n("65f0"),c=[].push,u=function(t){var e=1==t,n=2==t,u=3==t,l=4==t,d=6==t,f=7==t,h=5==t||d;return function(p,m,b,v){for(var _,g,y=a(p),O=i(y),j=r(m,b,3),w=o(O.length),M=0,L=v||s,k=e?L(p,w):n||f?L(p,0):void 0;w>M;M++)if((h||M in O)&&(_=O[M],g=j(_,M,y),t))if(e)k[M]=g;else if(g)switch(t){case 3:return!0;case 5:return _;case 6:return M;case 2:c.call(k,_)}else switch(t){case 4:return!1;case 7:c.call(k,_)}return d?-1:u||l?l:k}};t.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6),filterOut:u(7)}},b76a:function(t,e,n){(function(e,r){t.exports=r(n("aa47"))})("undefined"!==typeof self&&self,(function(t){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="fb15")}({"01f9":function(t,e,n){"use strict";var r=n("2d00"),i=n("5ca1"),a=n("2aba"),o=n("32e9"),s=n("84f2"),c=n("41a0"),u=n("7f20"),l=n("38fd"),d=n("2b4c")("iterator"),f=!([].keys&&"next"in[].keys()),h="@@iterator",p="keys",m="values",b=function(){return this};t.exports=function(t,e,n,v,_,g,y){c(n,e,v);var O,j,w,M=function(t){if(!f&&t in D)return D[t];switch(t){case p:return function(){return new n(this,t)};case m:return function(){return new n(this,t)}}return function(){return new n(this,t)}},L=e+" Iterator",k=_==m,T=!1,D=t.prototype,S=D[d]||D[h]||_&&D[_],Y=S||M(_),x=_?k?M("entries"):Y:void 0,P="Array"==e&&D.entries||S;if(P&&(w=l(P.call(new t)),w!==Object.prototype&&w.next&&(u(w,L,!0),r||"function"==typeof w[d]||o(w,d,b))),k&&S&&S.name!==m&&(T=!0,Y=function(){return S.call(this)}),r&&!y||!f&&!T&&D[d]||o(D,d,Y),s[e]=Y,s[L]=b,_)if(O={values:k?Y:M(m),keys:g?Y:M(p),entries:x},y)for(j in O)j in D||a(D,j,O[j]);else i(i.P+i.F*(f||T),e,O);return O}},"02f4":function(t,e,n){var r=n("4588"),i=n("be13");t.exports=function(t){return function(e,n){var a,o,s=String(i(e)),c=r(n),u=s.length;return c<0||c>=u?t?"":void 0:(a=s.charCodeAt(c),a<55296||a>56319||c+1===u||(o=s.charCodeAt(c+1))<56320||o>57343?t?s.charAt(c):a:t?s.slice(c,c+2):o-56320+(a-55296<<10)+65536)}}},"0390":function(t,e,n){"use strict";var r=n("02f4")(!0);t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},"0bfb":function(t,e,n){"use strict";var r=n("cb7c");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},"0d58":function(t,e,n){var r=n("ce10"),i=n("e11e");t.exports=Object.keys||function(t){return r(t,i)}},1495:function(t,e,n){var r=n("86cc"),i=n("cb7c"),a=n("0d58");t.exports=n("9e1e")?Object.defineProperties:function(t,e){i(t);var n,o=a(e),s=o.length,c=0;while(s>c)r.f(t,n=o[c++],e[n]);return t}},"214f":function(t,e,n){"use strict";n("b0c5");var r=n("2aba"),i=n("32e9"),a=n("79e5"),o=n("be13"),s=n("2b4c"),c=n("520a"),u=s("species"),l=!a((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),d=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();t.exports=function(t,e,n){var f=s(t),h=!a((function(){var e={};return e[f]=function(){return 7},7!=""[t](e)})),p=h?!a((function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},"split"===t&&(n.constructor={},n.constructor[u]=function(){return n}),n[f](""),!e})):void 0;if(!h||!p||"replace"===t&&!l||"split"===t&&!d){var m=/./[f],b=n(o,f,""[t],(function(t,e,n,r,i){return e.exec===c?h&&!i?{done:!0,value:m.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}})),v=b[0],_=b[1];r(String.prototype,t,v),i(RegExp.prototype,f,2==e?function(t,e){return _.call(t,this,e)}:function(t){return _.call(t,this)})}}},"230e":function(t,e,n){var r=n("d3f4"),i=n("7726").document,a=r(i)&&r(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},"23c6":function(t,e,n){var r=n("2d95"),i=n("2b4c")("toStringTag"),a="Arguments"==r(function(){return arguments}()),o=function(t,e){try{return t[e]}catch(n){}};t.exports=function(t){var e,n,s;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=o(e=Object(t),i))?n:a?r(e):"Object"==(s=r(e))&&"function"==typeof e.callee?"Arguments":s}},2621:function(t,e){e.f=Object.getOwnPropertySymbols},"2aba":function(t,e,n){var r=n("7726"),i=n("32e9"),a=n("69a8"),o=n("ca5a")("src"),s=n("fa5b"),c="toString",u=(""+s).split(c);n("8378").inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,n,s){var c="function"==typeof n;c&&(a(n,"name")||i(n,"name",e)),t[e]!==n&&(c&&(a(n,o)||i(n,o,t[e]?""+t[e]:u.join(String(e)))),t===r?t[e]=n:s?t[e]?t[e]=n:i(t,e,n):(delete t[e],i(t,e,n)))})(Function.prototype,c,(function(){return"function"==typeof this&&this[o]||s.call(this)}))},"2aeb":function(t,e,n){var r=n("cb7c"),i=n("1495"),a=n("e11e"),o=n("613b")("IE_PROTO"),s=function(){},c="prototype",u=function(){var t,e=n("230e")("iframe"),r=a.length,i="<",o=">";e.style.display="none",n("fab2").appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(i+"script"+o+"document.F=Object"+i+"/script"+o),t.close(),u=t.F;while(r--)delete u[c][a[r]];return u()};t.exports=Object.create||function(t,e){var n;return null!==t?(s[c]=r(t),n=new s,s[c]=null,n[o]=t):n=u(),void 0===e?n:i(n,e)}},"2b4c":function(t,e,n){var r=n("5537")("wks"),i=n("ca5a"),a=n("7726").Symbol,o="function"==typeof a,s=t.exports=function(t){return r[t]||(r[t]=o&&a[t]||(o?a:i)("Symbol."+t))};s.store=r},"2d00":function(t,e){t.exports=!1},"2d95":function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},"2fdb":function(t,e,n){"use strict";var r=n("5ca1"),i=n("d2c8"),a="includes";r(r.P+r.F*n("5147")(a),"String",{includes:function(t){return!!~i(this,t,a).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},"32e9":function(t,e,n){var r=n("86cc"),i=n("4630");t.exports=n("9e1e")?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},"38fd":function(t,e,n){var r=n("69a8"),i=n("4bf8"),a=n("613b")("IE_PROTO"),o=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),r(t,a)?t[a]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?o:null}},"41a0":function(t,e,n){"use strict";var r=n("2aeb"),i=n("4630"),a=n("7f20"),o={};n("32e9")(o,n("2b4c")("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(o,{next:i(1,n)}),a(t,e+" Iterator")}},"456d":function(t,e,n){var r=n("4bf8"),i=n("0d58");n("5eda")("keys",(function(){return function(t){return i(r(t))}}))},4588:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},4630:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"4bf8":function(t,e,n){var r=n("be13");t.exports=function(t){return Object(r(t))}},5147:function(t,e,n){var r=n("2b4c")("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,!"/./"[t](e)}catch(i){}}return!0}},"520a":function(t,e,n){"use strict";var r=n("0bfb"),i=RegExp.prototype.exec,a=String.prototype.replace,o=i,s="lastIndex",c=function(){var t=/a/,e=/b*/g;return i.call(t,"a"),i.call(e,"a"),0!==t[s]||0!==e[s]}(),u=void 0!==/()??/.exec("")[1],l=c||u;l&&(o=function(t){var e,n,o,l,d=this;return u&&(n=new RegExp("^"+d.source+"$(?!\\s)",r.call(d))),c&&(e=d[s]),o=i.call(d,t),c&&o&&(d[s]=d.global?o.index+o[0].length:e),u&&o&&o.length>1&&a.call(o[0],n,(function(){for(l=1;l1?arguments[1]:void 0)}}),n("9c6c")("includes")},6821:function(t,e,n){var r=n("626a"),i=n("be13");t.exports=function(t){return r(i(t))}},"69a8":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},"6a99":function(t,e,n){var r=n("d3f4");t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},7333:function(t,e,n){"use strict";var r=n("0d58"),i=n("2621"),a=n("52a7"),o=n("4bf8"),s=n("626a"),c=Object.assign;t.exports=!c||n("79e5")((function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach((function(t){e[t]=t})),7!=c({},t)[n]||Object.keys(c({},e)).join("")!=r}))?function(t,e){var n=o(t),c=arguments.length,u=1,l=i.f,d=a.f;while(c>u){var f,h=s(arguments[u++]),p=l?r(h).concat(l(h)):r(h),m=p.length,b=0;while(m>b)d.call(h,f=p[b++])&&(n[f]=h[f])}return n}:c},7726:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},"77f1":function(t,e,n){var r=n("4588"),i=Math.max,a=Math.min;t.exports=function(t,e){return t=r(t),t<0?i(t+e,0):a(t,e)}},"79e5":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},"7f20":function(t,e,n){var r=n("86cc").f,i=n("69a8"),a=n("2b4c")("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,a)&&r(t,a,{configurable:!0,value:e})}},8378:function(t,e){var n=t.exports={version:"2.6.5"};"number"==typeof __e&&(__e=n)},"84f2":function(t,e){t.exports={}},"86cc":function(t,e,n){var r=n("cb7c"),i=n("c69a"),a=n("6a99"),o=Object.defineProperty;e.f=n("9e1e")?Object.defineProperty:function(t,e,n){if(r(t),e=a(e,!0),r(n),i)try{return o(t,e,n)}catch(s){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},"9b43":function(t,e,n){var r=n("d8e8");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},"9c6c":function(t,e,n){var r=n("2b4c")("unscopables"),i=Array.prototype;void 0==i[r]&&n("32e9")(i,r,{}),t.exports=function(t){i[r][t]=!0}},"9def":function(t,e,n){var r=n("4588"),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},"9e1e":function(t,e,n){t.exports=!n("79e5")((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},a352:function(e,n){e.exports=t},a481:function(t,e,n){"use strict";var r=n("cb7c"),i=n("4bf8"),a=n("9def"),o=n("4588"),s=n("0390"),c=n("5f1b"),u=Math.max,l=Math.min,d=Math.floor,f=/\$([$&`']|\d\d?|<[^>]*>)/g,h=/\$([$&`']|\d\d?)/g,p=function(t){return void 0===t?t:String(t)};n("214f")("replace",2,(function(t,e,n,m){return[function(r,i){var a=t(this),o=void 0==r?void 0:r[e];return void 0!==o?o.call(r,a,i):n.call(String(a),r,i)},function(t,e){var i=m(n,t,this,e);if(i.done)return i.value;var d=r(t),f=String(this),h="function"===typeof e;h||(e=String(e));var v=d.global;if(v){var _=d.unicode;d.lastIndex=0}var g=[];while(1){var y=c(d,f);if(null===y)break;if(g.push(y),!v)break;var O=String(y[0]);""===O&&(d.lastIndex=s(f,a(d.lastIndex),_))}for(var j="",w=0,M=0;M=w&&(j+=f.slice(w,k)+x,w=k+L.length)}return j+f.slice(w)}];function b(t,e,r,a,o,s){var c=r+t.length,u=a.length,l=h;return void 0!==o&&(o=i(o),l=f),n.call(s,l,(function(n,i){var s;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,r);case"'":return e.slice(c);case"<":s=o[i.slice(1,-1)];break;default:var l=+i;if(0===l)return n;if(l>u){var f=d(l/10);return 0===f?n:f<=u?void 0===a[f-1]?i.charAt(1):a[f-1]+i.charAt(1):n}s=a[l-1]}return void 0===s?"":s}))}}))},aae3:function(t,e,n){var r=n("d3f4"),i=n("2d95"),a=n("2b4c")("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[a])?!!e:"RegExp"==i(t))}},ac6a:function(t,e,n){for(var r=n("cadf"),i=n("0d58"),a=n("2aba"),o=n("7726"),s=n("32e9"),c=n("84f2"),u=n("2b4c"),l=u("iterator"),d=u("toStringTag"),f=c.Array,h={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},p=i(h),m=0;ml)if(s=c[l++],s!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}}},c649:function(t,e,n){"use strict";(function(t){n.d(e,"c",(function(){return u})),n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return i})),n.d(e,"d",(function(){return c}));n("a481");function r(){return"undefined"!==typeof window?window.console:t.console}var i=r();function a(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}var o=/-(\w)/g,s=a((function(t){return t.replace(o,(function(t,e){return e?e.toUpperCase():""}))}));function c(t){null!==t.parentElement&&t.parentElement.removeChild(t)}function u(t,e,n){var r=0===n?t.children[0]:t.children[n-1].nextSibling;t.insertBefore(e,r)}}).call(this,n("c8ba"))},c69a:function(t,e,n){t.exports=!n("9e1e")&&!n("79e5")((function(){return 7!=Object.defineProperty(n("230e")("div"),"a",{get:function(){return 7}}).a}))},c8ba:function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}t.exports=n},ca5a:function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},cadf:function(t,e,n){"use strict";var r=n("9c6c"),i=n("d53b"),a=n("84f2"),o=n("6821");t.exports=n("01f9")(Array,"Array",(function(t,e){this._t=o(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,i(1)):i(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),a.Arguments=a.Array,r("keys"),r("values"),r("entries")},cb7c:function(t,e,n){var r=n("d3f4");t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},ce10:function(t,e,n){var r=n("69a8"),i=n("6821"),a=n("c366")(!1),o=n("613b")("IE_PROTO");t.exports=function(t,e){var n,s=i(t),c=0,u=[];for(n in s)n!=o&&r(s,n)&&u.push(n);while(e.length>c)r(s,n=e[c++])&&(~a(u,n)||u.push(n));return u}},d2c8:function(t,e,n){var r=n("aae3"),i=n("be13");t.exports=function(t,e,n){if(r(e))throw TypeError("String#"+n+" doesn't accept regex!");return String(i(t))}},d3f4:function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},d53b:function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},d8e8:function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},e11e:function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},f559:function(t,e,n){"use strict";var r=n("5ca1"),i=n("9def"),a=n("d2c8"),o="startsWith",s=""[o];r(r.P+r.F*n("5147")(o),"String",{startsWith:function(t){var e=a(this,t,o),n=i(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return s?s.call(e,r,n):e.slice(n,n+r.length)===r}})},f6fd:function(t,e){(function(t){var e="currentScript",n=t.getElementsByTagName("script");e in t||Object.defineProperty(t,e,{get:function(){try{throw new Error}catch(r){var t,e=(/.*at [^\(]*\((.*):.+:.+\)$/gi.exec(r.stack)||[!1])[1];for(t in n)if(n[t].src==e||"interactive"==n[t].readyState)return n[t];return null}}})})(document)},f751:function(t,e,n){var r=n("5ca1");r(r.S+r.F,"Object",{assign:n("7333")})},fa5b:function(t,e,n){t.exports=n("5537")("native-function-to-string",Function.toString)},fab2:function(t,e,n){var r=n("7726").document;t.exports=r&&r.documentElement},fb15:function(t,e,n){"use strict";var r;(n.r(e),"undefined"!==typeof window)&&(n("f6fd"),(r=window.document.currentScript)&&(r=r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/))&&(n.p=r[1]));n("f751"),n("f559"),n("ac6a"),n("cadf"),n("456d");function i(t){if(Array.isArray(t))return t}function a(t,e){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(t)){var n=[],r=!0,i=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(r=(o=s.next()).done);r=!0)if(n.push(o.value),e&&n.length===e)break}catch(c){i=!0,a=c}finally{try{r||null==s["return"]||s["return"]()}finally{if(i)throw a}}return n}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=a?i.length:i.indexOf(t)}));return n?o.filter((function(t){return-1!==t})):o}function y(t,e){var n=this;this.$nextTick((function(){return n.$emit(t.toLowerCase(),e)}))}function O(t){var e=this;return function(n){null!==e.realList&&e["onDrag"+t](n),y.call(e,t,n)}}function j(t){return["transition-group","TransitionGroup"].includes(t)}function w(t){if(!t||1!==t.length)return!1;var e=u(t,1),n=e[0].componentOptions;return!!n&&j(n.tag)}function M(t,e,n){return t[n]||(e[n]?e[n]():void 0)}function L(t,e,n){var r=0,i=0,a=M(e,n,"header");a&&(r=a.length,t=t?[].concat(h(a),h(t)):h(a));var o=M(e,n,"footer");return o&&(i=o.length,t=t?[].concat(h(t),h(o)):h(o)),{children:t,headerOffset:r,footerOffset:i}}function k(t,e){var n=null,r=function(t,e){n=v(n,t,e)},i=Object.keys(t).filter((function(t){return"id"===t||t.startsWith("data-")})).reduce((function(e,n){return e[n]=t[n],e}),{});if(r("attrs",i),!e)return n;var a=e.on,o=e.props,s=e.attrs;return r("on",a),r("props",o),Object.assign(n.attrs,s),n}var T=["Start","Add","Remove","Update","End"],D=["Choose","Unchoose","Sort","Filter","Clone"],S=["Move"].concat(T,D).map((function(t){return"on"+t})),Y=null,x={options:Object,list:{type:Array,required:!1,default:null},value:{type:Array,required:!1,default:null},noTransitionOnDrag:{type:Boolean,default:!1},clone:{type:Function,default:function(t){return t}},element:{type:String,default:"div"},tag:{type:String,default:null},move:{type:Function,default:null},componentData:{type:Object,required:!1,default:null}},P={name:"draggable",inheritAttrs:!1,props:x,data:function(){return{transitionMode:!1,noneFunctionalComponentMode:!1}},render:function(t){var e=this.$slots.default;this.transitionMode=w(e);var n=L(e,this.$slots,this.$scopedSlots),r=n.children,i=n.headerOffset,a=n.footerOffset;this.headerOffset=i,this.footerOffset=a;var o=k(this.$attrs,this.componentData);return t(this.getTag(),o,r)},created:function(){null!==this.list&&null!==this.value&&b["b"].error("Value and list props are mutually exclusive! Please set one or another."),"div"!==this.element&&b["b"].warn("Element props is deprecated please use tag props instead. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#element-props"),void 0!==this.options&&b["b"].warn("Options props is deprecated, add sortable options directly as vue.draggable item, or use v-bind. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#options-props")},mounted:function(){var t=this;if(this.noneFunctionalComponentMode=this.getTag().toLowerCase()!==this.$el.nodeName.toLowerCase()&&!this.getIsFunctional(),this.noneFunctionalComponentMode&&this.transitionMode)throw new Error("Transition-group inside component is not supported. Please alter tag value or remove transition-group. Current tag value: ".concat(this.getTag()));var e={};T.forEach((function(n){e["on"+n]=O.call(t,n)})),D.forEach((function(n){e["on"+n]=y.bind(t,n)}));var n=Object.keys(this.$attrs).reduce((function(e,n){return e[Object(b["a"])(n)]=t.$attrs[n],e}),{}),r=Object.assign({},this.options,n,e,{onMove:function(e,n){return t.onDragMove(e,n)}});!("draggable"in r)&&(r.draggable=">*"),this._sortable=new m.a(this.rootContainer,r),this.computeIndexes()},beforeDestroy:function(){void 0!==this._sortable&&this._sortable.destroy()},computed:{rootContainer:function(){return this.transitionMode?this.$el.children[0]:this.$el},realList:function(){return this.list?this.list:this.value}},watch:{options:{handler:function(t){this.updateOptions(t)},deep:!0},$attrs:{handler:function(t){this.updateOptions(t)},deep:!0},realList:function(){this.computeIndexes()}},methods:{getIsFunctional:function(){var t=this._vnode.fnOptions;return t&&t.functional},getTag:function(){return this.tag||this.element},updateOptions:function(t){for(var e in t){var n=Object(b["a"])(e);-1===S.indexOf(n)&&this._sortable.option(n,t[e])}},getChildrenNodes:function(){if(this.noneFunctionalComponentMode)return this.$children[0].$slots.default;var t=this.$slots.default;return this.transitionMode?t[0].child.$slots.default:t},computeIndexes:function(){var t=this;this.$nextTick((function(){t.visibleIndexes=g(t.getChildrenNodes(),t.rootContainer.children,t.transitionMode,t.footerOffset)}))},getUnderlyingVm:function(t){var e=_(this.getChildrenNodes()||[],t);if(-1===e)return null;var n=this.realList[e];return{index:e,element:n}},getUnderlyingPotencialDraggableComponent:function(t){var e=t.__vue__;return e&&e.$options&&j(e.$options._componentTag)?e.$parent:!("realList"in e)&&1===e.$children.length&&"realList"in e.$children[0]?e.$children[0]:e},emitChanges:function(t){var e=this;this.$nextTick((function(){e.$emit("change",t)}))},alterList:function(t){if(this.list)t(this.list);else{var e=h(this.value);t(e),this.$emit("input",e)}},spliceList:function(){var t=arguments,e=function(e){return e.splice.apply(e,h(t))};this.alterList(e)},updatePosition:function(t,e){var n=function(n){return n.splice(e,0,n.splice(t,1)[0])};this.alterList(n)},getRelatedContextFromMoveEvent:function(t){var e=t.to,n=t.related,r=this.getUnderlyingPotencialDraggableComponent(e);if(!r)return{component:r};var i=r.realList,a={list:i,component:r};if(e!==n&&i&&r.getUnderlyingVm){var o=r.getUnderlyingVm(n);if(o)return Object.assign(o,a)}return a},getVmIndex:function(t){var e=this.visibleIndexes,n=e.length;return t>n-1?n:e[t]},getComponent:function(){return this.$slots.default[0].componentInstance},resetTransitionData:function(t){if(this.noTransitionOnDrag&&this.transitionMode){var e=this.getChildrenNodes();e[t].data=null;var n=this.getComponent();n.children=[],n.kept=void 0}},onDragStart:function(t){this.context=this.getUnderlyingVm(t.item),t.item._underlying_vm_=this.clone(this.context.element),Y=t.item},onDragAdd:function(t){var e=t.item._underlying_vm_;if(void 0!==e){Object(b["d"])(t.item);var n=this.getVmIndex(t.newIndex);this.spliceList(n,0,e),this.computeIndexes();var r={element:e,newIndex:n};this.emitChanges({added:r})}},onDragRemove:function(t){if(Object(b["c"])(this.rootContainer,t.item,t.oldIndex),"clone"!==t.pullMode){var e=this.context.index;this.spliceList(e,1);var n={element:this.context.element,oldIndex:e};this.resetTransitionData(e),this.emitChanges({removed:n})}else Object(b["d"])(t.clone)},onDragUpdate:function(t){Object(b["d"])(t.item),Object(b["c"])(t.from,t.item,t.oldIndex);var e=this.context.index,n=this.getVmIndex(t.newIndex);this.updatePosition(e,n);var r={element:this.context.element,oldIndex:e,newIndex:n};this.emitChanges({moved:r})},updateProperty:function(t,e){t.hasOwnProperty(e)&&(t[e]+=this.headerOffset)},computeFutureIndex:function(t,e){if(!t.element)return 0;var n=h(e.to.children).filter((function(t){return"none"!==t.style["display"]})),r=n.indexOf(e.related),i=t.component.getVmIndex(r),a=-1!==n.indexOf(Y);return a||!e.willInsertAfter?i:i+1},onDragMove:function(t,e){var n=this.move;if(!n||!this.realList)return!0;var r=this.getRelatedContextFromMoveEvent(t),i=this.context,a=this.computeFutureIndex(r,t);Object.assign(i,{futureIndex:a});var o=Object.assign({},t,{relatedContext:r,draggedContext:i});return n(o,e)},onDragEnd:function(){this.computeIndexes(),Y=null}}};"undefined"!==typeof window&&"Vue"in window&&window.Vue.component("draggable",P);var C=P;e["default"]=C}})["default"]}))},b7e9:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration @@ -293,7 +293,7 @@ var e=t.defineLocale("fil",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_A //! moment.js locale configuration var e=t.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(t){return/^(ցերեկվա|երեկոյան)$/.test(t)},meridiem:function(t){return t<4?"գիշերվա":t<12?"առավոտվա":t<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(t,e){switch(e){case"DDD":case"w":case"W":case"DDDo":return 1===t?t+"-ին":t+"-րդ";default:return t}},week:{dow:1,doy:7}});return e}))},d716:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration -var e=t.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(t,e){var n=1===t?"r":2===t?"n":3===t?"r":4===t?"t":"è";return"w"!==e&&"W"!==e||(n="a"),t+n},week:{dow:1,doy:4}});return e}))},d784:function(t,e,n){"use strict";n("ac1f");var r=n("6eeb"),i=n("d039"),a=n("b622"),o=n("9112"),s=a("species"),c=!i((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),u=function(){return"$0"==="a".replace(/./,"$0")}(),l=a("replace"),d=function(){return!!/./[l]&&""===/./[l]("a","$0")}(),f=!i((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));t.exports=function(t,e,n,l){var h=a(t),p=!i((function(){var e={};return e[h]=function(){return 7},7!=""[t](e)})),m=p&&!i((function(){var e=!1,n=/a/;return"split"===t&&(n={},n.constructor={},n.constructor[s]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return e=!0,null},n[h](""),!e}));if(!p||!m||"replace"===t&&(!c||!u||d)||"split"===t&&!f){var b=/./[h],v=n(h,""[t],(function(t,e,n,r,i){return e.exec===RegExp.prototype.exec?p&&!i?{done:!0,value:b.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:d}),_=v[0],g=v[1];r(String.prototype,t,_),r(RegExp.prototype,h,2==e?function(t,e){return g.call(t,this,e)}:function(t){return g.call(t,this)})}l&&o(RegExp.prototype[h],"sham",!0)}},d81d:function(t,e,n){"use strict";var r=n("23e7"),i=n("b727").map,a=n("1dde"),o=a("map");r({target:"Array",proto:!0,forced:!o},{map:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}})},d82f:function(t,e,n){"use strict";n.d(e,"a",(function(){return s})),n.d(e,"c",(function(){return c})),n.d(e,"d",(function(){return u})),n.d(e,"e",(function(){return l})),n.d(e,"f",(function(){return d})),n.d(e,"h",(function(){return f})),n.d(e,"g",(function(){return h})),n.d(e,"n",(function(){return p})),n.d(e,"b",(function(){return m})),n.d(e,"k",(function(){return b})),n.d(e,"j",(function(){return v})),n.d(e,"i",(function(){return _})),n.d(e,"m",(function(){return g})),n.d(e,"l",(function(){return y}));var r=n("7b1e");function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function a(t){for(var e=1;e")})),d=function(){return"$0"==="a".replace(/./,"$0")}(),f=o("replace"),h=function(){return!!/./[f]&&""===/./[f]("a","$0")}(),p=!a((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));t.exports=function(t,e,n,f){var m=o(t),b=!a((function(){var e={};return e[m]=function(){return 7},7!=""[t](e)})),v=b&&!a((function(){var e=!1,n=/a/;return"split"===t&&(n={},n.constructor={},n.constructor[c]=function(){return n},n.flags="",n[m]=/./[m]),n.exec=function(){return e=!0,null},n[m](""),!e}));if(!b||!v||"replace"===t&&(!l||!d||h)||"split"===t&&!p){var _=/./[m],g=n(m,""[t],(function(t,e,n,r,a){var o=e.exec;return o===i||o===u.exec?b&&!a?{done:!0,value:_.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),{REPLACE_KEEPS_$0:d,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:h}),y=g[0],O=g[1];r(String.prototype,t,y),r(u,m,2==e?function(t,e){return O.call(t,this,e)}:function(t){return O.call(t,this)})}f&&s(u[m],"sham",!0)}},d81d:function(t,e,n){"use strict";var r=n("23e7"),i=n("b727").map,a=n("1dde"),o=a("map");r({target:"Array",proto:!0,forced:!o},{map:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}})},d82f:function(t,e,n){"use strict";n.d(e,"a",(function(){return s})),n.d(e,"c",(function(){return c})),n.d(e,"d",(function(){return u})),n.d(e,"e",(function(){return l})),n.d(e,"f",(function(){return d})),n.d(e,"h",(function(){return f})),n.d(e,"g",(function(){return h})),n.d(e,"n",(function(){return p})),n.d(e,"b",(function(){return m})),n.d(e,"k",(function(){return b})),n.d(e,"j",(function(){return v})),n.d(e,"i",(function(){return _})),n.d(e,"m",(function(){return g})),n.d(e,"l",(function(){return y}));var r=n("7b1e");function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function a(t){for(var e=1;e=10?t:t+12:"સાંજ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"રાત":t<10?"સવાર":t<17?"બપોર":t<20?"સાંજ":"રાત"},week:{dow:0,doy:6}});return r}))},e163:function(t,e,n){var r=n("5135"),i=n("7b0b"),a=n("f772"),o=n("e177"),s=a("IE_PROTO"),c=Object.prototype;t.exports=o?Object.getPrototypeOf:function(t){return t=i(t),r(t,s)?t[s]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?c:null}},e177:function(t,e,n){var r=n("d039");t.exports=!r((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},e1d3:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration -var e=t.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10,n=1===~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+n},week:{dow:1,doy:4}});return e}))},e260:function(t,e,n){"use strict";var r=n("fc6a"),i=n("44d2"),a=n("3f8c"),o=n("69f3"),s=n("7dd0"),c="Array Iterator",u=o.set,l=o.getterFor(c);t.exports=s(Array,"Array",(function(t,e){u(this,{type:c,target:r(t),index:0,kind:e})}),(function(){var t=l(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),"values"),a.Arguments=a.Array,i("keys"),i("values"),i("entries")},e2cc:function(t,e,n){var r=n("6eeb");t.exports=function(t,e,n){for(var i in e)r(t,i,e[i],n);return t}},e538:function(t,e,n){var r=n("b622");e.f=r},e667:function(t,e){t.exports=function(t){try{return{error:!1,value:t()}}catch(e){return{error:!0,value:e}}}},e683:function(t,e,n){"use strict";t.exports=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},e6cf:function(t,e,n){"use strict";var r,i,a,o,s=n("23e7"),c=n("c430"),u=n("da84"),l=n("d066"),d=n("fea9"),f=n("6eeb"),h=n("e2cc"),p=n("d44e"),m=n("2626"),b=n("861d"),v=n("1c0b"),_=n("19aa"),g=n("8925"),y=n("2266"),O=n("1c7e"),j=n("4840"),w=n("2cf4").set,M=n("b575"),L=n("cdf9"),k=n("44de"),T=n("f069"),D=n("e667"),S=n("69f3"),Y=n("94ca"),x=n("b622"),P=n("605d"),C=n("2d00"),E=x("species"),H="Promise",A=S.get,$=S.set,F=S.getterFor(H),I=d,B=u.TypeError,R=u.document,N=u.process,V=l("fetch"),z=T.f,W=z,U=!!(R&&R.createEvent&&u.dispatchEvent),G="function"==typeof PromiseRejectionEvent,J="unhandledrejection",q="rejectionhandled",K=0,X=1,Z=2,Q=1,tt=2,et=Y(H,(function(){var t=g(I)!==String(I);if(!t){if(66===C)return!0;if(!P&&!G)return!0}if(c&&!I.prototype["finally"])return!0;if(C>=51&&/native code/.test(I))return!1;var e=I.resolve(1),n=function(t){t((function(){}),(function(){}))},r=e.constructor={};return r[E]=n,!(e.then((function(){}))instanceof n)})),nt=et||!O((function(t){I.all(t)["catch"]((function(){}))})),rt=function(t){var e;return!(!b(t)||"function"!=typeof(e=t.then))&&e},it=function(t,e){if(!t.notified){t.notified=!0;var n=t.reactions;M((function(){var r=t.value,i=t.state==X,a=0;while(n.length>a){var o,s,c,u=n[a++],l=i?u.ok:u.fail,d=u.resolve,f=u.reject,h=u.domain;try{l?(i||(t.rejection===tt&&ct(t),t.rejection=Q),!0===l?o=r:(h&&h.enter(),o=l(r),h&&(h.exit(),c=!0)),o===u.promise?f(B("Promise-chain cycle")):(s=rt(o))?s.call(o,d,f):d(o)):f(r)}catch(p){h&&!c&&h.exit(),f(p)}}t.reactions=[],t.notified=!1,e&&!t.rejection&&ot(t)}))}},at=function(t,e,n){var r,i;U?(r=R.createEvent("Event"),r.promise=e,r.reason=n,r.initEvent(t,!1,!0),u.dispatchEvent(r)):r={promise:e,reason:n},!G&&(i=u["on"+t])?i(r):t===J&&k("Unhandled promise rejection",n)},ot=function(t){w.call(u,(function(){var e,n=t.facade,r=t.value,i=st(t);if(i&&(e=D((function(){P?N.emit("unhandledRejection",r,n):at(J,n,r)})),t.rejection=P||st(t)?tt:Q,e.error))throw e.value}))},st=function(t){return t.rejection!==Q&&!t.parent},ct=function(t){w.call(u,(function(){var e=t.facade;P?N.emit("rejectionHandled",e):at(q,e,t.value)}))},ut=function(t,e,n){return function(r){t(e,r,n)}},lt=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=Z,it(t,!0))},dt=function(t,e,n){if(!t.done){t.done=!0,n&&(t=n);try{if(t.facade===e)throw B("Promise can't be resolved itself");var r=rt(e);r?M((function(){var n={done:!1};try{r.call(e,ut(dt,n,t),ut(lt,n,t))}catch(i){lt(n,i,t)}})):(t.value=e,t.state=X,it(t,!1))}catch(i){lt({done:!1},i,t)}}};et&&(I=function(t){_(this,I,H),v(t),r.call(this);var e=A(this);try{t(ut(dt,e),ut(lt,e))}catch(n){lt(e,n)}},r=function(t){$(this,{type:H,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:K,value:void 0})},r.prototype=h(I.prototype,{then:function(t,e){var n=F(this),r=z(j(this,I));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=P?N.domain:void 0,n.parent=!0,n.reactions.push(r),n.state!=K&&it(n,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),i=function(){var t=new r,e=A(t);this.promise=t,this.resolve=ut(dt,e),this.reject=ut(lt,e)},T.f=z=function(t){return t===I||t===a?new i(t):W(t)},c||"function"!=typeof d||(o=d.prototype.then,f(d.prototype,"then",(function(t,e){var n=this;return new I((function(t,e){o.call(n,t,e)})).then(t,e)}),{unsafe:!0}),"function"==typeof V&&s({global:!0,enumerable:!0,forced:!0},{fetch:function(t){return L(I,V.apply(u,arguments))}}))),s({global:!0,wrap:!0,forced:et},{Promise:I}),p(I,H,!1,!0),m(H),a=l(H),s({target:H,stat:!0,forced:et},{reject:function(t){var e=z(this);return e.reject.call(void 0,t),e.promise}}),s({target:H,stat:!0,forced:c||et},{resolve:function(t){return L(c&&this===a?I:this,t)}}),s({target:H,stat:!0,forced:nt},{all:function(t){var e=this,n=z(e),r=n.resolve,i=n.reject,a=D((function(){var n=v(e.resolve),a=[],o=0,s=1;y(t,(function(t){var c=o++,u=!1;a.push(void 0),s++,n.call(e,t).then((function(t){u||(u=!0,a[c]=t,--s||r(a))}),i)})),--s||r(a)}));return a.error&&i(a.value),n.promise},race:function(t){var e=this,n=z(e),r=n.reject,i=D((function(){var i=v(e.resolve);y(t,(function(t){i.call(e,t).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}})},e81d:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; +var e=t.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10,n=1===~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+n},week:{dow:1,doy:4}});return e}))},e260:function(t,e,n){"use strict";var r=n("fc6a"),i=n("44d2"),a=n("3f8c"),o=n("69f3"),s=n("7dd0"),c="Array Iterator",u=o.set,l=o.getterFor(c);t.exports=s(Array,"Array",(function(t,e){u(this,{type:c,target:r(t),index:0,kind:e})}),(function(){var t=l(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),"values"),a.Arguments=a.Array,i("keys"),i("values"),i("entries")},e2cc:function(t,e,n){var r=n("6eeb");t.exports=function(t,e,n){for(var i in e)r(t,i,e[i],n);return t}},e538:function(t,e,n){var r=n("b622");e.f=r},e667:function(t,e){t.exports=function(t){try{return{error:!1,value:t()}}catch(e){return{error:!0,value:e}}}},e683:function(t,e,n){"use strict";t.exports=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},e6cf:function(t,e,n){"use strict";var r,i,a,o,s=n("23e7"),c=n("c430"),u=n("da84"),l=n("d066"),d=n("fea9"),f=n("6eeb"),h=n("e2cc"),p=n("d2bb"),m=n("d44e"),b=n("2626"),v=n("861d"),_=n("1c0b"),g=n("19aa"),y=n("8925"),O=n("2266"),j=n("1c7e"),w=n("4840"),M=n("2cf4").set,L=n("b575"),k=n("cdf9"),T=n("44de"),D=n("f069"),S=n("e667"),Y=n("69f3"),x=n("94ca"),P=n("b622"),C=n("6069"),E=n("605d"),H=n("2d00"),A=P("species"),$="Promise",F=Y.get,I=Y.set,B=Y.getterFor($),R=d&&d.prototype,N=d,V=R,z=u.TypeError,W=u.document,U=u.process,G=D.f,J=G,q=!!(W&&W.createEvent&&u.dispatchEvent),K="function"==typeof PromiseRejectionEvent,X="unhandledrejection",Z="rejectionhandled",Q=0,tt=1,et=2,nt=1,rt=2,it=!1,at=x($,(function(){var t=y(N)!==String(N);if(!t&&66===H)return!0;if(c&&!V["finally"])return!0;if(H>=51&&/native code/.test(N))return!1;var e=new N((function(t){t(1)})),n=function(t){t((function(){}),(function(){}))},r=e.constructor={};return r[A]=n,it=e.then((function(){}))instanceof n,!it||!t&&C&&!K})),ot=at||!j((function(t){N.all(t)["catch"]((function(){}))})),st=function(t){var e;return!(!v(t)||"function"!=typeof(e=t.then))&&e},ct=function(t,e){if(!t.notified){t.notified=!0;var n=t.reactions;L((function(){var r=t.value,i=t.state==tt,a=0;while(n.length>a){var o,s,c,u=n[a++],l=i?u.ok:u.fail,d=u.resolve,f=u.reject,h=u.domain;try{l?(i||(t.rejection===rt&&ft(t),t.rejection=nt),!0===l?o=r:(h&&h.enter(),o=l(r),h&&(h.exit(),c=!0)),o===u.promise?f(z("Promise-chain cycle")):(s=st(o))?s.call(o,d,f):d(o)):f(r)}catch(p){h&&!c&&h.exit(),f(p)}}t.reactions=[],t.notified=!1,e&&!t.rejection&<(t)}))}},ut=function(t,e,n){var r,i;q?(r=W.createEvent("Event"),r.promise=e,r.reason=n,r.initEvent(t,!1,!0),u.dispatchEvent(r)):r={promise:e,reason:n},!K&&(i=u["on"+t])?i(r):t===X&&T("Unhandled promise rejection",n)},lt=function(t){M.call(u,(function(){var e,n=t.facade,r=t.value,i=dt(t);if(i&&(e=S((function(){E?U.emit("unhandledRejection",r,n):ut(X,n,r)})),t.rejection=E||dt(t)?rt:nt,e.error))throw e.value}))},dt=function(t){return t.rejection!==nt&&!t.parent},ft=function(t){M.call(u,(function(){var e=t.facade;E?U.emit("rejectionHandled",e):ut(Z,e,t.value)}))},ht=function(t,e,n){return function(r){t(e,r,n)}},pt=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=et,ct(t,!0))},mt=function(t,e,n){if(!t.done){t.done=!0,n&&(t=n);try{if(t.facade===e)throw z("Promise can't be resolved itself");var r=st(e);r?L((function(){var n={done:!1};try{r.call(e,ht(mt,n,t),ht(pt,n,t))}catch(i){pt(n,i,t)}})):(t.value=e,t.state=tt,ct(t,!1))}catch(i){pt({done:!1},i,t)}}};if(at&&(N=function(t){g(this,N,$),_(t),r.call(this);var e=F(this);try{t(ht(mt,e),ht(pt,e))}catch(n){pt(e,n)}},V=N.prototype,r=function(t){I(this,{type:$,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:Q,value:void 0})},r.prototype=h(V,{then:function(t,e){var n=B(this),r=G(w(this,N));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=E?U.domain:void 0,n.parent=!0,n.reactions.push(r),n.state!=Q&&ct(n,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),i=function(){var t=new r,e=F(t);this.promise=t,this.resolve=ht(mt,e),this.reject=ht(pt,e)},D.f=G=function(t){return t===N||t===a?new i(t):J(t)},!c&&"function"==typeof d&&R!==Object.prototype)){o=R.then,it||(f(R,"then",(function(t,e){var n=this;return new N((function(t,e){o.call(n,t,e)})).then(t,e)}),{unsafe:!0}),f(R,"catch",V["catch"],{unsafe:!0}));try{delete R.constructor}catch(bt){}p&&p(R,V)}s({global:!0,wrap:!0,forced:at},{Promise:N}),m(N,$,!1,!0),b($),a=l($),s({target:$,stat:!0,forced:at},{reject:function(t){var e=G(this);return e.reject.call(void 0,t),e.promise}}),s({target:$,stat:!0,forced:c||at},{resolve:function(t){return k(c&&this===a?N:this,t)}}),s({target:$,stat:!0,forced:ot},{all:function(t){var e=this,n=G(e),r=n.resolve,i=n.reject,a=S((function(){var n=_(e.resolve),a=[],o=0,s=1;O(t,(function(t){var c=o++,u=!1;a.push(void 0),s++,n.call(e,t).then((function(t){u||(u=!0,a[c]=t,--s||r(a))}),i)})),--s||r(a)}));return a.error&&i(a.value),n.promise},race:function(t){var e=this,n=G(e),r=n.reject,i=S((function(){var i=_(e.resolve);O(t,(function(t){i.call(e,t).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}})},e81d:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; //! moment.js locale configuration var e={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"},r=t.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(t){return"ល្ងាច"===t},meridiem:function(t,e,n){return t<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(t){return t.replace(/[១២៣៤៥៦៧៨៩០]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},week:{dow:1,doy:4}});return r}))},e863:function(t,e,n){"use strict";n.d(e,"h",(function(){return r})),n.d(e,"f",(function(){return o})),n.d(e,"c",(function(){return s})),n.d(e,"i",(function(){return c})),n.d(e,"k",(function(){return u})),n.d(e,"a",(function(){return l})),n.d(e,"j",(function(){return h})),n.d(e,"d",(function(){return p})),n.d(e,"g",(function(){return m})),n.d(e,"e",(function(){return b})),n.d(e,"b",(function(){return v}));var r="undefined"!==typeof window,i="undefined"!==typeof document,a="undefined"!==typeof navigator,o="undefined"!==typeof Promise,s="undefined"!==typeof MutationObserver||"undefined"!==typeof WebKitMutationObserver||"undefined"!==typeof MozMutationObserver,c=r&&i&&a,u=r?window:{},l=i?document:{},d=a?navigator:{},f=(d.userAgent||"").toLowerCase(),h=f.indexOf("jsdom")>0,p=(/msie|trident/.test(f),function(){var t=!1;if(c)try{var e={get passive(){t=!0}};u.addEventListener("test",e,e),u.removeEventListener("test",e,e)}catch(n){t=!1}return t}()),m=c&&("ontouchstart"in l.documentElement||d.maxTouchPoints>0),b=c&&Boolean(u.PointerEvent||u.MSPointerEvent),v=c&&"IntersectionObserver"in u&&"IntersectionObserverEntry"in u&&"intersectionRatio"in u.IntersectionObserverEntry.prototype},e893:function(t,e,n){var r=n("5135"),i=n("56ef"),a=n("06cf"),o=n("9bf2");t.exports=function(t,e){for(var n=i(e),s=o.f,c=a.f,u=0;u{let n=t;return e.length>0&&(n+=" :: "+JSON.stringify(e)),n},a=i;class c extends Error{constructor(t,e){const n=a(t,e);super(n),this.name=t,this.details=e}}const s={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!==typeof registration?registration.scope:""},u=t=>[s.prefix,t,s.suffix].filter(t=>t&&t.length>0).join("-"),l=t=>{for(const e of Object.keys(s))t(e)},h={updateDetails:t=>{l(e=>{"string"===typeof t[e]&&(s[e]=t[e])})},getGoogleAnalyticsName:t=>t||u(s.googleAnalytics),getPrecacheName:t=>t||u(s.precache),getPrefix:()=>s.prefix,getRuntimeName:t=>t||u(s.runtime),getSuffix:()=>s.suffix};n("c700");let f;function p(){if(void 0===f){const e=new Response("");if("body"in e)try{new Response(e.body),f=!0}catch(t){f=!1}f=!1}return f}async function d(t,e){let n=null;if(t.url){const e=new URL(t.url);n=e.origin}if(n!==self.location.origin)throw new c("cross-origin-copy-response",{origin:n});const r=t.clone(),o={headers:new Headers(r.headers),status:r.status,statusText:r.statusText},i=e?e(o):o,a=p()?r.body:await r.blob();return new Response(a,i)}const g=t=>{const e=new URL(String(t),location.href);return e.href.replace(new RegExp("^"+location.origin),"")};function y(t,e){const n=new URL(t);for(const r of e)n.searchParams.delete(r);return n.href}async function m(t,e,n,r){const o=y(e.url,n);if(e.url===o)return t.match(e,r);const i={...r,ignoreSearch:!0},a=await t.keys(e,i);for(const c of a){const e=y(c.url,n);if(o===e)return t.match(c,r)}}class v{constructor(){this.promise=new Promise((t,e)=>{this.resolve=t,this.reject=e})}}const w=new Set;async function b(){for(const t of w)await t()}function x(t){return new Promise(e=>setTimeout(e,t))}n("6aa8");function _(t){return"string"===typeof t?new Request(t):t}class E{constructor(t,e){this._cacheKeys={},Object.assign(this,e),this.event=e.event,this._strategy=t,this._handlerDeferred=new v,this._extendLifetimePromises=[],this._plugins=[...t.plugins],this._pluginStateMap=new Map;for(const n of this._plugins)this._pluginStateMap.set(n,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(t){const{event:e}=this;let n=_(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const r=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(i){throw new c("plugin-error-request-will-fetch",{thrownError:i})}const o=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this._strategy.fetchOptions);for(const n of this.iterateCallbacks("fetchDidSucceed"))t=await n({event:e,request:o,response:t});return t}catch(a){throw r&&await this.runCallbacks("fetchDidFail",{error:a,event:e,originalRequest:r.clone(),request:o.clone()}),a}}async fetchAndCachePut(t){const e=await this.fetch(t),n=e.clone();return this.waitUntil(this.cachePut(t,n)),e}async cacheMatch(t){const e=_(t);let n;const{cacheName:r,matchOptions:o}=this._strategy,i=await this.getCacheKey(e,"read"),a={...o,cacheName:r};n=await caches.match(i,a);for(const c of this.iterateCallbacks("cachedResponseWillBeUsed"))n=await c({cacheName:r,matchOptions:o,cachedResponse:n,request:i,event:this.event})||void 0;return n}async cachePut(t,e){const n=_(t);await x(0);const r=await this.getCacheKey(n,"write");if(!e)throw new c("cache-put-with-no-response",{url:g(r.url)});const o=await this._ensureResponseSafeToCache(e);if(!o)return!1;const{cacheName:i,matchOptions:a}=this._strategy,s=await self.caches.open(i),u=this.hasCallback("cacheDidUpdate"),l=u?await m(s,r.clone(),["__WB_REVISION__"],a):null;try{await s.put(r,u?o.clone():o)}catch(h){throw"QuotaExceededError"===h.name&&await b(),h}for(const c of this.iterateCallbacks("cacheDidUpdate"))await c({cacheName:i,oldResponse:l,newResponse:o.clone(),request:r,event:this.event});return!0}async getCacheKey(t,e){if(!this._cacheKeys[e]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=_(await t({mode:e,request:n,event:this.event,params:this.params}));this._cacheKeys[e]=n}return this._cacheKeys[e]}hasCallback(t){for(const e of this._strategy.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const n of this.iterateCallbacks(t))await n(e)}*iterateCallbacks(t){for(const e of this._strategy.plugins)if("function"===typeof e[t]){const n=this._pluginStateMap.get(e),r=r=>{const o={...r,state:n};return e[t](o)};yield r}}waitUntil(t){return this._extendLifetimePromises.push(t),t}async doneWaiting(){let t;while(t=this._extendLifetimePromises.shift())await t}destroy(){this._handlerDeferred.resolve()}async _ensureResponseSafeToCache(t){let e=t,n=!1;for(const r of this.iterateCallbacks("cacheWillUpdate"))if(e=await r({request:this.request,response:e,event:this.event})||void 0,n=!0,!e)break;return n||e&&200!==e.status&&(e=void 0),e}}class R{constructor(t={}){this.cacheName=h.getRuntimeName(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,n="string"===typeof t.request?new Request(t.request):t.request,r="params"in t?t.params:void 0,o=new E(this,{event:e,request:n,params:r}),i=this._getResponse(o,n,e),a=this._awaitComplete(i,o,n,e);return[i,a]}async _getResponse(t,e,n){await t.runCallbacks("handlerWillStart",{event:n,request:e});let r=void 0;try{if(r=await this._handle(e,t),!r||"error"===r.type)throw new c("no-response",{url:e.url})}catch(o){for(const i of t.iterateCallbacks("handlerDidError"))if(r=await i({error:o,event:n,request:e}),r)break;if(!r)throw o}for(const i of t.iterateCallbacks("handlerWillRespond"))r=await i({event:n,request:e,response:r});return r}async _awaitComplete(t,e,n,r){let o,i;try{o=await t}catch(i){}try{await e.runCallbacks("handlerDidRespond",{event:r,request:n,response:o}),await e.doneWaiting()}catch(a){i=a}if(await e.runCallbacks("handlerDidComplete",{event:r,request:n,response:o,error:i}),e.destroy(),i)throw i}}class S extends R{constructor(t={}){t.cacheName=h.getPrecacheName(t.cacheName),super(t),this._fallbackToNetwork=!1!==t.fallbackToNetwork,this.plugins.push(S.copyRedirectedCacheableResponsesPlugin)}async _handle(t,e){const n=await e.cacheMatch(t);return n||(e.event&&"install"===e.event.type?await this._handleInstall(t,e):await this._handleFetch(t,e))}async _handleFetch(t,e){let n;if(!this._fallbackToNetwork)throw new c("missing-precache-entry",{cacheName:this.cacheName,url:t.url});return n=await e.fetch(t),n}async _handleInstall(t,e){this._useDefaultCacheabilityPluginIfNeeded();const n=await e.fetch(t),r=await e.cachePut(t,n.clone());if(!r)throw new c("bad-precaching-response",{url:t.url,status:n.status});return n}_useDefaultCacheabilityPluginIfNeeded(){let t=null,e=0;for(const[n,r]of this.plugins.entries())r!==S.copyRedirectedCacheableResponsesPlugin&&(r===S.defaultPrecacheCacheabilityPlugin&&(t=n),r.cacheWillUpdate&&e++);0===e?this.plugins.push(S.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}S.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:t}){return!t||t.status>=400?null:t}},S.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:t}){return t.redirected?await d(t):t}};n("e6d2");const O="GET",P=t=>t&&"object"===typeof t?t:{handle:t};class N{constructor(t,e,n=O){this.handler=P(e),this.match=t,this.method=n}setCatchHandler(t){this.catchHandler=P(t)}}class T extends N{constructor(t,e,n){const r=({url:e})=>{const n=t.exec(e.href);if(n&&(e.origin===location.origin||0===n.index))return n.slice(1)};super(r,e,n)}}class j{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",t=>{const{request:e}=t,n=this.handleRequest({request:e,event:t});n&&t.respondWith(n)})}addCacheListener(){self.addEventListener("message",t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data;0;const n=Promise.all(e.urlsToCache.map(e=>{"string"===typeof e&&(e=[e]);const n=new Request(...e);return this.handleRequest({request:n,event:t})}));t.waitUntil(n),t.ports&&t.ports[0]&&n.then(()=>t.ports[0].postMessage(!0))}})}handleRequest({request:t,event:e}){const n=new URL(t.url,location.href);if(!n.protocol.startsWith("http"))return void 0;const r=n.origin===location.origin,{params:o,route:i}=this.findMatchingRoute({event:e,request:t,sameOrigin:r,url:n});let a=i&&i.handler;const c=t.method;if(!a&&this._defaultHandlerMap.has(c)&&(a=this._defaultHandlerMap.get(c)),!a)return void 0;let s;try{s=a.handle({url:n,request:t,event:e,params:o})}catch(l){s=Promise.reject(l)}const u=i&&i.catchHandler;return s instanceof Promise&&(this._catchHandler||u)&&(s=s.catch(async r=>{if(u){0;try{return await u.handle({url:n,request:t,event:e,params:o})}catch(i){r=i}}if(this._catchHandler)return this._catchHandler.handle({url:n,request:t,event:e});throw r})),s}findMatchingRoute({url:t,sameOrigin:e,request:n,event:r}){const o=this._routes.get(n.method)||[];for(const i of o){let o;const a=i.match({url:t,sameOrigin:e,request:n,event:r});if(a)return o=a,(Array.isArray(a)&&0===a.length||a.constructor===Object&&0===Object.keys(a).length||"boolean"===typeof a)&&(o=void 0),{route:i,params:o}}return{}}setDefaultHandler(t,e=O){this._defaultHandlerMap.set(e,P(t))}setCatchHandler(t){this._catchHandler=P(t)}registerRoute(t){this._routes.has(t.method)||this._routes.set(t.method,[]),this._routes.get(t.method).push(t)}unregisterRoute(t){if(!this._routes.has(t.method))throw new c("unregister-route-but-not-found-with-method",{method:t.method});const e=this._routes.get(t.method).indexOf(t);if(!(e>-1))throw new c("unregister-route-route-not-registered");this._routes.get(t.method).splice(e,1)}}let k;const C=()=>(k||(k=new j,k.addFetchListener(),k.addCacheListener()),k);function q(t,e,n){let r;if("string"===typeof t){const o=new URL(t,location.href);0;const i=({url:t})=>t.href===o.href;r=new N(i,e,n)}else if(t instanceof RegExp)r=new T(t,e,n);else if("function"===typeof t)r=new N(t,e,n);else{if(!(t instanceof N))throw new c("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});r=t}const o=C();return o.registerRoute(r),r}function A(t){const e=C();e.setCatchHandler(t)}class L extends R{async _handle(t,e){let n,r=await e.cacheMatch(t);if(r)0;else{0;try{r=await e.fetchAndCachePut(t)}catch(o){n=o}0}if(!r)throw new c("no-response",{url:t.url,error:n});return r}}const M={cacheWillUpdate:async({response:t})=>200===t.status||0===t.status?t:null};class U extends R{constructor(t={}){super(t),this.plugins.some(t=>"cacheWillUpdate"in t)||this.plugins.unshift(M),this._networkTimeoutSeconds=t.networkTimeoutSeconds||0}async _handle(t,e){const n=[];const r=[];let o;if(this._networkTimeoutSeconds){const{id:i,promise:a}=this._getTimeoutPromise({request:t,logs:n,handler:e});o=i,r.push(a)}const i=this._getNetworkPromise({timeoutId:o,request:t,logs:n,handler:e});r.push(i);const a=await e.waitUntil((async()=>await e.waitUntil(Promise.race(r))||await i)());if(!a)throw new c("no-response",{url:t.url});return a}_getTimeoutPromise({request:t,logs:e,handler:n}){let r;const o=new Promise(e=>{const o=async()=>{e(await n.cacheMatch(t))};r=setTimeout(o,1e3*this._networkTimeoutSeconds)});return{promise:o,id:r}}async _getNetworkPromise({timeoutId:t,request:e,logs:n,handler:r}){let o,i;try{i=await r.fetchAndCachePut(e)}catch(a){o=a}return t&&clearTimeout(t),!o&&i||(i=await r.cacheMatch(e)),i}}class I extends R{constructor(t){super(t),this.plugins.some(t=>"cacheWillUpdate"in t)||this.plugins.unshift(M)}async _handle(t,e){const n=e.fetchAndCachePut(t).catch(()=>{});let r,o=await e.cacheMatch(t);if(o)0;else{0;try{o=await n}catch(i){r=i}}if(!o)throw new c("no-response",{url:t.url,error:r});return o}}function D(t){t.then(()=>{})}class F{constructor(t,e,{onupgradeneeded:n,onversionchange:r}={}){this._db=null,this._name=t,this._version=e,this._onupgradeneeded=n,this._onversionchange=r||(()=>this.close())}get db(){return this._db}async open(){if(!this._db)return this._db=await new Promise((t,e)=>{let n=!1;setTimeout(()=>{n=!0,e(new Error("The open request was blocked and timed out"))},this.OPEN_TIMEOUT);const r=indexedDB.open(this._name,this._version);r.onerror=()=>e(r.error),r.onupgradeneeded=t=>{n?(r.transaction.abort(),r.result.close()):"function"===typeof this._onupgradeneeded&&this._onupgradeneeded(t)},r.onsuccess=()=>{const e=r.result;n?e.close():(e.onversionchange=this._onversionchange.bind(this),t(e))}}),this}async getKey(t,e){return(await this.getAllKeys(t,e,1))[0]}async getAll(t,e,n){return await this.getAllMatching(t,{query:e,count:n})}async getAllKeys(t,e,n){const r=await this.getAllMatching(t,{query:e,count:n,includeKeys:!0});return r.map(t=>t.key)}async getAllMatching(t,{index:e,query:n=null,direction:r="next",count:o,includeKeys:i=!1}={}){return await this.transaction([t],"readonly",(a,c)=>{const s=a.objectStore(t),u=e?s.index(e):s,l=[],h=u.openCursor(n,r);h.onsuccess=()=>{const t=h.result;t?(l.push(i?t:t.value),o&&l.length>=o?c(l):t.continue()):c(l)}})}async transaction(t,e,n){return await this.open(),await new Promise((r,o)=>{const i=this._db.transaction(t,e);i.onabort=()=>o(i.error),i.oncomplete=()=>r(),n(i,t=>r(t))})}async _call(t,e,n,...r){const o=(n,o)=>{const i=n.objectStore(e),a=i[t].apply(i,r);a.onsuccess=()=>o(a.result)};return await this.transaction([e],n,o)}close(){this._db&&(this._db.close(),this._db=null)}}F.prototype.OPEN_TIMEOUT=2e3;const W={readonly:["get","count","getKey","getAll","getAllKeys"],readwrite:["add","put","clear","delete"]};for(const[X,Z]of Object.entries(W))for(const t of Z)t in IDBObjectStore.prototype&&(F.prototype[t]=async function(e,...n){return await this._call(t,e,X,...n)});const H=async t=>{await new Promise((e,n)=>{const r=indexedDB.deleteDatabase(t);r.onerror=()=>{n(r.error)},r.onblocked=()=>{n(new Error("Delete blocked"))},r.onsuccess=()=>{e()}})};n("d8a5");const K="workbox-expiration",G="cache-entries",B=t=>{const e=new URL(t,location.href);return e.hash="",e.href};class z{constructor(t){this._cacheName=t,this._db=new F(K,1,{onupgradeneeded:t=>this._handleUpgrade(t)})}_handleUpgrade(t){const e=t.target.result,n=e.createObjectStore(G,{keyPath:"id"});n.createIndex("cacheName","cacheName",{unique:!1}),n.createIndex("timestamp","timestamp",{unique:!1}),H(this._cacheName)}async setTimestamp(t,e){t=B(t);const n={url:t,timestamp:e,cacheName:this._cacheName,id:this._getId(t)};await this._db.put(G,n)}async getTimestamp(t){const e=await this._db.get(G,this._getId(t));return e.timestamp}async expireEntries(t,e){const n=await this._db.transaction(G,"readwrite",(n,r)=>{const o=n.objectStore(G),i=o.index("timestamp").openCursor(null,"prev"),a=[];let c=0;i.onsuccess=()=>{const n=i.result;if(n){const r=n.value;r.cacheName===this._cacheName&&(t&&r.timestamp=e?a.push(n.value):c++),n.continue()}else r(a)}}),r=[];for(const o of n)await this._db.delete(G,o.id),r.push(o.url);return r}_getId(t){return this._cacheName+"|"+B(t)}}class Y{constructor(t,e={}){this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=e.maxEntries,this._maxAgeSeconds=e.maxAgeSeconds,this._matchOptions=e.matchOptions,this._cacheName=t,this._timestampModel=new z(t)}async expireEntries(){if(this._isRunning)return void(this._rerunRequested=!0);this._isRunning=!0;const t=this._maxAgeSeconds?Date.now()-1e3*this._maxAgeSeconds:0,e=await this._timestampModel.expireEntries(t,this._maxEntries),n=await self.caches.open(this._cacheName);for(const r of e)await n.delete(r,this._matchOptions);this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,D(this.expireEntries()))}async updateTimestamp(t){await this._timestampModel.setTimestamp(t,Date.now())}async isURLExpired(t){if(this._maxAgeSeconds){const e=await this._timestampModel.getTimestamp(t),n=Date.now()-1e3*this._maxAgeSeconds;return e{if(!r)return null;const o=this._isResponseDateFresh(r),i=this._getCacheExpiration(n);D(i.expireEntries());const a=i.updateTimestamp(e.url);if(t)try{t.waitUntil(a)}catch(c){0}return o?r:null},this.cacheDidUpdate=async({cacheName:t,request:e})=>{const n=this._getCacheExpiration(t);await n.updateTimestamp(e.url),await n.expireEntries()},this._config=t,this._maxAgeSeconds=t.maxAgeSeconds,this._cacheExpirations=new Map,t.purgeOnQuotaError&&$(()=>this.deleteCacheAndMetadata())}_getCacheExpiration(t){if(t===h.getRuntimeName())throw new c("expire-custom-caches-only");let e=this._cacheExpirations.get(t);return e||(e=new Y(t,this._config),this._cacheExpirations.set(t,e)),e}_isResponseDateFresh(t){if(!this._maxAgeSeconds)return!0;const e=this._getDateHeaderTimestamp(t);if(null===e)return!0;const n=Date.now();return e>=n-1e3*this._maxAgeSeconds}_getDateHeaderTimestamp(t){if(!t.headers.has("date"))return null;const e=t.headers.get("date"),n=new Date(e),r=n.getTime();return isNaN(r)?null:r}async deleteCacheAndMetadata(){for(const[t,e]of this._cacheExpirations)await self.caches.delete(t),await e.delete();this._cacheExpirations=new Map}}var V="offline-html",J="/offline/";self.addEventListener("install",function(){var t=o(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:e.waitUntil(caches.open(V).then((function(t){return t.add(new Request(J,{cache:"reload"}))})));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()),[{'url':'static/vue/css/chunk-vendors.css'},{'url':'static/vue/import_response_view.html'},{'url':'static/vue/js/chunk-vendors.js'},{'url':'static/vue/js/import_response_view.js'},{'url':'static/vue/js/offline_view.js'},{'url':'static/vue/js/recipe_search_view.js'},{'url':'static/vue/js/recipe_view.js'},{'url':'static/vue/js/supermarket_view.js'},{'url':'static/vue/js/user_file_view.js'},{'url':'static/vue/manifest.json'},{'url':'static/vue/offline_view.html'},{'url':'static/vue/recipe_search_view.html'},{'url':'static/vue/recipe_view.html'},{'url':'static/vue/supermarket_view.html'},{'url':'static/vue/user_file_view.html'}],A((function(t){var e=t.event;switch(e.request.destination){case"document":return console.log("Triggered fallback HTML"),caches.open(V).then((function(t){return t.match(J)}));default:return console.log("Triggered response ERROR"),Response.error()}})),q((function(t){var e=t.request;return"image"===e.destination}),new L({cacheName:"images",plugins:[new Q({maxEntries:20})]})),q((function(t){var e=t.request;return"script"===e.destination||"style"===e.destination}),new I({cacheName:"assets"})),q(new RegExp("jsreverse"),new I({cacheName:"assets"})),q(new RegExp("jsi18n"),new I({cacheName:"assets"})),q(new RegExp("api/recipe/([0-9]+)"),new U({cacheName:"api-recipe",plugins:[new Q({maxEntries:50})]})),q(new RegExp("api/*"),new U({cacheName:"api",plugins:[new Q({maxEntries:50})]})),q((function(t){var e=t.request;return"document"===e.destination}),new U({cacheName:"html",plugins:[new Q({maxAgeSeconds:2592e3,maxEntries:50})]}))},"25f0":function(t,e,n){"use strict";var r=n("6eeb"),o=n("825a"),i=n("d039"),a=n("ad6d"),c="toString",s=RegExp.prototype,u=s[c],l=i((function(){return"/a/b"!=u.call({source:"a",flags:"b"})})),h=u.name!=c;(l||h)&&r(RegExp.prototype,c,(function(){var t=o(this),e=String(t.source),n=t.flags,r=String(void 0===n&&t instanceof RegExp&&!("flags"in s)?a.call(t):n);return"/"+e+"/"+r}),{unsafe:!0})},2626:function(t,e,n){"use strict";var r=n("d066"),o=n("9bf2"),i=n("b622"),a=n("83ab"),c=i("species");t.exports=function(t){var e=r(t),n=o.f;a&&e&&!e[c]&&n(e,c,{configurable:!0,get:function(){return this}})}},"2d00":function(t,e,n){var r,o,i=n("da84"),a=n("342f"),c=i.process,s=c&&c.versions,u=s&&s.v8;u?(r=u.split("."),o=r[0]+r[1]):a&&(r=a.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/),r&&(o=r[1]))),t.exports=o&&+o},"342f":function(t,e,n){var r=n("d066");t.exports=r("navigator","userAgent")||""},"3bbe":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},"428f":function(t,e,n){var r=n("da84");t.exports=r},"44ad":function(t,e,n){var r=n("d039"),o=n("c6b6"),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},"44e7":function(t,e,n){var r=n("861d"),o=n("c6b6"),i=n("b622"),a=i("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[a])?!!e:"RegExp"==o(t))}},"466d":function(t,e,n){"use strict";var r=n("d784"),o=n("825a"),i=n("50c4"),a=n("1d80"),c=n("8aa5"),s=n("14c3");r("match",1,(function(t,e,n){return[function(e){var n=a(this),r=void 0==e?void 0:e[t];return void 0!==r?r.call(e,n):new RegExp(e)[t](String(n))},function(t){var r=n(e,t,this);if(r.done)return r.value;var a=o(t),u=String(this);if(!a.global)return s(a,u);var l=a.unicode;a.lastIndex=0;var h,f=[],p=0;while(null!==(h=s(a,u))){var d=String(h[0]);f[p]=d,""===d&&(a.lastIndex=c(u,i(a.lastIndex),l)),p++}return 0===p?null:f}]}))},4930:function(t,e,n){var r=n("605d"),o=n("2d00"),i=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!i((function(){return!Symbol.sham&&(r?38===o:o>37&&o<41)}))},"4d63":function(t,e,n){var r=n("83ab"),o=n("da84"),i=n("94ca"),a=n("7156"),c=n("9bf2").f,s=n("241c").f,u=n("44e7"),l=n("ad6d"),h=n("9f7f"),f=n("6eeb"),p=n("d039"),d=n("69f3").enforce,g=n("2626"),y=n("b622"),m=y("match"),v=o.RegExp,w=v.prototype,b=/a/g,x=/a/g,_=new v(b)!==b,E=h.UNSUPPORTED_Y,R=r&&i("RegExp",!_||E||p((function(){return x[m]=!1,v(b)!=b||v(x)==x||"/a/i"!=v(b,"i")})));if(R){var S=function(t,e){var n,r=this instanceof S,o=u(t),i=void 0===e;if(!r&&o&&t.constructor===S&&i)return t;_?o&&!i&&(t=t.source):t instanceof S&&(i&&(e=l.call(t)),t=t.source),E&&(n=!!e&&e.indexOf("y")>-1,n&&(e=e.replace(/y/g,"")));var c=a(_?new v(t,e):v(t,e),r?this:w,S);if(E&&n){var s=d(c);s.sticky=!0}return c},O=function(t){t in S||c(S,t,{configurable:!0,get:function(){return v[t]},set:function(e){v[t]=e}})},P=s(v),N=0;while(P.length>N)O(P[N++]);w.constructor=S,S.prototype=w,f(o,"RegExp",S)}g("RegExp")},"4d64":function(t,e,n){var r=n("fc6a"),o=n("50c4"),i=n("23cb"),a=function(t){return function(e,n,a){var c,s=r(e),u=o(s.length),l=i(a,u);if(t&&n!=n){while(u>l)if(c=s[l++],c!=c)return!0}else for(;u>l;l++)if((t||l in s)&&s[l]===n)return t||l||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},"50c4":function(t,e,n){var r=n("a691"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},5135:function(t,e,n){var r=n("7b0b"),o={}.hasOwnProperty;t.exports=function(t,e){return o.call(r(t),e)}},5692:function(t,e,n){var r=n("c430"),o=n("c6cd");(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.11.0",mode:r?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},"56ef":function(t,e,n){var r=n("d066"),o=n("241c"),i=n("7418"),a=n("825a");t.exports=r("Reflect","ownKeys")||function(t){var e=o.f(a(t)),n=i.f;return n?e.concat(n(t)):e}},"5c6c":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"605d":function(t,e,n){var r=n("c6b6"),o=n("da84");t.exports="process"==r(o.process)},6547:function(t,e,n){var r=n("a691"),o=n("1d80"),i=function(t){return function(e,n){var i,a,c=String(o(e)),s=r(n),u=c.length;return s<0||s>=u?t?"":void 0:(i=c.charCodeAt(s),i<55296||i>56319||s+1===u||(a=c.charCodeAt(s+1))<56320||a>57343?t?c.charAt(s):i:t?c.slice(s,s+2):a-56320+(i-55296<<10)+65536)}};t.exports={codeAt:i(!1),charAt:i(!0)}},"69f3":function(t,e,n){var r,o,i,a=n("7f9a"),c=n("da84"),s=n("861d"),u=n("9112"),l=n("5135"),h=n("c6cd"),f=n("f772"),p=n("d012"),d="Object already initialized",g=c.WeakMap,y=function(t){return i(t)?o(t):r(t,{})},m=function(t){return function(e){var n;if(!s(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}};if(a){var v=h.state||(h.state=new g),w=v.get,b=v.has,x=v.set;r=function(t,e){if(b.call(v,t))throw new TypeError(d);return e.facade=t,x.call(v,t,e),e},o=function(t){return w.call(v,t)||{}},i=function(t){return b.call(v,t)}}else{var _=f("state");p[_]=!0,r=function(t,e){if(l(t,_))throw new TypeError(d);return e.facade=t,u(t,_,e),e},o=function(t){return l(t,_)?t[_]:{}},i=function(t){return l(t,_)}}t.exports={set:r,get:o,has:i,enforce:y,getterFor:m}},"6aa8":function(t,e,n){"use strict";try{self["workbox:strategies:6.1.5"]&&_()}catch(r){}},"6eeb":function(t,e,n){var r=n("da84"),o=n("9112"),i=n("5135"),a=n("ce4e"),c=n("8925"),s=n("69f3"),u=s.get,l=s.enforce,h=String(String).split("String");(t.exports=function(t,e,n,c){var s,u=!!c&&!!c.unsafe,f=!!c&&!!c.enumerable,p=!!c&&!!c.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||o(n,"name",e),s=l(n),s.source||(s.source=h.join("string"==typeof e?e:""))),t!==r?(u?!p&&t[e]&&(f=!0):delete t[e],f?t[e]=n:o(t,e,n)):f?t[e]=n:a(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&u(this).source||c(this)}))},7156:function(t,e,n){var r=n("861d"),o=n("d2bb");t.exports=function(t,e,n){var i,a;return o&&"function"==typeof(i=e.constructor)&&i!==n&&r(a=i.prototype)&&a!==n.prototype&&o(t,a),t}},7418:function(t,e){e.f=Object.getOwnPropertySymbols},7839:function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7b0b":function(t,e,n){var r=n("1d80");t.exports=function(t){return Object(r(t))}},"7f9a":function(t,e,n){var r=n("da84"),o=n("8925"),i=r.WeakMap;t.exports="function"===typeof i&&/native code/.test(o(i))},"825a":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},"83ab":function(t,e,n){var r=n("d039");t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},"861d":function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},8925:function(t,e,n){var r=n("c6cd"),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(t){return o.call(t)}),t.exports=r.inspectSource},"8aa5":function(t,e,n){"use strict";var r=n("6547").charAt;t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},"90e3":function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++n+r).toString(36)}},9112:function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("5c6c");t.exports=r?function(t,e,n){return o.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},9263:function(t,e,n){"use strict";var r=n("ad6d"),o=n("9f7f"),i=n("5692"),a=RegExp.prototype.exec,c=i("native-string-replace",String.prototype.replace),s=a,u=function(){var t=/a/,e=/b*/g;return a.call(t,"a"),a.call(e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),l=o.UNSUPPORTED_Y||o.BROKEN_CARET,h=void 0!==/()??/.exec("")[1],f=u||h||l;f&&(s=function(t){var e,n,o,i,s=this,f=l&&s.sticky,p=r.call(s),d=s.source,g=0,y=t;return f&&(p=p.replace("y",""),-1===p.indexOf("g")&&(p+="g"),y=String(t).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==t[s.lastIndex-1])&&(d="(?: "+d+")",y=" "+y,g++),n=new RegExp("^(?:"+d+")",p)),h&&(n=new RegExp("^"+d+"$(?!\\s)",p)),u&&(e=s.lastIndex),o=a.call(f?n:s,y),f?o?(o.input=o.input.slice(g),o[0]=o[0].slice(g),o.index=s.lastIndex,s.lastIndex+=o[0].length):s.lastIndex=0:u&&o&&(s.lastIndex=s.global?o.index+o[0].length:e),h&&o&&o.length>1&&c.call(o[0],n,(function(){for(i=1;i=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=r.call(a,"catchLoc"),u=r.call(a,"finallyLoc");if(s&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),N(n),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;N(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:j(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),g}},t}(t.exports);try{regeneratorRuntime=r}catch(o){Function("r","regeneratorRuntime = r")(r)}},"9bf2":function(t,e,n){var r=n("83ab"),o=n("0cfb"),i=n("825a"),a=n("c04e"),c=Object.defineProperty;e.f=r?c:function(t,e,n){if(i(t),e=a(e,!0),i(n),o)try{return c(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},"9f7f":function(t,e,n){"use strict";var r=n("d039");function o(t,e){return RegExp(t,e)}e.UNSUPPORTED_Y=r((function(){var t=o("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),e.BROKEN_CARET=r((function(){var t=o("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},a691:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},ac1f:function(t,e,n){"use strict";var r=n("23e7"),o=n("9263");r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},ad6d:function(t,e,n){"use strict";var r=n("825a");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},b041:function(t,e,n){"use strict";var r=n("00ee"),o=n("f5df");t.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},b622:function(t,e,n){var r=n("da84"),o=n("5692"),i=n("5135"),a=n("90e3"),c=n("4930"),s=n("fdbf"),u=o("wks"),l=r.Symbol,h=s?l:l&&l.withoutSetter||a;t.exports=function(t){return i(u,t)&&(c||"string"==typeof u[t])||(c&&i(l,t)?u[t]=l[t]:u[t]=h("Symbol."+t)),u[t]}},c04e:function(t,e,n){var r=n("861d");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},c430:function(t,e){t.exports=!1},c6b6:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},c6cd:function(t,e,n){var r=n("da84"),o=n("ce4e"),i="__core-js_shared__",a=r[i]||o(i,{});t.exports=a},c700:function(t,e,n){"use strict";try{self["workbox:precaching:6.1.5"]&&_()}catch(r){}},c8ba:function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}t.exports=n},ca84:function(t,e,n){var r=n("5135"),o=n("fc6a"),i=n("4d64").indexOf,a=n("d012");t.exports=function(t,e){var n,c=o(t),s=0,u=[];for(n in c)!r(a,n)&&r(c,n)&&u.push(n);while(e.length>s)r(c,n=e[s++])&&(~i(u,n)||u.push(n));return u}},cc12:function(t,e,n){var r=n("da84"),o=n("861d"),i=r.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},ce4e:function(t,e,n){var r=n("da84"),o=n("9112");t.exports=function(t,e){try{o(r,t,e)}catch(n){r[t]=e}return e}},d012:function(t,e){t.exports={}},d039:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},d066:function(t,e,n){var r=n("428f"),o=n("da84"),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},d1e7:function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},d2bb:function(t,e,n){var r=n("825a"),o=n("3bbe");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,t.call(n,[]),e=n instanceof Array}catch(i){}return function(n,i){return r(n),o(i),e?t.call(n,i):n.__proto__=i,n}}():void 0)},d3b7:function(t,e,n){var r=n("00ee"),o=n("6eeb"),i=n("b041");r||o(Object.prototype,"toString",i,{unsafe:!0})},d784:function(t,e,n){"use strict";n("ac1f");var r=n("6eeb"),o=n("d039"),i=n("b622"),a=n("9112"),c=i("species"),s=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),u=function(){return"$0"==="a".replace(/./,"$0")}(),l=i("replace"),h=function(){return!!/./[l]&&""===/./[l]("a","$0")}(),f=!o((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));t.exports=function(t,e,n,l){var p=i(t),d=!o((function(){var e={};return e[p]=function(){return 7},7!=""[t](e)})),g=d&&!o((function(){var e=!1,n=/a/;return"split"===t&&(n={},n.constructor={},n.constructor[c]=function(){return n},n.flags="",n[p]=/./[p]),n.exec=function(){return e=!0,null},n[p](""),!e}));if(!d||!g||"replace"===t&&(!s||!u||h)||"split"===t&&!f){var y=/./[p],m=n(p,""[t],(function(t,e,n,r,o){return e.exec===RegExp.prototype.exec?d&&!o?{done:!0,value:y.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:h}),v=m[0],w=m[1];r(String.prototype,t,v),r(RegExp.prototype,p,2==e?function(t,e){return w.call(t,this,e)}:function(t){return w.call(t,this)})}l&&a(RegExp.prototype[p],"sham",!0)}},d8a5:function(t,e,n){"use strict";try{self["workbox:expiration:6.1.5"]&&_()}catch(r){}},da84:function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||function(){return this}()||Function("return this")()}).call(this,n("c8ba"))},e6d2:function(t,e,n){"use strict";try{self["workbox:routing:6.1.5"]&&_()}catch(r){}},e893:function(t,e,n){var r=n("5135"),o=n("56ef"),i=n("06cf"),a=n("9bf2");t.exports=function(t,e){for(var n=o(e),c=a.f,s=i.f,u=0;u{let n=t;return e.length>0&&(n+=" :: "+JSON.stringify(e)),n},a=i;class c extends Error{constructor(t,e){const n=a(t,e);super(n),this.name=t,this.details=e}}const s={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!==typeof registration?registration.scope:""},u=t=>[s.prefix,t,s.suffix].filter(t=>t&&t.length>0).join("-"),l=t=>{for(const e of Object.keys(s))t(e)},h={updateDetails:t=>{l(e=>{"string"===typeof t[e]&&(s[e]=t[e])})},getGoogleAnalyticsName:t=>t||u(s.googleAnalytics),getPrecacheName:t=>t||u(s.precache),getPrefix:()=>s.prefix,getRuntimeName:t=>t||u(s.runtime),getSuffix:()=>s.suffix};n("c700");let f;function p(){if(void 0===f){const e=new Response("");if("body"in e)try{new Response(e.body),f=!0}catch(t){f=!1}f=!1}return f}async function d(t,e){let n=null;if(t.url){const e=new URL(t.url);n=e.origin}if(n!==self.location.origin)throw new c("cross-origin-copy-response",{origin:n});const r=t.clone(),o={headers:new Headers(r.headers),status:r.status,statusText:r.statusText},i=e?e(o):o,a=p()?r.body:await r.blob();return new Response(a,i)}const g=t=>{const e=new URL(String(t),location.href);return e.href.replace(new RegExp("^"+location.origin),"")};function y(t,e){const n=new URL(t);for(const r of e)n.searchParams.delete(r);return n.href}async function m(t,e,n,r){const o=y(e.url,n);if(e.url===o)return t.match(e,r);const i={...r,ignoreSearch:!0},a=await t.keys(e,i);for(const c of a){const e=y(c.url,n);if(o===e)return t.match(c,r)}}class v{constructor(){this.promise=new Promise((t,e)=>{this.resolve=t,this.reject=e})}}const w=new Set;async function b(){for(const t of w)await t()}function x(t){return new Promise(e=>setTimeout(e,t))}n("6aa8");function _(t){return"string"===typeof t?new Request(t):t}class E{constructor(t,e){this._cacheKeys={},Object.assign(this,e),this.event=e.event,this._strategy=t,this._handlerDeferred=new v,this._extendLifetimePromises=[],this._plugins=[...t.plugins],this._pluginStateMap=new Map;for(const n of this._plugins)this._pluginStateMap.set(n,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(t){const{event:e}=this;let n=_(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const r=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(i){throw new c("plugin-error-request-will-fetch",{thrownError:i})}const o=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this._strategy.fetchOptions);for(const n of this.iterateCallbacks("fetchDidSucceed"))t=await n({event:e,request:o,response:t});return t}catch(a){throw r&&await this.runCallbacks("fetchDidFail",{error:a,event:e,originalRequest:r.clone(),request:o.clone()}),a}}async fetchAndCachePut(t){const e=await this.fetch(t),n=e.clone();return this.waitUntil(this.cachePut(t,n)),e}async cacheMatch(t){const e=_(t);let n;const{cacheName:r,matchOptions:o}=this._strategy,i=await this.getCacheKey(e,"read"),a={...o,cacheName:r};n=await caches.match(i,a);for(const c of this.iterateCallbacks("cachedResponseWillBeUsed"))n=await c({cacheName:r,matchOptions:o,cachedResponse:n,request:i,event:this.event})||void 0;return n}async cachePut(t,e){const n=_(t);await x(0);const r=await this.getCacheKey(n,"write");if(!e)throw new c("cache-put-with-no-response",{url:g(r.url)});const o=await this._ensureResponseSafeToCache(e);if(!o)return!1;const{cacheName:i,matchOptions:a}=this._strategy,s=await self.caches.open(i),u=this.hasCallback("cacheDidUpdate"),l=u?await m(s,r.clone(),["__WB_REVISION__"],a):null;try{await s.put(r,u?o.clone():o)}catch(h){throw"QuotaExceededError"===h.name&&await b(),h}for(const c of this.iterateCallbacks("cacheDidUpdate"))await c({cacheName:i,oldResponse:l,newResponse:o.clone(),request:r,event:this.event});return!0}async getCacheKey(t,e){if(!this._cacheKeys[e]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=_(await t({mode:e,request:n,event:this.event,params:this.params}));this._cacheKeys[e]=n}return this._cacheKeys[e]}hasCallback(t){for(const e of this._strategy.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const n of this.iterateCallbacks(t))await n(e)}*iterateCallbacks(t){for(const e of this._strategy.plugins)if("function"===typeof e[t]){const n=this._pluginStateMap.get(e),r=r=>{const o={...r,state:n};return e[t](o)};yield r}}waitUntil(t){return this._extendLifetimePromises.push(t),t}async doneWaiting(){let t;while(t=this._extendLifetimePromises.shift())await t}destroy(){this._handlerDeferred.resolve()}async _ensureResponseSafeToCache(t){let e=t,n=!1;for(const r of this.iterateCallbacks("cacheWillUpdate"))if(e=await r({request:this.request,response:e,event:this.event})||void 0,n=!0,!e)break;return n||e&&200!==e.status&&(e=void 0),e}}class R{constructor(t={}){this.cacheName=h.getRuntimeName(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,n="string"===typeof t.request?new Request(t.request):t.request,r="params"in t?t.params:void 0,o=new E(this,{event:e,request:n,params:r}),i=this._getResponse(o,n,e),a=this._awaitComplete(i,o,n,e);return[i,a]}async _getResponse(t,e,n){await t.runCallbacks("handlerWillStart",{event:n,request:e});let r=void 0;try{if(r=await this._handle(e,t),!r||"error"===r.type)throw new c("no-response",{url:e.url})}catch(o){for(const i of t.iterateCallbacks("handlerDidError"))if(r=await i({error:o,event:n,request:e}),r)break;if(!r)throw o}for(const i of t.iterateCallbacks("handlerWillRespond"))r=await i({event:n,request:e,response:r});return r}async _awaitComplete(t,e,n,r){let o,i;try{o=await t}catch(i){}try{await e.runCallbacks("handlerDidRespond",{event:r,request:n,response:o}),await e.doneWaiting()}catch(a){i=a}if(await e.runCallbacks("handlerDidComplete",{event:r,request:n,response:o,error:i}),e.destroy(),i)throw i}}class S extends R{constructor(t={}){t.cacheName=h.getPrecacheName(t.cacheName),super(t),this._fallbackToNetwork=!1!==t.fallbackToNetwork,this.plugins.push(S.copyRedirectedCacheableResponsesPlugin)}async _handle(t,e){const n=await e.cacheMatch(t);return n||(e.event&&"install"===e.event.type?await this._handleInstall(t,e):await this._handleFetch(t,e))}async _handleFetch(t,e){let n;if(!this._fallbackToNetwork)throw new c("missing-precache-entry",{cacheName:this.cacheName,url:t.url});return n=await e.fetch(t),n}async _handleInstall(t,e){this._useDefaultCacheabilityPluginIfNeeded();const n=await e.fetch(t),r=await e.cachePut(t,n.clone());if(!r)throw new c("bad-precaching-response",{url:t.url,status:n.status});return n}_useDefaultCacheabilityPluginIfNeeded(){let t=null,e=0;for(const[n,r]of this.plugins.entries())r!==S.copyRedirectedCacheableResponsesPlugin&&(r===S.defaultPrecacheCacheabilityPlugin&&(t=n),r.cacheWillUpdate&&e++);0===e?this.plugins.push(S.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}S.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:t}){return!t||t.status>=400?null:t}},S.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:t}){return t.redirected?await d(t):t}};n("e6d2");const O="GET",P=t=>t&&"object"===typeof t?t:{handle:t};class N{constructor(t,e,n=O){this.handler=P(e),this.match=t,this.method=n}setCatchHandler(t){this.catchHandler=P(t)}}class T extends N{constructor(t,e,n){const r=({url:e})=>{const n=t.exec(e.href);if(n&&(e.origin===location.origin||0===n.index))return n.slice(1)};super(r,e,n)}}class j{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",t=>{const{request:e}=t,n=this.handleRequest({request:e,event:t});n&&t.respondWith(n)})}addCacheListener(){self.addEventListener("message",t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data;0;const n=Promise.all(e.urlsToCache.map(e=>{"string"===typeof e&&(e=[e]);const n=new Request(...e);return this.handleRequest({request:n,event:t})}));t.waitUntil(n),t.ports&&t.ports[0]&&n.then(()=>t.ports[0].postMessage(!0))}})}handleRequest({request:t,event:e}){const n=new URL(t.url,location.href);if(!n.protocol.startsWith("http"))return void 0;const r=n.origin===location.origin,{params:o,route:i}=this.findMatchingRoute({event:e,request:t,sameOrigin:r,url:n});let a=i&&i.handler;const c=t.method;if(!a&&this._defaultHandlerMap.has(c)&&(a=this._defaultHandlerMap.get(c)),!a)return void 0;let s;try{s=a.handle({url:n,request:t,event:e,params:o})}catch(l){s=Promise.reject(l)}const u=i&&i.catchHandler;return s instanceof Promise&&(this._catchHandler||u)&&(s=s.catch(async r=>{if(u){0;try{return await u.handle({url:n,request:t,event:e,params:o})}catch(i){r=i}}if(this._catchHandler)return this._catchHandler.handle({url:n,request:t,event:e});throw r})),s}findMatchingRoute({url:t,sameOrigin:e,request:n,event:r}){const o=this._routes.get(n.method)||[];for(const i of o){let o;const a=i.match({url:t,sameOrigin:e,request:n,event:r});if(a)return o=a,(Array.isArray(a)&&0===a.length||a.constructor===Object&&0===Object.keys(a).length||"boolean"===typeof a)&&(o=void 0),{route:i,params:o}}return{}}setDefaultHandler(t,e=O){this._defaultHandlerMap.set(e,P(t))}setCatchHandler(t){this._catchHandler=P(t)}registerRoute(t){this._routes.has(t.method)||this._routes.set(t.method,[]),this._routes.get(t.method).push(t)}unregisterRoute(t){if(!this._routes.has(t.method))throw new c("unregister-route-but-not-found-with-method",{method:t.method});const e=this._routes.get(t.method).indexOf(t);if(!(e>-1))throw new c("unregister-route-route-not-registered");this._routes.get(t.method).splice(e,1)}}let k;const C=()=>(k||(k=new j,k.addFetchListener(),k.addCacheListener()),k);function q(t,e,n){let r;if("string"===typeof t){const o=new URL(t,location.href);0;const i=({url:t})=>t.href===o.href;r=new N(i,e,n)}else if(t instanceof RegExp)r=new T(t,e,n);else if("function"===typeof t)r=new N(t,e,n);else{if(!(t instanceof N))throw new c("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});r=t}const o=C();return o.registerRoute(r),r}function A(t){const e=C();e.setCatchHandler(t)}class L extends R{async _handle(t,e){let n,r=await e.cacheMatch(t);if(r)0;else{0;try{r=await e.fetchAndCachePut(t)}catch(o){n=o}0}if(!r)throw new c("no-response",{url:t.url,error:n});return r}}const M={cacheWillUpdate:async({response:t})=>200===t.status||0===t.status?t:null};class U extends R{constructor(t={}){super(t),this.plugins.some(t=>"cacheWillUpdate"in t)||this.plugins.unshift(M),this._networkTimeoutSeconds=t.networkTimeoutSeconds||0}async _handle(t,e){const n=[];const r=[];let o;if(this._networkTimeoutSeconds){const{id:i,promise:a}=this._getTimeoutPromise({request:t,logs:n,handler:e});o=i,r.push(a)}const i=this._getNetworkPromise({timeoutId:o,request:t,logs:n,handler:e});r.push(i);const a=await e.waitUntil((async()=>await e.waitUntil(Promise.race(r))||await i)());if(!a)throw new c("no-response",{url:t.url});return a}_getTimeoutPromise({request:t,logs:e,handler:n}){let r;const o=new Promise(e=>{const o=async()=>{e(await n.cacheMatch(t))};r=setTimeout(o,1e3*this._networkTimeoutSeconds)});return{promise:o,id:r}}async _getNetworkPromise({timeoutId:t,request:e,logs:n,handler:r}){let o,i;try{i=await r.fetchAndCachePut(e)}catch(a){o=a}return t&&clearTimeout(t),!o&&i||(i=await r.cacheMatch(e)),i}}class I extends R{constructor(t){super(t),this.plugins.some(t=>"cacheWillUpdate"in t)||this.plugins.unshift(M)}async _handle(t,e){const n=e.fetchAndCachePut(t).catch(()=>{});let r,o=await e.cacheMatch(t);if(o)0;else{0;try{o=await n}catch(i){r=i}}if(!o)throw new c("no-response",{url:t.url,error:r});return o}}function D(t){t.then(()=>{})}class F{constructor(t,e,{onupgradeneeded:n,onversionchange:r}={}){this._db=null,this._name=t,this._version=e,this._onupgradeneeded=n,this._onversionchange=r||(()=>this.close())}get db(){return this._db}async open(){if(!this._db)return this._db=await new Promise((t,e)=>{let n=!1;setTimeout(()=>{n=!0,e(new Error("The open request was blocked and timed out"))},this.OPEN_TIMEOUT);const r=indexedDB.open(this._name,this._version);r.onerror=()=>e(r.error),r.onupgradeneeded=t=>{n?(r.transaction.abort(),r.result.close()):"function"===typeof this._onupgradeneeded&&this._onupgradeneeded(t)},r.onsuccess=()=>{const e=r.result;n?e.close():(e.onversionchange=this._onversionchange.bind(this),t(e))}}),this}async getKey(t,e){return(await this.getAllKeys(t,e,1))[0]}async getAll(t,e,n){return await this.getAllMatching(t,{query:e,count:n})}async getAllKeys(t,e,n){const r=await this.getAllMatching(t,{query:e,count:n,includeKeys:!0});return r.map(t=>t.key)}async getAllMatching(t,{index:e,query:n=null,direction:r="next",count:o,includeKeys:i=!1}={}){return await this.transaction([t],"readonly",(a,c)=>{const s=a.objectStore(t),u=e?s.index(e):s,l=[],h=u.openCursor(n,r);h.onsuccess=()=>{const t=h.result;t?(l.push(i?t:t.value),o&&l.length>=o?c(l):t.continue()):c(l)}})}async transaction(t,e,n){return await this.open(),await new Promise((r,o)=>{const i=this._db.transaction(t,e);i.onabort=()=>o(i.error),i.oncomplete=()=>r(),n(i,t=>r(t))})}async _call(t,e,n,...r){const o=(n,o)=>{const i=n.objectStore(e),a=i[t].apply(i,r);a.onsuccess=()=>o(a.result)};return await this.transaction([e],n,o)}close(){this._db&&(this._db.close(),this._db=null)}}F.prototype.OPEN_TIMEOUT=2e3;const W={readonly:["get","count","getKey","getAll","getAllKeys"],readwrite:["add","put","clear","delete"]};for(const[X,Z]of Object.entries(W))for(const t of Z)t in IDBObjectStore.prototype&&(F.prototype[t]=async function(e,...n){return await this._call(t,e,X,...n)});const H=async t=>{await new Promise((e,n)=>{const r=indexedDB.deleteDatabase(t);r.onerror=()=>{n(r.error)},r.onblocked=()=>{n(new Error("Delete blocked"))},r.onsuccess=()=>{e()}})};n("d8a5");const K="workbox-expiration",G="cache-entries",B=t=>{const e=new URL(t,location.href);return e.hash="",e.href};class z{constructor(t){this._cacheName=t,this._db=new F(K,1,{onupgradeneeded:t=>this._handleUpgrade(t)})}_handleUpgrade(t){const e=t.target.result,n=e.createObjectStore(G,{keyPath:"id"});n.createIndex("cacheName","cacheName",{unique:!1}),n.createIndex("timestamp","timestamp",{unique:!1}),H(this._cacheName)}async setTimestamp(t,e){t=B(t);const n={url:t,timestamp:e,cacheName:this._cacheName,id:this._getId(t)};await this._db.put(G,n)}async getTimestamp(t){const e=await this._db.get(G,this._getId(t));return e.timestamp}async expireEntries(t,e){const n=await this._db.transaction(G,"readwrite",(n,r)=>{const o=n.objectStore(G),i=o.index("timestamp").openCursor(null,"prev"),a=[];let c=0;i.onsuccess=()=>{const n=i.result;if(n){const r=n.value;r.cacheName===this._cacheName&&(t&&r.timestamp=e?a.push(n.value):c++),n.continue()}else r(a)}}),r=[];for(const o of n)await this._db.delete(G,o.id),r.push(o.url);return r}_getId(t){return this._cacheName+"|"+B(t)}}class Y{constructor(t,e={}){this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=e.maxEntries,this._maxAgeSeconds=e.maxAgeSeconds,this._matchOptions=e.matchOptions,this._cacheName=t,this._timestampModel=new z(t)}async expireEntries(){if(this._isRunning)return void(this._rerunRequested=!0);this._isRunning=!0;const t=this._maxAgeSeconds?Date.now()-1e3*this._maxAgeSeconds:0,e=await this._timestampModel.expireEntries(t,this._maxEntries),n=await self.caches.open(this._cacheName);for(const r of e)await n.delete(r,this._matchOptions);this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,D(this.expireEntries()))}async updateTimestamp(t){await this._timestampModel.setTimestamp(t,Date.now())}async isURLExpired(t){if(this._maxAgeSeconds){const e=await this._timestampModel.getTimestamp(t),n=Date.now()-1e3*this._maxAgeSeconds;return e{if(!r)return null;const o=this._isResponseDateFresh(r),i=this._getCacheExpiration(n);D(i.expireEntries());const a=i.updateTimestamp(e.url);if(t)try{t.waitUntil(a)}catch(c){0}return o?r:null},this.cacheDidUpdate=async({cacheName:t,request:e})=>{const n=this._getCacheExpiration(t);await n.updateTimestamp(e.url),await n.expireEntries()},this._config=t,this._maxAgeSeconds=t.maxAgeSeconds,this._cacheExpirations=new Map,t.purgeOnQuotaError&&$(()=>this.deleteCacheAndMetadata())}_getCacheExpiration(t){if(t===h.getRuntimeName())throw new c("expire-custom-caches-only");let e=this._cacheExpirations.get(t);return e||(e=new Y(t,this._config),this._cacheExpirations.set(t,e)),e}_isResponseDateFresh(t){if(!this._maxAgeSeconds)return!0;const e=this._getDateHeaderTimestamp(t);if(null===e)return!0;const n=Date.now();return e>=n-1e3*this._maxAgeSeconds}_getDateHeaderTimestamp(t){if(!t.headers.has("date"))return null;const e=t.headers.get("date"),n=new Date(e),r=n.getTime();return isNaN(r)?null:r}async deleteCacheAndMetadata(){for(const[t,e]of this._cacheExpirations)await self.caches.delete(t),await e.delete();this._cacheExpirations=new Map}}var V="offline-html",J="/offline/";self.addEventListener("install",function(){var t=o(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:e.waitUntil(caches.open(V).then((function(t){return t.add(new Request(J,{cache:"reload"}))})));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()),[{'url':'static/vue/css/chunk-vendors.css'},{'url':'static/vue/import_response_view.html'},{'url':'static/vue/js/chunk-vendors.js'},{'url':'static/vue/js/import_response_view.js'},{'url':'static/vue/js/offline_view.js'},{'url':'static/vue/js/recipe_search_view.js'},{'url':'static/vue/js/recipe_view.js'},{'url':'static/vue/js/supermarket_view.js'},{'url':'static/vue/js/user_file_view.js'},{'url':'static/vue/manifest.json'},{'url':'static/vue/offline_view.html'},{'url':'static/vue/recipe_search_view.html'},{'url':'static/vue/recipe_view.html'},{'url':'static/vue/supermarket_view.html'},{'url':'static/vue/user_file_view.html'}],A((function(t){var e=t.event;switch(e.request.destination){case"document":return console.log("Triggered fallback HTML"),caches.open(V).then((function(t){return t.match(J)}));default:return console.log("Triggered response ERROR"),Response.error()}})),q((function(t){var e=t.request;return"image"===e.destination}),new L({cacheName:"images",plugins:[new Q({maxEntries:20})]})),q((function(t){var e=t.request;return"script"===e.destination||"style"===e.destination}),new I({cacheName:"assets"})),q(new RegExp("jsreverse"),new I({cacheName:"assets"})),q(new RegExp("jsi18n"),new I({cacheName:"assets"})),q(new RegExp("api/recipe/([0-9]+)"),new U({cacheName:"api-recipe",plugins:[new Q({maxEntries:50})]})),q(new RegExp("api/*"),new U({cacheName:"api",plugins:[new Q({maxEntries:50})]})),q((function(t){var e=t.request;return"document"===e.destination}),new U({cacheName:"html",plugins:[new Q({maxAgeSeconds:2592e3,maxEntries:50})]}))},"25f0":function(t,e,n){"use strict";var r=n("6eeb"),o=n("825a"),i=n("d039"),a=n("ad6d"),c="toString",s=RegExp.prototype,u=s[c],l=i((function(){return"/a/b"!=u.call({source:"a",flags:"b"})})),h=u.name!=c;(l||h)&&r(RegExp.prototype,c,(function(){var t=o(this),e=String(t.source),n=t.flags,r=String(void 0===n&&t instanceof RegExp&&!("flags"in s)?a.call(t):n);return"/"+e+"/"+r}),{unsafe:!0})},2626:function(t,e,n){"use strict";var r=n("d066"),o=n("9bf2"),i=n("b622"),a=n("83ab"),c=i("species");t.exports=function(t){var e=r(t),n=o.f;a&&e&&!e[c]&&n(e,c,{configurable:!0,get:function(){return this}})}},"2d00":function(t,e,n){var r,o,i=n("da84"),a=n("342f"),c=i.process,s=c&&c.versions,u=s&&s.v8;u?(r=u.split("."),o=r[0]<4?1:r[0]+r[1]):a&&(r=a.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/),r&&(o=r[1]))),t.exports=o&&+o},"342f":function(t,e,n){var r=n("d066");t.exports=r("navigator","userAgent")||""},"3bbe":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},"428f":function(t,e,n){var r=n("da84");t.exports=r},"44ad":function(t,e,n){var r=n("d039"),o=n("c6b6"),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},"44e7":function(t,e,n){var r=n("861d"),o=n("c6b6"),i=n("b622"),a=i("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[a])?!!e:"RegExp"==o(t))}},"466d":function(t,e,n){"use strict";var r=n("d784"),o=n("825a"),i=n("50c4"),a=n("1d80"),c=n("8aa5"),s=n("14c3");r("match",1,(function(t,e,n){return[function(e){var n=a(this),r=void 0==e?void 0:e[t];return void 0!==r?r.call(e,n):new RegExp(e)[t](String(n))},function(t){var r=n(e,t,this);if(r.done)return r.value;var a=o(t),u=String(this);if(!a.global)return s(a,u);var l=a.unicode;a.lastIndex=0;var h,f=[],p=0;while(null!==(h=s(a,u))){var d=String(h[0]);f[p]=d,""===d&&(a.lastIndex=c(u,i(a.lastIndex),l)),p++}return 0===p?null:f}]}))},4930:function(t,e,n){var r=n("2d00"),o=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!o((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},"4d63":function(t,e,n){var r=n("83ab"),o=n("da84"),i=n("94ca"),a=n("7156"),c=n("9bf2").f,s=n("241c").f,u=n("44e7"),l=n("ad6d"),h=n("9f7f"),f=n("6eeb"),p=n("d039"),d=n("69f3").enforce,g=n("2626"),y=n("b622"),m=y("match"),v=o.RegExp,w=v.prototype,b=/a/g,x=/a/g,_=new v(b)!==b,E=h.UNSUPPORTED_Y,R=r&&i("RegExp",!_||E||p((function(){return x[m]=!1,v(b)!=b||v(x)==x||"/a/i"!=v(b,"i")})));if(R){var S=function(t,e){var n,r=this instanceof S,o=u(t),i=void 0===e;if(!r&&o&&t.constructor===S&&i)return t;_?o&&!i&&(t=t.source):t instanceof S&&(i&&(e=l.call(t)),t=t.source),E&&(n=!!e&&e.indexOf("y")>-1,n&&(e=e.replace(/y/g,"")));var c=a(_?new v(t,e):v(t,e),r?this:w,S);if(E&&n){var s=d(c);s.sticky=!0}return c},O=function(t){t in S||c(S,t,{configurable:!0,get:function(){return v[t]},set:function(e){v[t]=e}})},P=s(v),N=0;while(P.length>N)O(P[N++]);w.constructor=S,S.prototype=w,f(o,"RegExp",S)}g("RegExp")},"4d64":function(t,e,n){var r=n("fc6a"),o=n("50c4"),i=n("23cb"),a=function(t){return function(e,n,a){var c,s=r(e),u=o(s.length),l=i(a,u);if(t&&n!=n){while(u>l)if(c=s[l++],c!=c)return!0}else for(;u>l;l++)if((t||l in s)&&s[l]===n)return t||l||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},"50c4":function(t,e,n){var r=n("a691"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},5135:function(t,e,n){var r=n("7b0b"),o={}.hasOwnProperty;t.exports=Object.hasOwn||function(t,e){return o.call(r(t),e)}},5692:function(t,e,n){var r=n("c430"),o=n("c6cd");(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.14.0",mode:r?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},"56ef":function(t,e,n){var r=n("d066"),o=n("241c"),i=n("7418"),a=n("825a");t.exports=r("Reflect","ownKeys")||function(t){var e=o.f(a(t)),n=i.f;return n?e.concat(n(t)):e}},"5c6c":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},6547:function(t,e,n){var r=n("a691"),o=n("1d80"),i=function(t){return function(e,n){var i,a,c=String(o(e)),s=r(n),u=c.length;return s<0||s>=u?t?"":void 0:(i=c.charCodeAt(s),i<55296||i>56319||s+1===u||(a=c.charCodeAt(s+1))<56320||a>57343?t?c.charAt(s):i:t?c.slice(s,s+2):a-56320+(i-55296<<10)+65536)}};t.exports={codeAt:i(!1),charAt:i(!0)}},"69f3":function(t,e,n){var r,o,i,a=n("7f9a"),c=n("da84"),s=n("861d"),u=n("9112"),l=n("5135"),h=n("c6cd"),f=n("f772"),p=n("d012"),d="Object already initialized",g=c.WeakMap,y=function(t){return i(t)?o(t):r(t,{})},m=function(t){return function(e){var n;if(!s(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}};if(a||h.state){var v=h.state||(h.state=new g),w=v.get,b=v.has,x=v.set;r=function(t,e){if(b.call(v,t))throw new TypeError(d);return e.facade=t,x.call(v,t,e),e},o=function(t){return w.call(v,t)||{}},i=function(t){return b.call(v,t)}}else{var _=f("state");p[_]=!0,r=function(t,e){if(l(t,_))throw new TypeError(d);return e.facade=t,u(t,_,e),e},o=function(t){return l(t,_)?t[_]:{}},i=function(t){return l(t,_)}}t.exports={set:r,get:o,has:i,enforce:y,getterFor:m}},"6aa8":function(t,e,n){"use strict";try{self["workbox:strategies:6.1.5"]&&_()}catch(r){}},"6eeb":function(t,e,n){var r=n("da84"),o=n("9112"),i=n("5135"),a=n("ce4e"),c=n("8925"),s=n("69f3"),u=s.get,l=s.enforce,h=String(String).split("String");(t.exports=function(t,e,n,c){var s,u=!!c&&!!c.unsafe,f=!!c&&!!c.enumerable,p=!!c&&!!c.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||o(n,"name",e),s=l(n),s.source||(s.source=h.join("string"==typeof e?e:""))),t!==r?(u?!p&&t[e]&&(f=!0):delete t[e],f?t[e]=n:o(t,e,n)):f?t[e]=n:a(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&u(this).source||c(this)}))},7156:function(t,e,n){var r=n("861d"),o=n("d2bb");t.exports=function(t,e,n){var i,a;return o&&"function"==typeof(i=e.constructor)&&i!==n&&r(a=i.prototype)&&a!==n.prototype&&o(t,a),t}},7418:function(t,e){e.f=Object.getOwnPropertySymbols},7839:function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7b0b":function(t,e,n){var r=n("1d80");t.exports=function(t){return Object(r(t))}},"7f9a":function(t,e,n){var r=n("da84"),o=n("8925"),i=r.WeakMap;t.exports="function"===typeof i&&/native code/.test(o(i))},"825a":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},"83ab":function(t,e,n){var r=n("d039");t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},"861d":function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},8925:function(t,e,n){var r=n("c6cd"),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(t){return o.call(t)}),t.exports=r.inspectSource},"8aa5":function(t,e,n){"use strict";var r=n("6547").charAt;t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},"90e3":function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++n+r).toString(36)}},9112:function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("5c6c");t.exports=r?function(t,e,n){return o.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},9263:function(t,e,n){"use strict";var r=n("ad6d"),o=n("9f7f"),i=n("5692"),a=RegExp.prototype.exec,c=i("native-string-replace",String.prototype.replace),s=a,u=function(){var t=/a/,e=/b*/g;return a.call(t,"a"),a.call(e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),l=o.UNSUPPORTED_Y||o.BROKEN_CARET,h=void 0!==/()??/.exec("")[1],f=u||h||l;f&&(s=function(t){var e,n,o,i,s=this,f=l&&s.sticky,p=r.call(s),d=s.source,g=0,y=t;return f&&(p=p.replace("y",""),-1===p.indexOf("g")&&(p+="g"),y=String(t).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==t[s.lastIndex-1])&&(d="(?: "+d+")",y=" "+y,g++),n=new RegExp("^(?:"+d+")",p)),h&&(n=new RegExp("^"+d+"$(?!\\s)",p)),u&&(e=s.lastIndex),o=a.call(f?n:s,y),f?o?(o.input=o.input.slice(g),o[0]=o[0].slice(g),o.index=s.lastIndex,s.lastIndex+=o[0].length):s.lastIndex=0:u&&o&&(s.lastIndex=s.global?o.index+o[0].length:e),h&&o&&o.length>1&&c.call(o[0],n,(function(){for(i=1;i=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=r.call(a,"catchLoc"),u=r.call(a,"finallyLoc");if(s&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),N(n),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;N(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:j(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),g}},t}(t.exports);try{regeneratorRuntime=r}catch(o){Function("r","regeneratorRuntime = r")(r)}},"9bf2":function(t,e,n){var r=n("83ab"),o=n("0cfb"),i=n("825a"),a=n("c04e"),c=Object.defineProperty;e.f=r?c:function(t,e,n){if(i(t),e=a(e,!0),i(n),o)try{return c(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},"9f7f":function(t,e,n){"use strict";var r=n("d039");function o(t,e){return RegExp(t,e)}e.UNSUPPORTED_Y=r((function(){var t=o("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),e.BROKEN_CARET=r((function(){var t=o("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},a691:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},ac1f:function(t,e,n){"use strict";var r=n("23e7"),o=n("9263");r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},ad6d:function(t,e,n){"use strict";var r=n("825a");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},b041:function(t,e,n){"use strict";var r=n("00ee"),o=n("f5df");t.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},b622:function(t,e,n){var r=n("da84"),o=n("5692"),i=n("5135"),a=n("90e3"),c=n("4930"),s=n("fdbf"),u=o("wks"),l=r.Symbol,h=s?l:l&&l.withoutSetter||a;t.exports=function(t){return i(u,t)&&(c||"string"==typeof u[t])||(c&&i(l,t)?u[t]=l[t]:u[t]=h("Symbol."+t)),u[t]}},c04e:function(t,e,n){var r=n("861d");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},c430:function(t,e){t.exports=!1},c6b6:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},c6cd:function(t,e,n){var r=n("da84"),o=n("ce4e"),i="__core-js_shared__",a=r[i]||o(i,{});t.exports=a},c700:function(t,e,n){"use strict";try{self["workbox:precaching:6.1.5"]&&_()}catch(r){}},c8ba:function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}t.exports=n},ca84:function(t,e,n){var r=n("5135"),o=n("fc6a"),i=n("4d64").indexOf,a=n("d012");t.exports=function(t,e){var n,c=o(t),s=0,u=[];for(n in c)!r(a,n)&&r(c,n)&&u.push(n);while(e.length>s)r(c,n=e[s++])&&(~i(u,n)||u.push(n));return u}},cc12:function(t,e,n){var r=n("da84"),o=n("861d"),i=r.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},ce4e:function(t,e,n){var r=n("da84"),o=n("9112");t.exports=function(t,e){try{o(r,t,e)}catch(n){r[t]=e}return e}},d012:function(t,e){t.exports={}},d039:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},d066:function(t,e,n){var r=n("428f"),o=n("da84"),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},d1e7:function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},d2bb:function(t,e,n){var r=n("825a"),o=n("3bbe");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,t.call(n,[]),e=n instanceof Array}catch(i){}return function(n,i){return r(n),o(i),e?t.call(n,i):n.__proto__=i,n}}():void 0)},d3b7:function(t,e,n){var r=n("00ee"),o=n("6eeb"),i=n("b041");r||o(Object.prototype,"toString",i,{unsafe:!0})},d784:function(t,e,n){"use strict";n("ac1f");var r=n("6eeb"),o=n("9263"),i=n("d039"),a=n("b622"),c=n("9112"),s=a("species"),u=RegExp.prototype,l=!i((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),h=function(){return"$0"==="a".replace(/./,"$0")}(),f=a("replace"),p=function(){return!!/./[f]&&""===/./[f]("a","$0")}(),d=!i((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));t.exports=function(t,e,n,f){var g=a(t),y=!i((function(){var e={};return e[g]=function(){return 7},7!=""[t](e)})),m=y&&!i((function(){var e=!1,n=/a/;return"split"===t&&(n={},n.constructor={},n.constructor[s]=function(){return n},n.flags="",n[g]=/./[g]),n.exec=function(){return e=!0,null},n[g](""),!e}));if(!y||!m||"replace"===t&&(!l||!h||p)||"split"===t&&!d){var v=/./[g],w=n(g,""[t],(function(t,e,n,r,i){var a=e.exec;return a===o||a===u.exec?y&&!i?{done:!0,value:v.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),{REPLACE_KEEPS_$0:h,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:p}),b=w[0],x=w[1];r(String.prototype,t,b),r(u,g,2==e?function(t,e){return x.call(t,this,e)}:function(t){return x.call(t,this)})}f&&c(u[g],"sham",!0)}},d8a5:function(t,e,n){"use strict";try{self["workbox:expiration:6.1.5"]&&_()}catch(r){}},da84:function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||function(){return this}()||Function("return this")()}).call(this,n("c8ba"))},e6d2:function(t,e,n){"use strict";try{self["workbox:routing:6.1.5"]&&_()}catch(r){}},e893:function(t,e,n){var r=n("5135"),o=n("56ef"),i=n("06cf"),a=n("9bf2");t.exports=function(t,e){for(var n=o(e),c=a.f,s=i.f,u=0;u request.destination === 'script' || request.destination === 'style', + ({request}) => (request.destination === 'script' || request.destination === 'style'), new StaleWhileRevalidate({ cacheName: 'assets' }) diff --git a/vue/yarn.lock b/vue/yarn.lock index bde2262c3..a3d6ea4d8 100644 --- a/vue/yarn.lock +++ b/vue/yarn.lock @@ -16,25 +16,25 @@ dependencies: "@babel/highlight" "^7.12.13" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.13.8": - version "7.13.15" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.15.tgz#7e8eea42d0b64fda2b375b22d06c605222e848f4" - integrity sha512-ltnibHKR1VnrU4ymHyQ/CXtNXI6yZC0oJThyW78Hft8XndANwi+9H+UIklBDraIjFEJzw8wmcM427oDd9KS5wA== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.4.tgz#45720fe0cecf3fd42019e1d12cc3d27fadc98d58" + integrity sha512-i2wXrWQNkH6JplJQGn3Rd2I4Pij8GdHkXwHMxm+zV5YG/Jci+bCNrWZEWC4o+umiDkRrRs4dVzH3X4GP7vyjQQ== "@babel/core@^7.11.0", "@babel/core@^7.11.1", "@babel/core@^7.8.4": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.16.tgz#7756ab24396cc9675f1c3fcd5b79fcce192ea96a" - integrity sha512-sXHpixBiWWFti0AV2Zq7avpTasr6sIAu7Y396c608541qAU2ui4a193m0KSQmfPSKFZLnQ3cvlKDOm3XkuXm3Q== + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.3.tgz#5395e30405f0776067fbd9cf0884f15bfb770a38" + integrity sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg== dependencies: "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.16" + "@babel/generator" "^7.14.3" "@babel/helper-compilation-targets" "^7.13.16" - "@babel/helper-module-transforms" "^7.13.14" - "@babel/helpers" "^7.13.16" - "@babel/parser" "^7.13.16" + "@babel/helper-module-transforms" "^7.14.2" + "@babel/helpers" "^7.14.0" + "@babel/parser" "^7.14.3" "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.15" - "@babel/types" "^7.13.16" + "@babel/traverse" "^7.14.2" + "@babel/types" "^7.14.2" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -42,12 +42,12 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/generator@^7.13.16": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.16.tgz#0befc287031a201d84cdfc173b46b320ae472d14" - integrity sha512-grBBR75UnKOcUWMp8WoDxNsWCFl//XCK6HWTrBQKTr5SV9f5g0pNOjdyzi/DTBv12S9GnYPInIXQBTky7OXEMg== +"@babel/generator@^7.14.2", "@babel/generator@^7.14.3": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.3.tgz#0c2652d91f7bddab7cccc6ba8157e4f40dcedb91" + integrity sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA== dependencies: - "@babel/types" "^7.13.16" + "@babel/types" "^7.14.2" jsesc "^2.5.1" source-map "^0.5.0" @@ -66,39 +66,40 @@ "@babel/helper-explode-assignable-expression" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.13", "@babel/helper-compilation-targets@^7.13.16", "@babel/helper-compilation-targets@^7.13.8", "@babel/helper-compilation-targets@^7.9.6": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz#6e91dccf15e3f43e5556dffe32d860109887563c" - integrity sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.16", "@babel/helper-compilation-targets@^7.14.4", "@babel/helper-compilation-targets@^7.9.6": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.4.tgz#33ebd0ffc34248051ee2089350a929ab02f2a516" + integrity sha512-JgdzOYZ/qGaKTVkn5qEDV/SXAh8KcyUVkCoSWGN8T3bwrgd6m+/dJa2kVGi6RJYJgEYPBdZ84BZp9dUjNWkBaA== dependencies: - "@babel/compat-data" "^7.13.15" + "@babel/compat-data" "^7.14.4" "@babel/helper-validator-option" "^7.12.17" - browserslist "^4.14.5" + browserslist "^4.16.6" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.13.11": - version "7.13.11" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz#30d30a005bca2c953f5653fc25091a492177f4f6" - integrity sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw== +"@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.0", "@babel/helper-create-class-features-plugin@^7.14.2", "@babel/helper-create-class-features-plugin@^7.14.3": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.4.tgz#abf888d836a441abee783c75229279748705dc42" + integrity sha512-idr3pthFlDCpV+p/rMgGLGYIVtazeatrSOQk8YzO2pAepIjQhCN3myeihVg58ax2bbbGK9PUE1reFi7axOYIOw== dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-member-expression-to-functions" "^7.13.0" + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-function-name" "^7.14.2" + "@babel/helper-member-expression-to-functions" "^7.13.12" "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-replace-supers" "^7.13.0" + "@babel/helper-replace-supers" "^7.14.4" "@babel/helper-split-export-declaration" "^7.12.13" "@babel/helper-create-regexp-features-plugin@^7.12.13": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7" - integrity sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg== + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.3.tgz#149aa6d78c016e318c43e2409a0ae9c136a86688" + integrity sha512-JIB2+XJrb7v3zceV2XzDhGIB902CmKGSpSl4q2C6agU9SNLG/2V1RtFRGPG1Ajh9STj3+q6zJMOC+N/pp2P9DA== dependencies: "@babel/helper-annotate-as-pure" "^7.12.13" regexpu-core "^4.7.1" -"@babel/helper-define-polyfill-provider@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz#a640051772045fedaaecc6f0c6c69f02bdd34bf1" - integrity sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw== +"@babel/helper-define-polyfill-provider@^0.2.2": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" + integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== dependencies: "@babel/helper-compilation-targets" "^7.13.0" "@babel/helper-module-imports" "^7.12.13" @@ -116,14 +117,14 @@ dependencies: "@babel/types" "^7.13.0" -"@babel/helper-function-name@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" - integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== +"@babel/helper-function-name@^7.12.13", "@babel/helper-function-name@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz#397688b590760b6ef7725b5f0860c82427ebaac2" + integrity sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ== dependencies: "@babel/helper-get-function-arity" "^7.12.13" "@babel/template" "^7.12.13" - "@babel/types" "^7.12.13" + "@babel/types" "^7.14.2" "@babel/helper-get-function-arity@^7.12.13": version "7.12.13" @@ -140,7 +141,7 @@ "@babel/traverse" "^7.13.15" "@babel/types" "^7.13.16" -"@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12": +"@babel/helper-member-expression-to-functions@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" integrity sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw== @@ -154,19 +155,19 @@ dependencies: "@babel/types" "^7.13.12" -"@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.13.14": - version "7.13.14" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz#e600652ba48ccb1641775413cb32cfa4e8b495ef" - integrity sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g== +"@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.14.0", "@babel/helper-module-transforms@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz#ac1cc30ee47b945e3e0c4db12fa0c5389509dfe5" + integrity sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA== dependencies: "@babel/helper-module-imports" "^7.13.12" "@babel/helper-replace-supers" "^7.13.12" "@babel/helper-simple-access" "^7.13.12" "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/helper-validator-identifier" "^7.12.11" + "@babel/helper-validator-identifier" "^7.14.0" "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.13" - "@babel/types" "^7.13.14" + "@babel/traverse" "^7.14.2" + "@babel/types" "^7.14.2" "@babel/helper-optimise-call-expression@^7.12.13": version "7.12.13" @@ -189,17 +190,17 @@ "@babel/helper-wrap-function" "^7.13.0" "@babel/types" "^7.13.0" -"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0", "@babel/helper-replace-supers@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz#6442f4c1ad912502481a564a7386de0c77ff3804" - integrity sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw== +"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.12", "@babel/helper-replace-supers@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.4.tgz#b2ab16875deecfff3ddfcd539bc315f72998d836" + integrity sha512-zZ7uHCWlxfEAAOVDYQpEf/uyi1dmeC7fX4nCf2iz9drnCwi1zvwXL3HwWWNXUQEJ1k23yVn3VbddiI9iJEXaTQ== dependencies: "@babel/helper-member-expression-to-functions" "^7.13.12" "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.12" + "@babel/traverse" "^7.14.2" + "@babel/types" "^7.14.4" -"@babel/helper-simple-access@^7.12.13", "@babel/helper-simple-access@^7.13.12": +"@babel/helper-simple-access@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6" integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA== @@ -220,10 +221,10 @@ dependencies: "@babel/types" "^7.12.13" -"@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== +"@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" + integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== "@babel/helper-validator-option@^7.12.17": version "7.12.17" @@ -240,28 +241,28 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.0" -"@babel/helpers@^7.13.16": - version "7.13.17" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.17.tgz#b497c7a00e9719d5b613b8982bda6ed3ee94caf6" - integrity sha512-Eal4Gce4kGijo1/TGJdqp3WuhllaMLSrW6XcL0ulyUAQOuxHcCafZE8KHg9857gcTehsm/v7RcOx2+jp0Ryjsg== +"@babel/helpers@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.0.tgz#ea9b6be9478a13d6f961dbb5f36bf75e2f3b8f62" + integrity sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg== dependencies: "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.17" - "@babel/types" "^7.13.17" + "@babel/traverse" "^7.14.0" + "@babel/types" "^7.14.0" "@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" - integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" + integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== dependencies: - "@babel/helper-validator-identifier" "^7.12.11" + "@babel/helper-validator-identifier" "^7.14.0" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.12.0", "@babel/parser@^7.12.13", "@babel/parser@^7.13.16", "@babel/parser@^7.13.9", "@babel/parser@^7.7.0": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.16.tgz#0f18179b0448e6939b1f3f5c4c355a3a9bcdfd37" - integrity sha512-6bAg36mCwuqLO0hbR+z7PHuqWiCeP7Dzg73OpQwsAB1Eb8HnGEz5xYBzCfbu+YjoaJsJs+qheDxVAuqbt3ILEw== +"@babel/parser@^7.12.0", "@babel/parser@^7.12.13", "@babel/parser@^7.13.9", "@babel/parser@^7.14.2", "@babel/parser@^7.14.3", "@babel/parser@^7.7.0": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.4.tgz#a5c560d6db6cd8e6ed342368dea8039232cbab18" + integrity sha512-ArliyUsWDUqEGfWcmzpGUzNfLxTdTp6WU4IuP6QFSp9gGfWS6boxFCkJSJ/L4+RG8z/FnIU3WxCk6hPL9SSWeA== "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": version "7.13.12" @@ -272,10 +273,10 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-proposal-optional-chaining" "^7.13.12" -"@babel/plugin-proposal-async-generator-functions@^7.13.15": - version "7.13.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz#80e549df273a3b3050431b148c892491df1bcc5b" - integrity sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA== +"@babel/plugin-proposal-async-generator-functions@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.2.tgz#3a2085abbf5d5f962d480dbc81347385ed62eb1e" + integrity sha512-b1AM4F6fwck4N8ItZ/AtC4FP/cqZqmKRQ4FaTDutwSYyjuhtvsGEMLK4N/ztV/ImP40BjIDyMgBQAeAMsQYVFQ== dependencies: "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-remap-async-to-generator" "^7.13.0" @@ -289,86 +290,95 @@ "@babel/helper-create-class-features-plugin" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-proposal-decorators@^7.8.3": - version "7.13.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.13.15.tgz#e91ccfef2dc24dd5bd5dcc9fc9e2557c684ecfb8" - integrity sha512-ibAMAqUm97yzi+LPgdr5Nqb9CMkeieGHvwPg1ywSGjZrZHQEGqE01HmOio8kxRpA/+VtOHouIVy2FMpBbtltjA== +"@babel/plugin-proposal-class-static-block@^7.14.3": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.3.tgz#5a527e2cae4a4753119c3a3e7f64ecae8ccf1360" + integrity sha512-HEjzp5q+lWSjAgJtSluFDrGGosmwTgKwCXdDQZvhKsRlwv3YdkUEqxNrrjesJd+B9E9zvr1PVPVBvhYZ9msjvQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.11" + "@babel/helper-create-class-features-plugin" "^7.14.3" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-class-static-block" "^7.12.13" + +"@babel/plugin-proposal-decorators@^7.8.3": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.14.2.tgz#e68c3c5e4a6a08834456568256fc3e71b93590cf" + integrity sha512-LauAqDd/VjQDtae58QgBcEOE42NNP+jB2OE+XeC3KBI/E+BhhRjtr5viCIrj1hmu1YvrguLipIPRJZmS5yUcFw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.14.2" "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-decorators" "^7.12.13" -"@babel/plugin-proposal-dynamic-import@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz#876a1f6966e1dec332e8c9451afda3bebcdf2e1d" - integrity sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ== +"@babel/plugin-proposal-dynamic-import@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.2.tgz#01ebabd7c381cff231fa43e302939a9de5be9d9f" + integrity sha512-oxVQZIWFh91vuNEMKltqNsKLFWkOIyJc95k2Gv9lWVyDfPUQGSSlbDEgWuJUU1afGE9WwlzpucMZ3yDRHIItkA== dependencies: "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz#393be47a4acd03fa2af6e3cde9b06e33de1b446d" - integrity sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw== +"@babel/plugin-proposal-export-namespace-from@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.2.tgz#62542f94aa9ce8f6dba79eec698af22112253791" + integrity sha512-sRxW3z3Zp3pFfLAgVEvzTFutTXax837oOatUIvSG9o5gRj9mKwm3br1Se5f4QalTQs9x4AzlA/HrCWbQIHASUQ== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz#bf1fb362547075afda3634ed31571c5901afef7b" - integrity sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q== +"@babel/plugin-proposal-json-strings@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.2.tgz#830b4e2426a782e8b2878fbfe2cba85b70cbf98c" + integrity sha512-w2DtsfXBBJddJacXMBhElGEYqCZQqN99Se1qeYn8DVLB33owlrlLftIbMzn5nz1OITfDVknXF433tBrLEAOEjA== dependencies: "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz#93fa78d63857c40ce3c8c3315220fd00bfbb4e1a" - integrity sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A== +"@babel/plugin-proposal-logical-assignment-operators@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.2.tgz#222348c080a1678e0e74ea63fe76f275882d1fd7" + integrity sha512-1JAZtUrqYyGsS7IDmFeaem+/LJqujfLZ2weLR9ugB0ufUPjzf8cguyVT1g5im7f7RXxuLq1xUxEzvm68uYRtGg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz#3730a31dafd3c10d8ccd10648ed80a2ac5472ef3" - integrity sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz#425b11dc62fc26939a2ab42cbba680bdf5734546" + integrity sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q== dependencies: "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz#bd9da3188e787b5120b4f9d465a8261ce67ed1db" - integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w== +"@babel/plugin-proposal-numeric-separator@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.2.tgz#82b4cc06571143faf50626104b335dd71baa4f9e" + integrity sha512-DcTQY9syxu9BpU3Uo94fjCB3LN9/hgPS8oUL7KrSW3bA2ePrKZZPJcc5y0hoJAM9dft3pGfErtEUvxXQcfLxUg== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz#5d210a4d727d6ce3b18f9de82cc99a3964eed60a" - integrity sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g== +"@babel/plugin-proposal-object-rest-spread@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.4.tgz#0e2b4de419915dc0b409378e829412e2031777c4" + integrity sha512-AYosOWBlyyXEagrPRfLJ1enStufsr7D1+ddpj8OLi9k7B6+NdZ0t/9V7Fh+wJ4g2Jol8z2JkgczYqtWrZd4vbA== dependencies: - "@babel/compat-data" "^7.13.8" - "@babel/helper-compilation-targets" "^7.13.8" + "@babel/compat-data" "^7.14.4" + "@babel/helper-compilation-targets" "^7.14.4" "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.13.0" + "@babel/plugin-transform-parameters" "^7.14.2" -"@babel/plugin-proposal-optional-catch-binding@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz#3ad6bd5901506ea996fc31bdcf3ccfa2bed71107" - integrity sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA== +"@babel/plugin-proposal-optional-catch-binding@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.2.tgz#150d4e58e525b16a9a1431bd5326c4eed870d717" + integrity sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ== dependencies: "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz#ba9feb601d422e0adea6760c2bd6bbb7bfec4866" - integrity sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ== +"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.2.tgz#df8171a8b9c43ebf4c1dabe6311b432d83e1b34e" + integrity sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA== dependencies: "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" @@ -382,6 +392,16 @@ "@babel/helper-create-class-features-plugin" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-proposal-private-property-in-object@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz#b1a1f2030586b9d3489cc26179d2eb5883277636" + integrity sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-create-class-features-plugin" "^7.14.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-private-property-in-object" "^7.14.0" + "@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" @@ -404,6 +424,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-syntax-class-static-block@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz#8e3d674b0613e67975ceac2776c97b60cafc5c9c" + integrity sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-decorators@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz#fac829bf3c7ef4a1bc916257b403e58c6bdaf648" @@ -481,6 +508,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-private-property-in-object@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz#762a4babec61176fec6c88480dec40372b140c0b" + integrity sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-top-level-await@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" @@ -511,23 +545,23 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-block-scoping@^7.12.13": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.13.16.tgz#a9c0f10794855c63b1d629914c7dcfeddd185892" - integrity sha512-ad3PHUxGnfWF4Efd3qFuznEtZKoBp0spS+DgqzVzRPV7urEBvPLue3y2j80w4Jf2YLzZHj8TOv/Lmvdmh3b2xg== +"@babel/plugin-transform-block-scoping@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.4.tgz#caf140b0b2e2462c509553d140e6d0abefb61ed8" + integrity sha512-5KdpkGxsZlTk+fPleDtGKsA+pon28+ptYmMO8GBSa5fHERCJWAzj50uAfCKBqq42HO+Zot6JF1x37CRprwmN4g== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-classes@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz#0265155075c42918bf4d3a4053134176ad9b533b" - integrity sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g== +"@babel/plugin-transform-classes@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.4.tgz#a83c15503fc71a0f99e876fdce7dadbc6575ec3a" + integrity sha512-p73t31SIj6y94RDVX57rafVjttNr8MvKEgs5YFatNB/xC68zM3pyosuOEcQmYsYlyQaGY9R7rAULVRcat5FKJQ== dependencies: "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-function-name" "^7.12.13" + "@babel/helper-function-name" "^7.14.2" "@babel/helper-optimise-call-expression" "^7.12.13" "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-replace-supers" "^7.13.0" + "@babel/helper-replace-supers" "^7.14.4" "@babel/helper-split-export-declaration" "^7.12.13" globals "^11.1.0" @@ -538,10 +572,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-destructuring@^7.13.0": - version "7.13.17" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz#678d96576638c19d5b36b332504d3fd6e06dea27" - integrity sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA== +"@babel/plugin-transform-destructuring@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.4.tgz#acbec502e9951f30f4441eaca1d2f29efade59ed" + integrity sha512-JyywKreTCGTUsL1OKu1A3ms/R1sTP0WxbpXlALeGzF53eB3bxtNkYdMj9SDgK7g6ImPy76J5oYYKoTtQImlhQA== dependencies: "@babel/helper-plugin-utils" "^7.13.0" @@ -597,23 +631,23 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-modules-amd@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz#19f511d60e3d8753cc5a6d4e775d3a5184866cc3" - integrity sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ== +"@babel/plugin-transform-modules-amd@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.2.tgz#6622806fe1a7c07a1388444222ef9535f2ca17b0" + integrity sha512-hPC6XBswt8P3G2D1tSV2HzdKvkqOpmbyoy+g73JG0qlF/qx2y3KaMmXb1fLrpmWGLZYA0ojCvaHdzFWjlmV+Pw== dependencies: - "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-module-transforms" "^7.14.2" "@babel/helper-plugin-utils" "^7.13.0" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz#7b01ad7c2dcf2275b06fa1781e00d13d420b3e1b" - integrity sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw== +"@babel/plugin-transform-modules-commonjs@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz#52bc199cb581e0992edba0f0f80356467587f161" + integrity sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ== dependencies: - "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-module-transforms" "^7.14.0" "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-simple-access" "^7.12.13" + "@babel/helper-simple-access" "^7.13.12" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-systemjs@^7.13.8": @@ -627,12 +661,12 @@ "@babel/helper-validator-identifier" "^7.12.11" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz#8a3d96a97d199705b9fd021580082af81c06e70b" - integrity sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw== +"@babel/plugin-transform-modules-umd@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz#2f8179d1bbc9263665ce4a65f305526b2ea8ac34" + integrity sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw== dependencies: - "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-module-transforms" "^7.14.0" "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": @@ -657,10 +691,10 @@ "@babel/helper-plugin-utils" "^7.12.13" "@babel/helper-replace-supers" "^7.12.13" -"@babel/plugin-transform-parameters@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz#8fa7603e3097f9c0b7ca1a4821bc2fb52e9e5007" - integrity sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw== +"@babel/plugin-transform-parameters@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz#e4290f72e0e9e831000d066427c4667098decc31" + integrity sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A== dependencies: "@babel/helper-plugin-utils" "^7.13.0" @@ -686,9 +720,9 @@ "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-runtime@^7.11.0": - version "7.13.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.15.tgz#2eddf585dd066b84102517e10a577f24f76a9cd7" - integrity sha512-d+ezl76gx6Jal08XngJUkXM4lFXK/5Ikl9Mh4HKDxSfGJXmZ9xG64XT2oivBzfxb/eQ62VfvoMkaCZUKJMVrBA== + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.3.tgz#1fd885a2d0de1d3c223795a4e9be72c2db4515cf" + integrity sha512-t960xbi8wpTFE623ef7sd+UpEC5T6EEguQlTBJDEO05+XwnIWVfuqLw/vdLWY6IdFmtZE+65CZAfByT39zRpkg== dependencies: "@babel/helper-module-imports" "^7.13.12" "@babel/helper-plugin-utils" "^7.13.0" @@ -749,30 +783,33 @@ "@babel/helper-plugin-utils" "^7.12.13" "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.8.4": - version "7.13.15" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.13.15.tgz#c8a6eb584f96ecba183d3d414a83553a599f478f" - integrity sha512-D4JAPMXcxk69PKe81jRJ21/fP/uYdcTZ3hJDF5QX2HSI9bBxxYw/dumdR6dGumhjxlprHPE4XWoPaqzZUVy2MA== + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.4.tgz#73fc3228c59727e5e974319156f304f0d6685a2d" + integrity sha512-GwMMsuAnDtULyOtuxHhzzuSRxFeP0aR/LNzrHRzP8y6AgDNgqnrfCCBm/1cRdTU75tRs28Eh76poHLcg9VF0LA== dependencies: - "@babel/compat-data" "^7.13.15" - "@babel/helper-compilation-targets" "^7.13.13" + "@babel/compat-data" "^7.14.4" + "@babel/helper-compilation-targets" "^7.14.4" "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-validator-option" "^7.12.17" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.13.12" - "@babel/plugin-proposal-async-generator-functions" "^7.13.15" + "@babel/plugin-proposal-async-generator-functions" "^7.14.2" "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-dynamic-import" "^7.13.8" - "@babel/plugin-proposal-export-namespace-from" "^7.12.13" - "@babel/plugin-proposal-json-strings" "^7.13.8" - "@babel/plugin-proposal-logical-assignment-operators" "^7.13.8" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" - "@babel/plugin-proposal-numeric-separator" "^7.12.13" - "@babel/plugin-proposal-object-rest-spread" "^7.13.8" - "@babel/plugin-proposal-optional-catch-binding" "^7.13.8" - "@babel/plugin-proposal-optional-chaining" "^7.13.12" + "@babel/plugin-proposal-class-static-block" "^7.14.3" + "@babel/plugin-proposal-dynamic-import" "^7.14.2" + "@babel/plugin-proposal-export-namespace-from" "^7.14.2" + "@babel/plugin-proposal-json-strings" "^7.14.2" + "@babel/plugin-proposal-logical-assignment-operators" "^7.14.2" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.2" + "@babel/plugin-proposal-numeric-separator" "^7.14.2" + "@babel/plugin-proposal-object-rest-spread" "^7.14.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.14.2" + "@babel/plugin-proposal-optional-chaining" "^7.14.2" "@babel/plugin-proposal-private-methods" "^7.13.0" + "@babel/plugin-proposal-private-property-in-object" "^7.14.0" "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.12.13" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.3" @@ -782,14 +819,15 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.0" "@babel/plugin-syntax-top-level-await" "^7.12.13" "@babel/plugin-transform-arrow-functions" "^7.13.0" "@babel/plugin-transform-async-to-generator" "^7.13.0" "@babel/plugin-transform-block-scoped-functions" "^7.12.13" - "@babel/plugin-transform-block-scoping" "^7.12.13" - "@babel/plugin-transform-classes" "^7.13.0" + "@babel/plugin-transform-block-scoping" "^7.14.4" + "@babel/plugin-transform-classes" "^7.14.4" "@babel/plugin-transform-computed-properties" "^7.13.0" - "@babel/plugin-transform-destructuring" "^7.13.0" + "@babel/plugin-transform-destructuring" "^7.14.4" "@babel/plugin-transform-dotall-regex" "^7.12.13" "@babel/plugin-transform-duplicate-keys" "^7.12.13" "@babel/plugin-transform-exponentiation-operator" "^7.12.13" @@ -797,14 +835,14 @@ "@babel/plugin-transform-function-name" "^7.12.13" "@babel/plugin-transform-literals" "^7.12.13" "@babel/plugin-transform-member-expression-literals" "^7.12.13" - "@babel/plugin-transform-modules-amd" "^7.13.0" - "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/plugin-transform-modules-amd" "^7.14.2" + "@babel/plugin-transform-modules-commonjs" "^7.14.0" "@babel/plugin-transform-modules-systemjs" "^7.13.8" - "@babel/plugin-transform-modules-umd" "^7.13.0" + "@babel/plugin-transform-modules-umd" "^7.14.0" "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" "@babel/plugin-transform-new-target" "^7.12.13" "@babel/plugin-transform-object-super" "^7.12.13" - "@babel/plugin-transform-parameters" "^7.13.0" + "@babel/plugin-transform-parameters" "^7.14.2" "@babel/plugin-transform-property-literals" "^7.12.13" "@babel/plugin-transform-regenerator" "^7.13.15" "@babel/plugin-transform-reserved-words" "^7.12.13" @@ -816,7 +854,7 @@ "@babel/plugin-transform-unicode-escapes" "^7.12.13" "@babel/plugin-transform-unicode-regex" "^7.12.13" "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.13.14" + "@babel/types" "^7.14.4" babel-plugin-polyfill-corejs2 "^0.2.0" babel-plugin-polyfill-corejs3 "^0.2.0" babel-plugin-polyfill-regenerator "^0.2.0" @@ -835,9 +873,9 @@ esutils "^2.0.2" "@babel/runtime@^7.11.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": - version "7.13.17" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.17.tgz#8966d1fc9593bf848602f0662d6b4d0069e3a7ec" - integrity sha512-NCdgJEelPTSh+FEFylhnP1ylq848l1z9t9N0j1Lfbcw0+KXGjsTvUmkxy+voLLXB5SOKMbLLx4jxYliGrYQseA== + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6" + integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA== dependencies: regenerator-runtime "^0.13.4" @@ -850,37 +888,37 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.13", "@babel/traverse@^7.13.15", "@babel/traverse@^7.13.17", "@babel/traverse@^7.7.0": - version "7.13.17" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.17.tgz#c85415e0c7d50ac053d758baec98b28b2ecfeea3" - integrity sha512-BMnZn0R+X6ayqm3C3To7o1j7Q020gWdqdyP50KEoVqaCO2c/Im7sYZSmVgvefp8TTMQ+9CtwuBp0Z1CZ8V3Pvg== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.15", "@babel/traverse@^7.14.0", "@babel/traverse@^7.14.2", "@babel/traverse@^7.7.0": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.2.tgz#9201a8d912723a831c2679c7ebbf2fe1416d765b" + integrity sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA== dependencies: "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.16" - "@babel/helper-function-name" "^7.12.13" + "@babel/generator" "^7.14.2" + "@babel/helper-function-name" "^7.14.2" "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.13.16" - "@babel/types" "^7.13.17" + "@babel/parser" "^7.14.2" + "@babel/types" "^7.14.2" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.14", "@babel/types@^7.13.16", "@babel/types@^7.13.17", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.13.17" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.17.tgz#48010a115c9fba7588b4437dd68c9469012b38b4" - integrity sha512-RawydLgxbOPDlTLJNtoIypwdmAy//uQIzlKt2+iBiJaRlVuI6QLUxVAyWGNfOzp8Yu4L4lLIacoCyTNtpb4wiA== +"@babel/types@^7.0.0", "@babel/types@^7.12.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.16", "@babel/types@^7.14.0", "@babel/types@^7.14.2", "@babel/types@^7.14.4", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.4.tgz#bfd6980108168593b38b3eb48a24aa026b919bc0" + integrity sha512-lCj4aIs0xUefJFQnwwQv2Bxg7Omd6bgquZ6LGC+gGMh6/s5qDVfjuCMlDmYQ15SLsWHd9n+X3E75lKIhl5Lkiw== dependencies: - "@babel/helper-validator-identifier" "^7.12.11" + "@babel/helper-validator-identifier" "^7.14.0" to-fast-properties "^2.0.0" -"@eslint/eslintrc@^0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.0.tgz#99cc0a0584d72f1df38b900fb062ba995f395547" - integrity sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog== +"@eslint/eslintrc@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179" + integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg== dependencies: ajv "^6.12.4" debug "^4.1.1" espree "^7.3.0" - globals "^12.1.0" + globals "^13.9.0" ignore "^4.0.6" import-fresh "^3.2.1" js-yaml "^3.13.1" @@ -965,18 +1003,18 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@nodelib/fs.scandir@2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" - integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: - "@nodelib/fs.stat" "2.0.4" + "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" - integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.stat@^1.1.2": version "1.1.3" @@ -984,11 +1022,11 @@ integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== "@nodelib/fs.walk@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" - integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== + version "1.2.7" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz#94c23db18ee4653e129abd26fb06f870ac9e1ee2" + integrity sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA== dependencies: - "@nodelib/fs.scandir" "2.1.4" + "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" "@nuxt/opencollective@^0.3.2": @@ -1071,11 +1109,6 @@ ejs "^2.6.1" magic-string "^0.25.0" -"@types/anymatch@*": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" - integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== - "@types/body-parser@*": version "1.19.0" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" @@ -1100,9 +1133,9 @@ "@types/node" "*" "@types/estree@*": - version "0.0.47" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4" - integrity sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg== + version "0.0.48" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.48.tgz#18dc8091b285df90db2f25aa7d906cfc394b7f74" + integrity sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew== "@types/estree@0.0.39": version "0.0.39" @@ -1110,18 +1143,18 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": - version "4.17.19" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz#00acfc1632e729acac4f1530e9e16f6dd1508a1d" - integrity sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA== + version "4.17.21" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.21.tgz#a427278e106bca77b83ad85221eae709a3414d42" + integrity sha512-gwCiEZqW6f7EoR8TTEfalyEhb1zA5jQJnRngr97+3pzMaO1RKoI1w2bw07TK72renMUVWcWS5mLI6rk1NqN0nA== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" "@types/express@*": - version "4.17.11" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.11.tgz#debe3caa6f8e5fcda96b47bd54e2f40c4ee59545" - integrity sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg== + version "4.17.12" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.12.tgz#4bc1bf3cd0cfe6d3f6f2853648b40db7d54de350" + integrity sha512-pTYas6FrP15B1Oa0bkN5tQMNqOcVXa9j4FTFtO8DWI9kppKib+6NJtfTOOLcwxuuYvcX2+dVG6et1SxW/Kc17Q== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.18" @@ -1137,18 +1170,18 @@ "@types/node" "*" "@types/http-proxy@^1.17.5": - version "1.17.5" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.5.tgz#c203c5e6e9dc6820d27a40eb1e511c70a220423d" - integrity sha512-GNkDE7bTv6Sf8JbV2GksknKOsk7OznNYHSdrtvPJXO0qJ9odZig6IZKUi5RFGi6d1bf6dgIAe4uXi3DBc7069Q== + version "1.17.6" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.6.tgz#62dc3fade227d6ac2862c8f19ee0da9da9fd8616" + integrity sha512-+qsjqR75S/ib0ig0R9WN+CDoZeOBU6F2XLewgC4KVgdXiNHiKKHFEMRHOrs5PbYE97D5vataw5wPj4KLYfUkuQ== dependencies: "@types/node" "*" -"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5": +"@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7": version "7.0.7" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== -"@types/lodash.foreach@^4.4.6": +"@types/lodash.foreach@^4.5.6": version "4.5.6" resolved "https://registry.yarnpkg.com/@types/lodash.foreach/-/lodash.foreach-4.5.6.tgz#24735299139a739e436ab4fb8a6a31ca3d54bbb3" integrity sha512-A8+157A+27zwJSstmW/eWPc9lHLJNEer4jiMlsyxWieBxEx0arwB9vgQm+iai6DEDYYQuufHrzVhQOiapCalQQ== @@ -1163,9 +1196,9 @@ "@types/lodash" "*" "@types/lodash@*": - version "4.14.168" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008" - integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q== + version "4.14.170" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.170.tgz#0d67711d4bf7f4ca5147e9091b847479b87925d6" + integrity sha512-bpcvu/MKHHeYX+qeEN8GE7DIravODWdACVA1ctevD8CN24RhPZIKMn9ntfAsrvLfSX3cR5RrBKAbYm9bGs0A+Q== "@types/mime@^1": version "1.3.2" @@ -1183,9 +1216,9 @@ integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg== "@types/node@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.0.tgz#557dd0da4a6dca1407481df3bbacae0cd6f68042" - integrity sha512-YN1d+ae2MCb4U0mMa+Zlb5lWTdpFShbAj5nmte6lel27waMMBfivrm0prC16p/Di3DyTrmerrYUT8/145HXxVw== + version "15.12.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.2.tgz#1f2b42c4be7156ff4a6f914b2fb03d05fa84e38d" + integrity sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -1252,9 +1285,9 @@ source-map "^0.6.1" "@types/webpack-dev-server@^3.11.0": - version "3.11.3" - resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz#237e26d87651cf95490dcd356f568c8c84016177" - integrity sha512-p9B/QClflreKDeamKhBwuo5zqtI++wwb9QNG/CdIZUFtHvtaq0dWVgbtV7iMl4Sr4vWzEFj0rn16pgUFANjLPA== + version "3.11.4" + resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-3.11.4.tgz#90d47dd660b696d409431ab8c1e9fa3615103a07" + integrity sha512-DCKORHjqNNVuMIDWFrlljftvc9CL0+09p3l7lBpb8dRqgN5SmvkWCY4MPKxoI6wJgdRqohmoNbptkxqSKAzLRg== dependencies: "@types/connect-history-api-fallback" "*" "@types/express" "*" @@ -1277,85 +1310,85 @@ source-map "^0.7.3" "@types/webpack@^4", "@types/webpack@^4.0.0": - version "4.41.27" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.27.tgz#f47da488c8037e7f1b2dbf2714fbbacb61ec0ffc" - integrity sha512-wK/oi5gcHi72VMTbOaQ70VcDxSQ1uX8S2tukBK9ARuGXrYM/+u4ou73roc7trXDNmCxCoerE8zruQqX/wuHszA== + version "4.41.29" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.29.tgz#2e66c1de8223c440366469415c50a47d97625773" + integrity sha512-6pLaORaVNZxiB3FSHbyBiWM7QdazAWda1zvAq4SbZObZqHSDbWLi62iFdblVea6SK9eyBIVp5yHhKt/yNQdR7Q== dependencies: - "@types/anymatch" "*" "@types/node" "*" "@types/tapable" "^1" "@types/uglify-js" "*" "@types/webpack-sources" "*" + anymatch "^3.0.0" source-map "^0.6.0" -"@typescript-eslint/eslint-plugin@^4.18.0": - version "4.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.22.0.tgz#3d5f29bb59e61a9dba1513d491b059e536e16dbc" - integrity sha512-U8SP9VOs275iDXaL08Ln1Fa/wLXfj5aTr/1c0t0j6CdbOnxh+TruXu1p4I0NAvdPBQgoPjHsgKn28mOi0FzfoA== +"@typescript-eslint/eslint-plugin@^4.26.1": + version "4.26.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.26.1.tgz#b9c7313321cb837e2bf8bebe7acc2220659e67d3" + integrity sha512-aoIusj/8CR+xDWmZxARivZjbMBQTT9dImUtdZ8tVCVRXgBUuuZyM5Of5A9D9arQPxbi/0rlJLcuArclz/rCMJw== dependencies: - "@typescript-eslint/experimental-utils" "4.22.0" - "@typescript-eslint/scope-manager" "4.22.0" - debug "^4.1.1" + "@typescript-eslint/experimental-utils" "4.26.1" + "@typescript-eslint/scope-manager" "4.26.1" + debug "^4.3.1" functional-red-black-tree "^1.0.1" - lodash "^4.17.15" - regexpp "^3.0.0" - semver "^7.3.2" - tsutils "^3.17.1" + lodash "^4.17.21" + regexpp "^3.1.0" + semver "^7.3.5" + tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@4.22.0": - version "4.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.22.0.tgz#68765167cca531178e7b650a53456e6e0bef3b1f" - integrity sha512-xJXHHl6TuAxB5AWiVrGhvbGL8/hbiCQ8FiWwObO3r0fnvBdrbWEDy1hlvGQOAWc6qsCWuWMKdVWlLAEMpxnddg== +"@typescript-eslint/experimental-utils@4.26.1": + version "4.26.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.26.1.tgz#a35980a2390da9232aa206b27f620eab66e94142" + integrity sha512-sQHBugRhrXzRCs9PaGg6rowie4i8s/iD/DpTB+EXte8OMDfdCG5TvO73XlO9Wc/zi0uyN4qOmX9hIjQEyhnbmQ== dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.22.0" - "@typescript-eslint/types" "4.22.0" - "@typescript-eslint/typescript-estree" "4.22.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.26.1" + "@typescript-eslint/types" "4.26.1" + "@typescript-eslint/typescript-estree" "4.26.1" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" -"@typescript-eslint/parser@^4.18.0": - version "4.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.22.0.tgz#e1637327fcf796c641fe55f73530e90b16ac8fe8" - integrity sha512-z/bGdBJJZJN76nvAY9DkJANYgK3nlRstRRi74WHm3jjgf2I8AglrSY+6l7ogxOmn55YJ6oKZCLLy+6PW70z15Q== +"@typescript-eslint/parser@^4.26.1": + version "4.26.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.26.1.tgz#cecfdd5eb7a5c13aabce1c1cfd7fbafb5a0f1e8e" + integrity sha512-q7F3zSo/nU6YJpPJvQveVlIIzx9/wu75lr6oDbDzoeIRWxpoc/HQ43G4rmMoCc5my/3uSj2VEpg/D83LYZF5HQ== dependencies: - "@typescript-eslint/scope-manager" "4.22.0" - "@typescript-eslint/types" "4.22.0" - "@typescript-eslint/typescript-estree" "4.22.0" - debug "^4.1.1" + "@typescript-eslint/scope-manager" "4.26.1" + "@typescript-eslint/types" "4.26.1" + "@typescript-eslint/typescript-estree" "4.26.1" + debug "^4.3.1" -"@typescript-eslint/scope-manager@4.22.0": - version "4.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.22.0.tgz#ed411545e61161a8d702e703a4b7d96ec065b09a" - integrity sha512-OcCO7LTdk6ukawUM40wo61WdeoA7NM/zaoq1/2cs13M7GyiF+T4rxuA4xM+6LeHWjWbss7hkGXjFDRcKD4O04Q== +"@typescript-eslint/scope-manager@4.26.1": + version "4.26.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.26.1.tgz#075a74a15ff33ee3a7ed33e5fce16ee86689f662" + integrity sha512-TW1X2p62FQ8Rlne+WEShyd7ac2LA6o27S9i131W4NwDSfyeVlQWhw8ylldNNS8JG6oJB9Ha9Xyc+IUcqipvheQ== dependencies: - "@typescript-eslint/types" "4.22.0" - "@typescript-eslint/visitor-keys" "4.22.0" + "@typescript-eslint/types" "4.26.1" + "@typescript-eslint/visitor-keys" "4.26.1" -"@typescript-eslint/types@4.22.0": - version "4.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.22.0.tgz#0ca6fde5b68daf6dba133f30959cc0688c8dd0b6" - integrity sha512-sW/BiXmmyMqDPO2kpOhSy2Py5w6KvRRsKZnV0c4+0nr4GIcedJwXAq+RHNK4lLVEZAJYFltnnk1tJSlbeS9lYA== +"@typescript-eslint/types@4.26.1": + version "4.26.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.26.1.tgz#9e7c523f73c34b04a765e4167ca5650436ef1d38" + integrity sha512-STyMPxR3cS+LaNvS8yK15rb8Y0iL0tFXq0uyl6gY45glyI7w0CsyqyEXl/Fa0JlQy+pVANeK3sbwPneCbWE7yg== -"@typescript-eslint/typescript-estree@4.22.0": - version "4.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.22.0.tgz#b5d95d6d366ff3b72f5168c75775a3e46250d05c" - integrity sha512-TkIFeu5JEeSs5ze/4NID+PIcVjgoU3cUQUIZnH3Sb1cEn1lBo7StSV5bwPuJQuoxKXlzAObjYTilOEKRuhR5yg== +"@typescript-eslint/typescript-estree@4.26.1": + version "4.26.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.26.1.tgz#b2ce2e789233d62283fae2c16baabd4f1dbc9633" + integrity sha512-l3ZXob+h0NQzz80lBGaykdScYaiEbFqznEs99uwzm8fPHhDjwaBFfQkjUC/slw6Sm7npFL8qrGEAMxcfBsBJUg== dependencies: - "@typescript-eslint/types" "4.22.0" - "@typescript-eslint/visitor-keys" "4.22.0" - debug "^4.1.1" - globby "^11.0.1" + "@typescript-eslint/types" "4.26.1" + "@typescript-eslint/visitor-keys" "4.26.1" + debug "^4.3.1" + globby "^11.0.3" is-glob "^4.0.1" - semver "^7.3.2" - tsutils "^3.17.1" + semver "^7.3.5" + tsutils "^3.21.0" -"@typescript-eslint/visitor-keys@4.22.0": - version "4.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.22.0.tgz#169dae26d3c122935da7528c839f42a8a42f6e47" - integrity sha512-nnMu4F+s4o0sll6cBSsTeVsT4cwxB7zECK3dFxzEjPBii9xLpq4yqqsy/FU5zMfan6G60DKZSCXAa3sHJZrcYw== +"@typescript-eslint/visitor-keys@4.26.1": + version "4.26.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.26.1.tgz#0d55ea735cb0d8903b198017d6d4f518fdaac546" + integrity sha512-IGouNSSd+6x/fHtYRyLOM6/C+QxMDzWlDtN41ea+flWuSF9g02iqcIlX8wM53JkfljoIjP0U+yp7SiTS1onEkw== dependencies: - "@typescript-eslint/types" "4.22.0" + "@typescript-eslint/types" "4.26.1" eslint-visitor-keys "^2.0.0" "@vue/babel-helper-vue-jsx-merge-props@^1.2.1": @@ -1369,9 +1402,9 @@ integrity sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA== "@vue/babel-plugin-jsx@^1.0.3": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.0.5.tgz#72820d5fb371c41d2113b31b16787995e8bdf69a" - integrity sha512-Jtipy7oI0am5e1q5Ahunm/cCcCh5ssf5VkMQsLR383S3un5Qh7NBfxgSK9kmWf4IXJEhDeYp9kHv8G/EnMai9A== + version "1.0.6" + resolved "https://registry.yarnpkg.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.0.6.tgz#184bf3541ab6efdbe5079ab8b20c19e2af100bfb" + integrity sha512-RzYsvBhzKUmY2YG6LoV+W5PnlnkInq0thh1AzCmewwctAgGN6e9UFon6ZrQQV1CO5G5PeME7MqpB+/vvGg0h4g== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.0.0" @@ -1395,10 +1428,10 @@ lodash.kebabcase "^4.1.1" svg-tags "^1.0.0" -"@vue/babel-preset-app@^4.5.12": - version "4.5.12" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-4.5.12.tgz#c3a23cf33f6e5ea30536f13c0f9b1fc7e028b1c1" - integrity sha512-8q67ORQ9O0Ms0nlqsXTVhaBefRBaLrzPxOewAZhdcO7onHwcO5/wRdWtHhZgfpCZlhY7NogkU16z3WnorSSkEA== +"@vue/babel-preset-app@^4.5.13": + version "4.5.13" + resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-4.5.13.tgz#cb475321e4c73f7f110dac29a48c2a9cb80afeb6" + integrity sha512-pM7CR3yXB6L8Gfn6EmX7FLNE3+V/15I3o33GkSNsWvgsMp6HVGXKkXgojrcfUUauyL1LZOdvTmu4enU2RePGHw== dependencies: "@babel/core" "^7.11.0" "@babel/helper-compilation-targets" "^7.9.6" @@ -1480,59 +1513,59 @@ "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" camelcase "^5.0.0" -"@vue/cli-overlay@^4.5.12": - version "4.5.12" - resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-4.5.12.tgz#d5ae353abb187672204197dcd077a4367d4d4a24" - integrity sha512-dCN0RzVpA8fp+MfjuVBROgM483MPObAb/je+APE/JhpCJyPQORYQEvNpmaorpN+9Cp6mrESVSzhh0qD4SFrlzg== +"@vue/cli-overlay@^4.5.13": + version "4.5.13" + resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-4.5.13.tgz#4f1fd2161be8f69d6cba8079f3f0d7dc4dee47a7" + integrity sha512-jhUIg3klgi5Cxhs8dnat5hi/W2tQJvsqCxR0u6hgfSob0ORODgUBlN+F/uwq7cKIe/pzedVUk1y07F13GQvPqg== -"@vue/cli-plugin-babel@~4.5.0": - version "4.5.12" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.12.tgz#c9737d4079485ce9be07c463c81e1e33886c6219" - integrity sha512-PhiNDhlGydsRR0F00OJqG/Q3Mz2G1ko8XqS7CJ0l1GVVGmklUEBy2dW/S8ntEgHpSkFa6h49PgYP3WE2OM3CEg== +"@vue/cli-plugin-babel@~4.5.13": + version "4.5.13" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.13.tgz#a89c482edcc4ea1d135645cec502a7f5fd4c30e7" + integrity sha512-ykvEAfD8PgGs+dGMGqr7l/nRmIS39NRzWLhMluPLTvDV1L+IxcoB73HNLGA/aENDpl8CuWrTE+1VgydcOhp+wg== dependencies: "@babel/core" "^7.11.0" - "@vue/babel-preset-app" "^4.5.12" - "@vue/cli-shared-utils" "^4.5.12" + "@vue/babel-preset-app" "^4.5.13" + "@vue/cli-shared-utils" "^4.5.13" babel-loader "^8.1.0" cache-loader "^4.1.0" thread-loader "^2.1.3" webpack "^4.0.0" -"@vue/cli-plugin-eslint@~4.5.0": - version "4.5.12" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.12.tgz#7fc2a1d0a490fa300ef4e94518c2cc49ba7a292f" - integrity sha512-nbjGJkWxo/xdD32DwvnEAUwkWYsObpqNk9NuU7T62ehdzHPzz58o3j03YZ7a7T7Le8bYyOWMYsdNfz63F+XiZQ== +"@vue/cli-plugin-eslint@~4.5.13": + version "4.5.13" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.13.tgz#8baf22d0d96d76720c7506646b96f4f62c05bdfa" + integrity sha512-yc2uXX6aBiy3vEf5TwaueaDqQbdIXIhk0x0KzEtpPo23jBdLkpOSoU5NCgE06g/ZiGAcettpmBSv73Hfp4wHEw== dependencies: - "@vue/cli-shared-utils" "^4.5.12" + "@vue/cli-shared-utils" "^4.5.13" eslint-loader "^2.2.1" globby "^9.2.0" inquirer "^7.1.0" webpack "^4.0.0" yorkie "^2.0.0" -"@vue/cli-plugin-pwa@~4.5.0": - version "4.5.12" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-pwa/-/cli-plugin-pwa-4.5.12.tgz#723ee4028e3086e910e7d357db39889203f30054" - integrity sha512-B8da8oHaBZHtt44skmwFRzYTqclyD4tk9JaZp9uV4J26fsz+hzbSbB1araUPkSP3eql4LBD1TTadvyY4jfo8jQ== +"@vue/cli-plugin-pwa@~4.5.13": + version "4.5.13" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-pwa/-/cli-plugin-pwa-4.5.13.tgz#a800639814b6f62a38f04198c340cfaee7295c3f" + integrity sha512-uU5pp94VU0YscfKq/mNRsKOdxG+CTqVlZWaYkRc+HCcwkJ/m/CnxgaEqQFr0QpHC8zmlX4gILO1RVYygJoR9tw== dependencies: - "@vue/cli-shared-utils" "^4.5.12" + "@vue/cli-shared-utils" "^4.5.13" webpack "^4.0.0" workbox-webpack-plugin "^4.3.1" -"@vue/cli-plugin-router@^4.5.12": - version "4.5.12" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-router/-/cli-plugin-router-4.5.12.tgz#977c4b2b694cc03e9ef816112a5d58923493d0ac" - integrity sha512-DYNz5AA3W7Ewt3aaiOLGdYFt4MX4w/HTEtep+kPzP9S9tAknzyoIJXkaYzhwu8ArpEYwhWgtuCcDZ8hR6++DbA== +"@vue/cli-plugin-router@^4.5.13": + version "4.5.13" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-router/-/cli-plugin-router-4.5.13.tgz#0b67c8898a2bf132941919a2a2e5f3aacbd9ffbe" + integrity sha512-tgtMDjchB/M1z8BcfV4jSOY9fZSMDTPgF9lsJIiqBWMxvBIsk9uIZHxp62DibYME4CCKb/nNK61XHaikFp+83w== dependencies: - "@vue/cli-shared-utils" "^4.5.12" + "@vue/cli-shared-utils" "^4.5.13" -"@vue/cli-plugin-typescript@^4.5.12": - version "4.5.12" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-typescript/-/cli-plugin-typescript-4.5.12.tgz#4186974541a0305e27e769370c981b86a44c2935" - integrity sha512-ZTsmvaLHa/DBhqXfgiGkfJfz3tGUAWkRJiAkEAGJnj6X2pj7P47x9et/dkxPej/eVyxrSCtQs7Xt3bT9cMKJ3w== +"@vue/cli-plugin-typescript@^4.5.13": + version "4.5.13" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-typescript/-/cli-plugin-typescript-4.5.13.tgz#f514f661e16f9096a89a9ca6e69a2d762c6d8464" + integrity sha512-CpLlIdFNV1gn9uC4Yh6QgWI42uk2x5Z3cb2ScxNSwWsR1vgSdr0/1DdNzoBm68aP8RUtnHHO/HZfPnvXiq42xA== dependencies: "@types/webpack-env" "^1.15.2" - "@vue/cli-shared-utils" "^4.5.12" + "@vue/cli-shared-utils" "^4.5.13" cache-loader "^4.1.0" fork-ts-checker-webpack-plugin "^3.1.1" globby "^9.2.0" @@ -1544,15 +1577,15 @@ optionalDependencies: fork-ts-checker-webpack-plugin-v5 "npm:fork-ts-checker-webpack-plugin@^5.0.11" -"@vue/cli-plugin-vuex@^4.5.12": - version "4.5.12" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.12.tgz#f7fbe177ee7176f055b546e9e74472f9d9177626" - integrity sha512-STgbvNv/3iHAKArc18b/qjN7RX1FTrfxPeHH26GOr/A8lJes7+CSluZZ8E5R7Zr/vL0zOqOkUVDAjFXVf4zWQA== +"@vue/cli-plugin-vuex@^4.5.13": + version "4.5.13" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.13.tgz#98646d8bc1e69cf6c6a6cba2fed3eace0356c360" + integrity sha512-I1S9wZC7iI0Wn8kw8Zh+A2Qkf6s1M6vTGBkx8boXjuzfwEEyEHRxadsVCecZc8Mkpydo0nykj+MyYF96TKFuVA== -"@vue/cli-service@~4.5.0": - version "4.5.12" - resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-4.5.12.tgz#483aef7dc4e2a7b02b7f224f0a2ef7cea910e033" - integrity sha512-Di/dFw72HIvUrpTgnnPQkPq07mdd7z3GPeCH/o+6fv4bxOD+gwK9z7P6RkG4lGv2QdLz+qjim9f7xw5w+9ENkg== +"@vue/cli-service@~4.5.13": + version "4.5.13" + resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-4.5.13.tgz#a09e684a801684b6e24e5414ad30650970eec9ed" + integrity sha512-CKAZN4iokMMsaUyJRU22oUAz3oS/X9sVBSKAF2/shFBV5xh3jqAlKl8OXZYz4cXGFLA6djNuYrniuLAo7Ku97A== dependencies: "@intervolga/optimize-cssnano-plugin" "^1.0.5" "@soda/friendly-errors-webpack-plugin" "^1.7.1" @@ -1560,10 +1593,10 @@ "@types/minimist" "^1.2.0" "@types/webpack" "^4.0.0" "@types/webpack-dev-server" "^3.11.0" - "@vue/cli-overlay" "^4.5.12" - "@vue/cli-plugin-router" "^4.5.12" - "@vue/cli-plugin-vuex" "^4.5.12" - "@vue/cli-shared-utils" "^4.5.12" + "@vue/cli-overlay" "^4.5.13" + "@vue/cli-plugin-router" "^4.5.13" + "@vue/cli-plugin-vuex" "^4.5.13" + "@vue/cli-shared-utils" "^4.5.13" "@vue/component-compiler-utils" "^3.1.2" "@vue/preload-webpack-plugin" "^1.1.0" "@vue/web-component-wrapper" "^1.2.0" @@ -1598,8 +1631,8 @@ pnp-webpack-plugin "^1.6.4" portfinder "^1.0.26" postcss-loader "^3.0.0" - ssri "^7.1.0" - terser-webpack-plugin "^2.3.6" + ssri "^8.0.1" + terser-webpack-plugin "^1.4.4" thread-loader "^2.1.3" url-loader "^2.2.0" vue-loader "^15.9.2" @@ -1612,10 +1645,10 @@ optionalDependencies: vue-loader-v16 "npm:vue-loader@^16.1.0" -"@vue/cli-shared-utils@^4.5.12": - version "4.5.12" - resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-4.5.12.tgz#0e0693d488336d284ffa658ff33b1ea22927d065" - integrity sha512-qnIQPJ4XckMoqYh9fJ0Y91QKMIb4Hiibrm9+k4E15QHpk5RaokuOpf10SsOr2NLPCXSWsHOLo3hduZSwHPGY/Q== +"@vue/cli-shared-utils@^4.5.13": + version "4.5.13" + resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-4.5.13.tgz#acd40f31b4790f1634292bdaa5fca95dc1e0ff50" + integrity sha512-HpnOrkLg42RFUsQGMJv26oTG3J3FmKtO2WSRhKIIL+1ok3w9OjGCtA3nMMXN27f9eX14TqO64M36DaiSZ1fSiw== dependencies: "@hapi/joi" "^15.0.1" chalk "^2.4.2" @@ -1630,36 +1663,36 @@ semver "^6.1.0" strip-ansi "^6.0.0" -"@vue/compiler-core@3.0.11": - version "3.0.11" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.0.11.tgz#5ef579e46d7b336b8735228758d1c2c505aae69a" - integrity sha512-6sFj6TBac1y2cWCvYCA8YzHJEbsVkX7zdRs/3yK/n1ilvRqcn983XvpBbnN3v4mZ1UiQycTvOiajJmOgN9EVgw== +"@vue/compiler-core@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.1.1.tgz#4f2c5d70eabd454675714cc8bd2b97f6a8efb196" + integrity sha512-Z1RO3T6AEtAUFf2EqqovFm3ohAeTvFzRtB0qUENW2nEerJfdlk13/LS1a0EgsqlzxmYfR/S/S/gW9PLbFZZxkA== dependencies: "@babel/parser" "^7.12.0" "@babel/types" "^7.12.0" - "@vue/shared" "3.0.11" + "@vue/shared" "3.1.1" estree-walker "^2.0.1" source-map "^0.6.1" -"@vue/compiler-dom@3.0.11": - version "3.0.11" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.0.11.tgz#b15fc1c909371fd671746020ba55b5dab4a730ee" - integrity sha512-+3xB50uGeY5Fv9eMKVJs2WSRULfgwaTJsy23OIltKgMrynnIj8hTYY2UL97HCoz78aDw1VDXdrBQ4qepWjnQcw== +"@vue/compiler-dom@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.1.1.tgz#ef60d856ac2ede5b2ad5c72a7a68122895e3d652" + integrity sha512-nobRIo0t5ibzg+q8nC31m+aJhbq8FbWUoKvk6h3Vs1EqTDJaj6lBTcVTq5or8AYht7FbSpdAJ81isbJ1rWNX7A== dependencies: - "@vue/compiler-core" "3.0.11" - "@vue/shared" "3.0.11" + "@vue/compiler-core" "3.1.1" + "@vue/shared" "3.1.1" -"@vue/compiler-sfc@^3.0.0": - version "3.0.11" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.0.11.tgz#cd8ca2154b88967b521f5ad3b10f5f8b6b665679" - integrity sha512-7fNiZuCecRleiyVGUWNa6pn8fB2fnuJU+3AGjbjl7r1P5wBivfl02H4pG+2aJP5gh2u+0wXov1W38tfWOphsXw== +"@vue/compiler-sfc@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.1.1.tgz#d4e4507c013d0b219f0b106b317ec5bb1cde3398" + integrity sha512-lSgMsZaYHF+bAgryq5aUqpvyfhu52GJI2/4LoiJCE5uaxc6FCZfxfgqgw/d9ltiZghv+HiISFtmQVAVvlsk+/w== dependencies: "@babel/parser" "^7.13.9" "@babel/types" "^7.13.0" - "@vue/compiler-core" "3.0.11" - "@vue/compiler-dom" "3.0.11" - "@vue/compiler-ssr" "3.0.11" - "@vue/shared" "3.0.11" + "@vue/compiler-core" "3.1.1" + "@vue/compiler-dom" "3.1.1" + "@vue/compiler-ssr" "3.1.1" + "@vue/shared" "3.1.1" consolidate "^0.16.0" estree-walker "^2.0.1" hash-sum "^2.0.0" @@ -1671,13 +1704,13 @@ postcss-selector-parser "^6.0.4" source-map "^0.6.1" -"@vue/compiler-ssr@3.0.11": - version "3.0.11" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.0.11.tgz#ac5a05fd1257412fa66079c823d8203b6a889a13" - integrity sha512-66yUGI8SGOpNvOcrQybRIhl2M03PJ+OrDPm78i7tvVln86MHTKhM3ERbALK26F7tXl0RkjX4sZpucCpiKs3MnA== +"@vue/compiler-ssr@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.1.1.tgz#1d08b98601397258ed059b75966e0e94a385d770" + integrity sha512-7H6krZtVt3h/YzfNp7eYK41hMDz8ZskiBy+Wby+EDRINX6BD9JQ5C8zyy2xAa7T6Iz2VrQzsaJ/Bb52lTPSS5A== dependencies: - "@vue/compiler-dom" "3.0.11" - "@vue/shared" "3.0.11" + "@vue/compiler-dom" "3.1.1" + "@vue/shared" "3.1.1" "@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.1.2": version "3.2.0" @@ -1707,10 +1740,10 @@ resolved "https://registry.yarnpkg.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz#ceb924b4ecb3b9c43871c7a429a02f8423e621ab" integrity sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ== -"@vue/shared@3.0.11": - version "3.0.11" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.0.11.tgz#20d22dd0da7d358bb21c17f9bde8628152642c77" - integrity sha512-b+zB8A2so8eCE0JsxjL24J7vdGl8rzPQ09hZNhystm+KqSbKcAej1A+Hbva1rCMmTTqA+hFnUSDc5kouEo0JzA== +"@vue/shared@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.1.1.tgz#2287cfc3dc20e5b20aeb65c2c3a56533bdca801c" + integrity sha512-g+4pzAw7PYSjARtLBoDq6DmcblX8i9KJHSCnyM5VDDFFifUaUT9iHbFpOF/KOizQ9f7QAqU2JH3Y6aXjzUMhVA== "@vue/web-component-wrapper@^1.2.0": version "1.3.0" @@ -1905,14 +1938,6 @@ address@^1.1.2: resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" @@ -1934,9 +1959,9 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4: uri-js "^4.2.2" ajv@^8.0.1: - version "8.1.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.1.0.tgz#45d5d3d36c7cdd808930cc3e603cf6200dbeb736" - integrity sha512-B/Sk2Ix7A36fs/ZkuGLIR86EdjbgR6fsAcbx9lOP/QBSXujDNbVmIS/U4Itz5k8fPFDeVZl/zQ/gJW4Jrq6XjQ== + version "8.6.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.0.tgz#60cc45d9c46a477d80d92c48076d972c342e5720" + integrity sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -2022,7 +2047,7 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@~3.1.1: +anymatch@^3.0.0, anymatch@~3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== @@ -2242,28 +2267,28 @@ babel-plugin-dynamic-import-node@^2.3.3: object.assign "^4.1.0" babel-plugin-polyfill-corejs2@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz#686775bf9a5aa757e10520903675e3889caeedc4" - integrity sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg== + version "0.2.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" + integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== dependencies: "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.0" + "@babel/helper-define-polyfill-provider" "^0.2.2" semver "^6.1.1" babel-plugin-polyfill-corejs3@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz#f4b4bb7b19329827df36ff56f6e6d367026cb7a2" - integrity sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg== + version "0.2.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.2.tgz#7424a1682ee44baec817327710b1b094e5f8f7f5" + integrity sha512-l1Cf8PKk12eEk5QP/NQ6TH8A1pee6wWDJ96WjxrMXFLHLOBFzYM4moG80HFgduVhTqAFez4alnZKEhP/bYHg0A== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.0" + "@babel/helper-define-polyfill-provider" "^0.2.2" core-js-compat "^3.9.1" babel-plugin-polyfill-regenerator@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz#853f5f5716f4691d98c84f8069c7636ea8da7ab8" - integrity sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg== + version "0.2.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" + integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.0" + "@babel/helper-define-polyfill-provider" "^0.2.2" babel-plugin-syntax-object-rest-spread@^6.8.0: version "6.13.0" @@ -2524,14 +2549,14 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.4: - version "4.16.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.5.tgz#952825440bca8913c62d0021334cbe928ef062ae" - integrity sha512-C2HAjrM1AI/djrpAUU/tr4pml1DqLIzJKSLDBXBrNErl9ZCCTXdhwxdJjYc16953+mBWf7Lw+uUJgpgb8cN71A== +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.16.6: + version "4.16.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" + integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== dependencies: - caniuse-lite "^1.0.30001214" + caniuse-lite "^1.0.30001219" colorette "^1.2.2" - electron-to-chromium "^1.3.719" + electron-to-chromium "^1.3.723" escalade "^3.1.1" node-releases "^1.1.71" @@ -2610,30 +2635,6 @@ cacache@^12.0.2, cacache@^12.0.3: unique-filename "^1.1.1" y18n "^4.0.0" -cacache@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" - integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== - dependencies: - chownr "^1.1.2" - figgy-pudding "^3.5.1" - fs-minipass "^2.0.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - infer-owner "^1.0.4" - lru-cache "^5.1.1" - minipass "^3.0.0" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - p-map "^3.0.0" - promise-inflight "^1.0.1" - rimraf "^2.7.1" - ssri "^7.0.0" - unique-filename "^1.1.1" - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -2726,10 +2727,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001214: - version "1.0.30001218" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001218.tgz#9b44f6ed16f875db6373e2debd4d14a07359002f" - integrity sha512-0ASydOWSy3bB88FbDpJSTt+PfDwnMqrym3yRZfqG8EXSQ06OZhF+q5wgYP/EN+jJMERItNcDQUqMyNjzZ+r5+Q== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219: + version "1.0.30001235" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001235.tgz#ad5ca75bc5a1f7b12df79ad806d715a43a5ac4ed" + integrity sha512-zWEwIVqnzPkSAXOUlQnPW2oKoYb2aLQ4Q5ejdjBcnH63rfypaW34CxaeBn1VMya2XaEU3P/R2qHpWyj+l0BT1A== case-sensitive-paths-webpack-plugin@^2.3.0: version "2.4.0" @@ -2813,7 +2814,7 @@ chokidar@^3.3.0, chokidar@^3.4.1: optionalDependencies: fsevents "~2.3.1" -chownr@^1.1.1, chownr@^1.1.2: +chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== @@ -2853,11 +2854,6 @@ clean-css@4.2.x: dependencies: source-map "~0.6.0" -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -3183,11 +3179,11 @@ copy-webpack-plugin@^5.1.1: webpack-log "^2.0.0" core-js-compat@^3.6.5, core-js-compat@^3.9.0, core-js-compat@^3.9.1: - version "3.11.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.11.0.tgz#635683f43480a0b41e3f6be3b1c648dadb8b4390" - integrity sha512-3wsN9YZJohOSDCjVB0GequOyHax8zFiogSX3XWLE28M1Ew7dTU57tgHjIylSBKSIouwmLBp3g61sKMz/q3xEGA== + version "3.14.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.14.0.tgz#b574dabf29184681d5b16357bd33d104df3d29a5" + integrity sha512-R4NS2eupxtiJU+VwgkF9WTpnSfZW4pogwKHd8bclWU2sp93Pr5S1uYJI84cMOubJRou7bcfL0vmwtLslWN5p3A== dependencies: - browserslist "^4.16.4" + browserslist "^4.16.6" semver "7.0.0" core-js@^2.4.0: @@ -3195,10 +3191,10 @@ core-js@^2.4.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-js@^3.6.5: - version "3.11.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.11.0.tgz#05dac6aa70c0a4ad842261f8957b961d36eb8926" - integrity sha512-bd79DPpx+1Ilh9+30aT5O1sgpQd4Ttg8oqkqi51ZzhedMM1omD2e6IOF48Z/DzDCZ2svp49tN/3vneTK6ZBkXw== +core-js@^3.14.0, core-js@^3.6.5: + version "3.14.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.14.0.tgz#62322b98c71cc2018b027971a69419e2425c2a6c" + integrity sha512-3s+ed8er9ahK+zJpp9ZtuVcDoFzHNiZsPbNAAE4KXgrRHbjSqqNN6xGSXq6bq7TZIbKj4NLrLb6bJ5i+vSVjHA== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -3492,7 +3488,7 @@ debug@^3.1.1, debug@^3.2.6: dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.0: +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.0, debug@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== @@ -3624,9 +3620,9 @@ destroy@~1.0.4: integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= detect-node@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.5.tgz#9d270aa7eaa5af0b72c4c9d9b814e7f4ce738b79" - integrity sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw== + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== diff@^4.0.1: version "4.0.2" @@ -3749,9 +3745,9 @@ dotenv-expand@^5.1.0: integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== dotenv@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + version "8.6.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" + integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== duplexer@^0.1.1: version "0.1.2" @@ -3791,10 +3787,10 @@ ejs@^2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== -electron-to-chromium@^1.3.719: - version "1.3.722" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.722.tgz#621657f79e7f65402e71aa3403bc941f3a4af0a0" - integrity sha512-aAsc906l0RBsVTsGTK+KirVfey9eNtxyejdkbNzkISGxb7AFna3Kf0qvsp8tMttzBt9Bz3HddtYQ+++/PZtRYA== +electron-to-chromium@^1.3.723: + version "1.3.749" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.749.tgz#0ecebc529ceb49dd2a7c838ae425236644c3439a" + integrity sha512-F+v2zxZgw/fMwPz/VUGIggG4ZndDsYy0vlpthi3tjmDZlcfbhN5mYW0evXUsBr2sUtuDANFtle410A9u/sd/4A== elliptic@^6.5.3: version "6.5.4" @@ -3888,10 +3884,10 @@ error-stack-parser@^2.0.2: dependencies: stackframe "^1.1.1" -es-abstract@^1.17.2, es-abstract@^1.18.0-next.2: - version "1.18.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" - integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== +es-abstract@^1.17.2, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: + version "1.18.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0" + integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" @@ -3901,14 +3897,14 @@ es-abstract@^1.17.2, es-abstract@^1.18.0-next.2: has-symbols "^1.0.2" is-callable "^1.2.3" is-negative-zero "^2.0.1" - is-regex "^1.1.2" - is-string "^1.0.5" - object-inspect "^1.9.0" + is-regex "^1.1.3" + is-string "^1.0.6" + object-inspect "^1.10.3" object-keys "^1.1.1" object.assign "^4.1.2" string.prototype.trimend "^1.0.4" string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.0" + unbox-primitive "^1.0.1" es-to-primitive@^1.2.1: version "1.2.1" @@ -3934,6 +3930,11 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + eslint-loader@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.2.1.tgz#28b9c12da54057af0845e2a6112701a2f6bf8337" @@ -3945,10 +3946,10 @@ eslint-loader@^2.2.1: object-hash "^1.1.4" rimraf "^2.6.1" -eslint-plugin-vue@^7.0.0-0: - version "7.9.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.9.0.tgz#f8e83a2a908f4c43fc8304f5401d4ff671f3d560" - integrity sha512-2Q0qQp5+5h+pZvJKCbG1/jCRUYrdgAz5BYKGyTlp2NU8mx09u3Hp7PsH6d5qef6ojuPoCXMnrbbDxeoplihrSw== +eslint-plugin-vue@^7.10.0: + version "7.10.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.10.0.tgz#251749aa99e089e085275f011042c6e74189f89a" + integrity sha512-xdr6e4t/L2moRAeEQ9HKgge/hFq+w9v5Dj+BA54nTAzSFdUyKLiSOdZaRQjCHMY0Pk2WaQBFH9QiWG60xiC+6A== dependencies: eslint-utils "^2.1.0" natural-compare "^1.4.0" @@ -3971,45 +3972,54 @@ eslint-scope@^5.0.0, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^2.0.0, eslint-utils@^2.1.0: +eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== eslint-visitor-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" - integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint@^7.25.0: - version "7.25.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.25.0.tgz#1309e4404d94e676e3e831b3a3ad2b050031eb67" - integrity sha512-TVpSovpvCNpLURIScDRB6g5CYu/ZFq9GfX2hLNIV4dSBKxIWojeDODvYl3t0k0VtMxYeR8OXPCFE5+oHMlGfhw== +eslint@^7.28.0: + version "7.28.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.28.0.tgz#435aa17a0b82c13bb2be9d51408b617e49c1e820" + integrity sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g== dependencies: "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.0" + "@eslint/eslintrc" "^0.4.2" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.0.1" doctrine "^3.0.0" enquirer "^2.3.5" + escape-string-regexp "^4.0.0" eslint-scope "^5.1.1" eslint-utils "^2.1.0" eslint-visitor-keys "^2.0.0" espree "^7.3.1" esquery "^1.4.0" esutils "^2.0.2" + fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" + glob-parent "^5.1.2" globals "^13.6.0" ignore "^4.0.6" import-fresh "^3.0.0" @@ -4018,7 +4028,7 @@ eslint@^7.25.0: js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" - lodash "^4.17.21" + lodash.merge "^4.6.2" minimatch "^3.0.4" natural-compare "^1.4.0" optionator "^0.9.1" @@ -4027,7 +4037,7 @@ eslint@^7.25.0: semver "^7.2.1" strip-ansi "^6.0.0" strip-json-comments "^3.1.0" - table "^6.0.4" + table "^6.0.9" text-table "^0.2.0" v8-compile-cache "^2.0.3" @@ -4282,7 +4292,7 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -4329,9 +4339,9 @@ fastq@^1.6.0: reusify "^1.0.4" faye-websocket@^0.11.3: - version "0.11.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" @@ -4479,9 +4489,9 @@ flush-write-stream@^1.0.0: readable-stream "^2.3.6" follow-redirects@^1.0.0, follow-redirects@^1.10.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.0.tgz#f5d260f95c5f8c105894491feee5dc8993b402fe" - integrity sha512-0vRwd7RKQBTt+mgu87mtYeofLFZpTas2S9zY+jIeuLJMNvudIgF52nr19q40HOwH5RrhWIPuj9puybzSJiRrVg== + version "1.14.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" + integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== for-in@^1.0.2: version "1.0.2" @@ -4533,10 +4543,10 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fragment-cache@^0.2.1: version "0.2.1" @@ -4586,13 +4596,6 @@ fs-extra@^9.0.0, fs-extra@^9.0.1: jsonfile "^6.0.1" universalify "^2.0.0" -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - fs-monkey@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" @@ -4706,7 +4709,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: +glob-parent@^5.1.0, glob-parent@^5.1.2, glob-parent@~5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -4719,9 +4722,9 @@ glob-to-regexp@^0.3.0: integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -4735,21 +4738,14 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - -globals@^13.6.0: - version "13.8.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.8.0.tgz#3e20f504810ce87a8d72e55aecf8435b50f4c1b3" - integrity sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q== +globals@^13.6.0, globals@^13.9.0: + version "13.9.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" + integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== dependencies: type-fest "^0.20.2" -globby@^11.0.1: +globby@^11.0.3: version "11.0.3" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== @@ -4798,7 +4794,7 @@ globby@^9.2.0: pify "^4.0.1" slash "^2.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== @@ -4932,9 +4928,9 @@ hex-color-regex@^1.1.0: integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== highlight.js@^10.7.1: - version "10.7.2" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.2.tgz#89319b861edc66c48854ed1e6da21ea89f847360" - integrity sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg== + version "10.7.3" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" + integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== hmac-drbg@^1.0.1: version "1.0.1" @@ -5081,9 +5077,9 @@ http-proxy-middleware@0.19.1: micromatch "^3.1.10" http-proxy-middleware@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-1.3.0.tgz#eda5e0b7d1f27ac82bd11eb5099d8c309d30cf30" - integrity sha512-nHn8lcFNmxCalzHGXMn0ojKunXC9twBvJ+y7QNhvK/ep7ZDOXvO7Gph01rSwsMOrG4m6N72gAAWXMYhPZvK6OA== + version "1.3.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz#43700d6d9eecb7419bf086a128d0f7205d9eb665" + integrity sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg== dependencies: "@types/http-proxy" "^1.17.5" http-proxy "^1.18.1" @@ -5211,17 +5207,12 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= -infer-owner@^1.0.3, infer-owner@^1.0.4: +infer-owner@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== @@ -5333,9 +5324,9 @@ is-arrayish@^0.3.1: integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== is-bigint@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" - integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" + integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== is-binary-path@^1.0.0: version "1.0.1" @@ -5352,11 +5343,11 @@ is-binary-path@~2.1.0: binary-extensions "^2.0.0" is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" + integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" is-buffer@^1.1.5: version "1.1.6" @@ -5388,9 +5379,9 @@ is-color-stop@^1.0.0: rgba-regex "^1.0.0" is-core-module@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.3.0.tgz#d341652e3408bca69c4671b79a0954a3d349f887" - integrity sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw== + version "2.4.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" + integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== dependencies: has "^1.0.3" @@ -5409,9 +5400,9 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" + integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== is-descriptor@^0.1.0: version "0.1.6" @@ -5493,9 +5484,9 @@ is-negative-zero@^2.0.1: integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" + integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== is-number@^3.0.0: version "3.0.0" @@ -5555,13 +5546,13 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-regex@^1.0.4, is-regex@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" - integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== +is-regex@^1.0.4, is-regex@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" + integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== dependencies: call-bind "^1.0.2" - has-symbols "^1.0.1" + has-symbols "^1.0.2" is-regexp@^1.0.0: version "1.0.0" @@ -5583,17 +5574,17 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== +is-string@^1.0.5, is-string@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" + integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: - has-symbols "^1.0.1" + has-symbols "^1.0.2" is-typedarray@~1.0.0: version "1.0.0" @@ -5662,14 +5653,6 @@ jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" -jest-worker@^25.4.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" - integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== - dependencies: - merge-stream "^2.0.0" - supports-color "^7.0.0" - jest-worker@^26.2.1: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" @@ -5957,12 +5940,7 @@ lodash.defaultsdeep@^4.6.1: resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6" integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA== -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= - -lodash.foreach@^4.2.0: +lodash.foreach@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= @@ -5987,6 +5965,11 @@ lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -6214,17 +6197,17 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.47.0, "mime-db@>= 1.43.0 < 2": - version "1.47.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" - integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== +mime-db@1.48.0, "mime-db@>= 1.43.0 < 2": + version "1.48.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" + integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.30" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" - integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== + version "2.1.31" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" + integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== dependencies: - mime-db "1.47.0" + mime-db "1.48.0" mime@1.6.0: version "1.6.0" @@ -6278,28 +6261,7 @@ minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.1: +minipass@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== @@ -6406,10 +6368,10 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== -nanoid@^3.1.22: - version "3.1.22" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.22.tgz#b35f8fb7d151990a8aebd5aa5015c03cf726f844" - integrity sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ== +nanoid@^3.1.23: + version "3.1.23" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" + integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== nanomatch@^1.2.9: version "1.2.13" @@ -6504,9 +6466,9 @@ node-libs-browser@^2.2.1: vm-browserify "^1.0.1" node-releases@^1.1.71: - version "1.1.71" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" - integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== + version "1.1.73" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" + integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== normalize-package-data@^2.5.0: version "2.5.0" @@ -6605,10 +6567,10 @@ object-hash@^1.1.4: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== -object-inspect@^1.9.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.2.tgz#b6385a3e2b7cae0b5eafcf90cddf85d128767f30" - integrity sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA== +object-inspect@^1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" + integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== object-is@^1.0.1: version "1.1.5" @@ -6657,14 +6619,13 @@ object.pick@^1.3.0: isobject "^3.0.1" object.values@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" - integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== + version "1.1.4" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" + integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - has "^1.0.3" + es-abstract "^1.18.2" obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" @@ -6774,7 +6735,7 @@ p-finally@^2.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1, p-limit@^2.3.0: +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -6800,13 +6761,6 @@ p-map@^2.0.0: resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" - p-retry@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" @@ -6951,9 +6905,9 @@ path-key@^3.0.0, path-key@^3.1.0: integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-to-regexp@0.1.7: version "0.1.7" @@ -6989,9 +6943,9 @@ performance-now@^2.1.0: integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" - integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== pify@^2.0.0: version "2.3.0" @@ -7270,9 +7224,9 @@ postcss-modules-values@^4.0.0: icss-utils "^5.0.0" postcss-modules@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-4.0.0.tgz#2bc7f276ab88f3f1b0fadf6cbd7772d43b5f3b9b" - integrity sha512-ghS/ovDzDqARm4Zj6L2ntadjyQMoyJmi0JkLlYtH2QFLrvNlxH5OAVRPWPeKilB0pY7SbuhO173KOWkPAxRJcw== + version "4.1.3" + resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-4.1.3.tgz#c4c4c41d98d97d24c70e88dacfc97af5a4b3e21d" + integrity sha512-dBT39hrXe4OAVYJe/2ZuIZ9BzYhOe7t+IhedYeQ2OxKwDpAGlkEN/fR0fGnrbx4BvgbMReRX4hCubYK9cE/pJQ== dependencies: generic-names "^2.0.1" icss-replace-symbols "^1.1.0" @@ -7403,9 +7357,9 @@ postcss-selector-parser@^3.0.0: uniq "^1.0.1" postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: - version "6.0.5" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.5.tgz#042d74e137db83e6f294712096cb413f5aa612c4" - integrity sha512-aFYPoYmXbZ1V6HZaSvat08M97A8HqO6Pjz+PiNpw/DhuRrC72XWAdp3hL6wusDCN31sSmcZyMGa2hZEuX+Xfhg== + version "6.0.6" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" + integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -7448,13 +7402,13 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.27, postcss@^7.0.3 supports-color "^6.1.0" postcss@^8.1.10: - version "8.2.13" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.13.tgz#dbe043e26e3c068e45113b1ed6375d2d37e2129f" - integrity sha512-FCE5xLH+hjbzRdpbRb1IMCvPv9yZx2QnDarBEYSN0N0HYk+TcXsEhwdFcFb+SRWOKzKGErhIEbBK2ogyLdTtfQ== + version "8.3.0" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.0.tgz#b1a713f6172ca427e3f05ef1303de8b65683325f" + integrity sha512-+ogXpdAjWGa+fdYY5BQ96V/6tAo+TdSSIMP5huJBIygdWwKtVoB5JWZ7yUd4xZ8r+8Kvvx4nyg/PQ071H4UtcQ== dependencies: colorette "^1.2.2" - nanoid "^3.1.22" - source-map "^0.6.1" + nanoid "^3.1.23" + source-map-js "^0.6.2" prelude-ls@^1.2.1: version "1.2.1" @@ -7505,11 +7459,11 @@ promise-inflight@^1.0.1: integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: - forwarded "~0.1.2" + forwarded "0.2.0" ipaddr.js "1.9.1" prr@~1.0.1: @@ -7745,7 +7699,7 @@ regexp.prototype.flags@^1.2.0: call-bind "^1.0.2" define-properties "^1.1.3" -regexpp@^3.0.0, regexpp@^3.1.0: +regexpp@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== @@ -7922,7 +7876,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -7990,9 +7944,9 @@ rollup@^1.31.1: acorn "^7.1.0" rollup@^2.43.1: - version "2.45.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.45.2.tgz#8fb85917c9f35605720e92328f3ccbfba6f78b48" - integrity sha512-kRRU7wXzFHUzBIv0GfoFFIN3m9oteY4uAsKllIpQDId5cfnkWF2J130l+27dzDju0E6MScKiV0ZM5Bw8m4blYQ== + version "2.51.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.51.1.tgz#87bcd4095fe79b14c9bec0edc7ffa44e4827f793" + integrity sha512-8xfDbAtBleXotb6qKEHWuo/jkn94a9dVqGc7Rwl3sqspCVlnCfbRek7ldhCARSi7h32H0xR4QThm1t9zHN+3uw== optionalDependencies: fsevents "~2.3.1" @@ -8067,7 +8021,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.0.0, schema-utils@^2.5.0, schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: +schema-utils@^2.0.0, schema-utils@^2.5.0, schema-utils@^2.6.5, schema-utils@^2.7.0: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== @@ -8082,9 +8036,9 @@ select-hose@^2.0.0: integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= selfsigned@^1.10.8: - version "1.10.8" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" - integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== + version "1.10.11" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9" + integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== dependencies: node-forge "^0.10.0" @@ -8103,7 +8057,7 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.2.1, semver@^7.3.2: +semver@^7.2.1, semver@^7.3.2, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -8330,6 +8284,11 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== +source-map-js@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" + integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== + source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -8403,9 +8362,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.7" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" - integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== + version "3.0.9" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f" + integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== spdy-transport@^3.0.0: version "3.0.0" @@ -8464,12 +8423,11 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" -ssri@^7.0.0, ssri@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" - integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== +ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== dependencies: - figgy-pudding "^3.5.1" minipass "^3.1.1" stable@^0.1.8: @@ -8722,14 +8680,13 @@ svgo@^1.0.0: unquote "~1.1.1" util.promisify "~1.0.0" -table@^6.0.4: - version "6.6.0" - resolved "https://registry.yarnpkg.com/table/-/table-6.6.0.tgz#905654b79df98d9e9a973de1dd58682532c40e8e" - integrity sha512-iZMtp5tUvcnAdtHpZTWLPF0M7AgiQsURR2DwmxnJwSy8I3+cY+ozzVvYha3BOLG2TB+L0CqjIz+91htuj6yCXg== +table@^6.0.9: + version "6.7.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" + integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== dependencies: ajv "^8.0.1" lodash.clonedeep "^4.5.0" - lodash.flatten "^4.4.0" lodash.truncate "^4.4.2" slice-ansi "^4.0.0" string-width "^4.2.0" @@ -8769,7 +8726,7 @@ tempy@^0.6.0: type-fest "^0.16.0" unique-string "^2.0.0" -terser-webpack-plugin@^1.4.3: +terser-webpack-plugin@^1.4.3, terser-webpack-plugin@^1.4.4: version "1.4.5" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== @@ -8784,22 +8741,7 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser-webpack-plugin@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724" - integrity sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w== - dependencies: - cacache "^13.0.1" - find-cache-dir "^3.3.1" - jest-worker "^25.4.0" - p-limit "^2.3.0" - schema-utils "^2.6.6" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.6.12" - webpack-sources "^1.4.3" - -terser@^4.1.2, terser@^4.6.12, terser@^4.6.2: +terser@^4.1.2, terser@^4.6.2: version "4.8.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== @@ -9001,7 +8943,7 @@ tsutils@^2.29.0: dependencies: tslib "^1.8.1" -tsutils@^3.17.1: +tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== @@ -9057,11 +8999,6 @@ type-fest@^0.6.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -9075,10 +9012,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@~4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" - integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== +typescript@~4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.2.tgz#399ab18aac45802d6f2498de5054fcbbe716a805" + integrity sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw== uglify-js@3.4.x: version "3.4.10" @@ -9088,7 +9025,7 @@ uglify-js@3.4.x: commander "~2.19.0" source-map "~0.6.1" -unbox-primitive@^1.0.0: +unbox-primitive@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== @@ -9343,10 +9280,10 @@ vue-class-component@^7.2.3: resolved "https://registry.yarnpkg.com/vue-class-component/-/vue-class-component-7.2.6.tgz#8471e037b8e4762f5a464686e19e5afc708502e4" integrity sha512-+eaQXVrAm/LldalI272PpDe3+i4mPis0ORiMYxF6Ae4hyuCh15W8Idet7wPUEs4N4YptgFHGys4UrgNQOMyO6w== -vue-cli-plugin-i18n@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/vue-cli-plugin-i18n/-/vue-cli-plugin-i18n-2.1.0.tgz#2b6b0e07c42680558bff0ac42b74bce6015f29b8" - integrity sha512-YBLaoY61eQP1BoSu29xK5711HghTooLmtYbxdXHNz9pOjN4/kX1MDpl6hMaHNkec4/r2hR3MHDWyJqed51Iuaw== +vue-cli-plugin-i18n@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/vue-cli-plugin-i18n/-/vue-cli-plugin-i18n-2.1.1.tgz#aa2579cae810ca641662aee33c13b28f11f12d31" + integrity sha512-78m6lpAJKygkrgP+Ubp7eU59ib62uy6i3seJ4VNXG5txraq21saGhfl3oacXMiFE9K4TbVQl0qCw3vAh8gSe9A== dependencies: debug "^4.3.0" deepmerge "^4.2.0" @@ -9396,10 +9333,10 @@ vue-i18n-extract@1.0.2: is-valid-glob "^1.0.0" yargs "^13.2.2" -vue-i18n@^8.17.0, vue-i18n@^8.24.3: - version "8.24.3" - resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.24.3.tgz#2233ae11ec59e8204df58a28fc41afe9754e3b41" - integrity sha512-uKAYzGbwGIJndY7JwhQwIGi1uyvErWkBfFwooOtjcNnIfMbAR49ad5dT/MiykrJ9pCcgvnocFjFsNLtTzyW+rg== +vue-i18n@^8.17.0, vue-i18n@^8.24.4: + version "8.24.4" + resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.24.4.tgz#b158614c1df7db183d9cadddbb73e1d540269492" + integrity sha512-RZE94WUAGxEiBAANxQ0pptbRwDkNKNSXl3fnJslpFOxVMF6UkUtMDSuYGuW2blDrVgweIXVpethOVkYoNNT9xw== "vue-loader-v16@npm:vue-loader@^16.1.0": version "16.2.0" @@ -9411,9 +9348,9 @@ vue-i18n@^8.17.0, vue-i18n@^8.24.3: loader-utils "^2.0.0" vue-loader@^15.9.2: - version "15.9.6" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.6.tgz#f4bb9ae20c3a8370af3ecf09b8126d38ffdb6b8b" - integrity sha512-j0cqiLzwbeImIC6nVIby2o/ABAWhlppyL/m5oJ67R5MloP0hj/DtFgb0Zmq3J9CG7AJ+AXIvHVnJAPBvrLyuDg== + version "15.9.7" + resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.7.tgz#15b05775c3e0c38407679393c2ce6df673b01044" + integrity sha512-qzlsbLV1HKEMf19IqCJqdNvFJRCI58WNbS6XbPqK13MrLz65es75w392MSQ5TsARAfIjUw+ATm3vlCXUJSOH9Q== dependencies: "@vue/component-compiler-utils" "^3.1.0" hash-sum "^1.0.2" @@ -9439,10 +9376,10 @@ vue-style-loader@^4.1.0, vue-style-loader@^4.1.2: hash-sum "^1.0.2" loader-utils "^1.0.2" -vue-template-compiler@^2.6.12: - version "2.6.12" - resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz#947ed7196744c8a5285ebe1233fe960437fcc57e" - integrity sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg== +vue-template-compiler@^2.6.14: + version "2.6.14" + resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz#a2f0e7d985670d42c9c9ee0d044fed7690f4f763" + integrity sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g== dependencies: de-indent "^1.0.2" he "^1.1.0" @@ -9452,10 +9389,10 @@ vue-template-es2015-compiler@^1.9.0: resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== -vue@^2.6.11: - version "2.6.12" - resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.12.tgz#f5ebd4fa6bd2869403e29a896aed4904456c9123" - integrity sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg== +vue@^2.6.11, vue@^2.6.14: + version "2.6.14" + resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.14.tgz#e51aa5250250d569a3fbad3a8a5a687d6036e235" + integrity sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ== vuedraggable@^2.24.3: version "2.24.3" @@ -9525,16 +9462,16 @@ webpack-bundle-analyzer@^3.8.0: opener "^1.5.1" ws "^6.0.0" -webpack-bundle-tracker@1.0.0-alpha.1: - version "1.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/webpack-bundle-tracker/-/webpack-bundle-tracker-1.0.0-alpha.1.tgz#17b4f41df147d53989f3542b035bcde8c7c2dc00" - integrity sha512-kyLrwD0ZeINe76pevIsAQY49lRrSfw01iCM6kbMi/Fb9m2LYJBv3up3ALcqf3ugiydy4vbaZ8NYTi4F2MxojVw== +webpack-bundle-tracker@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-tracker/-/webpack-bundle-tracker-1.0.0.tgz#46428b91d106c3729b7211474cd888b62c8ca4ba" + integrity sha512-uO787xNxxq2+D+P4FPsnX7D+yDY4qmjopenkxxq2kT6e4QjMe2uPJ6R03mv9KT74YkWKKt/gBC+x+ZFGjb2URQ== dependencies: - "@types/lodash.foreach" "^4.4.6" + "@types/lodash.foreach" "^4.5.6" "@types/lodash.get" "^4.4.6" lodash.assign "^4.2.0" lodash.defaults "^4.2.0" - lodash.foreach "^4.2.0" + lodash.foreach "^4.5.0" lodash.get "^4.4.2" strip-ansi "^6.0.0" @@ -10073,9 +10010,9 @@ wrappy@1: integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= ws@^6.0.0, ws@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + version "6.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== dependencies: async-limiter "~1.0.0" From 9eb17df575d671ccfb0881d2b4e13266ca448a19 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Tue, 8 Jun 2021 20:17:48 +0200 Subject: [PATCH 18/97] added basic support for files --- .../migrations/0131_auto_20210608_1929.py | 24 +++ cookbook/models.py | 10 +- cookbook/serializer.py | 29 +-- .../static/vue/js/import_response_view.js | 2 +- cookbook/static/vue/js/offline_view.js | 2 +- cookbook/static/vue/js/recipe_search_view.js | 2 +- cookbook/static/vue/js/recipe_view.js | 2 +- cookbook/static/vue/js/supermarket_view.js | 2 +- cookbook/static/vue/js/user_file_view.js | 2 +- .../templates/forms/edit_internal_recipe.html | 43 +++- cookbook/views/api.py | 6 +- cookbook/views/views.py | 9 +- vue/src/apps/UserFileView/UserFileView.vue | 28 +-- vue/src/components/FileEditor.vue | 93 +++++++++ vue/src/components/Step.vue | 29 ++- vue/src/locales/en.json | 12 +- vue/src/utils/openapi/api.ts | 193 +++++++++++++----- 17 files changed, 383 insertions(+), 105 deletions(-) create mode 100644 cookbook/migrations/0131_auto_20210608_1929.py create mode 100644 vue/src/components/FileEditor.vue diff --git a/cookbook/migrations/0131_auto_20210608_1929.py b/cookbook/migrations/0131_auto_20210608_1929.py new file mode 100644 index 000000000..ce8126e59 --- /dev/null +++ b/cookbook/migrations/0131_auto_20210608_1929.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.4 on 2021-06-08 17:29 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0130_alter_userfile_file_size_kb'), + ] + + operations = [ + migrations.AddField( + model_name='step', + name='file', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='cookbook.userfile'), + ), + migrations.AlterField( + model_name='step', + name='type', + field=models.CharField(choices=[('TEXT', 'Text'), ('TIME', 'Time'), ('FILE', 'File')], default='TEXT', max_length=16), + ), + ] diff --git a/cookbook/models.py b/cookbook/models.py index 44321d228..cf8b21038 100644 --- a/cookbook/models.py +++ b/cookbook/models.py @@ -7,6 +7,7 @@ from datetime import date, timedelta from annoying.fields import AutoOneToOneField from django.contrib import auth from django.contrib.auth.models import Group, User +from django.core.files.uploadedfile import UploadedFile, InMemoryUploadedFile from django.core.validators import MinLengthValidator from django.db import models from django.utils import timezone @@ -332,10 +333,11 @@ class Ingredient(ExportModelOperationsMixin('ingredient'), models.Model, Permiss class Step(ExportModelOperationsMixin('step'), models.Model, PermissionModelMixin): TEXT = 'TEXT' TIME = 'TIME' + FILE = 'FILE' name = models.CharField(max_length=128, default='', blank=True) type = models.CharField( - choices=((TEXT, _('Text')), (TIME, _('Time')),), + choices=((TEXT, _('Text')), (TIME, _('Time')), (FILE, _('File')),), default=TEXT, max_length=16 ) @@ -343,6 +345,7 @@ class Step(ExportModelOperationsMixin('step'), models.Model, PermissionModelMixi ingredients = models.ManyToManyField(Ingredient, blank=True) time = models.IntegerField(default=0, blank=True) order = models.IntegerField(default=0) + file = models.ForeignKey('UserFile', on_delete=models.PROTECT, null=True, blank=True) show_as_header = models.BooleanField(default=True) objects = ScopedManager(space='recipe__space') @@ -708,6 +711,7 @@ class UserFile(ExportModelOperationsMixin('user_files'), models.Model, Permissio space = models.ForeignKey(Space, on_delete=models.CASCADE) def save(self, *args, **kwargs): - self.file.name = f'{uuid.uuid4()}' + pathlib.Path(self.file.name).suffix - self.file_size_kb = round(self.file.size / 1000) + if hasattr(self.file, 'file') and isinstance(self.file.file, UploadedFile) or isinstance(self.file.file, InMemoryUploadedFile): + self.file.name = f'{uuid.uuid4()}' + pathlib.Path(self.file.name).suffix + self.file_size_kb = round(self.file.size / 1000) super(UserFile, self).save(*args, **kwargs) diff --git a/cookbook/serializer.py b/cookbook/serializer.py index 8c6254351..25d7c5e7f 100644 --- a/cookbook/serializer.py +++ b/cookbook/serializer.py @@ -103,6 +103,20 @@ class UserPreferenceSerializer(serializers.ModelSerializer): ) +class UserFileSerializer(serializers.ModelSerializer): + + def create(self, validated_data): + validated_data['created_by'] = self.context['request'].user + validated_data['space'] = self.context['request'].space + return super().create(validated_data) + + class Meta: + model = UserFile + fields = ('name', 'file', 'file_size_kb', 'id',) + read_only_fields = ('id', 'file_size_kb') + extra_kwargs = {"file": {"required": False, }} + + class StorageSerializer(SpacedModelSerializer): def create(self, validated_data): @@ -251,6 +265,7 @@ class StepSerializer(WritableNestedModelSerializer): ingredients = IngredientSerializer(many=True) ingredients_markdown = serializers.SerializerMethodField('get_ingredients_markdown') ingredients_vue = serializers.SerializerMethodField('get_ingredients_vue') + file = UserFileSerializer(allow_null=True) def get_ingredients_vue(self, obj): return obj.get_instruction_render() @@ -262,7 +277,7 @@ class StepSerializer(WritableNestedModelSerializer): model = Step fields = ( 'id', 'name', 'type', 'instruction', 'ingredients', 'ingredients_markdown', - 'ingredients_vue', 'time', 'order', 'show_as_header' + 'ingredients_vue', 'time', 'order', 'show_as_header', 'file', ) @@ -494,18 +509,6 @@ class BookmarkletImportSerializer(serializers.ModelSerializer): read_only_fields = ('created_by', 'space') -class UserFileSerializer(serializers.ModelSerializer): - - def create(self, validated_data): - validated_data['created_by'] = self.context['request'].user - validated_data['space'] = self.context['request'].space - return super().create(validated_data) - - class Meta: - model = UserFile - fields = ('id', 'name', 'file_size_kb', 'file') - - # Export/Import Serializers class KeywordExportSerializer(KeywordSerializer): diff --git a/cookbook/static/vue/js/import_response_view.js b/cookbook/static/vue/js/import_response_view.js index 7c19b3d02..a6fcdb0dd 100644 --- a/cookbook/static/vue/js/import_response_view.js +++ b/cookbook/static/vue/js/import_response_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var n,a,c=t[0],s=t[1],u=t[2],p=0,h=[];p1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"row"},[r("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[r("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],o={name:"LoadingSpinner",props:{recipe:Object}},a=o,c=r("2877"),s=Object(c["a"])(a,n,i,!1,null,null,null);t["a"]=s.exports},edd4:function(e){e.exports=JSON.parse('{"import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return c})),r.d(t,"e",(function(){return s})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var c=(n+o)/(i+a);if(e===c){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var s=Math.floor(n/i);return[s,n-s*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var c={methods:{_:function(e){return s(e)}}};function s(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}}}); \ No newline at end of file +(function(e){function t(t){for(var n,a,c=t[0],s=t[1],u=t[2],p=0,h=[];p1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"row"},[r("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[r("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],o={name:"LoadingSpinner",props:{recipe:Object}},a=o,c=r("2877"),s=Object(c["a"])(a,n,i,!1,null,null,null);t["a"]=s.exports},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return c})),r.d(t,"e",(function(){return s})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var c=(n+o)/(i+a);if(e===c){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var s=Math.floor(n/i);return[s,n-s*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var c={methods:{_:function(e){return s(e)}}};function s(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}}}); \ No newline at end of file diff --git a/cookbook/static/vue/js/offline_view.js b/cookbook/static/vue/js/offline_view.js index 70da2bb8a..56ed3abd2 100644 --- a/cookbook/static/vue/js/offline_view.js +++ b/cookbook/static/vue/js/offline_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var r,i,s=t[0],c=t[1],l=t[2],f=0,u=[];f1){var a=r[1];t[a]=e(n)}})),t}r["default"].use(a["a"]),t["a"]=new a["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},da67:function(e,t,n){"use strict";n.r(t);n("e260"),n("e6cf"),n("cca6"),n("a79d");var r=n("a026"),a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"app"}},[n("label",[e._v(" "+e._s(e.$t("Search"))+" "),n("input",{directives:[{name:"model",rawName:"v-model",value:e.filter,expression:"filter"}],staticClass:"form-control",attrs:{type:"text"},domProps:{value:e.filter},on:{input:function(t){t.target.composing||(e.filter=t.target.value)}}})]),n("div",{staticClass:"row"},e._l(e.filtered_recipes,(function(t){return n("div",{key:t.id,staticClass:"col-md-3"},[n("b-card",{attrs:{title:t.name,tag:"article"}},[n("b-card-text",[n("span",{staticClass:"text-muted"},[e._v(e._s(e.formatDateTime(t.updated_at)))]),e._v(" "+e._s(t.description)+" ")]),n("b-button",{attrs:{href:e.resolveDjangoUrl("view_recipe",t.id),variant:"primary"}},[e._v(e._s(e.$t("Open")))])],1)],1)})),0)])},o=[],i=(n("159b"),n("caad"),n("2532"),n("b0c0"),n("4de4"),n("d3b7"),n("ddb0"),n("ac1f"),n("466d"),n("5f5b")),s=(n("2dd8"),n("fa7d")),c=n("c1df"),l=n.n(c);r["default"].use(i["a"]),r["default"].prototype.moment=l.a;var d={name:"OfflineView",mixins:[s["b"]],computed:{filtered_recipes:function(){var e=this,t={};return this.recipes.forEach((function(n){n.name.toLowerCase().includes(e.filter.toLowerCase())&&(n.id in t?n.updated_at>t[n.id].updated_at&&(t[n.id]=n):t[n.id]=n)})),t}},data:function(){return{recipes:[],filter:""}},mounted:function(){this.loadRecipe()},methods:{formatDateTime:function(e){return l.a.locale(window.navigator.language),l()(e).format("LLL")},loadRecipe:function(){var e=this;caches.open("api-recipe").then((function(t){t.keys().then((function(t){t.forEach((function(t){caches.match(t).then((function(t){t.json().then((function(t){e.recipes.push(t)}))}))}))}))}))}}},f=d,u=n("2877"),p=Object(u["a"])(f,a,o,!1,null,null,null),g=p.exports,b=n("9225");r["default"].config.productionTip=!1,new r["default"]({i18n:b["a"],render:function(e){return e(g)}}).$mount("#app")},edd4:function(e){e.exports=JSON.parse('{"import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information"}')},fa7d:function(e,t,n){"use strict";n.d(t,"c",(function(){return o})),n.d(t,"f",(function(){return i})),n.d(t,"a",(function(){return s})),n.d(t,"e",(function(){return c})),n.d(t,"b",(function(){return l})),n.d(t,"g",(function(){return d})),n.d(t,"d",(function(){return u}));n("99af");var r=n("59e4");function a(e,t,n){var r=Math.floor(e),a=1,o=r+1,i=1;if(e!==r)while(a<=t&&i<=t){var s=(r+o)/(a+i);if(e===s){a+i<=t?(a+=i,r+=o,i=t+1):a>i?i=t+1:a=t+1;break}et&&(a=i,r=o),!n)return[0,r,a];var c=Math.floor(r/a);return[c,r-c*a,a]}var o={methods:{makeToast:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return i(e,t,n)}}};function i(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=new r["a"];a.$bvToast.toast(t,{title:e,variant:n,toaster:"b-toaster-top-center",solid:!0})}var s={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var l={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function f(e){return window.USER_PREF[e]}function u(e,t){if(f("use_fractions")){var n="",r=a(e*t,9,!0);return r[0]>0&&(n+=r[0]),r[1]>0&&(n+=" ".concat(r[1],"").concat(r[2],"")),n}return p(e*t)}function p(e){var t=f("user_fractions")?f("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}}}); \ No newline at end of file +(function(e){function t(t){for(var r,i,s=t[0],c=t[1],l=t[2],u=0,f=[];u1){var a=r[1];t[a]=e(n)}})),t}r["default"].use(a["a"]),t["a"]=new a["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},da67:function(e,t,n){"use strict";n.r(t);n("e260"),n("e6cf"),n("cca6"),n("a79d");var r=n("a026"),a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"app"}},[n("label",[e._v(" "+e._s(e.$t("Search"))+" "),n("input",{directives:[{name:"model",rawName:"v-model",value:e.filter,expression:"filter"}],staticClass:"form-control",attrs:{type:"text"},domProps:{value:e.filter},on:{input:function(t){t.target.composing||(e.filter=t.target.value)}}})]),n("div",{staticClass:"row"},e._l(e.filtered_recipes,(function(t){return n("div",{key:t.id,staticClass:"col-md-3"},[n("b-card",{attrs:{title:t.name,tag:"article"}},[n("b-card-text",[n("span",{staticClass:"text-muted"},[e._v(e._s(e.formatDateTime(t.updated_at)))]),e._v(" "+e._s(t.description)+" ")]),n("b-button",{attrs:{href:e.resolveDjangoUrl("view_recipe",t.id),variant:"primary"}},[e._v(e._s(e.$t("Open")))])],1)],1)})),0)])},o=[],i=(n("159b"),n("caad"),n("2532"),n("b0c0"),n("4de4"),n("d3b7"),n("ddb0"),n("ac1f"),n("466d"),n("5f5b")),s=(n("2dd8"),n("fa7d")),c=n("c1df"),l=n.n(c);r["default"].use(i["a"]),r["default"].prototype.moment=l.a;var d={name:"OfflineView",mixins:[s["b"]],computed:{filtered_recipes:function(){var e=this,t={};return this.recipes.forEach((function(n){n.name.toLowerCase().includes(e.filter.toLowerCase())&&(n.id in t?n.updated_at>t[n.id].updated_at&&(t[n.id]=n):t[n.id]=n)})),t}},data:function(){return{recipes:[],filter:""}},mounted:function(){this.loadRecipe()},methods:{formatDateTime:function(e){return l.a.locale(window.navigator.language),l()(e).format("LLL")},loadRecipe:function(){var e=this;caches.open("api-recipe").then((function(t){t.keys().then((function(t){t.forEach((function(t){caches.match(t).then((function(t){t.json().then((function(t){e.recipes.push(t)}))}))}))}))}))}}},u=d,f=n("2877"),p=Object(f["a"])(u,a,o,!1,null,null,null),g=p.exports,b=n("9225");r["default"].config.productionTip=!1,new r["default"]({i18n:b["a"],render:function(e){return e(g)}}).$mount("#app")},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,n){"use strict";n.d(t,"c",(function(){return o})),n.d(t,"f",(function(){return i})),n.d(t,"a",(function(){return s})),n.d(t,"e",(function(){return c})),n.d(t,"b",(function(){return l})),n.d(t,"g",(function(){return d})),n.d(t,"d",(function(){return f}));n("99af");var r=n("59e4");function a(e,t,n){var r=Math.floor(e),a=1,o=r+1,i=1;if(e!==r)while(a<=t&&i<=t){var s=(r+o)/(a+i);if(e===s){a+i<=t?(a+=i,r+=o,i=t+1):a>i?i=t+1:a=t+1;break}et&&(a=i,r=o),!n)return[0,r,a];var c=Math.floor(r/a);return[c,r-c*a,a]}var o={methods:{makeToast:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return i(e,t,n)}}};function i(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=new r["a"];a.$bvToast.toast(t,{title:e,variant:n,toaster:"b-toaster-top-center",solid:!0})}var s={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var l={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function u(e){return window.USER_PREF[e]}function f(e,t){if(u("use_fractions")){var n="",r=a(e*t,9,!0);return r[0]>0&&(n+=r[0]),r[1]>0&&(n+=" ".concat(r[1],"").concat(r[2],"")),n}return p(e*t)}function p(e){var t=u("user_fractions")?u("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}}}); \ No newline at end of file diff --git a/cookbook/static/vue/js/recipe_search_view.js b/cookbook/static/vue/js/recipe_search_view.js index b0ff1afeb..f8456e310 100644 --- a/cookbook/static/vue/js/recipe_search_view.js +++ b/cookbook/static/vue/js/recipe_search_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var n,a,s=t[0],c=t[1],u=t[2],p=0,h=[];pnew Date(Date.now()-6048e5)?r("b-badge",{attrs:{pill:"",variant:"success"}},[e._v(e._s(e.$t("New")))]):e._e()]:[e._v(e._s(e.meal_plan.note))]],2)],1),void 0!==e.footer_text?r("b-card-footer",[r("i",{class:e.footer_icon}),e._v(" "+e._s(e.footer_text)+" ")]):e._e()],1)},j=[],O=r("fc0d"),v=r("81d5"),g={name:"RecipeCard",mixins:[b["b"]],components:{Keywords:v["a"],RecipeContextMenu:O["a"]},props:{recipe:Object,meal_plan:Object,footer_text:String,footer_icon:String},data:function(){return{recipe_image:""}},mounted:function(){null==this.recipe||null===this.recipe.image?this.recipe_image=window.IMAGE_PLACEHOLDER:this.recipe_image=this.recipe.image},methods:{clickUrl:function(){return null!==this.recipe?Object(b["g"])("view_recipe",this.recipe.id):Object(b["g"])("view_plan_entry",this.meal_plan.id)}}},m=g,y=r("2877"),S=Object(y["a"])(m,f,j,!1,null,"6fcb509c",null),P=S.exports,U=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("multiselect",{attrs:{options:e.objects,"close-on-select":!0,"clear-on-select":!0,"hide-selected":!0,"preserve-search":!0,placeholder:e.placeholder,label:e.label,"track-by":"id",multiple:!0,loading:e.loading},on:{"search-change":e.search,input:e.selectionChanged},model:{value:e.selected_objects,callback:function(t){e.selected_objects=t},expression:"selected_objects"}})},w=[],k=(r("ac1f"),r("841c"),r("8e5f")),R=r.n(k),L={name:"GenericMultiselect",components:{Multiselect:R.a},data:function(){return{loading:!1,objects:[],selected_objects:[]}},props:{placeholder:String,search_function:String,label:String,parent_variable:String,initial_selection:Array},watch:{initial_selection:function(e,t){this.selected_objects=e}},mounted:function(){this.search("")},methods:{search:function(e){var t=this,r=new l["a"];r[this.search_function]({query:{query:e,limit:10}}).then((function(e){t.objects=e.data}))},selectionChanged:function(){this.$emit("change",{var:this.parent_variable,val:this.selected_objects})}}},_=L,C=Object(y["a"])(_,U,w,!1,null,"20923c58",null),I=C.exports;n["default"].use(h.a),n["default"].use(a["a"]);var E={name:"RecipeSearchView",mixins:[b["b"]],components:{GenericMultiselect:I,RecipeCard:P},data:function(){return{recipes:[],meal_plans:[],last_viewed_recipes:[],settings:{search_input:"",search_internal:!1,search_keywords:[],search_foods:[],search_books:[],search_keywords_or:!0,search_foods_or:!0,search_books_or:!0,advanced_search_visible:!1,show_meal_plan:!0,recently_viewed:5},pagination_count:0,pagination_page:1}},mounted:function(){this.$nextTick((function(){this.$cookies.isKey("search_settings_v2")&&(this.settings=this.$cookies.get("search_settings_v2")),this.loadMealPlan(),this.loadRecentlyViewed(),this.refreshData()})),this.$i18n.locale=window.CUSTOM_LOCALE},watch:{settings:{handler:function(){this.$cookies.set("search_settings_v2",this.settings,-1)},deep:!0},"settings.show_meal_plan":function(){this.loadMealPlan()},"settings.recently_viewed":function(){this.loadRecentlyViewed()},"settings.search_input":d()((function(){this.refreshData()}),300)},methods:{refreshData:function(){var e=this,t=new l["a"];t.listRecipes(this.settings.search_input,this.settings.search_keywords.map((function(e){return e["id"]})),this.settings.search_foods.map((function(e){return e["id"]})),this.settings.search_books.map((function(e){return e["id"]})),this.settings.search_keywords_or,this.settings.search_foods_or,this.settings.search_books_or,this.settings.search_internal,void 0,this.pagination_page).then((function(t){e.recipes=t.data.results,e.pagination_count=t.data.count}))},loadMealPlan:function(){var e=this,t=new l["a"];this.settings.show_meal_plan?t.listMealPlans({query:{from_date:c()().format("YYYY-MM-DD"),to_date:c()().format("YYYY-MM-DD")}}).then((function(t){e.meal_plans=t.data})):this.meal_plans=[]},loadRecentlyViewed:function(){var e=this,t=new l["a"];this.settings.recently_viewed>0?t.listRecipes(void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,{query:{last_viewed:this.settings.recently_viewed}}).then((function(t){e.last_viewed_recipes=t.data.results})):this.last_viewed_recipes=[]},genericSelectChanged:function(e){this.settings[e.var]=e.val,this.refreshData()},resetSearch:function(){this.settings.search_input="",this.settings.search_internal=!1,this.settings.search_keywords=[],this.settings.search_foods=[],this.settings.search_books=[],this.refreshData()},pageChange:function(e){this.pagination_page=e,this.refreshData()}}},T=E,x=(r("60bc"),Object(y["a"])(T,i,o,!1,null,null,null)),B=x.exports,q=r("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:q["a"],render:function(e){return e(B)}}).$mount("#app")},"6ce2":function(e){e.exports=JSON.parse('{"Import":"Import","import_running":"Import läuft, bitte warten!","Import_finished":"Import fertig","View_Recipes":"Rezepte Ansehen","Information":"Information","all_fields_optional":"Alle Felder sind optional und können leer gelassen werden.","convert_internal":"Zu internem Rezept wandeln","Log_Recipe_Cooking":"Kochen protokollieren","External_Recipe_Image":"Externes Rezept Bild","Add_to_Book":"Zu Buch hinzufügen","Add_to_Shopping":"Zu Einkaufsliste hinzufügen","Add_to_Plan":"Zu Plan hinzufügen","Step_start_time":"Schritt Startzeit","Select_Book":"Buch wählen","Recipe_Image":"Rezept Bild","Log_Cooking":"Kochen protokollieren","Proteins":"Proteine","Fats":"Fette","Carbohydrates":"Kohlenhydrate","Calories":"Kalorien","Nutrition":"Nährwerte","Keywords":"Stichwörter","Books":"Bücher","show_only_internal":"Nur interne Rezepte anzeigen","Ingredients":"Zutaten","min":"Min","Servings":"Portionen","Waiting":"Wartezeit","Preparation":"Zubereitung","Edit":"Bearbeiten","Open":"Öffnen","Save":"Speichern","Step":"Schritt","Search":"Suchen","Print":"Drucken","New_Recipe":"Neues Rezept","Url_Import":"URL Import","Reset_Search":"Suche zurücksetzen","or":"oder","and":"und","Recently_Viewed":"Kürzlich angesehen","External":"Extern","Settings":"Einstellungen","Meal_Plan":"Speiseplan","Date":"Datum","Share":"Teilen","Export":"Exportieren","Rating":"Bewertung","Close":"Schließen","Add":"Hinzufügen"}')},"7c15":function(e,t,r){"use strict";r.d(t,"c",(function(){return a})),r.d(t,"d",(function(){return s})),r.d(t,"b",(function(){return c})),r.d(t,"a",(function(){return u}));var n=r("bc3a"),i=r.n(n),o=r("fa7d");function a(e){var t=Object(o["g"])("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),i.a.get(t).then((function(e){return e.data})).catch((function(e){d(e,"There was an error loading a resource!","danger")}))}function s(e){return i.a.post(Object(o["g"])("api:cooklog-list"),e).then((function(e){Object(o["f"])("Saved","Cook Log entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function c(e){return i.a.get(Object(o["g"])("api:recipebook-list")+"?query="+e).then((function(e){return e.data})).catch((function(e){}))}function u(e){return i.a.post(Object(o["g"])("api:recipebookentry-list"),e).then((function(e){Object(o["f"])("Saved","Recipe Book entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function d(e,t){if("response"in e){console.log(e.response);var r="statusText"in e.response?e.response.statusText:Object(o["e"])("Error");t+="\n\n"+JSON.stringify(e.response.data),Object(o["f"])(r,t,"danger")}else Object(o["f"])("Error",t,"danger"),console.log(e)}i.a.defaults.xsrfCookieName="csrftoken",i.a.defaults.xsrfHeaderName="X-CSRFTOKEN"},"81d5":function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return e.recipe.keywords.length>0?r("div",e._l(e.recipe.keywords,(function(t){return r("span",{key:t.id,staticStyle:{padding:"2px"}},[r("b-badge",{attrs:{pill:"",variant:"light"}},[e._v(e._s(t.label))])],1)})),0):e._e()},i=[],o={name:"Keywords",props:{recipe:Object}},a=o,s=r("2877"),c=Object(s["a"])(a,n,i,!1,null,null,null);t["a"]=c.exports},9225:function(e,t,r){"use strict";r("159b"),r("d3b7"),r("ddb0"),r("ac1f"),r("466d");var n=r("a026"),i=r("a925");function o(){var e=r("49f8"),t={};return e.keys().forEach((function(r){var n=r.match(/([A-Za-z0-9-_]+)\./i);if(n&&n.length>1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"row"},[r("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[r("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],o={name:"LoadingSpinner",props:{recipe:Object}},a=o,s=r("2877"),c=Object(s["a"])(a,n,i,!1,null,null,null);t["a"]=c.exports},edd4:function(e){e.exports=JSON.parse('{"import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return s})),r.d(t,"e",(function(){return c})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var s=(n+o)/(i+a);if(e===s){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var c=Math.floor(n/i);return[c,n-c*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var s={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fc0d:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("div",{staticClass:"dropdown"},[e._m(0),r("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[r("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e.$t("Edit")))]),e.recipe.internal?e._e():r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[r("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e.$t("convert_internal")))]),r("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_add_book")}}},[r("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Book"))+" ")]),e.recipe.internal?r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Shopping"))+" ")]):e._e(),r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?recipe="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Plan"))+" ")]),r("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[r("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e.$t("Log_Cooking"))+" ")]),r("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[r("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e.$t("Print"))+" ")]),r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e.$t("Export")))]),e.recipe.internal?r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e.$t("Share")))]):e._e()])]),r("cook-log",{attrs:{recipe:e.recipe}})],1)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[r("i",{staticClass:"fas fa-ellipsis-v"})])}],o=(r("a9e3"),r("fa7d")),a=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e.$t("Log_Recipe_Cooking"),"ok-title":e.$t("Save"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.logCook()}}},[r("p",[e._v(e._s(e.$t("all_fields_optional")))]),r("form",[r("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e.$t("Servings")))]),r("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),r("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e.$t("Rating"))+" - "),r("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),r("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),r("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e.$t("Date")))]),r("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},s=[],c=r("c1df"),u=r.n(c),d=r("a026"),p=r("5f5b"),h=r("7c15");d["default"].prototype.moment=u.a,d["default"].use(p["a"]);var b={name:"CookLog",props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:u()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){Object(h["d"])(this.logObject)}}},l=b,f=r("2877"),j=Object(f["a"])(l,a,s,!1,null,null,null),O=j.exports,v={name:"RecipeContextMenu",mixins:[o["b"]],components:{CookLog:O},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},g=v,m=Object(f["a"])(g,n,i,!1,null,null,null);t["a"]=m.exports}}); \ No newline at end of file +(function(e){function t(t){for(var n,a,s=t[0],c=t[1],u=t[2],p=0,h=[];pnew Date(Date.now()-6048e5)?r("b-badge",{attrs:{pill:"",variant:"success"}},[e._v(e._s(e.$t("New")))]):e._e()]:[e._v(e._s(e.meal_plan.note))]],2)],1),void 0!==e.footer_text?r("b-card-footer",[r("i",{class:e.footer_icon}),e._v(" "+e._s(e.footer_text)+" ")]):e._e()],1)},j=[],O=r("fc0d"),v=r("81d5"),g={name:"RecipeCard",mixins:[b["b"]],components:{Keywords:v["a"],RecipeContextMenu:O["a"]},props:{recipe:Object,meal_plan:Object,footer_text:String,footer_icon:String},data:function(){return{recipe_image:""}},mounted:function(){null==this.recipe||null===this.recipe.image?this.recipe_image=window.IMAGE_PLACEHOLDER:this.recipe_image=this.recipe.image},methods:{clickUrl:function(){return null!==this.recipe?Object(b["g"])("view_recipe",this.recipe.id):Object(b["g"])("view_plan_entry",this.meal_plan.id)}}},m=g,y=r("2877"),S=Object(y["a"])(m,f,j,!1,null,"6fcb509c",null),P=S.exports,U=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("multiselect",{attrs:{options:e.objects,"close-on-select":!0,"clear-on-select":!0,"hide-selected":!0,"preserve-search":!0,placeholder:e.placeholder,label:e.label,"track-by":"id",multiple:!0,loading:e.loading},on:{"search-change":e.search,input:e.selectionChanged},model:{value:e.selected_objects,callback:function(t){e.selected_objects=t},expression:"selected_objects"}})},w=[],k=(r("ac1f"),r("841c"),r("8e5f")),R=r.n(k),L={name:"GenericMultiselect",components:{Multiselect:R.a},data:function(){return{loading:!1,objects:[],selected_objects:[]}},props:{placeholder:String,search_function:String,label:String,parent_variable:String,initial_selection:Array},watch:{initial_selection:function(e,t){this.selected_objects=e}},mounted:function(){this.search("")},methods:{search:function(e){var t=this,r=new l["a"];r[this.search_function]({query:{query:e,limit:10}}).then((function(e){t.objects=e.data}))},selectionChanged:function(){this.$emit("change",{var:this.parent_variable,val:this.selected_objects})}}},_=L,C=Object(y["a"])(_,U,w,!1,null,"20923c58",null),I=C.exports;n["default"].use(h.a),n["default"].use(a["a"]);var T={name:"RecipeSearchView",mixins:[b["b"]],components:{GenericMultiselect:I,RecipeCard:P},data:function(){return{recipes:[],meal_plans:[],last_viewed_recipes:[],settings:{search_input:"",search_internal:!1,search_keywords:[],search_foods:[],search_books:[],search_keywords_or:!0,search_foods_or:!0,search_books_or:!0,advanced_search_visible:!1,show_meal_plan:!0,recently_viewed:5},pagination_count:0,pagination_page:1}},mounted:function(){this.$nextTick((function(){this.$cookies.isKey("search_settings_v2")&&(this.settings=this.$cookies.get("search_settings_v2")),this.loadMealPlan(),this.loadRecentlyViewed(),this.refreshData()})),this.$i18n.locale=window.CUSTOM_LOCALE},watch:{settings:{handler:function(){this.$cookies.set("search_settings_v2",this.settings,-1)},deep:!0},"settings.show_meal_plan":function(){this.loadMealPlan()},"settings.recently_viewed":function(){this.loadRecentlyViewed()},"settings.search_input":d()((function(){this.refreshData()}),300)},methods:{refreshData:function(){var e=this,t=new l["a"];t.listRecipes(this.settings.search_input,this.settings.search_keywords.map((function(e){return e["id"]})),this.settings.search_foods.map((function(e){return e["id"]})),this.settings.search_books.map((function(e){return e["id"]})),this.settings.search_keywords_or,this.settings.search_foods_or,this.settings.search_books_or,this.settings.search_internal,void 0,this.pagination_page).then((function(t){e.recipes=t.data.results,e.pagination_count=t.data.count}))},loadMealPlan:function(){var e=this,t=new l["a"];this.settings.show_meal_plan?t.listMealPlans({query:{from_date:c()().format("YYYY-MM-DD"),to_date:c()().format("YYYY-MM-DD")}}).then((function(t){e.meal_plans=t.data})):this.meal_plans=[]},loadRecentlyViewed:function(){var e=this,t=new l["a"];this.settings.recently_viewed>0?t.listRecipes(void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,{query:{last_viewed:this.settings.recently_viewed}}).then((function(t){e.last_viewed_recipes=t.data.results})):this.last_viewed_recipes=[]},genericSelectChanged:function(e){this.settings[e.var]=e.val,this.refreshData()},resetSearch:function(){this.settings.search_input="",this.settings.search_internal=!1,this.settings.search_keywords=[],this.settings.search_foods=[],this.settings.search_books=[],this.refreshData()},pageChange:function(e){this.pagination_page=e,this.refreshData()}}},E=T,x=(r("60bc"),Object(y["a"])(E,i,o,!1,null,null,null)),B=x.exports,q=r("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:q["a"],render:function(e){return e(B)}}).$mount("#app")},"6ce2":function(e){e.exports=JSON.parse('{"Import":"Import","import_running":"Import läuft, bitte warten!","Import_finished":"Import fertig","View_Recipes":"Rezepte Ansehen","Information":"Information","all_fields_optional":"Alle Felder sind optional und können leer gelassen werden.","convert_internal":"Zu internem Rezept wandeln","Log_Recipe_Cooking":"Kochen protokollieren","External_Recipe_Image":"Externes Rezept Bild","Add_to_Book":"Zu Buch hinzufügen","Add_to_Shopping":"Zu Einkaufsliste hinzufügen","Add_to_Plan":"Zu Plan hinzufügen","Step_start_time":"Schritt Startzeit","Select_Book":"Buch wählen","Recipe_Image":"Rezept Bild","Log_Cooking":"Kochen protokollieren","Proteins":"Proteine","Fats":"Fette","Carbohydrates":"Kohlenhydrate","Calories":"Kalorien","Nutrition":"Nährwerte","Keywords":"Stichwörter","Books":"Bücher","show_only_internal":"Nur interne Rezepte anzeigen","Ingredients":"Zutaten","min":"Min","Servings":"Portionen","Waiting":"Wartezeit","Preparation":"Zubereitung","Edit":"Bearbeiten","Open":"Öffnen","Save":"Speichern","Step":"Schritt","Search":"Suchen","Print":"Drucken","New_Recipe":"Neues Rezept","Url_Import":"URL Import","Reset_Search":"Suche zurücksetzen","or":"oder","and":"und","Recently_Viewed":"Kürzlich angesehen","External":"Extern","Settings":"Einstellungen","Meal_Plan":"Speiseplan","Date":"Datum","Share":"Teilen","Export":"Exportieren","Rating":"Bewertung","Close":"Schließen","Add":"Hinzufügen"}')},"7c15":function(e,t,r){"use strict";r.d(t,"c",(function(){return a})),r.d(t,"d",(function(){return s})),r.d(t,"b",(function(){return c})),r.d(t,"a",(function(){return u}));var n=r("bc3a"),i=r.n(n),o=r("fa7d");function a(e){var t=Object(o["g"])("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),i.a.get(t).then((function(e){return e.data})).catch((function(e){d(e,"There was an error loading a resource!","danger")}))}function s(e){return i.a.post(Object(o["g"])("api:cooklog-list"),e).then((function(e){Object(o["f"])("Saved","Cook Log entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function c(e){return i.a.get(Object(o["g"])("api:recipebook-list")+"?query="+e).then((function(e){return e.data})).catch((function(e){}))}function u(e){return i.a.post(Object(o["g"])("api:recipebookentry-list"),e).then((function(e){Object(o["f"])("Saved","Recipe Book entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function d(e,t){if("response"in e){console.log(e.response);var r="statusText"in e.response?e.response.statusText:Object(o["e"])("Error");t+="\n\n"+JSON.stringify(e.response.data),Object(o["f"])(r,t,"danger")}else Object(o["f"])("Error",t,"danger"),console.log(e)}i.a.defaults.xsrfCookieName="csrftoken",i.a.defaults.xsrfHeaderName="X-CSRFTOKEN"},"81d5":function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return e.recipe.keywords.length>0?r("div",e._l(e.recipe.keywords,(function(t){return r("span",{key:t.id,staticStyle:{padding:"2px"}},[r("b-badge",{attrs:{pill:"",variant:"light"}},[e._v(e._s(t.label))])],1)})),0):e._e()},i=[],o={name:"Keywords",props:{recipe:Object}},a=o,s=r("2877"),c=Object(s["a"])(a,n,i,!1,null,null,null);t["a"]=c.exports},9225:function(e,t,r){"use strict";r("159b"),r("d3b7"),r("ddb0"),r("ac1f"),r("466d");var n=r("a026"),i=r("a925");function o(){var e=r("49f8"),t={};return e.keys().forEach((function(r){var n=r.match(/([A-Za-z0-9-_]+)\./i);if(n&&n.length>1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"row"},[r("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[r("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],o={name:"LoadingSpinner",props:{recipe:Object}},a=o,s=r("2877"),c=Object(s["a"])(a,n,i,!1,null,null,null);t["a"]=c.exports},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return s})),r.d(t,"e",(function(){return c})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var s=(n+o)/(i+a);if(e===s){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var c=Math.floor(n/i);return[c,n-c*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var s={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fc0d:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("div",{staticClass:"dropdown"},[e._m(0),r("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[r("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e.$t("Edit")))]),e.recipe.internal?e._e():r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[r("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e.$t("convert_internal")))]),r("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_add_book")}}},[r("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Book"))+" ")]),e.recipe.internal?r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Shopping"))+" ")]):e._e(),r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?recipe="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Plan"))+" ")]),r("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[r("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e.$t("Log_Cooking"))+" ")]),r("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[r("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e.$t("Print"))+" ")]),r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e.$t("Export")))]),e.recipe.internal?r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e.$t("Share")))]):e._e()])]),r("cook-log",{attrs:{recipe:e.recipe}})],1)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[r("i",{staticClass:"fas fa-ellipsis-v"})])}],o=(r("a9e3"),r("fa7d")),a=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e.$t("Log_Recipe_Cooking"),"ok-title":e.$t("Save"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.logCook()}}},[r("p",[e._v(e._s(e.$t("all_fields_optional")))]),r("form",[r("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e.$t("Servings")))]),r("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),r("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e.$t("Rating"))+" - "),r("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),r("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),r("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e.$t("Date")))]),r("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},s=[],c=r("c1df"),u=r.n(c),d=r("a026"),p=r("5f5b"),h=r("7c15");d["default"].prototype.moment=u.a,d["default"].use(p["a"]);var b={name:"CookLog",props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:u()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){Object(h["d"])(this.logObject)}}},l=b,f=r("2877"),j=Object(f["a"])(l,a,s,!1,null,null,null),O=j.exports,v={name:"RecipeContextMenu",mixins:[o["b"]],components:{CookLog:O},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},g=v,m=Object(f["a"])(g,n,i,!1,null,null,null);t["a"]=m.exports}}); \ No newline at end of file diff --git a/cookbook/static/vue/js/recipe_view.js b/cookbook/static/vue/js/recipe_view.js index 7eb1d2b94..f2e733b66 100644 --- a/cookbook/static/vue/js/recipe_view.js +++ b/cookbook/static/vue/js/recipe_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var n,s,o=t[0],c=t[1],l=t[2],p=0,u=[];p0?i("div",{staticClass:"col-md-6 order-md-1 col-sm-12 order-sm-2 col-12 order-2"},[i("div",{staticClass:"card border-primary"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-pepper-hot"}),e._v(" "+e._s(e.$t("Ingredients")))])])]),i("br"),i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-12"},[i("table",{staticClass:"table table-sm"},[e._l(e.recipe.steps,(function(t){return[e._l(t.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":e.updateIngredientCheckedState}})]}))]}))],2)])])])])]):e._e(),i("div",{staticClass:"col-12 order-1 col-sm-12 order-sm-1 col-md-6 order-md-2"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[null!==e.recipe.image?i("img",{staticClass:"img img-fluid rounded",staticStyle:{"max-height":"30vh"},attrs:{src:e.recipe.image,alt:e.$t("Recipe_Image")}}):e._e()])]),i("div",{staticClass:"row",staticStyle:{"margin-top":"2vh","margin-bottom":"2vh"}},[i("div",{staticClass:"col-12"},[i("Nutrition",{attrs:{recipe:e.recipe,ingredient_factor:e.ingredient_factor}})],1)])])]),e.recipe.internal?e._e():[e.recipe.file_path.includes(".pdf")?i("div",[i("PdfViewer",{attrs:{recipe:e.recipe}})],1):e._e(),e.recipe.file_path.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")||e.recipe.file_path.includes(".gif")?i("div",[i("ImageViewer",{attrs:{recipe:e.recipe}})],1):e._e()],e._l(e.recipe.steps,(function(t,n){return i("div",{key:t.id,staticStyle:{"margin-top":"1vh"}},[i("Step",{attrs:{recipe:e.recipe,step:t,ingredient_factor:e.ingredient_factor,index:n,start_time:e.start_time},on:{"update-start-time":e.updateStartTime,"checked-state-changed":e.updateIngredientCheckedState}})],1)}))],2),i("add-recipe-to-book",{attrs:{recipe:e.recipe}})],2)},r=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-user-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"far fa-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-pizza-slice fa-2x text-primary"})])}],s=i("b85c"),o=i("5f5b"),c=(i("2dd8"),i("7c15")),l=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("hr"),"TEXT"===e.step.type?[e.recipe.steps.length>1?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h5",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))],0!==e.step.time?i("small",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fas fa-user-clock"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min"))+" ")]):e._e(),""!==e.start_time?i("small",{staticClass:"d-print-none"},[i("b-link",{attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")])],1):e._e()],2)]),i("div",{staticClass:"col col-md-4",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]):e._e(),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[i("div",{staticClass:"row"},[e.step.ingredients.length>0&&e.recipe.steps.length>1?i("div",{staticClass:"col col-md-4"},[i("table",{staticClass:"table table-sm"},[e._l(e.step.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":function(i){return e.$emit("checked-state-changed",t)}}})]}))],2)]):e._e(),i("div",{staticClass:"col",class:{"col-md-8":e.recipe.steps.length>1,"col-md-12":e.recipe.steps.length<=1}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)])])]:e._e(),"TIME"===e.step.type?[i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-8 offset-md-2",staticStyle:{"text-align":"center"}},[i("h4",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))]],2),0!==e.step.time?i("span",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fa fa-stopwatch"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min")))]):e._e(),""!==e.start_time?i("b-link",{staticClass:"d-print-none",attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")]):e._e()],1),i("div",{staticClass:"col-md-2",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[""!==e.step.instruction?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-12",staticStyle:{"text-align":"center"}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)]):e._e()])]:e._e(),""!==e.start_time?i("div",[i("b-popover",{ref:"id_reactive_popover_"+e.step.id,attrs:{target:"id_reactive_popover_"+e.step.id,triggers:"click",placement:"bottom",title:e.$t("Step start time")}},[i("div",[i("b-form-group",{staticClass:"mb-1",attrs:{label:"Time","label-for":"popover-input-1","label-cols":"3"}},[i("b-form-input",{attrs:{type:"datetime-local",id:"popover-input-1",size:"sm"},model:{value:e.set_time_input,callback:function(t){e.set_time_input=t},expression:"set_time_input"}})],1)],1),i("div",{staticClass:"row",staticStyle:{"margin-top":"1vh"}},[i("div",{staticClass:"col-12",staticStyle:{"text-align":"right"}},[i("b-button",{staticStyle:{"margin-right":"8px"},attrs:{size:"sm",variant:"secondary"},on:{click:e.closePopover}},[e._v("Cancel")]),i("b-button",{attrs:{size:"sm",variant:"primary"},on:{click:e.updateTime}},[e._v("Ok")])],1)])])],1):e._e()],2)},d=[],p=(i("a9e3"),i("fa7d")),u=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("tr",{on:{click:function(t){return e.$emit("checked-state-changed",e.ingredient)}}},[e.ingredient.is_header?[i("td",{attrs:{colspan:"5"}},[i("b",[e._v(e._s(e.ingredient.note))])])]:[i("td",[e.ingredient.checked?i("i",{staticClass:"far fa-check-circle text-success"}):e._e(),e.ingredient.checked?e._e():i("i",{staticClass:"far fa-check-circle text-primary"})]),i("td",[0!==e.ingredient.amount?i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.ingredient.amount))}}):e._e()]),i("td",[null===e.ingredient.unit||e.ingredient.no_amount?e._e():i("span",[e._v(e._s(e.ingredient.unit.name))])]),i("td",[null!==e.ingredient.food?[null!==e.ingredient.food.recipe?i("a",{attrs:{href:e.resolveDjangoUrl("view_recipe",e.ingredient.food.recipe),target:"_blank",rel:"noopener noreferrer"}},[e._v(e._s(e.ingredient.food.name))]):e._e(),null===e.ingredient.food.recipe?i("span",[e._v(e._s(e.ingredient.food.name))]):e._e()]:e._e()],2),i("td",[e.ingredient.note?i("div",[i("span",{directives:[{name:"b-popover",rawName:"v-b-popover.hover",value:e.ingredient.note,expression:"ingredient.note",modifiers:{hover:!0}}],staticClass:"d-print-none"},[i("i",{staticClass:"far fa-comment"})]),i("div",{staticClass:"d-none d-print-block"},[i("i",{staticClass:"far fa-comment-alt"}),e._v(" "+e._s(e.ingredient.note)+" ")])]):e._e()])]],2)},f=[],_={name:"Ingredient",props:{ingredient:Object,ingredient_factor:{type:Number,default:1}},mixins:[p["b"]],data:function(){return{checked:!1}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},m=_,g=i("2877"),v=Object(g["a"])(m,u,f,!1,null,null,null),b=v.exports,h=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i(e.compiled,{tag:"component",attrs:{ingredient_factor:e.ingredient_factor,code:e.code}})],1)},j=[],k=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.number))}})},C=[],y={name:"ScalableNumber",props:{number:Number,factor:{type:Number,default:4}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.factor)}}},w=y,S=Object(g["a"])(w,k,C,!1,null,null,null),x=S.exports,O={name:"CompileComponent",props:["code","ingredient_factor"],data:function(){return{compiled:null}},mounted:function(){this.compiled=n["default"].component("compiled-component",{props:["ingredient_factor","code"],components:{ScalableNumber:x},template:"
".concat(this.code,"
")})}},E=O,R=Object(g["a"])(E,h,j,!1,null,null,null),I=R.exports,$=i("c1df"),P=i.n($);n["default"].prototype.moment=P.a;var A={name:"Step",mixins:[p["a"]],components:{Ingredient:b,CompileComponent:I},props:{step:Object,ingredient_factor:Number,index:Number,recipe:Object,start_time:String},data:function(){return{details_visible:!0,set_time_input:""}},mounted:function(){this.set_time_input=P()(this.start_time).add(this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm")},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)},updateTime:function(){var e=P()(this.set_time_input).add(-1*this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm");this.$emit("update-start-time",e),this.closePopover()},closePopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("close")},openPopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("open")}}},N=A,z=Object(g["a"])(N,l,d,!1,null,null,null),L=z.exports,B=i("fc0d"),M=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("iframe",{staticStyle:{border:"none"},attrs:{src:e.pdfUrl,width:"100%",height:"700px"}})])},T=[],D={name:"PdfViewer",mixins:[p["b"]],props:{recipe:Object},computed:{pdfUrl:function(){return"/static/pdfjs/viewer.html?file="+Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},U=D,V=Object(g["a"])(U,M,T,!1,null,null,null),H=V.exports,F=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticStyle:{"text-align":"center"}},[i("b-img",{attrs:{src:e.pdfUrl,alt:e.$t("External_Recipe_Image")}})],1)},K=[],Z={name:"ImageViewer",props:{recipe:Object},computed:{pdfUrl:function(){return Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},W=Z,J=Object(g["a"])(W,F,K,!1,null,null,null),q=J.exports,G=function(){var e=this,t=e.$createElement,i=e._self._c||t;return null!==e.recipe.nutrition?i("div",[i("div",{staticClass:"card border-success"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-carrot"}),e._v(" "+e._s(e.$t("Nutrition")))])])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-fire fa-fw text-primary"}),e._v(" "+e._s(e.$t("Calories"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.calories))}}),e._v(" kcal ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-bread-slice fa-fw text-primary"}),e._v(" "+e._s(e.$t("Carbohydrates"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.carbohydrates))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-cheese fa-fw text-primary"}),e._v(" "+e._s(e.$t("Fats"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.fats))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-drumstick-bite fa-fw text-primary"}),e._v(" "+e._s(e.$t("Proteins"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.proteins))}}),e._v(" g ")])])])])]):e._e()},X=[],Q={name:"Nutrition",props:{recipe:Object,ingredient_factor:Number},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},Y=Q,ee=Object(g["a"])(Y,G,X,!1,null,null,null),te=ee.exports,ie=i("81d5"),ne=i("d76c"),ae=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_add_book",title:e.$t("Add_to_Book"),"ok-title":e.$t("Add"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.addToBook()}}},[i("multiselect",{attrs:{options:e.books,"preserve-search":!0,placeholder:e.$t("Select_Book"),label:"name","track-by":"id",id:"id_books",multiple:!1},on:{"search-change":e.loadBook},model:{value:e.selected_book,callback:function(t){e.selected_book=t},expression:"selected_book"}})],1)],1)},re=[],se=i("8e5f"),oe=i.n(se);n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ce={name:"AddRecipeToBook",components:{Multiselect:oe.a},props:{recipe:Object},data:function(){return{books:[],selected_book:null}},mounted:function(){this.loadBook("")},methods:{loadBook:function(e){var t=this;Object(c["b"])(e).then((function(e){t.books=e}))},addToBook:function(){Object(c["a"])({recipe:this.recipe.id,book:this.selected_book.id})}}},le=ce,de=(i("60bc"),Object(g["a"])(le,ae,re,!1,null,null,null)),pe=de.exports;n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ue={name:"RecipeView",mixins:[p["b"],p["c"]],components:{PdfViewer:H,ImageViewer:q,Ingredient:b,Step:L,RecipeContextMenu:B["a"],Nutrition:te,Keywords:ie["a"],LoadingSpinner:ne["a"],AddRecipeToBook:pe},computed:{ingredient_factor:function(){return this.servings/this.recipe.servings}},data:function(){return{loading:!0,recipe:void 0,ingredient_count:0,servings:1,start_time:""}},mounted:function(){this.loadRecipe(window.RECIPE_ID),this.$i18n.locale=window.CUSTOM_LOCALE},methods:{loadRecipe:function(e){var t=this;Object(c["c"])(e).then((function(e){0!==window.USER_SERVINGS&&(e.servings=window.USER_SERVINGS),t.servings=e.servings;var i,n=0,a=Object(s["a"])(e.steps);try{for(a.s();!(i=a.n()).done;){var r=i.value;t.ingredient_count+=r.ingredients.length;var o,c=Object(s["a"])(r.ingredients);try{for(c.s();!(o=c.n()).done;){var l=o.value;t.$set(l,"checked",!1)}}catch(d){c.e(d)}finally{c.f()}r.time_offset=n,n+=r.time}}catch(d){a.e(d)}finally{a.f()}n>0&&(t.start_time=P()().format("yyyy-MM-DDTHH:mm")),t.recipe=e,t.loading=!1}))},updateStartTime:function(e){this.start_time=e},updateIngredientCheckedState:function(e){var t,i=Object(s["a"])(this.recipe.steps);try{for(i.s();!(t=i.n()).done;){var n,a=t.value,r=Object(s["a"])(a.ingredients);try{for(r.s();!(n=r.n()).done;){var o=n.value;o.id===e.id&&this.$set(o,"checked",!o.checked)}}catch(c){r.e(c)}finally{r.f()}}}catch(c){i.e(c)}finally{i.f()}}}},fe=ue,_e=Object(g["a"])(fe,a,r,!1,null,null,null),me=_e.exports,ge=i("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:ge["a"],render:function(e){return e(me)}}).$mount("#app")},1:function(e,t,i){e.exports=i("0671")},4678:function(e,t,i){var n={"./af":"2bfb","./af.js":"2bfb","./ar":"8e73","./ar-dz":"a356","./ar-dz.js":"a356","./ar-kw":"423e","./ar-kw.js":"423e","./ar-ly":"1cfd","./ar-ly.js":"1cfd","./ar-ma":"0a84","./ar-ma.js":"0a84","./ar-sa":"8230","./ar-sa.js":"8230","./ar-tn":"6d83","./ar-tn.js":"6d83","./ar.js":"8e73","./az":"485c","./az.js":"485c","./be":"1fc1","./be.js":"1fc1","./bg":"84aa","./bg.js":"84aa","./bm":"a7fa","./bm.js":"a7fa","./bn":"9043","./bn-bd":"9686","./bn-bd.js":"9686","./bn.js":"9043","./bo":"d26a","./bo.js":"d26a","./br":"6887","./br.js":"6887","./bs":"2554","./bs.js":"2554","./ca":"d716","./ca.js":"d716","./cs":"3c0d","./cs.js":"3c0d","./cv":"03ec","./cv.js":"03ec","./cy":"9797","./cy.js":"9797","./da":"0f14","./da.js":"0f14","./de":"b469","./de-at":"b3eb","./de-at.js":"b3eb","./de-ch":"bb71","./de-ch.js":"bb71","./de.js":"b469","./dv":"598a","./dv.js":"598a","./el":"8d47","./el.js":"8d47","./en-au":"0e6b","./en-au.js":"0e6b","./en-ca":"3886","./en-ca.js":"3886","./en-gb":"39a6","./en-gb.js":"39a6","./en-ie":"e1d3","./en-ie.js":"e1d3","./en-il":"7333","./en-il.js":"7333","./en-in":"ec2e","./en-in.js":"ec2e","./en-nz":"6f50","./en-nz.js":"6f50","./en-sg":"b7e9","./en-sg.js":"b7e9","./eo":"65db","./eo.js":"65db","./es":"898b","./es-do":"0a3c","./es-do.js":"0a3c","./es-mx":"b5b7","./es-mx.js":"b5b7","./es-us":"55c9","./es-us.js":"55c9","./es.js":"898b","./et":"ec18","./et.js":"ec18","./eu":"0ff2","./eu.js":"0ff2","./fa":"8df4","./fa.js":"8df4","./fi":"81e9","./fi.js":"81e9","./fil":"d69a","./fil.js":"d69a","./fo":"0721","./fo.js":"0721","./fr":"9f26","./fr-ca":"d9f8","./fr-ca.js":"d9f8","./fr-ch":"0e49","./fr-ch.js":"0e49","./fr.js":"9f26","./fy":"7118","./fy.js":"7118","./ga":"5120","./ga.js":"5120","./gd":"f6b4","./gd.js":"f6b4","./gl":"8840","./gl.js":"8840","./gom-deva":"aaf2","./gom-deva.js":"aaf2","./gom-latn":"0caa","./gom-latn.js":"0caa","./gu":"e0c5","./gu.js":"e0c5","./he":"c7aa","./he.js":"c7aa","./hi":"dc4d","./hi.js":"dc4d","./hr":"4ba9","./hr.js":"4ba9","./hu":"5b14","./hu.js":"5b14","./hy-am":"d6b6","./hy-am.js":"d6b6","./id":"5038","./id.js":"5038","./is":"0558","./is.js":"0558","./it":"6e98","./it-ch":"6f12","./it-ch.js":"6f12","./it.js":"6e98","./ja":"079e","./ja.js":"079e","./jv":"b540","./jv.js":"b540","./ka":"201b","./ka.js":"201b","./kk":"6d79","./kk.js":"6d79","./km":"e81d","./km.js":"e81d","./kn":"3e92","./kn.js":"3e92","./ko":"22f8","./ko.js":"22f8","./ku":"2421","./ku.js":"2421","./ky":"9609","./ky.js":"9609","./lb":"440c","./lb.js":"440c","./lo":"b29d","./lo.js":"b29d","./lt":"26f9","./lt.js":"26f9","./lv":"b97c","./lv.js":"b97c","./me":"293c","./me.js":"293c","./mi":"688b","./mi.js":"688b","./mk":"6909","./mk.js":"6909","./ml":"02fb","./ml.js":"02fb","./mn":"958b","./mn.js":"958b","./mr":"39bd","./mr.js":"39bd","./ms":"ebe4","./ms-my":"6403","./ms-my.js":"6403","./ms.js":"ebe4","./mt":"1b45","./mt.js":"1b45","./my":"8689","./my.js":"8689","./nb":"6ce3","./nb.js":"6ce3","./ne":"3a39","./ne.js":"3a39","./nl":"facd","./nl-be":"db29","./nl-be.js":"db29","./nl.js":"facd","./nn":"b84c","./nn.js":"b84c","./oc-lnc":"167b","./oc-lnc.js":"167b","./pa-in":"f3ff","./pa-in.js":"f3ff","./pl":"8d57","./pl.js":"8d57","./pt":"f260","./pt-br":"d2d4","./pt-br.js":"d2d4","./pt.js":"f260","./ro":"972c","./ro.js":"972c","./ru":"957c","./ru.js":"957c","./sd":"6784","./sd.js":"6784","./se":"ffff","./se.js":"ffff","./si":"eda5","./si.js":"eda5","./sk":"7be6","./sk.js":"7be6","./sl":"8155","./sl.js":"8155","./sq":"c8f3","./sq.js":"c8f3","./sr":"cf1e","./sr-cyrl":"13e9","./sr-cyrl.js":"13e9","./sr.js":"cf1e","./ss":"52bd","./ss.js":"52bd","./sv":"5fbd","./sv.js":"5fbd","./sw":"74dc","./sw.js":"74dc","./ta":"3de5","./ta.js":"3de5","./te":"5cbb","./te.js":"5cbb","./tet":"576c","./tet.js":"576c","./tg":"3b1b","./tg.js":"3b1b","./th":"10e8","./th.js":"10e8","./tk":"5aff","./tk.js":"5aff","./tl-ph":"0f38","./tl-ph.js":"0f38","./tlh":"cf755","./tlh.js":"cf755","./tr":"0e81","./tr.js":"0e81","./tzl":"cf51","./tzl.js":"cf51","./tzm":"c109","./tzm-latn":"b53d","./tzm-latn.js":"b53d","./tzm.js":"c109","./ug-cn":"6117","./ug-cn.js":"6117","./uk":"ada2","./uk.js":"ada2","./ur":"5294","./ur.js":"5294","./uz":"2e8c","./uz-latn":"010e","./uz-latn.js":"010e","./uz.js":"2e8c","./vi":"2921","./vi.js":"2921","./x-pseudo":"fd7e","./x-pseudo.js":"fd7e","./yo":"7f33","./yo.js":"7f33","./zh-cn":"5c3a","./zh-cn.js":"5c3a","./zh-hk":"49ab","./zh-hk.js":"49ab","./zh-mo":"3a6c","./zh-mo.js":"3a6c","./zh-tw":"90ea","./zh-tw.js":"90ea"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="4678"},"49f8":function(e,t,i){var n={"./de.json":"6ce2","./en.json":"edd4","./nl.json":"a625","./sv.json":"4c5b"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="49f8"},"4c5b":function(e){e.exports=JSON.parse('{"import_running":"Import pågår, var god vänta!","all_fields_optional":"Alla rutor är valfria och kan lämnas tomma.","convert_internal":"Konvertera till internt recept","Log_Recipe_Cooking":"Logga tillagningen av receptet","External_Recipe_Image":"Externt receptbild","Add_to_Book":"Lägg till i kokbok","Add_to_Shopping":"Lägg till i handelslista","Add_to_Plan":"Lägg till i matsedel","Step_start_time":"Steg starttid","Select_Book":"Välj kokbok","Recipe_Image":"Receptbild","Import_finished":"Importering klar","View_Recipes":"Visa recept","Log_Cooking":"Logga tillagning","Proteins":"Protein","Fats":"Fett","Carbohydrates":"Kolhydrater","Calories":"Kalorier","Nutrition":"Näringsinnehåll","Date":"Datum","Share":"Dela","Export":"Exportera","Rating":"Betyg","Close":"Stäng","Add":"Lägg till","Ingredients":"Ingredienser","min":"min","Servings":"Portioner","Waiting":"Väntan","Preparation":"Förberedelse","Edit":"Redigera","Open":"Öppna","Save":"Spara","Step":"Steg","Search":"Sök","Import":"Importera","Print":"Skriv ut","Information":"Information"}')},"6ce2":function(e){e.exports=JSON.parse('{"Import":"Import","import_running":"Import läuft, bitte warten!","Import_finished":"Import fertig","View_Recipes":"Rezepte Ansehen","Information":"Information","all_fields_optional":"Alle Felder sind optional und können leer gelassen werden.","convert_internal":"Zu internem Rezept wandeln","Log_Recipe_Cooking":"Kochen protokollieren","External_Recipe_Image":"Externes Rezept Bild","Add_to_Book":"Zu Buch hinzufügen","Add_to_Shopping":"Zu Einkaufsliste hinzufügen","Add_to_Plan":"Zu Plan hinzufügen","Step_start_time":"Schritt Startzeit","Select_Book":"Buch wählen","Recipe_Image":"Rezept Bild","Log_Cooking":"Kochen protokollieren","Proteins":"Proteine","Fats":"Fette","Carbohydrates":"Kohlenhydrate","Calories":"Kalorien","Nutrition":"Nährwerte","Keywords":"Stichwörter","Books":"Bücher","show_only_internal":"Nur interne Rezepte anzeigen","Ingredients":"Zutaten","min":"Min","Servings":"Portionen","Waiting":"Wartezeit","Preparation":"Zubereitung","Edit":"Bearbeiten","Open":"Öffnen","Save":"Speichern","Step":"Schritt","Search":"Suchen","Print":"Drucken","New_Recipe":"Neues Rezept","Url_Import":"URL Import","Reset_Search":"Suche zurücksetzen","or":"oder","and":"und","Recently_Viewed":"Kürzlich angesehen","External":"Extern","Settings":"Einstellungen","Meal_Plan":"Speiseplan","Date":"Datum","Share":"Teilen","Export":"Exportieren","Rating":"Bewertung","Close":"Schließen","Add":"Hinzufügen"}')},"7c15":function(e,t,i){"use strict";i.d(t,"c",(function(){return s})),i.d(t,"d",(function(){return o})),i.d(t,"b",(function(){return c})),i.d(t,"a",(function(){return l}));var n=i("bc3a"),a=i.n(n),r=i("fa7d");function s(e){var t=Object(r["g"])("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),a.a.get(t).then((function(e){return e.data})).catch((function(e){d(e,"There was an error loading a resource!","danger")}))}function o(e){return a.a.post(Object(r["g"])("api:cooklog-list"),e).then((function(e){Object(r["f"])("Saved","Cook Log entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function c(e){return a.a.get(Object(r["g"])("api:recipebook-list")+"?query="+e).then((function(e){return e.data})).catch((function(e){}))}function l(e){return a.a.post(Object(r["g"])("api:recipebookentry-list"),e).then((function(e){Object(r["f"])("Saved","Recipe Book entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function d(e,t){if("response"in e){console.log(e.response);var i="statusText"in e.response?e.response.statusText:Object(r["e"])("Error");t+="\n\n"+JSON.stringify(e.response.data),Object(r["f"])(i,t,"danger")}else Object(r["f"])("Error",t,"danger"),console.log(e)}a.a.defaults.xsrfCookieName="csrftoken",a.a.defaults.xsrfHeaderName="X-CSRFTOKEN"},"81d5":function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.recipe.keywords.length>0?i("div",e._l(e.recipe.keywords,(function(t){return i("span",{key:t.id,staticStyle:{padding:"2px"}},[i("b-badge",{attrs:{pill:"",variant:"light"}},[e._v(e._s(t.label))])],1)})),0):e._e()},a=[],r={name:"Keywords",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},9225:function(e,t,i){"use strict";i("159b"),i("d3b7"),i("ddb0"),i("ac1f"),i("466d");var n=i("a026"),a=i("a925");function r(){var e=i("49f8"),t={};return e.keys().forEach((function(i){var n=i.match(/([A-Za-z0-9-_]+)\./i);if(n&&n.length>1){var a=n[1];t[a]=e(i)}})),t}n["default"].use(a["a"]),t["a"]=new a["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:r()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"row"},[i("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[i("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],r={name:"LoadingSpinner",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},edd4:function(e){e.exports=JSON.parse('{"import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information"}')},fa7d:function(e,t,i){"use strict";i.d(t,"c",(function(){return r})),i.d(t,"f",(function(){return s})),i.d(t,"a",(function(){return o})),i.d(t,"e",(function(){return c})),i.d(t,"b",(function(){return l})),i.d(t,"g",(function(){return d})),i.d(t,"d",(function(){return u}));i("99af");var n=i("59e4");function a(e,t,i){var n=Math.floor(e),a=1,r=n+1,s=1;if(e!==n)while(a<=t&&s<=t){var o=(n+r)/(a+s);if(e===o){a+s<=t?(a+=s,n+=r,s=t+1):a>s?s=t+1:a=t+1;break}et&&(a=s,n=r),!i)return[0,n,a];var c=Math.floor(n/a);return[c,n-c*a,a]}var r={methods:{makeToast:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return s(e,t,i)}}};function s(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=new n["a"];a.$bvToast.toast(t,{title:e,variant:i,toaster:"b-toaster-top-center",solid:!0})}var o={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var l={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function u(e,t){if(p("use_fractions")){var i="",n=a(e*t,9,!0);return n[0]>0&&(i+=n[0]),n[1]>0&&(i+=" ".concat(n[1],"").concat(n[2],"")),i}return f(e*t)}function f(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fc0d:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("div",{staticClass:"dropdown"},[e._m(0),i("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e.$t("Edit")))]),e.recipe.internal?e._e():i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e.$t("convert_internal")))]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_add_book")}}},[i("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Book"))+" ")]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Shopping"))+" ")]):e._e(),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?recipe="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Plan"))+" ")]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[i("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e.$t("Log_Cooking"))+" ")]),i("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[i("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e.$t("Print"))+" ")]),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e.$t("Export")))]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e.$t("Share")))]):e._e()])]),i("cook-log",{attrs:{recipe:e.recipe}})],1)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[i("i",{staticClass:"fas fa-ellipsis-v"})])}],r=(i("a9e3"),i("fa7d")),s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e.$t("Log_Recipe_Cooking"),"ok-title":e.$t("Save"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.logCook()}}},[i("p",[e._v(e._s(e.$t("all_fields_optional")))]),i("form",[i("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e.$t("Servings")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),i("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e.$t("Rating"))+" - "),i("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),i("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),i("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e.$t("Date")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},o=[],c=i("c1df"),l=i.n(c),d=i("a026"),p=i("5f5b"),u=i("7c15");d["default"].prototype.moment=l.a,d["default"].use(p["a"]);var f={name:"CookLog",props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:l()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){Object(u["d"])(this.logObject)}}},_=f,m=i("2877"),g=Object(m["a"])(_,s,o,!1,null,null,null),v=g.exports,b={name:"RecipeContextMenu",mixins:[r["b"]],components:{CookLog:v},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},h=b,j=Object(m["a"])(h,n,a,!1,null,null,null);t["a"]=j.exports}}); \ No newline at end of file +(function(e){function t(t){for(var n,s,o=t[0],c=t[1],l=t[2],p=0,u=[];p0?i("div",{staticClass:"col-md-6 order-md-1 col-sm-12 order-sm-2 col-12 order-2"},[i("div",{staticClass:"card border-primary"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-pepper-hot"}),e._v(" "+e._s(e.$t("Ingredients")))])])]),i("br"),i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-12"},[i("table",{staticClass:"table table-sm"},[e._l(e.recipe.steps,(function(t){return[e._l(t.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":e.updateIngredientCheckedState}})]}))]}))],2)])])])])]):e._e(),i("div",{staticClass:"col-12 order-1 col-sm-12 order-sm-1 col-md-6 order-md-2"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[null!==e.recipe.image?i("img",{staticClass:"img img-fluid rounded",staticStyle:{"max-height":"30vh"},attrs:{src:e.recipe.image,alt:e.$t("Recipe_Image")}}):e._e()])]),i("div",{staticClass:"row",staticStyle:{"margin-top":"2vh","margin-bottom":"2vh"}},[i("div",{staticClass:"col-12"},[i("Nutrition",{attrs:{recipe:e.recipe,ingredient_factor:e.ingredient_factor}})],1)])])]),e.recipe.internal?e._e():[e.recipe.file_path.includes(".pdf")?i("div",[i("PdfViewer",{attrs:{recipe:e.recipe}})],1):e._e(),e.recipe.file_path.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")||e.recipe.file_path.includes(".gif")?i("div",[i("ImageViewer",{attrs:{recipe:e.recipe}})],1):e._e()],e._l(e.recipe.steps,(function(t,n){return i("div",{key:t.id,staticStyle:{"margin-top":"1vh"}},[i("Step",{attrs:{recipe:e.recipe,step:t,ingredient_factor:e.ingredient_factor,index:n,start_time:e.start_time},on:{"update-start-time":e.updateStartTime,"checked-state-changed":e.updateIngredientCheckedState}})],1)}))],2),i("add-recipe-to-book",{attrs:{recipe:e.recipe}})],2)},r=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-user-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"far fa-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-pizza-slice fa-2x text-primary"})])}],s=i("b85c"),o=i("5f5b"),c=(i("2dd8"),i("7c15")),l=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("hr"),"TEXT"===e.step.type?[e.recipe.steps.length>1?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h5",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))],0!==e.step.time?i("small",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fas fa-user-clock"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min"))+" ")]):e._e(),""!==e.start_time?i("small",{staticClass:"d-print-none"},[i("b-link",{attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")])],1):e._e()],2)]),i("div",{staticClass:"col col-md-4",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]):e._e(),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[i("div",{staticClass:"row"},[e.step.ingredients.length>0&&e.recipe.steps.length>1?i("div",{staticClass:"col col-md-4"},[i("table",{staticClass:"table table-sm"},[e._l(e.step.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":function(i){return e.$emit("checked-state-changed",t)}}})]}))],2)]):e._e(),i("div",{staticClass:"col",class:{"col-md-8":e.recipe.steps.length>1,"col-md-12":e.recipe.steps.length<=1}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)])])]:e._e(),"TIME"===e.step.type||"FILE"===e.step.type?[i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-8 offset-md-2",staticStyle:{"text-align":"center"}},[i("h4",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))]],2),0!==e.step.time?i("span",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fa fa-stopwatch"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min")))]):e._e(),""!==e.start_time?i("b-link",{staticClass:"d-print-none",attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")]):e._e()],1),i("div",{staticClass:"col-md-2",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[""!==e.step.instruction?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-12",staticStyle:{"text-align":"center"}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)]):e._e()])]:e._e(),i("div",{staticClass:"row",staticStyle:{"text-align":"center"}},[i("div",{staticClass:"col col-md-12"},[null!==e.step.file?[e.step.file.file.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")||e.recipe.file_path.includes(".gif")?i("div",[i("img",{staticStyle:{"max-width":"50vw","max-height":"50vh"},attrs:{src:e.step.file.file}})]):i("div",[i("a",{attrs:{href:e.step.file.file,target:"_blank",rel:"noreferrer nofollow"}},[e._v(e._s(e.$t("Download"))+" "+e._s(e.$t("File")))])])]:e._e()],2)]),""!==e.start_time?i("div",[i("b-popover",{ref:"id_reactive_popover_"+e.step.id,attrs:{target:"id_reactive_popover_"+e.step.id,triggers:"click",placement:"bottom",title:e.$t("Step start time")}},[i("div",[i("b-form-group",{staticClass:"mb-1",attrs:{label:"Time","label-for":"popover-input-1","label-cols":"3"}},[i("b-form-input",{attrs:{type:"datetime-local",id:"popover-input-1",size:"sm"},model:{value:e.set_time_input,callback:function(t){e.set_time_input=t},expression:"set_time_input"}})],1)],1),i("div",{staticClass:"row",staticStyle:{"margin-top":"1vh"}},[i("div",{staticClass:"col-12",staticStyle:{"text-align":"right"}},[i("b-button",{staticStyle:{"margin-right":"8px"},attrs:{size:"sm",variant:"secondary"},on:{click:e.closePopover}},[e._v("Cancel")]),i("b-button",{attrs:{size:"sm",variant:"primary"},on:{click:e.updateTime}},[e._v("Ok")])],1)])])],1):e._e()],2)},d=[],p=(i("a9e3"),i("fa7d")),u=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("tr",{on:{click:function(t){return e.$emit("checked-state-changed",e.ingredient)}}},[e.ingredient.is_header?[i("td",{attrs:{colspan:"5"}},[i("b",[e._v(e._s(e.ingredient.note))])])]:[i("td",[e.ingredient.checked?i("i",{staticClass:"far fa-check-circle text-success"}):e._e(),e.ingredient.checked?e._e():i("i",{staticClass:"far fa-check-circle text-primary"})]),i("td",[0!==e.ingredient.amount?i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.ingredient.amount))}}):e._e()]),i("td",[null===e.ingredient.unit||e.ingredient.no_amount?e._e():i("span",[e._v(e._s(e.ingredient.unit.name))])]),i("td",[null!==e.ingredient.food?[null!==e.ingredient.food.recipe?i("a",{attrs:{href:e.resolveDjangoUrl("view_recipe",e.ingredient.food.recipe),target:"_blank",rel:"noopener noreferrer"}},[e._v(e._s(e.ingredient.food.name))]):e._e(),null===e.ingredient.food.recipe?i("span",[e._v(e._s(e.ingredient.food.name))]):e._e()]:e._e()],2),i("td",[e.ingredient.note?i("div",[i("span",{directives:[{name:"b-popover",rawName:"v-b-popover.hover",value:e.ingredient.note,expression:"ingredient.note",modifiers:{hover:!0}}],staticClass:"d-print-none"},[i("i",{staticClass:"far fa-comment"})]),i("div",{staticClass:"d-none d-print-block"},[i("i",{staticClass:"far fa-comment-alt"}),e._v(" "+e._s(e.ingredient.note)+" ")])]):e._e()])]],2)},f=[],_={name:"Ingredient",props:{ingredient:Object,ingredient_factor:{type:Number,default:1}},mixins:[p["b"]],data:function(){return{checked:!1}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},m=_,g=i("2877"),v=Object(g["a"])(m,u,f,!1,null,null,null),b=v.exports,h=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i(e.compiled,{tag:"component",attrs:{ingredient_factor:e.ingredient_factor,code:e.code}})],1)},j=[],k=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.number))}})},C=[],y={name:"ScalableNumber",props:{number:Number,factor:{type:Number,default:4}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.factor)}}},w=y,S=Object(g["a"])(w,k,C,!1,null,null,null),x=S.exports,O={name:"CompileComponent",props:["code","ingredient_factor"],data:function(){return{compiled:null}},mounted:function(){this.compiled=n["default"].component("compiled-component",{props:["ingredient_factor","code"],components:{ScalableNumber:x},template:"
".concat(this.code,"
")})}},E=O,R=Object(g["a"])(E,h,j,!1,null,null,null),$=R.exports,I=i("c1df"),P=i.n(I);n["default"].prototype.moment=P.a;var A={name:"Step",mixins:[p["a"]],components:{Ingredient:b,CompileComponent:$},props:{step:Object,ingredient_factor:Number,index:Number,recipe:Object,start_time:String},data:function(){return{details_visible:!0,set_time_input:""}},mounted:function(){this.set_time_input=P()(this.start_time).add(this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm")},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)},updateTime:function(){var e=P()(this.set_time_input).add(-1*this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm");this.$emit("update-start-time",e),this.closePopover()},closePopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("close")},openPopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("open")}}},N=A,z=Object(g["a"])(N,l,d,!1,null,null,null),L=z.exports,B=i("fc0d"),T=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("iframe",{staticStyle:{border:"none"},attrs:{src:e.pdfUrl,width:"100%",height:"700px"}})])},D=[],M={name:"PdfViewer",mixins:[p["b"]],props:{recipe:Object},computed:{pdfUrl:function(){return"/static/pdfjs/viewer.html?file="+Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},U=M,V=Object(g["a"])(U,T,D,!1,null,null,null),H=V.exports,F=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticStyle:{"text-align":"center"}},[i("b-img",{attrs:{src:e.pdfUrl,alt:e.$t("External_Recipe_Image")}})],1)},K=[],Z={name:"ImageViewer",props:{recipe:Object},computed:{pdfUrl:function(){return Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},W=Z,J=Object(g["a"])(W,F,K,!1,null,null,null),q=J.exports,G=function(){var e=this,t=e.$createElement,i=e._self._c||t;return null!==e.recipe.nutrition?i("div",[i("div",{staticClass:"card border-success"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-carrot"}),e._v(" "+e._s(e.$t("Nutrition")))])])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-fire fa-fw text-primary"}),e._v(" "+e._s(e.$t("Calories"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.calories))}}),e._v(" kcal ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-bread-slice fa-fw text-primary"}),e._v(" "+e._s(e.$t("Carbohydrates"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.carbohydrates))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-cheese fa-fw text-primary"}),e._v(" "+e._s(e.$t("Fats"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.fats))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-drumstick-bite fa-fw text-primary"}),e._v(" "+e._s(e.$t("Proteins"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.proteins))}}),e._v(" g ")])])])])]):e._e()},X=[],Q={name:"Nutrition",props:{recipe:Object,ingredient_factor:Number},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},Y=Q,ee=Object(g["a"])(Y,G,X,!1,null,null,null),te=ee.exports,ie=i("81d5"),ne=i("d76c"),ae=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_add_book",title:e.$t("Add_to_Book"),"ok-title":e.$t("Add"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.addToBook()}}},[i("multiselect",{attrs:{options:e.books,"preserve-search":!0,placeholder:e.$t("Select_Book"),label:"name","track-by":"id",id:"id_books",multiple:!1},on:{"search-change":e.loadBook},model:{value:e.selected_book,callback:function(t){e.selected_book=t},expression:"selected_book"}})],1)],1)},re=[],se=i("8e5f"),oe=i.n(se);n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ce={name:"AddRecipeToBook",components:{Multiselect:oe.a},props:{recipe:Object},data:function(){return{books:[],selected_book:null}},mounted:function(){this.loadBook("")},methods:{loadBook:function(e){var t=this;Object(c["b"])(e).then((function(e){t.books=e}))},addToBook:function(){Object(c["a"])({recipe:this.recipe.id,book:this.selected_book.id})}}},le=ce,de=(i("60bc"),Object(g["a"])(le,ae,re,!1,null,null,null)),pe=de.exports;n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ue={name:"RecipeView",mixins:[p["b"],p["c"]],components:{PdfViewer:H,ImageViewer:q,Ingredient:b,Step:L,RecipeContextMenu:B["a"],Nutrition:te,Keywords:ie["a"],LoadingSpinner:ne["a"],AddRecipeToBook:pe},computed:{ingredient_factor:function(){return this.servings/this.recipe.servings}},data:function(){return{loading:!0,recipe:void 0,ingredient_count:0,servings:1,start_time:""}},mounted:function(){this.loadRecipe(window.RECIPE_ID),this.$i18n.locale=window.CUSTOM_LOCALE},methods:{loadRecipe:function(e){var t=this;Object(c["c"])(e).then((function(e){0!==window.USER_SERVINGS&&(e.servings=window.USER_SERVINGS),t.servings=e.servings;var i,n=0,a=Object(s["a"])(e.steps);try{for(a.s();!(i=a.n()).done;){var r=i.value;t.ingredient_count+=r.ingredients.length;var o,c=Object(s["a"])(r.ingredients);try{for(c.s();!(o=c.n()).done;){var l=o.value;t.$set(l,"checked",!1)}}catch(d){c.e(d)}finally{c.f()}r.time_offset=n,n+=r.time}}catch(d){a.e(d)}finally{a.f()}n>0&&(t.start_time=P()().format("yyyy-MM-DDTHH:mm")),t.recipe=e,t.loading=!1}))},updateStartTime:function(e){this.start_time=e},updateIngredientCheckedState:function(e){var t,i=Object(s["a"])(this.recipe.steps);try{for(i.s();!(t=i.n()).done;){var n,a=t.value,r=Object(s["a"])(a.ingredients);try{for(r.s();!(n=r.n()).done;){var o=n.value;o.id===e.id&&this.$set(o,"checked",!o.checked)}}catch(c){r.e(c)}finally{r.f()}}}catch(c){i.e(c)}finally{i.f()}}}},fe=ue,_e=Object(g["a"])(fe,a,r,!1,null,null,null),me=_e.exports,ge=i("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:ge["a"],render:function(e){return e(me)}}).$mount("#app")},1:function(e,t,i){e.exports=i("0671")},4678:function(e,t,i){var n={"./af":"2bfb","./af.js":"2bfb","./ar":"8e73","./ar-dz":"a356","./ar-dz.js":"a356","./ar-kw":"423e","./ar-kw.js":"423e","./ar-ly":"1cfd","./ar-ly.js":"1cfd","./ar-ma":"0a84","./ar-ma.js":"0a84","./ar-sa":"8230","./ar-sa.js":"8230","./ar-tn":"6d83","./ar-tn.js":"6d83","./ar.js":"8e73","./az":"485c","./az.js":"485c","./be":"1fc1","./be.js":"1fc1","./bg":"84aa","./bg.js":"84aa","./bm":"a7fa","./bm.js":"a7fa","./bn":"9043","./bn-bd":"9686","./bn-bd.js":"9686","./bn.js":"9043","./bo":"d26a","./bo.js":"d26a","./br":"6887","./br.js":"6887","./bs":"2554","./bs.js":"2554","./ca":"d716","./ca.js":"d716","./cs":"3c0d","./cs.js":"3c0d","./cv":"03ec","./cv.js":"03ec","./cy":"9797","./cy.js":"9797","./da":"0f14","./da.js":"0f14","./de":"b469","./de-at":"b3eb","./de-at.js":"b3eb","./de-ch":"bb71","./de-ch.js":"bb71","./de.js":"b469","./dv":"598a","./dv.js":"598a","./el":"8d47","./el.js":"8d47","./en-au":"0e6b","./en-au.js":"0e6b","./en-ca":"3886","./en-ca.js":"3886","./en-gb":"39a6","./en-gb.js":"39a6","./en-ie":"e1d3","./en-ie.js":"e1d3","./en-il":"7333","./en-il.js":"7333","./en-in":"ec2e","./en-in.js":"ec2e","./en-nz":"6f50","./en-nz.js":"6f50","./en-sg":"b7e9","./en-sg.js":"b7e9","./eo":"65db","./eo.js":"65db","./es":"898b","./es-do":"0a3c","./es-do.js":"0a3c","./es-mx":"b5b7","./es-mx.js":"b5b7","./es-us":"55c9","./es-us.js":"55c9","./es.js":"898b","./et":"ec18","./et.js":"ec18","./eu":"0ff2","./eu.js":"0ff2","./fa":"8df4","./fa.js":"8df4","./fi":"81e9","./fi.js":"81e9","./fil":"d69a","./fil.js":"d69a","./fo":"0721","./fo.js":"0721","./fr":"9f26","./fr-ca":"d9f8","./fr-ca.js":"d9f8","./fr-ch":"0e49","./fr-ch.js":"0e49","./fr.js":"9f26","./fy":"7118","./fy.js":"7118","./ga":"5120","./ga.js":"5120","./gd":"f6b4","./gd.js":"f6b4","./gl":"8840","./gl.js":"8840","./gom-deva":"aaf2","./gom-deva.js":"aaf2","./gom-latn":"0caa","./gom-latn.js":"0caa","./gu":"e0c5","./gu.js":"e0c5","./he":"c7aa","./he.js":"c7aa","./hi":"dc4d","./hi.js":"dc4d","./hr":"4ba9","./hr.js":"4ba9","./hu":"5b14","./hu.js":"5b14","./hy-am":"d6b6","./hy-am.js":"d6b6","./id":"5038","./id.js":"5038","./is":"0558","./is.js":"0558","./it":"6e98","./it-ch":"6f12","./it-ch.js":"6f12","./it.js":"6e98","./ja":"079e","./ja.js":"079e","./jv":"b540","./jv.js":"b540","./ka":"201b","./ka.js":"201b","./kk":"6d79","./kk.js":"6d79","./km":"e81d","./km.js":"e81d","./kn":"3e92","./kn.js":"3e92","./ko":"22f8","./ko.js":"22f8","./ku":"2421","./ku.js":"2421","./ky":"9609","./ky.js":"9609","./lb":"440c","./lb.js":"440c","./lo":"b29d","./lo.js":"b29d","./lt":"26f9","./lt.js":"26f9","./lv":"b97c","./lv.js":"b97c","./me":"293c","./me.js":"293c","./mi":"688b","./mi.js":"688b","./mk":"6909","./mk.js":"6909","./ml":"02fb","./ml.js":"02fb","./mn":"958b","./mn.js":"958b","./mr":"39bd","./mr.js":"39bd","./ms":"ebe4","./ms-my":"6403","./ms-my.js":"6403","./ms.js":"ebe4","./mt":"1b45","./mt.js":"1b45","./my":"8689","./my.js":"8689","./nb":"6ce3","./nb.js":"6ce3","./ne":"3a39","./ne.js":"3a39","./nl":"facd","./nl-be":"db29","./nl-be.js":"db29","./nl.js":"facd","./nn":"b84c","./nn.js":"b84c","./oc-lnc":"167b","./oc-lnc.js":"167b","./pa-in":"f3ff","./pa-in.js":"f3ff","./pl":"8d57","./pl.js":"8d57","./pt":"f260","./pt-br":"d2d4","./pt-br.js":"d2d4","./pt.js":"f260","./ro":"972c","./ro.js":"972c","./ru":"957c","./ru.js":"957c","./sd":"6784","./sd.js":"6784","./se":"ffff","./se.js":"ffff","./si":"eda5","./si.js":"eda5","./sk":"7be6","./sk.js":"7be6","./sl":"8155","./sl.js":"8155","./sq":"c8f3","./sq.js":"c8f3","./sr":"cf1e","./sr-cyrl":"13e9","./sr-cyrl.js":"13e9","./sr.js":"cf1e","./ss":"52bd","./ss.js":"52bd","./sv":"5fbd","./sv.js":"5fbd","./sw":"74dc","./sw.js":"74dc","./ta":"3de5","./ta.js":"3de5","./te":"5cbb","./te.js":"5cbb","./tet":"576c","./tet.js":"576c","./tg":"3b1b","./tg.js":"3b1b","./th":"10e8","./th.js":"10e8","./tk":"5aff","./tk.js":"5aff","./tl-ph":"0f38","./tl-ph.js":"0f38","./tlh":"cf755","./tlh.js":"cf755","./tr":"0e81","./tr.js":"0e81","./tzl":"cf51","./tzl.js":"cf51","./tzm":"c109","./tzm-latn":"b53d","./tzm-latn.js":"b53d","./tzm.js":"c109","./ug-cn":"6117","./ug-cn.js":"6117","./uk":"ada2","./uk.js":"ada2","./ur":"5294","./ur.js":"5294","./uz":"2e8c","./uz-latn":"010e","./uz-latn.js":"010e","./uz.js":"2e8c","./vi":"2921","./vi.js":"2921","./x-pseudo":"fd7e","./x-pseudo.js":"fd7e","./yo":"7f33","./yo.js":"7f33","./zh-cn":"5c3a","./zh-cn.js":"5c3a","./zh-hk":"49ab","./zh-hk.js":"49ab","./zh-mo":"3a6c","./zh-mo.js":"3a6c","./zh-tw":"90ea","./zh-tw.js":"90ea"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="4678"},"49f8":function(e,t,i){var n={"./de.json":"6ce2","./en.json":"edd4","./nl.json":"a625","./sv.json":"4c5b"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="49f8"},"4c5b":function(e){e.exports=JSON.parse('{"import_running":"Import pågår, var god vänta!","all_fields_optional":"Alla rutor är valfria och kan lämnas tomma.","convert_internal":"Konvertera till internt recept","Log_Recipe_Cooking":"Logga tillagningen av receptet","External_Recipe_Image":"Externt receptbild","Add_to_Book":"Lägg till i kokbok","Add_to_Shopping":"Lägg till i handelslista","Add_to_Plan":"Lägg till i matsedel","Step_start_time":"Steg starttid","Select_Book":"Välj kokbok","Recipe_Image":"Receptbild","Import_finished":"Importering klar","View_Recipes":"Visa recept","Log_Cooking":"Logga tillagning","Proteins":"Protein","Fats":"Fett","Carbohydrates":"Kolhydrater","Calories":"Kalorier","Nutrition":"Näringsinnehåll","Date":"Datum","Share":"Dela","Export":"Exportera","Rating":"Betyg","Close":"Stäng","Add":"Lägg till","Ingredients":"Ingredienser","min":"min","Servings":"Portioner","Waiting":"Väntan","Preparation":"Förberedelse","Edit":"Redigera","Open":"Öppna","Save":"Spara","Step":"Steg","Search":"Sök","Import":"Importera","Print":"Skriv ut","Information":"Information"}')},"6ce2":function(e){e.exports=JSON.parse('{"Import":"Import","import_running":"Import läuft, bitte warten!","Import_finished":"Import fertig","View_Recipes":"Rezepte Ansehen","Information":"Information","all_fields_optional":"Alle Felder sind optional und können leer gelassen werden.","convert_internal":"Zu internem Rezept wandeln","Log_Recipe_Cooking":"Kochen protokollieren","External_Recipe_Image":"Externes Rezept Bild","Add_to_Book":"Zu Buch hinzufügen","Add_to_Shopping":"Zu Einkaufsliste hinzufügen","Add_to_Plan":"Zu Plan hinzufügen","Step_start_time":"Schritt Startzeit","Select_Book":"Buch wählen","Recipe_Image":"Rezept Bild","Log_Cooking":"Kochen protokollieren","Proteins":"Proteine","Fats":"Fette","Carbohydrates":"Kohlenhydrate","Calories":"Kalorien","Nutrition":"Nährwerte","Keywords":"Stichwörter","Books":"Bücher","show_only_internal":"Nur interne Rezepte anzeigen","Ingredients":"Zutaten","min":"Min","Servings":"Portionen","Waiting":"Wartezeit","Preparation":"Zubereitung","Edit":"Bearbeiten","Open":"Öffnen","Save":"Speichern","Step":"Schritt","Search":"Suchen","Print":"Drucken","New_Recipe":"Neues Rezept","Url_Import":"URL Import","Reset_Search":"Suche zurücksetzen","or":"oder","and":"und","Recently_Viewed":"Kürzlich angesehen","External":"Extern","Settings":"Einstellungen","Meal_Plan":"Speiseplan","Date":"Datum","Share":"Teilen","Export":"Exportieren","Rating":"Bewertung","Close":"Schließen","Add":"Hinzufügen"}')},"7c15":function(e,t,i){"use strict";i.d(t,"c",(function(){return s})),i.d(t,"d",(function(){return o})),i.d(t,"b",(function(){return c})),i.d(t,"a",(function(){return l}));var n=i("bc3a"),a=i.n(n),r=i("fa7d");function s(e){var t=Object(r["g"])("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),a.a.get(t).then((function(e){return e.data})).catch((function(e){d(e,"There was an error loading a resource!","danger")}))}function o(e){return a.a.post(Object(r["g"])("api:cooklog-list"),e).then((function(e){Object(r["f"])("Saved","Cook Log entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function c(e){return a.a.get(Object(r["g"])("api:recipebook-list")+"?query="+e).then((function(e){return e.data})).catch((function(e){}))}function l(e){return a.a.post(Object(r["g"])("api:recipebookentry-list"),e).then((function(e){Object(r["f"])("Saved","Recipe Book entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function d(e,t){if("response"in e){console.log(e.response);var i="statusText"in e.response?e.response.statusText:Object(r["e"])("Error");t+="\n\n"+JSON.stringify(e.response.data),Object(r["f"])(i,t,"danger")}else Object(r["f"])("Error",t,"danger"),console.log(e)}a.a.defaults.xsrfCookieName="csrftoken",a.a.defaults.xsrfHeaderName="X-CSRFTOKEN"},"81d5":function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.recipe.keywords.length>0?i("div",e._l(e.recipe.keywords,(function(t){return i("span",{key:t.id,staticStyle:{padding:"2px"}},[i("b-badge",{attrs:{pill:"",variant:"light"}},[e._v(e._s(t.label))])],1)})),0):e._e()},a=[],r={name:"Keywords",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},9225:function(e,t,i){"use strict";i("159b"),i("d3b7"),i("ddb0"),i("ac1f"),i("466d");var n=i("a026"),a=i("a925");function r(){var e=i("49f8"),t={};return e.keys().forEach((function(i){var n=i.match(/([A-Za-z0-9-_]+)\./i);if(n&&n.length>1){var a=n[1];t[a]=e(i)}})),t}n["default"].use(a["a"]),t["a"]=new a["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:r()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"row"},[i("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[i("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],r={name:"LoadingSpinner",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,i){"use strict";i.d(t,"c",(function(){return r})),i.d(t,"f",(function(){return s})),i.d(t,"a",(function(){return o})),i.d(t,"e",(function(){return c})),i.d(t,"b",(function(){return l})),i.d(t,"g",(function(){return d})),i.d(t,"d",(function(){return u}));i("99af");var n=i("59e4");function a(e,t,i){var n=Math.floor(e),a=1,r=n+1,s=1;if(e!==n)while(a<=t&&s<=t){var o=(n+r)/(a+s);if(e===o){a+s<=t?(a+=s,n+=r,s=t+1):a>s?s=t+1:a=t+1;break}et&&(a=s,n=r),!i)return[0,n,a];var c=Math.floor(n/a);return[c,n-c*a,a]}var r={methods:{makeToast:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return s(e,t,i)}}};function s(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=new n["a"];a.$bvToast.toast(t,{title:e,variant:i,toaster:"b-toaster-top-center",solid:!0})}var o={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var l={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function u(e,t){if(p("use_fractions")){var i="",n=a(e*t,9,!0);return n[0]>0&&(i+=n[0]),n[1]>0&&(i+=" ".concat(n[1],"").concat(n[2],"")),i}return f(e*t)}function f(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fc0d:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("div",{staticClass:"dropdown"},[e._m(0),i("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e.$t("Edit")))]),e.recipe.internal?e._e():i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e.$t("convert_internal")))]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_add_book")}}},[i("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Book"))+" ")]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Shopping"))+" ")]):e._e(),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?recipe="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Plan"))+" ")]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[i("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e.$t("Log_Cooking"))+" ")]),i("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[i("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e.$t("Print"))+" ")]),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e.$t("Export")))]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e.$t("Share")))]):e._e()])]),i("cook-log",{attrs:{recipe:e.recipe}})],1)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[i("i",{staticClass:"fas fa-ellipsis-v"})])}],r=(i("a9e3"),i("fa7d")),s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e.$t("Log_Recipe_Cooking"),"ok-title":e.$t("Save"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.logCook()}}},[i("p",[e._v(e._s(e.$t("all_fields_optional")))]),i("form",[i("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e.$t("Servings")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),i("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e.$t("Rating"))+" - "),i("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),i("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),i("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e.$t("Date")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},o=[],c=i("c1df"),l=i.n(c),d=i("a026"),p=i("5f5b"),u=i("7c15");d["default"].prototype.moment=l.a,d["default"].use(p["a"]);var f={name:"CookLog",props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:l()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){Object(u["d"])(this.logObject)}}},_=f,m=i("2877"),g=Object(m["a"])(_,s,o,!1,null,null,null),v=g.exports,b={name:"RecipeContextMenu",mixins:[r["b"]],components:{CookLog:v},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},h=b,j=Object(m["a"])(h,n,a,!1,null,null,null);t["a"]=j.exports}}); \ No newline at end of file diff --git a/cookbook/static/vue/js/supermarket_view.js b/cookbook/static/vue/js/supermarket_view.js index 251717ca2..69ec41e06 100644 --- a/cookbook/static/vue/js/supermarket_view.js +++ b/cookbook/static/vue/js/supermarket_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var n,a,c=t[0],s=t[1],u=t[2],p=0,h=[];p1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},edd4:function(e){e.exports=JSON.parse('{"import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return c})),r.d(t,"e",(function(){return s})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var c=(n+o)/(i+a);if(e===c){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var s=Math.floor(n/i);return[s,n-s*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var c={methods:{_:function(e){return s(e)}}};function s(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}}}); \ No newline at end of file +(function(e){function t(t){for(var n,a,c=t[0],s=t[1],u=t[2],p=0,h=[];p1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return c})),r.d(t,"e",(function(){return s})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var c=(n+o)/(i+a);if(e===c){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var s=Math.floor(n/i);return[s,n-s*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var c={methods:{_:function(e){return s(e)}}};function s(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}}}); \ No newline at end of file diff --git a/cookbook/static/vue/js/user_file_view.js b/cookbook/static/vue/js/user_file_view.js index 895a44952..df599b62f 100644 --- a/cookbook/static/vue/js/user_file_view.js +++ b/cookbook/static/vue/js/user_file_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var n,a,c=t[0],s=t[1],u=t[2],p=0,h=[];p1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},edd4:function(e){e.exports=JSON.parse('{"import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return c})),r.d(t,"e",(function(){return s})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var c=(n+o)/(i+a);if(e===c){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var s=Math.floor(n/i);return[s,n-s*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var c={methods:{_:function(e){return s(e)}}};function s(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fd4d:function(e,t,r){"use strict";r.r(t);r("e260"),r("e6cf"),r("cca6"),r("a79d");var n=r("a026"),i=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{attrs:{id:"app"}},[r("div",{staticClass:"row"},[r("div",{staticClass:"col col-md-12"},[r("h3",[e._v(e._s(e.$t("Files"))+" "),r("a",{staticClass:"btn btn-success float-right"},[r("i",{staticClass:"fas fa-plus-circle"}),e._v(" "+e._s(e.$t("New")))])])])]),r("div",{staticClass:"row",staticStyle:{"margin-top":"2vh"}},[r("div",{staticClass:"col col-md-12"},[r("b-progress",{attrs:{max:e.max_file_size_mb}},[r("b-progress-bar",{attrs:{value:e.current_file_size_mb}},[r("span",[r("strong",[e._v(e._s(e.current_file_size_mb.toFixed(2))+" / "+e._s(e.max_file_size_mb)+" MB")])])])],1)],1)]),r("div",{staticClass:"row",staticStyle:{"margin-top":"2vh"}},[r("div",{staticClass:"col col-md-12"},[r("table",{staticClass:"table"},[r("thead",[r("tr",[r("th",[e._v(e._s(e.$t("Name")))]),r("th",[e._v(e._s(e.$t("Size"))+" (MB)")])])]),e._l(e.files,(function(t){return r("tr",{key:t.id},[r("td",[e._v(e._s(t.name))]),r("td",[e._v(e._s(t.file_size_kb/1e3))])])}))],2)])])])},o=[],a=(r("b0c0"),r("5f5b")),c=(r("2dd8"),r("fa7d")),s=r("2b2d"),u=r("bc3a"),d=r.n(u);n["default"].use(a["a"]),d.a.defaults.xsrfHeaderName="X-CSRFToken",d.a.defaults.xsrfCookieName="csrftoken";var p={name:"UserFileView",mixins:[c["b"],c["c"]],components:{},data:function(){return{files:[],current_file_size_mb:window.CURRENT_FILE_SIZE_MB,max_file_size_mb:window.MAX_FILE_SIZE_MB}},mounted:function(){this.$i18n.locale=window.CUSTOM_LOCALE,this.loadInitial()},methods:{loadInitial:function(){var e=this,t=new s["a"];t.listUserFiles().then((function(t){e.files=t.data}))},supermarketModalOk:function(){var e=this,t=new s["a"];this.selected_supermarket.new?t.createSupermarket({name:this.selected_supermarket.name}).then((function(t){e.selected_supermarket=void 0,e.loadInitial()})):t.partialUpdateSupermarket(this.selected_supermarket.id,{name:this.selected_supermarket.name})}}},h=p,b=r("2877"),f=Object(b["a"])(h,i,o,!1,null,null,null),l=f.exports,O=r("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:O["a"],render:function(e){return e(l)}}).$mount("#app")}}); \ No newline at end of file +(function(e){function t(t){for(var n,a,c=t[0],s=t[1],u=t[2],p=0,h=[];p1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Open":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return c})),r.d(t,"e",(function(){return s})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var c=(n+o)/(i+a);if(e===c){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var s=Math.floor(n/i);return[s,n-s*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var c={methods:{_:function(e){return s(e)}}};function s(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fd4d:function(e,t,r){"use strict";r.r(t);r("e260"),r("e6cf"),r("cca6"),r("a79d");var n=r("a026"),i=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{attrs:{id:"app"}},[r("div",{staticClass:"row"},[r("div",{staticClass:"col col-md-12"},[r("h3",[e._v(e._s(e.$t("Files"))+" "),r("span",{staticClass:"float-right"},[r("file-editor",{on:{change:function(t){return e.loadInitial()}}})],1)])])]),r("div",{staticClass:"row",staticStyle:{"margin-top":"2vh"}},[r("div",{staticClass:"col col-md-12"},[r("b-progress",{attrs:{max:e.max_file_size_mb}},[r("b-progress-bar",{attrs:{value:e.current_file_size_mb}},[r("span",[r("strong",{staticClass:"text-dark "},[e._v(e._s(e.current_file_size_mb.toFixed(2))+" / "+e._s(e.max_file_size_mb)+" MB")])])])],1)],1)]),r("div",{staticClass:"row",staticStyle:{"margin-top":"2vh"}},[r("div",{staticClass:"col col-md-12"},[r("table",{staticClass:"table"},[r("thead",[r("tr",[r("th",[e._v(e._s(e.$t("Name")))]),r("th",[e._v(e._s(e.$t("Size"))+" (MB)")]),r("th",[e._v(e._s(e.$t("Edit")))])])]),e._l(e.files,(function(t){return r("tr",{key:t.id},[r("td",[e._v(e._s(t.name))]),r("td",[e._v(e._s(t.file_size_kb/1e3))]),r("td",[r("a",{attrs:{href:t.file,target:"_blank",rel:"noreferrer nofollow"}},[e._v(e._s(e.$t("Download")))])]),r("td",[r("file-editor",{attrs:{file_id:t.id},on:{change:function(t){return e.loadInitial()}}})],1)])}))],2)])])])},o=[],a=r("5f5b"),c=(r("2dd8"),r("fa7d")),s=r("2b2d"),u=r("bc3a"),d=r.n(u),p=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("b-button",{directives:[{name:"b-modal",rawName:"v-b-modal",value:"modal-file-editor"+e.file_id,expression:"'modal-file-editor'+file_id"}],class:{"btn-success":void 0===e.file_id}},[this.file_id?[e._v(e._s(e.$t("Edit")))]:[e._v(e._s(e.$t("New")))]],2),r("b-modal",{attrs:{id:"modal-file-editor"+e.file_id,title:e.$t("File")},on:{ok:function(t){return e.modalOk()}}},[void 0!==e.file?[e._v(" "+e._s(e.$t("Name"))+" "),r("b-input",{model:{value:e.file.name,callback:function(t){e.$set(e.file,"name",t)},expression:"file.name"}}),e._v(" "+e._s(e.$t("File"))+" "),r("b-form-file",{model:{value:e.file.file,callback:function(t){e.$set(e.file,"file",t)},expression:"file.file"}})]:e._e()],2)],1)},h=[],b=(r("a9e3"),r("d3b7"),r("25f0"),r("b0c0"),{name:"FileEditor",data:function(){return{file:void 0}},props:{file_id:Number},mounted:function(){void 0!==this.file_id?this.loadFile(this.file_id.toString()):this.file={name:"",file:void 0}},methods:{loadFile:function(e){var t=this,r=new s["a"];r.retrieveUserFile(e).then((function(e){t.file=e.data}))},modalOk:function(){void 0===this.file_id?(console.log("CREATING"),this.createFile()):(console.log("UPDATING"),this.updateFile())},updateFile:function(){var e=this,t=new s["a"],r=void 0;"string"===typeof this.file.file||this.file.file instanceof String||(r=this.file.file),console.log(r),t.updateUserFile(this.file.id,this.file.name,r).then((function(t){Object(c["f"])(e.$t("Success"),e.$t("success_updating_resource"),"success"),e.$emit("change")})).catch((function(t){Object(c["f"])(e.$t("Error"),e.$t("err_updating_resource"),"danger"),console.log(t.request,t.response)}))},createFile:function(){var e=this,t=new s["a"];t.createUserFile(this.file.name,this.file.file).then((function(t){Object(c["f"])(e.$t("Success"),e.$t("success_creating_resource"),"success"),e.$emit("change")})).catch((function(t){Object(c["f"])(e.$t("Error"),e.$t("err_creating_resource"),"danger"),console.log(t.request,t.response)}))}}}),f=b,l=r("2877"),O=Object(l["a"])(f,p,h,!1,null,null,null),j=O.exports;n["default"].use(a["a"]),d.a.defaults.xsrfHeaderName="X-CSRFToken",d.a.defaults.xsrfCookieName="csrftoken";var v={name:"UserFileView",mixins:[c["b"],c["c"]],components:{FileEditor:j},data:function(){return{files:[],current_file_size_mb:window.CURRENT_FILE_SIZE_MB,max_file_size_mb:window.MAX_FILE_SIZE_MB}},mounted:function(){this.$i18n.locale=window.CUSTOM_LOCALE,this.loadInitial()},methods:{loadInitial:function(){var e=this,t=new s["a"];t.listUserFiles().then((function(t){e.files=t.data}))}}},m=v,y=Object(l["a"])(m,i,o,!1,null,null,null),g=y.exports,P=r("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:P["a"],render:function(e){return e(g)}}).$mount("#app")}}); \ No newline at end of file diff --git a/cookbook/templates/forms/edit_internal_recipe.html b/cookbook/templates/forms/edit_internal_recipe.html index 155ab3721..98df6ea7f 100644 --- a/cookbook/templates/forms/edit_internal_recipe.html +++ b/cookbook/templates/forms/edit_internal_recipe.html @@ -201,17 +201,40 @@
-
+
+ +
+ + + +
- @@ -66,13 +82,12 @@ export default { if (!(typeof this.file.file === 'string' || this.file.file instanceof String)) { // only update file if it was changed passedFile = this.file.file } - console.log(passedFile) apiClient.updateUserFile(this.file.id, this.file.name, passedFile).then(request => { makeToast(this.$t('Success'), this.$t('success_updating_resource'), 'success') this.$emit('change',) }).catch(err => { - makeToast(this.$t('Error'), this.$t('err_updating_resource'), 'danger') + makeToast(this.$t('Error'), this.$t('err_updating_resource') + '\n' + err.response.data, 'danger') console.log(err.request, err.response) }) }, @@ -81,10 +96,24 @@ export default { apiClient.createUserFile(this.file.name, this.file.file).then(request => { makeToast(this.$t('Success'), this.$t('success_creating_resource'), 'success') + this.$emit('change',) + this.file = { + name: '', + file: undefined + } + }).catch(err => { + makeToast(this.$t('Error'), this.$t('err_creating_resource') + '\n' + err.response.data, 'danger') + console.log(err.request, err.response) + }) + }, + deleteFile: function () { + let apiClient = new ApiApiFactory() + apiClient.destroyUserFile(this.file.id).then(results => { + makeToast(this.$t('Success'), this.$t('success_deleting_resource'), 'success') this.$emit('change',) }).catch(err => { - makeToast(this.$t('Error'), this.$t('err_creating_resource'), 'danger') + makeToast(this.$t('Error'), this.$t('err_deleting_resource') + '\n' + err.response.data, 'danger') console.log(err.request, err.response) }) } diff --git a/vue/src/locales/en.json b/vue/src/locales/en.json index d0f31e88a..0fc55a86e 100644 --- a/vue/src/locales/en.json +++ b/vue/src/locales/en.json @@ -2,9 +2,11 @@ "err_fetching_resource": "There was an error fetching a resource!", "err_creating_resource": "There was an error creating a resource!", "err_updating_resource": "There was an error updating a resource!", + "err_deleting_resource": "There was an error deleting a resource!", "success_fetching_resource": "Successfully fetched a resource!", "success_creating_resource": "Successfully created a resource!", "success_updating_resource": "Successfully updated a resource!", + "success_deleting_resource": "Successfully deleted a resource!", "import_running": "Import running, please wait!", "all_fields_optional": "All fields are optional and can be left empty.", @@ -60,7 +62,10 @@ "Files": "Files", "File": "File", "Edit": "Edit", + "Cancel": "Cancel", + "Delete": "Delete", "Open": "Open", + "Ok": "Open", "Save": "Save", "Step": "Step", "Search": "Search", From a0b626127563cd9a0bae5c97fc9a30ac32ec7d3e Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Wed, 9 Jun 2021 15:12:12 +0200 Subject: [PATCH 23/97] importer openeats basics --- cookbook/forms.py | 3 ++- cookbook/integration/openeats.py | 17 +++++++++++++++++ cookbook/templates/url_import.html | 4 ++++ cookbook/views/import_export.py | 3 +++ 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 cookbook/integration/openeats.py diff --git a/cookbook/forms.py b/cookbook/forms.py index d96ba1648..23171d292 100644 --- a/cookbook/forms.py +++ b/cookbook/forms.py @@ -126,12 +126,13 @@ class ImportExportBase(forms.Form): DOMESTICA = 'DOMESTICA' MEALMASTER = 'MEALMASTER' REZKONV = 'REZKONV' + OPENEATS = 'OPENEATS' type = forms.ChoiceField(choices=( (DEFAULT, _('Default')), (PAPRIKA, 'Paprika'), (NEXTCLOUD, 'Nextcloud Cookbook'), (MEALIE, 'Mealie'), (CHOWDOWN, 'Chowdown'), (SAFRON, 'Safron'), (CHEFTAP, 'ChefTap'), (PEPPERPLATE, 'Pepperplate'), (RECETTETEK, 'RecetteTek'), (RECIPESAGE, 'Recipe Sage'), (DOMESTICA, 'Domestica'), - (MEALMASTER, 'MealMaster'), (REZKONV, 'RezKonv'), + (MEALMASTER, 'MealMaster'), (REZKONV, 'RezKonv'), (OPENEATS, 'Openeats'), )) diff --git a/cookbook/integration/openeats.py b/cookbook/integration/openeats.py new file mode 100644 index 000000000..ca4c75bac --- /dev/null +++ b/cookbook/integration/openeats.py @@ -0,0 +1,17 @@ +import re + +from django.utils.translation import gettext as _ + +from cookbook.helper.ingredient_parser import parse, get_food, get_unit +from cookbook.integration.integration import Integration +from cookbook.models import Recipe, Step, Food, Unit, Ingredient + + +class OpenEats(Integration): + + def get_recipe_from_file(self, file): + + return None + + def get_file_from_recipe(self, recipe): + raise NotImplementedError('Method not implemented in storage integration') diff --git a/cookbook/templates/url_import.html b/cookbook/templates/url_import.html index 23dd86ff0..c1f5f67b3 100644 --- a/cookbook/templates/url_import.html +++ b/cookbook/templates/url_import.html @@ -88,6 +88,9 @@ + @@ -110,6 +113,7 @@ RecetteTek +
diff --git a/cookbook/views/import_export.py b/cookbook/views/import_export.py index 92a821942..3482f2b79 100644 --- a/cookbook/views/import_export.py +++ b/cookbook/views/import_export.py @@ -18,6 +18,7 @@ from cookbook.integration.domestica import Domestica from cookbook.integration.mealie import Mealie from cookbook.integration.mealmaster import MealMaster from cookbook.integration.nextcloud_cookbook import NextcloudCookbook +from cookbook.integration.openeats import OpenEats from cookbook.integration.paprika import Paprika from cookbook.integration.recettetek import RecetteTek from cookbook.integration.recipesage import RecipeSage @@ -53,6 +54,8 @@ def get_integration(request, export_type): return RezKonv(request, export_type) if export_type == ImportExportBase.MEALMASTER: return MealMaster(request, export_type) + if export_type == ImportExportBase.OPENEATS: + return OpenEats(request, export_type) @group_required('user') From 99fbc5e97c65337af660464cd01c095f71f96e08 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Wed, 9 Jun 2021 15:52:36 +0200 Subject: [PATCH 24/97] added openeats importer --- cookbook/integration/openeats.py | 56 +++++++++++++++++++++++++++++++- docs/features/import_export.md | 44 ++++++++++++++++++++++++- 2 files changed, 98 insertions(+), 2 deletions(-) diff --git a/cookbook/integration/openeats.py b/cookbook/integration/openeats.py index ca4c75bac..09edef68f 100644 --- a/cookbook/integration/openeats.py +++ b/cookbook/integration/openeats.py @@ -1,3 +1,4 @@ +import json import re from django.utils.translation import gettext as _ @@ -10,8 +11,61 @@ from cookbook.models import Recipe, Step, Food, Unit, Ingredient class OpenEats(Integration): def get_recipe_from_file(self, file): + recipe = Recipe.objects.create(name=file['name'].strip(), created_by=self.request.user, internal=True, + servings=file['servings'], space=self.request.space, waiting_time=file['cook_time'], working_time=file['prep_time']) - return None + instructions = '' + if file["info"] != '': + instructions += file["info"] + + if file["directions"] != '': + instructions += file["directions"] + + if file["source"] != '': + instructions += file["source"] + + step = Step.objects.create(instruction=instructions) + + for ingredient in file['ingredients']: + f = get_food(ingredient['food'], self.request.space) + u = get_unit(ingredient['unit'], self.request.space) + step.ingredients.add(Ingredient.objects.create( + food=f, unit=u, amount=ingredient['amount'] + )) + recipe.steps.add(step) + + return recipe + + def split_recipe_file(self, file): + recipe_json = json.loads(file.read()) + recipe_dict = {} + ingredient_group_dict = {} + + for o in recipe_json: + if o['model'] == 'recipe.recipe': + recipe_dict[o['pk']] = { + 'name': o['fields']['title'], + 'info': o['fields']['info'], + 'directions': o['fields']['directions'], + 'source': o['fields']['source'], + 'prep_time': o['fields']['prep_time'], + 'cook_time': o['fields']['cook_time'], + 'servings': o['fields']['servings'], + 'ingredients': [], + } + if o['model'] == 'ingredient.ingredientgroup': + ingredient_group_dict[o['pk']] = o['fields']['recipe'] + + for o in recipe_json: + if o['model'] == 'ingredient.ingredient': + ingredient = { + 'food': o['fields']['title'], + 'unit': o['fields']['measurement'], + 'amount': round(o['fields']['numerator'] / o['fields']['denominator'], 2), + } + recipe_dict[ingredient_group_dict[o['fields']['ingredient_group']]]['ingredients'].append(ingredient) + + return list(recipe_dict.values()) def get_file_from_recipe(self, recipe): raise NotImplementedError('Method not implemented in storage integration') diff --git a/docs/features/import_export.md b/docs/features/import_export.md index c44970104..d3ea5d04c 100644 --- a/docs/features/import_export.md +++ b/docs/features/import_export.md @@ -34,6 +34,7 @@ Overview of the capabilities of the different integrations. | Domestica | ✔️ | ⌚ | ✔️ | | MealMaster | ✔️ | ❌ | ❌ | | RezKonv | ✔️ | ❌ | ❌ | +| OpenEats | ✔️ | ❌ | ⌚ | ✔ = implemented, ❌ = not implemented and not possible/planned, ⌚ = not yet implemented @@ -160,4 +161,45 @@ The RezKonv format is primarily used in the german recipe manager RezKonv Suite. To migrate from RezKonv Suite to Tandoor select `Export > Gesamtes Kochbuch exportieren` (the last option in the export menu). The generated file can simply be imported into Tandoor. -As i only had limited sample data feel free to open an issue if your RezKonv export cannot be imported. \ No newline at end of file +As i only had limited sample data feel free to open an issue if your RezKonv export cannot be imported. + +## OpenEats +OpenEats does not provide any way to export the data using the interface. Luckily it is relatively easy to export it from the command line. +You need to run the command `python manage.py dumpdata recipe ingredient` inside of the application api container. +If you followed the default installation method you can use the following command `docker-compose -f docker-prod.yml run --rm --entrypoint 'sh' api ./manage.py dumpdata recipe ingredient`. + +Store the outputted json string in a `.json` file and simply import it using the importer. The file should look something like this +```json +[ + { + "model":"recipe.recipe", + "pk":1, + "fields":{ + "title":"Tasty Chili", + ... + } + }, + ... + { + "model":"ingredient.ingredientgroup", + "pk":1, + "fields":{ + "title":"Veges", + "recipe":1 + } + }, + ... + { + "model":"ingredient.ingredient", + "pk":1, + "fields":{ + "title":"black pepper", + "numerator":1.0, + "denominator":1.0, + "measurement":"dash", + "ingredient_group":1 + } + } +] + +``` \ No newline at end of file From f7d85bb4b8710fd4fb04c87bcb24bb1400d2cad7 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Wed, 9 Jun 2021 17:23:14 +0200 Subject: [PATCH 25/97] improvements to recipekeeper importer --- cookbook/helper/recipe_url_import.py | 8 +++++ cookbook/integration/integration.py | 2 ++ cookbook/integration/recipekeeper.py | 53 ++++++++++++++-------------- cookbook/templates/url_import.html | 3 ++ docs/features/import_export.md | 7 +++- 5 files changed, 45 insertions(+), 28 deletions(-) diff --git a/cookbook/helper/recipe_url_import.py b/cookbook/helper/recipe_url_import.py index 4facaa570..e76d12e83 100644 --- a/cookbook/helper/recipe_url_import.py +++ b/cookbook/helper/recipe_url_import.py @@ -358,3 +358,11 @@ def normalize_string(string): unescaped_string = re.sub(r'\n\s*\n', '\n\n', unescaped_string) unescaped_string = unescaped_string.replace("\xa0", " ").replace("\t", " ").strip() return unescaped_string + + +def iso_duration_to_minutes(string): + match = re.match( + r'P((?P\d+)Y)?((?P\d+)M)?((?P\d+)W)?((?P\d+)D)?T((?P\d+)H)?((?P\d+)M)?((?P\d+)S)?', + string + ).groupdict() + return int(match['days'] or 0) * 24 * 60 + int(match['hours'] or 0) * 60 + int(match['minutes'] or 0) diff --git a/cookbook/integration/integration.py b/cookbook/integration/integration.py index ef24372a4..fb48308c0 100644 --- a/cookbook/integration/integration.py +++ b/cookbook/integration/integration.py @@ -1,5 +1,6 @@ import datetime import json +import re import uuid from io import BytesIO, StringIO from zipfile import ZipFile, BadZipFile @@ -216,3 +217,4 @@ class Integration: - data - string content for file to get created in export zip """ raise NotImplementedError('Method not implemented in integration') + diff --git a/cookbook/integration/recipekeeper.py b/cookbook/integration/recipekeeper.py index dc2079165..bd5e241fa 100644 --- a/cookbook/integration/recipekeeper.py +++ b/cookbook/integration/recipekeeper.py @@ -6,6 +6,7 @@ from zipfile import ZipFile from django.utils.translation import gettext as _ from cookbook.helper.ingredient_parser import parse, get_food, get_unit +from cookbook.helper.recipe_url_import import parse_servings, iso_duration_to_minutes from cookbook.integration.integration import Integration from cookbook.models import Recipe, Step, Food, Unit, Ingredient, Keyword @@ -32,39 +33,37 @@ class RecipeKeeper(Integration): keyword, created = Keyword.objects.get_or_create(name=category.get("content"), space=self.request.space) recipe.keywords.add(keyword) - # TODO: import prep and cook times - # Recipe Keeper uses ISO 8601 format for its duration periods. + try: + recipe.servings = parse_servings(file.find("span", {"itemprop": "recipeYield"}).text.strip()) + recipe.working_time = iso_duration_to_minutes(file.find("span", {"meta": "prepTime"}).text.strip()) + recipe.waiting_time = iso_duration_to_minutes(file.find("span", {"meta": "cookTime"}).text.strip()) + recipe.save() + except AttributeError: + pass + + step = Step.objects.create(instruction='') + + for ingredient in file.find("div", {"itemprop": "recipeIngredients"}).findChildren("p"): + if ingredient.text == "": + continue + amount, unit, ingredient, note = parse(ingredient.text.strip()) + f = get_food(ingredient, self.request.space) + u = get_unit(unit, self.request.space) + step.ingredients.add(Ingredient.objects.create( + food=f, unit=u, amount=amount, note=note + )) - source_url_added = False - ingredients_added = False for s in file.find("div", {"itemprop": "recipeDirections"}).find_all("p"): - if s.text == "": continue + step.instruction += s.text + ' \n' - step = Step.objects.create( - instruction=s.text - ) + if file.find("span", {"itemprop": "recipeSource"}).text != '': + step.instruction += "\n\nImported from: " + file.find("span", {"itemprop": "recipeSource"}).text + step.save() + source_url_added = True - if not source_url_added: - # If there is a source URL, add it to the first step field. - if file.find("span", {"itemprop": "recipeSource"}).text != '': - step.instruction += "\n\nImported from: " + file.find("span", {"itemprop": "recipeSource"}).text - step.save() - source_url_added = True - - if not ingredients_added: - ingredients_added = True - for ingredient in file.find("div", {"itemprop": "recipeIngredients"}).findChildren("p"): - if ingredient.text == "": - continue - amount, unit, ingredient, note = parse(ingredient.text.strip()) - f = get_food(ingredient, self.request.space) - u = get_unit(unit, self.request.space) - step.ingredients.add(Ingredient.objects.create( - food=f, unit=u, amount=amount, note=note - )) - recipe.steps.add(step) + recipe.steps.add(step) # import the Primary recipe image that is stored in the Zip try: diff --git a/cookbook/templates/url_import.html b/cookbook/templates/url_import.html index c1f5f67b3..5b136e231 100644 --- a/cookbook/templates/url_import.html +++ b/cookbook/templates/url_import.html @@ -100,6 +100,9 @@ + diff --git a/docs/features/import_export.md b/docs/features/import_export.md index d3ea5d04c..fc766bb40 100644 --- a/docs/features/import_export.md +++ b/docs/features/import_export.md @@ -35,6 +35,7 @@ Overview of the capabilities of the different integrations. | MealMaster | ✔️ | ❌ | ❌ | | RezKonv | ✔️ | ❌ | ❌ | | OpenEats | ✔️ | ❌ | ⌚ | +| OpenEats | ✔️ | ❌ | ✔ | ✔ = implemented, ❌ = not implemented and not possible/planned, ⌚ = not yet implemented @@ -161,7 +162,11 @@ The RezKonv format is primarily used in the german recipe manager RezKonv Suite. To migrate from RezKonv Suite to Tandoor select `Export > Gesamtes Kochbuch exportieren` (the last option in the export menu). The generated file can simply be imported into Tandoor. -As i only had limited sample data feel free to open an issue if your RezKonv export cannot be imported. +As I only had limited sample data feel free to open an issue if your RezKonv export cannot be imported. + +## Recipekeeper +Recipe keeper allows to export a zip file containing recipes and images using its apps. +This zip file can simply be imported into Tandoor. ## OpenEats OpenEats does not provide any way to export the data using the interface. Luckily it is relatively easy to export it from the command line. From 5e9ce955bc0e7759f1565c6fc128471f63186a1c Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Wed, 9 Jun 2021 18:53:20 +0200 Subject: [PATCH 26/97] minor fixes --- .../static/vue/js/import_response_view.js | 2 +- cookbook/static/vue/js/offline_view.js | 2 +- cookbook/static/vue/js/recipe_search_view.js | 2 +- cookbook/static/vue/js/recipe_view.js | 2 +- cookbook/static/vue/js/supermarket_view.js | 2 +- cookbook/static/vue/js/user_file_view.js | 2 +- cookbook/templates/url_import.html | 70 +++++-------------- .../ImportResponseView/ImportResponseView.vue | 2 +- .../RecipeSearchView/RecipeSearchView.vue | 65 ++++++++++------- vue/src/components/RecipeCard.vue | 1 - vue/src/locales/en.json | 1 + 11 files changed, 66 insertions(+), 85 deletions(-) diff --git a/cookbook/static/vue/js/import_response_view.js b/cookbook/static/vue/js/import_response_view.js index 03048b87f..ad909813b 100644 --- a/cookbook/static/vue/js/import_response_view.js +++ b/cookbook/static/vue/js/import_response_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var n,a,c=t[0],s=t[1],u=t[2],p=0,h=[];p1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"row"},[r("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[r("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],o={name:"LoadingSpinner",props:{recipe:Object}},a=o,c=r("2877"),s=Object(c["a"])(a,n,i,!1,null,null,null);t["a"]=s.exports},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","err_deleting_resource":"There was an error deleting a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","success_deleting_resource":"Successfully deleted a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Cancel":"Cancel","Delete":"Delete","Open":"Open","Ok":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return c})),r.d(t,"e",(function(){return s})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var c=(n+o)/(i+a);if(e===c){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var s=Math.floor(n/i);return[s,n-s*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var c={methods:{_:function(e){return s(e)}}};function s(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}}}); \ No newline at end of file +(function(e){function t(t){for(var n,a,c=t[0],s=t[1],u=t[2],p=0,h=[];p1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"row"},[r("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[r("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],o={name:"LoadingSpinner",props:{recipe:Object}},a=o,c=r("2877"),s=Object(c["a"])(a,n,i,!1,null,null,null);t["a"]=s.exports},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","err_deleting_resource":"There was an error deleting a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","success_deleting_resource":"Successfully deleted a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Load_More":"Load More","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Cancel":"Cancel","Delete":"Delete","Open":"Open","Ok":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return c})),r.d(t,"e",(function(){return s})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var c=(n+o)/(i+a);if(e===c){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var s=Math.floor(n/i);return[s,n-s*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var c={methods:{_:function(e){return s(e)}}};function s(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}}}); \ No newline at end of file diff --git a/cookbook/static/vue/js/offline_view.js b/cookbook/static/vue/js/offline_view.js index 52ff63a2d..e49cb095c 100644 --- a/cookbook/static/vue/js/offline_view.js +++ b/cookbook/static/vue/js/offline_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var r,i,s=t[0],c=t[1],l=t[2],u=0,f=[];u1){var a=r[1];t[a]=e(n)}})),t}r["default"].use(a["a"]),t["a"]=new a["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},da67:function(e,t,n){"use strict";n.r(t);n("e260"),n("e6cf"),n("cca6"),n("a79d");var r=n("a026"),a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"app"}},[n("label",[e._v(" "+e._s(e.$t("Search"))+" "),n("input",{directives:[{name:"model",rawName:"v-model",value:e.filter,expression:"filter"}],staticClass:"form-control",attrs:{type:"text"},domProps:{value:e.filter},on:{input:function(t){t.target.composing||(e.filter=t.target.value)}}})]),n("div",{staticClass:"row"},e._l(e.filtered_recipes,(function(t){return n("div",{key:t.id,staticClass:"col-md-3"},[n("b-card",{attrs:{title:t.name,tag:"article"}},[n("b-card-text",[n("span",{staticClass:"text-muted"},[e._v(e._s(e.formatDateTime(t.updated_at)))]),e._v(" "+e._s(t.description)+" ")]),n("b-button",{attrs:{href:e.resolveDjangoUrl("view_recipe",t.id),variant:"primary"}},[e._v(e._s(e.$t("Open")))])],1)],1)})),0)])},o=[],i=(n("159b"),n("caad"),n("2532"),n("b0c0"),n("4de4"),n("d3b7"),n("ddb0"),n("ac1f"),n("466d"),n("5f5b")),s=(n("2dd8"),n("fa7d")),c=n("c1df"),l=n.n(c);r["default"].use(i["a"]),r["default"].prototype.moment=l.a;var d={name:"OfflineView",mixins:[s["b"]],computed:{filtered_recipes:function(){var e=this,t={};return this.recipes.forEach((function(n){n.name.toLowerCase().includes(e.filter.toLowerCase())&&(n.id in t?n.updated_at>t[n.id].updated_at&&(t[n.id]=n):t[n.id]=n)})),t}},data:function(){return{recipes:[],filter:""}},mounted:function(){this.loadRecipe()},methods:{formatDateTime:function(e){return l.a.locale(window.navigator.language),l()(e).format("LLL")},loadRecipe:function(){var e=this;caches.open("api-recipe").then((function(t){t.keys().then((function(t){t.forEach((function(t){caches.match(t).then((function(t){t.json().then((function(t){e.recipes.push(t)}))}))}))}))}))}}},u=d,f=n("2877"),p=Object(f["a"])(u,a,o,!1,null,null,null),g=p.exports,b=n("9225");r["default"].config.productionTip=!1,new r["default"]({i18n:b["a"],render:function(e){return e(g)}}).$mount("#app")},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","err_deleting_resource":"There was an error deleting a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","success_deleting_resource":"Successfully deleted a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Cancel":"Cancel","Delete":"Delete","Open":"Open","Ok":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,n){"use strict";n.d(t,"c",(function(){return o})),n.d(t,"f",(function(){return i})),n.d(t,"a",(function(){return s})),n.d(t,"e",(function(){return c})),n.d(t,"b",(function(){return l})),n.d(t,"g",(function(){return d})),n.d(t,"d",(function(){return f}));n("99af");var r=n("59e4");function a(e,t,n){var r=Math.floor(e),a=1,o=r+1,i=1;if(e!==r)while(a<=t&&i<=t){var s=(r+o)/(a+i);if(e===s){a+i<=t?(a+=i,r+=o,i=t+1):a>i?i=t+1:a=t+1;break}et&&(a=i,r=o),!n)return[0,r,a];var c=Math.floor(r/a);return[c,r-c*a,a]}var o={methods:{makeToast:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return i(e,t,n)}}};function i(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=new r["a"];a.$bvToast.toast(t,{title:e,variant:n,toaster:"b-toaster-top-center",solid:!0})}var s={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var l={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function u(e){return window.USER_PREF[e]}function f(e,t){if(u("use_fractions")){var n="",r=a(e*t,9,!0);return r[0]>0&&(n+=r[0]),r[1]>0&&(n+=" ".concat(r[1],"").concat(r[2],"")),n}return p(e*t)}function p(e){var t=u("user_fractions")?u("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}}}); \ No newline at end of file +(function(e){function t(t){for(var r,i,s=t[0],c=t[1],l=t[2],u=0,f=[];u1){var a=r[1];t[a]=e(n)}})),t}r["default"].use(a["a"]),t["a"]=new a["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},da67:function(e,t,n){"use strict";n.r(t);n("e260"),n("e6cf"),n("cca6"),n("a79d");var r=n("a026"),a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"app"}},[n("label",[e._v(" "+e._s(e.$t("Search"))+" "),n("input",{directives:[{name:"model",rawName:"v-model",value:e.filter,expression:"filter"}],staticClass:"form-control",attrs:{type:"text"},domProps:{value:e.filter},on:{input:function(t){t.target.composing||(e.filter=t.target.value)}}})]),n("div",{staticClass:"row"},e._l(e.filtered_recipes,(function(t){return n("div",{key:t.id,staticClass:"col-md-3"},[n("b-card",{attrs:{title:t.name,tag:"article"}},[n("b-card-text",[n("span",{staticClass:"text-muted"},[e._v(e._s(e.formatDateTime(t.updated_at)))]),e._v(" "+e._s(t.description)+" ")]),n("b-button",{attrs:{href:e.resolveDjangoUrl("view_recipe",t.id),variant:"primary"}},[e._v(e._s(e.$t("Open")))])],1)],1)})),0)])},o=[],i=(n("159b"),n("caad"),n("2532"),n("b0c0"),n("4de4"),n("d3b7"),n("ddb0"),n("ac1f"),n("466d"),n("5f5b")),s=(n("2dd8"),n("fa7d")),c=n("c1df"),l=n.n(c);r["default"].use(i["a"]),r["default"].prototype.moment=l.a;var d={name:"OfflineView",mixins:[s["b"]],computed:{filtered_recipes:function(){var e=this,t={};return this.recipes.forEach((function(n){n.name.toLowerCase().includes(e.filter.toLowerCase())&&(n.id in t?n.updated_at>t[n.id].updated_at&&(t[n.id]=n):t[n.id]=n)})),t}},data:function(){return{recipes:[],filter:""}},mounted:function(){this.loadRecipe()},methods:{formatDateTime:function(e){return l.a.locale(window.navigator.language),l()(e).format("LLL")},loadRecipe:function(){var e=this;caches.open("api-recipe").then((function(t){t.keys().then((function(t){t.forEach((function(t){caches.match(t).then((function(t){t.json().then((function(t){e.recipes.push(t)}))}))}))}))}))}}},u=d,f=n("2877"),p=Object(f["a"])(u,a,o,!1,null,null,null),g=p.exports,b=n("9225");r["default"].config.productionTip=!1,new r["default"]({i18n:b["a"],render:function(e){return e(g)}}).$mount("#app")},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","err_deleting_resource":"There was an error deleting a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","success_deleting_resource":"Successfully deleted a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Load_More":"Load More","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Cancel":"Cancel","Delete":"Delete","Open":"Open","Ok":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,n){"use strict";n.d(t,"c",(function(){return o})),n.d(t,"f",(function(){return i})),n.d(t,"a",(function(){return s})),n.d(t,"e",(function(){return c})),n.d(t,"b",(function(){return l})),n.d(t,"g",(function(){return d})),n.d(t,"d",(function(){return f}));n("99af");var r=n("59e4");function a(e,t,n){var r=Math.floor(e),a=1,o=r+1,i=1;if(e!==r)while(a<=t&&i<=t){var s=(r+o)/(a+i);if(e===s){a+i<=t?(a+=i,r+=o,i=t+1):a>i?i=t+1:a=t+1;break}et&&(a=i,r=o),!n)return[0,r,a];var c=Math.floor(r/a);return[c,r-c*a,a]}var o={methods:{makeToast:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return i(e,t,n)}}};function i(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=new r["a"];a.$bvToast.toast(t,{title:e,variant:n,toaster:"b-toaster-top-center",solid:!0})}var s={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var l={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function u(e){return window.USER_PREF[e]}function f(e,t){if(u("use_fractions")){var n="",r=a(e*t,9,!0);return r[0]>0&&(n+=r[0]),r[1]>0&&(n+=" ".concat(r[1],"").concat(r[2],"")),n}return p(e*t)}function p(e){var t=u("user_fractions")?u("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}}}); \ No newline at end of file diff --git a/cookbook/static/vue/js/recipe_search_view.js b/cookbook/static/vue/js/recipe_search_view.js index b54e45417..fc8088099 100644 --- a/cookbook/static/vue/js/recipe_search_view.js +++ b/cookbook/static/vue/js/recipe_search_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var n,a,s=t[0],c=t[1],u=t[2],p=0,h=[];pnew Date(Date.now()-6048e5)?r("b-badge",{attrs:{pill:"",variant:"success"}},[e._v(e._s(e.$t("New")))]):e._e()]:[e._v(e._s(e.meal_plan.note))]],2)],1),void 0!==e.footer_text?r("b-card-footer",[r("i",{class:e.footer_icon}),e._v(" "+e._s(e.footer_text)+" ")]):e._e()],1)},j=[],O=r("fc0d"),v=r("81d5"),g={name:"RecipeCard",mixins:[b["b"]],components:{Keywords:v["a"],RecipeContextMenu:O["a"]},props:{recipe:Object,meal_plan:Object,footer_text:String,footer_icon:String},data:function(){return{recipe_image:""}},mounted:function(){null==this.recipe||null===this.recipe.image?this.recipe_image=window.IMAGE_PLACEHOLDER:this.recipe_image=this.recipe.image},methods:{clickUrl:function(){return null!==this.recipe?Object(b["g"])("view_recipe",this.recipe.id):Object(b["g"])("view_plan_entry",this.meal_plan.id)}}},m=g,y=r("2877"),S=Object(y["a"])(m,f,j,!1,null,"6fcb509c",null),P=S.exports,U=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("multiselect",{attrs:{options:e.objects,"close-on-select":!0,"clear-on-select":!0,"hide-selected":!0,"preserve-search":!0,placeholder:e.placeholder,label:e.label,"track-by":"id",multiple:!0,loading:e.loading},on:{"search-change":e.search,input:e.selectionChanged},model:{value:e.selected_objects,callback:function(t){e.selected_objects=t},expression:"selected_objects"}})},w=[],k=(r("ac1f"),r("841c"),r("8e5f")),R=r.n(k),L={name:"GenericMultiselect",components:{Multiselect:R.a},data:function(){return{loading:!1,objects:[],selected_objects:[]}},props:{placeholder:String,search_function:String,label:String,parent_variable:String,initial_selection:Array},watch:{initial_selection:function(e,t){this.selected_objects=e}},mounted:function(){this.search("")},methods:{search:function(e){var t=this,r=new l["a"];r[this.search_function]({query:{query:e,limit:10}}).then((function(e){t.objects=e.data}))},selectionChanged:function(){this.$emit("change",{var:this.parent_variable,val:this.selected_objects})}}},_=L,C=Object(y["a"])(_,U,w,!1,null,"20923c58",null),I=C.exports;n["default"].use(h.a),n["default"].use(a["a"]);var T={name:"RecipeSearchView",mixins:[b["b"]],components:{GenericMultiselect:I,RecipeCard:P},data:function(){return{recipes:[],meal_plans:[],last_viewed_recipes:[],settings:{search_input:"",search_internal:!1,search_keywords:[],search_foods:[],search_books:[],search_keywords_or:!0,search_foods_or:!0,search_books_or:!0,advanced_search_visible:!1,show_meal_plan:!0,recently_viewed:5},pagination_count:0,pagination_page:1}},mounted:function(){this.$nextTick((function(){this.$cookies.isKey("search_settings_v2")&&(this.settings=this.$cookies.get("search_settings_v2")),this.loadMealPlan(),this.loadRecentlyViewed(),this.refreshData()})),this.$i18n.locale=window.CUSTOM_LOCALE},watch:{settings:{handler:function(){this.$cookies.set("search_settings_v2",this.settings,-1)},deep:!0},"settings.show_meal_plan":function(){this.loadMealPlan()},"settings.recently_viewed":function(){this.loadRecentlyViewed()},"settings.search_input":d()((function(){this.refreshData()}),300)},methods:{refreshData:function(){var e=this,t=new l["a"];t.listRecipes(this.settings.search_input,this.settings.search_keywords.map((function(e){return e["id"]})),this.settings.search_foods.map((function(e){return e["id"]})),this.settings.search_books.map((function(e){return e["id"]})),this.settings.search_keywords_or,this.settings.search_foods_or,this.settings.search_books_or,this.settings.search_internal,void 0,this.pagination_page).then((function(t){e.recipes=t.data.results,e.pagination_count=t.data.count}))},loadMealPlan:function(){var e=this,t=new l["a"];this.settings.show_meal_plan?t.listMealPlans({query:{from_date:c()().format("YYYY-MM-DD"),to_date:c()().format("YYYY-MM-DD")}}).then((function(t){e.meal_plans=t.data})):this.meal_plans=[]},loadRecentlyViewed:function(){var e=this,t=new l["a"];this.settings.recently_viewed>0?t.listRecipes(void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,{query:{last_viewed:this.settings.recently_viewed}}).then((function(t){e.last_viewed_recipes=t.data.results})):this.last_viewed_recipes=[]},genericSelectChanged:function(e){this.settings[e.var]=e.val,this.refreshData()},resetSearch:function(){this.settings.search_input="",this.settings.search_internal=!1,this.settings.search_keywords=[],this.settings.search_foods=[],this.settings.search_books=[],this.refreshData()},pageChange:function(e){this.pagination_page=e,this.refreshData()}}},E=T,x=(r("60bc"),Object(y["a"])(E,i,o,!1,null,null,null)),B=x.exports,q=r("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:q["a"],render:function(e){return e(B)}}).$mount("#app")},"6ce2":function(e){e.exports=JSON.parse('{"Import":"Import","import_running":"Import läuft, bitte warten!","Import_finished":"Import fertig","View_Recipes":"Rezepte Ansehen","Information":"Information","all_fields_optional":"Alle Felder sind optional und können leer gelassen werden.","convert_internal":"Zu internem Rezept wandeln","Log_Recipe_Cooking":"Kochen protokollieren","External_Recipe_Image":"Externes Rezept Bild","Add_to_Book":"Zu Buch hinzufügen","Add_to_Shopping":"Zu Einkaufsliste hinzufügen","Add_to_Plan":"Zu Plan hinzufügen","Step_start_time":"Schritt Startzeit","Select_Book":"Buch wählen","Recipe_Image":"Rezept Bild","Log_Cooking":"Kochen protokollieren","Proteins":"Proteine","Fats":"Fette","Carbohydrates":"Kohlenhydrate","Calories":"Kalorien","Nutrition":"Nährwerte","Keywords":"Stichwörter","Books":"Bücher","show_only_internal":"Nur interne Rezepte anzeigen","Ingredients":"Zutaten","min":"Min","Servings":"Portionen","Waiting":"Wartezeit","Preparation":"Zubereitung","Edit":"Bearbeiten","Open":"Öffnen","Save":"Speichern","Step":"Schritt","Search":"Suchen","Print":"Drucken","New_Recipe":"Neues Rezept","Url_Import":"URL Import","Reset_Search":"Suche zurücksetzen","or":"oder","and":"und","Recently_Viewed":"Kürzlich angesehen","External":"Extern","Settings":"Einstellungen","Meal_Plan":"Speiseplan","Date":"Datum","Share":"Teilen","Export":"Exportieren","Rating":"Bewertung","Close":"Schließen","Add":"Hinzufügen"}')},"7c15":function(e,t,r){"use strict";r.d(t,"c",(function(){return a})),r.d(t,"d",(function(){return s})),r.d(t,"b",(function(){return c})),r.d(t,"a",(function(){return u}));var n=r("bc3a"),i=r.n(n),o=r("fa7d");function a(e){var t=Object(o["g"])("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),i.a.get(t).then((function(e){return e.data})).catch((function(e){d(e,"There was an error loading a resource!","danger")}))}function s(e){return i.a.post(Object(o["g"])("api:cooklog-list"),e).then((function(e){Object(o["f"])("Saved","Cook Log entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function c(e){return i.a.get(Object(o["g"])("api:recipebook-list")+"?query="+e).then((function(e){return e.data})).catch((function(e){}))}function u(e){return i.a.post(Object(o["g"])("api:recipebookentry-list"),e).then((function(e){Object(o["f"])("Saved","Recipe Book entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function d(e,t){if("response"in e){console.log(e.response);var r="statusText"in e.response?e.response.statusText:Object(o["e"])("Error");t+="\n\n"+JSON.stringify(e.response.data),Object(o["f"])(r,t,"danger")}else Object(o["f"])("Error",t,"danger"),console.log(e)}i.a.defaults.xsrfCookieName="csrftoken",i.a.defaults.xsrfHeaderName="X-CSRFTOKEN"},"81d5":function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return e.recipe.keywords.length>0?r("div",e._l(e.recipe.keywords,(function(t){return r("span",{key:t.id,staticStyle:{padding:"2px"}},[r("b-badge",{attrs:{pill:"",variant:"light"}},[e._v(e._s(t.label))])],1)})),0):e._e()},i=[],o={name:"Keywords",props:{recipe:Object}},a=o,s=r("2877"),c=Object(s["a"])(a,n,i,!1,null,null,null);t["a"]=c.exports},9225:function(e,t,r){"use strict";r("159b"),r("d3b7"),r("ddb0"),r("ac1f"),r("466d");var n=r("a026"),i=r("a925");function o(){var e=r("49f8"),t={};return e.keys().forEach((function(r){var n=r.match(/([A-Za-z0-9-_]+)\./i);if(n&&n.length>1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"row"},[r("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[r("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],o={name:"LoadingSpinner",props:{recipe:Object}},a=o,s=r("2877"),c=Object(s["a"])(a,n,i,!1,null,null,null);t["a"]=c.exports},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","err_deleting_resource":"There was an error deleting a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","success_deleting_resource":"Successfully deleted a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Cancel":"Cancel","Delete":"Delete","Open":"Open","Ok":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return s})),r.d(t,"e",(function(){return c})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var s=(n+o)/(i+a);if(e===s){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var c=Math.floor(n/i);return[c,n-c*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var s={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fc0d:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("div",{staticClass:"dropdown"},[e._m(0),r("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[r("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e.$t("Edit")))]),e.recipe.internal?e._e():r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[r("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e.$t("convert_internal")))]),r("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_add_book")}}},[r("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Book"))+" ")]),e.recipe.internal?r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Shopping"))+" ")]):e._e(),r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?recipe="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Plan"))+" ")]),r("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[r("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e.$t("Log_Cooking"))+" ")]),r("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[r("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e.$t("Print"))+" ")]),r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e.$t("Export")))]),e.recipe.internal?r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e.$t("Share")))]):e._e()])]),r("cook-log",{attrs:{recipe:e.recipe}})],1)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[r("i",{staticClass:"fas fa-ellipsis-v"})])}],o=(r("a9e3"),r("fa7d")),a=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e.$t("Log_Recipe_Cooking"),"ok-title":e.$t("Save"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.logCook()}}},[r("p",[e._v(e._s(e.$t("all_fields_optional")))]),r("form",[r("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e.$t("Servings")))]),r("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),r("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e.$t("Rating"))+" - "),r("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),r("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),r("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e.$t("Date")))]),r("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},s=[],c=r("c1df"),u=r.n(c),d=r("a026"),p=r("5f5b"),h=r("7c15");d["default"].prototype.moment=u.a,d["default"].use(p["a"]);var b={name:"CookLog",props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:u()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){Object(h["d"])(this.logObject)}}},l=b,f=r("2877"),j=Object(f["a"])(l,a,s,!1,null,null,null),O=j.exports,v={name:"RecipeContextMenu",mixins:[o["b"]],components:{CookLog:O},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},g=v,m=Object(f["a"])(g,n,i,!1,null,null,null);t["a"]=m.exports}}); \ No newline at end of file +(function(e){function t(t){for(var n,a,s=t[0],c=t[1],u=t[2],p=0,h=[];pnew Date(Date.now()-6048e5)?r("b-badge",{attrs:{pill:"",variant:"success"}},[e._v(e._s(e.$t("New")))]):e._e()]:[e._v(e._s(e.meal_plan.note))]],2)],1),void 0!==e.footer_text?r("b-card-footer",[r("i",{class:e.footer_icon}),e._v(" "+e._s(e.footer_text)+" ")]):e._e()],1)},O=[],v=r("fc0d"),g=r("81d5"),m={name:"RecipeCard",mixins:[l["b"]],components:{Keywords:g["a"],RecipeContextMenu:v["a"]},props:{recipe:Object,meal_plan:Object,footer_text:String,footer_icon:String},data:function(){return{recipe_image:""}},mounted:function(){null==this.recipe||null===this.recipe.image?this.recipe_image=window.IMAGE_PLACEHOLDER:this.recipe_image=this.recipe.image},methods:{clickUrl:function(){return null!==this.recipe?Object(l["g"])("view_recipe",this.recipe.id):Object(l["g"])("view_plan_entry",this.meal_plan.id)}}},y=m,S=r("2877"),P=Object(S["a"])(y,j,O,!1,null,"2bdfc3cc",null),U=P.exports,w=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("multiselect",{attrs:{options:e.objects,"close-on-select":!0,"clear-on-select":!0,"hide-selected":!0,"preserve-search":!0,placeholder:e.placeholder,label:e.label,"track-by":"id",multiple:!0,loading:e.loading},on:{"search-change":e.search,input:e.selectionChanged},model:{value:e.selected_objects,callback:function(t){e.selected_objects=t},expression:"selected_objects"}})},k=[],R=r("8e5f"),L=r.n(R),_={name:"GenericMultiselect",components:{Multiselect:L.a},data:function(){return{loading:!1,objects:[],selected_objects:[]}},props:{placeholder:String,search_function:String,label:String,parent_variable:String,initial_selection:Array},watch:{initial_selection:function(e,t){this.selected_objects=e}},mounted:function(){this.search("")},methods:{search:function(e){var t=this,r=new f["a"];r[this.search_function]({query:{query:e,limit:10}}).then((function(e){t.objects=e.data}))},selectionChanged:function(){this.$emit("change",{var:this.parent_variable,val:this.selected_objects})}}},C=_,I=Object(S["a"])(C,w,k,!1,null,"20923c58",null),T=I.exports;n["default"].use(b.a),n["default"].use(s["a"]);var E={name:"RecipeSearchView",mixins:[l["b"]],components:{GenericMultiselect:T,RecipeCard:U},data:function(){return{recipes:[],meal_plans:[],last_viewed_recipes:[],settings:{search_input:"",search_internal:!1,search_keywords:[],search_foods:[],search_books:[],search_keywords_or:!0,search_foods_or:!0,search_books_or:!0,advanced_search_visible:!1,show_meal_plan:!0,recently_viewed:5},pagination_more:!0,pagination_page:1}},mounted:function(){this.$nextTick((function(){var e=this;this.$cookies.isKey("search_settings_v2")&&(this.settings=this.$cookies.get("search_settings_v2"));var t=new URLSearchParams(window.location.search),r=new f["a"];if(t.has("keyword")){this.settings.search_keywords=[];var n,i=Object(a["a"])(t.getAll("keyword"));try{var o=function(){var t=n.value,i={id:t,name:"loading"};e.settings.search_keywords.push(i),r.retrieveKeyword(t).then((function(t){e.$set(e.settings.search_keywords,e.settings.search_keywords.indexOf(i),t.data)}))};for(i.s();!(n=i.n()).done;)o()}catch(s){i.e(s)}finally{i.f()}}this.loadMealPlan(),this.loadRecentlyViewed(),this.refreshData(!1)})),this.$i18n.locale=window.CUSTOM_LOCALE},watch:{settings:{handler:function(){this.$cookies.set("search_settings_v2",this.settings,-1)},deep:!0},"settings.show_meal_plan":function(){this.loadMealPlan()},"settings.recently_viewed":function(){this.loadRecentlyViewed()},"settings.search_input":p()((function(){this.refreshData(!1)}),300)},methods:{refreshData:function(e){var t=this,r=new f["a"];r.listRecipes(this.settings.search_input,this.settings.search_keywords.map((function(e){return e["id"]})),this.settings.search_foods.map((function(e){return e["id"]})),this.settings.search_books.map((function(e){return e["id"]})),this.settings.search_keywords_or,this.settings.search_foods_or,this.settings.search_books_or,this.settings.search_internal,void 0,this.pagination_page).then((function(r){if(t.pagination_more=null!==r.data.next,e){var n,i=Object(a["a"])(r.data.results);try{for(i.s();!(n=i.n()).done;){var o=n.value;t.recipes.push(o)}}catch(s){i.e(s)}finally{i.f()}}else t.recipes=r.data.results}))},loadMealPlan:function(){var e=this,t=new f["a"];this.settings.show_meal_plan?t.listMealPlans({query:{from_date:u()().format("YYYY-MM-DD"),to_date:u()().format("YYYY-MM-DD")}}).then((function(t){e.meal_plans=t.data})):this.meal_plans=[]},loadRecentlyViewed:function(){var e=this,t=new f["a"];this.settings.recently_viewed>0?t.listRecipes(void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,{query:{last_viewed:this.settings.recently_viewed}}).then((function(t){e.last_viewed_recipes=t.data.results})):this.last_viewed_recipes=[]},genericSelectChanged:function(e){this.settings[e.var]=e.val,this.refreshData(!1)},resetSearch:function(){this.settings.search_input="",this.settings.search_internal=!1,this.settings.search_keywords=[],this.settings.search_foods=[],this.settings.search_books=[],this.refreshData(!1)},loadMore:function(e){this.pagination_page++,this.refreshData(!0)}}},x=E,B=(r("60bc"),Object(S["a"])(x,i,o,!1,null,null,null)),q=B.exports,M=r("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:M["a"],render:function(e){return e(q)}}).$mount("#app")},"6ce2":function(e){e.exports=JSON.parse('{"Import":"Import","import_running":"Import läuft, bitte warten!","Import_finished":"Import fertig","View_Recipes":"Rezepte Ansehen","Information":"Information","all_fields_optional":"Alle Felder sind optional und können leer gelassen werden.","convert_internal":"Zu internem Rezept wandeln","Log_Recipe_Cooking":"Kochen protokollieren","External_Recipe_Image":"Externes Rezept Bild","Add_to_Book":"Zu Buch hinzufügen","Add_to_Shopping":"Zu Einkaufsliste hinzufügen","Add_to_Plan":"Zu Plan hinzufügen","Step_start_time":"Schritt Startzeit","Select_Book":"Buch wählen","Recipe_Image":"Rezept Bild","Log_Cooking":"Kochen protokollieren","Proteins":"Proteine","Fats":"Fette","Carbohydrates":"Kohlenhydrate","Calories":"Kalorien","Nutrition":"Nährwerte","Keywords":"Stichwörter","Books":"Bücher","show_only_internal":"Nur interne Rezepte anzeigen","Ingredients":"Zutaten","min":"Min","Servings":"Portionen","Waiting":"Wartezeit","Preparation":"Zubereitung","Edit":"Bearbeiten","Open":"Öffnen","Save":"Speichern","Step":"Schritt","Search":"Suchen","Print":"Drucken","New_Recipe":"Neues Rezept","Url_Import":"URL Import","Reset_Search":"Suche zurücksetzen","or":"oder","and":"und","Recently_Viewed":"Kürzlich angesehen","External":"Extern","Settings":"Einstellungen","Meal_Plan":"Speiseplan","Date":"Datum","Share":"Teilen","Export":"Exportieren","Rating":"Bewertung","Close":"Schließen","Add":"Hinzufügen"}')},"7c15":function(e,t,r){"use strict";r.d(t,"c",(function(){return a})),r.d(t,"d",(function(){return s})),r.d(t,"b",(function(){return c})),r.d(t,"a",(function(){return u}));var n=r("bc3a"),i=r.n(n),o=r("fa7d");function a(e){var t=Object(o["g"])("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),i.a.get(t).then((function(e){return e.data})).catch((function(e){d(e,"There was an error loading a resource!","danger")}))}function s(e){return i.a.post(Object(o["g"])("api:cooklog-list"),e).then((function(e){Object(o["f"])("Saved","Cook Log entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function c(e){return i.a.get(Object(o["g"])("api:recipebook-list")+"?query="+e).then((function(e){return e.data})).catch((function(e){}))}function u(e){return i.a.post(Object(o["g"])("api:recipebookentry-list"),e).then((function(e){Object(o["f"])("Saved","Recipe Book entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function d(e,t){if("response"in e){console.log(e.response);var r="statusText"in e.response?e.response.statusText:Object(o["e"])("Error");t+="\n\n"+JSON.stringify(e.response.data),Object(o["f"])(r,t,"danger")}else Object(o["f"])("Error",t,"danger"),console.log(e)}i.a.defaults.xsrfCookieName="csrftoken",i.a.defaults.xsrfHeaderName="X-CSRFTOKEN"},"81d5":function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return e.recipe.keywords.length>0?r("div",e._l(e.recipe.keywords,(function(t){return r("span",{key:t.id,staticStyle:{padding:"2px"}},[r("b-badge",{attrs:{pill:"",variant:"light"}},[e._v(e._s(t.label))])],1)})),0):e._e()},i=[],o={name:"Keywords",props:{recipe:Object}},a=o,s=r("2877"),c=Object(s["a"])(a,n,i,!1,null,null,null);t["a"]=c.exports},9225:function(e,t,r){"use strict";r("159b"),r("d3b7"),r("ddb0"),r("ac1f"),r("466d");var n=r("a026"),i=r("a925");function o(){var e=r("49f8"),t={};return e.keys().forEach((function(r){var n=r.match(/([A-Za-z0-9-_]+)\./i);if(n&&n.length>1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"row"},[r("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[r("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],o={name:"LoadingSpinner",props:{recipe:Object}},a=o,s=r("2877"),c=Object(s["a"])(a,n,i,!1,null,null,null);t["a"]=c.exports},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","err_deleting_resource":"There was an error deleting a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","success_deleting_resource":"Successfully deleted a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Load_More":"Load More","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Cancel":"Cancel","Delete":"Delete","Open":"Open","Ok":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return s})),r.d(t,"e",(function(){return c})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var s=(n+o)/(i+a);if(e===s){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var c=Math.floor(n/i);return[c,n-c*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var s={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fc0d:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("div",{staticClass:"dropdown"},[e._m(0),r("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[r("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e.$t("Edit")))]),e.recipe.internal?e._e():r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[r("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e.$t("convert_internal")))]),r("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_add_book")}}},[r("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Book"))+" ")]),e.recipe.internal?r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Shopping"))+" ")]):e._e(),r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?recipe="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Plan"))+" ")]),r("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[r("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e.$t("Log_Cooking"))+" ")]),r("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[r("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e.$t("Print"))+" ")]),r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e.$t("Export")))]),e.recipe.internal?r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e.$t("Share")))]):e._e()])]),r("cook-log",{attrs:{recipe:e.recipe}})],1)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[r("i",{staticClass:"fas fa-ellipsis-v"})])}],o=(r("a9e3"),r("fa7d")),a=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e.$t("Log_Recipe_Cooking"),"ok-title":e.$t("Save"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.logCook()}}},[r("p",[e._v(e._s(e.$t("all_fields_optional")))]),r("form",[r("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e.$t("Servings")))]),r("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),r("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e.$t("Rating"))+" - "),r("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),r("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),r("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e.$t("Date")))]),r("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},s=[],c=r("c1df"),u=r.n(c),d=r("a026"),p=r("5f5b"),h=r("7c15");d["default"].prototype.moment=u.a,d["default"].use(p["a"]);var b={name:"CookLog",props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:u()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){Object(h["d"])(this.logObject)}}},l=b,f=r("2877"),j=Object(f["a"])(l,a,s,!1,null,null,null),O=j.exports,v={name:"RecipeContextMenu",mixins:[o["b"]],components:{CookLog:O},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},g=v,m=Object(f["a"])(g,n,i,!1,null,null,null);t["a"]=m.exports}}); \ No newline at end of file diff --git a/cookbook/static/vue/js/recipe_view.js b/cookbook/static/vue/js/recipe_view.js index a9689abd3..64a5ab7c1 100644 --- a/cookbook/static/vue/js/recipe_view.js +++ b/cookbook/static/vue/js/recipe_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var n,s,o=t[0],c=t[1],l=t[2],p=0,u=[];p0?i("div",{staticClass:"col-md-6 order-md-1 col-sm-12 order-sm-2 col-12 order-2"},[i("div",{staticClass:"card border-primary"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-pepper-hot"}),e._v(" "+e._s(e.$t("Ingredients")))])])]),i("br"),i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-12"},[i("table",{staticClass:"table table-sm"},[e._l(e.recipe.steps,(function(t){return[e._l(t.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":e.updateIngredientCheckedState}})]}))]}))],2)])])])])]):e._e(),i("div",{staticClass:"col-12 order-1 col-sm-12 order-sm-1 col-md-6 order-md-2"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[null!==e.recipe.image?i("img",{staticClass:"img img-fluid rounded",staticStyle:{"max-height":"30vh"},attrs:{src:e.recipe.image,alt:e.$t("Recipe_Image")}}):e._e()])]),i("div",{staticClass:"row",staticStyle:{"margin-top":"2vh","margin-bottom":"2vh"}},[i("div",{staticClass:"col-12"},[i("Nutrition",{attrs:{recipe:e.recipe,ingredient_factor:e.ingredient_factor}})],1)])])]),e.recipe.internal?e._e():[e.recipe.file_path.includes(".pdf")?i("div",[i("PdfViewer",{attrs:{recipe:e.recipe}})],1):e._e(),e.recipe.file_path.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")||e.recipe.file_path.includes(".gif")?i("div",[i("ImageViewer",{attrs:{recipe:e.recipe}})],1):e._e()],e._l(e.recipe.steps,(function(t,n){return i("div",{key:t.id,staticStyle:{"margin-top":"1vh"}},[i("Step",{attrs:{recipe:e.recipe,step:t,ingredient_factor:e.ingredient_factor,index:n,start_time:e.start_time},on:{"update-start-time":e.updateStartTime,"checked-state-changed":e.updateIngredientCheckedState}})],1)}))],2),i("add-recipe-to-book",{attrs:{recipe:e.recipe}})],2)},r=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-user-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"far fa-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-pizza-slice fa-2x text-primary"})])}],s=i("b85c"),o=i("5f5b"),c=(i("2dd8"),i("7c15")),l=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("hr"),"TEXT"===e.step.type?[e.recipe.steps.length>1?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h5",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))],0!==e.step.time?i("small",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fas fa-user-clock"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min"))+" ")]):e._e(),""!==e.start_time?i("small",{staticClass:"d-print-none"},[i("b-link",{attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")])],1):e._e()],2)]),i("div",{staticClass:"col col-md-4",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]):e._e(),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[i("div",{staticClass:"row"},[e.step.ingredients.length>0&&e.recipe.steps.length>1?i("div",{staticClass:"col col-md-4"},[i("table",{staticClass:"table table-sm"},[e._l(e.step.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":function(i){return e.$emit("checked-state-changed",t)}}})]}))],2)]):e._e(),i("div",{staticClass:"col",class:{"col-md-8":e.recipe.steps.length>1,"col-md-12":e.recipe.steps.length<=1}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)])])]:e._e(),"TIME"===e.step.type||"FILE"===e.step.type?[i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-8 offset-md-2",staticStyle:{"text-align":"center"}},[i("h4",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))]],2),0!==e.step.time?i("span",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fa fa-stopwatch"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min")))]):e._e(),""!==e.start_time?i("b-link",{staticClass:"d-print-none",attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")]):e._e()],1),i("div",{staticClass:"col-md-2",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[""!==e.step.instruction?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-12",staticStyle:{"text-align":"center"}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)]):e._e()])]:e._e(),i("div",{staticClass:"row",staticStyle:{"text-align":"center"}},[i("div",{staticClass:"col col-md-12"},[null!==e.step.file?[e.step.file.file.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")||e.recipe.file_path.includes(".gif")?i("div",[i("img",{staticStyle:{"max-width":"50vw","max-height":"50vh"},attrs:{src:e.step.file.file}})]):i("div",[i("a",{attrs:{href:e.step.file.file,target:"_blank",rel:"noreferrer nofollow"}},[e._v(e._s(e.$t("Download"))+" "+e._s(e.$t("File")))])])]:e._e()],2)]),""!==e.start_time?i("div",[i("b-popover",{ref:"id_reactive_popover_"+e.step.id,attrs:{target:"id_reactive_popover_"+e.step.id,triggers:"click",placement:"bottom",title:e.$t("Step start time")}},[i("div",[i("b-form-group",{staticClass:"mb-1",attrs:{label:"Time","label-for":"popover-input-1","label-cols":"3"}},[i("b-form-input",{attrs:{type:"datetime-local",id:"popover-input-1",size:"sm"},model:{value:e.set_time_input,callback:function(t){e.set_time_input=t},expression:"set_time_input"}})],1)],1),i("div",{staticClass:"row",staticStyle:{"margin-top":"1vh"}},[i("div",{staticClass:"col-12",staticStyle:{"text-align":"right"}},[i("b-button",{staticStyle:{"margin-right":"8px"},attrs:{size:"sm",variant:"secondary"},on:{click:e.closePopover}},[e._v("Cancel")]),i("b-button",{attrs:{size:"sm",variant:"primary"},on:{click:e.updateTime}},[e._v("Ok")])],1)])])],1):e._e()],2)},d=[],p=(i("a9e3"),i("fa7d")),u=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("tr",{on:{click:function(t){return e.$emit("checked-state-changed",e.ingredient)}}},[e.ingredient.is_header?[i("td",{attrs:{colspan:"5"}},[i("b",[e._v(e._s(e.ingredient.note))])])]:[i("td",[e.ingredient.checked?i("i",{staticClass:"far fa-check-circle text-success"}):e._e(),e.ingredient.checked?e._e():i("i",{staticClass:"far fa-check-circle text-primary"})]),i("td",[0!==e.ingredient.amount?i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.ingredient.amount))}}):e._e()]),i("td",[null===e.ingredient.unit||e.ingredient.no_amount?e._e():i("span",[e._v(e._s(e.ingredient.unit.name))])]),i("td",[null!==e.ingredient.food?[null!==e.ingredient.food.recipe?i("a",{attrs:{href:e.resolveDjangoUrl("view_recipe",e.ingredient.food.recipe),target:"_blank",rel:"noopener noreferrer"}},[e._v(e._s(e.ingredient.food.name))]):e._e(),null===e.ingredient.food.recipe?i("span",[e._v(e._s(e.ingredient.food.name))]):e._e()]:e._e()],2),i("td",[e.ingredient.note?i("div",[i("span",{directives:[{name:"b-popover",rawName:"v-b-popover.hover",value:e.ingredient.note,expression:"ingredient.note",modifiers:{hover:!0}}],staticClass:"d-print-none"},[i("i",{staticClass:"far fa-comment"})]),i("div",{staticClass:"d-none d-print-block"},[i("i",{staticClass:"far fa-comment-alt"}),e._v(" "+e._s(e.ingredient.note)+" ")])]):e._e()])]],2)},f=[],_={name:"Ingredient",props:{ingredient:Object,ingredient_factor:{type:Number,default:1}},mixins:[p["b"]],data:function(){return{checked:!1}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},m=_,g=i("2877"),v=Object(g["a"])(m,u,f,!1,null,null,null),b=v.exports,h=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i(e.compiled,{tag:"component",attrs:{ingredient_factor:e.ingredient_factor,code:e.code}})],1)},j=[],k=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.number))}})},C=[],y={name:"ScalableNumber",props:{number:Number,factor:{type:Number,default:4}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.factor)}}},w=y,S=Object(g["a"])(w,k,C,!1,null,null,null),x=S.exports,O={name:"CompileComponent",props:["code","ingredient_factor"],data:function(){return{compiled:null}},mounted:function(){this.compiled=n["default"].component("compiled-component",{props:["ingredient_factor","code"],components:{ScalableNumber:x},template:"
".concat(this.code,"
")})}},E=O,R=Object(g["a"])(E,h,j,!1,null,null,null),$=R.exports,I=i("c1df"),P=i.n(I);n["default"].prototype.moment=P.a;var A={name:"Step",mixins:[p["a"]],components:{Ingredient:b,CompileComponent:$},props:{step:Object,ingredient_factor:Number,index:Number,recipe:Object,start_time:String},data:function(){return{details_visible:!0,set_time_input:""}},mounted:function(){this.set_time_input=P()(this.start_time).add(this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm")},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)},updateTime:function(){var e=P()(this.set_time_input).add(-1*this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm");this.$emit("update-start-time",e),this.closePopover()},closePopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("close")},openPopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("open")}}},N=A,z=Object(g["a"])(N,l,d,!1,null,null,null),L=z.exports,B=i("fc0d"),D=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("iframe",{staticStyle:{border:"none"},attrs:{src:e.pdfUrl,width:"100%",height:"700px"}})])},T=[],M={name:"PdfViewer",mixins:[p["b"]],props:{recipe:Object},computed:{pdfUrl:function(){return"/static/pdfjs/viewer.html?file="+Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},U=M,V=Object(g["a"])(U,D,T,!1,null,null,null),H=V.exports,F=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticStyle:{"text-align":"center"}},[i("b-img",{attrs:{src:e.pdfUrl,alt:e.$t("External_Recipe_Image")}})],1)},K=[],Z={name:"ImageViewer",props:{recipe:Object},computed:{pdfUrl:function(){return Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},W=Z,J=Object(g["a"])(W,F,K,!1,null,null,null),q=J.exports,G=function(){var e=this,t=e.$createElement,i=e._self._c||t;return null!==e.recipe.nutrition?i("div",[i("div",{staticClass:"card border-success"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-carrot"}),e._v(" "+e._s(e.$t("Nutrition")))])])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-fire fa-fw text-primary"}),e._v(" "+e._s(e.$t("Calories"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.calories))}}),e._v(" kcal ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-bread-slice fa-fw text-primary"}),e._v(" "+e._s(e.$t("Carbohydrates"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.carbohydrates))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-cheese fa-fw text-primary"}),e._v(" "+e._s(e.$t("Fats"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.fats))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-drumstick-bite fa-fw text-primary"}),e._v(" "+e._s(e.$t("Proteins"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.proteins))}}),e._v(" g ")])])])])]):e._e()},X=[],Q={name:"Nutrition",props:{recipe:Object,ingredient_factor:Number},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},Y=Q,ee=Object(g["a"])(Y,G,X,!1,null,null,null),te=ee.exports,ie=i("81d5"),ne=i("d76c"),ae=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_add_book",title:e.$t("Add_to_Book"),"ok-title":e.$t("Add"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.addToBook()}}},[i("multiselect",{attrs:{options:e.books,"preserve-search":!0,placeholder:e.$t("Select_Book"),label:"name","track-by":"id",id:"id_books",multiple:!1},on:{"search-change":e.loadBook},model:{value:e.selected_book,callback:function(t){e.selected_book=t},expression:"selected_book"}})],1)],1)},re=[],se=i("8e5f"),oe=i.n(se);n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ce={name:"AddRecipeToBook",components:{Multiselect:oe.a},props:{recipe:Object},data:function(){return{books:[],selected_book:null}},mounted:function(){this.loadBook("")},methods:{loadBook:function(e){var t=this;Object(c["b"])(e).then((function(e){t.books=e}))},addToBook:function(){Object(c["a"])({recipe:this.recipe.id,book:this.selected_book.id})}}},le=ce,de=(i("60bc"),Object(g["a"])(le,ae,re,!1,null,null,null)),pe=de.exports;n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ue={name:"RecipeView",mixins:[p["b"],p["c"]],components:{PdfViewer:H,ImageViewer:q,Ingredient:b,Step:L,RecipeContextMenu:B["a"],Nutrition:te,Keywords:ie["a"],LoadingSpinner:ne["a"],AddRecipeToBook:pe},computed:{ingredient_factor:function(){return this.servings/this.recipe.servings}},data:function(){return{loading:!0,recipe:void 0,ingredient_count:0,servings:1,start_time:""}},mounted:function(){this.loadRecipe(window.RECIPE_ID),this.$i18n.locale=window.CUSTOM_LOCALE},methods:{loadRecipe:function(e){var t=this;Object(c["c"])(e).then((function(e){0!==window.USER_SERVINGS&&(e.servings=window.USER_SERVINGS),t.servings=e.servings;var i,n=0,a=Object(s["a"])(e.steps);try{for(a.s();!(i=a.n()).done;){var r=i.value;t.ingredient_count+=r.ingredients.length;var o,c=Object(s["a"])(r.ingredients);try{for(c.s();!(o=c.n()).done;){var l=o.value;t.$set(l,"checked",!1)}}catch(d){c.e(d)}finally{c.f()}r.time_offset=n,n+=r.time}}catch(d){a.e(d)}finally{a.f()}n>0&&(t.start_time=P()().format("yyyy-MM-DDTHH:mm")),t.recipe=e,t.loading=!1}))},updateStartTime:function(e){this.start_time=e},updateIngredientCheckedState:function(e){var t,i=Object(s["a"])(this.recipe.steps);try{for(i.s();!(t=i.n()).done;){var n,a=t.value,r=Object(s["a"])(a.ingredients);try{for(r.s();!(n=r.n()).done;){var o=n.value;o.id===e.id&&this.$set(o,"checked",!o.checked)}}catch(c){r.e(c)}finally{r.f()}}}catch(c){i.e(c)}finally{i.f()}}}},fe=ue,_e=Object(g["a"])(fe,a,r,!1,null,null,null),me=_e.exports,ge=i("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:ge["a"],render:function(e){return e(me)}}).$mount("#app")},1:function(e,t,i){e.exports=i("0671")},4678:function(e,t,i){var n={"./af":"2bfb","./af.js":"2bfb","./ar":"8e73","./ar-dz":"a356","./ar-dz.js":"a356","./ar-kw":"423e","./ar-kw.js":"423e","./ar-ly":"1cfd","./ar-ly.js":"1cfd","./ar-ma":"0a84","./ar-ma.js":"0a84","./ar-sa":"8230","./ar-sa.js":"8230","./ar-tn":"6d83","./ar-tn.js":"6d83","./ar.js":"8e73","./az":"485c","./az.js":"485c","./be":"1fc1","./be.js":"1fc1","./bg":"84aa","./bg.js":"84aa","./bm":"a7fa","./bm.js":"a7fa","./bn":"9043","./bn-bd":"9686","./bn-bd.js":"9686","./bn.js":"9043","./bo":"d26a","./bo.js":"d26a","./br":"6887","./br.js":"6887","./bs":"2554","./bs.js":"2554","./ca":"d716","./ca.js":"d716","./cs":"3c0d","./cs.js":"3c0d","./cv":"03ec","./cv.js":"03ec","./cy":"9797","./cy.js":"9797","./da":"0f14","./da.js":"0f14","./de":"b469","./de-at":"b3eb","./de-at.js":"b3eb","./de-ch":"bb71","./de-ch.js":"bb71","./de.js":"b469","./dv":"598a","./dv.js":"598a","./el":"8d47","./el.js":"8d47","./en-au":"0e6b","./en-au.js":"0e6b","./en-ca":"3886","./en-ca.js":"3886","./en-gb":"39a6","./en-gb.js":"39a6","./en-ie":"e1d3","./en-ie.js":"e1d3","./en-il":"7333","./en-il.js":"7333","./en-in":"ec2e","./en-in.js":"ec2e","./en-nz":"6f50","./en-nz.js":"6f50","./en-sg":"b7e9","./en-sg.js":"b7e9","./eo":"65db","./eo.js":"65db","./es":"898b","./es-do":"0a3c","./es-do.js":"0a3c","./es-mx":"b5b7","./es-mx.js":"b5b7","./es-us":"55c9","./es-us.js":"55c9","./es.js":"898b","./et":"ec18","./et.js":"ec18","./eu":"0ff2","./eu.js":"0ff2","./fa":"8df4","./fa.js":"8df4","./fi":"81e9","./fi.js":"81e9","./fil":"d69a","./fil.js":"d69a","./fo":"0721","./fo.js":"0721","./fr":"9f26","./fr-ca":"d9f8","./fr-ca.js":"d9f8","./fr-ch":"0e49","./fr-ch.js":"0e49","./fr.js":"9f26","./fy":"7118","./fy.js":"7118","./ga":"5120","./ga.js":"5120","./gd":"f6b4","./gd.js":"f6b4","./gl":"8840","./gl.js":"8840","./gom-deva":"aaf2","./gom-deva.js":"aaf2","./gom-latn":"0caa","./gom-latn.js":"0caa","./gu":"e0c5","./gu.js":"e0c5","./he":"c7aa","./he.js":"c7aa","./hi":"dc4d","./hi.js":"dc4d","./hr":"4ba9","./hr.js":"4ba9","./hu":"5b14","./hu.js":"5b14","./hy-am":"d6b6","./hy-am.js":"d6b6","./id":"5038","./id.js":"5038","./is":"0558","./is.js":"0558","./it":"6e98","./it-ch":"6f12","./it-ch.js":"6f12","./it.js":"6e98","./ja":"079e","./ja.js":"079e","./jv":"b540","./jv.js":"b540","./ka":"201b","./ka.js":"201b","./kk":"6d79","./kk.js":"6d79","./km":"e81d","./km.js":"e81d","./kn":"3e92","./kn.js":"3e92","./ko":"22f8","./ko.js":"22f8","./ku":"2421","./ku.js":"2421","./ky":"9609","./ky.js":"9609","./lb":"440c","./lb.js":"440c","./lo":"b29d","./lo.js":"b29d","./lt":"26f9","./lt.js":"26f9","./lv":"b97c","./lv.js":"b97c","./me":"293c","./me.js":"293c","./mi":"688b","./mi.js":"688b","./mk":"6909","./mk.js":"6909","./ml":"02fb","./ml.js":"02fb","./mn":"958b","./mn.js":"958b","./mr":"39bd","./mr.js":"39bd","./ms":"ebe4","./ms-my":"6403","./ms-my.js":"6403","./ms.js":"ebe4","./mt":"1b45","./mt.js":"1b45","./my":"8689","./my.js":"8689","./nb":"6ce3","./nb.js":"6ce3","./ne":"3a39","./ne.js":"3a39","./nl":"facd","./nl-be":"db29","./nl-be.js":"db29","./nl.js":"facd","./nn":"b84c","./nn.js":"b84c","./oc-lnc":"167b","./oc-lnc.js":"167b","./pa-in":"f3ff","./pa-in.js":"f3ff","./pl":"8d57","./pl.js":"8d57","./pt":"f260","./pt-br":"d2d4","./pt-br.js":"d2d4","./pt.js":"f260","./ro":"972c","./ro.js":"972c","./ru":"957c","./ru.js":"957c","./sd":"6784","./sd.js":"6784","./se":"ffff","./se.js":"ffff","./si":"eda5","./si.js":"eda5","./sk":"7be6","./sk.js":"7be6","./sl":"8155","./sl.js":"8155","./sq":"c8f3","./sq.js":"c8f3","./sr":"cf1e","./sr-cyrl":"13e9","./sr-cyrl.js":"13e9","./sr.js":"cf1e","./ss":"52bd","./ss.js":"52bd","./sv":"5fbd","./sv.js":"5fbd","./sw":"74dc","./sw.js":"74dc","./ta":"3de5","./ta.js":"3de5","./te":"5cbb","./te.js":"5cbb","./tet":"576c","./tet.js":"576c","./tg":"3b1b","./tg.js":"3b1b","./th":"10e8","./th.js":"10e8","./tk":"5aff","./tk.js":"5aff","./tl-ph":"0f38","./tl-ph.js":"0f38","./tlh":"cf755","./tlh.js":"cf755","./tr":"0e81","./tr.js":"0e81","./tzl":"cf51","./tzl.js":"cf51","./tzm":"c109","./tzm-latn":"b53d","./tzm-latn.js":"b53d","./tzm.js":"c109","./ug-cn":"6117","./ug-cn.js":"6117","./uk":"ada2","./uk.js":"ada2","./ur":"5294","./ur.js":"5294","./uz":"2e8c","./uz-latn":"010e","./uz-latn.js":"010e","./uz.js":"2e8c","./vi":"2921","./vi.js":"2921","./x-pseudo":"fd7e","./x-pseudo.js":"fd7e","./yo":"7f33","./yo.js":"7f33","./zh-cn":"5c3a","./zh-cn.js":"5c3a","./zh-hk":"49ab","./zh-hk.js":"49ab","./zh-mo":"3a6c","./zh-mo.js":"3a6c","./zh-tw":"90ea","./zh-tw.js":"90ea"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="4678"},"49f8":function(e,t,i){var n={"./de.json":"6ce2","./en.json":"edd4","./nl.json":"a625","./sv.json":"4c5b"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="49f8"},"4c5b":function(e){e.exports=JSON.parse('{"import_running":"Import pågår, var god vänta!","all_fields_optional":"Alla rutor är valfria och kan lämnas tomma.","convert_internal":"Konvertera till internt recept","Log_Recipe_Cooking":"Logga tillagningen av receptet","External_Recipe_Image":"Externt receptbild","Add_to_Book":"Lägg till i kokbok","Add_to_Shopping":"Lägg till i handelslista","Add_to_Plan":"Lägg till i matsedel","Step_start_time":"Steg starttid","Select_Book":"Välj kokbok","Recipe_Image":"Receptbild","Import_finished":"Importering klar","View_Recipes":"Visa recept","Log_Cooking":"Logga tillagning","Proteins":"Protein","Fats":"Fett","Carbohydrates":"Kolhydrater","Calories":"Kalorier","Nutrition":"Näringsinnehåll","Date":"Datum","Share":"Dela","Export":"Exportera","Rating":"Betyg","Close":"Stäng","Add":"Lägg till","Ingredients":"Ingredienser","min":"min","Servings":"Portioner","Waiting":"Väntan","Preparation":"Förberedelse","Edit":"Redigera","Open":"Öppna","Save":"Spara","Step":"Steg","Search":"Sök","Import":"Importera","Print":"Skriv ut","Information":"Information"}')},"6ce2":function(e){e.exports=JSON.parse('{"Import":"Import","import_running":"Import läuft, bitte warten!","Import_finished":"Import fertig","View_Recipes":"Rezepte Ansehen","Information":"Information","all_fields_optional":"Alle Felder sind optional und können leer gelassen werden.","convert_internal":"Zu internem Rezept wandeln","Log_Recipe_Cooking":"Kochen protokollieren","External_Recipe_Image":"Externes Rezept Bild","Add_to_Book":"Zu Buch hinzufügen","Add_to_Shopping":"Zu Einkaufsliste hinzufügen","Add_to_Plan":"Zu Plan hinzufügen","Step_start_time":"Schritt Startzeit","Select_Book":"Buch wählen","Recipe_Image":"Rezept Bild","Log_Cooking":"Kochen protokollieren","Proteins":"Proteine","Fats":"Fette","Carbohydrates":"Kohlenhydrate","Calories":"Kalorien","Nutrition":"Nährwerte","Keywords":"Stichwörter","Books":"Bücher","show_only_internal":"Nur interne Rezepte anzeigen","Ingredients":"Zutaten","min":"Min","Servings":"Portionen","Waiting":"Wartezeit","Preparation":"Zubereitung","Edit":"Bearbeiten","Open":"Öffnen","Save":"Speichern","Step":"Schritt","Search":"Suchen","Print":"Drucken","New_Recipe":"Neues Rezept","Url_Import":"URL Import","Reset_Search":"Suche zurücksetzen","or":"oder","and":"und","Recently_Viewed":"Kürzlich angesehen","External":"Extern","Settings":"Einstellungen","Meal_Plan":"Speiseplan","Date":"Datum","Share":"Teilen","Export":"Exportieren","Rating":"Bewertung","Close":"Schließen","Add":"Hinzufügen"}')},"7c15":function(e,t,i){"use strict";i.d(t,"c",(function(){return s})),i.d(t,"d",(function(){return o})),i.d(t,"b",(function(){return c})),i.d(t,"a",(function(){return l}));var n=i("bc3a"),a=i.n(n),r=i("fa7d");function s(e){var t=Object(r["g"])("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),a.a.get(t).then((function(e){return e.data})).catch((function(e){d(e,"There was an error loading a resource!","danger")}))}function o(e){return a.a.post(Object(r["g"])("api:cooklog-list"),e).then((function(e){Object(r["f"])("Saved","Cook Log entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function c(e){return a.a.get(Object(r["g"])("api:recipebook-list")+"?query="+e).then((function(e){return e.data})).catch((function(e){}))}function l(e){return a.a.post(Object(r["g"])("api:recipebookentry-list"),e).then((function(e){Object(r["f"])("Saved","Recipe Book entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function d(e,t){if("response"in e){console.log(e.response);var i="statusText"in e.response?e.response.statusText:Object(r["e"])("Error");t+="\n\n"+JSON.stringify(e.response.data),Object(r["f"])(i,t,"danger")}else Object(r["f"])("Error",t,"danger"),console.log(e)}a.a.defaults.xsrfCookieName="csrftoken",a.a.defaults.xsrfHeaderName="X-CSRFTOKEN"},"81d5":function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.recipe.keywords.length>0?i("div",e._l(e.recipe.keywords,(function(t){return i("span",{key:t.id,staticStyle:{padding:"2px"}},[i("b-badge",{attrs:{pill:"",variant:"light"}},[e._v(e._s(t.label))])],1)})),0):e._e()},a=[],r={name:"Keywords",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},9225:function(e,t,i){"use strict";i("159b"),i("d3b7"),i("ddb0"),i("ac1f"),i("466d");var n=i("a026"),a=i("a925");function r(){var e=i("49f8"),t={};return e.keys().forEach((function(i){var n=i.match(/([A-Za-z0-9-_]+)\./i);if(n&&n.length>1){var a=n[1];t[a]=e(i)}})),t}n["default"].use(a["a"]),t["a"]=new a["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:r()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"row"},[i("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[i("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],r={name:"LoadingSpinner",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","err_deleting_resource":"There was an error deleting a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","success_deleting_resource":"Successfully deleted a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Cancel":"Cancel","Delete":"Delete","Open":"Open","Ok":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,i){"use strict";i.d(t,"c",(function(){return r})),i.d(t,"f",(function(){return s})),i.d(t,"a",(function(){return o})),i.d(t,"e",(function(){return c})),i.d(t,"b",(function(){return l})),i.d(t,"g",(function(){return d})),i.d(t,"d",(function(){return u}));i("99af");var n=i("59e4");function a(e,t,i){var n=Math.floor(e),a=1,r=n+1,s=1;if(e!==n)while(a<=t&&s<=t){var o=(n+r)/(a+s);if(e===o){a+s<=t?(a+=s,n+=r,s=t+1):a>s?s=t+1:a=t+1;break}et&&(a=s,n=r),!i)return[0,n,a];var c=Math.floor(n/a);return[c,n-c*a,a]}var r={methods:{makeToast:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return s(e,t,i)}}};function s(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=new n["a"];a.$bvToast.toast(t,{title:e,variant:i,toaster:"b-toaster-top-center",solid:!0})}var o={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var l={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function u(e,t){if(p("use_fractions")){var i="",n=a(e*t,9,!0);return n[0]>0&&(i+=n[0]),n[1]>0&&(i+=" ".concat(n[1],"").concat(n[2],"")),i}return f(e*t)}function f(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fc0d:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("div",{staticClass:"dropdown"},[e._m(0),i("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e.$t("Edit")))]),e.recipe.internal?e._e():i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e.$t("convert_internal")))]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_add_book")}}},[i("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Book"))+" ")]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Shopping"))+" ")]):e._e(),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?recipe="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Plan"))+" ")]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[i("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e.$t("Log_Cooking"))+" ")]),i("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[i("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e.$t("Print"))+" ")]),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e.$t("Export")))]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e.$t("Share")))]):e._e()])]),i("cook-log",{attrs:{recipe:e.recipe}})],1)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[i("i",{staticClass:"fas fa-ellipsis-v"})])}],r=(i("a9e3"),i("fa7d")),s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e.$t("Log_Recipe_Cooking"),"ok-title":e.$t("Save"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.logCook()}}},[i("p",[e._v(e._s(e.$t("all_fields_optional")))]),i("form",[i("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e.$t("Servings")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),i("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e.$t("Rating"))+" - "),i("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),i("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),i("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e.$t("Date")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},o=[],c=i("c1df"),l=i.n(c),d=i("a026"),p=i("5f5b"),u=i("7c15");d["default"].prototype.moment=l.a,d["default"].use(p["a"]);var f={name:"CookLog",props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:l()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){Object(u["d"])(this.logObject)}}},_=f,m=i("2877"),g=Object(m["a"])(_,s,o,!1,null,null,null),v=g.exports,b={name:"RecipeContextMenu",mixins:[r["b"]],components:{CookLog:v},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},h=b,j=Object(m["a"])(h,n,a,!1,null,null,null);t["a"]=j.exports}}); \ No newline at end of file +(function(e){function t(t){for(var n,s,o=t[0],c=t[1],l=t[2],p=0,u=[];p0?i("div",{staticClass:"col-md-6 order-md-1 col-sm-12 order-sm-2 col-12 order-2"},[i("div",{staticClass:"card border-primary"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-pepper-hot"}),e._v(" "+e._s(e.$t("Ingredients")))])])]),i("br"),i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-12"},[i("table",{staticClass:"table table-sm"},[e._l(e.recipe.steps,(function(t){return[e._l(t.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":e.updateIngredientCheckedState}})]}))]}))],2)])])])])]):e._e(),i("div",{staticClass:"col-12 order-1 col-sm-12 order-sm-1 col-md-6 order-md-2"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[null!==e.recipe.image?i("img",{staticClass:"img img-fluid rounded",staticStyle:{"max-height":"30vh"},attrs:{src:e.recipe.image,alt:e.$t("Recipe_Image")}}):e._e()])]),i("div",{staticClass:"row",staticStyle:{"margin-top":"2vh","margin-bottom":"2vh"}},[i("div",{staticClass:"col-12"},[i("Nutrition",{attrs:{recipe:e.recipe,ingredient_factor:e.ingredient_factor}})],1)])])]),e.recipe.internal?e._e():[e.recipe.file_path.includes(".pdf")?i("div",[i("PdfViewer",{attrs:{recipe:e.recipe}})],1):e._e(),e.recipe.file_path.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")||e.recipe.file_path.includes(".gif")?i("div",[i("ImageViewer",{attrs:{recipe:e.recipe}})],1):e._e()],e._l(e.recipe.steps,(function(t,n){return i("div",{key:t.id,staticStyle:{"margin-top":"1vh"}},[i("Step",{attrs:{recipe:e.recipe,step:t,ingredient_factor:e.ingredient_factor,index:n,start_time:e.start_time},on:{"update-start-time":e.updateStartTime,"checked-state-changed":e.updateIngredientCheckedState}})],1)}))],2),i("add-recipe-to-book",{attrs:{recipe:e.recipe}})],2)},r=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-user-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"far fa-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-pizza-slice fa-2x text-primary"})])}],s=i("b85c"),o=i("5f5b"),c=(i("2dd8"),i("7c15")),l=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("hr"),"TEXT"===e.step.type?[e.recipe.steps.length>1?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h5",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))],0!==e.step.time?i("small",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fas fa-user-clock"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min"))+" ")]):e._e(),""!==e.start_time?i("small",{staticClass:"d-print-none"},[i("b-link",{attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")])],1):e._e()],2)]),i("div",{staticClass:"col col-md-4",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]):e._e(),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[i("div",{staticClass:"row"},[e.step.ingredients.length>0&&e.recipe.steps.length>1?i("div",{staticClass:"col col-md-4"},[i("table",{staticClass:"table table-sm"},[e._l(e.step.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":function(i){return e.$emit("checked-state-changed",t)}}})]}))],2)]):e._e(),i("div",{staticClass:"col",class:{"col-md-8":e.recipe.steps.length>1,"col-md-12":e.recipe.steps.length<=1}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)])])]:e._e(),"TIME"===e.step.type||"FILE"===e.step.type?[i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-8 offset-md-2",staticStyle:{"text-align":"center"}},[i("h4",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))]],2),0!==e.step.time?i("span",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fa fa-stopwatch"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min")))]):e._e(),""!==e.start_time?i("b-link",{staticClass:"d-print-none",attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")]):e._e()],1),i("div",{staticClass:"col-md-2",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[""!==e.step.instruction?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-12",staticStyle:{"text-align":"center"}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)]):e._e()])]:e._e(),i("div",{staticClass:"row",staticStyle:{"text-align":"center"}},[i("div",{staticClass:"col col-md-12"},[null!==e.step.file?[e.step.file.file.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")||e.recipe.file_path.includes(".gif")?i("div",[i("img",{staticStyle:{"max-width":"50vw","max-height":"50vh"},attrs:{src:e.step.file.file}})]):i("div",[i("a",{attrs:{href:e.step.file.file,target:"_blank",rel:"noreferrer nofollow"}},[e._v(e._s(e.$t("Download"))+" "+e._s(e.$t("File")))])])]:e._e()],2)]),""!==e.start_time?i("div",[i("b-popover",{ref:"id_reactive_popover_"+e.step.id,attrs:{target:"id_reactive_popover_"+e.step.id,triggers:"click",placement:"bottom",title:e.$t("Step start time")}},[i("div",[i("b-form-group",{staticClass:"mb-1",attrs:{label:"Time","label-for":"popover-input-1","label-cols":"3"}},[i("b-form-input",{attrs:{type:"datetime-local",id:"popover-input-1",size:"sm"},model:{value:e.set_time_input,callback:function(t){e.set_time_input=t},expression:"set_time_input"}})],1)],1),i("div",{staticClass:"row",staticStyle:{"margin-top":"1vh"}},[i("div",{staticClass:"col-12",staticStyle:{"text-align":"right"}},[i("b-button",{staticStyle:{"margin-right":"8px"},attrs:{size:"sm",variant:"secondary"},on:{click:e.closePopover}},[e._v("Cancel")]),i("b-button",{attrs:{size:"sm",variant:"primary"},on:{click:e.updateTime}},[e._v("Ok")])],1)])])],1):e._e()],2)},d=[],p=(i("a9e3"),i("fa7d")),u=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("tr",{on:{click:function(t){return e.$emit("checked-state-changed",e.ingredient)}}},[e.ingredient.is_header?[i("td",{attrs:{colspan:"5"}},[i("b",[e._v(e._s(e.ingredient.note))])])]:[i("td",[e.ingredient.checked?i("i",{staticClass:"far fa-check-circle text-success"}):e._e(),e.ingredient.checked?e._e():i("i",{staticClass:"far fa-check-circle text-primary"})]),i("td",[0!==e.ingredient.amount?i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.ingredient.amount))}}):e._e()]),i("td",[null===e.ingredient.unit||e.ingredient.no_amount?e._e():i("span",[e._v(e._s(e.ingredient.unit.name))])]),i("td",[null!==e.ingredient.food?[null!==e.ingredient.food.recipe?i("a",{attrs:{href:e.resolveDjangoUrl("view_recipe",e.ingredient.food.recipe),target:"_blank",rel:"noopener noreferrer"}},[e._v(e._s(e.ingredient.food.name))]):e._e(),null===e.ingredient.food.recipe?i("span",[e._v(e._s(e.ingredient.food.name))]):e._e()]:e._e()],2),i("td",[e.ingredient.note?i("div",[i("span",{directives:[{name:"b-popover",rawName:"v-b-popover.hover",value:e.ingredient.note,expression:"ingredient.note",modifiers:{hover:!0}}],staticClass:"d-print-none"},[i("i",{staticClass:"far fa-comment"})]),i("div",{staticClass:"d-none d-print-block"},[i("i",{staticClass:"far fa-comment-alt"}),e._v(" "+e._s(e.ingredient.note)+" ")])]):e._e()])]],2)},f=[],_={name:"Ingredient",props:{ingredient:Object,ingredient_factor:{type:Number,default:1}},mixins:[p["b"]],data:function(){return{checked:!1}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},m=_,g=i("2877"),v=Object(g["a"])(m,u,f,!1,null,null,null),b=v.exports,h=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i(e.compiled,{tag:"component",attrs:{ingredient_factor:e.ingredient_factor,code:e.code}})],1)},j=[],k=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.number))}})},C=[],y={name:"ScalableNumber",props:{number:Number,factor:{type:Number,default:4}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.factor)}}},w=y,S=Object(g["a"])(w,k,C,!1,null,null,null),x=S.exports,O={name:"CompileComponent",props:["code","ingredient_factor"],data:function(){return{compiled:null}},mounted:function(){this.compiled=n["default"].component("compiled-component",{props:["ingredient_factor","code"],components:{ScalableNumber:x},template:"
".concat(this.code,"
")})}},E=O,R=Object(g["a"])(E,h,j,!1,null,null,null),$=R.exports,I=i("c1df"),P=i.n(I);n["default"].prototype.moment=P.a;var A={name:"Step",mixins:[p["a"]],components:{Ingredient:b,CompileComponent:$},props:{step:Object,ingredient_factor:Number,index:Number,recipe:Object,start_time:String},data:function(){return{details_visible:!0,set_time_input:""}},mounted:function(){this.set_time_input=P()(this.start_time).add(this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm")},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)},updateTime:function(){var e=P()(this.set_time_input).add(-1*this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm");this.$emit("update-start-time",e),this.closePopover()},closePopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("close")},openPopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("open")}}},N=A,L=Object(g["a"])(N,l,d,!1,null,null,null),z=L.exports,B=i("fc0d"),D=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("iframe",{staticStyle:{border:"none"},attrs:{src:e.pdfUrl,width:"100%",height:"700px"}})])},T=[],M={name:"PdfViewer",mixins:[p["b"]],props:{recipe:Object},computed:{pdfUrl:function(){return"/static/pdfjs/viewer.html?file="+Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},U=M,V=Object(g["a"])(U,D,T,!1,null,null,null),H=V.exports,F=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticStyle:{"text-align":"center"}},[i("b-img",{attrs:{src:e.pdfUrl,alt:e.$t("External_Recipe_Image")}})],1)},K=[],Z={name:"ImageViewer",props:{recipe:Object},computed:{pdfUrl:function(){return Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},W=Z,J=Object(g["a"])(W,F,K,!1,null,null,null),q=J.exports,G=function(){var e=this,t=e.$createElement,i=e._self._c||t;return null!==e.recipe.nutrition?i("div",[i("div",{staticClass:"card border-success"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-carrot"}),e._v(" "+e._s(e.$t("Nutrition")))])])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-fire fa-fw text-primary"}),e._v(" "+e._s(e.$t("Calories"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.calories))}}),e._v(" kcal ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-bread-slice fa-fw text-primary"}),e._v(" "+e._s(e.$t("Carbohydrates"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.carbohydrates))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-cheese fa-fw text-primary"}),e._v(" "+e._s(e.$t("Fats"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.fats))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-drumstick-bite fa-fw text-primary"}),e._v(" "+e._s(e.$t("Proteins"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.proteins))}}),e._v(" g ")])])])])]):e._e()},X=[],Q={name:"Nutrition",props:{recipe:Object,ingredient_factor:Number},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},Y=Q,ee=Object(g["a"])(Y,G,X,!1,null,null,null),te=ee.exports,ie=i("81d5"),ne=i("d76c"),ae=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_add_book",title:e.$t("Add_to_Book"),"ok-title":e.$t("Add"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.addToBook()}}},[i("multiselect",{attrs:{options:e.books,"preserve-search":!0,placeholder:e.$t("Select_Book"),label:"name","track-by":"id",id:"id_books",multiple:!1},on:{"search-change":e.loadBook},model:{value:e.selected_book,callback:function(t){e.selected_book=t},expression:"selected_book"}})],1)],1)},re=[],se=i("8e5f"),oe=i.n(se);n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ce={name:"AddRecipeToBook",components:{Multiselect:oe.a},props:{recipe:Object},data:function(){return{books:[],selected_book:null}},mounted:function(){this.loadBook("")},methods:{loadBook:function(e){var t=this;Object(c["b"])(e).then((function(e){t.books=e}))},addToBook:function(){Object(c["a"])({recipe:this.recipe.id,book:this.selected_book.id})}}},le=ce,de=(i("60bc"),Object(g["a"])(le,ae,re,!1,null,null,null)),pe=de.exports;n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ue={name:"RecipeView",mixins:[p["b"],p["c"]],components:{PdfViewer:H,ImageViewer:q,Ingredient:b,Step:z,RecipeContextMenu:B["a"],Nutrition:te,Keywords:ie["a"],LoadingSpinner:ne["a"],AddRecipeToBook:pe},computed:{ingredient_factor:function(){return this.servings/this.recipe.servings}},data:function(){return{loading:!0,recipe:void 0,ingredient_count:0,servings:1,start_time:""}},mounted:function(){this.loadRecipe(window.RECIPE_ID),this.$i18n.locale=window.CUSTOM_LOCALE},methods:{loadRecipe:function(e){var t=this;Object(c["c"])(e).then((function(e){0!==window.USER_SERVINGS&&(e.servings=window.USER_SERVINGS),t.servings=e.servings;var i,n=0,a=Object(s["a"])(e.steps);try{for(a.s();!(i=a.n()).done;){var r=i.value;t.ingredient_count+=r.ingredients.length;var o,c=Object(s["a"])(r.ingredients);try{for(c.s();!(o=c.n()).done;){var l=o.value;t.$set(l,"checked",!1)}}catch(d){c.e(d)}finally{c.f()}r.time_offset=n,n+=r.time}}catch(d){a.e(d)}finally{a.f()}n>0&&(t.start_time=P()().format("yyyy-MM-DDTHH:mm")),t.recipe=e,t.loading=!1}))},updateStartTime:function(e){this.start_time=e},updateIngredientCheckedState:function(e){var t,i=Object(s["a"])(this.recipe.steps);try{for(i.s();!(t=i.n()).done;){var n,a=t.value,r=Object(s["a"])(a.ingredients);try{for(r.s();!(n=r.n()).done;){var o=n.value;o.id===e.id&&this.$set(o,"checked",!o.checked)}}catch(c){r.e(c)}finally{r.f()}}}catch(c){i.e(c)}finally{i.f()}}}},fe=ue,_e=Object(g["a"])(fe,a,r,!1,null,null,null),me=_e.exports,ge=i("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:ge["a"],render:function(e){return e(me)}}).$mount("#app")},1:function(e,t,i){e.exports=i("0671")},4678:function(e,t,i){var n={"./af":"2bfb","./af.js":"2bfb","./ar":"8e73","./ar-dz":"a356","./ar-dz.js":"a356","./ar-kw":"423e","./ar-kw.js":"423e","./ar-ly":"1cfd","./ar-ly.js":"1cfd","./ar-ma":"0a84","./ar-ma.js":"0a84","./ar-sa":"8230","./ar-sa.js":"8230","./ar-tn":"6d83","./ar-tn.js":"6d83","./ar.js":"8e73","./az":"485c","./az.js":"485c","./be":"1fc1","./be.js":"1fc1","./bg":"84aa","./bg.js":"84aa","./bm":"a7fa","./bm.js":"a7fa","./bn":"9043","./bn-bd":"9686","./bn-bd.js":"9686","./bn.js":"9043","./bo":"d26a","./bo.js":"d26a","./br":"6887","./br.js":"6887","./bs":"2554","./bs.js":"2554","./ca":"d716","./ca.js":"d716","./cs":"3c0d","./cs.js":"3c0d","./cv":"03ec","./cv.js":"03ec","./cy":"9797","./cy.js":"9797","./da":"0f14","./da.js":"0f14","./de":"b469","./de-at":"b3eb","./de-at.js":"b3eb","./de-ch":"bb71","./de-ch.js":"bb71","./de.js":"b469","./dv":"598a","./dv.js":"598a","./el":"8d47","./el.js":"8d47","./en-au":"0e6b","./en-au.js":"0e6b","./en-ca":"3886","./en-ca.js":"3886","./en-gb":"39a6","./en-gb.js":"39a6","./en-ie":"e1d3","./en-ie.js":"e1d3","./en-il":"7333","./en-il.js":"7333","./en-in":"ec2e","./en-in.js":"ec2e","./en-nz":"6f50","./en-nz.js":"6f50","./en-sg":"b7e9","./en-sg.js":"b7e9","./eo":"65db","./eo.js":"65db","./es":"898b","./es-do":"0a3c","./es-do.js":"0a3c","./es-mx":"b5b7","./es-mx.js":"b5b7","./es-us":"55c9","./es-us.js":"55c9","./es.js":"898b","./et":"ec18","./et.js":"ec18","./eu":"0ff2","./eu.js":"0ff2","./fa":"8df4","./fa.js":"8df4","./fi":"81e9","./fi.js":"81e9","./fil":"d69a","./fil.js":"d69a","./fo":"0721","./fo.js":"0721","./fr":"9f26","./fr-ca":"d9f8","./fr-ca.js":"d9f8","./fr-ch":"0e49","./fr-ch.js":"0e49","./fr.js":"9f26","./fy":"7118","./fy.js":"7118","./ga":"5120","./ga.js":"5120","./gd":"f6b4","./gd.js":"f6b4","./gl":"8840","./gl.js":"8840","./gom-deva":"aaf2","./gom-deva.js":"aaf2","./gom-latn":"0caa","./gom-latn.js":"0caa","./gu":"e0c5","./gu.js":"e0c5","./he":"c7aa","./he.js":"c7aa","./hi":"dc4d","./hi.js":"dc4d","./hr":"4ba9","./hr.js":"4ba9","./hu":"5b14","./hu.js":"5b14","./hy-am":"d6b6","./hy-am.js":"d6b6","./id":"5038","./id.js":"5038","./is":"0558","./is.js":"0558","./it":"6e98","./it-ch":"6f12","./it-ch.js":"6f12","./it.js":"6e98","./ja":"079e","./ja.js":"079e","./jv":"b540","./jv.js":"b540","./ka":"201b","./ka.js":"201b","./kk":"6d79","./kk.js":"6d79","./km":"e81d","./km.js":"e81d","./kn":"3e92","./kn.js":"3e92","./ko":"22f8","./ko.js":"22f8","./ku":"2421","./ku.js":"2421","./ky":"9609","./ky.js":"9609","./lb":"440c","./lb.js":"440c","./lo":"b29d","./lo.js":"b29d","./lt":"26f9","./lt.js":"26f9","./lv":"b97c","./lv.js":"b97c","./me":"293c","./me.js":"293c","./mi":"688b","./mi.js":"688b","./mk":"6909","./mk.js":"6909","./ml":"02fb","./ml.js":"02fb","./mn":"958b","./mn.js":"958b","./mr":"39bd","./mr.js":"39bd","./ms":"ebe4","./ms-my":"6403","./ms-my.js":"6403","./ms.js":"ebe4","./mt":"1b45","./mt.js":"1b45","./my":"8689","./my.js":"8689","./nb":"6ce3","./nb.js":"6ce3","./ne":"3a39","./ne.js":"3a39","./nl":"facd","./nl-be":"db29","./nl-be.js":"db29","./nl.js":"facd","./nn":"b84c","./nn.js":"b84c","./oc-lnc":"167b","./oc-lnc.js":"167b","./pa-in":"f3ff","./pa-in.js":"f3ff","./pl":"8d57","./pl.js":"8d57","./pt":"f260","./pt-br":"d2d4","./pt-br.js":"d2d4","./pt.js":"f260","./ro":"972c","./ro.js":"972c","./ru":"957c","./ru.js":"957c","./sd":"6784","./sd.js":"6784","./se":"ffff","./se.js":"ffff","./si":"eda5","./si.js":"eda5","./sk":"7be6","./sk.js":"7be6","./sl":"8155","./sl.js":"8155","./sq":"c8f3","./sq.js":"c8f3","./sr":"cf1e","./sr-cyrl":"13e9","./sr-cyrl.js":"13e9","./sr.js":"cf1e","./ss":"52bd","./ss.js":"52bd","./sv":"5fbd","./sv.js":"5fbd","./sw":"74dc","./sw.js":"74dc","./ta":"3de5","./ta.js":"3de5","./te":"5cbb","./te.js":"5cbb","./tet":"576c","./tet.js":"576c","./tg":"3b1b","./tg.js":"3b1b","./th":"10e8","./th.js":"10e8","./tk":"5aff","./tk.js":"5aff","./tl-ph":"0f38","./tl-ph.js":"0f38","./tlh":"cf755","./tlh.js":"cf755","./tr":"0e81","./tr.js":"0e81","./tzl":"cf51","./tzl.js":"cf51","./tzm":"c109","./tzm-latn":"b53d","./tzm-latn.js":"b53d","./tzm.js":"c109","./ug-cn":"6117","./ug-cn.js":"6117","./uk":"ada2","./uk.js":"ada2","./ur":"5294","./ur.js":"5294","./uz":"2e8c","./uz-latn":"010e","./uz-latn.js":"010e","./uz.js":"2e8c","./vi":"2921","./vi.js":"2921","./x-pseudo":"fd7e","./x-pseudo.js":"fd7e","./yo":"7f33","./yo.js":"7f33","./zh-cn":"5c3a","./zh-cn.js":"5c3a","./zh-hk":"49ab","./zh-hk.js":"49ab","./zh-mo":"3a6c","./zh-mo.js":"3a6c","./zh-tw":"90ea","./zh-tw.js":"90ea"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="4678"},"49f8":function(e,t,i){var n={"./de.json":"6ce2","./en.json":"edd4","./nl.json":"a625","./sv.json":"4c5b"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="49f8"},"4c5b":function(e){e.exports=JSON.parse('{"import_running":"Import pågår, var god vänta!","all_fields_optional":"Alla rutor är valfria och kan lämnas tomma.","convert_internal":"Konvertera till internt recept","Log_Recipe_Cooking":"Logga tillagningen av receptet","External_Recipe_Image":"Externt receptbild","Add_to_Book":"Lägg till i kokbok","Add_to_Shopping":"Lägg till i handelslista","Add_to_Plan":"Lägg till i matsedel","Step_start_time":"Steg starttid","Select_Book":"Välj kokbok","Recipe_Image":"Receptbild","Import_finished":"Importering klar","View_Recipes":"Visa recept","Log_Cooking":"Logga tillagning","Proteins":"Protein","Fats":"Fett","Carbohydrates":"Kolhydrater","Calories":"Kalorier","Nutrition":"Näringsinnehåll","Date":"Datum","Share":"Dela","Export":"Exportera","Rating":"Betyg","Close":"Stäng","Add":"Lägg till","Ingredients":"Ingredienser","min":"min","Servings":"Portioner","Waiting":"Väntan","Preparation":"Förberedelse","Edit":"Redigera","Open":"Öppna","Save":"Spara","Step":"Steg","Search":"Sök","Import":"Importera","Print":"Skriv ut","Information":"Information"}')},"6ce2":function(e){e.exports=JSON.parse('{"Import":"Import","import_running":"Import läuft, bitte warten!","Import_finished":"Import fertig","View_Recipes":"Rezepte Ansehen","Information":"Information","all_fields_optional":"Alle Felder sind optional und können leer gelassen werden.","convert_internal":"Zu internem Rezept wandeln","Log_Recipe_Cooking":"Kochen protokollieren","External_Recipe_Image":"Externes Rezept Bild","Add_to_Book":"Zu Buch hinzufügen","Add_to_Shopping":"Zu Einkaufsliste hinzufügen","Add_to_Plan":"Zu Plan hinzufügen","Step_start_time":"Schritt Startzeit","Select_Book":"Buch wählen","Recipe_Image":"Rezept Bild","Log_Cooking":"Kochen protokollieren","Proteins":"Proteine","Fats":"Fette","Carbohydrates":"Kohlenhydrate","Calories":"Kalorien","Nutrition":"Nährwerte","Keywords":"Stichwörter","Books":"Bücher","show_only_internal":"Nur interne Rezepte anzeigen","Ingredients":"Zutaten","min":"Min","Servings":"Portionen","Waiting":"Wartezeit","Preparation":"Zubereitung","Edit":"Bearbeiten","Open":"Öffnen","Save":"Speichern","Step":"Schritt","Search":"Suchen","Print":"Drucken","New_Recipe":"Neues Rezept","Url_Import":"URL Import","Reset_Search":"Suche zurücksetzen","or":"oder","and":"und","Recently_Viewed":"Kürzlich angesehen","External":"Extern","Settings":"Einstellungen","Meal_Plan":"Speiseplan","Date":"Datum","Share":"Teilen","Export":"Exportieren","Rating":"Bewertung","Close":"Schließen","Add":"Hinzufügen"}')},"7c15":function(e,t,i){"use strict";i.d(t,"c",(function(){return s})),i.d(t,"d",(function(){return o})),i.d(t,"b",(function(){return c})),i.d(t,"a",(function(){return l}));var n=i("bc3a"),a=i.n(n),r=i("fa7d");function s(e){var t=Object(r["g"])("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),a.a.get(t).then((function(e){return e.data})).catch((function(e){d(e,"There was an error loading a resource!","danger")}))}function o(e){return a.a.post(Object(r["g"])("api:cooklog-list"),e).then((function(e){Object(r["f"])("Saved","Cook Log entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function c(e){return a.a.get(Object(r["g"])("api:recipebook-list")+"?query="+e).then((function(e){return e.data})).catch((function(e){}))}function l(e){return a.a.post(Object(r["g"])("api:recipebookentry-list"),e).then((function(e){Object(r["f"])("Saved","Recipe Book entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function d(e,t){if("response"in e){console.log(e.response);var i="statusText"in e.response?e.response.statusText:Object(r["e"])("Error");t+="\n\n"+JSON.stringify(e.response.data),Object(r["f"])(i,t,"danger")}else Object(r["f"])("Error",t,"danger"),console.log(e)}a.a.defaults.xsrfCookieName="csrftoken",a.a.defaults.xsrfHeaderName="X-CSRFTOKEN"},"81d5":function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.recipe.keywords.length>0?i("div",e._l(e.recipe.keywords,(function(t){return i("span",{key:t.id,staticStyle:{padding:"2px"}},[i("b-badge",{attrs:{pill:"",variant:"light"}},[e._v(e._s(t.label))])],1)})),0):e._e()},a=[],r={name:"Keywords",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},9225:function(e,t,i){"use strict";i("159b"),i("d3b7"),i("ddb0"),i("ac1f"),i("466d");var n=i("a026"),a=i("a925");function r(){var e=i("49f8"),t={};return e.keys().forEach((function(i){var n=i.match(/([A-Za-z0-9-_]+)\./i);if(n&&n.length>1){var a=n[1];t[a]=e(i)}})),t}n["default"].use(a["a"]),t["a"]=new a["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:r()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"row"},[i("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[i("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],r={name:"LoadingSpinner",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","err_deleting_resource":"There was an error deleting a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","success_deleting_resource":"Successfully deleted a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Load_More":"Load More","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Cancel":"Cancel","Delete":"Delete","Open":"Open","Ok":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,i){"use strict";i.d(t,"c",(function(){return r})),i.d(t,"f",(function(){return s})),i.d(t,"a",(function(){return o})),i.d(t,"e",(function(){return c})),i.d(t,"b",(function(){return l})),i.d(t,"g",(function(){return d})),i.d(t,"d",(function(){return u}));i("99af");var n=i("59e4");function a(e,t,i){var n=Math.floor(e),a=1,r=n+1,s=1;if(e!==n)while(a<=t&&s<=t){var o=(n+r)/(a+s);if(e===o){a+s<=t?(a+=s,n+=r,s=t+1):a>s?s=t+1:a=t+1;break}et&&(a=s,n=r),!i)return[0,n,a];var c=Math.floor(n/a);return[c,n-c*a,a]}var r={methods:{makeToast:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return s(e,t,i)}}};function s(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=new n["a"];a.$bvToast.toast(t,{title:e,variant:i,toaster:"b-toaster-top-center",solid:!0})}var o={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var l={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function u(e,t){if(p("use_fractions")){var i="",n=a(e*t,9,!0);return n[0]>0&&(i+=n[0]),n[1]>0&&(i+=" ".concat(n[1],"").concat(n[2],"")),i}return f(e*t)}function f(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fc0d:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("div",{staticClass:"dropdown"},[e._m(0),i("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e.$t("Edit")))]),e.recipe.internal?e._e():i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e.$t("convert_internal")))]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_add_book")}}},[i("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Book"))+" ")]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Shopping"))+" ")]):e._e(),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?recipe="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Plan"))+" ")]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[i("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e.$t("Log_Cooking"))+" ")]),i("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[i("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e.$t("Print"))+" ")]),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e.$t("Export")))]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e.$t("Share")))]):e._e()])]),i("cook-log",{attrs:{recipe:e.recipe}})],1)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[i("i",{staticClass:"fas fa-ellipsis-v"})])}],r=(i("a9e3"),i("fa7d")),s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e.$t("Log_Recipe_Cooking"),"ok-title":e.$t("Save"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.logCook()}}},[i("p",[e._v(e._s(e.$t("all_fields_optional")))]),i("form",[i("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e.$t("Servings")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),i("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e.$t("Rating"))+" - "),i("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),i("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),i("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e.$t("Date")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},o=[],c=i("c1df"),l=i.n(c),d=i("a026"),p=i("5f5b"),u=i("7c15");d["default"].prototype.moment=l.a,d["default"].use(p["a"]);var f={name:"CookLog",props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:l()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){Object(u["d"])(this.logObject)}}},_=f,m=i("2877"),g=Object(m["a"])(_,s,o,!1,null,null,null),v=g.exports,b={name:"RecipeContextMenu",mixins:[r["b"]],components:{CookLog:v},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},h=b,j=Object(m["a"])(h,n,a,!1,null,null,null);t["a"]=j.exports}}); \ No newline at end of file diff --git a/cookbook/static/vue/js/supermarket_view.js b/cookbook/static/vue/js/supermarket_view.js index ad1609b43..3302e1824 100644 --- a/cookbook/static/vue/js/supermarket_view.js +++ b/cookbook/static/vue/js/supermarket_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var n,a,c=t[0],s=t[1],u=t[2],p=0,h=[];p1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","err_deleting_resource":"There was an error deleting a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","success_deleting_resource":"Successfully deleted a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Cancel":"Cancel","Delete":"Delete","Open":"Open","Ok":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return c})),r.d(t,"e",(function(){return s})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var c=(n+o)/(i+a);if(e===c){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var s=Math.floor(n/i);return[s,n-s*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var c={methods:{_:function(e){return s(e)}}};function s(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}}}); \ No newline at end of file +(function(e){function t(t){for(var n,a,c=t[0],s=t[1],u=t[2],p=0,h=[];p1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","err_deleting_resource":"There was an error deleting a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","success_deleting_resource":"Successfully deleted a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Load_More":"Load More","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Cancel":"Cancel","Delete":"Delete","Open":"Open","Ok":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return c})),r.d(t,"e",(function(){return s})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var c=(n+o)/(i+a);if(e===c){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var s=Math.floor(n/i);return[s,n-s*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var c={methods:{_:function(e){return s(e)}}};function s(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}}}); \ No newline at end of file diff --git a/cookbook/static/vue/js/user_file_view.js b/cookbook/static/vue/js/user_file_view.js index 7d71298fe..d576e5bf5 100644 --- a/cookbook/static/vue/js/user_file_view.js +++ b/cookbook/static/vue/js/user_file_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var n,a,c=t[0],s=t[1],u=t[2],p=0,h=[];p1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","err_deleting_resource":"There was an error deleting a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","success_deleting_resource":"Successfully deleted a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Cancel":"Cancel","Delete":"Delete","Open":"Open","Ok":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return c})),r.d(t,"e",(function(){return s})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var c=(n+o)/(i+a);if(e===c){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var s=Math.floor(n/i);return[s,n-s*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var c={methods:{_:function(e){return s(e)}}};function s(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fd4d:function(e,t,r){"use strict";r.r(t);r("e260"),r("e6cf"),r("cca6"),r("a79d");var n=r("a026"),i=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{attrs:{id:"app"}},[r("div",{staticClass:"row"},[r("div",{staticClass:"col col-md-12"},[r("h3",[e._v(e._s(e.$t("Files"))+" "),r("span",{staticClass:"float-right"},[r("file-editor",{on:{change:function(t){return e.loadInitial()}}})],1)])])]),r("div",{staticClass:"row",staticStyle:{"margin-top":"2vh"}},[r("div",{staticClass:"col col-md-12"},[r("b-progress",{attrs:{max:e.max_file_size_mb}},[r("b-progress-bar",{attrs:{value:e.current_file_size_mb}},[r("span",[r("strong",{staticClass:"text-dark "},[e._v(e._s(e.current_file_size_mb.toFixed(2))+" / "+e._s(e.max_file_size_mb)+" MB")])])])],1)],1)]),r("div",{staticClass:"row",staticStyle:{"margin-top":"2vh"}},[r("div",{staticClass:"col col-md-12"},[r("table",{staticClass:"table"},[r("thead",[r("tr",[r("th",[e._v(e._s(e.$t("Name")))]),r("th",[e._v(e._s(e.$t("Size"))+" (MB)")]),r("th",[e._v(e._s(e.$t("Download")))]),r("th",[e._v(e._s(e.$t("Edit")))])])]),e._l(e.files,(function(t){return r("tr",{key:t.id},[r("td",[e._v(e._s(t.name))]),r("td",[e._v(e._s(t.file_size_kb/1e3))]),r("td",[r("a",{attrs:{href:t.file,target:"_blank",rel:"noreferrer nofollow"}},[e._v(e._s(e.$t("Download")))])]),r("td",[r("file-editor",{attrs:{file_id:t.id},on:{change:function(t){return e.loadInitial()}}})],1)])}))],2)])])])},o=[],a=r("5f5b"),c=(r("2dd8"),r("fa7d")),s=r("2b2d"),u=r("bc3a"),d=r.n(u),p=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("b-button",{directives:[{name:"b-modal",rawName:"v-b-modal",value:"modal-file-editor"+e.file_id,expression:"'modal-file-editor'+file_id"}],class:{"btn-success":void 0===e.file_id}},[this.file_id?[e._v(e._s(e.$t("Edit")))]:[e._v(e._s(e.$t("New")))]],2),r("b-modal",{attrs:{id:"modal-file-editor"+e.file_id,title:e.$t("File")},on:{ok:function(t){return e.modalOk()}},scopedSlots:e._u([{key:"modal-footer",fn:function(){return[r("b-button",{attrs:{size:"sm",variant:"success"},on:{click:function(t){return e.modalOk()}}},[e._v(" "+e._s(e.$t("Ok"))+" ")]),r("b-button",{attrs:{size:"sm",variant:"secondary"},on:{click:function(t){return e.$bvModal.hide("modal-file-editor"+e.file_id)}}},[e._v(" "+e._s(e.$t("Cancel"))+" ")]),r("b-button",{attrs:{size:"sm",variant:"danger"},on:{click:function(t){return e.deleteFile()}}},[e._v(" "+e._s(e.$t("Delete"))+" ")])]},proxy:!0}])},[void 0!==e.file?[e._v(" "+e._s(e.$t("Name"))+" "),r("b-input",{model:{value:e.file.name,callback:function(t){e.$set(e.file,"name",t)},expression:"file.name"}}),r("br"),e._v(" "+e._s(e.$t("File"))+" "),r("b-form-file",{model:{value:e.file.file,callback:function(t){e.$set(e.file,"file",t)},expression:"file.file"}})]:e._e(),r("br"),r("br")],2)],1)},h=[],b=(r("a9e3"),r("d3b7"),r("25f0"),r("b0c0"),{name:"FileEditor",data:function(){return{file:void 0}},props:{file_id:Number},mounted:function(){void 0!==this.file_id?this.loadFile(this.file_id.toString()):this.file={name:"",file:void 0}},methods:{loadFile:function(e){var t=this,r=new s["a"];r.retrieveUserFile(e).then((function(e){t.file=e.data}))},modalOk:function(){void 0===this.file_id?(console.log("CREATING"),this.createFile()):(console.log("UPDATING"),this.updateFile())},updateFile:function(){var e=this,t=new s["a"],r=void 0;"string"===typeof this.file.file||this.file.file instanceof String||(r=this.file.file),t.updateUserFile(this.file.id,this.file.name,r).then((function(t){Object(c["f"])(e.$t("Success"),e.$t("success_updating_resource"),"success"),e.$emit("change")})).catch((function(t){Object(c["f"])(e.$t("Error"),e.$t("err_updating_resource")+"\n"+t.response.data,"danger"),console.log(t.request,t.response)}))},createFile:function(){var e=this,t=new s["a"];t.createUserFile(this.file.name,this.file.file).then((function(t){Object(c["f"])(e.$t("Success"),e.$t("success_creating_resource"),"success"),e.$emit("change"),e.file={name:"",file:void 0}})).catch((function(t){Object(c["f"])(e.$t("Error"),e.$t("err_creating_resource")+"\n"+t.response.data,"danger"),console.log(t.request,t.response)}))},deleteFile:function(){var e=this,t=new s["a"];t.destroyUserFile(this.file.id).then((function(t){Object(c["f"])(e.$t("Success"),e.$t("success_deleting_resource"),"success"),e.$emit("change")})).catch((function(t){Object(c["f"])(e.$t("Error"),e.$t("err_deleting_resource")+"\n"+t.response.data,"danger"),console.log(t.request,t.response)}))}}}),f=b,l=r("2877"),O=Object(l["a"])(f,p,h,!1,null,null,null),j=O.exports;n["default"].use(a["a"]),d.a.defaults.xsrfHeaderName="X-CSRFToken",d.a.defaults.xsrfCookieName="csrftoken";var v={name:"UserFileView",mixins:[c["b"],c["c"]],components:{FileEditor:j},data:function(){return{files:[],current_file_size_mb:window.CURRENT_FILE_SIZE_MB,max_file_size_mb:window.MAX_FILE_SIZE_MB}},mounted:function(){this.$i18n.locale=window.CUSTOM_LOCALE,this.loadInitial()},methods:{loadInitial:function(){var e=this,t=new s["a"];t.listUserFiles().then((function(t){e.files=t.data}))}}},m=v,g=Object(l["a"])(m,i,o,!1,null,null,null),y=g.exports,P=r("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:P["a"],render:function(e){return e(y)}}).$mount("#app")}}); \ No newline at end of file +(function(e){function t(t){for(var n,a,c=t[0],s=t[1],u=t[2],p=0,h=[];p1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","err_deleting_resource":"There was an error deleting a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","success_deleting_resource":"Successfully deleted a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Load_More":"Load More","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Cancel":"Cancel","Delete":"Delete","Open":"Open","Ok":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return c})),r.d(t,"e",(function(){return s})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var c=(n+o)/(i+a);if(e===c){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var s=Math.floor(n/i);return[s,n-s*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var c={methods:{_:function(e){return s(e)}}};function s(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fd4d:function(e,t,r){"use strict";r.r(t);r("e260"),r("e6cf"),r("cca6"),r("a79d");var n=r("a026"),i=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{attrs:{id:"app"}},[r("div",{staticClass:"row"},[r("div",{staticClass:"col col-md-12"},[r("h3",[e._v(e._s(e.$t("Files"))+" "),r("span",{staticClass:"float-right"},[r("file-editor",{on:{change:function(t){return e.loadInitial()}}})],1)])])]),r("div",{staticClass:"row",staticStyle:{"margin-top":"2vh"}},[r("div",{staticClass:"col col-md-12"},[r("b-progress",{attrs:{max:e.max_file_size_mb}},[r("b-progress-bar",{attrs:{value:e.current_file_size_mb}},[r("span",[r("strong",{staticClass:"text-dark "},[e._v(e._s(e.current_file_size_mb.toFixed(2))+" / "+e._s(e.max_file_size_mb)+" MB")])])])],1)],1)]),r("div",{staticClass:"row",staticStyle:{"margin-top":"2vh"}},[r("div",{staticClass:"col col-md-12"},[r("table",{staticClass:"table"},[r("thead",[r("tr",[r("th",[e._v(e._s(e.$t("Name")))]),r("th",[e._v(e._s(e.$t("Size"))+" (MB)")]),r("th",[e._v(e._s(e.$t("Download")))]),r("th",[e._v(e._s(e.$t("Edit")))])])]),e._l(e.files,(function(t){return r("tr",{key:t.id},[r("td",[e._v(e._s(t.name))]),r("td",[e._v(e._s(t.file_size_kb/1e3))]),r("td",[r("a",{attrs:{href:t.file,target:"_blank",rel:"noreferrer nofollow"}},[e._v(e._s(e.$t("Download")))])]),r("td",[r("file-editor",{attrs:{file_id:t.id},on:{change:function(t){return e.loadInitial()}}})],1)])}))],2)])])])},o=[],a=r("5f5b"),c=(r("2dd8"),r("fa7d")),s=r("2b2d"),u=r("bc3a"),d=r.n(u),p=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("b-button",{directives:[{name:"b-modal",rawName:"v-b-modal",value:"modal-file-editor"+e.file_id,expression:"'modal-file-editor'+file_id"}],class:{"btn-success":void 0===e.file_id}},[this.file_id?[e._v(e._s(e.$t("Edit")))]:[e._v(e._s(e.$t("New")))]],2),r("b-modal",{attrs:{id:"modal-file-editor"+e.file_id,title:e.$t("File")},on:{ok:function(t){return e.modalOk()}},scopedSlots:e._u([{key:"modal-footer",fn:function(){return[r("b-button",{attrs:{size:"sm",variant:"success"},on:{click:function(t){return e.modalOk()}}},[e._v(" "+e._s(e.$t("Ok"))+" ")]),r("b-button",{attrs:{size:"sm",variant:"secondary"},on:{click:function(t){return e.$bvModal.hide("modal-file-editor"+e.file_id)}}},[e._v(" "+e._s(e.$t("Cancel"))+" ")]),r("b-button",{attrs:{size:"sm",variant:"danger"},on:{click:function(t){return e.deleteFile()}}},[e._v(" "+e._s(e.$t("Delete"))+" ")])]},proxy:!0}])},[void 0!==e.file?[e._v(" "+e._s(e.$t("Name"))+" "),r("b-input",{model:{value:e.file.name,callback:function(t){e.$set(e.file,"name",t)},expression:"file.name"}}),r("br"),e._v(" "+e._s(e.$t("File"))+" "),r("b-form-file",{model:{value:e.file.file,callback:function(t){e.$set(e.file,"file",t)},expression:"file.file"}})]:e._e(),r("br"),r("br")],2)],1)},h=[],b=(r("a9e3"),r("d3b7"),r("25f0"),r("b0c0"),{name:"FileEditor",data:function(){return{file:void 0}},props:{file_id:Number},mounted:function(){void 0!==this.file_id?this.loadFile(this.file_id.toString()):this.file={name:"",file:void 0}},methods:{loadFile:function(e){var t=this,r=new s["a"];r.retrieveUserFile(e).then((function(e){t.file=e.data}))},modalOk:function(){void 0===this.file_id?(console.log("CREATING"),this.createFile()):(console.log("UPDATING"),this.updateFile())},updateFile:function(){var e=this,t=new s["a"],r=void 0;"string"===typeof this.file.file||this.file.file instanceof String||(r=this.file.file),t.updateUserFile(this.file.id,this.file.name,r).then((function(t){Object(c["f"])(e.$t("Success"),e.$t("success_updating_resource"),"success"),e.$emit("change")})).catch((function(t){Object(c["f"])(e.$t("Error"),e.$t("err_updating_resource")+"\n"+t.response.data,"danger"),console.log(t.request,t.response)}))},createFile:function(){var e=this,t=new s["a"];t.createUserFile(this.file.name,this.file.file).then((function(t){Object(c["f"])(e.$t("Success"),e.$t("success_creating_resource"),"success"),e.$emit("change"),e.file={name:"",file:void 0}})).catch((function(t){Object(c["f"])(e.$t("Error"),e.$t("err_creating_resource")+"\n"+t.response.data,"danger"),console.log(t.request,t.response)}))},deleteFile:function(){var e=this,t=new s["a"];t.destroyUserFile(this.file.id).then((function(t){Object(c["f"])(e.$t("Success"),e.$t("success_deleting_resource"),"success"),e.$emit("change")})).catch((function(t){Object(c["f"])(e.$t("Error"),e.$t("err_deleting_resource")+"\n"+t.response.data,"danger"),console.log(t.request,t.response)}))}}}),f=b,l=r("2877"),O=Object(l["a"])(f,p,h,!1,null,null,null),j=O.exports;n["default"].use(a["a"]),d.a.defaults.xsrfHeaderName="X-CSRFToken",d.a.defaults.xsrfCookieName="csrftoken";var v={name:"UserFileView",mixins:[c["b"],c["c"]],components:{FileEditor:j},data:function(){return{files:[],current_file_size_mb:window.CURRENT_FILE_SIZE_MB,max_file_size_mb:window.MAX_FILE_SIZE_MB}},mounted:function(){this.$i18n.locale=window.CUSTOM_LOCALE,this.loadInitial()},methods:{loadInitial:function(){var e=this,t=new s["a"];t.listUserFiles().then((function(t){e.files=t.data}))}}},m=v,g=Object(l["a"])(m,i,o,!1,null,null,null),y=g.exports,P=r("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:P["a"],render:function(e){return e(y)}}).$mount("#app")}}); \ No newline at end of file diff --git a/cookbook/templates/url_import.html b/cookbook/templates/url_import.html index 5b136e231..7254839f5 100644 --- a/cookbook/templates/url_import.html +++ b/cookbook/templates/url_import.html @@ -66,58 +66,25 @@
- - +
diff --git a/vue/src/components/GenericContextMenu.vue b/vue/src/components/GenericContextMenu.vue new file mode 100644 index 000000000..9f8257a55 --- /dev/null +++ b/vue/src/components/GenericContextMenu.vue @@ -0,0 +1,38 @@ + + + \ No newline at end of file diff --git a/vue/src/components/GenericContextMenu.vue~working b/vue/src/components/GenericContextMenu.vue~working new file mode 100644 index 000000000..9f8257a55 --- /dev/null +++ b/vue/src/components/GenericContextMenu.vue~working @@ -0,0 +1,38 @@ + + + \ No newline at end of file diff --git a/vue/src/components/GenericMultiselect.vue b/vue/src/components/GenericMultiselect.vue index 504740394..ee51c74af 100644 --- a/vue/src/components/GenericMultiselect.vue +++ b/vue/src/components/GenericMultiselect.vue @@ -9,7 +9,7 @@ :placeholder="placeholder" :label="label" track-by="id" - :multiple="true" + :multiple="multiple" :loading="loading" @search-change="search" @input="selectionChanged"> @@ -35,13 +35,16 @@ export default { placeholder: String, search_function: String, label: String, - parent_variable: String, - initial_selection: Array, + parent_variable: {type: String, default: undefined}, + sticky_options: {type:Array, default(){return []}}, + initial_selection: {type:Array, default(){return []}}, + multiple: {type: Boolean, default: true}, + tree_api: {type: Boolean, default: false} // api requires params that are unique to TreeMixin }, watch: { initial_selection: function (newVal, oldVal) { // watch it this.selected_objects = newVal - } + }, }, mounted() { this.search('') @@ -49,10 +52,23 @@ export default { methods: { search: function (query) { let apiClient = new ApiApiFactory() + if (this.tree_api) { + let page = 1 + let root = undefined + let tree = undefined + let pageSize = 10 - apiClient[this.search_function]({query: {query: query, limit: 10}}).then(result => { - this.objects = result.data - }) + if (query === '') { + query = undefined + } + apiClient[this.search_function](query, root, tree, page, pageSize).then(result => { + this.objects = this.sticky_options.concat(result.data.results) + }) + } else { + apiClient[this.search_function]({query: {query: query, limit: 10}}).then(result => { + this.objects = this.sticky_options.concat(result.data) + }) + } }, selectionChanged: function () { this.$emit('change', {var: this.parent_variable, val: this.selected_objects}) diff --git a/vue/src/components/KeywordCard.vue b/vue/src/components/KeywordCard.vue new file mode 100644 index 000000000..7def60574 --- /dev/null +++ b/vue/src/components/KeywordCard.vue @@ -0,0 +1,213 @@ + + + + + \ No newline at end of file diff --git a/vue/src/components/RecipeCard.vue b/vue/src/components/RecipeCard.vue index 5bd946dfa..c64901f45 100644 --- a/vue/src/components/RecipeCard.vue +++ b/vue/src/components/RecipeCard.vue @@ -6,7 +6,7 @@ -
diff --git a/vue/src/locales/en.json b/vue/src/locales/en.json index 0cff07075..f00f36217 100644 --- a/vue/src/locales/en.json +++ b/vue/src/locales/en.json @@ -12,8 +12,7 @@ "all_fields_optional": "All fields are optional and can be left empty.", "convert_internal": "Convert to internal recipe", "show_only_internal": "Show only internal recipes", - - + "show_split_screen": "Show split view", "Log_Recipe_Cooking": "Log Recipe Cooking", "External_Recipe_Image": "External Recipe Image", @@ -33,6 +32,13 @@ "Reset_Search": "Reset Search", "Recently_Viewed": "Recently Viewed", "Load_More": "Load More", + "New_Keyword": "New Keyword", + "Delete_Keyword": "Delete Keyword", + "Edit_Keyword": "Edit Keyword", + "Move_Keyword": "Move Keyword", + "Merge_Keyword": "Merge Keyword", + "Hide_Keywords": "Hide Keywords", + "Hide_Recipes": "Hide Recipes", "Keywords": "Keywords", "Books": "Books", @@ -46,6 +52,7 @@ "Export": "Export", "Rating": "Rating", "Close": "Close", + "Cancel": "Cancel", "Add": "Add", "New": "New", "Success": "Success", @@ -63,7 +70,6 @@ "Files": "Files", "File": "File", "Edit": "Edit", - "Cancel": "Cancel", "Delete": "Delete", "Open": "Open", "Ok": "Open", @@ -76,5 +82,17 @@ "or": "or", "and": "and", "Information": "Information", - "Download": "Download" + "View": "View", + "Recipes": "Recipes", + "Move": "Move", + "Merge": "Merge", + "Parent": "Parent", + "delete_confimation": "Are you sure that you want to delete {kw} and all of it's children?", + "move_confirmation": "Move {child} to parent {parent}", + "merge_confirmation": "Replace {source} with {target}", + "move_selection": "Select a parent to move {child} to.", + "merge_selection": "Replace all occurences of {source} with the selected {type}.", + "Advanced Search Settings": "Advanced Search Settings", + "Download": "Download", + "Root": "Root" } \ No newline at end of file diff --git a/vue/src/sw.js b/vue/src/sw.js index 2bbc7f346..412586fdb 100644 --- a/vue/src/sw.js +++ b/vue/src/sw.js @@ -6,7 +6,8 @@ import {ExpirationPlugin} from 'workbox-expiration'; const OFFLINE_CACHE_NAME = 'offline-html'; -const OFFLINE_PAGE_URL = '/offline/'; +let script_name = typeof window !== 'undefined' ? localStorage.getItem('SCRIPT_NAME') : '/' +var OFFLINE_PAGE_URL = script_name + 'offline/'; self.addEventListener('install', async (event) => { event.waitUntil( diff --git a/vue/src/utils/openapi/api.ts b/vue/src/utils/openapi/api.ts index db1c90026..d23b6eb76 100644 --- a/vue/src/utils/openapi/api.ts +++ b/vue/src/utils/openapi/api.ts @@ -242,6 +242,30 @@ export interface ImportLogKeyword { * @memberof ImportLogKeyword */ description?: string; + /** + * + * @type {string} + * @memberof ImportLogKeyword + */ + image?: string; + /** + * + * @type {string} + * @memberof ImportLogKeyword + */ + parent?: string; + /** + * + * @type {number} + * @memberof ImportLogKeyword + */ + numchild?: number; + /** + * + * @type {string} + * @memberof ImportLogKeyword + */ + numrecipe?: string; /** * * @type {string} @@ -336,9 +360,40 @@ export interface InlineResponse200 { previous?: string | null; /** * - * @type {Array} + * @type {Array} * @memberof InlineResponse200 */ + results?: Array; +} +/** + * + * @export + * @interface InlineResponse2001 + */ +export interface InlineResponse2001 { + /** + * + * @type {number} + * @memberof InlineResponse2001 + */ + count?: number; + /** + * + * @type {string} + * @memberof InlineResponse2001 + */ + next?: string | null; + /** + * + * @type {string} + * @memberof InlineResponse2001 + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof InlineResponse2001 + */ results?: Array; } /** @@ -377,6 +432,30 @@ export interface Keyword { * @memberof Keyword */ description?: string; + /** + * + * @type {string} + * @memberof Keyword + */ + image?: string; + /** + * + * @type {string} + * @memberof Keyword + */ + parent?: string; + /** + * + * @type {number} + * @memberof Keyword + */ + numchild?: number; + /** + * + * @type {string} + * @memberof Keyword + */ + numrecipe?: string; /** * * @type {string} @@ -805,6 +884,30 @@ export interface RecipeKeywords { * @memberof RecipeKeywords */ description?: string; + /** + * + * @type {string} + * @memberof RecipeKeywords + */ + image?: string; + /** + * + * @type {string} + * @memberof RecipeKeywords + */ + parent?: string; + /** + * + * @type {number} + * @memberof RecipeKeywords + */ + numchild?: number; + /** + * + * @type {string} + * @memberof RecipeKeywords + */ + numrecipe?: string; /** * * @type {string} @@ -3700,11 +3803,16 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) }; }, /** - * optional parameters - **query**: search keywords for a string contained in the keyword name (case in-sensitive) - **limit**: limits the amount of returned results + * + * @param {string} [query] Query string matched against keyword name. + * @param {number} [root] Return first level children of keyword with ID [int]. Integer 0 will return root keywords. + * @param {number} [tree] Return all self and children of keyword with ID [int]. + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listKeywords: async (options: any = {}): Promise => { + listKeywords: async (query?: string, root?: number, tree?: number, page?: number, pageSize?: number, options: any = {}): Promise => { const localVarPath = `/api/keyword/`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -3717,6 +3825,26 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + if (query !== undefined) { + localVarQueryParameter['query'] = query; + } + + if (root !== undefined) { + localVarQueryParameter['root'] = root; + } + + if (tree !== undefined) { + localVarQueryParameter['tree'] = tree; + } + + if (page !== undefined) { + localVarQueryParameter['page'] = page; + } + + if (pageSize !== undefined) { + localVarQueryParameter['page_size'] = pageSize; + } + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); @@ -4334,6 +4462,88 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) options: localVarRequestOptions, }; }, + /** + * + * @param {string} id A unique integer value identifying this keyword. + * @param {string} target + * @param {Keyword} [keyword] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + mergeKeyword: async (id: string, target: string, keyword?: Keyword, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('mergeKeyword', 'id', id) + // verify required parameter 'target' is not null or undefined + assertParamExists('mergeKeyword', 'target', target) + const localVarPath = `/api/keyword/{id}/merge/{target}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))) + .replace(`{${"target"}}`, encodeURIComponent(String(target))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(keyword, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this keyword. + * @param {string} parent + * @param {Keyword} [keyword] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + moveKeyword: async (id: string, parent: string, keyword?: Keyword, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('moveKeyword', 'id', id) + // verify required parameter 'parent' is not null or undefined + assertParamExists('moveKeyword', 'parent', parent) + const localVarPath = `/api/keyword/{id}/move/{parent}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))) + .replace(`{${"parent"}}`, encodeURIComponent(String(parent))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(keyword, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @param {string} id A unique integer value identifying this bookmarklet import. @@ -7435,12 +7645,17 @@ export const ApiApiFp = function(configuration?: Configuration) { return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** - * optional parameters - **query**: search keywords for a string contained in the keyword name (case in-sensitive) - **limit**: limits the amount of returned results + * + * @param {string} [query] Query string matched against keyword name. + * @param {number} [root] Return first level children of keyword with ID [int]. Integer 0 will return root keywords. + * @param {number} [tree] Return all self and children of keyword with ID [int]. + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async listKeywords(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { - const localVarAxiosArgs = await localVarAxiosParamCreator.listKeywords(options); + async listKeywords(query?: string, root?: number, tree?: number, page?: number, pageSize?: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listKeywords(query, root, tree, page, pageSize, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** @@ -7495,7 +7710,7 @@ export const ApiApiFp = function(configuration?: Configuration) { * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async listRecipes(query?: string, keywords?: string, foods?: string, books?: string, keywordsOr?: string, foodsOr?: string, booksOr?: string, internal?: string, random?: string, page?: number, pageSize?: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + async listRecipes(query?: string, keywords?: string, foods?: string, books?: string, keywordsOr?: string, foodsOr?: string, booksOr?: string, internal?: string, random?: string, page?: number, pageSize?: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { const localVarAxiosArgs = await localVarAxiosParamCreator.listRecipes(query, keywords, foods, books, keywordsOr, foodsOr, booksOr, internal, random, page, pageSize, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, @@ -7625,6 +7840,30 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.listViewLogs(options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {string} id A unique integer value identifying this keyword. + * @param {string} target + * @param {Keyword} [keyword] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async mergeKeyword(id: string, target: string, keyword?: Keyword, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.mergeKeyword(id, target, keyword, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this keyword. + * @param {string} parent + * @param {Keyword} [keyword] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async moveKeyword(id: string, parent: string, keyword?: Keyword, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.moveKeyword(id, parent, keyword, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} id A unique integer value identifying this bookmarklet import. @@ -8865,12 +9104,17 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: return localVarFp.listIngredients(options).then((request) => request(axios, basePath)); }, /** - * optional parameters - **query**: search keywords for a string contained in the keyword name (case in-sensitive) - **limit**: limits the amount of returned results + * + * @param {string} [query] Query string matched against keyword name. + * @param {number} [root] Return first level children of keyword with ID [int]. Integer 0 will return root keywords. + * @param {number} [tree] Return all self and children of keyword with ID [int]. + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listKeywords(options?: any): AxiosPromise> { - return localVarFp.listKeywords(options).then((request) => request(axios, basePath)); + listKeywords(query?: string, root?: number, tree?: number, page?: number, pageSize?: number, options?: any): AxiosPromise { + return localVarFp.listKeywords(query, root, tree, page, pageSize, options).then((request) => request(axios, basePath)); }, /** * optional parameters - **from_date**: filter from (inclusive) a certain date onward - **to_date**: filter upward to (inclusive) certain date @@ -8920,7 +9164,7 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listRecipes(query?: string, keywords?: string, foods?: string, books?: string, keywordsOr?: string, foodsOr?: string, booksOr?: string, internal?: string, random?: string, page?: number, pageSize?: number, options?: any): AxiosPromise { + listRecipes(query?: string, keywords?: string, foods?: string, books?: string, keywordsOr?: string, foodsOr?: string, booksOr?: string, internal?: string, random?: string, page?: number, pageSize?: number, options?: any): AxiosPromise { return localVarFp.listRecipes(query, keywords, foods, books, keywordsOr, foodsOr, booksOr, internal, random, page, pageSize, options).then((request) => request(axios, basePath)); }, /** @@ -9035,6 +9279,28 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: listViewLogs(options?: any): AxiosPromise> { return localVarFp.listViewLogs(options).then((request) => request(axios, basePath)); }, + /** + * + * @param {string} id A unique integer value identifying this keyword. + * @param {string} target + * @param {Keyword} [keyword] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + mergeKeyword(id: string, target: string, keyword?: Keyword, options?: any): AxiosPromise { + return localVarFp.mergeKeyword(id, target, keyword, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this keyword. + * @param {string} parent + * @param {Keyword} [keyword] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + moveKeyword(id: string, parent: string, keyword?: Keyword, options?: any): AxiosPromise { + return localVarFp.moveKeyword(id, parent, keyword, options).then((request) => request(axios, basePath)); + }, /** * * @param {string} id A unique integer value identifying this bookmarklet import. @@ -10308,13 +10574,18 @@ export class ApiApi extends BaseAPI { } /** - * optional parameters - **query**: search keywords for a string contained in the keyword name (case in-sensitive) - **limit**: limits the amount of returned results + * + * @param {string} [query] Query string matched against keyword name. + * @param {number} [root] Return first level children of keyword with ID [int]. Integer 0 will return root keywords. + * @param {number} [tree] Return all self and children of keyword with ID [int]. + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof ApiApi */ - public listKeywords(options?: any) { - return ApiApiFp(this.configuration).listKeywords(options).then((request) => request(this.axios, this.basePath)); + public listKeywords(query?: string, root?: number, tree?: number, page?: number, pageSize?: number, options?: any) { + return ApiApiFp(this.configuration).listKeywords(query, root, tree, page, pageSize, options).then((request) => request(this.axios, this.basePath)); } /** @@ -10518,6 +10789,32 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).listViewLogs(options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {string} id A unique integer value identifying this keyword. + * @param {string} target + * @param {Keyword} [keyword] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public mergeKeyword(id: string, target: string, keyword?: Keyword, options?: any) { + return ApiApiFp(this.configuration).mergeKeyword(id, target, keyword, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this keyword. + * @param {string} parent + * @param {Keyword} [keyword] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public moveKeyword(id: string, parent: string, keyword?: Keyword, options?: any) { + return ApiApiFp(this.configuration).moveKeyword(id, parent, keyword, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} id A unique integer value identifying this bookmarklet import. diff --git a/vue/src/utils/openapi/base.ts b/vue/src/utils/openapi/base.ts index 762445b6a..61f30009f 100644 --- a/vue/src/utils/openapi/base.ts +++ b/vue/src/utils/openapi/base.ts @@ -10,15 +10,16 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. - */ + */ import { Configuration } from "./configuration"; -// Some imports not used depending on template conditions +// Some imports not used depending on template conditions // @ts-ignore import globalAxios, { AxiosPromise, AxiosInstance } from 'axios'; -export const BASE_PATH = location.protocol + '//' + location.host; //TODO manually edited. Find good solution to automate later, remove from openapi-generator-ignore afterwards +//export const BASE_PATH = location.protocol + '//' + location.host; //TODO manually edited. Find good solution to automate later, remove from openapi-generator-ignore afterwards +export let BASE_PATH = typeof window !== 'undefined' ? localStorage.getItem('BASE_PATH') || '' : location.protocol + '//' + location.host; /** * diff --git a/vue/src/utils/utils.js b/vue/src/utils/utils.js index 96fe8c14f..5422f1cf1 100644 --- a/vue/src/utils/utils.js +++ b/vue/src/utils/utils.js @@ -60,10 +60,18 @@ export const ResolveUrlMixin = { } export function resolveDjangoUrl(url, params = null) { - if (params !== null) { - return window.Urls[url](params) - } else { + if (params == null) { return window.Urls[url]() + } else if (typeof(params) != "object") { + return window.Urls[url](params) + } else if (typeof(params) == "object") { + if (params.length === 1) { + return window.Urls[url](params) + } else if (params.length === 2) { + return window.Urls[url](params[0],params[1]) + } else if (params.length === 3) { + return window.Urls[url](params[0],params[1],params[2]) + } } } diff --git a/vue/tsconfig.json b/vue/tsconfig.json index 9ee364137..63fe664a2 100644 --- a/vue/tsconfig.json +++ b/vue/tsconfig.json @@ -33,7 +33,7 @@ "src/**/*.vue", "tests/**/*.ts", "tests/**/*.tsx" - ], +, "src/directives/OutsideClick.js" ], "exclude": [ "node_modules" ] diff --git a/vue/vue.config.js b/vue/vue.config.js index 1e12e6018..5a0c7b4f3 100644 --- a/vue/vue.config.js +++ b/vue/vue.config.js @@ -25,6 +25,10 @@ const pages = { entry: './src/apps/UserFileView/main.js', chunks: ['chunk-vendors'] }, + 'keyword_list_view': { + entry: './src/apps/KeywordListView/main.js', + chunks: ['chunk-vendors'] + }, } module.exports = { diff --git a/vue/webpack-stats.json b/vue/webpack-stats.json index ba0d5eafa..793d46a94 100644 --- a/vue/webpack-stats.json +++ b/vue/webpack-stats.json @@ -1 +1 @@ -{"status":"done","chunks":{"recipe_search_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/recipe_search_view.js"],"recipe_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/recipe_view.js"],"offline_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/offline_view.js"],"import_response_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/import_response_view.js"],"supermarket_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/supermarket_view.js"],"user_file_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/user_file_view.js"]},"assets":{"../../templates/sw.js":{"name":"../../templates/sw.js","path":"..\\..\\templates\\sw.js"},"css/chunk-vendors.css":{"name":"css/chunk-vendors.css","path":"css\\chunk-vendors.css"},"js/chunk-vendors.js":{"name":"js/chunk-vendors.js","path":"js\\chunk-vendors.js"},"js/import_response_view.js":{"name":"js/import_response_view.js","path":"js\\import_response_view.js"},"js/offline_view.js":{"name":"js/offline_view.js","path":"js\\offline_view.js"},"js/recipe_search_view.js":{"name":"js/recipe_search_view.js","path":"js\\recipe_search_view.js"},"js/recipe_view.js":{"name":"js/recipe_view.js","path":"js\\recipe_view.js"},"js/supermarket_view.js":{"name":"js/supermarket_view.js","path":"js\\supermarket_view.js"},"js/user_file_view.js":{"name":"js/user_file_view.js","path":"js\\user_file_view.js"},"recipe_search_view.html":{"name":"recipe_search_view.html","path":"recipe_search_view.html"},"recipe_view.html":{"name":"recipe_view.html","path":"recipe_view.html"},"offline_view.html":{"name":"offline_view.html","path":"offline_view.html"},"import_response_view.html":{"name":"import_response_view.html","path":"import_response_view.html"},"supermarket_view.html":{"name":"supermarket_view.html","path":"supermarket_view.html"},"user_file_view.html":{"name":"user_file_view.html","path":"user_file_view.html"},"manifest.json":{"name":"manifest.json","path":"manifest.json"}}} \ No newline at end of file +{"status":"done","chunks":{"recipe_search_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/recipe_search_view.js"],"recipe_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/recipe_view.js"],"offline_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/offline_view.js"],"import_response_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/import_response_view.js"],"supermarket_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/supermarket_view.js"],"user_file_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/user_file_view.js"],"keyword_list_view":["css/chunk-vendors.css","js/chunk-vendors.js","css/keyword_list_view.css","js/keyword_list_view.js"]},"assets":{"../../templates/sw.js":{"name":"../../templates/sw.js","path":"../../templates/sw.js"},"css/chunk-vendors.css":{"name":"css/chunk-vendors.css","path":"css/chunk-vendors.css"},"js/chunk-vendors.js":{"name":"js/chunk-vendors.js","path":"js/chunk-vendors.js"},"js/import_response_view.js":{"name":"js/import_response_view.js","path":"js/import_response_view.js"},"css/keyword_list_view.css":{"name":"css/keyword_list_view.css","path":"css/keyword_list_view.css"},"js/keyword_list_view.js":{"name":"js/keyword_list_view.js","path":"js/keyword_list_view.js"},"js/offline_view.js":{"name":"js/offline_view.js","path":"js/offline_view.js"},"js/recipe_search_view.js":{"name":"js/recipe_search_view.js","path":"js/recipe_search_view.js"},"js/recipe_view.js":{"name":"js/recipe_view.js","path":"js/recipe_view.js"},"js/supermarket_view.js":{"name":"js/supermarket_view.js","path":"js/supermarket_view.js"},"js/user_file_view.js":{"name":"js/user_file_view.js","path":"js/user_file_view.js"},"recipe_search_view.html":{"name":"recipe_search_view.html","path":"recipe_search_view.html"},"recipe_view.html":{"name":"recipe_view.html","path":"recipe_view.html"},"offline_view.html":{"name":"offline_view.html","path":"offline_view.html"},"import_response_view.html":{"name":"import_response_view.html","path":"import_response_view.html"},"supermarket_view.html":{"name":"supermarket_view.html","path":"supermarket_view.html"},"user_file_view.html":{"name":"user_file_view.html","path":"user_file_view.html"},"keyword_list_view.html":{"name":"keyword_list_view.html","path":"keyword_list_view.html"},"manifest.json":{"name":"manifest.json","path":"manifest.json"}}} \ No newline at end of file diff --git a/vue/yarn.lock b/vue/yarn.lock index a3d6ea4d8..3a2023235 100644 --- a/vue/yarn.lock +++ b/vue/yarn.lock @@ -42,6 +42,15 @@ semver "^6.3.0" source-map "^0.5.0" +"@babel/eslint-parser@^7.13.14": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.14.4.tgz#73e6996163a2ad48f315a8466b55f57c330cd15c" + integrity sha512-7CTckFLPBGEfCKqlrnJq2PIId3UmJ5hW+D4dsv/VvuA5DapgqyZFCttq+8oeRIJMZQizFIe5gel3xm2SbrqlYA== + dependencies: + eslint-scope "^5.1.0" + eslint-visitor-keys "^2.1.0" + semver "^6.3.0" + "@babel/generator@^7.14.2", "@babel/generator@^7.14.3": version "7.14.3" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.3.tgz#0c2652d91f7bddab7cccc6ba8157e4f40dcedb91" @@ -872,7 +881,7 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/runtime@^7.11.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.11.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6" integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA== @@ -995,6 +1004,17 @@ js-yaml "^3.13.1" json5 "^2.1.1" +"@kevinfaguiar/vue-twemoji-picker@^5.7.4": + version "5.7.4" + resolved "https://registry.yarnpkg.com/@kevinfaguiar/vue-twemoji-picker/-/vue-twemoji-picker-5.7.4.tgz#76dd0a2dc9cc350af0886eae985492c868b02e49" + integrity sha512-5E3hdAP7wFnY9DOEtQNEpW8uXKcw3ed3AjXQaJqpF/qwNgxwTRiJeqGhFZW1nKhEC5fRscpSm2JphKQENFMyEQ== + dependencies: + "@popperjs/core" "^2.4.0" + lodash.pick "^4.4.0" + twemoji "^13.0.0" + twitter-text "^3.1.0" + vue-clickaway "^2.2.2" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -1038,6 +1058,11 @@ consola "^2.15.0" node-fetch "^2.6.1" +"@popperjs/core@^2.4.0": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.9.2.tgz#adea7b6953cbb34651766b0548468e743c6a2353" + integrity sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q== + "@rollup/plugin-babel@^5.2.0": version "5.3.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz#9cb1c5146ddd6a4968ad96f209c50c62f92f9879" @@ -3186,7 +3211,7 @@ core-js-compat@^3.6.5, core-js-compat@^3.9.0, core-js-compat@^3.9.1: browserslist "^4.16.6" semver "7.0.0" -core-js@^2.4.0: +core-js@^2.4.0, core-js@^2.5.0: version "2.6.12" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== @@ -3346,7 +3371,7 @@ css-select-base-adapter@^0.1.1: resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== -css-select@^2.0.0, css-select@^2.0.2: +css-select@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== @@ -3356,6 +3381,17 @@ css-select@^2.0.0, css-select@^2.0.2: domutils "^1.7.0" nth-check "^1.0.2" +css-select@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" + integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== + dependencies: + boolbase "^1.0.0" + css-what "^5.0.0" + domhandler "^4.2.0" + domutils "^2.6.0" + nth-check "^2.0.0" + css-tree@1.0.0-alpha.37: version "1.0.0-alpha.37" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" @@ -3377,6 +3413,11 @@ css-what@^3.2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== +css-what@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" + integrity sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg== + cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" @@ -3679,7 +3720,7 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-converter@^0.2: +dom-converter@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== @@ -3694,29 +3735,38 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" +dom-serializer@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@1, domelementtype@^1.3.1: +domelementtype@1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== -domelementtype@^2.0.1: +domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== +domhandler@^4.0.0, domhandler@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.0.tgz#f9768a5f034be60a89a27c2e4d0f74eba0d8b059" + integrity sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA== dependencies: - domelementtype "1" + domelementtype "^2.2.0" -domutils@^1.5.1, domutils@^1.7.0: +domutils@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== @@ -3724,6 +3774,15 @@ domutils@^1.5.1, domutils@^1.7.0: dom-serializer "0" domelementtype "1" +domutils@^2.5.2, domutils@^2.6.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.7.0.tgz#8ebaf0c41ebafcf55b0b72ec31c56323712c5442" + integrity sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + dot-object@^1.7.1: version "1.9.0" resolved "https://registry.yarnpkg.com/dot-object/-/dot-object-1.9.0.tgz#6e3d6d8379f794c5174599ddf05528f5990f076e" @@ -3853,11 +3912,6 @@ enquirer@^2.3.5: dependencies: ansi-colors "^4.1.1" -entities@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - entities@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" @@ -3964,7 +4018,7 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.0.0, eslint-scope@^5.1.1: +eslint-scope@^5.0.0, eslint-scope@^5.1.0, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -3991,7 +4045,7 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint-visitor-keys@^2.0.0: +eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== @@ -4577,7 +4631,7 @@ fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^8.1.0: +fs-extra@^8.0.1, fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== @@ -5012,17 +5066,15 @@ html-webpack-plugin@^3.2.0: toposort "^1.0.0" util.promisify "1.0.0" -htmlparser2@^3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" http-deceiver@^1.2.7: version "1.2.7" @@ -5674,16 +5726,16 @@ js-queue@2.0.2: dependencies: easy-stack "^1.0.1" +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -5773,6 +5825,15 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-5.0.0.tgz#e6b718f73da420d612823996fdf14a03f6ff6922" + integrity sha512-NQRZ5CRo74MhMMC3/3r5g2k4fjodJ/wh8MxjFbCViWKFjxrnudWSY5vomh+23ZaXzAS7J3fBZIR2dV6WbmfM0w== + dependencies: + universalify "^0.1.2" + optionalDependencies: + graceful-fs "^4.1.6" + jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -5970,6 +6031,11 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash.pick@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" + integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -6022,6 +6088,13 @@ loglevel@^1.6.8: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== +loose-envify@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + lower-case@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" @@ -6538,6 +6611,13 @@ nth-check@^1.0.2: dependencies: boolbase "~1.0.0" +nth-check@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" + integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== + dependencies: + boolbase "^1.0.0" + num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" @@ -7523,7 +7603,7 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^1.2.4: +punycode@1.4.1, punycode@^1.2.4: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= @@ -7629,7 +7709,7 @@ read-pkg@^5.1.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: +readable-stream@^3.0.6, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -7739,15 +7819,15 @@ remove-trailing-separator@^1.0.1: integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= renderkid@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.5.tgz#483b1ac59c6601ab30a7a596a5965cabccfdd0a5" - integrity sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ== + version "2.0.6" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.6.tgz#aaf875a67f2d1705821a22b64515db6d9e025fd2" + integrity sha512-GIis2GBr/ho0pFNf57D4XM4+PgnQuTii0WCPjEZmZfKivzUfGuRdjN2aQYtYMiNggHmNyBve+thFnNR1iBRcKg== dependencies: - css-select "^2.0.2" - dom-converter "^0.2" - htmlparser2 "^3.10.1" - lodash "^4.17.20" - strip-ansi "^3.0.0" + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.0" repeat-element@^1.1.2: version "1.1.4" @@ -8967,6 +9047,36 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +twemoji-parser@13.1.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/twemoji-parser/-/twemoji-parser-13.1.0.tgz#65e7e449c59258791b22ac0b37077349127e3ea4" + integrity sha512-AQOzLJpYlpWMy8n+0ATyKKZzWlZBJN+G0C+5lhX7Ftc2PeEVdUU/7ns2Pn2vVje26AIZ/OHwFoUbdv6YYD/wGg== + +twemoji-parser@^11.0.2: + version "11.0.2" + resolved "https://registry.yarnpkg.com/twemoji-parser/-/twemoji-parser-11.0.2.tgz#24e87c2008abe8544c962f193b88b331de32b446" + integrity sha512-5kO2XCcpAql6zjdLwRwJjYvAZyDy3+Uj7v1ipBzLthQmDL7Ce19bEqHr3ImSNeoSW2OA8u02XmARbXHaNO8GhA== + +twemoji@^13.0.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/twemoji/-/twemoji-13.1.0.tgz#65bb71e966dae56f0d42c30176f04cbdae109913" + integrity sha512-e3fZRl2S9UQQdBFLYXtTBT6o4vidJMnpWUAhJA+yLGR+kaUTZAt3PixC0cGvvxWSuq2MSz/o0rJraOXrWw/4Ew== + dependencies: + fs-extra "^8.0.1" + jsonfile "^5.0.0" + twemoji-parser "13.1.0" + universalify "^0.1.2" + +twitter-text@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/twitter-text/-/twitter-text-3.1.0.tgz#798e932b289f506efe2a1f03fe917ba30627f125" + integrity sha512-nulfUi3FN6z0LUjYipJid+eiwXvOLb8Ass7Jy/6zsXmZK3URte043m8fL3FyDzrK+WLpyqhHuR/TcARTN/iuGQ== + dependencies: + "@babel/runtime" "^7.3.1" + core-js "^2.5.0" + punycode "1.4.1" + twemoji-parser "^11.0.2" + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -9106,7 +9216,7 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" -universalify@^0.1.0: +universalify@^0.1.0, universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== @@ -9294,6 +9404,13 @@ vue-cli-plugin-i18n@^2.1.1: vue-i18n "^8.17.0" vue-i18n-extract "1.0.2" +vue-clickaway@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/vue-clickaway/-/vue-clickaway-2.2.2.tgz#cecf6839575e8b2afc5d3edb3efb616d293dbb44" + integrity sha512-25SpjXKetL06GLYoLoC8pqAV6Cur9cQ//2g35GRFBV4FgoljbZZjTINR8g2NuVXXDMLSUXaKx5dutgO4PaDE7A== + dependencies: + loose-envify "^1.2.0" + vue-cookies@^1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/vue-cookies/-/vue-cookies-1.7.4.tgz#d241d0a0431da0795837651d10b4d73e7c8d3e8d" @@ -9338,6 +9455,11 @@ vue-i18n@^8.17.0, vue-i18n@^8.24.4: resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.24.4.tgz#b158614c1df7db183d9cadddbb73e1d540269492" integrity sha512-RZE94WUAGxEiBAANxQ0pptbRwDkNKNSXl3fnJslpFOxVMF6UkUtMDSuYGuW2blDrVgweIXVpethOVkYoNNT9xw== +vue-infinite-loading@^2.4.5: + version "2.4.5" + resolved "https://registry.yarnpkg.com/vue-infinite-loading/-/vue-infinite-loading-2.4.5.tgz#cc20fd40af7f20188006443c99b60470cf1de1b3" + integrity sha512-xhq95Mxun060bRnsOoLE2Be6BR7jYwuC89kDe18+GmCLVrRA/dU0jrGb12Xu6NjmKs+iTW0AA6saSEmEW4cR7g== + "vue-loader-v16@npm:vue-loader@^16.1.0": version "16.2.0" resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-16.2.0.tgz#046a53308dd47e58efe20ddec1edec027ce3b46e" diff --git a/yarn.lock b/yarn.lock index 811e3f940..fb57ccd13 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,3 @@ # yarn lockfile v1 -vue-cookies@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/vue-cookies/-/vue-cookies-1.7.4.tgz#d241d0a0431da0795837651d10b4d73e7c8d3e8d" - integrity sha512-mOS5Btr8V9zvAtkmQ7/TfqJIropOx7etDAgBywPCmHjvfJl2gFbH2XgoMghleLoyyMTi5eaJss0mPN7arMoslA== From 9856857c518066b911a7db67df001a56d0ede56e Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Fri, 11 Jun 2021 15:28:11 +0200 Subject: [PATCH 29/97] updated openeats importer --- cookbook/helper/ingredient_parser.py | 4 ++++ cookbook/integration/integration.py | 4 +++- docs/features/import_export.md | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/cookbook/helper/ingredient_parser.py b/cookbook/helper/ingredient_parser.py index 61d2a9db2..b773c2f4c 100644 --- a/cookbook/helper/ingredient_parser.py +++ b/cookbook/helper/ingredient_parser.py @@ -163,6 +163,8 @@ def parse(x): # small utility functions to prevent emtpy unit/food creation def get_unit(unit, space): + if not unit: + return None if len(unit) > 0: u, created = Unit.objects.get_or_create(name=unit, space=space) return u @@ -170,6 +172,8 @@ def get_unit(unit, space): def get_food(food, space): + if not food: + return None if len(food) > 0: f, created = Food.objects.get_or_create(name=food, space=space) return f diff --git a/cookbook/integration/integration.py b/cookbook/integration/integration.py index fb48308c0..3dbb0f290 100644 --- a/cookbook/integration/integration.py +++ b/cookbook/integration/integration.py @@ -160,6 +160,9 @@ class Integration: except BadZipFile: il.msg += 'ERROR ' + _( 'Importer expected a .zip file. Did you choose the correct importer type for your data ?') + '\n' + except: + il.msg += 'ERROR ' + _( + 'An unexpected error occurred during the import. Please make sure you have uploaded a valid file.') + '\n' if len(self.ignored_recipes) > 0: il.msg += '\n' + _( @@ -217,4 +220,3 @@ class Integration: - data - string content for file to get created in export zip """ raise NotImplementedError('Method not implemented in integration') - diff --git a/docs/features/import_export.md b/docs/features/import_export.md index fc766bb40..90612af25 100644 --- a/docs/features/import_export.md +++ b/docs/features/import_export.md @@ -172,6 +172,7 @@ This zip file can simply be imported into Tandoor. OpenEats does not provide any way to export the data using the interface. Luckily it is relatively easy to export it from the command line. You need to run the command `python manage.py dumpdata recipe ingredient` inside of the application api container. If you followed the default installation method you can use the following command `docker-compose -f docker-prod.yml run --rm --entrypoint 'sh' api ./manage.py dumpdata recipe ingredient`. +This command might also work `docker exec -it openeats_api_1 ./manage.py dumpdata recipe ingredient > recipe_ingredients.json` Store the outputted json string in a `.json` file and simply import it using the importer. The file should look something like this ```json From fa12d02a3d4b6bb40218211bd9a951e033e407db Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Sat, 12 Jun 2021 20:22:30 +0200 Subject: [PATCH 30/97] fixed tests --- cookbook/serializer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cookbook/serializer.py b/cookbook/serializer.py index f64e0a9f0..55ead3218 100644 --- a/cookbook/serializer.py +++ b/cookbook/serializer.py @@ -295,7 +295,7 @@ class StepSerializer(WritableNestedModelSerializer): ingredients = IngredientSerializer(many=True) ingredients_markdown = serializers.SerializerMethodField('get_ingredients_markdown') ingredients_vue = serializers.SerializerMethodField('get_ingredients_vue') - file = UserFileViewSerializer(allow_null=True) + file = UserFileViewSerializer(allow_null=True, required=False) def get_ingredients_vue(self, obj): return obj.get_instruction_render() From 9751821f7626cf35140c50717259ab7224e353b7 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Sat, 12 Jun 2021 20:30:41 +0200 Subject: [PATCH 31/97] updated base language files --- cookbook/locale/ca/LC_MESSAGES/django.po | 1244 +++++++++++++----- cookbook/locale/de/LC_MESSAGES/django.po | 1278 +++++++++++++----- cookbook/locale/en/LC_MESSAGES/django.po | 1143 ++++++++++++----- cookbook/locale/es/LC_MESSAGES/django.po | 1257 +++++++++++++----- cookbook/locale/fr/LC_MESSAGES/django.po | 1241 +++++++++++++----- cookbook/locale/hu_HU/LC_MESSAGES/django.po | 1147 ++++++++++++----- cookbook/locale/it/LC_MESSAGES/django.po | 1272 +++++++++++++----- cookbook/locale/lv/LC_MESSAGES/django.po | 1239 +++++++++++++----- cookbook/locale/nl/LC_MESSAGES/django.po | 1282 ++++++++++++++----- cookbook/locale/pt/LC_MESSAGES/django.po | 1204 ++++++++++++----- cookbook/locale/rn/LC_MESSAGES/django.po | 1143 ++++++++++++----- cookbook/locale/tr/LC_MESSAGES/django.po | 1143 ++++++++++++----- cookbook/locale/zh_CN/LC_MESSAGES/django.po | 1143 ++++++++++++----- recipes/locale/ca/LC_MESSAGES/django.po | 22 +- recipes/locale/de/LC_MESSAGES/django.po | 22 +- recipes/locale/en/LC_MESSAGES/django.po | 22 +- recipes/locale/es/LC_MESSAGES/django.po | 22 +- recipes/locale/fr/LC_MESSAGES/django.po | 22 +- recipes/locale/hu_HU/LC_MESSAGES/django.po | 22 +- recipes/locale/it/LC_MESSAGES/django.po | 22 +- recipes/locale/lv/LC_MESSAGES/django.po | 22 +- recipes/locale/nl/LC_MESSAGES/django.po | 22 +- recipes/locale/pt/LC_MESSAGES/django.po | 22 +- recipes/locale/rn/LC_MESSAGES/django.po | 22 +- recipes/locale/tr/LC_MESSAGES/django.po | 22 +- recipes/locale/zh_CN/LC_MESSAGES/django.po | 22 +- 26 files changed, 11460 insertions(+), 4562 deletions(-) diff --git a/cookbook/locale/ca/LC_MESSAGES/django.po b/cookbook/locale/ca/LC_MESSAGES/django.po index c8c04e8f6..293d5a716 100644 --- a/cookbook/locale/ca/LC_MESSAGES/django.po +++ b/cookbook/locale/ca/LC_MESSAGES/django.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: 2020-06-02 19:28+0000\n" "Last-Translator: Miguel Canteras , 2021\n" "Language-Team: Catalan (https://www.transifex.com/django-recipes/" @@ -24,14 +24,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:91 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 +#: .\cookbook\templates\forms\edit_internal_recipe.html:246 #: .\cookbook\templates\forms\ingredients.html:34 -#: .\cookbook\templates\stats.html:28 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\space.html:37 .\cookbook\templates\stats.html:28 +#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 msgid "Ingredients" msgstr "Ingredients" -#: .\cookbook\forms.py:45 +#: .\cookbook\forms.py:49 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" @@ -39,13 +40,13 @@ msgstr "" "Color de la barra de navegació superior. No tots els colors funcionen amb " "tots els temes, només cal provar-los." -#: .\cookbook\forms.py:46 +#: .\cookbook\forms.py:51 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" "Unitat per defecte que s'utilitzarà quan s'insereixi un ingredient nou en " "una recepta." -#: .\cookbook\forms.py:47 +#: .\cookbook\forms.py:53 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" @@ -53,7 +54,7 @@ msgstr "" "Permet l'ús de fraccions de quantitats d'ingredients (p.ex.: converteix els " "decimals a fraccions automàticament)" -#: .\cookbook\forms.py:48 +#: .\cookbook\forms.py:56 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." @@ -61,19 +62,19 @@ msgstr "" "Els usuaris que han creat elements d'un pla de menjars/llistat de compra " "s'haurien de compartir per defecte." -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:58 msgid "Show recently viewed recipes on search page." msgstr "Mostra les receptes vistes recentment a la pàgina de cerca." -#: .\cookbook\forms.py:50 +#: .\cookbook\forms.py:59 msgid "Number of decimals to round ingredients." msgstr "Nombre de decimals dels ingredients." -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:60 msgid "If you want to be able to create and see comments underneath recipes." msgstr "Si vols poder crear i veure comentaris a sota de les receptes." -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:62 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -86,11 +87,11 @@ msgstr "" "diverses persones, però pot fer servir una mica de dades mòbils. Si és " "inferior al límit d’instància, es restablirà quan es desa." -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:65 msgid "Makes the navbar stick to the top of the page." msgstr "" -#: .\cookbook\forms.py:72 +#: .\cookbook\forms.py:81 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" @@ -98,91 +99,94 @@ msgstr "" "Tots dos camps són opcionals. Si no se'n dóna cap, es mostrarà el nom " "d'usuari" -#: .\cookbook\forms.py:93 .\cookbook\forms.py:315 -#: .\cookbook\templates\forms\edit_internal_recipe.html:45 +#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "Nom" -#: .\cookbook\forms.py:94 .\cookbook\forms.py:316 -#: .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:81 -#: .\cookbook\templates\stats.html:24 .\cookbook\templates\url_import.html:202 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 +#: .\cookbook\templates\base.html:105 +#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\templates\space.html:33 .\cookbook\templates\stats.html:24 +#: .\cookbook\templates\url_import.html:188 +#: .\cookbook\templates\url_import.html:573 msgid "Keywords" msgstr "Paraules clau" -#: .\cookbook\forms.py:95 +#: .\cookbook\forms.py:104 msgid "Preparation time in minutes" msgstr "Temps de preparació en minuts" -#: .\cookbook\forms.py:96 +#: .\cookbook\forms.py:105 msgid "Waiting time (cooking/baking) in minutes" msgstr "Temps d'espera (cocció/fornejat) en minuts" -#: .\cookbook\forms.py:97 .\cookbook\forms.py:317 +#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 msgid "Path" msgstr "Ruta" -#: .\cookbook\forms.py:98 +#: .\cookbook\forms.py:107 msgid "Storage UID" msgstr "UID Emmagatzematge" -#: .\cookbook\forms.py:121 +#: .\cookbook\forms.py:133 msgid "Default" msgstr "Per defecte" -#: .\cookbook\forms.py:130 +#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:149 +#: .\cookbook\forms.py:164 msgid "New Unit" msgstr "Nova Unitat" -#: .\cookbook\forms.py:150 +#: .\cookbook\forms.py:165 msgid "New unit that other gets replaced by." msgstr "Nova unitat per la qual se substitueix una altra." -#: .\cookbook\forms.py:155 +#: .\cookbook\forms.py:170 msgid "Old Unit" msgstr "Unitat Antiga" -#: .\cookbook\forms.py:156 +#: .\cookbook\forms.py:171 msgid "Unit that should be replaced." msgstr "Unitat que s’hauria de substituir." -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:187 msgid "New Food" msgstr "Menjar Nou" -#: .\cookbook\forms.py:173 +#: .\cookbook\forms.py:188 msgid "New food that other gets replaced by." msgstr "Nou menjar que altres substitueixen." -#: .\cookbook\forms.py:178 +#: .\cookbook\forms.py:193 msgid "Old Food" msgstr "Antic Menjar" -#: .\cookbook\forms.py:179 +#: .\cookbook\forms.py:194 msgid "Food that should be replaced." msgstr "Menjar que s’hauria de substituir." -#: .\cookbook\forms.py:197 +#: .\cookbook\forms.py:212 msgid "Add your comment: " msgstr "Afegir el teu comentari:" -#: .\cookbook\forms.py:238 +#: .\cookbook\forms.py:253 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" "Deixeu-lo buit per a Dropbox i introduïu la contrasenya de l'aplicació per a " "nextcloud." -#: .\cookbook\forms.py:245 +#: .\cookbook\forms.py:260 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "Deixeu-lo buit per a nextcloud i introduïu el token API per a Dropbox." -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:269 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -190,26 +194,26 @@ msgstr "" "Deixeu-lo buit per a Dropbox i introduïu només l'URL base per a nextcloud " "(/remote.php/webdav/ s'afegeix automàticament)" -#: .\cookbook\forms.py:291 +#: .\cookbook\forms.py:307 msgid "Search String" msgstr "Cerca Cadena" -#: .\cookbook\forms.py:318 +#: .\cookbook\forms.py:334 msgid "File ID" msgstr "ID d'Arxiu" -#: .\cookbook\forms.py:354 +#: .\cookbook\forms.py:370 msgid "You must provide at least a recipe or a title." msgstr "Has de proporcionar com a mínim una recepta o un títol." -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:383 msgid "You can list default users to share recipes with in the settings." msgstr "" "Podeu llistar els usuaris predeterminats amb els quals voleu compartir " "receptes a la configuració." -#: .\cookbook\forms.py:368 -#: .\cookbook\templates\forms\edit_internal_recipe.html:377 +#: .\cookbook\forms.py:384 +#: .\cookbook\templates\forms\edit_internal_recipe.html:404 msgid "" "You can use markdown to format this field. See the docs here" @@ -217,51 +221,58 @@ msgstr "" "Podeu utilitzar el marcador per donar format a aquest camp. Consulteu els documents aquí " -#: .\cookbook\forms.py:393 -msgid "A username is not required, if left blank the new user can choose one." +#: .\cookbook\forms.py:409 +msgid "Maximum number of users for this space reached." msgstr "" -"No cal un nom d’usuari, si es deixa en blanc el nou usuari en pot triar un." -#: .\cookbook\helper\permission_helper.py:123 -#: .\cookbook\helper\permission_helper.py:129 -#: .\cookbook\helper\permission_helper.py:151 -#: .\cookbook\helper\permission_helper.py:196 -#: .\cookbook\helper\permission_helper.py:210 -#: .\cookbook\helper\permission_helper.py:221 -#: .\cookbook\helper\permission_helper.py:232 .\cookbook\views\data.py:30 -#: .\cookbook\views\views.py:112 .\cookbook\views\views.py:116 -#: .\cookbook\views\views.py:184 -msgid "You do not have the required permissions to view this page!" -msgstr "No teniu els permisos necessaris per veure aquesta pàgina!" +#: .\cookbook\forms.py:415 +msgid "Email address already taken!" +msgstr "" -#: .\cookbook\helper\permission_helper.py:141 +#: .\cookbook\forms.py:423 +msgid "" +"An email address is not required but if present the invite link will be send " +"to the user." +msgstr "" + +#: .\cookbook\forms.py:438 +msgid "Name already taken." +msgstr "" + +#: .\cookbook\forms.py:449 +msgid "Accept Terms and Privacy" +msgstr "" + +#: .\cookbook\helper\AllAuthCustomAdapter.py:30 +msgid "" +"In order to prevent spam, the requested email was not send. Please wait a " +"few minutes and try again." +msgstr "" + +#: .\cookbook\helper\permission_helper.py:124 +#: .\cookbook\helper\permission_helper.py:144 .\cookbook\views\views.py:147 msgid "You are not logged in and therefore cannot view this page!" msgstr "No heu iniciat la sessió i, per tant, no podeu veure aquesta pàgina." -#: .\cookbook\helper\permission_helper.py:145 -#: .\cookbook\helper\permission_helper.py:167 -#: .\cookbook\helper\permission_helper.py:182 +#: .\cookbook\helper\permission_helper.py:127 +#: .\cookbook\helper\permission_helper.py:132 +#: .\cookbook\helper\permission_helper.py:154 +#: .\cookbook\helper\permission_helper.py:199 +#: .\cookbook\helper\permission_helper.py:213 +#: .\cookbook\helper\permission_helper.py:224 +#: .\cookbook\helper\permission_helper.py:235 .\cookbook\views\data.py:39 +#: .\cookbook\views\views.py:158 .\cookbook\views\views.py:165 +#: .\cookbook\views\views.py:253 +msgid "You do not have the required permissions to view this page!" +msgstr "No teniu els permisos necessaris per veure aquesta pàgina!" + +#: .\cookbook\helper\permission_helper.py:148 +#: .\cookbook\helper\permission_helper.py:170 +#: .\cookbook\helper\permission_helper.py:185 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" "No pots interaccionar amb aquest objecte ja que no és de la teva propietat!" -#: .\cookbook\helper\recipe_url_import.py:40 .\cookbook\views\api.py:549 -msgid "The requested site provided malformed data and cannot be read." -msgstr "" -"El lloc sol·licitat proporcionava dades malformades i no es pot llegir." - -#: .\cookbook\helper\recipe_url_import.py:54 -msgid "" -"The requested site does not provide any recognized data format to import the " -"recipe from." -msgstr "" -"El lloc sol·licitat no proporciona cap format de dades reconegut des d’on " -"importar la recepta." - -#: .\cookbook\helper\recipe_url_import.py:160 -msgid "Imported from" -msgstr "Importat des de" - #: .\cookbook\helper\template_helper.py:60 #: .\cookbook\helper\template_helper.py:62 msgid "Could not parse template code." @@ -271,47 +282,58 @@ msgstr "" #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 -#: .\cookbook\templates\url_import.html:233 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:190 +#: .\cookbook\templates\url_import.html:27 +#: .\cookbook\templates\url_import.html:101 +#: .\cookbook\templates\url_import.html:123 +#: .\cookbook\templates\url_import.html:317 +#: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 +#: .\cookbook\views\edit.py:199 msgid "Import" msgstr "Importar" -#: .\cookbook\integration\integration.py:131 +#: .\cookbook\integration\integration.py:162 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:134 +#: .\cookbook\integration\integration.py:165 +msgid "" +"An unexpected error occurred during the import. Please make sure you have " +"uploaded a valid file." +msgstr "" + +#: .\cookbook\integration\integration.py:169 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:137 +#: .\cookbook\integration\integration.py:173 #, fuzzy, python-format #| msgid "Imported new recipe!" msgid "Imported %s recipes." msgstr "Nova Recepta importada!" -#: .\cookbook\integration\paprika.py:44 +#: .\cookbook\integration\paprika.py:46 #, fuzzy #| msgid "Note" msgid "Notes" msgstr "Nota" -#: .\cookbook\integration\paprika.py:47 +#: .\cookbook\integration\paprika.py:49 #, fuzzy #| msgid "Information" msgid "Nutritional Information" msgstr "Informació" -#: .\cookbook\integration\paprika.py:50 +#: .\cookbook\integration\paprika.py:53 msgid "Source" msgstr "" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:75 +#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 -#: .\cookbook\templates\url_import.html:84 +#: .\cookbook\templates\url_import.html:224 +#: .\cookbook\templates\url_import.html:455 msgid "Servings" msgstr "Racions" @@ -320,11 +342,11 @@ msgid "Waiting time" msgstr "Temps d'espera" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:69 +#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "Temps de preparació" -#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:71 +#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:78 #: .\cookbook\templates\forms\ingredients.html:7 #: .\cookbook\templates\index.html:7 msgid "Cookbook" @@ -350,44 +372,74 @@ msgstr "Sopar" msgid "Other" msgstr "Un altre" -#: .\cookbook\models.py:110 .\cookbook\templates\shopping_list.html:48 +#: .\cookbook\models.py:71 +msgid "" +"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " +"upload." +msgstr "" + +#: .\cookbook\models.py:121 .\cookbook\templates\search.html:7 +#: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "Cerca" -#: .\cookbook\models.py:111 .\cookbook\templates\base.html:85 +#: .\cookbook\models.py:122 .\cookbook\templates\base.html:92 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:224 .\cookbook\views\new.py:188 +#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 msgid "Meal-Plan" msgstr "Plans de Menjar" -#: .\cookbook\models.py:112 .\cookbook\templates\base.html:82 +#: .\cookbook\models.py:123 .\cookbook\templates\base.html:89 msgid "Books" msgstr "Receptes" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Small" msgstr "Petit" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Large" msgstr "Gran" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:198 +#: .\cookbook\models.py:131 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\templates\generic\new_template.html:14 +#: .\cookbook\templates\meal_plan.html:323 +msgid "New" +msgstr "Nova" + +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:202 msgid "Text" msgstr "Text" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:199 +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:203 msgid "Time" msgstr "Temps" +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:204 +#: .\cookbook\templates\forms\edit_internal_recipe.html:218 +#, fuzzy +#| msgid "File ID" +msgid "File" +msgstr "ID d'Arxiu" + +#: .\cookbook\serializer.py:109 +msgid "File uploads are not enabled for this Space." +msgstr "" + +#: .\cookbook\serializer.py:117 +msgid "You have reached your file upload limit." +msgstr "" + #: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 #: .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 #: .\cookbook\templates\shopping_list.html:33 +#: .\cookbook\templates\space.html:84 msgid "Edit" msgstr "Edita" @@ -401,10 +453,6 @@ msgstr "Edita" msgid "Delete" msgstr "Esborra" -#: .\cookbook\tables.py:144 -msgid "Link" -msgstr "Enllaç" - #: .\cookbook\templates\404.html:5 msgid "404 Error" msgstr "Error 404" @@ -421,21 +469,124 @@ msgstr "Porta'm a Casa" msgid "Report a Bug" msgstr "Reporta Errada" -#: .\cookbook\templates\account\login.html:7 -#: .\cookbook\templates\base.html:170 +#: .\cookbook\templates\account\email.html:6 +#: .\cookbook\templates\account\email.html:9 +msgid "E-mail Addresses" +msgstr "" + +#: .\cookbook\templates\account\email.html:11 +msgid "The following e-mail addresses are associated with your account:" +msgstr "" + +#: .\cookbook\templates\account\email.html:28 +msgid "Verified" +msgstr "" + +#: .\cookbook\templates\account\email.html:30 +msgid "Unverified" +msgstr "" + +#: .\cookbook\templates\account\email.html:32 +msgid "Primary" +msgstr "" + +#: .\cookbook\templates\account\email.html:39 +#, fuzzy +#| msgid "Make Header" +msgid "Make Primary" +msgstr "Crea Capçalera" + +#: .\cookbook\templates\account\email.html:41 +msgid "Re-send Verification" +msgstr "" + +#: .\cookbook\templates\account\email.html:42 +#: .\cookbook\templates\socialaccount\connections.html:36 +msgid "Remove" +msgstr "Eliminar" + +#: .\cookbook\templates\account\email.html:50 +#, fuzzy +#| msgid "Warning" +msgid "Warning:" +msgstr "Advertència" + +#: .\cookbook\templates\account\email.html:50 +msgid "" +"You currently do not have any e-mail address set up. You should really add " +"an e-mail address so you can receive notifications, reset your password, etc." +msgstr "" + +#: .\cookbook\templates\account\email.html:56 +msgid "Add E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email.html:61 +msgid "Add E-mail" +msgstr "" + +#: .\cookbook\templates\account\email.html:71 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:6 +#: .\cookbook\templates\account\email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that\n" +" %(email)s is an e-mail address " +"for user %(user_display)s\n" +" ." +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:22 +#: .\cookbook\templates\generic\delete_template.html:21 +msgid "Confirm" +msgstr "Confirma" + +#: .\cookbook\templates\account\email_confirm.html:29 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please\n" +" issue a new e-mail confirmation " +"request." +msgstr "" + +#: .\cookbook\templates\account\login.html:8 +#: .\cookbook\templates\base.html:180 msgid "Login" msgstr "Iniciar Sessió" -#: .\cookbook\templates\account\login.html:13 -#: .\cookbook\templates\account\login.html:28 +#: .\cookbook\templates\account\login.html:15 +#: .\cookbook\templates\account\login.html:31 +#: .\cookbook\templates\account\signup.html:69 +#: .\cookbook\templates\account\signup_closed.html:15 msgid "Sign In" msgstr "" -#: .\cookbook\templates\account\login.html:38 +#: .\cookbook\templates\account\login.html:32 +msgid "Sign Up" +msgstr "" + +#: .\cookbook\templates\account\login.html:36 +#: .\cookbook\templates\account\login.html:37 +#: .\cookbook\templates\account\password_reset.html:29 +msgid "Reset My Password" +msgstr "" + +#: .\cookbook\templates\account\login.html:37 +msgid "Lost your password?" +msgstr "" + +#: .\cookbook\templates\account\login.html:48 msgid "Social Login" msgstr "" -#: .\cookbook\templates\account\login.html:39 +#: .\cookbook\templates\account\login.html:49 msgid "You can use any of the following providers to sign in." msgstr "" @@ -449,116 +600,166 @@ msgstr "" msgid "Are you sure you want to sign out?" msgstr "" -#: .\cookbook\templates\account\password_reset.html:5 -#: .\cookbook\templates\account\password_reset_done.html:5 +#: .\cookbook\templates\account\password_reset.html:7 +#: .\cookbook\templates\account\password_reset.html:13 +#: .\cookbook\templates\account\password_reset_done.html:7 +#: .\cookbook\templates\account\password_reset_done.html:10 msgid "Password Reset" msgstr "" -#: .\cookbook\templates\account\password_reset.html:9 -#: .\cookbook\templates\account\password_reset_done.html:9 -msgid "Password reset is not implemented for the time being!" +#: .\cookbook\templates\account\password_reset.html:24 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." msgstr "" -#: .\cookbook\templates\account\signup.html:5 +#: .\cookbook\templates\account\password_reset.html:32 +msgid "Password reset is disabled on this instance." +msgstr "" + +#: .\cookbook\templates\account\password_reset_done.html:16 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: .\cookbook\templates\account\signup.html:6 msgid "Register" msgstr "Registre" -#: .\cookbook\templates\account\signup.html:9 -msgid "Create your Account" +#: .\cookbook\templates\account\signup.html:12 +#, fuzzy +#| msgid "Create your Account" +msgid "Create an Account" msgstr "Crear Compte" -#: .\cookbook\templates\account\signup.html:14 +#: .\cookbook\templates\account\signup.html:42 +msgid "I accept the follwoing" +msgstr "" + +#: .\cookbook\templates\account\signup.html:45 +msgid "Terms and Conditions" +msgstr "" + +#: .\cookbook\templates\account\signup.html:48 +msgid "and" +msgstr "" + +#: .\cookbook\templates\account\signup.html:52 +msgid "Privacy Policy" +msgstr "" + +#: .\cookbook\templates\account\signup.html:65 msgid "Create User" msgstr "Crear Usuari" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:160 +#: .\cookbook\templates\account\signup.html:69 +msgid "Already have an account?" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:5 +#: .\cookbook\templates\account\signup_closed.html:11 +msgid "Sign Up Closed" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:13 +msgid "We are sorry, but the sign up is currently closed." +msgstr "" + +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:170 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "Documentació API " -#: .\cookbook\templates\base.html:78 +#: .\cookbook\templates\base.html:85 msgid "Utensils" msgstr "Estris" -#: .\cookbook\templates\base.html:88 +#: .\cookbook\templates\base.html:95 msgid "Shopping" msgstr "Compres" -#: .\cookbook\templates\base.html:102 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:93 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:66 +#: .\cookbook\templates\base.html:109 .\cookbook\views\delete.py:84 +#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 +#: .\cookbook\views\new.py:78 msgid "Keyword" msgstr "Paraula Clau" -#: .\cookbook\templates\base.html:104 +#: .\cookbook\templates\base.html:111 msgid "Batch Edit" msgstr "Edició per lots" -#: .\cookbook\templates\base.html:109 +#: .\cookbook\templates\base.html:116 msgid "Storage Data" msgstr "Emmagatzematge de dades" -#: .\cookbook\templates\base.html:113 +#: .\cookbook\templates\base.html:120 msgid "Storage Backends" msgstr "Backends d'emmagatzematge" -#: .\cookbook\templates\base.html:115 +#: .\cookbook\templates\base.html:122 msgid "Configure Sync" msgstr "Configurar Sync" -#: .\cookbook\templates\base.html:117 +#: .\cookbook\templates\base.html:124 msgid "Discovered Recipes" msgstr "Receptes Descobertes" -#: .\cookbook\templates\base.html:119 +#: .\cookbook\templates\base.html:126 msgid "Discovery Log" msgstr "Registre de descobriment" -#: .\cookbook\templates\base.html:121 .\cookbook\templates\stats.html:10 +#: .\cookbook\templates\base.html:128 .\cookbook\templates\stats.html:10 msgid "Statistics" msgstr "Estadístiques" -#: .\cookbook\templates\base.html:123 +#: .\cookbook\templates\base.html:130 msgid "Units & Ingredients" msgstr "Unitats i ingredients" -#: .\cookbook\templates\base.html:125 +#: .\cookbook\templates\base.html:132 .\cookbook\templates\index.html:47 msgid "Import Recipe" msgstr "Importa recepta" -#: .\cookbook\templates\base.html:144 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:151 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:16 msgid "Settings" msgstr "Opcions" -#: .\cookbook\templates\base.html:146 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:153 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "Historial" -#: .\cookbook\templates\base.html:150 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:155 .\cookbook\templates\space.html:7 +#, fuzzy +#| msgid "Settings" +msgid "Space Settings" +msgstr "Opcions" + +#: .\cookbook\templates\base.html:160 .\cookbook\templates\system.html:13 msgid "System" msgstr "Sistema" -#: .\cookbook\templates\base.html:152 +#: .\cookbook\templates\base.html:162 msgid "Admin" msgstr "Admin" -#: .\cookbook\templates\base.html:156 +#: .\cookbook\templates\base.html:166 msgid "Markdown Guide" msgstr "Guia Markdown" -#: .\cookbook\templates\base.html:158 +#: .\cookbook\templates\base.html:168 msgid "GitHub" msgstr "GitHub" -#: .\cookbook\templates\base.html:162 +#: .\cookbook\templates\base.html:172 msgid "API Browser" msgstr "Navegador API" -#: .\cookbook\templates\base.html:165 -msgid "Logout" -msgstr "Tancar Sessió" +#: .\cookbook\templates\base.html:175 +msgid "Log out" +msgstr "" #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" @@ -574,7 +775,7 @@ msgstr "" "Afegiu les paraules clau especificades a totes les receptes que continguin " "la paraula" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:76 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 msgid "Sync" msgstr "Sync" @@ -603,7 +804,7 @@ msgstr "Sincronitza Ara!" msgid "Importing Recipes" msgstr "Important Receptes" -#: .\cookbook\templates\batch\waiting.html:23 +#: .\cookbook\templates\batch\waiting.html:28 msgid "" "This can take a few minutes, depending on the number of recipes in sync, " "please wait." @@ -642,26 +843,33 @@ msgid "Export Recipes" msgstr "Exporta Receptes" #: .\cookbook\templates\export.html:14 .\cookbook\templates\export.html:20 -#: .\cookbook\templates\shopping_list.html:347 +#: .\cookbook\templates\shopping_list.html:351 #: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20 msgid "Export" msgstr "Exporta" +#: .\cookbook\templates\files.html:7 +#, fuzzy +#| msgid "File ID" +msgid "Files" +msgstr "ID d'Arxiu" + #: .\cookbook\templates\forms\edit_import_recipe.html:5 #: .\cookbook\templates\forms\edit_import_recipe.html:9 msgid "Import new Recipe" msgstr "Importa nova Recepta" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:389 -#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:416 +#: .\cookbook\templates\forms\edit_internal_recipe.html:448 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:28 .\cookbook\templates\settings.html:35 -#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:73 -#: .\cookbook\templates\shopping_list.html:349 +#: .\cookbook\templates\settings.html:44 .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:114 +#: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "Desa" @@ -670,181 +878,190 @@ msgstr "Desa" msgid "Edit Recipe" msgstr "Edita Recepta" -#: .\cookbook\templates\forms\edit_internal_recipe.html:52 +#: .\cookbook\templates\forms\edit_internal_recipe.html:56 +#: .\cookbook\templates\url_import.html:171 msgid "Description" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:72 +#: .\cookbook\templates\forms\edit_internal_recipe.html:76 msgid "Waiting Time" msgstr "Temps d'Espera" -#: .\cookbook\templates\forms\edit_internal_recipe.html:78 +#: .\cookbook\templates\forms\edit_internal_recipe.html:82 msgid "Servings Text" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:89 +#: .\cookbook\templates\forms\edit_internal_recipe.html:93 msgid "Select Keywords" msgstr "Selecciona Paraules clau" -#: .\cookbook\templates\forms\edit_internal_recipe.html:90 -#: .\cookbook\templates\url_import.html:212 +#: .\cookbook\templates\forms\edit_internal_recipe.html:94 +#: .\cookbook\templates\url_import.html:583 #, fuzzy #| msgid "All Keywords" msgid "Add Keyword" msgstr "Totes les paraules clau" -#: .\cookbook\templates\forms\edit_internal_recipe.html:108 +#: .\cookbook\templates\forms\edit_internal_recipe.html:112 msgid "Nutrition" msgstr "Nutrició" -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -#: .\cookbook\templates\forms\edit_internal_recipe.html:162 +#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:166 msgid "Delete Step" msgstr "Esborra Pas" -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:120 msgid "Calories" msgstr "Calories" -#: .\cookbook\templates\forms\edit_internal_recipe.html:119 +#: .\cookbook\templates\forms\edit_internal_recipe.html:123 msgid "Carbohydrates" msgstr "Hidrats de carboni" -#: .\cookbook\templates\forms\edit_internal_recipe.html:122 +#: .\cookbook\templates\forms\edit_internal_recipe.html:126 msgid "Fats" msgstr "Greixos" -#: .\cookbook\templates\forms\edit_internal_recipe.html:124 +#: .\cookbook\templates\forms\edit_internal_recipe.html:128 msgid "Proteins" msgstr "Proteïnes" -#: .\cookbook\templates\forms\edit_internal_recipe.html:146 -#: .\cookbook\templates\forms\edit_internal_recipe.html:454 +#: .\cookbook\templates\forms\edit_internal_recipe.html:150 +#: .\cookbook\templates\forms\edit_internal_recipe.html:481 msgid "Step" msgstr "Pas" -#: .\cookbook\templates\forms\edit_internal_recipe.html:167 +#: .\cookbook\templates\forms\edit_internal_recipe.html:171 msgid "Show as header" msgstr "Mostra com a capçalera" -#: .\cookbook\templates\forms\edit_internal_recipe.html:173 +#: .\cookbook\templates\forms\edit_internal_recipe.html:177 msgid "Hide as header" msgstr "Amaga com a capçalera" -#: .\cookbook\templates\forms\edit_internal_recipe.html:178 +#: .\cookbook\templates\forms\edit_internal_recipe.html:182 msgid "Move Up" msgstr "Mou Amunt" -#: .\cookbook\templates\forms\edit_internal_recipe.html:183 +#: .\cookbook\templates\forms\edit_internal_recipe.html:187 msgid "Move Down" msgstr "Mou Avall" -#: .\cookbook\templates\forms\edit_internal_recipe.html:192 +#: .\cookbook\templates\forms\edit_internal_recipe.html:196 msgid "Step Name" msgstr "Nom del Pas" -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:200 msgid "Step Type" msgstr "Tipus de Pas" -#: .\cookbook\templates\forms\edit_internal_recipe.html:207 +#: .\cookbook\templates\forms\edit_internal_recipe.html:212 msgid "Step time in Minutes" msgstr "Temps de pas en Minuts" -#: .\cookbook\templates\forms\edit_internal_recipe.html:261 -#: .\cookbook\templates\shopping_list.html:183 -msgid "Select Unit" -msgstr "Selecciona Unitat" +#: .\cookbook\templates\forms\edit_internal_recipe.html:228 +#, fuzzy +#| msgid "Select one" +msgid "Select File" +msgstr "Sel·lecciona un" -#: .\cookbook\templates\forms\edit_internal_recipe.html:262 -#: .\cookbook\templates\forms\edit_internal_recipe.html:286 -#: .\cookbook\templates\shopping_list.html:184 -#: .\cookbook\templates\shopping_list.html:206 -msgid "Create" -msgstr "Crea" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:263 -#: .\cookbook\templates\forms\edit_internal_recipe.html:287 -#: .\cookbook\templates\shopping_list.html:185 -#: .\cookbook\templates\shopping_list.html:207 -#: .\cookbook\templates\shopping_list.html:237 -#: .\cookbook\templates\shopping_list.html:261 -#: .\cookbook\templates\url_import.html:124 -#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\forms\edit_internal_recipe.html:229 +#: .\cookbook\templates\forms\edit_internal_recipe.html:290 +#: .\cookbook\templates\forms\edit_internal_recipe.html:314 +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 msgid "Select" msgstr "Selecciona" -#: .\cookbook\templates\forms\edit_internal_recipe.html:285 -#: .\cookbook\templates\shopping_list.html:205 +#: .\cookbook\templates\forms\edit_internal_recipe.html:288 +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "Selecciona Unitat" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:289 +#: .\cookbook\templates\forms\edit_internal_recipe.html:313 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "Crea" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:312 +#: .\cookbook\templates\shopping_list.html:209 msgid "Select Food" msgstr "Selecciona Menjar" -#: .\cookbook\templates\forms\edit_internal_recipe.html:302 +#: .\cookbook\templates\forms\edit_internal_recipe.html:329 #: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:171 +#: .\cookbook\templates\url_import.html:542 msgid "Note" msgstr "Nota" -#: .\cookbook\templates\forms\edit_internal_recipe.html:319 +#: .\cookbook\templates\forms\edit_internal_recipe.html:346 msgid "Delete Ingredient" msgstr "Esborra Ingredient" -#: .\cookbook\templates\forms\edit_internal_recipe.html:325 +#: .\cookbook\templates\forms\edit_internal_recipe.html:352 msgid "Make Header" msgstr "Crea Capçalera" -#: .\cookbook\templates\forms\edit_internal_recipe.html:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:358 msgid "Make Ingredient" msgstr "Crea Ingredient" -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 +#: .\cookbook\templates\forms\edit_internal_recipe.html:364 msgid "Disable Amount" msgstr "Deshabilita Quantitat" -#: .\cookbook\templates\forms\edit_internal_recipe.html:343 +#: .\cookbook\templates\forms\edit_internal_recipe.html:370 msgid "Enable Amount" msgstr "Habilita Quantitat" -#: .\cookbook\templates\forms\edit_internal_recipe.html:348 +#: .\cookbook\templates\forms\edit_internal_recipe.html:375 msgid "Copy Template Reference" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:374 -#: .\cookbook\templates\url_import.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:401 +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 msgid "Instructions" msgstr "Instruccions" -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:414 +#: .\cookbook\templates\forms\edit_internal_recipe.html:445 msgid "Save & View" msgstr "Desa i Comprova" -#: .\cookbook\templates\forms\edit_internal_recipe.html:391 -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 +#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:451 msgid "Add Step" msgstr "Afegir Pas" -#: .\cookbook\templates\forms\edit_internal_recipe.html:394 -#: .\cookbook\templates\forms\edit_internal_recipe.html:428 +#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:455 msgid "Add Nutrition" msgstr "Afegeix nutrients" -#: .\cookbook\templates\forms\edit_internal_recipe.html:396 -#: .\cookbook\templates\forms\edit_internal_recipe.html:430 +#: .\cookbook\templates\forms\edit_internal_recipe.html:423 +#: .\cookbook\templates\forms\edit_internal_recipe.html:457 msgid "Remove Nutrition" msgstr "Elimina nutrients" -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -#: .\cookbook\templates\forms\edit_internal_recipe.html:433 +#: .\cookbook\templates\forms\edit_internal_recipe.html:425 +#: .\cookbook\templates\forms\edit_internal_recipe.html:460 msgid "View Recipe" msgstr "Veure Recepta" -#: .\cookbook\templates\forms\edit_internal_recipe.html:400 -#: .\cookbook\templates\forms\edit_internal_recipe.html:435 +#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\templates\forms\edit_internal_recipe.html:462 msgid "Delete Recipe" msgstr "Esborra Recepta" -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 +#: .\cookbook\templates\forms\edit_internal_recipe.html:468 msgid "Steps" msgstr "Passos" @@ -868,7 +1085,7 @@ msgstr "" "Combina dues unitats o ingredients i actualitza totes les receptes amb ells" #: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\stats.html:26 +#: .\cookbook\templates\space.html:35 .\cookbook\templates\stats.html:26 msgid "Units" msgstr "Unitats" @@ -890,10 +1107,6 @@ msgstr "Estàs segur que vols combinar aquests dos ingredients?" msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "Segur que vols esborrar el %(title)s:%(object)s" -#: .\cookbook\templates\generic\delete_template.html:21 -msgid "Confirm" -msgstr "Confirma" - #: .\cookbook\templates\generic\edit_template.html:30 msgid "View" msgstr "Veure" @@ -915,12 +1128,6 @@ msgstr "Filtre" msgid "Import all" msgstr "Importa tot" -#: .\cookbook\templates\generic\new_template.html:6 -#: .\cookbook\templates\generic\new_template.html:14 -#: .\cookbook\templates\meal_plan.html:323 -msgid "New" -msgstr "Nova" - #: .\cookbook\templates\generic\table_template.html:76 #: .\cookbook\templates\recipes_table.html:121 msgid "previous" @@ -965,7 +1172,7 @@ msgstr "Tanca" #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:264 .\cookbook\views\new.py:40 +#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "Recepta" @@ -1005,10 +1212,6 @@ msgstr "Cerca Recepta..." msgid "New Recipe" msgstr "Nova Recepta" -#: .\cookbook\templates\index.html:47 -msgid "Website Import" -msgstr "Importa desde Web" - #: .\cookbook\templates\index.html:53 msgid "Advanced Search" msgstr "Cerca Avançada" @@ -1022,7 +1225,7 @@ msgid "Last viewed" msgstr "Darrera visualització" #: .\cookbook\templates\index.html:87 .\cookbook\templates\meal_plan.html:178 -#: .\cookbook\templates\stats.html:22 +#: .\cookbook\templates\space.html:29 .\cookbook\templates\stats.html:22 msgid "Recipes" msgstr "Receptes" @@ -1186,7 +1389,7 @@ msgid "New Entry" msgstr "Nova Entrada" #: .\cookbook\templates\meal_plan.html:113 -#: .\cookbook\templates\shopping_list.html:52 +#: .\cookbook\templates\shopping_list.html:56 msgid "Search Recipe" msgstr "Cerca Recepta" @@ -1219,7 +1422,7 @@ msgstr "Crear només nota" #: .\cookbook\templates\meal_plan.html:168 #: .\cookbook\templates\shopping_list.html:7 #: .\cookbook\templates\shopping_list.html:29 -#: .\cookbook\templates\shopping_list.html:705 +#: .\cookbook\templates\shopping_list.html:714 msgid "Shopping List" msgstr "Llista de la Compra" @@ -1271,7 +1474,7 @@ msgstr "Creat per" #: .\cookbook\templates\meal_plan.html:270 #: .\cookbook\templates\meal_plan_entry.html:20 -#: .\cookbook\templates\shopping_list.html:250 +#: .\cookbook\templates\shopping_list.html:254 msgid "Shared with" msgstr "Compartit per" @@ -1348,7 +1551,6 @@ msgstr "No heu iniciat la sessió i, per tant, no podeu veure aquesta pàgina." #: .\cookbook\templates\no_groups_info.html:18 #: .\cookbook\templates\no_perm_info.html:15 -#: .\cookbook\templates\no_space_info.html:15 msgid "Please contact your administrator." msgstr "" @@ -1365,13 +1567,50 @@ msgid "" "action." msgstr "No teniu els permisos necessaris per dur a terme aquesta acció!" -#: .\cookbook\templates\no_space_info.html:5 -#: .\cookbook\templates\no_space_info.html:12 +#: .\cookbook\templates\no_space_info.html:6 +#: .\cookbook\templates\no_space_info.html:13 msgid "No Space" msgstr "" -#: .\cookbook\templates\no_space_info.html:15 -msgid "You are not a member of any space." +#: .\cookbook\templates\no_space_info.html:17 +msgid "" +"Recipes, foods, shopping lists and more are organized in spaces of one or " +"more people." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:18 +msgid "" +"You can either be invited into an existing space or create your own one." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:31 +#: .\cookbook\templates\no_space_info.html:40 +msgid "Join Space" +msgstr "" + +#: .\cookbook\templates\no_space_info.html:34 +msgid "Join an existing space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:35 +msgid "" +"To join an existing space either enter your invite token or click on the " +"invite link the space owner send you." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:48 +#: .\cookbook\templates\no_space_info.html:56 +#, fuzzy +#| msgid "Create User" +msgid "Create Space" +msgstr "Crear Usuari" + +#: .\cookbook\templates\no_space_info.html:51 +msgid "Create your own recipe space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:52 +msgid "Start your own recipe space and invite other users to it." msgstr "" #: .\cookbook\templates\offline.html:6 @@ -1388,28 +1627,29 @@ msgid "" "recently viewed them. Keep in mind that data might be outdated." msgstr "" -#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\stats.html:47 +#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\space.html:56 +#: .\cookbook\templates\stats.html:47 msgid "Comments" msgstr "Comentaris" #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:170 +#: .\cookbook\views\edit.py:179 msgid "Comment" msgstr "Comentari" #: .\cookbook\templates\recipes_table.html:19 #: .\cookbook\templates\recipes_table.html:23 -#: .\cookbook\templates\url_import.html:69 +#: .\cookbook\templates\url_import.html:440 msgid "Recipe Image" msgstr "Imatge de la Recepta" #: .\cookbook\templates\recipes_table.html:51 -#: .\cookbook\templates\url_import.html:74 +#: .\cookbook\templates\url_import.html:445 msgid "Preparation time ca." msgstr "Temps de Preparació ca." #: .\cookbook\templates\recipes_table.html:57 -#: .\cookbook\templates\url_import.html:79 +#: .\cookbook\templates\url_import.html:450 msgid "Waiting time ca." msgstr "Temps d'Espera ca." @@ -1425,27 +1665,63 @@ msgstr "Registre de Cuines" msgid "Recipe Home" msgstr "Receptes" -#: .\cookbook\templates\settings.html:22 +#: .\cookbook\templates\settings.html:23 msgid "Account" msgstr "Compte" -#: .\cookbook\templates\settings.html:38 -msgid "Link social account" +#: .\cookbook\templates\settings.html:27 +msgid "Preferences" msgstr "" -#: .\cookbook\templates\settings.html:42 +#: .\cookbook\templates\settings.html:31 +#, fuzzy +#| msgid "Settings" +msgid "API-Settings" +msgstr "Opcions" + +#: .\cookbook\templates\settings.html:39 +#, fuzzy +#| msgid "Settings" +msgid "Name Settings" +msgstr "Opcions" + +#: .\cookbook\templates\settings.html:47 +#, fuzzy +#| msgid "Settings" +msgid "Password Settings" +msgstr "Opcions" + +#: .\cookbook\templates\settings.html:55 +#, fuzzy +#| msgid "Settings" +msgid "Email Settings" +msgstr "Opcions" + +#: .\cookbook\templates\settings.html:57 +msgid "Manage Email Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:61 +msgid "Social" +msgstr "" + +#: .\cookbook\templates\settings.html:63 +msgid "Manage Social Accounts" +msgstr "" + +#: .\cookbook\templates\settings.html:75 msgid "Language" msgstr "Idioma" -#: .\cookbook\templates\settings.html:67 +#: .\cookbook\templates\settings.html:105 msgid "Style" msgstr "Estil" -#: .\cookbook\templates\settings.html:79 +#: .\cookbook\templates\settings.html:125 msgid "API Token" msgstr "Token API" -#: .\cookbook\templates\settings.html:80 +#: .\cookbook\templates\settings.html:126 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." @@ -1453,7 +1729,7 @@ msgstr "" "Podeu utilitzar tant l’autenticació bàsica com l’autenticació basada en " "token per accedir a l’API REST." -#: .\cookbook\templates\settings.html:92 +#: .\cookbook\templates\settings.html:143 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" @@ -1461,7 +1737,7 @@ msgstr "" "Utilitzeu el testimoni com a capçalera d'autorització prefixada per la " "paraula símbol tal com es mostra als exemples següents:" -#: .\cookbook\templates\settings.html:94 +#: .\cookbook\templates\settings.html:145 msgid "or" msgstr "o" @@ -1484,59 +1760,56 @@ msgstr "" msgid "Create Superuser account" msgstr "Crear compte de superusuari" -#: .\cookbook\templates\shopping_list.html:75 +#: .\cookbook\templates\shopping_list.html:79 msgid "Shopping Recipes" msgstr "Llista de Compra de Receptes" -#: .\cookbook\templates\shopping_list.html:79 +#: .\cookbook\templates\shopping_list.html:83 msgid "No recipes selected" msgstr "Recepta no sel·leccionada" -#: .\cookbook\templates\shopping_list.html:146 +#: .\cookbook\templates\shopping_list.html:150 msgid "Entry Mode" msgstr "" -#: .\cookbook\templates\shopping_list.html:154 +#: .\cookbook\templates\shopping_list.html:158 msgid "Add Entry" msgstr "" -#: .\cookbook\templates\shopping_list.html:170 +#: .\cookbook\templates\shopping_list.html:174 msgid "Amount" msgstr "Quantitat" -#: .\cookbook\templates\shopping_list.html:226 +#: .\cookbook\templates\shopping_list.html:230 +#: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "Supermercat" -#: .\cookbook\templates\shopping_list.html:236 +#: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "Seleccioni supermercat" -#: .\cookbook\templates\shopping_list.html:260 +#: .\cookbook\templates\shopping_list.html:264 msgid "Select User" msgstr "Selecciona usuari" -#: .\cookbook\templates\shopping_list.html:279 +#: .\cookbook\templates\shopping_list.html:283 msgid "Finished" msgstr "Acabat" -#: .\cookbook\templates\shopping_list.html:292 +#: .\cookbook\templates\shopping_list.html:296 msgid "You are offline, shopping list might not syncronize." msgstr "" "Estàs fora de línia, és possible que la llista de compra no es sincronitzi." -#: .\cookbook\templates\shopping_list.html:357 +#: .\cookbook\templates\shopping_list.html:361 msgid "Copy/Export" msgstr "Copia/Exporta" -#: .\cookbook\templates\shopping_list.html:361 +#: .\cookbook\templates\shopping_list.html:365 msgid "List Prefix" msgstr "Prefix de Llista" -#: .\cookbook\templates\shopping_list.html:708 -msgid "There was an error creating a resource!" -msgstr "S'ha produït un error en crear un recurs." - #: .\cookbook\templates\socialaccount\connections.html:4 #: .\cookbook\templates\socialaccount\connections.html:7 msgid "Account Connections" @@ -1548,10 +1821,6 @@ msgid "" " accounts:" msgstr "" -#: .\cookbook\templates\socialaccount\connections.html:36 -msgid "Remove" -msgstr "Eliminar" - #: .\cookbook\templates\socialaccount\connections.html:44 msgid "" "You currently have no social network accounts connected to this account." @@ -1561,38 +1830,97 @@ msgstr "" msgid "Add a 3rd Party Account" msgstr "" -#: .\cookbook\templates\stats.html:4 -msgid "Stats" -msgstr "Estadístiques" +#: .\cookbook\templates\space.html:18 +msgid "Manage Subscription" +msgstr "" -#: .\cookbook\templates\stats.html:19 +#: .\cookbook\templates\space.html:26 .\cookbook\templates\stats.html:19 msgid "Number of objects" msgstr "Nombre d'objectes" -#: .\cookbook\templates\stats.html:30 +#: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:30 msgid "Recipe Imports" msgstr "Importacions de receptes" -#: .\cookbook\templates\stats.html:38 +#: .\cookbook\templates\space.html:47 .\cookbook\templates\stats.html:38 msgid "Objects stats" msgstr "Estadístiques d'objectes" -#: .\cookbook\templates\stats.html:41 +#: .\cookbook\templates\space.html:50 .\cookbook\templates\stats.html:41 msgid "Recipes without Keywords" msgstr "Receptes sense paraules clau" -#: .\cookbook\templates\stats.html:43 +#: .\cookbook\templates\space.html:52 .\cookbook\templates\stats.html:43 msgid "External Recipes" msgstr "Receptes Externes" -#: .\cookbook\templates\stats.html:45 +#: .\cookbook\templates\space.html:54 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "Receptes Internes" -#: .\cookbook\templates\system.html:21 .\cookbook\views\lists.py:115 +#: .\cookbook\templates\space.html:67 +msgid "Members" +msgstr "" + +#: .\cookbook\templates\space.html:71 +#, fuzzy +#| msgid "Invite Links" +msgid "Invite User" +msgstr "Enllaços Invitació" + +#: .\cookbook\templates\space.html:82 +msgid "User" +msgstr "" + +#: .\cookbook\templates\space.html:83 +msgid "Groups" +msgstr "" + +#: .\cookbook\templates\space.html:99 +#, fuzzy +#| msgid "Admin" +msgid "admin" +msgstr "Admin" + +#: .\cookbook\templates\space.html:100 +msgid "user" +msgstr "" + +#: .\cookbook\templates\space.html:101 +msgid "guest" +msgstr "" + +#: .\cookbook\templates\space.html:102 +#, fuzzy +#| msgid "Remove" +msgid "remove" +msgstr "Eliminar" + +#: .\cookbook\templates\space.html:106 +msgid "Update" +msgstr "" + +#: .\cookbook\templates\space.html:110 +#, fuzzy +#| msgid "You cannot edit this storage!" +msgid "You cannot edit yourself." +msgstr "No podeu editar aquest emmagatzematge." + +#: .\cookbook\templates\space.html:117 +#, fuzzy +#| msgid "There are no recipes in this book yet." +msgid "There are no members in your space yet!" +msgstr "Encara no hi ha receptes en aquest llibre." + +#: .\cookbook\templates\space.html:124 .\cookbook\templates\system.html:21 +#: .\cookbook\views\lists.py:115 msgid "Invite Links" msgstr "Enllaços Invitació" +#: .\cookbook\templates\stats.html:4 +msgid "Stats" +msgstr "Estadístiques" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "Mostra Enllaços" @@ -1718,47 +2046,159 @@ msgstr "" "Això està bé, però no es recomana com alguns\n" "les funcions només funcionen amb bases de dades postgres." -#: .\cookbook\templates\url_import.html:5 +#: .\cookbook\templates\url_import.html:6 msgid "URL Import" msgstr "Importació d’URL" -#: .\cookbook\templates\url_import.html:23 +#: .\cookbook\templates\url_import.html:31 +msgid "Drag me to your bookmarks to import recipes from anywhere" +msgstr "" + +#: .\cookbook\templates\url_import.html:32 +#, fuzzy +#| msgid "Bookmark saved!" +msgid "Bookmark Me!" +msgstr "Marcador desat!" + +#: .\cookbook\templates\url_import.html:61 msgid "Enter website URL" msgstr "Introduïu l'URL del lloc web" -#: .\cookbook\templates\url_import.html:36 -msgid "Enter json directly" +#: .\cookbook\templates\url_import.html:97 +msgid "Select recipe files to import or drop them here..." msgstr "" -#: .\cookbook\templates\url_import.html:57 +#: .\cookbook\templates\url_import.html:118 +msgid "Paste json or html source here to load recipe." +msgstr "" + +#: .\cookbook\templates\url_import.html:146 +#, fuzzy +#| msgid "View Recipe" +msgid "Preview Recipe Data" +msgstr "Veure Recepta" + +#: .\cookbook\templates\url_import.html:147 +msgid "Drag recipe attributes from the right into the appropriate box below." +msgstr "" + +#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\url_import.html:173 +#: .\cookbook\templates\url_import.html:190 +#: .\cookbook\templates\url_import.html:209 +#: .\cookbook\templates\url_import.html:227 +#: .\cookbook\templates\url_import.html:242 +#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:273 +#: .\cookbook\templates\url_import.html:300 +#: .\cookbook\templates\url_import.html:351 +msgid "Clear Contents" +msgstr "" + +#: .\cookbook\templates\url_import.html:158 +msgid "Text dragged here will be appended to the name." +msgstr "" + +#: .\cookbook\templates\url_import.html:175 +msgid "Text dragged here will be appended to the description." +msgstr "" + +#: .\cookbook\templates\url_import.html:192 +msgid "Keywords dragged here will be appended to current list" +msgstr "" + +#: .\cookbook\templates\url_import.html:207 +msgid "Image" +msgstr "" + +#: .\cookbook\templates\url_import.html:239 +#, fuzzy +#| msgid "Preparation Time" +msgid "Prep Time" +msgstr "Temps de preparació" + +#: .\cookbook\templates\url_import.html:254 +#, fuzzy +#| msgid "Time" +msgid "Cook Time" +msgstr "Temps" + +#: .\cookbook\templates\url_import.html:275 +msgid "Ingredients dragged here will be appended to current list." +msgstr "" + +#: .\cookbook\templates\url_import.html:302 +msgid "" +"Recipe instructions dragged here will be appended to current instructions." +msgstr "" + +#: .\cookbook\templates\url_import.html:325 +#, fuzzy +#| msgid "Discovered Recipes" +msgid "Discovered Attributes" +msgstr "Receptes Descobertes" + +#: .\cookbook\templates\url_import.html:327 +msgid "" +"Drag recipe attributes from below into the appropriate box on the left. " +"Click any node to display its full properties." +msgstr "" + +#: .\cookbook\templates\url_import.html:344 +#, fuzzy +#| msgid "Show as header" +msgid "Show Blank Field" +msgstr "Mostra com a capçalera" + +#: .\cookbook\templates\url_import.html:349 +msgid "Blank Field" +msgstr "" + +#: .\cookbook\templates\url_import.html:353 +msgid "Items dragged to Blank Field will be appended." +msgstr "" + +#: .\cookbook\templates\url_import.html:400 +#, fuzzy +#| msgid "Delete Step" +msgid "Delete Text" +msgstr "Esborra Pas" + +#: .\cookbook\templates\url_import.html:413 +#, fuzzy +#| msgid "Delete Recipe" +msgid "Delete image" +msgstr "Esborra Recepta" + +#: .\cookbook\templates\url_import.html:429 msgid "Recipe Name" msgstr "Nom de la Recepta" -#: .\cookbook\templates\url_import.html:62 +#: .\cookbook\templates\url_import.html:433 #, fuzzy #| msgid "Recipe Markup Specification" msgid "Recipe Description" msgstr "Especificació de marcatge de receptes" -#: .\cookbook\templates\url_import.html:123 -#: .\cookbook\templates\url_import.html:155 -#: .\cookbook\templates\url_import.html:211 +#: .\cookbook\templates\url_import.html:494 +#: .\cookbook\templates\url_import.html:526 +#: .\cookbook\templates\url_import.html:582 msgid "Select one" msgstr "Sel·lecciona un" -#: .\cookbook\templates\url_import.html:225 +#: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "Totes les paraules clau" -#: .\cookbook\templates\url_import.html:228 +#: .\cookbook\templates\url_import.html:599 msgid "Import all keywords, not only the ones already existing." msgstr "Importa totes les paraules clau, no només les ja existents." -#: .\cookbook\templates\url_import.html:255 +#: .\cookbook\templates\url_import.html:626 msgid "Information" msgstr "Informació" -#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:628 msgid "" " Only websites containing ld+json or microdata information can currently\n" " be imported. Most big recipe pages " @@ -1777,52 +2217,80 @@ msgstr "" "un exemple a\n" "problemes de github." -#: .\cookbook\templates\url_import.html:265 +#: .\cookbook\templates\url_import.html:636 msgid "Google ld+json Info" msgstr "Google ld+json Info" -#: .\cookbook\templates\url_import.html:268 +#: .\cookbook\templates\url_import.html:639 msgid "GitHub Issues" msgstr "Problemes de GitHub" -#: .\cookbook\templates\url_import.html:270 +#: .\cookbook\templates\url_import.html:641 msgid "Recipe Markup Specification" msgstr "Especificació de marcatge de receptes" -#: .\cookbook\views\api.py:71 +#: .\cookbook\views\api.py:77 #, fuzzy #| msgid "Parameter filter_list incorrectly formatted" msgid "Parameter updated_at incorrectly formatted" msgstr "El paràmetre filter_list té un format incorrecte" -#: .\cookbook\views\api.py:455 .\cookbook\views\views.py:226 +#: .\cookbook\views\api.py:553 .\cookbook\views\views.py:295 msgid "This feature is not available in the demo version!" msgstr "" -#: .\cookbook\views\api.py:478 +#: .\cookbook\views\api.py:576 msgid "Sync successful!" msgstr "Sincronització correcte" -#: .\cookbook\views\api.py:483 +#: .\cookbook\views\api.py:581 msgid "Error synchronizing with Storage" msgstr "Error de sincronització amb emmagatzematge" -#: .\cookbook\views\api.py:556 .\cookbook\views\api.py:576 +#: .\cookbook\views\api.py:649 +msgid "Nothing to do." +msgstr "" + +#: .\cookbook\views\api.py:664 +msgid "The requested site provided malformed data and cannot be read." +msgstr "" +"El lloc sol·licitat proporcionava dades malformades i no es pot llegir." + +#: .\cookbook\views\api.py:671 msgid "The requested page could not be found." msgstr "No s'ha pogut trobar la pàgina sol·licitada." -#: .\cookbook\views\api.py:585 +#: .\cookbook\views\api.py:680 msgid "" -"The requested page refused to provide any information (Status Code 403)." +"The requested site does not provide any recognized data format to import the " +"recipe from." msgstr "" -"La pàgina sol·licitada refusa a proporcionar cap informació (Codi d’estat " -"403)." +"El lloc sol·licitat no proporciona cap format de dades reconegut des d’on " +"importar la recepta." -#: .\cookbook\views\api.py:611 -msgid "Could not parse correctly..." +#: .\cookbook\views\api.py:694 +#, fuzzy +#| msgid "The requested page could not be found." +msgid "No useable data could be found." +msgstr "No s'ha pogut trobar la pàgina sol·licitada." + +#: .\cookbook\views\api.py:710 +msgid "I couldn't find anything to do." msgstr "" -#: .\cookbook\views\data.py:94 +#: .\cookbook\views\data.py:30 .\cookbook\views\data.py:121 +#: .\cookbook\views\edit.py:50 .\cookbook\views\import_export.py:67 +#: .\cookbook\views\new.py:32 +msgid "You have reached the maximum number of recipes for your space." +msgstr "" + +#: .\cookbook\views\data.py:34 .\cookbook\views\data.py:125 +#: .\cookbook\views\edit.py:54 .\cookbook\views\import_export.py:71 +#: .\cookbook\views\new.py:36 +msgid "You have more users than allowed in your space." +msgstr "" + +#: .\cookbook\views\data.py:103 #, python-format msgid "Batch edit done. %(count)d recipe was updated." msgid_plural "Batch edit done. %(count)d Recipes where updated." @@ -1835,7 +2303,7 @@ msgid "Monitor" msgstr "Monitoratge" #: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:86 +#: .\cookbook\views\new.py:98 msgid "Storage Backend" msgstr "Backend d'emmagatzematge" @@ -1846,8 +2314,8 @@ msgstr "" "No s'ha pogut suprimir aquest fons d'emmagatzematge, ja que s'utilitza en " "almenys un monitor." -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:204 -#: .\cookbook\views\new.py:144 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 +#: .\cookbook\views\new.py:156 msgid "Recipe Book" msgstr "Llibre de Receptes" @@ -1855,55 +2323,55 @@ msgstr "Llibre de Receptes" msgid "Bookmarks" msgstr "Marcadors" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:214 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 msgid "Invite Link" msgstr "Enllaç de invitació" -#: .\cookbook\views\edit.py:110 +#: .\cookbook\views\edit.py:119 msgid "Food" msgstr "Menjar" -#: .\cookbook\views\edit.py:119 +#: .\cookbook\views\edit.py:128 msgid "You cannot edit this storage!" msgstr "No podeu editar aquest emmagatzematge." -#: .\cookbook\views\edit.py:139 +#: .\cookbook\views\edit.py:148 msgid "Storage saved!" msgstr "Emmagatzematge desat." -#: .\cookbook\views\edit.py:145 +#: .\cookbook\views\edit.py:154 msgid "There was an error updating this storage backend!" msgstr "S'ha produït un error en actualitzar aquest backend d'emmagatzematge." -#: .\cookbook\views\edit.py:156 +#: .\cookbook\views\edit.py:165 msgid "Storage" msgstr "Emmagatzematge" -#: .\cookbook\views\edit.py:252 +#: .\cookbook\views\edit.py:261 msgid "Changes saved!" msgstr "Canvis desats!" -#: .\cookbook\views\edit.py:256 +#: .\cookbook\views\edit.py:265 msgid "Error saving changes!" msgstr "Error al desar canvis!" -#: .\cookbook\views\edit.py:289 +#: .\cookbook\views\edit.py:299 msgid "Units merged!" msgstr "Unitats fusionades!" -#: .\cookbook\views\edit.py:291 .\cookbook\views\edit.py:307 +#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 msgid "Cannot merge with the same object!" msgstr "" -#: .\cookbook\views\edit.py:305 +#: .\cookbook\views\edit.py:315 msgid "Foods merged!" msgstr "Menjars Fusionats!" -#: .\cookbook\views\import_export.py:73 +#: .\cookbook\views\import_export.py:93 msgid "Importing is not implemented for this provider" msgstr "" -#: .\cookbook\views\import_export.py:92 +#: .\cookbook\views\import_export.py:115 msgid "Exporting is not implemented for this provider" msgstr "" @@ -1919,23 +2387,77 @@ msgstr "Descobriment" msgid "Shopping Lists" msgstr "Llistes de Compra" -#: .\cookbook\views\new.py:111 +#: .\cookbook\views\new.py:123 msgid "Imported new recipe!" msgstr "Nova Recepta importada!" -#: .\cookbook\views\new.py:114 +#: .\cookbook\views\new.py:126 msgid "There was an error importing this recipe!" msgstr "S'ha produït un error en importar la recepta!" -#: .\cookbook\views\views.py:123 +#: .\cookbook\views\new.py:226 +msgid "Hello" +msgstr "" + +#: .\cookbook\views\new.py:226 +msgid "You have been invited by " +msgstr "" + +#: .\cookbook\views\new.py:227 +msgid " to join their Tandoor Recipes space " +msgstr "" + +#: .\cookbook\views\new.py:228 +msgid "Click the following link to activate your account: " +msgstr "" + +#: .\cookbook\views\new.py:229 +msgid "" +"If the link does not work use the following code to manually join the space: " +msgstr "" + +#: .\cookbook\views\new.py:230 +msgid "The invitation is valid until " +msgstr "" + +#: .\cookbook\views\new.py:231 +msgid "" +"Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " +msgstr "" + +#: .\cookbook\views\new.py:234 +msgid "Tandoor Recipes Invite" +msgstr "" + +#: .\cookbook\views\new.py:241 +msgid "Invite link successfully send to user." +msgstr "" + +#: .\cookbook\views\new.py:244 +msgid "" +"You have send to many emails, please share the link manually or wait a few " +"hours." +msgstr "" + +#: .\cookbook\views\new.py:246 +msgid "Email to user could not be send, please share link manually." +msgstr "" + +#: .\cookbook\views\views.py:125 +msgid "" +"You have successfully created your own recipe space. Start by adding some " +"recipes or invite other people to join you." +msgstr "" + +#: .\cookbook\views\views.py:173 msgid "You do not have the required permissions to perform this action!" msgstr "No teniu els permisos necessaris per dur a terme aquesta acció!" -#: .\cookbook\views\views.py:134 +#: .\cookbook\views\views.py:184 msgid "Comment saved!" msgstr "Comentari Desat!" -#: .\cookbook\views\views.py:326 +#: .\cookbook\views\views.py:396 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -1945,22 +2467,59 @@ msgstr "" "Si heu oblidat les vostres credencials de superusuari, consulteu la " "documentació de django sobre com restablir les contrasenyes." -#: .\cookbook\views\views.py:333 .\cookbook\views\views.py:378 +#: .\cookbook\views\views.py:403 msgid "Passwords dont match!" msgstr "Les contrasenyes no coincideixen!" -#: .\cookbook\views\views.py:349 .\cookbook\views\views.py:385 +#: .\cookbook\views\views.py:419 msgid "User has been created, please login!" msgstr "L'usuari s'ha creat, si us plau inicieu la sessió!" -#: .\cookbook\views\views.py:365 +#: .\cookbook\views\views.py:435 msgid "Malformed Invite Link supplied!" msgstr "S'ha proporcionat un enllaç d'invitació mal format." -#: .\cookbook\views\views.py:405 +#: .\cookbook\views\views.py:441 +#, fuzzy +#| msgid "You are not logged in and therefore cannot view this page!" +msgid "You are already member of a space and therefore cannot join this one." +msgstr "No heu iniciat la sessió i, per tant, no podeu veure aquesta pàgina." + +#: .\cookbook\views\views.py:452 +msgid "Successfully joined space." +msgstr "" + +#: .\cookbook\views\views.py:458 msgid "Invite Link not valid or already used!" msgstr "L'enllaç d'invitació no és vàlid o ja s'ha utilitzat." +#~ msgid "" +#~ "A username is not required, if left blank the new user can choose one." +#~ msgstr "" +#~ "No cal un nom d’usuari, si es deixa en blanc el nou usuari en pot triar " +#~ "un." + +#~ msgid "Imported from" +#~ msgstr "Importat des de" + +#~ msgid "Link" +#~ msgstr "Enllaç" + +#~ msgid "Logout" +#~ msgstr "Tancar Sessió" + +#~ msgid "Website Import" +#~ msgstr "Importa desde Web" + +#~ msgid "There was an error creating a resource!" +#~ msgstr "S'ha produït un error en crear un recurs." + +#~ msgid "" +#~ "The requested page refused to provide any information (Status Code 403)." +#~ msgstr "" +#~ "La pàgina sol·licitada refusa a proporcionar cap informació (Codi d’estat " +#~ "403)." + #~ msgid "Number of servings" #~ msgstr "Nombre de racions" @@ -1979,6 +2538,3 @@ msgstr "L'enllaç d'invitació no és vàlid o ja s'ha utilitzat." #~ msgid "Preference for given user already exists" #~ msgstr "Ja existeix la preferència per a l'usuari" - -#~ msgid "Bookmark saved!" -#~ msgstr "Marcador desat!" diff --git a/cookbook/locale/de/LC_MESSAGES/django.po b/cookbook/locale/de/LC_MESSAGES/django.po index 9393eca9b..86a42dc31 100644 --- a/cookbook/locale/de/LC_MESSAGES/django.po +++ b/cookbook/locale/de/LC_MESSAGES/django.po @@ -14,11 +14,11 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: 2021-05-01 13:01+0000\n" "Last-Translator: Marcel Paluch \n" -"Language-Team: German \n" +"Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,14 +26,15 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.5.3\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:91 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 +#: .\cookbook\templates\forms\edit_internal_recipe.html:246 #: .\cookbook\templates\forms\ingredients.html:34 -#: .\cookbook\templates\stats.html:28 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\space.html:37 .\cookbook\templates\stats.html:28 +#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 msgid "Ingredients" msgstr "Zutaten" -#: .\cookbook\forms.py:45 +#: .\cookbook\forms.py:49 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" @@ -41,13 +42,13 @@ msgstr "" "Farbe der oberen Navigationsleiste. Nicht alle Farben passen, daher einfach " "mal ausprobieren!" -#: .\cookbook\forms.py:46 +#: .\cookbook\forms.py:51 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" "Standardeinheit, die beim Einfügen einer neuen Zutat in ein Rezept zu " "verwenden ist." -#: .\cookbook\forms.py:47 +#: .\cookbook\forms.py:53 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" @@ -55,7 +56,7 @@ msgstr "" "Unterstützung für Brüche in Zutaten aktivieren. Dadurch werden Dezimalzahlen " "mit Brüchen ersetzt, z.B. 0.5 mit ½." -#: .\cookbook\forms.py:48 +#: .\cookbook\forms.py:56 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." @@ -63,21 +64,21 @@ msgstr "" "Nutzer, mit denen neue Pläne und Einkaufslisten standardmäßig geteilt werden " "sollen." -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:58 msgid "Show recently viewed recipes on search page." msgstr "Zuletzt angeschaute Rezepte bei der Suche anzeigen." -#: .\cookbook\forms.py:50 +#: .\cookbook\forms.py:59 msgid "Number of decimals to round ingredients." msgstr "Anzahl an Dezimalstellen, auf die gerundet werden soll." -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:60 msgid "If you want to be able to create and see comments underneath recipes." msgstr "" "Wenn du in der Lage sein willst, Kommentare unter Rezepten zu erstellen und " "zu sehen." -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:62 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -89,11 +90,11 @@ msgstr "" "aktualisiert. Dies ist nützlich, wenn mehrere Personen eine Liste beim " "Einkaufen verwenden, benötigt jedoch etwas Datenvolumen." -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:65 msgid "Makes the navbar stick to the top of the page." msgstr "Navigationsleiste wird oben angeheftet." -#: .\cookbook\forms.py:72 +#: .\cookbook\forms.py:81 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" @@ -101,39 +102,42 @@ msgstr "" "Beide Felder sind optional. Wenn keins von beiden gegeben ist, wird der " "Nutzername angezeigt" -#: .\cookbook\forms.py:93 .\cookbook\forms.py:315 -#: .\cookbook\templates\forms\edit_internal_recipe.html:45 +#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "Name" -#: .\cookbook\forms.py:94 .\cookbook\forms.py:316 -#: .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:81 -#: .\cookbook\templates\stats.html:24 .\cookbook\templates\url_import.html:202 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 +#: .\cookbook\templates\base.html:105 +#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\templates\space.html:33 .\cookbook\templates\stats.html:24 +#: .\cookbook\templates\url_import.html:188 +#: .\cookbook\templates\url_import.html:573 msgid "Keywords" msgstr "Schlagwörter" -#: .\cookbook\forms.py:95 +#: .\cookbook\forms.py:104 msgid "Preparation time in minutes" msgstr "Zubereitungszeit in Minuten" -#: .\cookbook\forms.py:96 +#: .\cookbook\forms.py:105 msgid "Waiting time (cooking/baking) in minutes" msgstr "Wartezeit (kochen/backen) in Minuten" -#: .\cookbook\forms.py:97 .\cookbook\forms.py:317 +#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 msgid "Path" msgstr "Pfad" -#: .\cookbook\forms.py:98 +#: .\cookbook\forms.py:107 msgid "Storage UID" msgstr "Speicher-UID" -#: .\cookbook\forms.py:121 +#: .\cookbook\forms.py:133 msgid "Default" msgstr "Standard" -#: .\cookbook\forms.py:130 +#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." @@ -141,51 +145,51 @@ msgstr "" "Um Duplikate zu vermeiden werden Rezepte mit dem gleichen Namen ignoriert. " "Aktivieren Sie dieses Kontrollkästchen, um alles zu importieren." -#: .\cookbook\forms.py:149 +#: .\cookbook\forms.py:164 msgid "New Unit" msgstr "Neue Einheit" -#: .\cookbook\forms.py:150 +#: .\cookbook\forms.py:165 msgid "New unit that other gets replaced by." msgstr "Neue Einheit, die die alte ersetzt." -#: .\cookbook\forms.py:155 +#: .\cookbook\forms.py:170 msgid "Old Unit" msgstr "Alte Einheit" -#: .\cookbook\forms.py:156 +#: .\cookbook\forms.py:171 msgid "Unit that should be replaced." msgstr "Einheit, die ersetzt werden soll." -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:187 msgid "New Food" msgstr "Neue Zutat" -#: .\cookbook\forms.py:173 +#: .\cookbook\forms.py:188 msgid "New food that other gets replaced by." msgstr "Neue Zutat, die die alte ersetzt." -#: .\cookbook\forms.py:178 +#: .\cookbook\forms.py:193 msgid "Old Food" msgstr "Alte Zutat" -#: .\cookbook\forms.py:179 +#: .\cookbook\forms.py:194 msgid "Food that should be replaced." msgstr "Zutat, die ersetzt werden soll." -#: .\cookbook\forms.py:197 +#: .\cookbook\forms.py:212 msgid "Add your comment: " msgstr "Schreibe einen Kommentar: " -#: .\cookbook\forms.py:238 +#: .\cookbook\forms.py:253 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "Für Dropbox leer lassen, bei Nextcloud App-Passwort eingeben." -#: .\cookbook\forms.py:245 +#: .\cookbook\forms.py:260 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "Für Nextcloud leer lassen, für Dropbox API-Token eingeben." -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:269 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -193,79 +197,85 @@ msgstr "" "Für Dropbox leer lassen, für Nextcloud Server-URL angeben (/remote.php/" "webdav/ wird automatisch hinzugefügt)" -#: .\cookbook\forms.py:291 +#: .\cookbook\forms.py:307 msgid "Search String" msgstr "Suchwort" -#: .\cookbook\forms.py:318 +#: .\cookbook\forms.py:334 msgid "File ID" msgstr "Datei-ID" -#: .\cookbook\forms.py:354 +#: .\cookbook\forms.py:370 msgid "You must provide at least a recipe or a title." msgstr "Mindestens ein Rezept oder ein Titel müssen angegeben werden." -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:383 msgid "You can list default users to share recipes with in the settings." msgstr "" "Sie können in den Einstellungen Standardbenutzer auflisten, für die Sie " "Rezepte freigeben möchten." -#: .\cookbook\forms.py:368 -#: .\cookbook\templates\forms\edit_internal_recipe.html:377 +#: .\cookbook\forms.py:384 +#: .\cookbook\templates\forms\edit_internal_recipe.html:404 msgid "" "You can use markdown to format this field. See the docs here" msgstr "" -"Markdown kann genutzt werden, um dieses Feld zu formatieren. Siehe hier für weitere Information" +"Markdown kann genutzt werden, um dieses Feld zu formatieren. Siehe hier für weitere Information" -#: .\cookbook\forms.py:393 -msgid "A username is not required, if left blank the new user can choose one." +#: .\cookbook\forms.py:409 +msgid "Maximum number of users for this space reached." msgstr "" -"Kein Benutzername benötigt. Wenn leer gelassen, kann der neue Benutzer einen " -"wählen." -#: .\cookbook\helper\permission_helper.py:123 -#: .\cookbook\helper\permission_helper.py:129 -#: .\cookbook\helper\permission_helper.py:151 -#: .\cookbook\helper\permission_helper.py:196 -#: .\cookbook\helper\permission_helper.py:210 -#: .\cookbook\helper\permission_helper.py:221 -#: .\cookbook\helper\permission_helper.py:232 .\cookbook\views\data.py:30 -#: .\cookbook\views\views.py:112 .\cookbook\views\views.py:116 -#: .\cookbook\views\views.py:184 -msgid "You do not have the required permissions to view this page!" -msgstr "Du hast nicht die notwendigen Rechte um diese Seite zu sehen!" +#: .\cookbook\forms.py:415 +msgid "Email address already taken!" +msgstr "" -#: .\cookbook\helper\permission_helper.py:141 +#: .\cookbook\forms.py:423 +msgid "" +"An email address is not required but if present the invite link will be send " +"to the user." +msgstr "" + +#: .\cookbook\forms.py:438 +msgid "Name already taken." +msgstr "" + +#: .\cookbook\forms.py:449 +msgid "Accept Terms and Privacy" +msgstr "" + +#: .\cookbook\helper\AllAuthCustomAdapter.py:30 +msgid "" +"In order to prevent spam, the requested email was not send. Please wait a " +"few minutes and try again." +msgstr "" + +#: .\cookbook\helper\permission_helper.py:124 +#: .\cookbook\helper\permission_helper.py:144 .\cookbook\views\views.py:147 msgid "You are not logged in and therefore cannot view this page!" msgstr "Du bist nicht angemeldet, daher kannst du diese Seite nicht sehen!" -#: .\cookbook\helper\permission_helper.py:145 -#: .\cookbook\helper\permission_helper.py:167 -#: .\cookbook\helper\permission_helper.py:182 +#: .\cookbook\helper\permission_helper.py:127 +#: .\cookbook\helper\permission_helper.py:132 +#: .\cookbook\helper\permission_helper.py:154 +#: .\cookbook\helper\permission_helper.py:199 +#: .\cookbook\helper\permission_helper.py:213 +#: .\cookbook\helper\permission_helper.py:224 +#: .\cookbook\helper\permission_helper.py:235 .\cookbook\views\data.py:39 +#: .\cookbook\views\views.py:158 .\cookbook\views\views.py:165 +#: .\cookbook\views\views.py:253 +msgid "You do not have the required permissions to view this page!" +msgstr "Du hast nicht die notwendigen Rechte um diese Seite zu sehen!" + +#: .\cookbook\helper\permission_helper.py:148 +#: .\cookbook\helper\permission_helper.py:170 +#: .\cookbook\helper\permission_helper.py:185 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" "Du kannst mit diesem Objekt nicht interagieren, da es dir nicht gehört!" -#: .\cookbook\helper\recipe_url_import.py:40 .\cookbook\views\api.py:549 -msgid "The requested site provided malformed data and cannot be read." -msgstr "" -"Die angefragte Seite hat ungültige Daten zurückgegeben oder die Daten " -"konnten nicht verarbeitet werden." - -#: .\cookbook\helper\recipe_url_import.py:54 -msgid "" -"The requested site does not provide any recognized data format to import the " -"recipe from." -msgstr "" -"Die angefragte Seite stellt keine bekannten Datenformate zur Verfügung." - -#: .\cookbook\helper\recipe_url_import.py:160 -msgid "Imported from" -msgstr "Importiert von" - #: .\cookbook\helper\template_helper.py:60 #: .\cookbook\helper\template_helper.py:62 msgid "Could not parse template code." @@ -275,12 +285,16 @@ msgstr "Konnte den Template code nicht verarbeiten." #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 -#: .\cookbook\templates\url_import.html:233 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:190 +#: .\cookbook\templates\url_import.html:27 +#: .\cookbook\templates\url_import.html:101 +#: .\cookbook\templates\url_import.html:123 +#: .\cookbook\templates\url_import.html:317 +#: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 +#: .\cookbook\views\edit.py:199 msgid "Import" msgstr "Importieren" -#: .\cookbook\integration\integration.py:131 +#: .\cookbook\integration\integration.py:162 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" @@ -288,31 +302,38 @@ msgstr "" "Importer erwartet eine .zip Datei. Hast du den richtigen Importer-Typ für " "deine Daten ausgewählt?" -#: .\cookbook\integration\integration.py:134 +#: .\cookbook\integration\integration.py:165 +msgid "" +"An unexpected error occurred during the import. Please make sure you have " +"uploaded a valid file." +msgstr "" + +#: .\cookbook\integration\integration.py:169 msgid "The following recipes were ignored because they already existed:" msgstr "Die folgenden Rezepte wurden ignoriert da sie bereits existieren:" -#: .\cookbook\integration\integration.py:137 +#: .\cookbook\integration\integration.py:173 #, python-format msgid "Imported %s recipes." msgstr "%s Rezepte importiert." -#: .\cookbook\integration\paprika.py:44 +#: .\cookbook\integration\paprika.py:46 msgid "Notes" msgstr "Notizen" -#: .\cookbook\integration\paprika.py:47 +#: .\cookbook\integration\paprika.py:49 msgid "Nutritional Information" msgstr "Nährwert Informationen" -#: .\cookbook\integration\paprika.py:50 +#: .\cookbook\integration\paprika.py:53 msgid "Source" msgstr "Quelle" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:75 +#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 -#: .\cookbook\templates\url_import.html:84 +#: .\cookbook\templates\url_import.html:224 +#: .\cookbook\templates\url_import.html:455 #, fuzzy msgid "Servings" msgstr "Portionen" @@ -322,11 +343,11 @@ msgid "Waiting time" msgstr "Wartezeit" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:69 +#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "Vorbereitungszeit" -#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:71 +#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:78 #: .\cookbook\templates\forms\ingredients.html:7 #: .\cookbook\templates\index.html:7 msgid "Cookbook" @@ -352,44 +373,74 @@ msgstr "Abendessen" msgid "Other" msgstr "Andere" -#: .\cookbook\models.py:110 .\cookbook\templates\shopping_list.html:48 +#: .\cookbook\models.py:71 +msgid "" +"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " +"upload." +msgstr "" + +#: .\cookbook\models.py:121 .\cookbook\templates\search.html:7 +#: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "Suche" -#: .\cookbook\models.py:111 .\cookbook\templates\base.html:85 +#: .\cookbook\models.py:122 .\cookbook\templates\base.html:92 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:224 .\cookbook\views\new.py:188 +#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 msgid "Meal-Plan" msgstr "Essensplan" -#: .\cookbook\models.py:112 .\cookbook\templates\base.html:82 +#: .\cookbook\models.py:123 .\cookbook\templates\base.html:89 msgid "Books" msgstr "Bücher" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Small" msgstr "Klein" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Large" msgstr "Groß" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:198 +#: .\cookbook\models.py:131 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\templates\generic\new_template.html:14 +#: .\cookbook\templates\meal_plan.html:323 +msgid "New" +msgstr "Neu" + +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:202 msgid "Text" msgstr "Text" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:199 +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:203 msgid "Time" msgstr "Zeit" +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:204 +#: .\cookbook\templates\forms\edit_internal_recipe.html:218 +#, fuzzy +#| msgid "File ID" +msgid "File" +msgstr "Datei-ID" + +#: .\cookbook\serializer.py:109 +msgid "File uploads are not enabled for this Space." +msgstr "" + +#: .\cookbook\serializer.py:117 +msgid "You have reached your file upload limit." +msgstr "" + #: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 #: .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 #: .\cookbook\templates\shopping_list.html:33 +#: .\cookbook\templates\space.html:84 msgid "Edit" msgstr "Bearbeiten" @@ -403,10 +454,6 @@ msgstr "Bearbeiten" msgid "Delete" msgstr "Löschen" -#: .\cookbook\tables.py:144 -msgid "Link" -msgstr "Link" - #: .\cookbook\templates\404.html:5 msgid "404 Error" msgstr "404 Fehler" @@ -423,21 +470,126 @@ msgstr "Zur Hauptseite" msgid "Report a Bug" msgstr "Fehler melden" -#: .\cookbook\templates\account\login.html:7 -#: .\cookbook\templates\base.html:170 +#: .\cookbook\templates\account\email.html:6 +#: .\cookbook\templates\account\email.html:9 +msgid "E-mail Addresses" +msgstr "" + +#: .\cookbook\templates\account\email.html:11 +msgid "The following e-mail addresses are associated with your account:" +msgstr "" + +#: .\cookbook\templates\account\email.html:28 +msgid "Verified" +msgstr "" + +#: .\cookbook\templates\account\email.html:30 +msgid "Unverified" +msgstr "" + +#: .\cookbook\templates\account\email.html:32 +msgid "Primary" +msgstr "" + +#: .\cookbook\templates\account\email.html:39 +#, fuzzy +#| msgid "Make Header" +msgid "Make Primary" +msgstr "Überschrift erstellen" + +#: .\cookbook\templates\account\email.html:41 +msgid "Re-send Verification" +msgstr "" + +#: .\cookbook\templates\account\email.html:42 +#: .\cookbook\templates\socialaccount\connections.html:36 +msgid "Remove" +msgstr "Entfernen" + +#: .\cookbook\templates\account\email.html:50 +#, fuzzy +#| msgid "Warning" +msgid "Warning:" +msgstr "Warnung" + +#: .\cookbook\templates\account\email.html:50 +msgid "" +"You currently do not have any e-mail address set up. You should really add " +"an e-mail address so you can receive notifications, reset your password, etc." +msgstr "" + +#: .\cookbook\templates\account\email.html:56 +msgid "Add E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email.html:61 +msgid "Add E-mail" +msgstr "" + +#: .\cookbook\templates\account\email.html:71 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:6 +#: .\cookbook\templates\account\email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that\n" +" %(email)s is an e-mail address " +"for user %(user_display)s\n" +" ." +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:22 +#: .\cookbook\templates\generic\delete_template.html:21 +msgid "Confirm" +msgstr "Bestätigen" + +#: .\cookbook\templates\account\email_confirm.html:29 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please\n" +" issue a new e-mail confirmation " +"request." +msgstr "" + +#: .\cookbook\templates\account\login.html:8 +#: .\cookbook\templates\base.html:180 msgid "Login" msgstr "Anmelden" -#: .\cookbook\templates\account\login.html:13 -#: .\cookbook\templates\account\login.html:28 +#: .\cookbook\templates\account\login.html:15 +#: .\cookbook\templates\account\login.html:31 +#: .\cookbook\templates\account\signup.html:69 +#: .\cookbook\templates\account\signup_closed.html:15 msgid "Sign In" msgstr "Einloggen" -#: .\cookbook\templates\account\login.html:38 +#: .\cookbook\templates\account\login.html:32 +#, fuzzy +#| msgid "Sign In" +msgid "Sign Up" +msgstr "Einloggen" + +#: .\cookbook\templates\account\login.html:36 +#: .\cookbook\templates\account\login.html:37 +#: .\cookbook\templates\account\password_reset.html:29 +msgid "Reset My Password" +msgstr "" + +#: .\cookbook\templates\account\login.html:37 +msgid "Lost your password?" +msgstr "" + +#: .\cookbook\templates\account\login.html:48 msgid "Social Login" msgstr "Social Login" -#: .\cookbook\templates\account\login.html:39 +#: .\cookbook\templates\account\login.html:49 msgid "You can use any of the following providers to sign in." msgstr "Du kannst jeden der folgenden Anbieter zum Einloggen verwenden." @@ -451,116 +603,168 @@ msgstr "Ausloggen" msgid "Are you sure you want to sign out?" msgstr "Willst du dich wirklich ausloggen?" -#: .\cookbook\templates\account\password_reset.html:5 -#: .\cookbook\templates\account\password_reset_done.html:5 +#: .\cookbook\templates\account\password_reset.html:7 +#: .\cookbook\templates\account\password_reset.html:13 +#: .\cookbook\templates\account\password_reset_done.html:7 +#: .\cookbook\templates\account\password_reset_done.html:10 msgid "Password Reset" msgstr "Passwort Reset" -#: .\cookbook\templates\account\password_reset.html:9 -#: .\cookbook\templates\account\password_reset_done.html:9 -msgid "Password reset is not implemented for the time being!" +#: .\cookbook\templates\account\password_reset.html:24 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." +msgstr "" + +#: .\cookbook\templates\account\password_reset.html:32 +#, fuzzy +#| msgid "Password reset is not implemented for the time being!" +msgid "Password reset is disabled on this instance." msgstr "Passwort-Rücksetzung ist derzeit noch nicht implementiert!" -#: .\cookbook\templates\account\signup.html:5 +#: .\cookbook\templates\account\password_reset_done.html:16 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: .\cookbook\templates\account\signup.html:6 msgid "Register" msgstr "Registrieren" -#: .\cookbook\templates\account\signup.html:9 -msgid "Create your Account" +#: .\cookbook\templates\account\signup.html:12 +#, fuzzy +#| msgid "Create your Account" +msgid "Create an Account" msgstr "Account erstellen" -#: .\cookbook\templates\account\signup.html:14 +#: .\cookbook\templates\account\signup.html:42 +msgid "I accept the follwoing" +msgstr "" + +#: .\cookbook\templates\account\signup.html:45 +msgid "Terms and Conditions" +msgstr "" + +#: .\cookbook\templates\account\signup.html:48 +msgid "and" +msgstr "" + +#: .\cookbook\templates\account\signup.html:52 +msgid "Privacy Policy" +msgstr "" + +#: .\cookbook\templates\account\signup.html:65 msgid "Create User" msgstr "Nutzer erstellen" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:160 +#: .\cookbook\templates\account\signup.html:69 +msgid "Already have an account?" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:5 +#: .\cookbook\templates\account\signup_closed.html:11 +msgid "Sign Up Closed" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:13 +msgid "We are sorry, but the sign up is currently closed." +msgstr "" + +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:170 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "API-Dokumentation" -#: .\cookbook\templates\base.html:78 +#: .\cookbook\templates\base.html:85 msgid "Utensils" msgstr "Utensilien" -#: .\cookbook\templates\base.html:88 +#: .\cookbook\templates\base.html:95 msgid "Shopping" msgstr "Einkaufsliste" -#: .\cookbook\templates\base.html:102 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:93 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:66 +#: .\cookbook\templates\base.html:109 .\cookbook\views\delete.py:84 +#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 +#: .\cookbook\views\new.py:78 msgid "Keyword" msgstr "Schlagwort" -#: .\cookbook\templates\base.html:104 +#: .\cookbook\templates\base.html:111 msgid "Batch Edit" msgstr "Massenbearbeitung" -#: .\cookbook\templates\base.html:109 +#: .\cookbook\templates\base.html:116 msgid "Storage Data" msgstr "Datenquellen" -#: .\cookbook\templates\base.html:113 +#: .\cookbook\templates\base.html:120 msgid "Storage Backends" msgstr "Speicherquellen" -#: .\cookbook\templates\base.html:115 +#: .\cookbook\templates\base.html:122 msgid "Configure Sync" msgstr "Synchronisation einstellen" -#: .\cookbook\templates\base.html:117 +#: .\cookbook\templates\base.html:124 msgid "Discovered Recipes" msgstr "Entdeckte Rezepte" -#: .\cookbook\templates\base.html:119 +#: .\cookbook\templates\base.html:126 msgid "Discovery Log" msgstr "Entdeckungsverlauf" -#: .\cookbook\templates\base.html:121 .\cookbook\templates\stats.html:10 +#: .\cookbook\templates\base.html:128 .\cookbook\templates\stats.html:10 msgid "Statistics" msgstr "Statistiken" -#: .\cookbook\templates\base.html:123 +#: .\cookbook\templates\base.html:130 msgid "Units & Ingredients" msgstr "Einheiten & Zutaten" -#: .\cookbook\templates\base.html:125 +#: .\cookbook\templates\base.html:132 .\cookbook\templates\index.html:47 msgid "Import Recipe" msgstr "Rezept importieren" -#: .\cookbook\templates\base.html:144 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:151 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:16 msgid "Settings" msgstr "Einstellungen" -#: .\cookbook\templates\base.html:146 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:153 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "Verlauf" -#: .\cookbook\templates\base.html:150 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:155 .\cookbook\templates\space.html:7 +#, fuzzy +#| msgid "Settings" +msgid "Space Settings" +msgstr "Einstellungen" + +#: .\cookbook\templates\base.html:160 .\cookbook\templates\system.html:13 msgid "System" msgstr "System" -#: .\cookbook\templates\base.html:152 +#: .\cookbook\templates\base.html:162 msgid "Admin" msgstr "Admin" -#: .\cookbook\templates\base.html:156 +#: .\cookbook\templates\base.html:166 msgid "Markdown Guide" msgstr "Markdown-Anleitung" -#: .\cookbook\templates\base.html:158 +#: .\cookbook\templates\base.html:168 msgid "GitHub" msgstr "GitHub" -#: .\cookbook\templates\base.html:162 +#: .\cookbook\templates\base.html:172 msgid "API Browser" msgstr "API Browser" -#: .\cookbook\templates\base.html:165 -msgid "Logout" -msgstr "Abmelden" +#: .\cookbook\templates\base.html:175 +msgid "Log out" +msgstr "" #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" @@ -576,7 +780,7 @@ msgstr "" "Ausgewählte Schlagwörter zu allen Rezepten, die das Suchwort enthalten, " "hinzufügen" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:76 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 msgid "Sync" msgstr "Synchronisieren" @@ -605,7 +809,7 @@ msgstr "Jetzt Synchronisieren!" msgid "Importing Recipes" msgstr "Rezepte werden importiert" -#: .\cookbook\templates\batch\waiting.html:23 +#: .\cookbook\templates\batch\waiting.html:28 msgid "" "This can take a few minutes, depending on the number of recipes in sync, " "please wait." @@ -644,26 +848,33 @@ msgid "Export Recipes" msgstr "Rezepte exportieren" #: .\cookbook\templates\export.html:14 .\cookbook\templates\export.html:20 -#: .\cookbook\templates\shopping_list.html:347 +#: .\cookbook\templates\shopping_list.html:351 #: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20 msgid "Export" msgstr "Exportieren" +#: .\cookbook\templates\files.html:7 +#, fuzzy +#| msgid "File ID" +msgid "Files" +msgstr "Datei-ID" + #: .\cookbook\templates\forms\edit_import_recipe.html:5 #: .\cookbook\templates\forms\edit_import_recipe.html:9 msgid "Import new Recipe" msgstr "Rezept importieren" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:389 -#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:416 +#: .\cookbook\templates\forms\edit_internal_recipe.html:448 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:28 .\cookbook\templates\settings.html:35 -#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:73 -#: .\cookbook\templates\shopping_list.html:349 +#: .\cookbook\templates\settings.html:44 .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:114 +#: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "Speichern" @@ -672,179 +883,188 @@ msgstr "Speichern" msgid "Edit Recipe" msgstr "Rezept bearbeiten" -#: .\cookbook\templates\forms\edit_internal_recipe.html:52 +#: .\cookbook\templates\forms\edit_internal_recipe.html:56 +#: .\cookbook\templates\url_import.html:171 msgid "Description" msgstr "Beschreibung" -#: .\cookbook\templates\forms\edit_internal_recipe.html:72 +#: .\cookbook\templates\forms\edit_internal_recipe.html:76 msgid "Waiting Time" msgstr "Wartezeit" -#: .\cookbook\templates\forms\edit_internal_recipe.html:78 +#: .\cookbook\templates\forms\edit_internal_recipe.html:82 msgid "Servings Text" msgstr "Portionen-Text" -#: .\cookbook\templates\forms\edit_internal_recipe.html:89 +#: .\cookbook\templates\forms\edit_internal_recipe.html:93 msgid "Select Keywords" msgstr "Schlagwörter wählen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:90 -#: .\cookbook\templates\url_import.html:212 +#: .\cookbook\templates\forms\edit_internal_recipe.html:94 +#: .\cookbook\templates\url_import.html:583 msgid "Add Keyword" msgstr "Schlagwort hinzufügen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:108 +#: .\cookbook\templates\forms\edit_internal_recipe.html:112 msgid "Nutrition" msgstr "Nährwerte" -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -#: .\cookbook\templates\forms\edit_internal_recipe.html:162 +#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:166 msgid "Delete Step" msgstr "Schritt löschen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:120 msgid "Calories" msgstr "Kalorien" -#: .\cookbook\templates\forms\edit_internal_recipe.html:119 +#: .\cookbook\templates\forms\edit_internal_recipe.html:123 msgid "Carbohydrates" msgstr "Kohlenhydrate" -#: .\cookbook\templates\forms\edit_internal_recipe.html:122 +#: .\cookbook\templates\forms\edit_internal_recipe.html:126 msgid "Fats" msgstr "Fette" -#: .\cookbook\templates\forms\edit_internal_recipe.html:124 +#: .\cookbook\templates\forms\edit_internal_recipe.html:128 msgid "Proteins" msgstr "Proteine" -#: .\cookbook\templates\forms\edit_internal_recipe.html:146 -#: .\cookbook\templates\forms\edit_internal_recipe.html:454 +#: .\cookbook\templates\forms\edit_internal_recipe.html:150 +#: .\cookbook\templates\forms\edit_internal_recipe.html:481 msgid "Step" msgstr "Schritt" -#: .\cookbook\templates\forms\edit_internal_recipe.html:167 +#: .\cookbook\templates\forms\edit_internal_recipe.html:171 msgid "Show as header" msgstr "Als Überschrift anzeigen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:173 +#: .\cookbook\templates\forms\edit_internal_recipe.html:177 msgid "Hide as header" msgstr "Nicht als Überschrift anzeigen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:178 +#: .\cookbook\templates\forms\edit_internal_recipe.html:182 msgid "Move Up" msgstr "Nach oben" -#: .\cookbook\templates\forms\edit_internal_recipe.html:183 +#: .\cookbook\templates\forms\edit_internal_recipe.html:187 msgid "Move Down" msgstr "Nach unten" -#: .\cookbook\templates\forms\edit_internal_recipe.html:192 +#: .\cookbook\templates\forms\edit_internal_recipe.html:196 msgid "Step Name" msgstr "Name des Schritts" -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:200 msgid "Step Type" msgstr "Art des Schritts" -#: .\cookbook\templates\forms\edit_internal_recipe.html:207 +#: .\cookbook\templates\forms\edit_internal_recipe.html:212 msgid "Step time in Minutes" msgstr "Zeit in Minuten" -#: .\cookbook\templates\forms\edit_internal_recipe.html:261 -#: .\cookbook\templates\shopping_list.html:183 -msgid "Select Unit" -msgstr "Einheit wählen" +#: .\cookbook\templates\forms\edit_internal_recipe.html:228 +#, fuzzy +#| msgid "Select one" +msgid "Select File" +msgstr "Auswählen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:262 -#: .\cookbook\templates\forms\edit_internal_recipe.html:286 -#: .\cookbook\templates\shopping_list.html:184 -#: .\cookbook\templates\shopping_list.html:206 -msgid "Create" -msgstr "Erstellen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:263 -#: .\cookbook\templates\forms\edit_internal_recipe.html:287 -#: .\cookbook\templates\shopping_list.html:185 -#: .\cookbook\templates\shopping_list.html:207 -#: .\cookbook\templates\shopping_list.html:237 -#: .\cookbook\templates\shopping_list.html:261 -#: .\cookbook\templates\url_import.html:124 -#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\forms\edit_internal_recipe.html:229 +#: .\cookbook\templates\forms\edit_internal_recipe.html:290 +#: .\cookbook\templates\forms\edit_internal_recipe.html:314 +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 msgid "Select" msgstr "Auswählen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:285 -#: .\cookbook\templates\shopping_list.html:205 +#: .\cookbook\templates\forms\edit_internal_recipe.html:288 +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "Einheit wählen" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:289 +#: .\cookbook\templates\forms\edit_internal_recipe.html:313 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "Erstellen" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:312 +#: .\cookbook\templates\shopping_list.html:209 msgid "Select Food" msgstr "Zutat auswählen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:302 +#: .\cookbook\templates\forms\edit_internal_recipe.html:329 #: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:171 +#: .\cookbook\templates\url_import.html:542 msgid "Note" msgstr "Notiz" -#: .\cookbook\templates\forms\edit_internal_recipe.html:319 +#: .\cookbook\templates\forms\edit_internal_recipe.html:346 msgid "Delete Ingredient" msgstr "Zutat löschen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:325 +#: .\cookbook\templates\forms\edit_internal_recipe.html:352 msgid "Make Header" msgstr "Überschrift erstellen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:358 msgid "Make Ingredient" msgstr "Zutat erstellen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 +#: .\cookbook\templates\forms\edit_internal_recipe.html:364 msgid "Disable Amount" msgstr "Menge deaktivieren" -#: .\cookbook\templates\forms\edit_internal_recipe.html:343 +#: .\cookbook\templates\forms\edit_internal_recipe.html:370 msgid "Enable Amount" msgstr "Menge aktivieren" -#: .\cookbook\templates\forms\edit_internal_recipe.html:348 +#: .\cookbook\templates\forms\edit_internal_recipe.html:375 msgid "Copy Template Reference" msgstr "Kopiere Vorlagen-Referenz" -#: .\cookbook\templates\forms\edit_internal_recipe.html:374 -#: .\cookbook\templates\url_import.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:401 +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 msgid "Instructions" msgstr "Anleitung" -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:414 +#: .\cookbook\templates\forms\edit_internal_recipe.html:445 msgid "Save & View" msgstr "Speichern & Ansehen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:391 -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 +#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:451 msgid "Add Step" msgstr "Schritt hinzufügen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:394 -#: .\cookbook\templates\forms\edit_internal_recipe.html:428 +#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:455 msgid "Add Nutrition" msgstr "Nährwerte hinzufügen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:396 -#: .\cookbook\templates\forms\edit_internal_recipe.html:430 +#: .\cookbook\templates\forms\edit_internal_recipe.html:423 +#: .\cookbook\templates\forms\edit_internal_recipe.html:457 msgid "Remove Nutrition" msgstr "Nährwerte entfernen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -#: .\cookbook\templates\forms\edit_internal_recipe.html:433 +#: .\cookbook\templates\forms\edit_internal_recipe.html:425 +#: .\cookbook\templates\forms\edit_internal_recipe.html:460 msgid "View Recipe" msgstr "Rezept ansehen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:400 -#: .\cookbook\templates\forms\edit_internal_recipe.html:435 +#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\templates\forms\edit_internal_recipe.html:462 msgid "Delete Recipe" msgstr "Rezept löschen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 +#: .\cookbook\templates\forms\edit_internal_recipe.html:468 msgid "Steps" msgstr "Schritte" @@ -871,7 +1091,7 @@ msgstr "" " " #: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\stats.html:26 +#: .\cookbook\templates\space.html:35 .\cookbook\templates\stats.html:26 msgid "Units" msgstr "Einheiten" @@ -896,10 +1116,6 @@ msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "" "Bist du sicher, dass %(title)s: %(object)s gelöscht werden soll?" -#: .\cookbook\templates\generic\delete_template.html:21 -msgid "Confirm" -msgstr "Bestätigen" - #: .\cookbook\templates\generic\edit_template.html:30 msgid "View" msgstr "Anschauen" @@ -921,12 +1137,6 @@ msgstr "Filter" msgid "Import all" msgstr "Alle importieren" -#: .\cookbook\templates\generic\new_template.html:6 -#: .\cookbook\templates\generic\new_template.html:14 -#: .\cookbook\templates\meal_plan.html:323 -msgid "New" -msgstr "Neu" - #: .\cookbook\templates\generic\table_template.html:76 #: .\cookbook\templates\recipes_table.html:121 msgid "previous" @@ -971,7 +1181,7 @@ msgstr "Schließen" #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:264 .\cookbook\views\new.py:40 +#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "Rezept" @@ -1013,10 +1223,6 @@ msgstr "Rezept suchen..." msgid "New Recipe" msgstr "Neues Rezept" -#: .\cookbook\templates\index.html:47 -msgid "Website Import" -msgstr "Webseiten-Import" - #: .\cookbook\templates\index.html:53 msgid "Advanced Search" msgstr "Erweiterte Suche" @@ -1030,7 +1236,7 @@ msgid "Last viewed" msgstr "Zuletzt angesehen" #: .\cookbook\templates\index.html:87 .\cookbook\templates\meal_plan.html:178 -#: .\cookbook\templates\stats.html:22 +#: .\cookbook\templates\space.html:29 .\cookbook\templates\stats.html:22 msgid "Recipes" msgstr "Rezepte" @@ -1192,7 +1398,7 @@ msgid "New Entry" msgstr "Neuer Eintrag" #: .\cookbook\templates\meal_plan.html:113 -#: .\cookbook\templates\shopping_list.html:52 +#: .\cookbook\templates\shopping_list.html:56 msgid "Search Recipe" msgstr "Rezept suchen" @@ -1224,7 +1430,7 @@ msgstr "Nur Notiz erstellen" #: .\cookbook\templates\meal_plan.html:168 #: .\cookbook\templates\shopping_list.html:7 #: .\cookbook\templates\shopping_list.html:29 -#: .\cookbook\templates\shopping_list.html:705 +#: .\cookbook\templates\shopping_list.html:714 msgid "Shopping List" msgstr "Einkaufsliste" @@ -1276,7 +1482,7 @@ msgstr "Erstellt von" #: .\cookbook\templates\meal_plan.html:270 #: .\cookbook\templates\meal_plan_entry.html:20 -#: .\cookbook\templates\shopping_list.html:250 +#: .\cookbook\templates\shopping_list.html:254 msgid "Shared with" msgstr "Geteilt mit" @@ -1374,7 +1580,6 @@ msgstr "Du hast keine Gruppe und kannst daher diese Anwendung nicht nutzen." #: .\cookbook\templates\no_groups_info.html:18 #: .\cookbook\templates\no_perm_info.html:15 -#: .\cookbook\templates\no_space_info.html:15 msgid "Please contact your administrator." msgstr "Bitte kontaktiere einen Administrator." @@ -1391,14 +1596,53 @@ msgstr "" "Du hast nicht die notwendige Berechtigung, um diese Seite anzusehen oder " "diese Aktion durchzuführen!" -#: .\cookbook\templates\no_space_info.html:5 -#: .\cookbook\templates\no_space_info.html:12 +#: .\cookbook\templates\no_space_info.html:6 +#: .\cookbook\templates\no_space_info.html:13 msgid "No Space" msgstr "Kein Space" -#: .\cookbook\templates\no_space_info.html:15 -msgid "You are not a member of any space." -msgstr "Du bist kein Mitglied von einem Space." +#: .\cookbook\templates\no_space_info.html:17 +msgid "" +"Recipes, foods, shopping lists and more are organized in spaces of one or " +"more people." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:18 +msgid "" +"You can either be invited into an existing space or create your own one." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:31 +#: .\cookbook\templates\no_space_info.html:40 +#, fuzzy +#| msgid "No Space" +msgid "Join Space" +msgstr "Kein Space" + +#: .\cookbook\templates\no_space_info.html:34 +msgid "Join an existing space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:35 +msgid "" +"To join an existing space either enter your invite token or click on the " +"invite link the space owner send you." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:48 +#: .\cookbook\templates\no_space_info.html:56 +#, fuzzy +#| msgid "Create User" +msgid "Create Space" +msgstr "Nutzer erstellen" + +#: .\cookbook\templates\no_space_info.html:51 +msgid "Create your own recipe space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:52 +msgid "Start your own recipe space and invite other users to it." +msgstr "" #: .\cookbook\templates\offline.html:6 msgid "Offline" @@ -1416,28 +1660,29 @@ msgstr "" "Die unterhalb aufgelisteten Rezepte sind offline verfügbar, da du sie vor " "kurzem angesehen hast. Beachte, dass die Daten veraltetet sein könnten." -#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\stats.html:47 +#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\space.html:56 +#: .\cookbook\templates\stats.html:47 msgid "Comments" msgstr "Kommentare" #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:170 +#: .\cookbook\views\edit.py:179 msgid "Comment" msgstr "Kommentar" #: .\cookbook\templates\recipes_table.html:19 #: .\cookbook\templates\recipes_table.html:23 -#: .\cookbook\templates\url_import.html:69 +#: .\cookbook\templates\url_import.html:440 msgid "Recipe Image" msgstr "Rezeptbild" #: .\cookbook\templates\recipes_table.html:51 -#: .\cookbook\templates\url_import.html:74 +#: .\cookbook\templates\url_import.html:445 msgid "Preparation time ca." msgstr "Zubereitungszeit ca." #: .\cookbook\templates\recipes_table.html:57 -#: .\cookbook\templates\url_import.html:79 +#: .\cookbook\templates\url_import.html:450 msgid "Waiting time ca." msgstr "Wartezeit ca." @@ -1453,27 +1698,67 @@ msgstr "Kochen protokollieren" msgid "Recipe Home" msgstr "Rezept-Hauptseite" -#: .\cookbook\templates\settings.html:22 +#: .\cookbook\templates\settings.html:23 msgid "Account" msgstr "Account" -#: .\cookbook\templates\settings.html:38 -msgid "Link social account" +#: .\cookbook\templates\settings.html:27 +msgid "Preferences" +msgstr "" + +#: .\cookbook\templates\settings.html:31 +#, fuzzy +#| msgid "Settings" +msgid "API-Settings" +msgstr "Einstellungen" + +#: .\cookbook\templates\settings.html:39 +#, fuzzy +#| msgid "Settings" +msgid "Name Settings" +msgstr "Einstellungen" + +#: .\cookbook\templates\settings.html:47 +#, fuzzy +#| msgid "Password Reset" +msgid "Password Settings" +msgstr "Passwort Reset" + +#: .\cookbook\templates\settings.html:55 +#, fuzzy +#| msgid "Settings" +msgid "Email Settings" +msgstr "Einstellungen" + +#: .\cookbook\templates\settings.html:57 +msgid "Manage Email Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:61 +#, fuzzy +#| msgid "Social Login" +msgid "Social" +msgstr "Social Login" + +#: .\cookbook\templates\settings.html:63 +#, fuzzy +#| msgid "Link social account" +msgid "Manage Social Accounts" msgstr "Social Account verlinken" -#: .\cookbook\templates\settings.html:42 +#: .\cookbook\templates\settings.html:75 msgid "Language" msgstr "Sprache" -#: .\cookbook\templates\settings.html:67 +#: .\cookbook\templates\settings.html:105 msgid "Style" msgstr "Stil" -#: .\cookbook\templates\settings.html:79 +#: .\cookbook\templates\settings.html:125 msgid "API Token" msgstr "API-Token" -#: .\cookbook\templates\settings.html:80 +#: .\cookbook\templates\settings.html:126 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." @@ -1481,7 +1766,7 @@ msgstr "" "Sowohl Basic Authentication als auch tokenbasierte Authentifizierung können " "für die REST-API verwendet werden." -#: .\cookbook\templates\settings.html:92 +#: .\cookbook\templates\settings.html:143 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" @@ -1489,7 +1774,7 @@ msgstr "" "Nutz den Token als Authorization-Header mit der Präfix \"Token\" wie in " "folgendem Beispiel:" -#: .\cookbook\templates\settings.html:94 +#: .\cookbook\templates\settings.html:145 msgid "or" msgstr "oder" @@ -1512,58 +1797,55 @@ msgstr "" msgid "Create Superuser account" msgstr "Administrator-Account Erstellen" -#: .\cookbook\templates\shopping_list.html:75 +#: .\cookbook\templates\shopping_list.html:79 msgid "Shopping Recipes" msgstr "Einkaufs-Rezepte" -#: .\cookbook\templates\shopping_list.html:79 +#: .\cookbook\templates\shopping_list.html:83 msgid "No recipes selected" msgstr "Keine Rezepte ausgewählt" -#: .\cookbook\templates\shopping_list.html:146 +#: .\cookbook\templates\shopping_list.html:150 msgid "Entry Mode" msgstr "Eintrags-Modus" -#: .\cookbook\templates\shopping_list.html:154 +#: .\cookbook\templates\shopping_list.html:158 msgid "Add Entry" msgstr "Eintrag hinzufügen" -#: .\cookbook\templates\shopping_list.html:170 +#: .\cookbook\templates\shopping_list.html:174 msgid "Amount" msgstr "Menge" -#: .\cookbook\templates\shopping_list.html:226 +#: .\cookbook\templates\shopping_list.html:230 +#: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "Supermarkt" -#: .\cookbook\templates\shopping_list.html:236 +#: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "Supermarkt auswählen" -#: .\cookbook\templates\shopping_list.html:260 +#: .\cookbook\templates\shopping_list.html:264 msgid "Select User" msgstr "Nutzer auswählen" -#: .\cookbook\templates\shopping_list.html:279 +#: .\cookbook\templates\shopping_list.html:283 msgid "Finished" msgstr "Erledigt" -#: .\cookbook\templates\shopping_list.html:292 +#: .\cookbook\templates\shopping_list.html:296 msgid "You are offline, shopping list might not syncronize." msgstr "Du bist offline, die Einkaufsliste wird ggf. nicht synchronisiert." -#: .\cookbook\templates\shopping_list.html:357 +#: .\cookbook\templates\shopping_list.html:361 msgid "Copy/Export" msgstr "Kopieren/Exportieren" -#: .\cookbook\templates\shopping_list.html:361 +#: .\cookbook\templates\shopping_list.html:365 msgid "List Prefix" msgstr "Listenpräfix" -#: .\cookbook\templates\shopping_list.html:708 -msgid "There was an error creating a resource!" -msgstr "Es gab einen Fehler beim Erstellen einer Ressource!" - #: .\cookbook\templates\socialaccount\connections.html:4 #: .\cookbook\templates\socialaccount\connections.html:7 msgid "Account Connections" @@ -1577,10 +1859,6 @@ msgstr "" "Du kannst dich mit den folgenden Drittanbieter-Accounts\n" " anmelden:" -#: .\cookbook\templates\socialaccount\connections.html:36 -msgid "Remove" -msgstr "Entfernen" - #: .\cookbook\templates\socialaccount\connections.html:44 msgid "" "You currently have no social network accounts connected to this account." @@ -1591,38 +1869,99 @@ msgstr "" msgid "Add a 3rd Party Account" msgstr "Fremden Account hinzufügen" -#: .\cookbook\templates\stats.html:4 -msgid "Stats" -msgstr "Statistiken" +#: .\cookbook\templates\space.html:18 +#, fuzzy +#| msgid "Description" +msgid "Manage Subscription" +msgstr "Beschreibung" -#: .\cookbook\templates\stats.html:19 +#: .\cookbook\templates\space.html:26 .\cookbook\templates\stats.html:19 msgid "Number of objects" msgstr "Anzahl an Objekten" -#: .\cookbook\templates\stats.html:30 +#: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:30 msgid "Recipe Imports" msgstr "Importierte Rezepte" -#: .\cookbook\templates\stats.html:38 +#: .\cookbook\templates\space.html:47 .\cookbook\templates\stats.html:38 msgid "Objects stats" msgstr "Objekt-Statistiken" -#: .\cookbook\templates\stats.html:41 +#: .\cookbook\templates\space.html:50 .\cookbook\templates\stats.html:41 msgid "Recipes without Keywords" msgstr "Rezepte ohne Schlagwort" -#: .\cookbook\templates\stats.html:43 +#: .\cookbook\templates\space.html:52 .\cookbook\templates\stats.html:43 msgid "External Recipes" msgstr "Externe Rezepte" -#: .\cookbook\templates\stats.html:45 +#: .\cookbook\templates\space.html:54 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "Interne Rezepte" -#: .\cookbook\templates\system.html:21 .\cookbook\views\lists.py:115 +#: .\cookbook\templates\space.html:67 +msgid "Members" +msgstr "" + +#: .\cookbook\templates\space.html:71 +#, fuzzy +#| msgid "Invite Links" +msgid "Invite User" +msgstr "Einladungslinks" + +#: .\cookbook\templates\space.html:82 +msgid "User" +msgstr "" + +#: .\cookbook\templates\space.html:83 +msgid "Groups" +msgstr "" + +#: .\cookbook\templates\space.html:99 +#, fuzzy +#| msgid "Admin" +msgid "admin" +msgstr "Admin" + +#: .\cookbook\templates\space.html:100 +msgid "user" +msgstr "" + +#: .\cookbook\templates\space.html:101 +msgid "guest" +msgstr "" + +#: .\cookbook\templates\space.html:102 +#, fuzzy +#| msgid "Remove" +msgid "remove" +msgstr "Entfernen" + +#: .\cookbook\templates\space.html:106 +msgid "Update" +msgstr "" + +#: .\cookbook\templates\space.html:110 +#, fuzzy +#| msgid "You cannot edit this storage!" +msgid "You cannot edit yourself." +msgstr "Du kannst diese Speicherquelle nicht bearbeiten!" + +#: .\cookbook\templates\space.html:117 +#, fuzzy +#| msgid "There are no recipes in this book yet." +msgid "There are no members in your space yet!" +msgstr "In diesem Buch sind bisher noch keine Rezepte." + +#: .\cookbook\templates\space.html:124 .\cookbook\templates\system.html:21 +#: .\cookbook\views\lists.py:115 msgid "Invite Links" msgstr "Einladungslinks" +#: .\cookbook\templates\stats.html:4 +msgid "Stats" +msgstr "Statistiken" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "Links anzeigen" @@ -1746,45 +2085,157 @@ msgstr "" "Ordnung, wird aber nicht empfohlen, da einige\n" "Funktionen nur mit einer Postgres-Datenbanken funktionieren." -#: .\cookbook\templates\url_import.html:5 +#: .\cookbook\templates\url_import.html:6 msgid "URL Import" msgstr "URL-Import" -#: .\cookbook\templates\url_import.html:23 +#: .\cookbook\templates\url_import.html:31 +msgid "Drag me to your bookmarks to import recipes from anywhere" +msgstr "" + +#: .\cookbook\templates\url_import.html:32 +#, fuzzy +#| msgid "Bookmark saved!" +msgid "Bookmark Me!" +msgstr "Lesezeichen gespeichert!" + +#: .\cookbook\templates\url_import.html:61 msgid "Enter website URL" msgstr "Webseite-URL eingeben" -#: .\cookbook\templates\url_import.html:36 -msgid "Enter json directly" -msgstr "JSON direkt eingeben" +#: .\cookbook\templates\url_import.html:97 +msgid "Select recipe files to import or drop them here..." +msgstr "" -#: .\cookbook\templates\url_import.html:57 +#: .\cookbook\templates\url_import.html:118 +msgid "Paste json or html source here to load recipe." +msgstr "" + +#: .\cookbook\templates\url_import.html:146 +#, fuzzy +#| msgid "View Recipe" +msgid "Preview Recipe Data" +msgstr "Rezept ansehen" + +#: .\cookbook\templates\url_import.html:147 +msgid "Drag recipe attributes from the right into the appropriate box below." +msgstr "" + +#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\url_import.html:173 +#: .\cookbook\templates\url_import.html:190 +#: .\cookbook\templates\url_import.html:209 +#: .\cookbook\templates\url_import.html:227 +#: .\cookbook\templates\url_import.html:242 +#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:273 +#: .\cookbook\templates\url_import.html:300 +#: .\cookbook\templates\url_import.html:351 +msgid "Clear Contents" +msgstr "" + +#: .\cookbook\templates\url_import.html:158 +msgid "Text dragged here will be appended to the name." +msgstr "" + +#: .\cookbook\templates\url_import.html:175 +msgid "Text dragged here will be appended to the description." +msgstr "" + +#: .\cookbook\templates\url_import.html:192 +msgid "Keywords dragged here will be appended to current list" +msgstr "" + +#: .\cookbook\templates\url_import.html:207 +msgid "Image" +msgstr "" + +#: .\cookbook\templates\url_import.html:239 +#, fuzzy +#| msgid "Preparation Time" +msgid "Prep Time" +msgstr "Vorbereitungszeit" + +#: .\cookbook\templates\url_import.html:254 +#, fuzzy +#| msgid "Time" +msgid "Cook Time" +msgstr "Zeit" + +#: .\cookbook\templates\url_import.html:275 +msgid "Ingredients dragged here will be appended to current list." +msgstr "" + +#: .\cookbook\templates\url_import.html:302 +msgid "" +"Recipe instructions dragged here will be appended to current instructions." +msgstr "" + +#: .\cookbook\templates\url_import.html:325 +#, fuzzy +#| msgid "Discovered Recipes" +msgid "Discovered Attributes" +msgstr "Entdeckte Rezepte" + +#: .\cookbook\templates\url_import.html:327 +msgid "" +"Drag recipe attributes from below into the appropriate box on the left. " +"Click any node to display its full properties." +msgstr "" + +#: .\cookbook\templates\url_import.html:344 +#, fuzzy +#| msgid "Show as header" +msgid "Show Blank Field" +msgstr "Als Überschrift anzeigen" + +#: .\cookbook\templates\url_import.html:349 +msgid "Blank Field" +msgstr "" + +#: .\cookbook\templates\url_import.html:353 +msgid "Items dragged to Blank Field will be appended." +msgstr "" + +#: .\cookbook\templates\url_import.html:400 +#, fuzzy +#| msgid "Delete Step" +msgid "Delete Text" +msgstr "Schritt löschen" + +#: .\cookbook\templates\url_import.html:413 +#, fuzzy +#| msgid "Delete Recipe" +msgid "Delete image" +msgstr "Rezept löschen" + +#: .\cookbook\templates\url_import.html:429 msgid "Recipe Name" msgstr "Rezeptname" -#: .\cookbook\templates\url_import.html:62 +#: .\cookbook\templates\url_import.html:433 msgid "Recipe Description" msgstr "Rezept Beschreibung" -#: .\cookbook\templates\url_import.html:123 -#: .\cookbook\templates\url_import.html:155 -#: .\cookbook\templates\url_import.html:211 +#: .\cookbook\templates\url_import.html:494 +#: .\cookbook\templates\url_import.html:526 +#: .\cookbook\templates\url_import.html:582 msgid "Select one" msgstr "Auswählen" -#: .\cookbook\templates\url_import.html:225 +#: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "Alle Schlagwörter" -#: .\cookbook\templates\url_import.html:228 +#: .\cookbook\templates\url_import.html:599 msgid "Import all keywords, not only the ones already existing." msgstr "Alle Schlagwörter importieren, nicht nur die bereits bestehenden." -#: .\cookbook\templates\url_import.html:255 +#: .\cookbook\templates\url_import.html:626 msgid "Information" msgstr "Information" -#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:628 msgid "" " Only websites containing ld+json or microdata information can currently\n" " be imported. Most big recipe pages " @@ -1799,48 +2250,78 @@ msgstr "" "importiert werden kann, sie aber strukturierte Daten aufweist, kann ein " "GitHub-Issue geöffnet werden." -#: .\cookbook\templates\url_import.html:265 +#: .\cookbook\templates\url_import.html:636 msgid "Google ld+json Info" msgstr "Google ld+json Informationen" -#: .\cookbook\templates\url_import.html:268 +#: .\cookbook\templates\url_import.html:639 msgid "GitHub Issues" msgstr "GitHub-Issues" -#: .\cookbook\templates\url_import.html:270 +#: .\cookbook\templates\url_import.html:641 msgid "Recipe Markup Specification" msgstr "Rezept-Markup-Spezifikation" -#: .\cookbook\views\api.py:71 +#: .\cookbook\views\api.py:77 msgid "Parameter updated_at incorrectly formatted" msgstr "Der Parameter updated_at ist falsch formatiert" -#: .\cookbook\views\api.py:455 .\cookbook\views\views.py:226 +#: .\cookbook\views\api.py:553 .\cookbook\views\views.py:295 msgid "This feature is not available in the demo version!" msgstr "Diese Funktion ist in der Demo-Version nicht verfügbar!" -#: .\cookbook\views\api.py:478 +#: .\cookbook\views\api.py:576 msgid "Sync successful!" msgstr "Synchronisation erfolgreich!" -#: .\cookbook\views\api.py:483 +#: .\cookbook\views\api.py:581 msgid "Error synchronizing with Storage" msgstr "Fehler beim Synchronisieren" -#: .\cookbook\views\api.py:556 .\cookbook\views\api.py:576 +#: .\cookbook\views\api.py:649 +msgid "Nothing to do." +msgstr "" + +#: .\cookbook\views\api.py:664 +msgid "The requested site provided malformed data and cannot be read." +msgstr "" +"Die angefragte Seite hat ungültige Daten zurückgegeben oder die Daten " +"konnten nicht verarbeitet werden." + +#: .\cookbook\views\api.py:671 msgid "The requested page could not be found." msgstr "Die angefragte Seite konnte nicht gefunden werden." -#: .\cookbook\views\api.py:585 +#: .\cookbook\views\api.py:680 msgid "" -"The requested page refused to provide any information (Status Code 403)." -msgstr "Die angefragte Seite hat die Anfrage abgelehnt (Status-Code 403)." +"The requested site does not provide any recognized data format to import the " +"recipe from." +msgstr "" +"Die angefragte Seite stellt keine bekannten Datenformate zur Verfügung." -#: .\cookbook\views\api.py:611 -msgid "Could not parse correctly..." -msgstr "Konnte Inhalt nicht korrekt parsen..." +#: .\cookbook\views\api.py:694 +#, fuzzy +#| msgid "The requested page could not be found." +msgid "No useable data could be found." +msgstr "Die angefragte Seite konnte nicht gefunden werden." -#: .\cookbook\views\data.py:94 +#: .\cookbook\views\api.py:710 +msgid "I couldn't find anything to do." +msgstr "" + +#: .\cookbook\views\data.py:30 .\cookbook\views\data.py:121 +#: .\cookbook\views\edit.py:50 .\cookbook\views\import_export.py:67 +#: .\cookbook\views\new.py:32 +msgid "You have reached the maximum number of recipes for your space." +msgstr "" + +#: .\cookbook\views\data.py:34 .\cookbook\views\data.py:125 +#: .\cookbook\views\edit.py:54 .\cookbook\views\import_export.py:71 +#: .\cookbook\views\new.py:36 +msgid "You have more users than allowed in your space." +msgstr "" + +#: .\cookbook\views\data.py:103 #, python-format msgid "Batch edit done. %(count)d recipe was updated." msgid_plural "Batch edit done. %(count)d Recipes where updated." @@ -1853,7 +2334,7 @@ msgid "Monitor" msgstr "Überwachen" #: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:86 +#: .\cookbook\views\new.py:98 msgid "Storage Backend" msgstr "Speicherquelle" @@ -1864,8 +2345,8 @@ msgstr "" "Speicherquelle konnte nicht gelöscht werden, da sie in mindestens einem " "Monitor verwendet wird." -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:204 -#: .\cookbook\views\new.py:144 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 +#: .\cookbook\views\new.py:156 msgid "Recipe Book" msgstr "Rezeptbuch" @@ -1873,55 +2354,55 @@ msgstr "Rezeptbuch" msgid "Bookmarks" msgstr "Lesezeichen" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:214 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 msgid "Invite Link" msgstr "Einladungslink" -#: .\cookbook\views\edit.py:110 +#: .\cookbook\views\edit.py:119 msgid "Food" msgstr "Lebensmittel" -#: .\cookbook\views\edit.py:119 +#: .\cookbook\views\edit.py:128 msgid "You cannot edit this storage!" msgstr "Du kannst diese Speicherquelle nicht bearbeiten!" -#: .\cookbook\views\edit.py:139 +#: .\cookbook\views\edit.py:148 msgid "Storage saved!" msgstr "Speicherquelle gespeichert!" -#: .\cookbook\views\edit.py:145 +#: .\cookbook\views\edit.py:154 msgid "There was an error updating this storage backend!" msgstr "Es gab einen Fehler beim Aktualisieren dieser Speicherquelle!" -#: .\cookbook\views\edit.py:156 +#: .\cookbook\views\edit.py:165 msgid "Storage" msgstr "Speicher" -#: .\cookbook\views\edit.py:252 +#: .\cookbook\views\edit.py:261 msgid "Changes saved!" msgstr "Änderungen gespeichert!" -#: .\cookbook\views\edit.py:256 +#: .\cookbook\views\edit.py:265 msgid "Error saving changes!" msgstr "Fehler beim Speichern der Daten!" -#: .\cookbook\views\edit.py:289 +#: .\cookbook\views\edit.py:299 msgid "Units merged!" msgstr "Einheiten zusammengeführt!" -#: .\cookbook\views\edit.py:291 .\cookbook\views\edit.py:307 +#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 msgid "Cannot merge with the same object!" msgstr "Zusammenführen mit selben Objekt nicht möglich!" -#: .\cookbook\views\edit.py:305 +#: .\cookbook\views\edit.py:315 msgid "Foods merged!" msgstr "Zutaten zusammengeführt!" -#: .\cookbook\views\import_export.py:73 +#: .\cookbook\views\import_export.py:93 msgid "Importing is not implemented for this provider" msgstr "Importieren ist für diesen Anbieter noch nicht implementiert" -#: .\cookbook\views\import_export.py:92 +#: .\cookbook\views\import_export.py:115 msgid "Exporting is not implemented for this provider" msgstr "Exportieren ist für diesen Anbieter noch nicht implementiert" @@ -1937,24 +2418,78 @@ msgstr "Entdecken" msgid "Shopping Lists" msgstr "Einkaufslisten" -#: .\cookbook\views\new.py:111 +#: .\cookbook\views\new.py:123 msgid "Imported new recipe!" msgstr "Neues Rezept importiert!" -#: .\cookbook\views\new.py:114 +#: .\cookbook\views\new.py:126 msgid "There was an error importing this recipe!" msgstr "Beim Importieren des Rezeptes ist ein Fehler aufgetreten!" -#: .\cookbook\views\views.py:123 +#: .\cookbook\views\new.py:226 +msgid "Hello" +msgstr "" + +#: .\cookbook\views\new.py:226 +msgid "You have been invited by " +msgstr "" + +#: .\cookbook\views\new.py:227 +msgid " to join their Tandoor Recipes space " +msgstr "" + +#: .\cookbook\views\new.py:228 +msgid "Click the following link to activate your account: " +msgstr "" + +#: .\cookbook\views\new.py:229 +msgid "" +"If the link does not work use the following code to manually join the space: " +msgstr "" + +#: .\cookbook\views\new.py:230 +msgid "The invitation is valid until " +msgstr "" + +#: .\cookbook\views\new.py:231 +msgid "" +"Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " +msgstr "" + +#: .\cookbook\views\new.py:234 +msgid "Tandoor Recipes Invite" +msgstr "" + +#: .\cookbook\views\new.py:241 +msgid "Invite link successfully send to user." +msgstr "" + +#: .\cookbook\views\new.py:244 +msgid "" +"You have send to many emails, please share the link manually or wait a few " +"hours." +msgstr "" + +#: .\cookbook\views\new.py:246 +msgid "Email to user could not be send, please share link manually." +msgstr "" + +#: .\cookbook\views\views.py:125 +msgid "" +"You have successfully created your own recipe space. Start by adding some " +"recipes or invite other people to join you." +msgstr "" + +#: .\cookbook\views\views.py:173 msgid "You do not have the required permissions to perform this action!" msgstr "" "Du hast nicht die notwendige Berechtigung, um diese Aktion durchzuführen!" -#: .\cookbook\views\views.py:134 +#: .\cookbook\views\views.py:184 msgid "Comment saved!" msgstr "Kommentar gespeichert!" -#: .\cookbook\views\views.py:326 +#: .\cookbook\views\views.py:396 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -1963,22 +2498,66 @@ msgstr "" "Die Setup-Seite kann nur für den ersten Nutzer verwendet werden. Zum " "Zurücksetzen von Passwörtern bitte der Django-Dokumentation folgen." -#: .\cookbook\views\views.py:333 .\cookbook\views\views.py:378 +#: .\cookbook\views\views.py:403 msgid "Passwords dont match!" msgstr "Passwörter stimmen nicht überein!" -#: .\cookbook\views\views.py:349 .\cookbook\views\views.py:385 +#: .\cookbook\views\views.py:419 msgid "User has been created, please login!" msgstr "Benutzer wurde erstellt, bitte einloggen!" -#: .\cookbook\views\views.py:365 +#: .\cookbook\views\views.py:435 msgid "Malformed Invite Link supplied!" msgstr "Fehlerhafter Einladungslink angegeben!" -#: .\cookbook\views\views.py:405 +#: .\cookbook\views\views.py:441 +#, fuzzy +#| msgid "You are not logged in and therefore cannot view this page!" +msgid "You are already member of a space and therefore cannot join this one." +msgstr "Du bist nicht angemeldet, daher kannst du diese Seite nicht sehen!" + +#: .\cookbook\views\views.py:452 +msgid "Successfully joined space." +msgstr "" + +#: .\cookbook\views\views.py:458 msgid "Invite Link not valid or already used!" msgstr "Einladungslink ungültig oder bereits genutzt!" +#~ msgid "" +#~ "A username is not required, if left blank the new user can choose one." +#~ msgstr "" +#~ "Kein Benutzername benötigt. Wenn leer gelassen, kann der neue Benutzer " +#~ "einen wählen." + +#~ msgid "Imported from" +#~ msgstr "Importiert von" + +#~ msgid "Link" +#~ msgstr "Link" + +#~ msgid "Logout" +#~ msgstr "Abmelden" + +#~ msgid "Website Import" +#~ msgstr "Webseiten-Import" + +#~ msgid "You are not a member of any space." +#~ msgstr "Du bist kein Mitglied von einem Space." + +#~ msgid "There was an error creating a resource!" +#~ msgstr "Es gab einen Fehler beim Erstellen einer Ressource!" + +#~ msgid "Enter json directly" +#~ msgstr "JSON direkt eingeben" + +#~ msgid "" +#~ "The requested page refused to provide any information (Status Code 403)." +#~ msgstr "Die angefragte Seite hat die Anfrage abgelehnt (Status-Code 403)." + +#~ msgid "Could not parse correctly..." +#~ msgstr "Konnte Inhalt nicht korrekt parsen..." + #~ msgid "Number of servings" #~ msgstr "Anzahl der Portionen" @@ -2000,6 +2579,3 @@ msgstr "Einladungslink ungültig oder bereits genutzt!" #~ msgid "This recipe is already linked to the book!" #~ msgstr "Dieses Rezept ist bereits mit dem Buch verlinkt!" - -#~ msgid "Bookmark saved!" -#~ msgstr "Lesezeichen gespeichert!" diff --git a/cookbook/locale/en/LC_MESSAGES/django.po b/cookbook/locale/en/LC_MESSAGES/django.po index 984625e10..48414be4c 100644 --- a/cookbook/locale/en/LC_MESSAGES/django.po +++ b/cookbook/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,48 +18,49 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:91 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 +#: .\cookbook\templates\forms\edit_internal_recipe.html:246 #: .\cookbook\templates\forms\ingredients.html:34 -#: .\cookbook\templates\stats.html:28 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\space.html:37 .\cookbook\templates\stats.html:28 +#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 msgid "Ingredients" msgstr "" -#: .\cookbook\forms.py:45 +#: .\cookbook\forms.py:49 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" msgstr "" -#: .\cookbook\forms.py:46 +#: .\cookbook\forms.py:51 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" -#: .\cookbook\forms.py:47 +#: .\cookbook\forms.py:53 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" msgstr "" -#: .\cookbook\forms.py:48 +#: .\cookbook\forms.py:56 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." msgstr "" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:58 msgid "Show recently viewed recipes on search page." msgstr "" -#: .\cookbook\forms.py:50 +#: .\cookbook\forms.py:59 msgid "Number of decimals to round ingredients." msgstr "" -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:60 msgid "If you want to be able to create and see comments underneath recipes." msgstr "" -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:62 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -67,167 +68,181 @@ msgid "" "mobile data. If lower than instance limit it is reset when saving." msgstr "" -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:65 msgid "Makes the navbar stick to the top of the page." msgstr "" -#: .\cookbook\forms.py:72 +#: .\cookbook\forms.py:81 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" msgstr "" -#: .\cookbook\forms.py:93 .\cookbook\forms.py:315 -#: .\cookbook\templates\forms\edit_internal_recipe.html:45 +#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "" -#: .\cookbook\forms.py:94 .\cookbook\forms.py:316 -#: .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:81 -#: .\cookbook\templates\stats.html:24 .\cookbook\templates\url_import.html:202 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 +#: .\cookbook\templates\base.html:105 +#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\templates\space.html:33 .\cookbook\templates\stats.html:24 +#: .\cookbook\templates\url_import.html:188 +#: .\cookbook\templates\url_import.html:573 msgid "Keywords" msgstr "" -#: .\cookbook\forms.py:95 +#: .\cookbook\forms.py:104 msgid "Preparation time in minutes" msgstr "" -#: .\cookbook\forms.py:96 +#: .\cookbook\forms.py:105 msgid "Waiting time (cooking/baking) in minutes" msgstr "" -#: .\cookbook\forms.py:97 .\cookbook\forms.py:317 +#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 msgid "Path" msgstr "" -#: .\cookbook\forms.py:98 +#: .\cookbook\forms.py:107 msgid "Storage UID" msgstr "" -#: .\cookbook\forms.py:121 +#: .\cookbook\forms.py:133 msgid "Default" msgstr "" -#: .\cookbook\forms.py:130 +#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:149 +#: .\cookbook\forms.py:164 msgid "New Unit" msgstr "" -#: .\cookbook\forms.py:150 +#: .\cookbook\forms.py:165 msgid "New unit that other gets replaced by." msgstr "" -#: .\cookbook\forms.py:155 +#: .\cookbook\forms.py:170 msgid "Old Unit" msgstr "" -#: .\cookbook\forms.py:156 +#: .\cookbook\forms.py:171 msgid "Unit that should be replaced." msgstr "" -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:187 msgid "New Food" msgstr "" -#: .\cookbook\forms.py:173 +#: .\cookbook\forms.py:188 msgid "New food that other gets replaced by." msgstr "" -#: .\cookbook\forms.py:178 +#: .\cookbook\forms.py:193 msgid "Old Food" msgstr "" -#: .\cookbook\forms.py:179 +#: .\cookbook\forms.py:194 msgid "Food that should be replaced." msgstr "" -#: .\cookbook\forms.py:197 +#: .\cookbook\forms.py:212 msgid "Add your comment: " msgstr "" -#: .\cookbook\forms.py:238 +#: .\cookbook\forms.py:253 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" -#: .\cookbook\forms.py:245 +#: .\cookbook\forms.py:260 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:269 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" msgstr "" -#: .\cookbook\forms.py:291 +#: .\cookbook\forms.py:307 msgid "Search String" msgstr "" -#: .\cookbook\forms.py:318 +#: .\cookbook\forms.py:334 msgid "File ID" msgstr "" -#: .\cookbook\forms.py:354 +#: .\cookbook\forms.py:370 msgid "You must provide at least a recipe or a title." msgstr "" -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:383 msgid "You can list default users to share recipes with in the settings." msgstr "" -#: .\cookbook\forms.py:368 -#: .\cookbook\templates\forms\edit_internal_recipe.html:377 +#: .\cookbook\forms.py:384 +#: .\cookbook\templates\forms\edit_internal_recipe.html:404 msgid "" "You can use markdown to format this field. See the docs here" msgstr "" -#: .\cookbook\forms.py:393 -msgid "A username is not required, if left blank the new user can choose one." +#: .\cookbook\forms.py:409 +msgid "Maximum number of users for this space reached." msgstr "" -#: .\cookbook\helper\permission_helper.py:123 -#: .\cookbook\helper\permission_helper.py:129 -#: .\cookbook\helper\permission_helper.py:151 -#: .\cookbook\helper\permission_helper.py:196 -#: .\cookbook\helper\permission_helper.py:210 -#: .\cookbook\helper\permission_helper.py:221 -#: .\cookbook\helper\permission_helper.py:232 .\cookbook\views\data.py:30 -#: .\cookbook\views\views.py:112 .\cookbook\views\views.py:116 -#: .\cookbook\views\views.py:184 -msgid "You do not have the required permissions to view this page!" +#: .\cookbook\forms.py:415 +msgid "Email address already taken!" msgstr "" -#: .\cookbook\helper\permission_helper.py:141 +#: .\cookbook\forms.py:423 +msgid "" +"An email address is not required but if present the invite link will be send " +"to the user." +msgstr "" + +#: .\cookbook\forms.py:438 +msgid "Name already taken." +msgstr "" + +#: .\cookbook\forms.py:449 +msgid "Accept Terms and Privacy" +msgstr "" + +#: .\cookbook\helper\AllAuthCustomAdapter.py:30 +msgid "" +"In order to prevent spam, the requested email was not send. Please wait a " +"few minutes and try again." +msgstr "" + +#: .\cookbook\helper\permission_helper.py:124 +#: .\cookbook\helper\permission_helper.py:144 .\cookbook\views\views.py:147 msgid "You are not logged in and therefore cannot view this page!" msgstr "" -#: .\cookbook\helper\permission_helper.py:145 -#: .\cookbook\helper\permission_helper.py:167 -#: .\cookbook\helper\permission_helper.py:182 +#: .\cookbook\helper\permission_helper.py:127 +#: .\cookbook\helper\permission_helper.py:132 +#: .\cookbook\helper\permission_helper.py:154 +#: .\cookbook\helper\permission_helper.py:199 +#: .\cookbook\helper\permission_helper.py:213 +#: .\cookbook\helper\permission_helper.py:224 +#: .\cookbook\helper\permission_helper.py:235 .\cookbook\views\data.py:39 +#: .\cookbook\views\views.py:158 .\cookbook\views\views.py:165 +#: .\cookbook\views\views.py:253 +msgid "You do not have the required permissions to view this page!" +msgstr "" + +#: .\cookbook\helper\permission_helper.py:148 +#: .\cookbook\helper\permission_helper.py:170 +#: .\cookbook\helper\permission_helper.py:185 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" -#: .\cookbook\helper\recipe_url_import.py:40 .\cookbook\views\api.py:549 -msgid "The requested site provided malformed data and cannot be read." -msgstr "" - -#: .\cookbook\helper\recipe_url_import.py:54 -msgid "" -"The requested site does not provide any recognized data format to import the " -"recipe from." -msgstr "" - -#: .\cookbook\helper\recipe_url_import.py:160 -msgid "Imported from" -msgstr "" - #: .\cookbook\helper\template_helper.py:60 #: .\cookbook\helper\template_helper.py:62 msgid "Could not parse template code." @@ -237,42 +252,53 @@ msgstr "" #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 -#: .\cookbook\templates\url_import.html:233 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:190 +#: .\cookbook\templates\url_import.html:27 +#: .\cookbook\templates\url_import.html:101 +#: .\cookbook\templates\url_import.html:123 +#: .\cookbook\templates\url_import.html:317 +#: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 +#: .\cookbook\views\edit.py:199 msgid "Import" msgstr "" -#: .\cookbook\integration\integration.py:131 +#: .\cookbook\integration\integration.py:162 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:134 +#: .\cookbook\integration\integration.py:165 +msgid "" +"An unexpected error occurred during the import. Please make sure you have " +"uploaded a valid file." +msgstr "" + +#: .\cookbook\integration\integration.py:169 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:137 +#: .\cookbook\integration\integration.py:173 #, python-format msgid "Imported %s recipes." msgstr "" -#: .\cookbook\integration\paprika.py:44 +#: .\cookbook\integration\paprika.py:46 msgid "Notes" msgstr "" -#: .\cookbook\integration\paprika.py:47 +#: .\cookbook\integration\paprika.py:49 msgid "Nutritional Information" msgstr "" -#: .\cookbook\integration\paprika.py:50 +#: .\cookbook\integration\paprika.py:53 msgid "Source" msgstr "" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:75 +#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 -#: .\cookbook\templates\url_import.html:84 +#: .\cookbook\templates\url_import.html:224 +#: .\cookbook\templates\url_import.html:455 msgid "Servings" msgstr "" @@ -281,11 +307,11 @@ msgid "Waiting time" msgstr "" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:69 +#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "" -#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:71 +#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:78 #: .\cookbook\templates\forms\ingredients.html:7 #: .\cookbook\templates\index.html:7 msgid "Cookbook" @@ -311,44 +337,72 @@ msgstr "" msgid "Other" msgstr "" -#: .\cookbook\models.py:110 .\cookbook\templates\shopping_list.html:48 +#: .\cookbook\models.py:71 +msgid "" +"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " +"upload." +msgstr "" + +#: .\cookbook\models.py:121 .\cookbook\templates\search.html:7 +#: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "" -#: .\cookbook\models.py:111 .\cookbook\templates\base.html:85 +#: .\cookbook\models.py:122 .\cookbook\templates\base.html:92 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:224 .\cookbook\views\new.py:188 +#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 msgid "Meal-Plan" msgstr "" -#: .\cookbook\models.py:112 .\cookbook\templates\base.html:82 +#: .\cookbook\models.py:123 .\cookbook\templates\base.html:89 msgid "Books" msgstr "" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Small" msgstr "" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Large" msgstr "" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:198 +#: .\cookbook\models.py:131 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\templates\generic\new_template.html:14 +#: .\cookbook\templates\meal_plan.html:323 +msgid "New" +msgstr "" + +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:202 msgid "Text" msgstr "" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:199 +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:203 msgid "Time" msgstr "" +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:204 +#: .\cookbook\templates\forms\edit_internal_recipe.html:218 +msgid "File" +msgstr "" + +#: .\cookbook\serializer.py:109 +msgid "File uploads are not enabled for this Space." +msgstr "" + +#: .\cookbook\serializer.py:117 +msgid "You have reached your file upload limit." +msgstr "" + #: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 #: .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 #: .\cookbook\templates\shopping_list.html:33 +#: .\cookbook\templates\space.html:84 msgid "Edit" msgstr "" @@ -362,10 +416,6 @@ msgstr "" msgid "Delete" msgstr "" -#: .\cookbook\tables.py:144 -msgid "Link" -msgstr "" - #: .\cookbook\templates\404.html:5 msgid "404 Error" msgstr "" @@ -382,21 +432,120 @@ msgstr "" msgid "Report a Bug" msgstr "" -#: .\cookbook\templates\account\login.html:7 -#: .\cookbook\templates\base.html:170 +#: .\cookbook\templates\account\email.html:6 +#: .\cookbook\templates\account\email.html:9 +msgid "E-mail Addresses" +msgstr "" + +#: .\cookbook\templates\account\email.html:11 +msgid "The following e-mail addresses are associated with your account:" +msgstr "" + +#: .\cookbook\templates\account\email.html:28 +msgid "Verified" +msgstr "" + +#: .\cookbook\templates\account\email.html:30 +msgid "Unverified" +msgstr "" + +#: .\cookbook\templates\account\email.html:32 +msgid "Primary" +msgstr "" + +#: .\cookbook\templates\account\email.html:39 +msgid "Make Primary" +msgstr "" + +#: .\cookbook\templates\account\email.html:41 +msgid "Re-send Verification" +msgstr "" + +#: .\cookbook\templates\account\email.html:42 +#: .\cookbook\templates\socialaccount\connections.html:36 +msgid "Remove" +msgstr "" + +#: .\cookbook\templates\account\email.html:50 +msgid "Warning:" +msgstr "" + +#: .\cookbook\templates\account\email.html:50 +msgid "" +"You currently do not have any e-mail address set up. You should really add " +"an e-mail address so you can receive notifications, reset your password, etc." +msgstr "" + +#: .\cookbook\templates\account\email.html:56 +msgid "Add E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email.html:61 +msgid "Add E-mail" +msgstr "" + +#: .\cookbook\templates\account\email.html:71 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:6 +#: .\cookbook\templates\account\email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that\n" +" %(email)s is an e-mail address " +"for user %(user_display)s\n" +" ." +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:22 +#: .\cookbook\templates\generic\delete_template.html:21 +msgid "Confirm" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:29 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please\n" +" issue a new e-mail confirmation " +"request." +msgstr "" + +#: .\cookbook\templates\account\login.html:8 +#: .\cookbook\templates\base.html:180 msgid "Login" msgstr "" -#: .\cookbook\templates\account\login.html:13 -#: .\cookbook\templates\account\login.html:28 +#: .\cookbook\templates\account\login.html:15 +#: .\cookbook\templates\account\login.html:31 +#: .\cookbook\templates\account\signup.html:69 +#: .\cookbook\templates\account\signup_closed.html:15 msgid "Sign In" msgstr "" -#: .\cookbook\templates\account\login.html:38 +#: .\cookbook\templates\account\login.html:32 +msgid "Sign Up" +msgstr "" + +#: .\cookbook\templates\account\login.html:36 +#: .\cookbook\templates\account\login.html:37 +#: .\cookbook\templates\account\password_reset.html:29 +msgid "Reset My Password" +msgstr "" + +#: .\cookbook\templates\account\login.html:37 +msgid "Lost your password?" +msgstr "" + +#: .\cookbook\templates\account\login.html:48 msgid "Social Login" msgstr "" -#: .\cookbook\templates\account\login.html:39 +#: .\cookbook\templates\account\login.html:49 msgid "You can use any of the following providers to sign in." msgstr "" @@ -410,115 +559,161 @@ msgstr "" msgid "Are you sure you want to sign out?" msgstr "" -#: .\cookbook\templates\account\password_reset.html:5 -#: .\cookbook\templates\account\password_reset_done.html:5 +#: .\cookbook\templates\account\password_reset.html:7 +#: .\cookbook\templates\account\password_reset.html:13 +#: .\cookbook\templates\account\password_reset_done.html:7 +#: .\cookbook\templates\account\password_reset_done.html:10 msgid "Password Reset" msgstr "" -#: .\cookbook\templates\account\password_reset.html:9 -#: .\cookbook\templates\account\password_reset_done.html:9 -msgid "Password reset is not implemented for the time being!" +#: .\cookbook\templates\account\password_reset.html:24 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." msgstr "" -#: .\cookbook\templates\account\signup.html:5 +#: .\cookbook\templates\account\password_reset.html:32 +msgid "Password reset is disabled on this instance." +msgstr "" + +#: .\cookbook\templates\account\password_reset_done.html:16 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: .\cookbook\templates\account\signup.html:6 msgid "Register" msgstr "" -#: .\cookbook\templates\account\signup.html:9 -msgid "Create your Account" +#: .\cookbook\templates\account\signup.html:12 +msgid "Create an Account" msgstr "" -#: .\cookbook\templates\account\signup.html:14 +#: .\cookbook\templates\account\signup.html:42 +msgid "I accept the follwoing" +msgstr "" + +#: .\cookbook\templates\account\signup.html:45 +msgid "Terms and Conditions" +msgstr "" + +#: .\cookbook\templates\account\signup.html:48 +msgid "and" +msgstr "" + +#: .\cookbook\templates\account\signup.html:52 +msgid "Privacy Policy" +msgstr "" + +#: .\cookbook\templates\account\signup.html:65 msgid "Create User" msgstr "" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:160 +#: .\cookbook\templates\account\signup.html:69 +msgid "Already have an account?" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:5 +#: .\cookbook\templates\account\signup_closed.html:11 +msgid "Sign Up Closed" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:13 +msgid "We are sorry, but the sign up is currently closed." +msgstr "" + +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:170 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "" -#: .\cookbook\templates\base.html:78 +#: .\cookbook\templates\base.html:85 msgid "Utensils" msgstr "" -#: .\cookbook\templates\base.html:88 +#: .\cookbook\templates\base.html:95 msgid "Shopping" msgstr "" -#: .\cookbook\templates\base.html:102 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:93 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:66 +#: .\cookbook\templates\base.html:109 .\cookbook\views\delete.py:84 +#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 +#: .\cookbook\views\new.py:78 msgid "Keyword" msgstr "" -#: .\cookbook\templates\base.html:104 +#: .\cookbook\templates\base.html:111 msgid "Batch Edit" msgstr "" -#: .\cookbook\templates\base.html:109 +#: .\cookbook\templates\base.html:116 msgid "Storage Data" msgstr "" -#: .\cookbook\templates\base.html:113 +#: .\cookbook\templates\base.html:120 msgid "Storage Backends" msgstr "" -#: .\cookbook\templates\base.html:115 +#: .\cookbook\templates\base.html:122 msgid "Configure Sync" msgstr "" -#: .\cookbook\templates\base.html:117 +#: .\cookbook\templates\base.html:124 msgid "Discovered Recipes" msgstr "" -#: .\cookbook\templates\base.html:119 +#: .\cookbook\templates\base.html:126 msgid "Discovery Log" msgstr "" -#: .\cookbook\templates\base.html:121 .\cookbook\templates\stats.html:10 +#: .\cookbook\templates\base.html:128 .\cookbook\templates\stats.html:10 msgid "Statistics" msgstr "" -#: .\cookbook\templates\base.html:123 +#: .\cookbook\templates\base.html:130 msgid "Units & Ingredients" msgstr "" -#: .\cookbook\templates\base.html:125 +#: .\cookbook\templates\base.html:132 .\cookbook\templates\index.html:47 msgid "Import Recipe" msgstr "" -#: .\cookbook\templates\base.html:144 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:151 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:16 msgid "Settings" msgstr "" -#: .\cookbook\templates\base.html:146 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:153 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "" -#: .\cookbook\templates\base.html:150 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:155 .\cookbook\templates\space.html:7 +msgid "Space Settings" +msgstr "" + +#: .\cookbook\templates\base.html:160 .\cookbook\templates\system.html:13 msgid "System" msgstr "" -#: .\cookbook\templates\base.html:152 +#: .\cookbook\templates\base.html:162 msgid "Admin" msgstr "" -#: .\cookbook\templates\base.html:156 +#: .\cookbook\templates\base.html:166 msgid "Markdown Guide" msgstr "" -#: .\cookbook\templates\base.html:158 +#: .\cookbook\templates\base.html:168 msgid "GitHub" msgstr "" -#: .\cookbook\templates\base.html:162 +#: .\cookbook\templates\base.html:172 msgid "API Browser" msgstr "" -#: .\cookbook\templates\base.html:165 -msgid "Logout" +#: .\cookbook\templates\base.html:175 +msgid "Log out" msgstr "" #: .\cookbook\templates\batch\edit.html:6 @@ -533,7 +728,7 @@ msgstr "" msgid "Add the specified keywords to all recipes containing a word" msgstr "" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:76 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 msgid "Sync" msgstr "" @@ -560,7 +755,7 @@ msgstr "" msgid "Importing Recipes" msgstr "" -#: .\cookbook\templates\batch\waiting.html:23 +#: .\cookbook\templates\batch\waiting.html:28 msgid "" "This can take a few minutes, depending on the number of recipes in sync, " "please wait." @@ -597,26 +792,31 @@ msgid "Export Recipes" msgstr "" #: .\cookbook\templates\export.html:14 .\cookbook\templates\export.html:20 -#: .\cookbook\templates\shopping_list.html:347 +#: .\cookbook\templates\shopping_list.html:351 #: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20 msgid "Export" msgstr "" +#: .\cookbook\templates\files.html:7 +msgid "Files" +msgstr "" + #: .\cookbook\templates\forms\edit_import_recipe.html:5 #: .\cookbook\templates\forms\edit_import_recipe.html:9 msgid "Import new Recipe" msgstr "" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:389 -#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:416 +#: .\cookbook\templates\forms\edit_internal_recipe.html:448 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:28 .\cookbook\templates\settings.html:35 -#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:73 -#: .\cookbook\templates\shopping_list.html:349 +#: .\cookbook\templates\settings.html:44 .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:114 +#: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "" @@ -625,179 +825,186 @@ msgstr "" msgid "Edit Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:52 +#: .\cookbook\templates\forms\edit_internal_recipe.html:56 +#: .\cookbook\templates\url_import.html:171 msgid "Description" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:72 +#: .\cookbook\templates\forms\edit_internal_recipe.html:76 msgid "Waiting Time" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:78 +#: .\cookbook\templates\forms\edit_internal_recipe.html:82 msgid "Servings Text" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:89 +#: .\cookbook\templates\forms\edit_internal_recipe.html:93 msgid "Select Keywords" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:90 -#: .\cookbook\templates\url_import.html:212 +#: .\cookbook\templates\forms\edit_internal_recipe.html:94 +#: .\cookbook\templates\url_import.html:583 msgid "Add Keyword" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:108 +#: .\cookbook\templates\forms\edit_internal_recipe.html:112 msgid "Nutrition" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -#: .\cookbook\templates\forms\edit_internal_recipe.html:162 +#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:166 msgid "Delete Step" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:120 msgid "Calories" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:119 +#: .\cookbook\templates\forms\edit_internal_recipe.html:123 msgid "Carbohydrates" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:122 +#: .\cookbook\templates\forms\edit_internal_recipe.html:126 msgid "Fats" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:124 +#: .\cookbook\templates\forms\edit_internal_recipe.html:128 msgid "Proteins" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:146 -#: .\cookbook\templates\forms\edit_internal_recipe.html:454 +#: .\cookbook\templates\forms\edit_internal_recipe.html:150 +#: .\cookbook\templates\forms\edit_internal_recipe.html:481 msgid "Step" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:167 +#: .\cookbook\templates\forms\edit_internal_recipe.html:171 msgid "Show as header" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:173 +#: .\cookbook\templates\forms\edit_internal_recipe.html:177 msgid "Hide as header" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:178 +#: .\cookbook\templates\forms\edit_internal_recipe.html:182 msgid "Move Up" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:183 +#: .\cookbook\templates\forms\edit_internal_recipe.html:187 msgid "Move Down" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:192 +#: .\cookbook\templates\forms\edit_internal_recipe.html:196 msgid "Step Name" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:200 msgid "Step Type" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:207 +#: .\cookbook\templates\forms\edit_internal_recipe.html:212 msgid "Step time in Minutes" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:261 -#: .\cookbook\templates\shopping_list.html:183 -msgid "Select Unit" +#: .\cookbook\templates\forms\edit_internal_recipe.html:228 +msgid "Select File" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:262 -#: .\cookbook\templates\forms\edit_internal_recipe.html:286 -#: .\cookbook\templates\shopping_list.html:184 -#: .\cookbook\templates\shopping_list.html:206 -msgid "Create" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:263 -#: .\cookbook\templates\forms\edit_internal_recipe.html:287 -#: .\cookbook\templates\shopping_list.html:185 -#: .\cookbook\templates\shopping_list.html:207 -#: .\cookbook\templates\shopping_list.html:237 -#: .\cookbook\templates\shopping_list.html:261 -#: .\cookbook\templates\url_import.html:124 -#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\forms\edit_internal_recipe.html:229 +#: .\cookbook\templates\forms\edit_internal_recipe.html:290 +#: .\cookbook\templates\forms\edit_internal_recipe.html:314 +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 msgid "Select" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:285 -#: .\cookbook\templates\shopping_list.html:205 +#: .\cookbook\templates\forms\edit_internal_recipe.html:288 +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:289 +#: .\cookbook\templates\forms\edit_internal_recipe.html:313 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:312 +#: .\cookbook\templates\shopping_list.html:209 msgid "Select Food" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:302 +#: .\cookbook\templates\forms\edit_internal_recipe.html:329 #: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:171 +#: .\cookbook\templates\url_import.html:542 msgid "Note" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:319 +#: .\cookbook\templates\forms\edit_internal_recipe.html:346 msgid "Delete Ingredient" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:325 +#: .\cookbook\templates\forms\edit_internal_recipe.html:352 msgid "Make Header" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:358 msgid "Make Ingredient" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 +#: .\cookbook\templates\forms\edit_internal_recipe.html:364 msgid "Disable Amount" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:343 +#: .\cookbook\templates\forms\edit_internal_recipe.html:370 msgid "Enable Amount" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:348 +#: .\cookbook\templates\forms\edit_internal_recipe.html:375 msgid "Copy Template Reference" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:374 -#: .\cookbook\templates\url_import.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:401 +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 msgid "Instructions" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:414 +#: .\cookbook\templates\forms\edit_internal_recipe.html:445 msgid "Save & View" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:391 -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 +#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:451 msgid "Add Step" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:394 -#: .\cookbook\templates\forms\edit_internal_recipe.html:428 +#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:455 msgid "Add Nutrition" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:396 -#: .\cookbook\templates\forms\edit_internal_recipe.html:430 +#: .\cookbook\templates\forms\edit_internal_recipe.html:423 +#: .\cookbook\templates\forms\edit_internal_recipe.html:457 msgid "Remove Nutrition" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -#: .\cookbook\templates\forms\edit_internal_recipe.html:433 +#: .\cookbook\templates\forms\edit_internal_recipe.html:425 +#: .\cookbook\templates\forms\edit_internal_recipe.html:460 msgid "View Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:400 -#: .\cookbook\templates\forms\edit_internal_recipe.html:435 +#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\templates\forms\edit_internal_recipe.html:462 msgid "Delete Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 +#: .\cookbook\templates\forms\edit_internal_recipe.html:468 msgid "Steps" msgstr "" @@ -817,7 +1024,7 @@ msgid "" msgstr "" #: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\stats.html:26 +#: .\cookbook\templates\space.html:35 .\cookbook\templates\stats.html:26 msgid "Units" msgstr "" @@ -839,10 +1046,6 @@ msgstr "" msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "" -#: .\cookbook\templates\generic\delete_template.html:21 -msgid "Confirm" -msgstr "" - #: .\cookbook\templates\generic\edit_template.html:30 msgid "View" msgstr "" @@ -864,12 +1067,6 @@ msgstr "" msgid "Import all" msgstr "" -#: .\cookbook\templates\generic\new_template.html:6 -#: .\cookbook\templates\generic\new_template.html:14 -#: .\cookbook\templates\meal_plan.html:323 -msgid "New" -msgstr "" - #: .\cookbook\templates\generic\table_template.html:76 #: .\cookbook\templates\recipes_table.html:121 msgid "previous" @@ -914,7 +1111,7 @@ msgstr "" #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:264 .\cookbook\views\new.py:40 +#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "" @@ -947,10 +1144,6 @@ msgstr "" msgid "New Recipe" msgstr "" -#: .\cookbook\templates\index.html:47 -msgid "Website Import" -msgstr "" - #: .\cookbook\templates\index.html:53 msgid "Advanced Search" msgstr "" @@ -964,7 +1157,7 @@ msgid "Last viewed" msgstr "" #: .\cookbook\templates\index.html:87 .\cookbook\templates\meal_plan.html:178 -#: .\cookbook\templates\stats.html:22 +#: .\cookbook\templates\space.html:29 .\cookbook\templates\stats.html:22 msgid "Recipes" msgstr "" @@ -1112,7 +1305,7 @@ msgid "New Entry" msgstr "" #: .\cookbook\templates\meal_plan.html:113 -#: .\cookbook\templates\shopping_list.html:52 +#: .\cookbook\templates\shopping_list.html:56 msgid "Search Recipe" msgstr "" @@ -1142,7 +1335,7 @@ msgstr "" #: .\cookbook\templates\meal_plan.html:168 #: .\cookbook\templates\shopping_list.html:7 #: .\cookbook\templates\shopping_list.html:29 -#: .\cookbook\templates\shopping_list.html:705 +#: .\cookbook\templates\shopping_list.html:714 msgid "Shopping List" msgstr "" @@ -1192,7 +1385,7 @@ msgstr "" #: .\cookbook\templates\meal_plan.html:270 #: .\cookbook\templates\meal_plan_entry.html:20 -#: .\cookbook\templates\shopping_list.html:250 +#: .\cookbook\templates\shopping_list.html:254 msgid "Shared with" msgstr "" @@ -1267,7 +1460,6 @@ msgstr "" #: .\cookbook\templates\no_groups_info.html:18 #: .\cookbook\templates\no_perm_info.html:15 -#: .\cookbook\templates\no_space_info.html:15 msgid "Please contact your administrator." msgstr "" @@ -1282,13 +1474,48 @@ msgid "" "action." msgstr "" -#: .\cookbook\templates\no_space_info.html:5 -#: .\cookbook\templates\no_space_info.html:12 +#: .\cookbook\templates\no_space_info.html:6 +#: .\cookbook\templates\no_space_info.html:13 msgid "No Space" msgstr "" -#: .\cookbook\templates\no_space_info.html:15 -msgid "You are not a member of any space." +#: .\cookbook\templates\no_space_info.html:17 +msgid "" +"Recipes, foods, shopping lists and more are organized in spaces of one or " +"more people." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:18 +msgid "" +"You can either be invited into an existing space or create your own one." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:31 +#: .\cookbook\templates\no_space_info.html:40 +msgid "Join Space" +msgstr "" + +#: .\cookbook\templates\no_space_info.html:34 +msgid "Join an existing space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:35 +msgid "" +"To join an existing space either enter your invite token or click on the " +"invite link the space owner send you." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:48 +#: .\cookbook\templates\no_space_info.html:56 +msgid "Create Space" +msgstr "" + +#: .\cookbook\templates\no_space_info.html:51 +msgid "Create your own recipe space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:52 +msgid "Start your own recipe space and invite other users to it." msgstr "" #: .\cookbook\templates\offline.html:6 @@ -1305,28 +1532,29 @@ msgid "" "recently viewed them. Keep in mind that data might be outdated." msgstr "" -#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\stats.html:47 +#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\space.html:56 +#: .\cookbook\templates\stats.html:47 msgid "Comments" msgstr "" #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:170 +#: .\cookbook\views\edit.py:179 msgid "Comment" msgstr "" #: .\cookbook\templates\recipes_table.html:19 #: .\cookbook\templates\recipes_table.html:23 -#: .\cookbook\templates\url_import.html:69 +#: .\cookbook\templates\url_import.html:440 msgid "Recipe Image" msgstr "" #: .\cookbook\templates\recipes_table.html:51 -#: .\cookbook\templates\url_import.html:74 +#: .\cookbook\templates\url_import.html:445 msgid "Preparation time ca." msgstr "" #: .\cookbook\templates\recipes_table.html:57 -#: .\cookbook\templates\url_import.html:79 +#: .\cookbook\templates\url_import.html:450 msgid "Waiting time ca." msgstr "" @@ -1342,39 +1570,67 @@ msgstr "" msgid "Recipe Home" msgstr "" -#: .\cookbook\templates\settings.html:22 +#: .\cookbook\templates\settings.html:23 msgid "Account" msgstr "" -#: .\cookbook\templates\settings.html:38 -msgid "Link social account" +#: .\cookbook\templates\settings.html:27 +msgid "Preferences" msgstr "" -#: .\cookbook\templates\settings.html:42 +#: .\cookbook\templates\settings.html:31 +msgid "API-Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:39 +msgid "Name Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:47 +msgid "Password Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:55 +msgid "Email Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:57 +msgid "Manage Email Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:61 +msgid "Social" +msgstr "" + +#: .\cookbook\templates\settings.html:63 +msgid "Manage Social Accounts" +msgstr "" + +#: .\cookbook\templates\settings.html:75 msgid "Language" msgstr "" -#: .\cookbook\templates\settings.html:67 +#: .\cookbook\templates\settings.html:105 msgid "Style" msgstr "" -#: .\cookbook\templates\settings.html:79 +#: .\cookbook\templates\settings.html:125 msgid "API Token" msgstr "" -#: .\cookbook\templates\settings.html:80 +#: .\cookbook\templates\settings.html:126 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." msgstr "" -#: .\cookbook\templates\settings.html:92 +#: .\cookbook\templates\settings.html:143 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" msgstr "" -#: .\cookbook\templates\settings.html:94 +#: .\cookbook\templates\settings.html:145 msgid "or" msgstr "" @@ -1395,58 +1651,55 @@ msgstr "" msgid "Create Superuser account" msgstr "" -#: .\cookbook\templates\shopping_list.html:75 +#: .\cookbook\templates\shopping_list.html:79 msgid "Shopping Recipes" msgstr "" -#: .\cookbook\templates\shopping_list.html:79 +#: .\cookbook\templates\shopping_list.html:83 msgid "No recipes selected" msgstr "" -#: .\cookbook\templates\shopping_list.html:146 +#: .\cookbook\templates\shopping_list.html:150 msgid "Entry Mode" msgstr "" -#: .\cookbook\templates\shopping_list.html:154 +#: .\cookbook\templates\shopping_list.html:158 msgid "Add Entry" msgstr "" -#: .\cookbook\templates\shopping_list.html:170 +#: .\cookbook\templates\shopping_list.html:174 msgid "Amount" msgstr "" -#: .\cookbook\templates\shopping_list.html:226 +#: .\cookbook\templates\shopping_list.html:230 +#: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "" -#: .\cookbook\templates\shopping_list.html:236 +#: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "" -#: .\cookbook\templates\shopping_list.html:260 +#: .\cookbook\templates\shopping_list.html:264 msgid "Select User" msgstr "" -#: .\cookbook\templates\shopping_list.html:279 +#: .\cookbook\templates\shopping_list.html:283 msgid "Finished" msgstr "" -#: .\cookbook\templates\shopping_list.html:292 +#: .\cookbook\templates\shopping_list.html:296 msgid "You are offline, shopping list might not syncronize." msgstr "" -#: .\cookbook\templates\shopping_list.html:357 +#: .\cookbook\templates\shopping_list.html:361 msgid "Copy/Export" msgstr "" -#: .\cookbook\templates\shopping_list.html:361 +#: .\cookbook\templates\shopping_list.html:365 msgid "List Prefix" msgstr "" -#: .\cookbook\templates\shopping_list.html:708 -msgid "There was an error creating a resource!" -msgstr "" - #: .\cookbook\templates\socialaccount\connections.html:4 #: .\cookbook\templates\socialaccount\connections.html:7 msgid "Account Connections" @@ -1458,10 +1711,6 @@ msgid "" " accounts:" msgstr "" -#: .\cookbook\templates\socialaccount\connections.html:36 -msgid "Remove" -msgstr "" - #: .\cookbook\templates\socialaccount\connections.html:44 msgid "" "You currently have no social network accounts connected to this account." @@ -1471,38 +1720,87 @@ msgstr "" msgid "Add a 3rd Party Account" msgstr "" -#: .\cookbook\templates\stats.html:4 -msgid "Stats" +#: .\cookbook\templates\space.html:18 +msgid "Manage Subscription" msgstr "" -#: .\cookbook\templates\stats.html:19 +#: .\cookbook\templates\space.html:26 .\cookbook\templates\stats.html:19 msgid "Number of objects" msgstr "" -#: .\cookbook\templates\stats.html:30 +#: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:30 msgid "Recipe Imports" msgstr "" -#: .\cookbook\templates\stats.html:38 +#: .\cookbook\templates\space.html:47 .\cookbook\templates\stats.html:38 msgid "Objects stats" msgstr "" -#: .\cookbook\templates\stats.html:41 +#: .\cookbook\templates\space.html:50 .\cookbook\templates\stats.html:41 msgid "Recipes without Keywords" msgstr "" -#: .\cookbook\templates\stats.html:43 +#: .\cookbook\templates\space.html:52 .\cookbook\templates\stats.html:43 msgid "External Recipes" msgstr "" -#: .\cookbook\templates\stats.html:45 +#: .\cookbook\templates\space.html:54 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "" -#: .\cookbook\templates\system.html:21 .\cookbook\views\lists.py:115 +#: .\cookbook\templates\space.html:67 +msgid "Members" +msgstr "" + +#: .\cookbook\templates\space.html:71 +msgid "Invite User" +msgstr "" + +#: .\cookbook\templates\space.html:82 +msgid "User" +msgstr "" + +#: .\cookbook\templates\space.html:83 +msgid "Groups" +msgstr "" + +#: .\cookbook\templates\space.html:99 +msgid "admin" +msgstr "" + +#: .\cookbook\templates\space.html:100 +msgid "user" +msgstr "" + +#: .\cookbook\templates\space.html:101 +msgid "guest" +msgstr "" + +#: .\cookbook\templates\space.html:102 +msgid "remove" +msgstr "" + +#: .\cookbook\templates\space.html:106 +msgid "Update" +msgstr "" + +#: .\cookbook\templates\space.html:110 +msgid "You cannot edit yourself." +msgstr "" + +#: .\cookbook\templates\space.html:117 +msgid "There are no members in your space yet!" +msgstr "" + +#: .\cookbook\templates\space.html:124 .\cookbook\templates\system.html:21 +#: .\cookbook\views\lists.py:115 msgid "Invite Links" msgstr "" +#: .\cookbook\templates\stats.html:4 +msgid "Stats" +msgstr "" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "" @@ -1600,45 +1898,141 @@ msgid "" " " msgstr "" -#: .\cookbook\templates\url_import.html:5 +#: .\cookbook\templates\url_import.html:6 msgid "URL Import" msgstr "" -#: .\cookbook\templates\url_import.html:23 +#: .\cookbook\templates\url_import.html:31 +msgid "Drag me to your bookmarks to import recipes from anywhere" +msgstr "" + +#: .\cookbook\templates\url_import.html:32 +msgid "Bookmark Me!" +msgstr "" + +#: .\cookbook\templates\url_import.html:61 msgid "Enter website URL" msgstr "" -#: .\cookbook\templates\url_import.html:36 -msgid "Enter json directly" +#: .\cookbook\templates\url_import.html:97 +msgid "Select recipe files to import or drop them here..." msgstr "" -#: .\cookbook\templates\url_import.html:57 +#: .\cookbook\templates\url_import.html:118 +msgid "Paste json or html source here to load recipe." +msgstr "" + +#: .\cookbook\templates\url_import.html:146 +msgid "Preview Recipe Data" +msgstr "" + +#: .\cookbook\templates\url_import.html:147 +msgid "Drag recipe attributes from the right into the appropriate box below." +msgstr "" + +#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\url_import.html:173 +#: .\cookbook\templates\url_import.html:190 +#: .\cookbook\templates\url_import.html:209 +#: .\cookbook\templates\url_import.html:227 +#: .\cookbook\templates\url_import.html:242 +#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:273 +#: .\cookbook\templates\url_import.html:300 +#: .\cookbook\templates\url_import.html:351 +msgid "Clear Contents" +msgstr "" + +#: .\cookbook\templates\url_import.html:158 +msgid "Text dragged here will be appended to the name." +msgstr "" + +#: .\cookbook\templates\url_import.html:175 +msgid "Text dragged here will be appended to the description." +msgstr "" + +#: .\cookbook\templates\url_import.html:192 +msgid "Keywords dragged here will be appended to current list" +msgstr "" + +#: .\cookbook\templates\url_import.html:207 +msgid "Image" +msgstr "" + +#: .\cookbook\templates\url_import.html:239 +msgid "Prep Time" +msgstr "" + +#: .\cookbook\templates\url_import.html:254 +msgid "Cook Time" +msgstr "" + +#: .\cookbook\templates\url_import.html:275 +msgid "Ingredients dragged here will be appended to current list." +msgstr "" + +#: .\cookbook\templates\url_import.html:302 +msgid "" +"Recipe instructions dragged here will be appended to current instructions." +msgstr "" + +#: .\cookbook\templates\url_import.html:325 +msgid "Discovered Attributes" +msgstr "" + +#: .\cookbook\templates\url_import.html:327 +msgid "" +"Drag recipe attributes from below into the appropriate box on the left. " +"Click any node to display its full properties." +msgstr "" + +#: .\cookbook\templates\url_import.html:344 +msgid "Show Blank Field" +msgstr "" + +#: .\cookbook\templates\url_import.html:349 +msgid "Blank Field" +msgstr "" + +#: .\cookbook\templates\url_import.html:353 +msgid "Items dragged to Blank Field will be appended." +msgstr "" + +#: .\cookbook\templates\url_import.html:400 +msgid "Delete Text" +msgstr "" + +#: .\cookbook\templates\url_import.html:413 +msgid "Delete image" +msgstr "" + +#: .\cookbook\templates\url_import.html:429 msgid "Recipe Name" msgstr "" -#: .\cookbook\templates\url_import.html:62 +#: .\cookbook\templates\url_import.html:433 msgid "Recipe Description" msgstr "" -#: .\cookbook\templates\url_import.html:123 -#: .\cookbook\templates\url_import.html:155 -#: .\cookbook\templates\url_import.html:211 +#: .\cookbook\templates\url_import.html:494 +#: .\cookbook\templates\url_import.html:526 +#: .\cookbook\templates\url_import.html:582 msgid "Select one" msgstr "" -#: .\cookbook\templates\url_import.html:225 +#: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "" -#: .\cookbook\templates\url_import.html:228 +#: .\cookbook\templates\url_import.html:599 msgid "Import all keywords, not only the ones already existing." msgstr "" -#: .\cookbook\templates\url_import.html:255 +#: .\cookbook\templates\url_import.html:626 msgid "Information" msgstr "" -#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:628 msgid "" " Only websites containing ld+json or microdata information can currently\n" " be imported. Most big recipe pages " @@ -1649,48 +2043,73 @@ msgid "" " github issues." msgstr "" -#: .\cookbook\templates\url_import.html:265 +#: .\cookbook\templates\url_import.html:636 msgid "Google ld+json Info" msgstr "" -#: .\cookbook\templates\url_import.html:268 +#: .\cookbook\templates\url_import.html:639 msgid "GitHub Issues" msgstr "" -#: .\cookbook\templates\url_import.html:270 +#: .\cookbook\templates\url_import.html:641 msgid "Recipe Markup Specification" msgstr "" -#: .\cookbook\views\api.py:71 +#: .\cookbook\views\api.py:77 msgid "Parameter updated_at incorrectly formatted" msgstr "" -#: .\cookbook\views\api.py:455 .\cookbook\views\views.py:226 +#: .\cookbook\views\api.py:553 .\cookbook\views\views.py:295 msgid "This feature is not available in the demo version!" msgstr "" -#: .\cookbook\views\api.py:478 +#: .\cookbook\views\api.py:576 msgid "Sync successful!" msgstr "" -#: .\cookbook\views\api.py:483 +#: .\cookbook\views\api.py:581 msgid "Error synchronizing with Storage" msgstr "" -#: .\cookbook\views\api.py:556 .\cookbook\views\api.py:576 +#: .\cookbook\views\api.py:649 +msgid "Nothing to do." +msgstr "" + +#: .\cookbook\views\api.py:664 +msgid "The requested site provided malformed data and cannot be read." +msgstr "" + +#: .\cookbook\views\api.py:671 msgid "The requested page could not be found." msgstr "" -#: .\cookbook\views\api.py:585 +#: .\cookbook\views\api.py:680 msgid "" -"The requested page refused to provide any information (Status Code 403)." +"The requested site does not provide any recognized data format to import the " +"recipe from." msgstr "" -#: .\cookbook\views\api.py:611 -msgid "Could not parse correctly..." +#: .\cookbook\views\api.py:694 +msgid "No useable data could be found." msgstr "" -#: .\cookbook\views\data.py:94 +#: .\cookbook\views\api.py:710 +msgid "I couldn't find anything to do." +msgstr "" + +#: .\cookbook\views\data.py:30 .\cookbook\views\data.py:121 +#: .\cookbook\views\edit.py:50 .\cookbook\views\import_export.py:67 +#: .\cookbook\views\new.py:32 +msgid "You have reached the maximum number of recipes for your space." +msgstr "" + +#: .\cookbook\views\data.py:34 .\cookbook\views\data.py:125 +#: .\cookbook\views\edit.py:54 .\cookbook\views\import_export.py:71 +#: .\cookbook\views\new.py:36 +msgid "You have more users than allowed in your space." +msgstr "" + +#: .\cookbook\views\data.py:103 #, python-format msgid "Batch edit done. %(count)d recipe was updated." msgid_plural "Batch edit done. %(count)d Recipes where updated." @@ -1702,7 +2121,7 @@ msgid "Monitor" msgstr "" #: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:86 +#: .\cookbook\views\new.py:98 msgid "Storage Backend" msgstr "" @@ -1711,8 +2130,8 @@ msgid "" "Could not delete this storage backend as it is used in at least one monitor." msgstr "" -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:204 -#: .\cookbook\views\new.py:144 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 +#: .\cookbook\views\new.py:156 msgid "Recipe Book" msgstr "" @@ -1720,55 +2139,55 @@ msgstr "" msgid "Bookmarks" msgstr "" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:214 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 msgid "Invite Link" msgstr "" -#: .\cookbook\views\edit.py:110 +#: .\cookbook\views\edit.py:119 msgid "Food" msgstr "" -#: .\cookbook\views\edit.py:119 +#: .\cookbook\views\edit.py:128 msgid "You cannot edit this storage!" msgstr "" -#: .\cookbook\views\edit.py:139 +#: .\cookbook\views\edit.py:148 msgid "Storage saved!" msgstr "" -#: .\cookbook\views\edit.py:145 +#: .\cookbook\views\edit.py:154 msgid "There was an error updating this storage backend!" msgstr "" -#: .\cookbook\views\edit.py:156 +#: .\cookbook\views\edit.py:165 msgid "Storage" msgstr "" -#: .\cookbook\views\edit.py:252 +#: .\cookbook\views\edit.py:261 msgid "Changes saved!" msgstr "" -#: .\cookbook\views\edit.py:256 +#: .\cookbook\views\edit.py:265 msgid "Error saving changes!" msgstr "" -#: .\cookbook\views\edit.py:289 +#: .\cookbook\views\edit.py:299 msgid "Units merged!" msgstr "" -#: .\cookbook\views\edit.py:291 .\cookbook\views\edit.py:307 +#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 msgid "Cannot merge with the same object!" msgstr "" -#: .\cookbook\views\edit.py:305 +#: .\cookbook\views\edit.py:315 msgid "Foods merged!" msgstr "" -#: .\cookbook\views\import_export.py:73 +#: .\cookbook\views\import_export.py:93 msgid "Importing is not implemented for this provider" msgstr "" -#: .\cookbook\views\import_export.py:92 +#: .\cookbook\views\import_export.py:115 msgid "Exporting is not implemented for this provider" msgstr "" @@ -1784,41 +2203,103 @@ msgstr "" msgid "Shopping Lists" msgstr "" -#: .\cookbook\views\new.py:111 +#: .\cookbook\views\new.py:123 msgid "Imported new recipe!" msgstr "" -#: .\cookbook\views\new.py:114 +#: .\cookbook\views\new.py:126 msgid "There was an error importing this recipe!" msgstr "" -#: .\cookbook\views\views.py:123 +#: .\cookbook\views\new.py:226 +msgid "Hello" +msgstr "" + +#: .\cookbook\views\new.py:226 +msgid "You have been invited by " +msgstr "" + +#: .\cookbook\views\new.py:227 +msgid " to join their Tandoor Recipes space " +msgstr "" + +#: .\cookbook\views\new.py:228 +msgid "Click the following link to activate your account: " +msgstr "" + +#: .\cookbook\views\new.py:229 +msgid "" +"If the link does not work use the following code to manually join the space: " +msgstr "" + +#: .\cookbook\views\new.py:230 +msgid "The invitation is valid until " +msgstr "" + +#: .\cookbook\views\new.py:231 +msgid "" +"Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " +msgstr "" + +#: .\cookbook\views\new.py:234 +msgid "Tandoor Recipes Invite" +msgstr "" + +#: .\cookbook\views\new.py:241 +msgid "Invite link successfully send to user." +msgstr "" + +#: .\cookbook\views\new.py:244 +msgid "" +"You have send to many emails, please share the link manually or wait a few " +"hours." +msgstr "" + +#: .\cookbook\views\new.py:246 +msgid "Email to user could not be send, please share link manually." +msgstr "" + +#: .\cookbook\views\views.py:125 +msgid "" +"You have successfully created your own recipe space. Start by adding some " +"recipes or invite other people to join you." +msgstr "" + +#: .\cookbook\views\views.py:173 msgid "You do not have the required permissions to perform this action!" msgstr "" -#: .\cookbook\views\views.py:134 +#: .\cookbook\views\views.py:184 msgid "Comment saved!" msgstr "" -#: .\cookbook\views\views.py:326 +#: .\cookbook\views\views.py:396 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." msgstr "" -#: .\cookbook\views\views.py:333 .\cookbook\views\views.py:378 +#: .\cookbook\views\views.py:403 msgid "Passwords dont match!" msgstr "" -#: .\cookbook\views\views.py:349 .\cookbook\views\views.py:385 +#: .\cookbook\views\views.py:419 msgid "User has been created, please login!" msgstr "" -#: .\cookbook\views\views.py:365 +#: .\cookbook\views\views.py:435 msgid "Malformed Invite Link supplied!" msgstr "" -#: .\cookbook\views\views.py:405 +#: .\cookbook\views\views.py:441 +msgid "You are already member of a space and therefore cannot join this one." +msgstr "" + +#: .\cookbook\views\views.py:452 +msgid "Successfully joined space." +msgstr "" + +#: .\cookbook\views\views.py:458 msgid "Invite Link not valid or already used!" msgstr "" diff --git a/cookbook/locale/es/LC_MESSAGES/django.po b/cookbook/locale/es/LC_MESSAGES/django.po index 0e3be296b..d0744710b 100644 --- a/cookbook/locale/es/LC_MESSAGES/django.po +++ b/cookbook/locale/es/LC_MESSAGES/django.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: 2020-06-02 19:28+0000\n" "Last-Translator: Miguel Canteras , 2021\n" "Language-Team: Spanish (https://www.transifex.com/django-recipes/" @@ -25,14 +25,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:91 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 +#: .\cookbook\templates\forms\edit_internal_recipe.html:246 #: .\cookbook\templates\forms\ingredients.html:34 -#: .\cookbook\templates\stats.html:28 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\space.html:37 .\cookbook\templates\stats.html:28 +#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 msgid "Ingredients" msgstr "Ingredientes" -#: .\cookbook\forms.py:45 +#: .\cookbook\forms.py:49 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" @@ -40,13 +41,13 @@ msgstr "" "Color de la barra de navegación superior. No todos los colores funcionan con " "todos los temas, ¡pruébalos!" -#: .\cookbook\forms.py:46 +#: .\cookbook\forms.py:51 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" "Unidad predeterminada que se utilizará al insertar un nuevo ingrediente en " "una receta." -#: .\cookbook\forms.py:47 +#: .\cookbook\forms.py:53 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" @@ -54,7 +55,7 @@ msgstr "" "Permite utilizar fracciones en cantidades de ingredientes (e.g. convierte " "los decimales en fracciones automáticamente)" -#: .\cookbook\forms.py:48 +#: .\cookbook\forms.py:56 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." @@ -62,19 +63,19 @@ msgstr "" "Usuarios con los que las entradas recién creadas del plan de comida/lista de " "la compra deben compartirse de forma predeterminada." -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:58 msgid "Show recently viewed recipes on search page." msgstr "Muestra recetas vistas recientemente en la página de búsqueda." -#: .\cookbook\forms.py:50 +#: .\cookbook\forms.py:59 msgid "Number of decimals to round ingredients." msgstr "Número de decimales para redondear los ingredientes." -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:60 msgid "If you want to be able to create and see comments underneath recipes." msgstr "Si desea poder crear y ver comentarios debajo de las recetas." -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:62 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -88,11 +89,11 @@ msgstr "" "valor establecido es inferior al límite de la instancia, este se " "restablecerá al guardar." -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:65 msgid "Makes the navbar stick to the top of the page." msgstr "Hace la barra de navegación fija en la parte superior de la página." -#: .\cookbook\forms.py:72 +#: .\cookbook\forms.py:81 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" @@ -104,92 +105,95 @@ msgstr "" " \n" " " -#: .\cookbook\forms.py:93 .\cookbook\forms.py:315 -#: .\cookbook\templates\forms\edit_internal_recipe.html:45 +#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "Nombre" -#: .\cookbook\forms.py:94 .\cookbook\forms.py:316 -#: .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:81 -#: .\cookbook\templates\stats.html:24 .\cookbook\templates\url_import.html:202 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 +#: .\cookbook\templates\base.html:105 +#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\templates\space.html:33 .\cookbook\templates\stats.html:24 +#: .\cookbook\templates\url_import.html:188 +#: .\cookbook\templates\url_import.html:573 msgid "Keywords" msgstr "Palabras clave" -#: .\cookbook\forms.py:95 +#: .\cookbook\forms.py:104 msgid "Preparation time in minutes" msgstr "Tiempo de preparación en minutos" -#: .\cookbook\forms.py:96 +#: .\cookbook\forms.py:105 msgid "Waiting time (cooking/baking) in minutes" msgstr "Tiempo de espera (cocinar/hornear) en minutos" -#: .\cookbook\forms.py:97 .\cookbook\forms.py:317 +#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 msgid "Path" msgstr "Ruta" -#: .\cookbook\forms.py:98 +#: .\cookbook\forms.py:107 msgid "Storage UID" msgstr "UID de almacenamiento" -#: .\cookbook\forms.py:121 +#: .\cookbook\forms.py:133 msgid "Default" msgstr "Por defecto" -#: .\cookbook\forms.py:130 +#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:149 +#: .\cookbook\forms.py:164 msgid "New Unit" msgstr "Nueva Unidad" -#: .\cookbook\forms.py:150 +#: .\cookbook\forms.py:165 msgid "New unit that other gets replaced by." msgstr "Nueva unidad que reemplaza a la anterior." -#: .\cookbook\forms.py:155 +#: .\cookbook\forms.py:170 msgid "Old Unit" msgstr "Antigua unidad" -#: .\cookbook\forms.py:156 +#: .\cookbook\forms.py:171 msgid "Unit that should be replaced." msgstr "Unidad que se va a reemplazar." -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:187 msgid "New Food" msgstr "Nuevo Alimento" -#: .\cookbook\forms.py:173 +#: .\cookbook\forms.py:188 msgid "New food that other gets replaced by." msgstr "Nuevo alimento que remplaza al anterior." -#: .\cookbook\forms.py:178 +#: .\cookbook\forms.py:193 msgid "Old Food" msgstr "Antiguo alimento" -#: .\cookbook\forms.py:179 +#: .\cookbook\forms.py:194 msgid "Food that should be replaced." msgstr "Alimento que se va a reemplazar." -#: .\cookbook\forms.py:197 +#: .\cookbook\forms.py:212 msgid "Add your comment: " msgstr "Añada su comentario:" -#: .\cookbook\forms.py:238 +#: .\cookbook\forms.py:253 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" "Déjelo vacío para Dropbox e ingrese la contraseña de la aplicación para " "nextcloud." -#: .\cookbook\forms.py:245 +#: .\cookbook\forms.py:260 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" "Déjelo en blanco para nextcloud e ingrese el token de api para dropbox." -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:269 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -197,26 +201,26 @@ msgstr "" "Dejar vació para Dropbox e introducir sólo la URL base para Nextcloud " "(/remote.php/webdav/ se añade automáticamente)" -#: .\cookbook\forms.py:291 +#: .\cookbook\forms.py:307 msgid "Search String" msgstr "Cadena de búsqueda" -#: .\cookbook\forms.py:318 +#: .\cookbook\forms.py:334 msgid "File ID" msgstr "ID de Fichero" -#: .\cookbook\forms.py:354 +#: .\cookbook\forms.py:370 msgid "You must provide at least a recipe or a title." msgstr "Debe proporcionar al menos una receta o un título." -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:383 msgid "You can list default users to share recipes with in the settings." msgstr "" "Puede enumerar los usuarios predeterminados con los que compartir recetas en " "la configuración." -#: .\cookbook\forms.py:368 -#: .\cookbook\templates\forms\edit_internal_recipe.html:377 +#: .\cookbook\forms.py:384 +#: .\cookbook\templates\forms\edit_internal_recipe.html:404 msgid "" "You can use markdown to format this field. See the docs here" @@ -224,52 +228,57 @@ msgstr "" "Puede utilizar Markdown para formatear este campo. Vea la documentación aqui" -#: .\cookbook\forms.py:393 -msgid "A username is not required, if left blank the new user can choose one." +#: .\cookbook\forms.py:409 +msgid "Maximum number of users for this space reached." msgstr "" -"No se requiere un nombre de usuario, si se deja en blanco, el nuevo usuario " -"puede elegir uno." -#: .\cookbook\helper\permission_helper.py:123 -#: .\cookbook\helper\permission_helper.py:129 -#: .\cookbook\helper\permission_helper.py:151 -#: .\cookbook\helper\permission_helper.py:196 -#: .\cookbook\helper\permission_helper.py:210 -#: .\cookbook\helper\permission_helper.py:221 -#: .\cookbook\helper\permission_helper.py:232 .\cookbook\views\data.py:30 -#: .\cookbook\views\views.py:112 .\cookbook\views\views.py:116 -#: .\cookbook\views\views.py:184 -msgid "You do not have the required permissions to view this page!" -msgstr "¡No tienes los permisos necesarios para ver esta página!" +#: .\cookbook\forms.py:415 +msgid "Email address already taken!" +msgstr "" -#: .\cookbook\helper\permission_helper.py:141 +#: .\cookbook\forms.py:423 +msgid "" +"An email address is not required but if present the invite link will be send " +"to the user." +msgstr "" + +#: .\cookbook\forms.py:438 +msgid "Name already taken." +msgstr "" + +#: .\cookbook\forms.py:449 +msgid "Accept Terms and Privacy" +msgstr "" + +#: .\cookbook\helper\AllAuthCustomAdapter.py:30 +msgid "" +"In order to prevent spam, the requested email was not send. Please wait a " +"few minutes and try again." +msgstr "" + +#: .\cookbook\helper\permission_helper.py:124 +#: .\cookbook\helper\permission_helper.py:144 .\cookbook\views\views.py:147 msgid "You are not logged in and therefore cannot view this page!" msgstr "¡No ha iniciado sesión y por lo tanto no puede ver esta página!" -#: .\cookbook\helper\permission_helper.py:145 -#: .\cookbook\helper\permission_helper.py:167 -#: .\cookbook\helper\permission_helper.py:182 +#: .\cookbook\helper\permission_helper.py:127 +#: .\cookbook\helper\permission_helper.py:132 +#: .\cookbook\helper\permission_helper.py:154 +#: .\cookbook\helper\permission_helper.py:199 +#: .\cookbook\helper\permission_helper.py:213 +#: .\cookbook\helper\permission_helper.py:224 +#: .\cookbook\helper\permission_helper.py:235 .\cookbook\views\data.py:39 +#: .\cookbook\views\views.py:158 .\cookbook\views\views.py:165 +#: .\cookbook\views\views.py:253 +msgid "You do not have the required permissions to view this page!" +msgstr "¡No tienes los permisos necesarios para ver esta página!" + +#: .\cookbook\helper\permission_helper.py:148 +#: .\cookbook\helper\permission_helper.py:170 +#: .\cookbook\helper\permission_helper.py:185 msgid "You cannot interact with this object as it is not owned by you!" msgstr "¡No puede interactuar con este objeto ya que no es de tu propiedad!" -#: .\cookbook\helper\recipe_url_import.py:40 .\cookbook\views\api.py:549 -msgid "The requested site provided malformed data and cannot be read." -msgstr "" -"El sitio solicitado proporcionó datos con formato incorrecto y no se puede " -"leer." - -#: .\cookbook\helper\recipe_url_import.py:54 -msgid "" -"The requested site does not provide any recognized data format to import the " -"recipe from." -msgstr "" -"El sitio solicitado no proporciona ningún formato de datos reconocido para " -"importar la receta." - -#: .\cookbook\helper\recipe_url_import.py:160 -msgid "Imported from" -msgstr "Importado de" - #: .\cookbook\helper\template_helper.py:60 #: .\cookbook\helper\template_helper.py:62 msgid "Could not parse template code." @@ -279,12 +288,16 @@ msgstr "" #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 -#: .\cookbook\templates\url_import.html:233 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:190 +#: .\cookbook\templates\url_import.html:27 +#: .\cookbook\templates\url_import.html:101 +#: .\cookbook\templates\url_import.html:123 +#: .\cookbook\templates\url_import.html:317 +#: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 +#: .\cookbook\views\edit.py:199 msgid "Import" msgstr "Importar" -#: .\cookbook\integration\integration.py:131 +#: .\cookbook\integration\integration.py:162 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" @@ -292,36 +305,43 @@ msgstr "" "El importador esperaba un fichero.zip. ¿Has escogido el tipo de importador " "correcto para tus datos?" -#: .\cookbook\integration\integration.py:134 +#: .\cookbook\integration\integration.py:165 +msgid "" +"An unexpected error occurred during the import. Please make sure you have " +"uploaded a valid file." +msgstr "" + +#: .\cookbook\integration\integration.py:169 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:137 +#: .\cookbook\integration\integration.py:173 #, fuzzy, python-format #| msgid "Imported new recipe!" msgid "Imported %s recipes." msgstr "¡Nueva receta importada!" -#: .\cookbook\integration\paprika.py:44 +#: .\cookbook\integration\paprika.py:46 #, fuzzy #| msgid "Note" msgid "Notes" msgstr "Nota" -#: .\cookbook\integration\paprika.py:47 +#: .\cookbook\integration\paprika.py:49 #, fuzzy #| msgid "Information" msgid "Nutritional Information" msgstr "Información" -#: .\cookbook\integration\paprika.py:50 +#: .\cookbook\integration\paprika.py:53 msgid "Source" msgstr "" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:75 +#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 -#: .\cookbook\templates\url_import.html:84 +#: .\cookbook\templates\url_import.html:224 +#: .\cookbook\templates\url_import.html:455 msgid "Servings" msgstr "Raciones" @@ -330,11 +350,11 @@ msgid "Waiting time" msgstr "Tiempo de espera" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:69 +#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "Tiempo de Preparación" -#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:71 +#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:78 #: .\cookbook\templates\forms\ingredients.html:7 #: .\cookbook\templates\index.html:7 msgid "Cookbook" @@ -360,44 +380,74 @@ msgstr "Cena" msgid "Other" msgstr "Otro" -#: .\cookbook\models.py:110 .\cookbook\templates\shopping_list.html:48 +#: .\cookbook\models.py:71 +msgid "" +"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " +"upload." +msgstr "" + +#: .\cookbook\models.py:121 .\cookbook\templates\search.html:7 +#: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "Buscar" -#: .\cookbook\models.py:111 .\cookbook\templates\base.html:85 +#: .\cookbook\models.py:122 .\cookbook\templates\base.html:92 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:224 .\cookbook\views\new.py:188 +#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 msgid "Meal-Plan" msgstr "Régimen de comidas" -#: .\cookbook\models.py:112 .\cookbook\templates\base.html:82 +#: .\cookbook\models.py:123 .\cookbook\templates\base.html:89 msgid "Books" msgstr "Libros" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Small" msgstr "Pequeño" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Large" msgstr "Grande" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:198 +#: .\cookbook\models.py:131 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\templates\generic\new_template.html:14 +#: .\cookbook\templates\meal_plan.html:323 +msgid "New" +msgstr "Nuevo" + +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:202 msgid "Text" msgstr "Texto" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:199 +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:203 msgid "Time" msgstr "Tiempo" +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:204 +#: .\cookbook\templates\forms\edit_internal_recipe.html:218 +#, fuzzy +#| msgid "File ID" +msgid "File" +msgstr "ID de Fichero" + +#: .\cookbook\serializer.py:109 +msgid "File uploads are not enabled for this Space." +msgstr "" + +#: .\cookbook\serializer.py:117 +msgid "You have reached your file upload limit." +msgstr "" + #: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 #: .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 #: .\cookbook\templates\shopping_list.html:33 +#: .\cookbook\templates\space.html:84 msgid "Edit" msgstr "Editar" @@ -411,10 +461,6 @@ msgstr "Editar" msgid "Delete" msgstr "Eliminar" -#: .\cookbook\tables.py:144 -msgid "Link" -msgstr "Enlace" - #: .\cookbook\templates\404.html:5 msgid "404 Error" msgstr "Error 404" @@ -431,21 +477,126 @@ msgstr "Llévame a Inicio" msgid "Report a Bug" msgstr "Reportar un error" -#: .\cookbook\templates\account\login.html:7 -#: .\cookbook\templates\base.html:170 +#: .\cookbook\templates\account\email.html:6 +#: .\cookbook\templates\account\email.html:9 +msgid "E-mail Addresses" +msgstr "" + +#: .\cookbook\templates\account\email.html:11 +msgid "The following e-mail addresses are associated with your account:" +msgstr "" + +#: .\cookbook\templates\account\email.html:28 +msgid "Verified" +msgstr "" + +#: .\cookbook\templates\account\email.html:30 +msgid "Unverified" +msgstr "" + +#: .\cookbook\templates\account\email.html:32 +msgid "Primary" +msgstr "" + +#: .\cookbook\templates\account\email.html:39 +#, fuzzy +#| msgid "Make Header" +msgid "Make Primary" +msgstr "Crear encabezado" + +#: .\cookbook\templates\account\email.html:41 +msgid "Re-send Verification" +msgstr "" + +#: .\cookbook\templates\account\email.html:42 +#: .\cookbook\templates\socialaccount\connections.html:36 +msgid "Remove" +msgstr "Eliminar" + +#: .\cookbook\templates\account\email.html:50 +#, fuzzy +#| msgid "Warning" +msgid "Warning:" +msgstr "Advertencia" + +#: .\cookbook\templates\account\email.html:50 +msgid "" +"You currently do not have any e-mail address set up. You should really add " +"an e-mail address so you can receive notifications, reset your password, etc." +msgstr "" + +#: .\cookbook\templates\account\email.html:56 +msgid "Add E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email.html:61 +msgid "Add E-mail" +msgstr "" + +#: .\cookbook\templates\account\email.html:71 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:6 +#: .\cookbook\templates\account\email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that\n" +" %(email)s is an e-mail address " +"for user %(user_display)s\n" +" ." +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:22 +#: .\cookbook\templates\generic\delete_template.html:21 +msgid "Confirm" +msgstr "Confirmar" + +#: .\cookbook\templates\account\email_confirm.html:29 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please\n" +" issue a new e-mail confirmation " +"request." +msgstr "" + +#: .\cookbook\templates\account\login.html:8 +#: .\cookbook\templates\base.html:180 msgid "Login" msgstr "Iniciar sesión" -#: .\cookbook\templates\account\login.html:13 -#: .\cookbook\templates\account\login.html:28 +#: .\cookbook\templates\account\login.html:15 +#: .\cookbook\templates\account\login.html:31 +#: .\cookbook\templates\account\signup.html:69 +#: .\cookbook\templates\account\signup_closed.html:15 msgid "Sign In" msgstr "Iniciar sesión" -#: .\cookbook\templates\account\login.html:38 +#: .\cookbook\templates\account\login.html:32 +#, fuzzy +#| msgid "Sign In" +msgid "Sign Up" +msgstr "Iniciar sesión" + +#: .\cookbook\templates\account\login.html:36 +#: .\cookbook\templates\account\login.html:37 +#: .\cookbook\templates\account\password_reset.html:29 +msgid "Reset My Password" +msgstr "" + +#: .\cookbook\templates\account\login.html:37 +msgid "Lost your password?" +msgstr "" + +#: .\cookbook\templates\account\login.html:48 msgid "Social Login" msgstr "Inicio de sesión social" -#: .\cookbook\templates\account\login.html:39 +#: .\cookbook\templates\account\login.html:49 msgid "You can use any of the following providers to sign in." msgstr "" "Puedes usar cualquiera de los siguientes proveedores de inicio de sesión." @@ -460,116 +611,168 @@ msgstr "Salir" msgid "Are you sure you want to sign out?" msgstr "¿Seguro que quieres salir?" -#: .\cookbook\templates\account\password_reset.html:5 -#: .\cookbook\templates\account\password_reset_done.html:5 +#: .\cookbook\templates\account\password_reset.html:7 +#: .\cookbook\templates\account\password_reset.html:13 +#: .\cookbook\templates\account\password_reset_done.html:7 +#: .\cookbook\templates\account\password_reset_done.html:10 msgid "Password Reset" msgstr "Restablecer contraseña" -#: .\cookbook\templates\account\password_reset.html:9 -#: .\cookbook\templates\account\password_reset_done.html:9 -msgid "Password reset is not implemented for the time being!" +#: .\cookbook\templates\account\password_reset.html:24 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." +msgstr "" + +#: .\cookbook\templates\account\password_reset.html:32 +#, fuzzy +#| msgid "Password reset is not implemented for the time being!" +msgid "Password reset is disabled on this instance." msgstr "¡Restablecimiento de contraseña no está implementado de momento!" -#: .\cookbook\templates\account\signup.html:5 +#: .\cookbook\templates\account\password_reset_done.html:16 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: .\cookbook\templates\account\signup.html:6 msgid "Register" msgstr "Registrar" -#: .\cookbook\templates\account\signup.html:9 -msgid "Create your Account" +#: .\cookbook\templates\account\signup.html:12 +#, fuzzy +#| msgid "Create your Account" +msgid "Create an Account" msgstr "Crea tu Cuenta" -#: .\cookbook\templates\account\signup.html:14 +#: .\cookbook\templates\account\signup.html:42 +msgid "I accept the follwoing" +msgstr "" + +#: .\cookbook\templates\account\signup.html:45 +msgid "Terms and Conditions" +msgstr "" + +#: .\cookbook\templates\account\signup.html:48 +msgid "and" +msgstr "" + +#: .\cookbook\templates\account\signup.html:52 +msgid "Privacy Policy" +msgstr "" + +#: .\cookbook\templates\account\signup.html:65 msgid "Create User" msgstr "Crear Usuario" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:160 +#: .\cookbook\templates\account\signup.html:69 +msgid "Already have an account?" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:5 +#: .\cookbook\templates\account\signup_closed.html:11 +msgid "Sign Up Closed" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:13 +msgid "We are sorry, but the sign up is currently closed." +msgstr "" + +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:170 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "Documentación de API" -#: .\cookbook\templates\base.html:78 +#: .\cookbook\templates\base.html:85 msgid "Utensils" msgstr "Utensilios" -#: .\cookbook\templates\base.html:88 +#: .\cookbook\templates\base.html:95 msgid "Shopping" msgstr "Compras" -#: .\cookbook\templates\base.html:102 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:93 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:66 +#: .\cookbook\templates\base.html:109 .\cookbook\views\delete.py:84 +#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 +#: .\cookbook\views\new.py:78 msgid "Keyword" msgstr "Palabra clave" -#: .\cookbook\templates\base.html:104 +#: .\cookbook\templates\base.html:111 msgid "Batch Edit" msgstr "Edición Masiva" -#: .\cookbook\templates\base.html:109 +#: .\cookbook\templates\base.html:116 msgid "Storage Data" msgstr "Almacenamiento de Datos" -#: .\cookbook\templates\base.html:113 +#: .\cookbook\templates\base.html:120 msgid "Storage Backends" msgstr "Backends de Almacenamiento" -#: .\cookbook\templates\base.html:115 +#: .\cookbook\templates\base.html:122 msgid "Configure Sync" msgstr "Configurar Sincronización" -#: .\cookbook\templates\base.html:117 +#: .\cookbook\templates\base.html:124 msgid "Discovered Recipes" msgstr "Recetas Descubiertas" -#: .\cookbook\templates\base.html:119 +#: .\cookbook\templates\base.html:126 msgid "Discovery Log" msgstr "Registro de descubrimiento" -#: .\cookbook\templates\base.html:121 .\cookbook\templates\stats.html:10 +#: .\cookbook\templates\base.html:128 .\cookbook\templates\stats.html:10 msgid "Statistics" msgstr "Estadísticas" -#: .\cookbook\templates\base.html:123 +#: .\cookbook\templates\base.html:130 msgid "Units & Ingredients" msgstr "Unidades e ingredientes" -#: .\cookbook\templates\base.html:125 +#: .\cookbook\templates\base.html:132 .\cookbook\templates\index.html:47 msgid "Import Recipe" msgstr "Importar receta" -#: .\cookbook\templates\base.html:144 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:151 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:16 msgid "Settings" msgstr "Opciones" -#: .\cookbook\templates\base.html:146 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:153 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "Historial" -#: .\cookbook\templates\base.html:150 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:155 .\cookbook\templates\space.html:7 +#, fuzzy +#| msgid "Settings" +msgid "Space Settings" +msgstr "Opciones" + +#: .\cookbook\templates\base.html:160 .\cookbook\templates\system.html:13 msgid "System" msgstr "Sistema" -#: .\cookbook\templates\base.html:152 +#: .\cookbook\templates\base.html:162 msgid "Admin" msgstr "Administrador" -#: .\cookbook\templates\base.html:156 +#: .\cookbook\templates\base.html:166 msgid "Markdown Guide" msgstr "Guia Markdown" -#: .\cookbook\templates\base.html:158 +#: .\cookbook\templates\base.html:168 msgid "GitHub" msgstr "GitHub" -#: .\cookbook\templates\base.html:162 +#: .\cookbook\templates\base.html:172 msgid "API Browser" msgstr "Explorador de API" -#: .\cookbook\templates\base.html:165 -msgid "Logout" -msgstr "Cerrar sesión" +#: .\cookbook\templates\base.html:175 +msgid "Log out" +msgstr "" #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" @@ -585,7 +788,7 @@ msgstr "" "Agregue las palabras clave especificadas a todas las recetas que contengan " "una palabra" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:76 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 msgid "Sync" msgstr "Sincronizar" @@ -614,7 +817,7 @@ msgstr "¡Sincronizar ahora!" msgid "Importing Recipes" msgstr "Importando Recetas" -#: .\cookbook\templates\batch\waiting.html:23 +#: .\cookbook\templates\batch\waiting.html:28 msgid "" "This can take a few minutes, depending on the number of recipes in sync, " "please wait." @@ -653,26 +856,33 @@ msgid "Export Recipes" msgstr "Exportar recetas" #: .\cookbook\templates\export.html:14 .\cookbook\templates\export.html:20 -#: .\cookbook\templates\shopping_list.html:347 +#: .\cookbook\templates\shopping_list.html:351 #: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20 msgid "Export" msgstr "Exportar" +#: .\cookbook\templates\files.html:7 +#, fuzzy +#| msgid "File ID" +msgid "Files" +msgstr "ID de Fichero" + #: .\cookbook\templates\forms\edit_import_recipe.html:5 #: .\cookbook\templates\forms\edit_import_recipe.html:9 msgid "Import new Recipe" msgstr "Importar nueva receta" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:389 -#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:416 +#: .\cookbook\templates\forms\edit_internal_recipe.html:448 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:28 .\cookbook\templates\settings.html:35 -#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:73 -#: .\cookbook\templates\shopping_list.html:349 +#: .\cookbook\templates\settings.html:44 .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:114 +#: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "Guardar" @@ -681,181 +891,190 @@ msgstr "Guardar" msgid "Edit Recipe" msgstr "Editar receta" -#: .\cookbook\templates\forms\edit_internal_recipe.html:52 +#: .\cookbook\templates\forms\edit_internal_recipe.html:56 +#: .\cookbook\templates\url_import.html:171 msgid "Description" msgstr "Descripción" -#: .\cookbook\templates\forms\edit_internal_recipe.html:72 +#: .\cookbook\templates\forms\edit_internal_recipe.html:76 msgid "Waiting Time" msgstr "Tiempo de espera" -#: .\cookbook\templates\forms\edit_internal_recipe.html:78 +#: .\cookbook\templates\forms\edit_internal_recipe.html:82 msgid "Servings Text" msgstr "Texto de raciones" -#: .\cookbook\templates\forms\edit_internal_recipe.html:89 +#: .\cookbook\templates\forms\edit_internal_recipe.html:93 msgid "Select Keywords" msgstr "Seleccionar palabras clave" -#: .\cookbook\templates\forms\edit_internal_recipe.html:90 -#: .\cookbook\templates\url_import.html:212 +#: .\cookbook\templates\forms\edit_internal_recipe.html:94 +#: .\cookbook\templates\url_import.html:583 #, fuzzy #| msgid "All Keywords" msgid "Add Keyword" msgstr "Todas las palabras clave." -#: .\cookbook\templates\forms\edit_internal_recipe.html:108 +#: .\cookbook\templates\forms\edit_internal_recipe.html:112 msgid "Nutrition" msgstr "Información Nutricional" -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -#: .\cookbook\templates\forms\edit_internal_recipe.html:162 +#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:166 msgid "Delete Step" msgstr "Eliminar paso" -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:120 msgid "Calories" msgstr "Calorías" -#: .\cookbook\templates\forms\edit_internal_recipe.html:119 +#: .\cookbook\templates\forms\edit_internal_recipe.html:123 msgid "Carbohydrates" msgstr "Carbohidratos" -#: .\cookbook\templates\forms\edit_internal_recipe.html:122 +#: .\cookbook\templates\forms\edit_internal_recipe.html:126 msgid "Fats" msgstr "Grasas" -#: .\cookbook\templates\forms\edit_internal_recipe.html:124 +#: .\cookbook\templates\forms\edit_internal_recipe.html:128 msgid "Proteins" msgstr "Proteinas" -#: .\cookbook\templates\forms\edit_internal_recipe.html:146 -#: .\cookbook\templates\forms\edit_internal_recipe.html:454 +#: .\cookbook\templates\forms\edit_internal_recipe.html:150 +#: .\cookbook\templates\forms\edit_internal_recipe.html:481 msgid "Step" msgstr "Paso" -#: .\cookbook\templates\forms\edit_internal_recipe.html:167 +#: .\cookbook\templates\forms\edit_internal_recipe.html:171 msgid "Show as header" msgstr "Mostrar como encabezado" -#: .\cookbook\templates\forms\edit_internal_recipe.html:173 +#: .\cookbook\templates\forms\edit_internal_recipe.html:177 msgid "Hide as header" msgstr "Ocultar como encabezado" -#: .\cookbook\templates\forms\edit_internal_recipe.html:178 +#: .\cookbook\templates\forms\edit_internal_recipe.html:182 msgid "Move Up" msgstr "Mover Arriba" -#: .\cookbook\templates\forms\edit_internal_recipe.html:183 +#: .\cookbook\templates\forms\edit_internal_recipe.html:187 msgid "Move Down" msgstr "Mover Abajo" -#: .\cookbook\templates\forms\edit_internal_recipe.html:192 +#: .\cookbook\templates\forms\edit_internal_recipe.html:196 msgid "Step Name" msgstr "Nombre del paso" -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:200 msgid "Step Type" msgstr "Tipo de paso" -#: .\cookbook\templates\forms\edit_internal_recipe.html:207 +#: .\cookbook\templates\forms\edit_internal_recipe.html:212 msgid "Step time in Minutes" msgstr "Tiempo de paso en minutos" -#: .\cookbook\templates\forms\edit_internal_recipe.html:261 -#: .\cookbook\templates\shopping_list.html:183 -msgid "Select Unit" -msgstr "Seleccionar unidad" +#: .\cookbook\templates\forms\edit_internal_recipe.html:228 +#, fuzzy +#| msgid "Select one" +msgid "Select File" +msgstr "Seleccione uno" -#: .\cookbook\templates\forms\edit_internal_recipe.html:262 -#: .\cookbook\templates\forms\edit_internal_recipe.html:286 -#: .\cookbook\templates\shopping_list.html:184 -#: .\cookbook\templates\shopping_list.html:206 -msgid "Create" -msgstr "Crear" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:263 -#: .\cookbook\templates\forms\edit_internal_recipe.html:287 -#: .\cookbook\templates\shopping_list.html:185 -#: .\cookbook\templates\shopping_list.html:207 -#: .\cookbook\templates\shopping_list.html:237 -#: .\cookbook\templates\shopping_list.html:261 -#: .\cookbook\templates\url_import.html:124 -#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\forms\edit_internal_recipe.html:229 +#: .\cookbook\templates\forms\edit_internal_recipe.html:290 +#: .\cookbook\templates\forms\edit_internal_recipe.html:314 +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 msgid "Select" msgstr "Seleccionar" -#: .\cookbook\templates\forms\edit_internal_recipe.html:285 -#: .\cookbook\templates\shopping_list.html:205 +#: .\cookbook\templates\forms\edit_internal_recipe.html:288 +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "Seleccionar unidad" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:289 +#: .\cookbook\templates\forms\edit_internal_recipe.html:313 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "Crear" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:312 +#: .\cookbook\templates\shopping_list.html:209 msgid "Select Food" msgstr "Seleccionar Alimento" -#: .\cookbook\templates\forms\edit_internal_recipe.html:302 +#: .\cookbook\templates\forms\edit_internal_recipe.html:329 #: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:171 +#: .\cookbook\templates\url_import.html:542 msgid "Note" msgstr "Nota" -#: .\cookbook\templates\forms\edit_internal_recipe.html:319 +#: .\cookbook\templates\forms\edit_internal_recipe.html:346 msgid "Delete Ingredient" msgstr "Eliminar ingrediente" -#: .\cookbook\templates\forms\edit_internal_recipe.html:325 +#: .\cookbook\templates\forms\edit_internal_recipe.html:352 msgid "Make Header" msgstr "Crear encabezado" -#: .\cookbook\templates\forms\edit_internal_recipe.html:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:358 msgid "Make Ingredient" msgstr "Crear ingrediente" -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 +#: .\cookbook\templates\forms\edit_internal_recipe.html:364 msgid "Disable Amount" msgstr "Deshabilitar cantidad" -#: .\cookbook\templates\forms\edit_internal_recipe.html:343 +#: .\cookbook\templates\forms\edit_internal_recipe.html:370 msgid "Enable Amount" msgstr "Habilitar cantidad" -#: .\cookbook\templates\forms\edit_internal_recipe.html:348 +#: .\cookbook\templates\forms\edit_internal_recipe.html:375 msgid "Copy Template Reference" msgstr "Copiar Referencia de Plantilla" -#: .\cookbook\templates\forms\edit_internal_recipe.html:374 -#: .\cookbook\templates\url_import.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:401 +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 msgid "Instructions" msgstr "Instrucciones" -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:414 +#: .\cookbook\templates\forms\edit_internal_recipe.html:445 msgid "Save & View" msgstr "Guardar y ver" -#: .\cookbook\templates\forms\edit_internal_recipe.html:391 -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 +#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:451 msgid "Add Step" msgstr "Agregar paso" -#: .\cookbook\templates\forms\edit_internal_recipe.html:394 -#: .\cookbook\templates\forms\edit_internal_recipe.html:428 +#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:455 msgid "Add Nutrition" msgstr "Añadir Información Nutricional" -#: .\cookbook\templates\forms\edit_internal_recipe.html:396 -#: .\cookbook\templates\forms\edit_internal_recipe.html:430 +#: .\cookbook\templates\forms\edit_internal_recipe.html:423 +#: .\cookbook\templates\forms\edit_internal_recipe.html:457 msgid "Remove Nutrition" msgstr "Eliminar Información Nutricional" -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -#: .\cookbook\templates\forms\edit_internal_recipe.html:433 +#: .\cookbook\templates\forms\edit_internal_recipe.html:425 +#: .\cookbook\templates\forms\edit_internal_recipe.html:460 msgid "View Recipe" msgstr "Ver la receta" -#: .\cookbook\templates\forms\edit_internal_recipe.html:400 -#: .\cookbook\templates\forms\edit_internal_recipe.html:435 +#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\templates\forms\edit_internal_recipe.html:462 msgid "Delete Recipe" msgstr "Eliminar receta" -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 +#: .\cookbook\templates\forms\edit_internal_recipe.html:468 msgid "Steps" msgstr "Pasos" @@ -882,7 +1101,7 @@ msgstr "" " " #: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\stats.html:26 +#: .\cookbook\templates\space.html:35 .\cookbook\templates\stats.html:26 msgid "Units" msgstr "Unidades" @@ -904,10 +1123,6 @@ msgstr "¿Estás seguro de que quieres combinar estos dos ingredientes?" msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "¿Estás seguro de que quieres borrar el %(title)s: %(object)s?" -#: .\cookbook\templates\generic\delete_template.html:21 -msgid "Confirm" -msgstr "Confirmar" - #: .\cookbook\templates\generic\edit_template.html:30 msgid "View" msgstr "Ver" @@ -929,12 +1144,6 @@ msgstr "Filtro" msgid "Import all" msgstr "Importar todo" -#: .\cookbook\templates\generic\new_template.html:6 -#: .\cookbook\templates\generic\new_template.html:14 -#: .\cookbook\templates\meal_plan.html:323 -msgid "New" -msgstr "Nuevo" - #: .\cookbook\templates\generic\table_template.html:76 #: .\cookbook\templates\recipes_table.html:121 msgid "previous" @@ -979,7 +1188,7 @@ msgstr "Cerrar" #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:264 .\cookbook\views\new.py:40 +#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "Receta" @@ -1021,10 +1230,6 @@ msgstr "Buscar receta ..." msgid "New Recipe" msgstr "Nueva receta" -#: .\cookbook\templates\index.html:47 -msgid "Website Import" -msgstr "Importación de sitios web" - #: .\cookbook\templates\index.html:53 msgid "Advanced Search" msgstr "Búsqueda Avanzada" @@ -1038,7 +1243,7 @@ msgid "Last viewed" msgstr "Visto por última vez" #: .\cookbook\templates\index.html:87 .\cookbook\templates\meal_plan.html:178 -#: .\cookbook\templates\stats.html:22 +#: .\cookbook\templates\space.html:29 .\cookbook\templates\stats.html:22 msgid "Recipes" msgstr "Recetas" @@ -1204,7 +1409,7 @@ msgid "New Entry" msgstr "Nueva entrada" #: .\cookbook\templates\meal_plan.html:113 -#: .\cookbook\templates\shopping_list.html:52 +#: .\cookbook\templates\shopping_list.html:56 msgid "Search Recipe" msgstr "Buscar Receta" @@ -1237,7 +1442,7 @@ msgstr "Crear sólo una nota" #: .\cookbook\templates\meal_plan.html:168 #: .\cookbook\templates\shopping_list.html:7 #: .\cookbook\templates\shopping_list.html:29 -#: .\cookbook\templates\shopping_list.html:705 +#: .\cookbook\templates\shopping_list.html:714 msgid "Shopping List" msgstr "Lista de la Compra" @@ -1289,7 +1494,7 @@ msgstr "Creado por" #: .\cookbook\templates\meal_plan.html:270 #: .\cookbook\templates\meal_plan_entry.html:20 -#: .\cookbook\templates\shopping_list.html:250 +#: .\cookbook\templates\shopping_list.html:254 msgid "Shared with" msgstr "Compartido con" @@ -1402,7 +1607,6 @@ msgstr "" #: .\cookbook\templates\no_groups_info.html:18 #: .\cookbook\templates\no_perm_info.html:15 -#: .\cookbook\templates\no_space_info.html:15 msgid "Please contact your administrator." msgstr "" @@ -1421,13 +1625,50 @@ msgid "" "action." msgstr "¡No tienes los permisos necesarios para realizar esta acción!" -#: .\cookbook\templates\no_space_info.html:5 -#: .\cookbook\templates\no_space_info.html:12 +#: .\cookbook\templates\no_space_info.html:6 +#: .\cookbook\templates\no_space_info.html:13 msgid "No Space" msgstr "" -#: .\cookbook\templates\no_space_info.html:15 -msgid "You are not a member of any space." +#: .\cookbook\templates\no_space_info.html:17 +msgid "" +"Recipes, foods, shopping lists and more are organized in spaces of one or " +"more people." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:18 +msgid "" +"You can either be invited into an existing space or create your own one." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:31 +#: .\cookbook\templates\no_space_info.html:40 +msgid "Join Space" +msgstr "" + +#: .\cookbook\templates\no_space_info.html:34 +msgid "Join an existing space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:35 +msgid "" +"To join an existing space either enter your invite token or click on the " +"invite link the space owner send you." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:48 +#: .\cookbook\templates\no_space_info.html:56 +#, fuzzy +#| msgid "Create User" +msgid "Create Space" +msgstr "Crear Usuario" + +#: .\cookbook\templates\no_space_info.html:51 +msgid "Create your own recipe space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:52 +msgid "Start your own recipe space and invite other users to it." msgstr "" #: .\cookbook\templates\offline.html:6 @@ -1447,28 +1688,29 @@ msgstr "" "porque las has visto recientemente. Ten en cuenta que los datos pueden estar " "desactualizados." -#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\stats.html:47 +#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\space.html:56 +#: .\cookbook\templates\stats.html:47 msgid "Comments" msgstr "Comentarios" #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:170 +#: .\cookbook\views\edit.py:179 msgid "Comment" msgstr "Comentario" #: .\cookbook\templates\recipes_table.html:19 #: .\cookbook\templates\recipes_table.html:23 -#: .\cookbook\templates\url_import.html:69 +#: .\cookbook\templates\url_import.html:440 msgid "Recipe Image" msgstr "Imagen de la receta" #: .\cookbook\templates\recipes_table.html:51 -#: .\cookbook\templates\url_import.html:74 +#: .\cookbook\templates\url_import.html:445 msgid "Preparation time ca." msgstr "Tiempo de preparación ca." #: .\cookbook\templates\recipes_table.html:57 -#: .\cookbook\templates\url_import.html:79 +#: .\cookbook\templates\url_import.html:450 msgid "Waiting time ca." msgstr "Tiempo de espera ca." @@ -1484,27 +1726,67 @@ msgstr "Registrar receta cocinada" msgid "Recipe Home" msgstr "Página de inicio" -#: .\cookbook\templates\settings.html:22 +#: .\cookbook\templates\settings.html:23 msgid "Account" msgstr "Cuenta" -#: .\cookbook\templates\settings.html:38 -msgid "Link social account" +#: .\cookbook\templates\settings.html:27 +msgid "Preferences" +msgstr "" + +#: .\cookbook\templates\settings.html:31 +#, fuzzy +#| msgid "Settings" +msgid "API-Settings" +msgstr "Opciones" + +#: .\cookbook\templates\settings.html:39 +#, fuzzy +#| msgid "Settings" +msgid "Name Settings" +msgstr "Opciones" + +#: .\cookbook\templates\settings.html:47 +#, fuzzy +#| msgid "Password Reset" +msgid "Password Settings" +msgstr "Restablecer contraseña" + +#: .\cookbook\templates\settings.html:55 +#, fuzzy +#| msgid "Settings" +msgid "Email Settings" +msgstr "Opciones" + +#: .\cookbook\templates\settings.html:57 +msgid "Manage Email Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:61 +#, fuzzy +#| msgid "Social Login" +msgid "Social" +msgstr "Inicio de sesión social" + +#: .\cookbook\templates\settings.html:63 +#, fuzzy +#| msgid "Link social account" +msgid "Manage Social Accounts" msgstr "Enlazar cuenta social" -#: .\cookbook\templates\settings.html:42 +#: .\cookbook\templates\settings.html:75 msgid "Language" msgstr "Idioma" -#: .\cookbook\templates\settings.html:67 +#: .\cookbook\templates\settings.html:105 msgid "Style" msgstr "Estilo" -#: .\cookbook\templates\settings.html:79 +#: .\cookbook\templates\settings.html:125 msgid "API Token" msgstr "Token API" -#: .\cookbook\templates\settings.html:80 +#: .\cookbook\templates\settings.html:126 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." @@ -1512,7 +1794,7 @@ msgstr "" "Puedes utilizar tanto la autenticación básica como la autenticación basada " "en tokens para acceder a la API REST." -#: .\cookbook\templates\settings.html:92 +#: .\cookbook\templates\settings.html:143 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" @@ -1520,7 +1802,7 @@ msgstr "" "Utilice el token como cabecera de autorización usando como prefijo la " "palabra token, tal y como se muestra en los siguientes ejemplos:" -#: .\cookbook\templates\settings.html:94 +#: .\cookbook\templates\settings.html:145 msgid "or" msgstr "o" @@ -1543,58 +1825,55 @@ msgstr "" msgid "Create Superuser account" msgstr "Crear cuenta de Superusuario" -#: .\cookbook\templates\shopping_list.html:75 +#: .\cookbook\templates\shopping_list.html:79 msgid "Shopping Recipes" msgstr "Recetas en el carro de la compra" -#: .\cookbook\templates\shopping_list.html:79 +#: .\cookbook\templates\shopping_list.html:83 msgid "No recipes selected" msgstr "No hay recetas seleccionadas" -#: .\cookbook\templates\shopping_list.html:146 +#: .\cookbook\templates\shopping_list.html:150 msgid "Entry Mode" msgstr "Modo de entrada" -#: .\cookbook\templates\shopping_list.html:154 +#: .\cookbook\templates\shopping_list.html:158 msgid "Add Entry" msgstr "Añadir entrada" -#: .\cookbook\templates\shopping_list.html:170 +#: .\cookbook\templates\shopping_list.html:174 msgid "Amount" msgstr "Cantidad" -#: .\cookbook\templates\shopping_list.html:226 +#: .\cookbook\templates\shopping_list.html:230 +#: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "Supermercado" -#: .\cookbook\templates\shopping_list.html:236 +#: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "Seleccionar supermercado" -#: .\cookbook\templates\shopping_list.html:260 +#: .\cookbook\templates\shopping_list.html:264 msgid "Select User" msgstr "Seleccionar Usuario" -#: .\cookbook\templates\shopping_list.html:279 +#: .\cookbook\templates\shopping_list.html:283 msgid "Finished" msgstr "Completada" -#: .\cookbook\templates\shopping_list.html:292 +#: .\cookbook\templates\shopping_list.html:296 msgid "You are offline, shopping list might not syncronize." msgstr "Estás desconectado, la lista de la compra no se sincronizará." -#: .\cookbook\templates\shopping_list.html:357 +#: .\cookbook\templates\shopping_list.html:361 msgid "Copy/Export" msgstr "Copiar/Exportar" -#: .\cookbook\templates\shopping_list.html:361 +#: .\cookbook\templates\shopping_list.html:365 msgid "List Prefix" msgstr "Prefijo de la lista" -#: .\cookbook\templates\shopping_list.html:708 -msgid "There was an error creating a resource!" -msgstr "¡Hubo un error al crear un recurso!" - #: .\cookbook\templates\socialaccount\connections.html:4 #: .\cookbook\templates\socialaccount\connections.html:7 msgid "Account Connections" @@ -1608,10 +1887,6 @@ msgstr "" "Puedes entrar en tu cuenta usando cualquiera de las siguientes cuentas de " "terceros:" -#: .\cookbook\templates\socialaccount\connections.html:36 -msgid "Remove" -msgstr "Eliminar" - #: .\cookbook\templates\socialaccount\connections.html:44 msgid "" "You currently have no social network accounts connected to this account." @@ -1621,38 +1896,99 @@ msgstr "Actualmente no tienes una cuenta social conectada a esta cuenta." msgid "Add a 3rd Party Account" msgstr "Añadir una cuenta de terceros" -#: .\cookbook\templates\stats.html:4 -msgid "Stats" -msgstr "Estadísticas" +#: .\cookbook\templates\space.html:18 +#, fuzzy +#| msgid "Description" +msgid "Manage Subscription" +msgstr "Descripción" -#: .\cookbook\templates\stats.html:19 +#: .\cookbook\templates\space.html:26 .\cookbook\templates\stats.html:19 msgid "Number of objects" msgstr "Número de objetos" -#: .\cookbook\templates\stats.html:30 +#: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:30 msgid "Recipe Imports" msgstr "Recetas importadas" -#: .\cookbook\templates\stats.html:38 +#: .\cookbook\templates\space.html:47 .\cookbook\templates\stats.html:38 msgid "Objects stats" msgstr "Estadísticas de objetos" -#: .\cookbook\templates\stats.html:41 +#: .\cookbook\templates\space.html:50 .\cookbook\templates\stats.html:41 msgid "Recipes without Keywords" msgstr "Recetas sin palabras clave" -#: .\cookbook\templates\stats.html:43 +#: .\cookbook\templates\space.html:52 .\cookbook\templates\stats.html:43 msgid "External Recipes" msgstr "Recetas Externas" -#: .\cookbook\templates\stats.html:45 +#: .\cookbook\templates\space.html:54 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "Recetas Internas" -#: .\cookbook\templates\system.html:21 .\cookbook\views\lists.py:115 +#: .\cookbook\templates\space.html:67 +msgid "Members" +msgstr "" + +#: .\cookbook\templates\space.html:71 +#, fuzzy +#| msgid "Invite Links" +msgid "Invite User" +msgstr "Enlaces de Invitación" + +#: .\cookbook\templates\space.html:82 +msgid "User" +msgstr "" + +#: .\cookbook\templates\space.html:83 +msgid "Groups" +msgstr "" + +#: .\cookbook\templates\space.html:99 +#, fuzzy +#| msgid "Admin" +msgid "admin" +msgstr "Administrador" + +#: .\cookbook\templates\space.html:100 +msgid "user" +msgstr "" + +#: .\cookbook\templates\space.html:101 +msgid "guest" +msgstr "" + +#: .\cookbook\templates\space.html:102 +#, fuzzy +#| msgid "Remove" +msgid "remove" +msgstr "Eliminar" + +#: .\cookbook\templates\space.html:106 +msgid "Update" +msgstr "" + +#: .\cookbook\templates\space.html:110 +#, fuzzy +#| msgid "You cannot edit this storage!" +msgid "You cannot edit yourself." +msgstr "¡No puede editar este almacenamiento!" + +#: .\cookbook\templates\space.html:117 +#, fuzzy +#| msgid "There are no recipes in this book yet." +msgid "There are no members in your space yet!" +msgstr "Todavía no hay recetas en este libro." + +#: .\cookbook\templates\space.html:124 .\cookbook\templates\system.html:21 +#: .\cookbook\views\lists.py:115 msgid "Invite Links" msgstr "Enlaces de Invitación" +#: .\cookbook\templates\stats.html:4 +msgid "Stats" +msgstr "Estadísticas" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "Mostrar Enlaces" @@ -1785,47 +2121,159 @@ msgstr "" " características sólo funcionan con bases de datos Postgres.\n" " " -#: .\cookbook\templates\url_import.html:5 +#: .\cookbook\templates\url_import.html:6 msgid "URL Import" msgstr "Importar URL" -#: .\cookbook\templates\url_import.html:23 +#: .\cookbook\templates\url_import.html:31 +msgid "Drag me to your bookmarks to import recipes from anywhere" +msgstr "" + +#: .\cookbook\templates\url_import.html:32 +#, fuzzy +#| msgid "Bookmark saved!" +msgid "Bookmark Me!" +msgstr "¡Marcador guardado!" + +#: .\cookbook\templates\url_import.html:61 msgid "Enter website URL" msgstr "Introduce la URL del sitio web" -#: .\cookbook\templates\url_import.html:36 -msgid "Enter json directly" +#: .\cookbook\templates\url_import.html:97 +msgid "Select recipe files to import or drop them here..." msgstr "" -#: .\cookbook\templates\url_import.html:57 +#: .\cookbook\templates\url_import.html:118 +msgid "Paste json or html source here to load recipe." +msgstr "" + +#: .\cookbook\templates\url_import.html:146 +#, fuzzy +#| msgid "View Recipe" +msgid "Preview Recipe Data" +msgstr "Ver la receta" + +#: .\cookbook\templates\url_import.html:147 +msgid "Drag recipe attributes from the right into the appropriate box below." +msgstr "" + +#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\url_import.html:173 +#: .\cookbook\templates\url_import.html:190 +#: .\cookbook\templates\url_import.html:209 +#: .\cookbook\templates\url_import.html:227 +#: .\cookbook\templates\url_import.html:242 +#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:273 +#: .\cookbook\templates\url_import.html:300 +#: .\cookbook\templates\url_import.html:351 +msgid "Clear Contents" +msgstr "" + +#: .\cookbook\templates\url_import.html:158 +msgid "Text dragged here will be appended to the name." +msgstr "" + +#: .\cookbook\templates\url_import.html:175 +msgid "Text dragged here will be appended to the description." +msgstr "" + +#: .\cookbook\templates\url_import.html:192 +msgid "Keywords dragged here will be appended to current list" +msgstr "" + +#: .\cookbook\templates\url_import.html:207 +msgid "Image" +msgstr "" + +#: .\cookbook\templates\url_import.html:239 +#, fuzzy +#| msgid "Preparation Time" +msgid "Prep Time" +msgstr "Tiempo de Preparación" + +#: .\cookbook\templates\url_import.html:254 +#, fuzzy +#| msgid "Time" +msgid "Cook Time" +msgstr "Tiempo" + +#: .\cookbook\templates\url_import.html:275 +msgid "Ingredients dragged here will be appended to current list." +msgstr "" + +#: .\cookbook\templates\url_import.html:302 +msgid "" +"Recipe instructions dragged here will be appended to current instructions." +msgstr "" + +#: .\cookbook\templates\url_import.html:325 +#, fuzzy +#| msgid "Discovered Recipes" +msgid "Discovered Attributes" +msgstr "Recetas Descubiertas" + +#: .\cookbook\templates\url_import.html:327 +msgid "" +"Drag recipe attributes from below into the appropriate box on the left. " +"Click any node to display its full properties." +msgstr "" + +#: .\cookbook\templates\url_import.html:344 +#, fuzzy +#| msgid "Show as header" +msgid "Show Blank Field" +msgstr "Mostrar como encabezado" + +#: .\cookbook\templates\url_import.html:349 +msgid "Blank Field" +msgstr "" + +#: .\cookbook\templates\url_import.html:353 +msgid "Items dragged to Blank Field will be appended." +msgstr "" + +#: .\cookbook\templates\url_import.html:400 +#, fuzzy +#| msgid "Delete Step" +msgid "Delete Text" +msgstr "Eliminar paso" + +#: .\cookbook\templates\url_import.html:413 +#, fuzzy +#| msgid "Delete Recipe" +msgid "Delete image" +msgstr "Eliminar receta" + +#: .\cookbook\templates\url_import.html:429 msgid "Recipe Name" msgstr "Nombre de la Receta" -#: .\cookbook\templates\url_import.html:62 +#: .\cookbook\templates\url_import.html:433 #, fuzzy #| msgid "Description" msgid "Recipe Description" msgstr "Descripción" -#: .\cookbook\templates\url_import.html:123 -#: .\cookbook\templates\url_import.html:155 -#: .\cookbook\templates\url_import.html:211 +#: .\cookbook\templates\url_import.html:494 +#: .\cookbook\templates\url_import.html:526 +#: .\cookbook\templates\url_import.html:582 msgid "Select one" msgstr "Seleccione uno" -#: .\cookbook\templates\url_import.html:225 +#: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "Todas las palabras clave." -#: .\cookbook\templates\url_import.html:228 +#: .\cookbook\templates\url_import.html:599 msgid "Import all keywords, not only the ones already existing." msgstr "Importar todas las palabras clave, no solo las ya existentes." -#: .\cookbook\templates\url_import.html:255 +#: .\cookbook\templates\url_import.html:626 msgid "Information" msgstr "Información" -#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:628 msgid "" " Only websites containing ld+json or microdata information can currently\n" " be imported. Most big recipe pages " @@ -1844,52 +2292,81 @@ msgstr "" "no dudes en poner un ejemplo en las\n" " propuestas de GitHub." -#: .\cookbook\templates\url_import.html:265 +#: .\cookbook\templates\url_import.html:636 msgid "Google ld+json Info" msgstr "Información de Google ld+json" -#: .\cookbook\templates\url_import.html:268 +#: .\cookbook\templates\url_import.html:639 msgid "GitHub Issues" msgstr "Propuestas de GitHub" -#: .\cookbook\templates\url_import.html:270 +#: .\cookbook\templates\url_import.html:641 msgid "Recipe Markup Specification" msgstr "Especificación de anotaciones de la receta" -#: .\cookbook\views\api.py:71 +#: .\cookbook\views\api.py:77 #, fuzzy #| msgid "Parameter filter_list incorrectly formatted" msgid "Parameter updated_at incorrectly formatted" msgstr "Parámetro filter_list formateado incorrectamente" -#: .\cookbook\views\api.py:455 .\cookbook\views\views.py:226 +#: .\cookbook\views\api.py:553 .\cookbook\views\views.py:295 msgid "This feature is not available in the demo version!" msgstr "¡Esta funcionalidad no está disponible en la versión demo!" -#: .\cookbook\views\api.py:478 +#: .\cookbook\views\api.py:576 msgid "Sync successful!" msgstr "¡Sincronización exitosa!" -#: .\cookbook\views\api.py:483 +#: .\cookbook\views\api.py:581 msgid "Error synchronizing with Storage" msgstr "Error de sincronización con el almacenamiento" -#: .\cookbook\views\api.py:556 .\cookbook\views\api.py:576 +#: .\cookbook\views\api.py:649 +msgid "Nothing to do." +msgstr "" + +#: .\cookbook\views\api.py:664 +msgid "The requested site provided malformed data and cannot be read." +msgstr "" +"El sitio solicitado proporcionó datos con formato incorrecto y no se puede " +"leer." + +#: .\cookbook\views\api.py:671 msgid "The requested page could not be found." msgstr "La página solicitada no pudo ser encontrada." -#: .\cookbook\views\api.py:585 +#: .\cookbook\views\api.py:680 msgid "" -"The requested page refused to provide any information (Status Code 403)." +"The requested site does not provide any recognized data format to import the " +"recipe from." msgstr "" -"La página solicitada se negó a proporcionar información (Código de estado " -"403)." +"El sitio solicitado no proporciona ningún formato de datos reconocido para " +"importar la receta." -#: .\cookbook\views\api.py:611 -msgid "Could not parse correctly..." +#: .\cookbook\views\api.py:694 +#, fuzzy +#| msgid "The requested page could not be found." +msgid "No useable data could be found." +msgstr "La página solicitada no pudo ser encontrada." + +#: .\cookbook\views\api.py:710 +msgid "I couldn't find anything to do." msgstr "" -#: .\cookbook\views\data.py:94 +#: .\cookbook\views\data.py:30 .\cookbook\views\data.py:121 +#: .\cookbook\views\edit.py:50 .\cookbook\views\import_export.py:67 +#: .\cookbook\views\new.py:32 +msgid "You have reached the maximum number of recipes for your space." +msgstr "" + +#: .\cookbook\views\data.py:34 .\cookbook\views\data.py:125 +#: .\cookbook\views\edit.py:54 .\cookbook\views\import_export.py:71 +#: .\cookbook\views\new.py:36 +msgid "You have more users than allowed in your space." +msgstr "" + +#: .\cookbook\views\data.py:103 #, python-format msgid "Batch edit done. %(count)d recipe was updated." msgid_plural "Batch edit done. %(count)d Recipes where updated." @@ -1901,7 +2378,7 @@ msgid "Monitor" msgstr "Monitor" #: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:86 +#: .\cookbook\views\new.py:98 msgid "Storage Backend" msgstr "Backend de Almacenamiento" @@ -1912,8 +2389,8 @@ msgstr "" "No se pudo borrar este backend de almacenamiento ya que se utiliza en al " "menos un monitor." -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:204 -#: .\cookbook\views\new.py:144 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 +#: .\cookbook\views\new.py:156 msgid "Recipe Book" msgstr "Libro de recetas" @@ -1921,55 +2398,55 @@ msgstr "Libro de recetas" msgid "Bookmarks" msgstr "Marcadores" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:214 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 msgid "Invite Link" msgstr "Enlace de invitación" -#: .\cookbook\views\edit.py:110 +#: .\cookbook\views\edit.py:119 msgid "Food" msgstr "Comida" -#: .\cookbook\views\edit.py:119 +#: .\cookbook\views\edit.py:128 msgid "You cannot edit this storage!" msgstr "¡No puede editar este almacenamiento!" -#: .\cookbook\views\edit.py:139 +#: .\cookbook\views\edit.py:148 msgid "Storage saved!" msgstr "¡Almacenamiento guardado!" -#: .\cookbook\views\edit.py:145 +#: .\cookbook\views\edit.py:154 msgid "There was an error updating this storage backend!" msgstr "¡Hubo un error al actualizar este backend de almacenamiento!" -#: .\cookbook\views\edit.py:156 +#: .\cookbook\views\edit.py:165 msgid "Storage" msgstr "Almacenamiento" -#: .\cookbook\views\edit.py:252 +#: .\cookbook\views\edit.py:261 msgid "Changes saved!" msgstr "¡Cambios guardados!" -#: .\cookbook\views\edit.py:256 +#: .\cookbook\views\edit.py:265 msgid "Error saving changes!" msgstr "¡Error al guardar los cambios!" -#: .\cookbook\views\edit.py:289 +#: .\cookbook\views\edit.py:299 msgid "Units merged!" msgstr "¡Unidades fusionadas!" -#: .\cookbook\views\edit.py:291 .\cookbook\views\edit.py:307 +#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 msgid "Cannot merge with the same object!" msgstr "¡No se puede unir con el mismo objeto!" -#: .\cookbook\views\edit.py:305 +#: .\cookbook\views\edit.py:315 msgid "Foods merged!" msgstr "¡Alimentos fusionados!" -#: .\cookbook\views\import_export.py:73 +#: .\cookbook\views\import_export.py:93 msgid "Importing is not implemented for this provider" msgstr "La importación no está implementada para este proveedor" -#: .\cookbook\views\import_export.py:92 +#: .\cookbook\views\import_export.py:115 msgid "Exporting is not implemented for this provider" msgstr "La exportación no está implementada para este proveedor" @@ -1985,23 +2462,77 @@ msgstr "Descubrimiento" msgid "Shopping Lists" msgstr "Listas de la compra" -#: .\cookbook\views\new.py:111 +#: .\cookbook\views\new.py:123 msgid "Imported new recipe!" msgstr "¡Nueva receta importada!" -#: .\cookbook\views\new.py:114 +#: .\cookbook\views\new.py:126 msgid "There was an error importing this recipe!" msgstr "¡Hubo un error al importar esta receta!" -#: .\cookbook\views\views.py:123 +#: .\cookbook\views\new.py:226 +msgid "Hello" +msgstr "" + +#: .\cookbook\views\new.py:226 +msgid "You have been invited by " +msgstr "" + +#: .\cookbook\views\new.py:227 +msgid " to join their Tandoor Recipes space " +msgstr "" + +#: .\cookbook\views\new.py:228 +msgid "Click the following link to activate your account: " +msgstr "" + +#: .\cookbook\views\new.py:229 +msgid "" +"If the link does not work use the following code to manually join the space: " +msgstr "" + +#: .\cookbook\views\new.py:230 +msgid "The invitation is valid until " +msgstr "" + +#: .\cookbook\views\new.py:231 +msgid "" +"Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " +msgstr "" + +#: .\cookbook\views\new.py:234 +msgid "Tandoor Recipes Invite" +msgstr "" + +#: .\cookbook\views\new.py:241 +msgid "Invite link successfully send to user." +msgstr "" + +#: .\cookbook\views\new.py:244 +msgid "" +"You have send to many emails, please share the link manually or wait a few " +"hours." +msgstr "" + +#: .\cookbook\views\new.py:246 +msgid "Email to user could not be send, please share link manually." +msgstr "" + +#: .\cookbook\views\views.py:125 +msgid "" +"You have successfully created your own recipe space. Start by adding some " +"recipes or invite other people to join you." +msgstr "" + +#: .\cookbook\views\views.py:173 msgid "You do not have the required permissions to perform this action!" msgstr "¡No tienes los permisos necesarios para realizar esta acción!" -#: .\cookbook\views\views.py:134 +#: .\cookbook\views\views.py:184 msgid "Comment saved!" msgstr "¡Comentario guardado!" -#: .\cookbook\views\views.py:326 +#: .\cookbook\views\views.py:396 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -2011,22 +2542,59 @@ msgstr "" "usuario. Si has olvidado tus credenciales de superusuario, por favor " "consulta la documentación de django sobre cómo restablecer las contraseñas." -#: .\cookbook\views\views.py:333 .\cookbook\views\views.py:378 +#: .\cookbook\views\views.py:403 msgid "Passwords dont match!" msgstr "¡Las contraseñas no coinciden!" -#: .\cookbook\views\views.py:349 .\cookbook\views\views.py:385 +#: .\cookbook\views\views.py:419 msgid "User has been created, please login!" msgstr "El usuario ha sido creado, ¡inicie sesión!" -#: .\cookbook\views\views.py:365 +#: .\cookbook\views\views.py:435 msgid "Malformed Invite Link supplied!" msgstr "¡Se proporcionó un enlace de invitación con formato incorrecto!" -#: .\cookbook\views\views.py:405 +#: .\cookbook\views\views.py:441 +#, fuzzy +#| msgid "You are not logged in and therefore cannot view this page!" +msgid "You are already member of a space and therefore cannot join this one." +msgstr "¡No ha iniciado sesión y por lo tanto no puede ver esta página!" + +#: .\cookbook\views\views.py:452 +msgid "Successfully joined space." +msgstr "" + +#: .\cookbook\views\views.py:458 msgid "Invite Link not valid or already used!" msgstr "¡El enlace de invitación no es válido o ya se ha utilizado!" +#~ msgid "" +#~ "A username is not required, if left blank the new user can choose one." +#~ msgstr "" +#~ "No se requiere un nombre de usuario, si se deja en blanco, el nuevo " +#~ "usuario puede elegir uno." + +#~ msgid "Imported from" +#~ msgstr "Importado de" + +#~ msgid "Link" +#~ msgstr "Enlace" + +#~ msgid "Logout" +#~ msgstr "Cerrar sesión" + +#~ msgid "Website Import" +#~ msgstr "Importación de sitios web" + +#~ msgid "There was an error creating a resource!" +#~ msgstr "¡Hubo un error al crear un recurso!" + +#~ msgid "" +#~ "The requested page refused to provide any information (Status Code 403)." +#~ msgstr "" +#~ "La página solicitada se negó a proporcionar información (Código de estado " +#~ "403)." + #~ msgid "Number of servings" #~ msgstr "Número de raciones" @@ -2048,6 +2616,3 @@ msgstr "¡El enlace de invitación no es válido o ya se ha utilizado!" #~ msgid "This recipe is already linked to the book!" #~ msgstr "¡Esta receta ya está enlazada al libro!" - -#~ msgid "Bookmark saved!" -#~ msgstr "¡Marcador guardado!" diff --git a/cookbook/locale/fr/LC_MESSAGES/django.po b/cookbook/locale/fr/LC_MESSAGES/django.po index 0fc1e12fb..2bea1ebe5 100644 --- a/cookbook/locale/fr/LC_MESSAGES/django.po +++ b/cookbook/locale/fr/LC_MESSAGES/django.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: 2020-06-02 19:28+0000\n" "Last-Translator: Grégoire Menuel , 2021\n" "Language-Team: French (https://www.transifex.com/django-recipes/teams/110507/" @@ -25,14 +25,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:91 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 +#: .\cookbook\templates\forms\edit_internal_recipe.html:246 #: .\cookbook\templates\forms\ingredients.html:34 -#: .\cookbook\templates\stats.html:28 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\space.html:37 .\cookbook\templates\stats.html:28 +#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 msgid "Ingredients" msgstr "Ingrédients" -#: .\cookbook\forms.py:45 +#: .\cookbook\forms.py:49 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" @@ -40,13 +41,13 @@ msgstr "" "La couleur de la barre de navigation du haut. Toutes les couleurs ne " "marchent pas avec tous les thèmes, essayez-les !" -#: .\cookbook\forms.py:46 +#: .\cookbook\forms.py:51 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" "L'unité par défaut utilisée lors de l'ajout d'un nouvel ingrédient dans une " "recette." -#: .\cookbook\forms.py:47 +#: .\cookbook\forms.py:53 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" @@ -54,7 +55,7 @@ msgstr "" "Autorise l'usage des fractions dans les quantités des ingrédients (convertit " "les décimales en fractions automatiquement)" -#: .\cookbook\forms.py:48 +#: .\cookbook\forms.py:56 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." @@ -62,21 +63,21 @@ msgstr "" "Utilisateurs avec lesquels les listes de courses et plans de repas " "nouvellement créés seront partagés par défaut." -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:58 msgid "Show recently viewed recipes on search page." msgstr "Afficher les recettes récemment consultées sur la page de recherche." -#: .\cookbook\forms.py:50 +#: .\cookbook\forms.py:59 msgid "Number of decimals to round ingredients." msgstr "Nombre de décimales pour arrondir les ingrédients." -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:60 msgid "If you want to be able to create and see comments underneath recipes." msgstr "" "Si vous souhaitez pouvoir créer et consulter des commentaires en-dessous des " "recettes." -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:62 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -90,11 +91,11 @@ msgstr "" "données mobiles. Si la valeur est plus petite que les limites de l'instance, " "le paramètre sera réinitialisé." -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:65 msgid "Makes the navbar stick to the top of the page." msgstr "" -#: .\cookbook\forms.py:72 +#: .\cookbook\forms.py:81 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" @@ -102,92 +103,95 @@ msgstr "" "Les deux champs sont facultatifs. Si aucun n'est rempli, le nom " "d'utilisateur sera affiché à la place " -#: .\cookbook\forms.py:93 .\cookbook\forms.py:315 -#: .\cookbook\templates\forms\edit_internal_recipe.html:45 +#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "Nom" -#: .\cookbook\forms.py:94 .\cookbook\forms.py:316 -#: .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:81 -#: .\cookbook\templates\stats.html:24 .\cookbook\templates\url_import.html:202 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 +#: .\cookbook\templates\base.html:105 +#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\templates\space.html:33 .\cookbook\templates\stats.html:24 +#: .\cookbook\templates\url_import.html:188 +#: .\cookbook\templates\url_import.html:573 msgid "Keywords" msgstr "Mot-clés" -#: .\cookbook\forms.py:95 +#: .\cookbook\forms.py:104 msgid "Preparation time in minutes" msgstr "Le temps de préparation en minutes" -#: .\cookbook\forms.py:96 +#: .\cookbook\forms.py:105 msgid "Waiting time (cooking/baking) in minutes" msgstr "Temps d'attente (pose/cuisson) en minutes" -#: .\cookbook\forms.py:97 .\cookbook\forms.py:317 +#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 msgid "Path" msgstr "Chemin" -#: .\cookbook\forms.py:98 +#: .\cookbook\forms.py:107 msgid "Storage UID" msgstr "UID de stockage" -#: .\cookbook\forms.py:121 +#: .\cookbook\forms.py:133 msgid "Default" msgstr "" -#: .\cookbook\forms.py:130 +#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:149 +#: .\cookbook\forms.py:164 msgid "New Unit" msgstr "Nouvelle unité" -#: .\cookbook\forms.py:150 +#: .\cookbook\forms.py:165 msgid "New unit that other gets replaced by." msgstr "La nouvelle unité qui remplacera l'autre." -#: .\cookbook\forms.py:155 +#: .\cookbook\forms.py:170 msgid "Old Unit" msgstr "Ancienne unité" -#: .\cookbook\forms.py:156 +#: .\cookbook\forms.py:171 msgid "Unit that should be replaced." msgstr "L'unité qui doit être remplacée." -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:187 msgid "New Food" msgstr "Nouvel ingrédient" -#: .\cookbook\forms.py:173 +#: .\cookbook\forms.py:188 msgid "New food that other gets replaced by." msgstr "Nouvel ingrédient qui remplace les autres." -#: .\cookbook\forms.py:178 +#: .\cookbook\forms.py:193 msgid "Old Food" msgstr "Ancien ingrédient" -#: .\cookbook\forms.py:179 +#: .\cookbook\forms.py:194 msgid "Food that should be replaced." msgstr "Ingrédient qui devrait être remplacé" -#: .\cookbook\forms.py:197 +#: .\cookbook\forms.py:212 msgid "Add your comment: " msgstr "Ajoutez votre commentaire :" -#: .\cookbook\forms.py:238 +#: .\cookbook\forms.py:253 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" "Laissez vide pour Dropbox et renseigner votre mot de passe d'application " "pour Nextcloud." -#: .\cookbook\forms.py:245 +#: .\cookbook\forms.py:260 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" "Laissez vide pour Nextcloud et renseignez vote jeton d'API pour Dropbox." -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:269 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -195,26 +199,26 @@ msgstr "" "Laisser vide pour Dropbox et saisissez seulement l'URL de base pour " "Nextcloud (/remote.php/webdav/ est ajouté automatiquement)" -#: .\cookbook\forms.py:291 +#: .\cookbook\forms.py:307 msgid "Search String" msgstr "Texte recherché" -#: .\cookbook\forms.py:318 +#: .\cookbook\forms.py:334 msgid "File ID" msgstr "ID du fichier" -#: .\cookbook\forms.py:354 +#: .\cookbook\forms.py:370 msgid "You must provide at least a recipe or a title." msgstr "Vous devez au moins fournir une recette ou un titre." -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:383 msgid "You can list default users to share recipes with in the settings." msgstr "" "Vous pouvez lister les utilisateurs par défaut avec qui partager des " "recettes dans les paramètres." -#: .\cookbook\forms.py:368 -#: .\cookbook\templates\forms\edit_internal_recipe.html:377 +#: .\cookbook\forms.py:384 +#: .\cookbook\templates\forms\edit_internal_recipe.html:404 msgid "" "You can use markdown to format this field. See the docs here" @@ -222,52 +226,59 @@ msgstr "" "Vous pouvez utiliser du markdown pour mettre en forme ce champ. Voir la documentation ici" -#: .\cookbook\forms.py:393 -msgid "A username is not required, if left blank the new user can choose one." +#: .\cookbook\forms.py:409 +msgid "Maximum number of users for this space reached." msgstr "" -"Il n'est pas obligatoire de renseigner un nom d'utilisateur. S'il est laissé " -"vide, le nouvel utilisateur pourra le choisir." -#: .\cookbook\helper\permission_helper.py:123 -#: .\cookbook\helper\permission_helper.py:129 -#: .\cookbook\helper\permission_helper.py:151 -#: .\cookbook\helper\permission_helper.py:196 -#: .\cookbook\helper\permission_helper.py:210 -#: .\cookbook\helper\permission_helper.py:221 -#: .\cookbook\helper\permission_helper.py:232 .\cookbook\views\data.py:30 -#: .\cookbook\views\views.py:112 .\cookbook\views\views.py:116 -#: .\cookbook\views\views.py:184 -msgid "You do not have the required permissions to view this page!" -msgstr "Vous n'avez pas les droits suffisants pour afficher cette page !" +#: .\cookbook\forms.py:415 +msgid "Email address already taken!" +msgstr "" -#: .\cookbook\helper\permission_helper.py:141 +#: .\cookbook\forms.py:423 +msgid "" +"An email address is not required but if present the invite link will be send " +"to the user." +msgstr "" + +#: .\cookbook\forms.py:438 +msgid "Name already taken." +msgstr "" + +#: .\cookbook\forms.py:449 +msgid "Accept Terms and Privacy" +msgstr "" + +#: .\cookbook\helper\AllAuthCustomAdapter.py:30 +msgid "" +"In order to prevent spam, the requested email was not send. Please wait a " +"few minutes and try again." +msgstr "" + +#: .\cookbook\helper\permission_helper.py:124 +#: .\cookbook\helper\permission_helper.py:144 .\cookbook\views\views.py:147 msgid "You are not logged in and therefore cannot view this page!" msgstr "Vous n'êtes pas connecté et ne pouvez donc pas afficher cette page !" -#: .\cookbook\helper\permission_helper.py:145 -#: .\cookbook\helper\permission_helper.py:167 -#: .\cookbook\helper\permission_helper.py:182 +#: .\cookbook\helper\permission_helper.py:127 +#: .\cookbook\helper\permission_helper.py:132 +#: .\cookbook\helper\permission_helper.py:154 +#: .\cookbook\helper\permission_helper.py:199 +#: .\cookbook\helper\permission_helper.py:213 +#: .\cookbook\helper\permission_helper.py:224 +#: .\cookbook\helper\permission_helper.py:235 .\cookbook\views\data.py:39 +#: .\cookbook\views\views.py:158 .\cookbook\views\views.py:165 +#: .\cookbook\views\views.py:253 +msgid "You do not have the required permissions to view this page!" +msgstr "Vous n'avez pas les droits suffisants pour afficher cette page !" + +#: .\cookbook\helper\permission_helper.py:148 +#: .\cookbook\helper\permission_helper.py:170 +#: .\cookbook\helper\permission_helper.py:185 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" "Vous ne pouvez pas interagir avec cet objet car il appartient à un autre " "utilisateur." -#: .\cookbook\helper\recipe_url_import.py:40 .\cookbook\views\api.py:549 -msgid "The requested site provided malformed data and cannot be read." -msgstr "Le site web a renvoyé des données malformées et ne peut être lu." - -#: .\cookbook\helper\recipe_url_import.py:54 -msgid "" -"The requested site does not provide any recognized data format to import the " -"recipe from." -msgstr "" -"Le site web est dans un format qui ne permet pas d'importer automatiquement " -"la recette." - -#: .\cookbook\helper\recipe_url_import.py:160 -msgid "Imported from" -msgstr "Importé depuis" - #: .\cookbook\helper\template_helper.py:60 #: .\cookbook\helper\template_helper.py:62 msgid "Could not parse template code." @@ -277,47 +288,58 @@ msgstr "" #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 -#: .\cookbook\templates\url_import.html:233 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:190 +#: .\cookbook\templates\url_import.html:27 +#: .\cookbook\templates\url_import.html:101 +#: .\cookbook\templates\url_import.html:123 +#: .\cookbook\templates\url_import.html:317 +#: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 +#: .\cookbook\views\edit.py:199 msgid "Import" msgstr "Importer" -#: .\cookbook\integration\integration.py:131 +#: .\cookbook\integration\integration.py:162 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:134 +#: .\cookbook\integration\integration.py:165 +msgid "" +"An unexpected error occurred during the import. Please make sure you have " +"uploaded a valid file." +msgstr "" + +#: .\cookbook\integration\integration.py:169 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:137 +#: .\cookbook\integration\integration.py:173 #, fuzzy, python-format #| msgid "Imported new recipe!" msgid "Imported %s recipes." msgstr "Nouvelle recette importée !" -#: .\cookbook\integration\paprika.py:44 +#: .\cookbook\integration\paprika.py:46 #, fuzzy #| msgid "Note" msgid "Notes" msgstr "Notes" -#: .\cookbook\integration\paprika.py:47 +#: .\cookbook\integration\paprika.py:49 #, fuzzy #| msgid "Information" msgid "Nutritional Information" msgstr "Information" -#: .\cookbook\integration\paprika.py:50 +#: .\cookbook\integration\paprika.py:53 msgid "Source" msgstr "" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:75 +#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 -#: .\cookbook\templates\url_import.html:84 +#: .\cookbook\templates\url_import.html:224 +#: .\cookbook\templates\url_import.html:455 msgid "Servings" msgstr "Portions" @@ -326,11 +348,11 @@ msgid "Waiting time" msgstr "" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:69 +#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "Temps de préparation" -#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:71 +#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:78 #: .\cookbook\templates\forms\ingredients.html:7 #: .\cookbook\templates\index.html:7 msgid "Cookbook" @@ -356,44 +378,74 @@ msgstr "Dîner" msgid "Other" msgstr "Autre" -#: .\cookbook\models.py:110 .\cookbook\templates\shopping_list.html:48 +#: .\cookbook\models.py:71 +msgid "" +"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " +"upload." +msgstr "" + +#: .\cookbook\models.py:121 .\cookbook\templates\search.html:7 +#: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "Recherche" -#: .\cookbook\models.py:111 .\cookbook\templates\base.html:85 +#: .\cookbook\models.py:122 .\cookbook\templates\base.html:92 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:224 .\cookbook\views\new.py:188 +#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 msgid "Meal-Plan" msgstr "Menu de la semaine" -#: .\cookbook\models.py:112 .\cookbook\templates\base.html:82 +#: .\cookbook\models.py:123 .\cookbook\templates\base.html:89 msgid "Books" msgstr "Livres" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Small" msgstr "Petit" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Large" msgstr "Grand" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:198 +#: .\cookbook\models.py:131 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\templates\generic\new_template.html:14 +#: .\cookbook\templates\meal_plan.html:323 +msgid "New" +msgstr "Nouveau" + +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:202 msgid "Text" msgstr "Texte" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:199 +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:203 msgid "Time" msgstr "Temps" +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:204 +#: .\cookbook\templates\forms\edit_internal_recipe.html:218 +#, fuzzy +#| msgid "File ID" +msgid "File" +msgstr "ID du fichier" + +#: .\cookbook\serializer.py:109 +msgid "File uploads are not enabled for this Space." +msgstr "" + +#: .\cookbook\serializer.py:117 +msgid "You have reached your file upload limit." +msgstr "" + #: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 #: .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 #: .\cookbook\templates\shopping_list.html:33 +#: .\cookbook\templates\space.html:84 msgid "Edit" msgstr "Modifier" @@ -407,10 +459,6 @@ msgstr "Modifier" msgid "Delete" msgstr "Supprimer" -#: .\cookbook\tables.py:144 -msgid "Link" -msgstr "Lien" - #: .\cookbook\templates\404.html:5 msgid "404 Error" msgstr "Erreur 404" @@ -427,21 +475,124 @@ msgstr "Page d'accueil" msgid "Report a Bug" msgstr "Signaler un bogue" -#: .\cookbook\templates\account\login.html:7 -#: .\cookbook\templates\base.html:170 +#: .\cookbook\templates\account\email.html:6 +#: .\cookbook\templates\account\email.html:9 +msgid "E-mail Addresses" +msgstr "" + +#: .\cookbook\templates\account\email.html:11 +msgid "The following e-mail addresses are associated with your account:" +msgstr "" + +#: .\cookbook\templates\account\email.html:28 +msgid "Verified" +msgstr "" + +#: .\cookbook\templates\account\email.html:30 +msgid "Unverified" +msgstr "" + +#: .\cookbook\templates\account\email.html:32 +msgid "Primary" +msgstr "" + +#: .\cookbook\templates\account\email.html:39 +#, fuzzy +#| msgid "Make Header" +msgid "Make Primary" +msgstr "Transformer en texte" + +#: .\cookbook\templates\account\email.html:41 +msgid "Re-send Verification" +msgstr "" + +#: .\cookbook\templates\account\email.html:42 +#: .\cookbook\templates\socialaccount\connections.html:36 +msgid "Remove" +msgstr "" + +#: .\cookbook\templates\account\email.html:50 +#, fuzzy +#| msgid "Warning" +msgid "Warning:" +msgstr "Avertissement" + +#: .\cookbook\templates\account\email.html:50 +msgid "" +"You currently do not have any e-mail address set up. You should really add " +"an e-mail address so you can receive notifications, reset your password, etc." +msgstr "" + +#: .\cookbook\templates\account\email.html:56 +msgid "Add E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email.html:61 +msgid "Add E-mail" +msgstr "" + +#: .\cookbook\templates\account\email.html:71 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:6 +#: .\cookbook\templates\account\email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that\n" +" %(email)s is an e-mail address " +"for user %(user_display)s\n" +" ." +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:22 +#: .\cookbook\templates\generic\delete_template.html:21 +msgid "Confirm" +msgstr "Confirmer" + +#: .\cookbook\templates\account\email_confirm.html:29 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please\n" +" issue a new e-mail confirmation " +"request." +msgstr "" + +#: .\cookbook\templates\account\login.html:8 +#: .\cookbook\templates\base.html:180 msgid "Login" msgstr "Connexion" -#: .\cookbook\templates\account\login.html:13 -#: .\cookbook\templates\account\login.html:28 +#: .\cookbook\templates\account\login.html:15 +#: .\cookbook\templates\account\login.html:31 +#: .\cookbook\templates\account\signup.html:69 +#: .\cookbook\templates\account\signup_closed.html:15 msgid "Sign In" msgstr "" -#: .\cookbook\templates\account\login.html:38 +#: .\cookbook\templates\account\login.html:32 +msgid "Sign Up" +msgstr "" + +#: .\cookbook\templates\account\login.html:36 +#: .\cookbook\templates\account\login.html:37 +#: .\cookbook\templates\account\password_reset.html:29 +msgid "Reset My Password" +msgstr "" + +#: .\cookbook\templates\account\login.html:37 +msgid "Lost your password?" +msgstr "" + +#: .\cookbook\templates\account\login.html:48 msgid "Social Login" msgstr "" -#: .\cookbook\templates\account\login.html:39 +#: .\cookbook\templates\account\login.html:49 msgid "You can use any of the following providers to sign in." msgstr "" @@ -455,116 +606,166 @@ msgstr "" msgid "Are you sure you want to sign out?" msgstr "" -#: .\cookbook\templates\account\password_reset.html:5 -#: .\cookbook\templates\account\password_reset_done.html:5 +#: .\cookbook\templates\account\password_reset.html:7 +#: .\cookbook\templates\account\password_reset.html:13 +#: .\cookbook\templates\account\password_reset_done.html:7 +#: .\cookbook\templates\account\password_reset_done.html:10 msgid "Password Reset" msgstr "" -#: .\cookbook\templates\account\password_reset.html:9 -#: .\cookbook\templates\account\password_reset_done.html:9 -msgid "Password reset is not implemented for the time being!" +#: .\cookbook\templates\account\password_reset.html:24 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." msgstr "" -#: .\cookbook\templates\account\signup.html:5 +#: .\cookbook\templates\account\password_reset.html:32 +msgid "Password reset is disabled on this instance." +msgstr "" + +#: .\cookbook\templates\account\password_reset_done.html:16 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: .\cookbook\templates\account\signup.html:6 msgid "Register" msgstr "S'inscrire" -#: .\cookbook\templates\account\signup.html:9 -msgid "Create your Account" +#: .\cookbook\templates\account\signup.html:12 +#, fuzzy +#| msgid "Create your Account" +msgid "Create an Account" msgstr "Créez votre compte" -#: .\cookbook\templates\account\signup.html:14 +#: .\cookbook\templates\account\signup.html:42 +msgid "I accept the follwoing" +msgstr "" + +#: .\cookbook\templates\account\signup.html:45 +msgid "Terms and Conditions" +msgstr "" + +#: .\cookbook\templates\account\signup.html:48 +msgid "and" +msgstr "" + +#: .\cookbook\templates\account\signup.html:52 +msgid "Privacy Policy" +msgstr "" + +#: .\cookbook\templates\account\signup.html:65 msgid "Create User" msgstr "Créer un utilisateur" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:160 +#: .\cookbook\templates\account\signup.html:69 +msgid "Already have an account?" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:5 +#: .\cookbook\templates\account\signup_closed.html:11 +msgid "Sign Up Closed" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:13 +msgid "We are sorry, but the sign up is currently closed." +msgstr "" + +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:170 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "Documentation API" -#: .\cookbook\templates\base.html:78 +#: .\cookbook\templates\base.html:85 msgid "Utensils" msgstr "Ustensiles" -#: .\cookbook\templates\base.html:88 +#: .\cookbook\templates\base.html:95 msgid "Shopping" msgstr "Courses" -#: .\cookbook\templates\base.html:102 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:93 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:66 +#: .\cookbook\templates\base.html:109 .\cookbook\views\delete.py:84 +#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 +#: .\cookbook\views\new.py:78 msgid "Keyword" msgstr "Mot-clé" -#: .\cookbook\templates\base.html:104 +#: .\cookbook\templates\base.html:111 msgid "Batch Edit" msgstr "Modification en masse" -#: .\cookbook\templates\base.html:109 +#: .\cookbook\templates\base.html:116 msgid "Storage Data" msgstr "Données de stockage" -#: .\cookbook\templates\base.html:113 +#: .\cookbook\templates\base.html:120 msgid "Storage Backends" msgstr "Espaces de stockage" -#: .\cookbook\templates\base.html:115 +#: .\cookbook\templates\base.html:122 msgid "Configure Sync" msgstr "Configurer synchro" -#: .\cookbook\templates\base.html:117 +#: .\cookbook\templates\base.html:124 msgid "Discovered Recipes" msgstr "Recettes découvertes" -#: .\cookbook\templates\base.html:119 +#: .\cookbook\templates\base.html:126 msgid "Discovery Log" msgstr "Historique des découvertes" -#: .\cookbook\templates\base.html:121 .\cookbook\templates\stats.html:10 +#: .\cookbook\templates\base.html:128 .\cookbook\templates\stats.html:10 msgid "Statistics" msgstr "Statistiques" -#: .\cookbook\templates\base.html:123 +#: .\cookbook\templates\base.html:130 msgid "Units & Ingredients" msgstr "Unités et ingrédients" -#: .\cookbook\templates\base.html:125 +#: .\cookbook\templates\base.html:132 .\cookbook\templates\index.html:47 msgid "Import Recipe" msgstr "Importer une recette" -#: .\cookbook\templates\base.html:144 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:151 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:16 msgid "Settings" msgstr "Paramètres" -#: .\cookbook\templates\base.html:146 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:153 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "Historique" -#: .\cookbook\templates\base.html:150 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:155 .\cookbook\templates\space.html:7 +#, fuzzy +#| msgid "Settings" +msgid "Space Settings" +msgstr "Paramètres" + +#: .\cookbook\templates\base.html:160 .\cookbook\templates\system.html:13 msgid "System" msgstr "Système" -#: .\cookbook\templates\base.html:152 +#: .\cookbook\templates\base.html:162 msgid "Admin" msgstr "Admin" -#: .\cookbook\templates\base.html:156 +#: .\cookbook\templates\base.html:166 msgid "Markdown Guide" msgstr "Guide Markdown" -#: .\cookbook\templates\base.html:158 +#: .\cookbook\templates\base.html:168 msgid "GitHub" msgstr "GitHub" -#: .\cookbook\templates\base.html:162 +#: .\cookbook\templates\base.html:172 msgid "API Browser" msgstr "Navigateur API" -#: .\cookbook\templates\base.html:165 -msgid "Logout" -msgstr "Déconnexion" +#: .\cookbook\templates\base.html:175 +msgid "Log out" +msgstr "" #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" @@ -578,7 +779,7 @@ msgstr "Modifier en masse les recettes" msgid "Add the specified keywords to all recipes containing a word" msgstr "Ajouter les mots-clés spécifiés à toutes les recettes contenant un mot" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:76 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 msgid "Sync" msgstr "Synchro" @@ -607,7 +808,7 @@ msgstr "Lancer la synchro !" msgid "Importing Recipes" msgstr "Importer des ecettes" -#: .\cookbook\templates\batch\waiting.html:23 +#: .\cookbook\templates\batch\waiting.html:28 msgid "" "This can take a few minutes, depending on the number of recipes in sync, " "please wait." @@ -646,26 +847,33 @@ msgid "Export Recipes" msgstr "Exporter des ecettes" #: .\cookbook\templates\export.html:14 .\cookbook\templates\export.html:20 -#: .\cookbook\templates\shopping_list.html:347 +#: .\cookbook\templates\shopping_list.html:351 #: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20 msgid "Export" msgstr "Exporter" +#: .\cookbook\templates\files.html:7 +#, fuzzy +#| msgid "File ID" +msgid "Files" +msgstr "ID du fichier" + #: .\cookbook\templates\forms\edit_import_recipe.html:5 #: .\cookbook\templates\forms\edit_import_recipe.html:9 msgid "Import new Recipe" msgstr "Importer une nouvelle recette" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:389 -#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:416 +#: .\cookbook\templates\forms\edit_internal_recipe.html:448 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:28 .\cookbook\templates\settings.html:35 -#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:73 -#: .\cookbook\templates\shopping_list.html:349 +#: .\cookbook\templates\settings.html:44 .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:114 +#: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "Sauvegarder" @@ -674,181 +882,190 @@ msgstr "Sauvegarder" msgid "Edit Recipe" msgstr "Modifier une recette" -#: .\cookbook\templates\forms\edit_internal_recipe.html:52 +#: .\cookbook\templates\forms\edit_internal_recipe.html:56 +#: .\cookbook\templates\url_import.html:171 msgid "Description" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:72 +#: .\cookbook\templates\forms\edit_internal_recipe.html:76 msgid "Waiting Time" msgstr "Temps d'attente" -#: .\cookbook\templates\forms\edit_internal_recipe.html:78 +#: .\cookbook\templates\forms\edit_internal_recipe.html:82 msgid "Servings Text" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:89 +#: .\cookbook\templates\forms\edit_internal_recipe.html:93 msgid "Select Keywords" msgstr "Sélectionner des mots-clés" -#: .\cookbook\templates\forms\edit_internal_recipe.html:90 -#: .\cookbook\templates\url_import.html:212 +#: .\cookbook\templates\forms\edit_internal_recipe.html:94 +#: .\cookbook\templates\url_import.html:583 #, fuzzy #| msgid "All Keywords" msgid "Add Keyword" msgstr "Tous les mots-clés" -#: .\cookbook\templates\forms\edit_internal_recipe.html:108 +#: .\cookbook\templates\forms\edit_internal_recipe.html:112 msgid "Nutrition" msgstr "Informations nutritionnelles" -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -#: .\cookbook\templates\forms\edit_internal_recipe.html:162 +#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:166 msgid "Delete Step" msgstr "Supprimer l'étape" -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:120 msgid "Calories" msgstr "Calories" -#: .\cookbook\templates\forms\edit_internal_recipe.html:119 +#: .\cookbook\templates\forms\edit_internal_recipe.html:123 msgid "Carbohydrates" msgstr "Glucides" -#: .\cookbook\templates\forms\edit_internal_recipe.html:122 +#: .\cookbook\templates\forms\edit_internal_recipe.html:126 msgid "Fats" msgstr "Matières grasses" -#: .\cookbook\templates\forms\edit_internal_recipe.html:124 +#: .\cookbook\templates\forms\edit_internal_recipe.html:128 msgid "Proteins" msgstr "Protéines" -#: .\cookbook\templates\forms\edit_internal_recipe.html:146 -#: .\cookbook\templates\forms\edit_internal_recipe.html:454 +#: .\cookbook\templates\forms\edit_internal_recipe.html:150 +#: .\cookbook\templates\forms\edit_internal_recipe.html:481 msgid "Step" msgstr "Étape" -#: .\cookbook\templates\forms\edit_internal_recipe.html:167 +#: .\cookbook\templates\forms\edit_internal_recipe.html:171 msgid "Show as header" msgstr "Afficher en entête" -#: .\cookbook\templates\forms\edit_internal_recipe.html:173 +#: .\cookbook\templates\forms\edit_internal_recipe.html:177 msgid "Hide as header" msgstr "Masquer en entête" -#: .\cookbook\templates\forms\edit_internal_recipe.html:178 +#: .\cookbook\templates\forms\edit_internal_recipe.html:182 msgid "Move Up" msgstr "Remonter" -#: .\cookbook\templates\forms\edit_internal_recipe.html:183 +#: .\cookbook\templates\forms\edit_internal_recipe.html:187 msgid "Move Down" msgstr "Descendre" -#: .\cookbook\templates\forms\edit_internal_recipe.html:192 +#: .\cookbook\templates\forms\edit_internal_recipe.html:196 msgid "Step Name" msgstr "Nom de l'étape" -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:200 msgid "Step Type" msgstr "Type de l'étape" -#: .\cookbook\templates\forms\edit_internal_recipe.html:207 +#: .\cookbook\templates\forms\edit_internal_recipe.html:212 msgid "Step time in Minutes" msgstr "Durée de l'étape en minutes" -#: .\cookbook\templates\forms\edit_internal_recipe.html:261 -#: .\cookbook\templates\shopping_list.html:183 -msgid "Select Unit" -msgstr "Sélectionnez l'unité" +#: .\cookbook\templates\forms\edit_internal_recipe.html:228 +#, fuzzy +#| msgid "Select one" +msgid "Select File" +msgstr "Faites votre choix" -#: .\cookbook\templates\forms\edit_internal_recipe.html:262 -#: .\cookbook\templates\forms\edit_internal_recipe.html:286 -#: .\cookbook\templates\shopping_list.html:184 -#: .\cookbook\templates\shopping_list.html:206 -msgid "Create" -msgstr "Créer" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:263 -#: .\cookbook\templates\forms\edit_internal_recipe.html:287 -#: .\cookbook\templates\shopping_list.html:185 -#: .\cookbook\templates\shopping_list.html:207 -#: .\cookbook\templates\shopping_list.html:237 -#: .\cookbook\templates\shopping_list.html:261 -#: .\cookbook\templates\url_import.html:124 -#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\forms\edit_internal_recipe.html:229 +#: .\cookbook\templates\forms\edit_internal_recipe.html:290 +#: .\cookbook\templates\forms\edit_internal_recipe.html:314 +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 msgid "Select" msgstr "Sélectionner" -#: .\cookbook\templates\forms\edit_internal_recipe.html:285 -#: .\cookbook\templates\shopping_list.html:205 +#: .\cookbook\templates\forms\edit_internal_recipe.html:288 +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "Sélectionnez l'unité" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:289 +#: .\cookbook\templates\forms\edit_internal_recipe.html:313 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "Créer" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:312 +#: .\cookbook\templates\shopping_list.html:209 msgid "Select Food" msgstr "Sélectionnez l'ingrédient" -#: .\cookbook\templates\forms\edit_internal_recipe.html:302 +#: .\cookbook\templates\forms\edit_internal_recipe.html:329 #: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:171 +#: .\cookbook\templates\url_import.html:542 msgid "Note" msgstr "Notes" -#: .\cookbook\templates\forms\edit_internal_recipe.html:319 +#: .\cookbook\templates\forms\edit_internal_recipe.html:346 msgid "Delete Ingredient" msgstr "Supprimer l'ingrédient" -#: .\cookbook\templates\forms\edit_internal_recipe.html:325 +#: .\cookbook\templates\forms\edit_internal_recipe.html:352 msgid "Make Header" msgstr "Transformer en texte" -#: .\cookbook\templates\forms\edit_internal_recipe.html:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:358 msgid "Make Ingredient" msgstr "Transformer en ingrédient" -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 +#: .\cookbook\templates\forms\edit_internal_recipe.html:364 msgid "Disable Amount" msgstr "Sans quantité" -#: .\cookbook\templates\forms\edit_internal_recipe.html:343 +#: .\cookbook\templates\forms\edit_internal_recipe.html:370 msgid "Enable Amount" msgstr "Avec quantité" -#: .\cookbook\templates\forms\edit_internal_recipe.html:348 +#: .\cookbook\templates\forms\edit_internal_recipe.html:375 msgid "Copy Template Reference" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:374 -#: .\cookbook\templates\url_import.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:401 +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 msgid "Instructions" msgstr "Instructions" -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:414 +#: .\cookbook\templates\forms\edit_internal_recipe.html:445 msgid "Save & View" msgstr "Sauvegarder et afficher" -#: .\cookbook\templates\forms\edit_internal_recipe.html:391 -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 +#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:451 msgid "Add Step" msgstr "Ajouter une étape" -#: .\cookbook\templates\forms\edit_internal_recipe.html:394 -#: .\cookbook\templates\forms\edit_internal_recipe.html:428 +#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:455 msgid "Add Nutrition" msgstr "Ajouter les informations nutritionnelles" -#: .\cookbook\templates\forms\edit_internal_recipe.html:396 -#: .\cookbook\templates\forms\edit_internal_recipe.html:430 +#: .\cookbook\templates\forms\edit_internal_recipe.html:423 +#: .\cookbook\templates\forms\edit_internal_recipe.html:457 msgid "Remove Nutrition" msgstr "Supprimer les informations nutritionnelles" -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -#: .\cookbook\templates\forms\edit_internal_recipe.html:433 +#: .\cookbook\templates\forms\edit_internal_recipe.html:425 +#: .\cookbook\templates\forms\edit_internal_recipe.html:460 msgid "View Recipe" msgstr "Afficher la recette" -#: .\cookbook\templates\forms\edit_internal_recipe.html:400 -#: .\cookbook\templates\forms\edit_internal_recipe.html:435 +#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\templates\forms\edit_internal_recipe.html:462 msgid "Delete Recipe" msgstr "Supprimer la recette" -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 +#: .\cookbook\templates\forms\edit_internal_recipe.html:468 msgid "Steps" msgstr "Étapes" @@ -873,7 +1090,7 @@ msgstr "" "qui les utilisent." #: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\stats.html:26 +#: .\cookbook\templates\space.html:35 .\cookbook\templates\stats.html:26 msgid "Units" msgstr "Unités" @@ -895,10 +1112,6 @@ msgstr "Êtes-vous sûr(e) de vouloir fusionner ces deux ingrédients ?" msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "Êtes-vous certain de vouloir supprimer %(title)s : %(object)s" -#: .\cookbook\templates\generic\delete_template.html:21 -msgid "Confirm" -msgstr "Confirmer" - #: .\cookbook\templates\generic\edit_template.html:30 msgid "View" msgstr "Voir" @@ -920,12 +1133,6 @@ msgstr "Filtre" msgid "Import all" msgstr "Tout importer" -#: .\cookbook\templates\generic\new_template.html:6 -#: .\cookbook\templates\generic\new_template.html:14 -#: .\cookbook\templates\meal_plan.html:323 -msgid "New" -msgstr "Nouveau" - #: .\cookbook\templates\generic\table_template.html:76 #: .\cookbook\templates\recipes_table.html:121 msgid "previous" @@ -970,7 +1177,7 @@ msgstr "Fermer" #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:264 .\cookbook\views\new.py:40 +#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "Recette" @@ -1010,10 +1217,6 @@ msgstr "Rechercher une recette..." msgid "New Recipe" msgstr "Nouvelle ecette" -#: .\cookbook\templates\index.html:47 -msgid "Website Import" -msgstr "Importer depuis un site web" - #: .\cookbook\templates\index.html:53 msgid "Advanced Search" msgstr "Recherche avancée" @@ -1027,7 +1230,7 @@ msgid "Last viewed" msgstr "Dernières recettes vues" #: .\cookbook\templates\index.html:87 .\cookbook\templates\meal_plan.html:178 -#: .\cookbook\templates\stats.html:22 +#: .\cookbook\templates\space.html:29 .\cookbook\templates\stats.html:22 msgid "Recipes" msgstr "Recettes" @@ -1194,7 +1397,7 @@ msgid "New Entry" msgstr "Nouvelle ligne" #: .\cookbook\templates\meal_plan.html:113 -#: .\cookbook\templates\shopping_list.html:52 +#: .\cookbook\templates\shopping_list.html:56 msgid "Search Recipe" msgstr "Rechercher une recette" @@ -1227,7 +1430,7 @@ msgstr "Créer uniquement une note" #: .\cookbook\templates\meal_plan.html:168 #: .\cookbook\templates\shopping_list.html:7 #: .\cookbook\templates\shopping_list.html:29 -#: .\cookbook\templates\shopping_list.html:705 +#: .\cookbook\templates\shopping_list.html:714 msgid "Shopping List" msgstr "Liste de courses" @@ -1278,7 +1481,7 @@ msgstr "Créé par" #: .\cookbook\templates\meal_plan.html:270 #: .\cookbook\templates\meal_plan_entry.html:20 -#: .\cookbook\templates\shopping_list.html:250 +#: .\cookbook\templates\shopping_list.html:254 msgid "Shared with" msgstr "Partagé avec" @@ -1355,7 +1558,6 @@ msgstr "Vous n'êtes pas connecté et ne pouvez donc pas afficher cette page !" #: .\cookbook\templates\no_groups_info.html:18 #: .\cookbook\templates\no_perm_info.html:15 -#: .\cookbook\templates\no_space_info.html:15 msgid "Please contact your administrator." msgstr "" @@ -1372,13 +1574,50 @@ msgid "" "action." msgstr "Vous n'avez pas la permission d'effectuer cette action !" -#: .\cookbook\templates\no_space_info.html:5 -#: .\cookbook\templates\no_space_info.html:12 +#: .\cookbook\templates\no_space_info.html:6 +#: .\cookbook\templates\no_space_info.html:13 msgid "No Space" msgstr "" -#: .\cookbook\templates\no_space_info.html:15 -msgid "You are not a member of any space." +#: .\cookbook\templates\no_space_info.html:17 +msgid "" +"Recipes, foods, shopping lists and more are organized in spaces of one or " +"more people." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:18 +msgid "" +"You can either be invited into an existing space or create your own one." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:31 +#: .\cookbook\templates\no_space_info.html:40 +msgid "Join Space" +msgstr "" + +#: .\cookbook\templates\no_space_info.html:34 +msgid "Join an existing space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:35 +msgid "" +"To join an existing space either enter your invite token or click on the " +"invite link the space owner send you." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:48 +#: .\cookbook\templates\no_space_info.html:56 +#, fuzzy +#| msgid "Create User" +msgid "Create Space" +msgstr "Créer un utilisateur" + +#: .\cookbook\templates\no_space_info.html:51 +msgid "Create your own recipe space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:52 +msgid "Start your own recipe space and invite other users to it." msgstr "" #: .\cookbook\templates\offline.html:6 @@ -1395,28 +1634,29 @@ msgid "" "recently viewed them. Keep in mind that data might be outdated." msgstr "" -#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\stats.html:47 +#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\space.html:56 +#: .\cookbook\templates\stats.html:47 msgid "Comments" msgstr "Commentaires" #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:170 +#: .\cookbook\views\edit.py:179 msgid "Comment" msgstr "Commentaire" #: .\cookbook\templates\recipes_table.html:19 #: .\cookbook\templates\recipes_table.html:23 -#: .\cookbook\templates\url_import.html:69 +#: .\cookbook\templates\url_import.html:440 msgid "Recipe Image" msgstr "Image de la recette" #: .\cookbook\templates\recipes_table.html:51 -#: .\cookbook\templates\url_import.html:74 +#: .\cookbook\templates\url_import.html:445 msgid "Preparation time ca." msgstr "Temps de préparation" #: .\cookbook\templates\recipes_table.html:57 -#: .\cookbook\templates\url_import.html:79 +#: .\cookbook\templates\url_import.html:450 msgid "Waiting time ca." msgstr "Temps de repos" @@ -1432,27 +1672,63 @@ msgstr "Marquer cuisiné" msgid "Recipe Home" msgstr "Page d'accueil" -#: .\cookbook\templates\settings.html:22 +#: .\cookbook\templates\settings.html:23 msgid "Account" msgstr "Compte" -#: .\cookbook\templates\settings.html:38 -msgid "Link social account" +#: .\cookbook\templates\settings.html:27 +msgid "Preferences" msgstr "" -#: .\cookbook\templates\settings.html:42 +#: .\cookbook\templates\settings.html:31 +#, fuzzy +#| msgid "Settings" +msgid "API-Settings" +msgstr "Paramètres" + +#: .\cookbook\templates\settings.html:39 +#, fuzzy +#| msgid "Settings" +msgid "Name Settings" +msgstr "Paramètres" + +#: .\cookbook\templates\settings.html:47 +#, fuzzy +#| msgid "Settings" +msgid "Password Settings" +msgstr "Paramètres" + +#: .\cookbook\templates\settings.html:55 +#, fuzzy +#| msgid "Settings" +msgid "Email Settings" +msgstr "Paramètres" + +#: .\cookbook\templates\settings.html:57 +msgid "Manage Email Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:61 +msgid "Social" +msgstr "" + +#: .\cookbook\templates\settings.html:63 +msgid "Manage Social Accounts" +msgstr "" + +#: .\cookbook\templates\settings.html:75 msgid "Language" msgstr "Langue" -#: .\cookbook\templates\settings.html:67 +#: .\cookbook\templates\settings.html:105 msgid "Style" msgstr "Style" -#: .\cookbook\templates\settings.html:79 +#: .\cookbook\templates\settings.html:125 msgid "API Token" msgstr "Jeton API" -#: .\cookbook\templates\settings.html:80 +#: .\cookbook\templates\settings.html:126 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." @@ -1460,7 +1736,7 @@ msgstr "" "Vous pouvez utiliser à la fois l'authentification classique et " "l'authentification par jeton pour accéder à l'API REST." -#: .\cookbook\templates\settings.html:92 +#: .\cookbook\templates\settings.html:143 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" @@ -1468,7 +1744,7 @@ msgstr "" "Utilisez le jeton dans l'entête d'autorisation préfixé par le mot \"token\" " "comme indiqué dans les exemples suivants :" -#: .\cookbook\templates\settings.html:94 +#: .\cookbook\templates\settings.html:145 msgid "or" msgstr "ou" @@ -1489,59 +1765,55 @@ msgstr "" msgid "Create Superuser account" msgstr "" -#: .\cookbook\templates\shopping_list.html:75 +#: .\cookbook\templates\shopping_list.html:79 msgid "Shopping Recipes" msgstr "Recettes dans le panier" -#: .\cookbook\templates\shopping_list.html:79 +#: .\cookbook\templates\shopping_list.html:83 msgid "No recipes selected" msgstr "Pas de recettes sélectionnées" -#: .\cookbook\templates\shopping_list.html:146 +#: .\cookbook\templates\shopping_list.html:150 msgid "Entry Mode" msgstr "" -#: .\cookbook\templates\shopping_list.html:154 +#: .\cookbook\templates\shopping_list.html:158 msgid "Add Entry" msgstr "" -#: .\cookbook\templates\shopping_list.html:170 +#: .\cookbook\templates\shopping_list.html:174 msgid "Amount" msgstr "Quantité" -#: .\cookbook\templates\shopping_list.html:226 +#: .\cookbook\templates\shopping_list.html:230 +#: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "" -#: .\cookbook\templates\shopping_list.html:236 +#: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "" -#: .\cookbook\templates\shopping_list.html:260 +#: .\cookbook\templates\shopping_list.html:264 msgid "Select User" msgstr "Sélectionnez un utilisateur" -#: .\cookbook\templates\shopping_list.html:279 +#: .\cookbook\templates\shopping_list.html:283 msgid "Finished" msgstr "Terminé" -#: .\cookbook\templates\shopping_list.html:292 +#: .\cookbook\templates\shopping_list.html:296 msgid "You are offline, shopping list might not syncronize." msgstr "" -#: .\cookbook\templates\shopping_list.html:357 +#: .\cookbook\templates\shopping_list.html:361 msgid "Copy/Export" msgstr "Copier/exporter" -#: .\cookbook\templates\shopping_list.html:361 +#: .\cookbook\templates\shopping_list.html:365 msgid "List Prefix" msgstr "Préfixe de la liste" -#: .\cookbook\templates\shopping_list.html:708 -msgid "There was an error creating a resource!" -msgstr "" -"Une erreur s\\\\'est produite lors de la création d\\\\'une ressource !" - #: .\cookbook\templates\socialaccount\connections.html:4 #: .\cookbook\templates\socialaccount\connections.html:7 msgid "Account Connections" @@ -1553,10 +1825,6 @@ msgid "" " accounts:" msgstr "" -#: .\cookbook\templates\socialaccount\connections.html:36 -msgid "Remove" -msgstr "" - #: .\cookbook\templates\socialaccount\connections.html:44 msgid "" "You currently have no social network accounts connected to this account." @@ -1566,38 +1834,95 @@ msgstr "" msgid "Add a 3rd Party Account" msgstr "" -#: .\cookbook\templates\stats.html:4 -msgid "Stats" -msgstr "Stats" +#: .\cookbook\templates\space.html:18 +msgid "Manage Subscription" +msgstr "" -#: .\cookbook\templates\stats.html:19 +#: .\cookbook\templates\space.html:26 .\cookbook\templates\stats.html:19 msgid "Number of objects" msgstr "Nombre d'objets" -#: .\cookbook\templates\stats.html:30 +#: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:30 msgid "Recipe Imports" msgstr "Recettes importées" -#: .\cookbook\templates\stats.html:38 +#: .\cookbook\templates\space.html:47 .\cookbook\templates\stats.html:38 msgid "Objects stats" msgstr "Stats d'objets" -#: .\cookbook\templates\stats.html:41 +#: .\cookbook\templates\space.html:50 .\cookbook\templates\stats.html:41 msgid "Recipes without Keywords" msgstr "Recettes sans mots-clés" -#: .\cookbook\templates\stats.html:43 +#: .\cookbook\templates\space.html:52 .\cookbook\templates\stats.html:43 msgid "External Recipes" msgstr "Recettes externes" -#: .\cookbook\templates\stats.html:45 +#: .\cookbook\templates\space.html:54 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "Recettes internes" -#: .\cookbook\templates\system.html:21 .\cookbook\views\lists.py:115 +#: .\cookbook\templates\space.html:67 +msgid "Members" +msgstr "" + +#: .\cookbook\templates\space.html:71 +#, fuzzy +#| msgid "Invite Links" +msgid "Invite User" +msgstr "Liens d'invitation" + +#: .\cookbook\templates\space.html:82 +msgid "User" +msgstr "" + +#: .\cookbook\templates\space.html:83 +msgid "Groups" +msgstr "" + +#: .\cookbook\templates\space.html:99 +#, fuzzy +#| msgid "Admin" +msgid "admin" +msgstr "Admin" + +#: .\cookbook\templates\space.html:100 +msgid "user" +msgstr "" + +#: .\cookbook\templates\space.html:101 +msgid "guest" +msgstr "" + +#: .\cookbook\templates\space.html:102 +msgid "remove" +msgstr "" + +#: .\cookbook\templates\space.html:106 +msgid "Update" +msgstr "" + +#: .\cookbook\templates\space.html:110 +#, fuzzy +#| msgid "You cannot edit this storage!" +msgid "You cannot edit yourself." +msgstr "Vous ne pouvez pas modifier ce stockage !" + +#: .\cookbook\templates\space.html:117 +#, fuzzy +#| msgid "There are no recipes in this book yet." +msgid "There are no members in your space yet!" +msgstr "Il n'y a pas encore de recettes dans ce livre." + +#: .\cookbook\templates\space.html:124 .\cookbook\templates\system.html:21 +#: .\cookbook\views\lists.py:115 msgid "Invite Links" msgstr "Liens d'invitation" +#: .\cookbook\templates\stats.html:4 +msgid "Stats" +msgstr "Stats" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "Afficher les liens" @@ -1721,47 +2046,159 @@ msgstr "" "pas grave mais déconseillé car certaines fonctionnalités ne fonctionnent " "qu'avec une base de données Postgres." -#: .\cookbook\templates\url_import.html:5 +#: .\cookbook\templates\url_import.html:6 msgid "URL Import" msgstr "Import URL" -#: .\cookbook\templates\url_import.html:23 +#: .\cookbook\templates\url_import.html:31 +msgid "Drag me to your bookmarks to import recipes from anywhere" +msgstr "" + +#: .\cookbook\templates\url_import.html:32 +#, fuzzy +#| msgid "Bookmark saved!" +msgid "Bookmark Me!" +msgstr "Marque-page enregistré !" + +#: .\cookbook\templates\url_import.html:61 msgid "Enter website URL" msgstr "Saisissez l'URL du site web" -#: .\cookbook\templates\url_import.html:36 -msgid "Enter json directly" +#: .\cookbook\templates\url_import.html:97 +msgid "Select recipe files to import or drop them here..." msgstr "" -#: .\cookbook\templates\url_import.html:57 +#: .\cookbook\templates\url_import.html:118 +msgid "Paste json or html source here to load recipe." +msgstr "" + +#: .\cookbook\templates\url_import.html:146 +#, fuzzy +#| msgid "View Recipe" +msgid "Preview Recipe Data" +msgstr "Afficher la recette" + +#: .\cookbook\templates\url_import.html:147 +msgid "Drag recipe attributes from the right into the appropriate box below." +msgstr "" + +#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\url_import.html:173 +#: .\cookbook\templates\url_import.html:190 +#: .\cookbook\templates\url_import.html:209 +#: .\cookbook\templates\url_import.html:227 +#: .\cookbook\templates\url_import.html:242 +#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:273 +#: .\cookbook\templates\url_import.html:300 +#: .\cookbook\templates\url_import.html:351 +msgid "Clear Contents" +msgstr "" + +#: .\cookbook\templates\url_import.html:158 +msgid "Text dragged here will be appended to the name." +msgstr "" + +#: .\cookbook\templates\url_import.html:175 +msgid "Text dragged here will be appended to the description." +msgstr "" + +#: .\cookbook\templates\url_import.html:192 +msgid "Keywords dragged here will be appended to current list" +msgstr "" + +#: .\cookbook\templates\url_import.html:207 +msgid "Image" +msgstr "" + +#: .\cookbook\templates\url_import.html:239 +#, fuzzy +#| msgid "Preparation Time" +msgid "Prep Time" +msgstr "Temps de préparation" + +#: .\cookbook\templates\url_import.html:254 +#, fuzzy +#| msgid "Time" +msgid "Cook Time" +msgstr "Temps" + +#: .\cookbook\templates\url_import.html:275 +msgid "Ingredients dragged here will be appended to current list." +msgstr "" + +#: .\cookbook\templates\url_import.html:302 +msgid "" +"Recipe instructions dragged here will be appended to current instructions." +msgstr "" + +#: .\cookbook\templates\url_import.html:325 +#, fuzzy +#| msgid "Discovered Recipes" +msgid "Discovered Attributes" +msgstr "Recettes découvertes" + +#: .\cookbook\templates\url_import.html:327 +msgid "" +"Drag recipe attributes from below into the appropriate box on the left. " +"Click any node to display its full properties." +msgstr "" + +#: .\cookbook\templates\url_import.html:344 +#, fuzzy +#| msgid "Show as header" +msgid "Show Blank Field" +msgstr "Afficher en entête" + +#: .\cookbook\templates\url_import.html:349 +msgid "Blank Field" +msgstr "" + +#: .\cookbook\templates\url_import.html:353 +msgid "Items dragged to Blank Field will be appended." +msgstr "" + +#: .\cookbook\templates\url_import.html:400 +#, fuzzy +#| msgid "Delete Step" +msgid "Delete Text" +msgstr "Supprimer l'étape" + +#: .\cookbook\templates\url_import.html:413 +#, fuzzy +#| msgid "Delete Recipe" +msgid "Delete image" +msgstr "Supprimer la recette" + +#: .\cookbook\templates\url_import.html:429 msgid "Recipe Name" msgstr "Nom de la recette" -#: .\cookbook\templates\url_import.html:62 +#: .\cookbook\templates\url_import.html:433 #, fuzzy #| msgid "Recipe Markup Specification" msgid "Recipe Description" msgstr "Spécification Recipe Markup" -#: .\cookbook\templates\url_import.html:123 -#: .\cookbook\templates\url_import.html:155 -#: .\cookbook\templates\url_import.html:211 +#: .\cookbook\templates\url_import.html:494 +#: .\cookbook\templates\url_import.html:526 +#: .\cookbook\templates\url_import.html:582 msgid "Select one" msgstr "Faites votre choix" -#: .\cookbook\templates\url_import.html:225 +#: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "Tous les mots-clés" -#: .\cookbook\templates\url_import.html:228 +#: .\cookbook\templates\url_import.html:599 msgid "Import all keywords, not only the ones already existing." msgstr "" -#: .\cookbook\templates\url_import.html:255 +#: .\cookbook\templates\url_import.html:626 msgid "Information" msgstr "Information" -#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:628 msgid "" " Only websites containing ld+json or microdata information can currently\n" " be imported. Most big recipe pages " @@ -1777,50 +2214,79 @@ msgstr "" "données sufisamment structurées, n'hésitez pas à publier un exemple dans un " "ticket sur GitHub." -#: .\cookbook\templates\url_import.html:265 +#: .\cookbook\templates\url_import.html:636 msgid "Google ld+json Info" msgstr "Google ld+json Info" -#: .\cookbook\templates\url_import.html:268 +#: .\cookbook\templates\url_import.html:639 msgid "GitHub Issues" msgstr "Ticket GitHub" -#: .\cookbook\templates\url_import.html:270 +#: .\cookbook\templates\url_import.html:641 msgid "Recipe Markup Specification" msgstr "Spécification Recipe Markup" -#: .\cookbook\views\api.py:71 +#: .\cookbook\views\api.py:77 #, fuzzy #| msgid "Parameter filter_list incorrectly formatted" msgid "Parameter updated_at incorrectly formatted" msgstr "Le paramètre filter_list n'est pas correctement formatté" -#: .\cookbook\views\api.py:455 .\cookbook\views\views.py:226 +#: .\cookbook\views\api.py:553 .\cookbook\views\views.py:295 msgid "This feature is not available in the demo version!" msgstr "" -#: .\cookbook\views\api.py:478 +#: .\cookbook\views\api.py:576 msgid "Sync successful!" msgstr "Synchro réussie !" -#: .\cookbook\views\api.py:483 +#: .\cookbook\views\api.py:581 msgid "Error synchronizing with Storage" msgstr "Erreur lors de la synchronisation avec le stockage" -#: .\cookbook\views\api.py:556 .\cookbook\views\api.py:576 +#: .\cookbook\views\api.py:649 +msgid "Nothing to do." +msgstr "" + +#: .\cookbook\views\api.py:664 +msgid "The requested site provided malformed data and cannot be read." +msgstr "Le site web a renvoyé des données malformées et ne peut être lu." + +#: .\cookbook\views\api.py:671 msgid "The requested page could not be found." msgstr "La page souhaitée n'a pas été trouvée." -#: .\cookbook\views\api.py:585 +#: .\cookbook\views\api.py:680 msgid "" -"The requested page refused to provide any information (Status Code 403)." -msgstr "La page souhaitée refuse de fournir des informations (erreur 403)." +"The requested site does not provide any recognized data format to import the " +"recipe from." +msgstr "" +"Le site web est dans un format qui ne permet pas d'importer automatiquement " +"la recette." -#: .\cookbook\views\api.py:611 -msgid "Could not parse correctly..." +#: .\cookbook\views\api.py:694 +#, fuzzy +#| msgid "The requested page could not be found." +msgid "No useable data could be found." +msgstr "La page souhaitée n'a pas été trouvée." + +#: .\cookbook\views\api.py:710 +msgid "I couldn't find anything to do." msgstr "" -#: .\cookbook\views\data.py:94 +#: .\cookbook\views\data.py:30 .\cookbook\views\data.py:121 +#: .\cookbook\views\edit.py:50 .\cookbook\views\import_export.py:67 +#: .\cookbook\views\new.py:32 +msgid "You have reached the maximum number of recipes for your space." +msgstr "" + +#: .\cookbook\views\data.py:34 .\cookbook\views\data.py:125 +#: .\cookbook\views\edit.py:54 .\cookbook\views\import_export.py:71 +#: .\cookbook\views\new.py:36 +msgid "You have more users than allowed in your space." +msgstr "" + +#: .\cookbook\views\data.py:103 #, python-format msgid "Batch edit done. %(count)d recipe was updated." msgid_plural "Batch edit done. %(count)d Recipes where updated." @@ -1834,7 +2300,7 @@ msgid "Monitor" msgstr "Surveiller" #: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:86 +#: .\cookbook\views\new.py:98 msgid "Storage Backend" msgstr "Espace de stockage" @@ -1845,8 +2311,8 @@ msgstr "" "Impossible de supprimer cet espace de stockage car il est utilisé dans au " "moins un dossier surveillé." -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:204 -#: .\cookbook\views\new.py:144 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 +#: .\cookbook\views\new.py:156 msgid "Recipe Book" msgstr "Livre de recettes" @@ -1854,56 +2320,56 @@ msgstr "Livre de recettes" msgid "Bookmarks" msgstr "Marque-pages" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:214 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 msgid "Invite Link" msgstr "Lien d'invitation" -#: .\cookbook\views\edit.py:110 +#: .\cookbook\views\edit.py:119 msgid "Food" msgstr "Ingrédient" -#: .\cookbook\views\edit.py:119 +#: .\cookbook\views\edit.py:128 msgid "You cannot edit this storage!" msgstr "Vous ne pouvez pas modifier ce stockage !" -#: .\cookbook\views\edit.py:139 +#: .\cookbook\views\edit.py:148 msgid "Storage saved!" msgstr "Stockage sauvegardé !" -#: .\cookbook\views\edit.py:145 +#: .\cookbook\views\edit.py:154 msgid "There was an error updating this storage backend!" msgstr "" "Une erreur s'est produite lors de la mise à jour de cet espace de stockage !" -#: .\cookbook\views\edit.py:156 +#: .\cookbook\views\edit.py:165 msgid "Storage" msgstr "Stockage" -#: .\cookbook\views\edit.py:252 +#: .\cookbook\views\edit.py:261 msgid "Changes saved!" msgstr "Modifications sauvegardées !" -#: .\cookbook\views\edit.py:256 +#: .\cookbook\views\edit.py:265 msgid "Error saving changes!" msgstr "Erreur lors de la sauvegarde des modifications !" -#: .\cookbook\views\edit.py:289 +#: .\cookbook\views\edit.py:299 msgid "Units merged!" msgstr "Unités fusionnées !" -#: .\cookbook\views\edit.py:291 .\cookbook\views\edit.py:307 +#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 msgid "Cannot merge with the same object!" msgstr "" -#: .\cookbook\views\edit.py:305 +#: .\cookbook\views\edit.py:315 msgid "Foods merged!" msgstr "Ingrédient fusionné !" -#: .\cookbook\views\import_export.py:73 +#: .\cookbook\views\import_export.py:93 msgid "Importing is not implemented for this provider" msgstr "" -#: .\cookbook\views\import_export.py:92 +#: .\cookbook\views\import_export.py:115 msgid "Exporting is not implemented for this provider" msgstr "" @@ -1919,23 +2385,77 @@ msgstr "Découverte" msgid "Shopping Lists" msgstr "Listes de course" -#: .\cookbook\views\new.py:111 +#: .\cookbook\views\new.py:123 msgid "Imported new recipe!" msgstr "Nouvelle recette importée !" -#: .\cookbook\views\new.py:114 +#: .\cookbook\views\new.py:126 msgid "There was an error importing this recipe!" msgstr "Une erreur s\\\\'est produite lors de l\\\\'import de cette recette !" -#: .\cookbook\views\views.py:123 +#: .\cookbook\views\new.py:226 +msgid "Hello" +msgstr "" + +#: .\cookbook\views\new.py:226 +msgid "You have been invited by " +msgstr "" + +#: .\cookbook\views\new.py:227 +msgid " to join their Tandoor Recipes space " +msgstr "" + +#: .\cookbook\views\new.py:228 +msgid "Click the following link to activate your account: " +msgstr "" + +#: .\cookbook\views\new.py:229 +msgid "" +"If the link does not work use the following code to manually join the space: " +msgstr "" + +#: .\cookbook\views\new.py:230 +msgid "The invitation is valid until " +msgstr "" + +#: .\cookbook\views\new.py:231 +msgid "" +"Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " +msgstr "" + +#: .\cookbook\views\new.py:234 +msgid "Tandoor Recipes Invite" +msgstr "" + +#: .\cookbook\views\new.py:241 +msgid "Invite link successfully send to user." +msgstr "" + +#: .\cookbook\views\new.py:244 +msgid "" +"You have send to many emails, please share the link manually or wait a few " +"hours." +msgstr "" + +#: .\cookbook\views\new.py:246 +msgid "Email to user could not be send, please share link manually." +msgstr "" + +#: .\cookbook\views\views.py:125 +msgid "" +"You have successfully created your own recipe space. Start by adding some " +"recipes or invite other people to join you." +msgstr "" + +#: .\cookbook\views\views.py:173 msgid "You do not have the required permissions to perform this action!" msgstr "Vous n'avez pas la permission d'effectuer cette action !" -#: .\cookbook\views\views.py:134 +#: .\cookbook\views\views.py:184 msgid "Comment saved!" msgstr "Commentaire enregistré !" -#: .\cookbook\views\views.py:326 +#: .\cookbook\views\views.py:396 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -1946,22 +2466,58 @@ msgstr "" "utilisateur, counsultez la documentation Django pour savoir comment " "réinitialiser le mot de passe." -#: .\cookbook\views\views.py:333 .\cookbook\views\views.py:378 +#: .\cookbook\views\views.py:403 msgid "Passwords dont match!" msgstr "Les mots de passe ne correspondent pas !" -#: .\cookbook\views\views.py:349 .\cookbook\views\views.py:385 +#: .\cookbook\views\views.py:419 msgid "User has been created, please login!" msgstr "L'utilisateur a été créé, veuillez vous connecter !" -#: .\cookbook\views\views.py:365 +#: .\cookbook\views\views.py:435 msgid "Malformed Invite Link supplied!" msgstr "Le lien d'invitation fourni est mal formé !" -#: .\cookbook\views\views.py:405 +#: .\cookbook\views\views.py:441 +#, fuzzy +#| msgid "You are not logged in and therefore cannot view this page!" +msgid "You are already member of a space and therefore cannot join this one." +msgstr "Vous n'êtes pas connecté et ne pouvez donc pas afficher cette page !" + +#: .\cookbook\views\views.py:452 +msgid "Successfully joined space." +msgstr "" + +#: .\cookbook\views\views.py:458 msgid "Invite Link not valid or already used!" msgstr "Le lien d'invitation est invalide ou déjà utilisé !" +#~ msgid "" +#~ "A username is not required, if left blank the new user can choose one." +#~ msgstr "" +#~ "Il n'est pas obligatoire de renseigner un nom d'utilisateur. S'il est " +#~ "laissé vide, le nouvel utilisateur pourra le choisir." + +#~ msgid "Imported from" +#~ msgstr "Importé depuis" + +#~ msgid "Link" +#~ msgstr "Lien" + +#~ msgid "Logout" +#~ msgstr "Déconnexion" + +#~ msgid "Website Import" +#~ msgstr "Importer depuis un site web" + +#~ msgid "There was an error creating a resource!" +#~ msgstr "" +#~ "Une erreur s\\\\'est produite lors de la création d\\\\'une ressource !" + +#~ msgid "" +#~ "The requested page refused to provide any information (Status Code 403)." +#~ msgstr "La page souhaitée refuse de fournir des informations (erreur 403)." + #~ msgid "" #~ "Include - [ ] in list for easier usage in markdown based " #~ "documents." @@ -1977,6 +2533,3 @@ msgstr "Le lien d'invitation est invalide ou déjà utilisé !" #~ msgid "Preference for given user already exists" #~ msgstr "Les préférences pour cet utilisateur existent déjà" - -#~ msgid "Bookmark saved!" -#~ msgstr "Marque-page enregistré !" diff --git a/cookbook/locale/hu_HU/LC_MESSAGES/django.po b/cookbook/locale/hu_HU/LC_MESSAGES/django.po index 1967c8fe4..5a06ba363 100644 --- a/cookbook/locale/hu_HU/LC_MESSAGES/django.po +++ b/cookbook/locale/hu_HU/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: 2020-06-02 19:28+0000\n" "Last-Translator: igazka , 2020\n" "Language-Team: Hungarian (Hungary) (https://www.transifex.com/django-recipes/" @@ -22,14 +22,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:91 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 +#: .\cookbook\templates\forms\edit_internal_recipe.html:246 #: .\cookbook\templates\forms\ingredients.html:34 -#: .\cookbook\templates\stats.html:28 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\space.html:37 .\cookbook\templates\stats.html:28 +#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 msgid "Ingredients" msgstr "Hozzávalók" -#: .\cookbook\forms.py:45 +#: .\cookbook\forms.py:49 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" @@ -37,12 +38,12 @@ msgstr "" "A felső navigációs sáv színe. Nem minden szín működik minden témával. " "Próbáld ki őket! " -#: .\cookbook\forms.py:46 +#: .\cookbook\forms.py:51 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" "Az alapértelmezett mértékegység, új hozzávaló receptbe való beillesztésekor." -#: .\cookbook\forms.py:47 +#: .\cookbook\forms.py:53 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" @@ -50,25 +51,25 @@ msgstr "" "Lehetővé teszi az összetevők mennyiségében a törtrészek használatát (pl. A " "tizedesjegyek automatikus törtrészekké alakítása)" -#: .\cookbook\forms.py:48 +#: .\cookbook\forms.py:56 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." msgstr "" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:58 msgid "Show recently viewed recipes on search page." msgstr "" -#: .\cookbook\forms.py:50 +#: .\cookbook\forms.py:59 msgid "Number of decimals to round ingredients." msgstr "" -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:60 msgid "If you want to be able to create and see comments underneath recipes." msgstr "" -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:62 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -76,167 +77,181 @@ msgid "" "mobile data. If lower than instance limit it is reset when saving." msgstr "" -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:65 msgid "Makes the navbar stick to the top of the page." msgstr "" -#: .\cookbook\forms.py:72 +#: .\cookbook\forms.py:81 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" msgstr "" -#: .\cookbook\forms.py:93 .\cookbook\forms.py:315 -#: .\cookbook\templates\forms\edit_internal_recipe.html:45 +#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "Név" -#: .\cookbook\forms.py:94 .\cookbook\forms.py:316 -#: .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:81 -#: .\cookbook\templates\stats.html:24 .\cookbook\templates\url_import.html:202 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 +#: .\cookbook\templates\base.html:105 +#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\templates\space.html:33 .\cookbook\templates\stats.html:24 +#: .\cookbook\templates\url_import.html:188 +#: .\cookbook\templates\url_import.html:573 msgid "Keywords" msgstr "Kulcsszavak" -#: .\cookbook\forms.py:95 +#: .\cookbook\forms.py:104 msgid "Preparation time in minutes" msgstr "Előkészítési idő percben" -#: .\cookbook\forms.py:96 +#: .\cookbook\forms.py:105 msgid "Waiting time (cooking/baking) in minutes" msgstr "Várakozási idő (sütés/főzés) percben" -#: .\cookbook\forms.py:97 .\cookbook\forms.py:317 +#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 msgid "Path" msgstr "Elérési útvonal" -#: .\cookbook\forms.py:98 +#: .\cookbook\forms.py:107 msgid "Storage UID" msgstr "Tárhely UID" -#: .\cookbook\forms.py:121 +#: .\cookbook\forms.py:133 msgid "Default" msgstr "" -#: .\cookbook\forms.py:130 +#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:149 +#: .\cookbook\forms.py:164 msgid "New Unit" msgstr "Új Mértékegység" -#: .\cookbook\forms.py:150 +#: .\cookbook\forms.py:165 msgid "New unit that other gets replaced by." msgstr "" -#: .\cookbook\forms.py:155 +#: .\cookbook\forms.py:170 msgid "Old Unit" msgstr "Régi Mértékegység" -#: .\cookbook\forms.py:156 +#: .\cookbook\forms.py:171 msgid "Unit that should be replaced." msgstr "" -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:187 msgid "New Food" msgstr "Új Étel" -#: .\cookbook\forms.py:173 +#: .\cookbook\forms.py:188 msgid "New food that other gets replaced by." msgstr "" -#: .\cookbook\forms.py:178 +#: .\cookbook\forms.py:193 msgid "Old Food" msgstr "Régi Étel" -#: .\cookbook\forms.py:179 +#: .\cookbook\forms.py:194 msgid "Food that should be replaced." msgstr "" -#: .\cookbook\forms.py:197 +#: .\cookbook\forms.py:212 msgid "Add your comment: " msgstr "Add hozzá a kommented:" -#: .\cookbook\forms.py:238 +#: .\cookbook\forms.py:253 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" -#: .\cookbook\forms.py:245 +#: .\cookbook\forms.py:260 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:269 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" msgstr "" -#: .\cookbook\forms.py:291 +#: .\cookbook\forms.py:307 msgid "Search String" msgstr "" -#: .\cookbook\forms.py:318 +#: .\cookbook\forms.py:334 msgid "File ID" msgstr "Fájl ID:" -#: .\cookbook\forms.py:354 +#: .\cookbook\forms.py:370 msgid "You must provide at least a recipe or a title." msgstr "" -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:383 msgid "You can list default users to share recipes with in the settings." msgstr "" -#: .\cookbook\forms.py:368 -#: .\cookbook\templates\forms\edit_internal_recipe.html:377 +#: .\cookbook\forms.py:384 +#: .\cookbook\templates\forms\edit_internal_recipe.html:404 msgid "" "You can use markdown to format this field. See the docs here" msgstr "" -#: .\cookbook\forms.py:393 -msgid "A username is not required, if left blank the new user can choose one." +#: .\cookbook\forms.py:409 +msgid "Maximum number of users for this space reached." msgstr "" -#: .\cookbook\helper\permission_helper.py:123 -#: .\cookbook\helper\permission_helper.py:129 -#: .\cookbook\helper\permission_helper.py:151 -#: .\cookbook\helper\permission_helper.py:196 -#: .\cookbook\helper\permission_helper.py:210 -#: .\cookbook\helper\permission_helper.py:221 -#: .\cookbook\helper\permission_helper.py:232 .\cookbook\views\data.py:30 -#: .\cookbook\views\views.py:112 .\cookbook\views\views.py:116 -#: .\cookbook\views\views.py:184 -msgid "You do not have the required permissions to view this page!" +#: .\cookbook\forms.py:415 +msgid "Email address already taken!" msgstr "" -#: .\cookbook\helper\permission_helper.py:141 +#: .\cookbook\forms.py:423 +msgid "" +"An email address is not required but if present the invite link will be send " +"to the user." +msgstr "" + +#: .\cookbook\forms.py:438 +msgid "Name already taken." +msgstr "" + +#: .\cookbook\forms.py:449 +msgid "Accept Terms and Privacy" +msgstr "" + +#: .\cookbook\helper\AllAuthCustomAdapter.py:30 +msgid "" +"In order to prevent spam, the requested email was not send. Please wait a " +"few minutes and try again." +msgstr "" + +#: .\cookbook\helper\permission_helper.py:124 +#: .\cookbook\helper\permission_helper.py:144 .\cookbook\views\views.py:147 msgid "You are not logged in and therefore cannot view this page!" msgstr "" -#: .\cookbook\helper\permission_helper.py:145 -#: .\cookbook\helper\permission_helper.py:167 -#: .\cookbook\helper\permission_helper.py:182 +#: .\cookbook\helper\permission_helper.py:127 +#: .\cookbook\helper\permission_helper.py:132 +#: .\cookbook\helper\permission_helper.py:154 +#: .\cookbook\helper\permission_helper.py:199 +#: .\cookbook\helper\permission_helper.py:213 +#: .\cookbook\helper\permission_helper.py:224 +#: .\cookbook\helper\permission_helper.py:235 .\cookbook\views\data.py:39 +#: .\cookbook\views\views.py:158 .\cookbook\views\views.py:165 +#: .\cookbook\views\views.py:253 +msgid "You do not have the required permissions to view this page!" +msgstr "" + +#: .\cookbook\helper\permission_helper.py:148 +#: .\cookbook\helper\permission_helper.py:170 +#: .\cookbook\helper\permission_helper.py:185 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" -#: .\cookbook\helper\recipe_url_import.py:40 .\cookbook\views\api.py:549 -msgid "The requested site provided malformed data and cannot be read." -msgstr "" - -#: .\cookbook\helper\recipe_url_import.py:54 -msgid "" -"The requested site does not provide any recognized data format to import the " -"recipe from." -msgstr "" - -#: .\cookbook\helper\recipe_url_import.py:160 -msgid "Imported from" -msgstr "" - #: .\cookbook\helper\template_helper.py:60 #: .\cookbook\helper\template_helper.py:62 msgid "Could not parse template code." @@ -246,42 +261,53 @@ msgstr "" #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 -#: .\cookbook\templates\url_import.html:233 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:190 +#: .\cookbook\templates\url_import.html:27 +#: .\cookbook\templates\url_import.html:101 +#: .\cookbook\templates\url_import.html:123 +#: .\cookbook\templates\url_import.html:317 +#: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 +#: .\cookbook\views\edit.py:199 msgid "Import" msgstr "" -#: .\cookbook\integration\integration.py:131 +#: .\cookbook\integration\integration.py:162 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:134 +#: .\cookbook\integration\integration.py:165 +msgid "" +"An unexpected error occurred during the import. Please make sure you have " +"uploaded a valid file." +msgstr "" + +#: .\cookbook\integration\integration.py:169 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:137 +#: .\cookbook\integration\integration.py:173 #, python-format msgid "Imported %s recipes." msgstr "" -#: .\cookbook\integration\paprika.py:44 +#: .\cookbook\integration\paprika.py:46 msgid "Notes" msgstr "" -#: .\cookbook\integration\paprika.py:47 +#: .\cookbook\integration\paprika.py:49 msgid "Nutritional Information" msgstr "" -#: .\cookbook\integration\paprika.py:50 +#: .\cookbook\integration\paprika.py:53 msgid "Source" msgstr "" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:75 +#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 -#: .\cookbook\templates\url_import.html:84 +#: .\cookbook\templates\url_import.html:224 +#: .\cookbook\templates\url_import.html:455 msgid "Servings" msgstr "" @@ -290,11 +316,11 @@ msgid "Waiting time" msgstr "" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:69 +#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "" -#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:71 +#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:78 #: .\cookbook\templates\forms\ingredients.html:7 #: .\cookbook\templates\index.html:7 msgid "Cookbook" @@ -320,44 +346,74 @@ msgstr "Vacsora" msgid "Other" msgstr "" -#: .\cookbook\models.py:110 .\cookbook\templates\shopping_list.html:48 +#: .\cookbook\models.py:71 +msgid "" +"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " +"upload." +msgstr "" + +#: .\cookbook\models.py:121 .\cookbook\templates\search.html:7 +#: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "" -#: .\cookbook\models.py:111 .\cookbook\templates\base.html:85 +#: .\cookbook\models.py:122 .\cookbook\templates\base.html:92 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:224 .\cookbook\views\new.py:188 +#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 msgid "Meal-Plan" msgstr "" -#: .\cookbook\models.py:112 .\cookbook\templates\base.html:82 +#: .\cookbook\models.py:123 .\cookbook\templates\base.html:89 msgid "Books" msgstr "" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Small" msgstr "" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Large" msgstr "" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:198 +#: .\cookbook\models.py:131 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\templates\generic\new_template.html:14 +#: .\cookbook\templates\meal_plan.html:323 +msgid "New" +msgstr "" + +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:202 msgid "Text" msgstr "Szöveg" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:199 +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:203 msgid "Time" msgstr "" +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:204 +#: .\cookbook\templates\forms\edit_internal_recipe.html:218 +#, fuzzy +#| msgid "File ID" +msgid "File" +msgstr "Fájl ID:" + +#: .\cookbook\serializer.py:109 +msgid "File uploads are not enabled for this Space." +msgstr "" + +#: .\cookbook\serializer.py:117 +msgid "You have reached your file upload limit." +msgstr "" + #: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 #: .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 #: .\cookbook\templates\shopping_list.html:33 +#: .\cookbook\templates\space.html:84 msgid "Edit" msgstr "" @@ -371,10 +427,6 @@ msgstr "" msgid "Delete" msgstr "" -#: .\cookbook\tables.py:144 -msgid "Link" -msgstr "" - #: .\cookbook\templates\404.html:5 msgid "404 Error" msgstr "" @@ -391,21 +443,120 @@ msgstr "" msgid "Report a Bug" msgstr "" -#: .\cookbook\templates\account\login.html:7 -#: .\cookbook\templates\base.html:170 +#: .\cookbook\templates\account\email.html:6 +#: .\cookbook\templates\account\email.html:9 +msgid "E-mail Addresses" +msgstr "" + +#: .\cookbook\templates\account\email.html:11 +msgid "The following e-mail addresses are associated with your account:" +msgstr "" + +#: .\cookbook\templates\account\email.html:28 +msgid "Verified" +msgstr "" + +#: .\cookbook\templates\account\email.html:30 +msgid "Unverified" +msgstr "" + +#: .\cookbook\templates\account\email.html:32 +msgid "Primary" +msgstr "" + +#: .\cookbook\templates\account\email.html:39 +msgid "Make Primary" +msgstr "" + +#: .\cookbook\templates\account\email.html:41 +msgid "Re-send Verification" +msgstr "" + +#: .\cookbook\templates\account\email.html:42 +#: .\cookbook\templates\socialaccount\connections.html:36 +msgid "Remove" +msgstr "" + +#: .\cookbook\templates\account\email.html:50 +msgid "Warning:" +msgstr "" + +#: .\cookbook\templates\account\email.html:50 +msgid "" +"You currently do not have any e-mail address set up. You should really add " +"an e-mail address so you can receive notifications, reset your password, etc." +msgstr "" + +#: .\cookbook\templates\account\email.html:56 +msgid "Add E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email.html:61 +msgid "Add E-mail" +msgstr "" + +#: .\cookbook\templates\account\email.html:71 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:6 +#: .\cookbook\templates\account\email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that\n" +" %(email)s is an e-mail address " +"for user %(user_display)s\n" +" ." +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:22 +#: .\cookbook\templates\generic\delete_template.html:21 +msgid "Confirm" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:29 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please\n" +" issue a new e-mail confirmation " +"request." +msgstr "" + +#: .\cookbook\templates\account\login.html:8 +#: .\cookbook\templates\base.html:180 msgid "Login" msgstr "" -#: .\cookbook\templates\account\login.html:13 -#: .\cookbook\templates\account\login.html:28 +#: .\cookbook\templates\account\login.html:15 +#: .\cookbook\templates\account\login.html:31 +#: .\cookbook\templates\account\signup.html:69 +#: .\cookbook\templates\account\signup_closed.html:15 msgid "Sign In" msgstr "" -#: .\cookbook\templates\account\login.html:38 +#: .\cookbook\templates\account\login.html:32 +msgid "Sign Up" +msgstr "" + +#: .\cookbook\templates\account\login.html:36 +#: .\cookbook\templates\account\login.html:37 +#: .\cookbook\templates\account\password_reset.html:29 +msgid "Reset My Password" +msgstr "" + +#: .\cookbook\templates\account\login.html:37 +msgid "Lost your password?" +msgstr "" + +#: .\cookbook\templates\account\login.html:48 msgid "Social Login" msgstr "" -#: .\cookbook\templates\account\login.html:39 +#: .\cookbook\templates\account\login.html:49 msgid "You can use any of the following providers to sign in." msgstr "" @@ -419,115 +570,161 @@ msgstr "" msgid "Are you sure you want to sign out?" msgstr "" -#: .\cookbook\templates\account\password_reset.html:5 -#: .\cookbook\templates\account\password_reset_done.html:5 +#: .\cookbook\templates\account\password_reset.html:7 +#: .\cookbook\templates\account\password_reset.html:13 +#: .\cookbook\templates\account\password_reset_done.html:7 +#: .\cookbook\templates\account\password_reset_done.html:10 msgid "Password Reset" msgstr "" -#: .\cookbook\templates\account\password_reset.html:9 -#: .\cookbook\templates\account\password_reset_done.html:9 -msgid "Password reset is not implemented for the time being!" +#: .\cookbook\templates\account\password_reset.html:24 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." msgstr "" -#: .\cookbook\templates\account\signup.html:5 +#: .\cookbook\templates\account\password_reset.html:32 +msgid "Password reset is disabled on this instance." +msgstr "" + +#: .\cookbook\templates\account\password_reset_done.html:16 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: .\cookbook\templates\account\signup.html:6 msgid "Register" msgstr "" -#: .\cookbook\templates\account\signup.html:9 -msgid "Create your Account" +#: .\cookbook\templates\account\signup.html:12 +msgid "Create an Account" msgstr "" -#: .\cookbook\templates\account\signup.html:14 +#: .\cookbook\templates\account\signup.html:42 +msgid "I accept the follwoing" +msgstr "" + +#: .\cookbook\templates\account\signup.html:45 +msgid "Terms and Conditions" +msgstr "" + +#: .\cookbook\templates\account\signup.html:48 +msgid "and" +msgstr "" + +#: .\cookbook\templates\account\signup.html:52 +msgid "Privacy Policy" +msgstr "" + +#: .\cookbook\templates\account\signup.html:65 msgid "Create User" msgstr "" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:160 +#: .\cookbook\templates\account\signup.html:69 +msgid "Already have an account?" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:5 +#: .\cookbook\templates\account\signup_closed.html:11 +msgid "Sign Up Closed" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:13 +msgid "We are sorry, but the sign up is currently closed." +msgstr "" + +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:170 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "" -#: .\cookbook\templates\base.html:78 +#: .\cookbook\templates\base.html:85 msgid "Utensils" msgstr "" -#: .\cookbook\templates\base.html:88 +#: .\cookbook\templates\base.html:95 msgid "Shopping" msgstr "" -#: .\cookbook\templates\base.html:102 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:93 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:66 +#: .\cookbook\templates\base.html:109 .\cookbook\views\delete.py:84 +#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 +#: .\cookbook\views\new.py:78 msgid "Keyword" msgstr "" -#: .\cookbook\templates\base.html:104 +#: .\cookbook\templates\base.html:111 msgid "Batch Edit" msgstr "" -#: .\cookbook\templates\base.html:109 +#: .\cookbook\templates\base.html:116 msgid "Storage Data" msgstr "" -#: .\cookbook\templates\base.html:113 +#: .\cookbook\templates\base.html:120 msgid "Storage Backends" msgstr "" -#: .\cookbook\templates\base.html:115 +#: .\cookbook\templates\base.html:122 msgid "Configure Sync" msgstr "" -#: .\cookbook\templates\base.html:117 +#: .\cookbook\templates\base.html:124 msgid "Discovered Recipes" msgstr "" -#: .\cookbook\templates\base.html:119 +#: .\cookbook\templates\base.html:126 msgid "Discovery Log" msgstr "" -#: .\cookbook\templates\base.html:121 .\cookbook\templates\stats.html:10 +#: .\cookbook\templates\base.html:128 .\cookbook\templates\stats.html:10 msgid "Statistics" msgstr "" -#: .\cookbook\templates\base.html:123 +#: .\cookbook\templates\base.html:130 msgid "Units & Ingredients" msgstr "" -#: .\cookbook\templates\base.html:125 +#: .\cookbook\templates\base.html:132 .\cookbook\templates\index.html:47 msgid "Import Recipe" msgstr "" -#: .\cookbook\templates\base.html:144 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:151 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:16 msgid "Settings" msgstr "" -#: .\cookbook\templates\base.html:146 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:153 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "" -#: .\cookbook\templates\base.html:150 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:155 .\cookbook\templates\space.html:7 +msgid "Space Settings" +msgstr "" + +#: .\cookbook\templates\base.html:160 .\cookbook\templates\system.html:13 msgid "System" msgstr "" -#: .\cookbook\templates\base.html:152 +#: .\cookbook\templates\base.html:162 msgid "Admin" msgstr "" -#: .\cookbook\templates\base.html:156 +#: .\cookbook\templates\base.html:166 msgid "Markdown Guide" msgstr "" -#: .\cookbook\templates\base.html:158 +#: .\cookbook\templates\base.html:168 msgid "GitHub" msgstr "" -#: .\cookbook\templates\base.html:162 +#: .\cookbook\templates\base.html:172 msgid "API Browser" msgstr "" -#: .\cookbook\templates\base.html:165 -msgid "Logout" +#: .\cookbook\templates\base.html:175 +msgid "Log out" msgstr "" #: .\cookbook\templates\batch\edit.html:6 @@ -542,7 +739,7 @@ msgstr "" msgid "Add the specified keywords to all recipes containing a word" msgstr "" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:76 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 msgid "Sync" msgstr "" @@ -569,7 +766,7 @@ msgstr "" msgid "Importing Recipes" msgstr "" -#: .\cookbook\templates\batch\waiting.html:23 +#: .\cookbook\templates\batch\waiting.html:28 msgid "" "This can take a few minutes, depending on the number of recipes in sync, " "please wait." @@ -606,26 +803,33 @@ msgid "Export Recipes" msgstr "" #: .\cookbook\templates\export.html:14 .\cookbook\templates\export.html:20 -#: .\cookbook\templates\shopping_list.html:347 +#: .\cookbook\templates\shopping_list.html:351 #: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20 msgid "Export" msgstr "" +#: .\cookbook\templates\files.html:7 +#, fuzzy +#| msgid "File ID" +msgid "Files" +msgstr "Fájl ID:" + #: .\cookbook\templates\forms\edit_import_recipe.html:5 #: .\cookbook\templates\forms\edit_import_recipe.html:9 msgid "Import new Recipe" msgstr "" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:389 -#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:416 +#: .\cookbook\templates\forms\edit_internal_recipe.html:448 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:28 .\cookbook\templates\settings.html:35 -#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:73 -#: .\cookbook\templates\shopping_list.html:349 +#: .\cookbook\templates\settings.html:44 .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:114 +#: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "" @@ -634,181 +838,188 @@ msgstr "" msgid "Edit Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:52 +#: .\cookbook\templates\forms\edit_internal_recipe.html:56 +#: .\cookbook\templates\url_import.html:171 msgid "Description" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:72 +#: .\cookbook\templates\forms\edit_internal_recipe.html:76 msgid "Waiting Time" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:78 +#: .\cookbook\templates\forms\edit_internal_recipe.html:82 msgid "Servings Text" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:89 +#: .\cookbook\templates\forms\edit_internal_recipe.html:93 msgid "Select Keywords" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:90 -#: .\cookbook\templates\url_import.html:212 +#: .\cookbook\templates\forms\edit_internal_recipe.html:94 +#: .\cookbook\templates\url_import.html:583 #, fuzzy #| msgid "Keywords" msgid "Add Keyword" msgstr "Kulcsszavak" -#: .\cookbook\templates\forms\edit_internal_recipe.html:108 +#: .\cookbook\templates\forms\edit_internal_recipe.html:112 msgid "Nutrition" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -#: .\cookbook\templates\forms\edit_internal_recipe.html:162 +#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:166 msgid "Delete Step" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:120 msgid "Calories" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:119 +#: .\cookbook\templates\forms\edit_internal_recipe.html:123 msgid "Carbohydrates" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:122 +#: .\cookbook\templates\forms\edit_internal_recipe.html:126 msgid "Fats" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:124 +#: .\cookbook\templates\forms\edit_internal_recipe.html:128 msgid "Proteins" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:146 -#: .\cookbook\templates\forms\edit_internal_recipe.html:454 +#: .\cookbook\templates\forms\edit_internal_recipe.html:150 +#: .\cookbook\templates\forms\edit_internal_recipe.html:481 msgid "Step" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:167 +#: .\cookbook\templates\forms\edit_internal_recipe.html:171 msgid "Show as header" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:173 +#: .\cookbook\templates\forms\edit_internal_recipe.html:177 msgid "Hide as header" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:178 +#: .\cookbook\templates\forms\edit_internal_recipe.html:182 msgid "Move Up" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:183 +#: .\cookbook\templates\forms\edit_internal_recipe.html:187 msgid "Move Down" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:192 +#: .\cookbook\templates\forms\edit_internal_recipe.html:196 msgid "Step Name" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:200 msgid "Step Type" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:207 +#: .\cookbook\templates\forms\edit_internal_recipe.html:212 msgid "Step time in Minutes" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:261 -#: .\cookbook\templates\shopping_list.html:183 -msgid "Select Unit" +#: .\cookbook\templates\forms\edit_internal_recipe.html:228 +msgid "Select File" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:262 -#: .\cookbook\templates\forms\edit_internal_recipe.html:286 -#: .\cookbook\templates\shopping_list.html:184 -#: .\cookbook\templates\shopping_list.html:206 -msgid "Create" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:263 -#: .\cookbook\templates\forms\edit_internal_recipe.html:287 -#: .\cookbook\templates\shopping_list.html:185 -#: .\cookbook\templates\shopping_list.html:207 -#: .\cookbook\templates\shopping_list.html:237 -#: .\cookbook\templates\shopping_list.html:261 -#: .\cookbook\templates\url_import.html:124 -#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\forms\edit_internal_recipe.html:229 +#: .\cookbook\templates\forms\edit_internal_recipe.html:290 +#: .\cookbook\templates\forms\edit_internal_recipe.html:314 +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 msgid "Select" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:285 -#: .\cookbook\templates\shopping_list.html:205 +#: .\cookbook\templates\forms\edit_internal_recipe.html:288 +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:289 +#: .\cookbook\templates\forms\edit_internal_recipe.html:313 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:312 +#: .\cookbook\templates\shopping_list.html:209 msgid "Select Food" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:302 +#: .\cookbook\templates\forms\edit_internal_recipe.html:329 #: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:171 +#: .\cookbook\templates\url_import.html:542 msgid "Note" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:319 +#: .\cookbook\templates\forms\edit_internal_recipe.html:346 msgid "Delete Ingredient" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:325 +#: .\cookbook\templates\forms\edit_internal_recipe.html:352 msgid "Make Header" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:358 msgid "Make Ingredient" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 +#: .\cookbook\templates\forms\edit_internal_recipe.html:364 msgid "Disable Amount" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:343 +#: .\cookbook\templates\forms\edit_internal_recipe.html:370 msgid "Enable Amount" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:348 +#: .\cookbook\templates\forms\edit_internal_recipe.html:375 msgid "Copy Template Reference" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:374 -#: .\cookbook\templates\url_import.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:401 +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 msgid "Instructions" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:414 +#: .\cookbook\templates\forms\edit_internal_recipe.html:445 msgid "Save & View" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:391 -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 +#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:451 msgid "Add Step" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:394 -#: .\cookbook\templates\forms\edit_internal_recipe.html:428 +#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:455 msgid "Add Nutrition" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:396 -#: .\cookbook\templates\forms\edit_internal_recipe.html:430 +#: .\cookbook\templates\forms\edit_internal_recipe.html:423 +#: .\cookbook\templates\forms\edit_internal_recipe.html:457 msgid "Remove Nutrition" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -#: .\cookbook\templates\forms\edit_internal_recipe.html:433 +#: .\cookbook\templates\forms\edit_internal_recipe.html:425 +#: .\cookbook\templates\forms\edit_internal_recipe.html:460 msgid "View Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:400 -#: .\cookbook\templates\forms\edit_internal_recipe.html:435 +#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\templates\forms\edit_internal_recipe.html:462 msgid "Delete Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 +#: .\cookbook\templates\forms\edit_internal_recipe.html:468 msgid "Steps" msgstr "" @@ -828,7 +1039,7 @@ msgid "" msgstr "" #: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\stats.html:26 +#: .\cookbook\templates\space.html:35 .\cookbook\templates\stats.html:26 msgid "Units" msgstr "" @@ -850,10 +1061,6 @@ msgstr "" msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "" -#: .\cookbook\templates\generic\delete_template.html:21 -msgid "Confirm" -msgstr "" - #: .\cookbook\templates\generic\edit_template.html:30 msgid "View" msgstr "" @@ -875,12 +1082,6 @@ msgstr "" msgid "Import all" msgstr "" -#: .\cookbook\templates\generic\new_template.html:6 -#: .\cookbook\templates\generic\new_template.html:14 -#: .\cookbook\templates\meal_plan.html:323 -msgid "New" -msgstr "" - #: .\cookbook\templates\generic\table_template.html:76 #: .\cookbook\templates\recipes_table.html:121 msgid "previous" @@ -925,7 +1126,7 @@ msgstr "" #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:264 .\cookbook\views\new.py:40 +#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "" @@ -958,10 +1159,6 @@ msgstr "" msgid "New Recipe" msgstr "" -#: .\cookbook\templates\index.html:47 -msgid "Website Import" -msgstr "" - #: .\cookbook\templates\index.html:53 msgid "Advanced Search" msgstr "" @@ -975,7 +1172,7 @@ msgid "Last viewed" msgstr "" #: .\cookbook\templates\index.html:87 .\cookbook\templates\meal_plan.html:178 -#: .\cookbook\templates\stats.html:22 +#: .\cookbook\templates\space.html:29 .\cookbook\templates\stats.html:22 msgid "Recipes" msgstr "" @@ -1123,7 +1320,7 @@ msgid "New Entry" msgstr "" #: .\cookbook\templates\meal_plan.html:113 -#: .\cookbook\templates\shopping_list.html:52 +#: .\cookbook\templates\shopping_list.html:56 msgid "Search Recipe" msgstr "" @@ -1153,7 +1350,7 @@ msgstr "" #: .\cookbook\templates\meal_plan.html:168 #: .\cookbook\templates\shopping_list.html:7 #: .\cookbook\templates\shopping_list.html:29 -#: .\cookbook\templates\shopping_list.html:705 +#: .\cookbook\templates\shopping_list.html:714 msgid "Shopping List" msgstr "" @@ -1203,7 +1400,7 @@ msgstr "" #: .\cookbook\templates\meal_plan.html:270 #: .\cookbook\templates\meal_plan_entry.html:20 -#: .\cookbook\templates\shopping_list.html:250 +#: .\cookbook\templates\shopping_list.html:254 msgid "Shared with" msgstr "" @@ -1278,7 +1475,6 @@ msgstr "" #: .\cookbook\templates\no_groups_info.html:18 #: .\cookbook\templates\no_perm_info.html:15 -#: .\cookbook\templates\no_space_info.html:15 msgid "Please contact your administrator." msgstr "" @@ -1293,13 +1489,48 @@ msgid "" "action." msgstr "" -#: .\cookbook\templates\no_space_info.html:5 -#: .\cookbook\templates\no_space_info.html:12 +#: .\cookbook\templates\no_space_info.html:6 +#: .\cookbook\templates\no_space_info.html:13 msgid "No Space" msgstr "" -#: .\cookbook\templates\no_space_info.html:15 -msgid "You are not a member of any space." +#: .\cookbook\templates\no_space_info.html:17 +msgid "" +"Recipes, foods, shopping lists and more are organized in spaces of one or " +"more people." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:18 +msgid "" +"You can either be invited into an existing space or create your own one." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:31 +#: .\cookbook\templates\no_space_info.html:40 +msgid "Join Space" +msgstr "" + +#: .\cookbook\templates\no_space_info.html:34 +msgid "Join an existing space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:35 +msgid "" +"To join an existing space either enter your invite token or click on the " +"invite link the space owner send you." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:48 +#: .\cookbook\templates\no_space_info.html:56 +msgid "Create Space" +msgstr "" + +#: .\cookbook\templates\no_space_info.html:51 +msgid "Create your own recipe space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:52 +msgid "Start your own recipe space and invite other users to it." msgstr "" #: .\cookbook\templates\offline.html:6 @@ -1316,28 +1547,29 @@ msgid "" "recently viewed them. Keep in mind that data might be outdated." msgstr "" -#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\stats.html:47 +#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\space.html:56 +#: .\cookbook\templates\stats.html:47 msgid "Comments" msgstr "" #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:170 +#: .\cookbook\views\edit.py:179 msgid "Comment" msgstr "" #: .\cookbook\templates\recipes_table.html:19 #: .\cookbook\templates\recipes_table.html:23 -#: .\cookbook\templates\url_import.html:69 +#: .\cookbook\templates\url_import.html:440 msgid "Recipe Image" msgstr "" #: .\cookbook\templates\recipes_table.html:51 -#: .\cookbook\templates\url_import.html:74 +#: .\cookbook\templates\url_import.html:445 msgid "Preparation time ca." msgstr "" #: .\cookbook\templates\recipes_table.html:57 -#: .\cookbook\templates\url_import.html:79 +#: .\cookbook\templates\url_import.html:450 msgid "Waiting time ca." msgstr "" @@ -1353,39 +1585,67 @@ msgstr "" msgid "Recipe Home" msgstr "" -#: .\cookbook\templates\settings.html:22 +#: .\cookbook\templates\settings.html:23 msgid "Account" msgstr "" -#: .\cookbook\templates\settings.html:38 -msgid "Link social account" +#: .\cookbook\templates\settings.html:27 +msgid "Preferences" msgstr "" -#: .\cookbook\templates\settings.html:42 +#: .\cookbook\templates\settings.html:31 +msgid "API-Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:39 +msgid "Name Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:47 +msgid "Password Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:55 +msgid "Email Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:57 +msgid "Manage Email Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:61 +msgid "Social" +msgstr "" + +#: .\cookbook\templates\settings.html:63 +msgid "Manage Social Accounts" +msgstr "" + +#: .\cookbook\templates\settings.html:75 msgid "Language" msgstr "" -#: .\cookbook\templates\settings.html:67 +#: .\cookbook\templates\settings.html:105 msgid "Style" msgstr "" -#: .\cookbook\templates\settings.html:79 +#: .\cookbook\templates\settings.html:125 msgid "API Token" msgstr "" -#: .\cookbook\templates\settings.html:80 +#: .\cookbook\templates\settings.html:126 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." msgstr "" -#: .\cookbook\templates\settings.html:92 +#: .\cookbook\templates\settings.html:143 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" msgstr "" -#: .\cookbook\templates\settings.html:94 +#: .\cookbook\templates\settings.html:145 msgid "or" msgstr "" @@ -1406,58 +1666,55 @@ msgstr "" msgid "Create Superuser account" msgstr "" -#: .\cookbook\templates\shopping_list.html:75 +#: .\cookbook\templates\shopping_list.html:79 msgid "Shopping Recipes" msgstr "" -#: .\cookbook\templates\shopping_list.html:79 +#: .\cookbook\templates\shopping_list.html:83 msgid "No recipes selected" msgstr "" -#: .\cookbook\templates\shopping_list.html:146 +#: .\cookbook\templates\shopping_list.html:150 msgid "Entry Mode" msgstr "" -#: .\cookbook\templates\shopping_list.html:154 +#: .\cookbook\templates\shopping_list.html:158 msgid "Add Entry" msgstr "" -#: .\cookbook\templates\shopping_list.html:170 +#: .\cookbook\templates\shopping_list.html:174 msgid "Amount" msgstr "" -#: .\cookbook\templates\shopping_list.html:226 +#: .\cookbook\templates\shopping_list.html:230 +#: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "" -#: .\cookbook\templates\shopping_list.html:236 +#: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "" -#: .\cookbook\templates\shopping_list.html:260 +#: .\cookbook\templates\shopping_list.html:264 msgid "Select User" msgstr "" -#: .\cookbook\templates\shopping_list.html:279 +#: .\cookbook\templates\shopping_list.html:283 msgid "Finished" msgstr "" -#: .\cookbook\templates\shopping_list.html:292 +#: .\cookbook\templates\shopping_list.html:296 msgid "You are offline, shopping list might not syncronize." msgstr "" -#: .\cookbook\templates\shopping_list.html:357 +#: .\cookbook\templates\shopping_list.html:361 msgid "Copy/Export" msgstr "" -#: .\cookbook\templates\shopping_list.html:361 +#: .\cookbook\templates\shopping_list.html:365 msgid "List Prefix" msgstr "" -#: .\cookbook\templates\shopping_list.html:708 -msgid "There was an error creating a resource!" -msgstr "" - #: .\cookbook\templates\socialaccount\connections.html:4 #: .\cookbook\templates\socialaccount\connections.html:7 msgid "Account Connections" @@ -1469,10 +1726,6 @@ msgid "" " accounts:" msgstr "" -#: .\cookbook\templates\socialaccount\connections.html:36 -msgid "Remove" -msgstr "" - #: .\cookbook\templates\socialaccount\connections.html:44 msgid "" "You currently have no social network accounts connected to this account." @@ -1482,38 +1735,87 @@ msgstr "" msgid "Add a 3rd Party Account" msgstr "" -#: .\cookbook\templates\stats.html:4 -msgid "Stats" +#: .\cookbook\templates\space.html:18 +msgid "Manage Subscription" msgstr "" -#: .\cookbook\templates\stats.html:19 +#: .\cookbook\templates\space.html:26 .\cookbook\templates\stats.html:19 msgid "Number of objects" msgstr "" -#: .\cookbook\templates\stats.html:30 +#: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:30 msgid "Recipe Imports" msgstr "" -#: .\cookbook\templates\stats.html:38 +#: .\cookbook\templates\space.html:47 .\cookbook\templates\stats.html:38 msgid "Objects stats" msgstr "" -#: .\cookbook\templates\stats.html:41 +#: .\cookbook\templates\space.html:50 .\cookbook\templates\stats.html:41 msgid "Recipes without Keywords" msgstr "" -#: .\cookbook\templates\stats.html:43 +#: .\cookbook\templates\space.html:52 .\cookbook\templates\stats.html:43 msgid "External Recipes" msgstr "" -#: .\cookbook\templates\stats.html:45 +#: .\cookbook\templates\space.html:54 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "" -#: .\cookbook\templates\system.html:21 .\cookbook\views\lists.py:115 +#: .\cookbook\templates\space.html:67 +msgid "Members" +msgstr "" + +#: .\cookbook\templates\space.html:71 +msgid "Invite User" +msgstr "" + +#: .\cookbook\templates\space.html:82 +msgid "User" +msgstr "" + +#: .\cookbook\templates\space.html:83 +msgid "Groups" +msgstr "" + +#: .\cookbook\templates\space.html:99 +msgid "admin" +msgstr "" + +#: .\cookbook\templates\space.html:100 +msgid "user" +msgstr "" + +#: .\cookbook\templates\space.html:101 +msgid "guest" +msgstr "" + +#: .\cookbook\templates\space.html:102 +msgid "remove" +msgstr "" + +#: .\cookbook\templates\space.html:106 +msgid "Update" +msgstr "" + +#: .\cookbook\templates\space.html:110 +msgid "You cannot edit yourself." +msgstr "" + +#: .\cookbook\templates\space.html:117 +msgid "There are no members in your space yet!" +msgstr "" + +#: .\cookbook\templates\space.html:124 .\cookbook\templates\system.html:21 +#: .\cookbook\views\lists.py:115 msgid "Invite Links" msgstr "" +#: .\cookbook\templates\stats.html:4 +msgid "Stats" +msgstr "" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "" @@ -1611,45 +1913,141 @@ msgid "" " " msgstr "" -#: .\cookbook\templates\url_import.html:5 +#: .\cookbook\templates\url_import.html:6 msgid "URL Import" msgstr "" -#: .\cookbook\templates\url_import.html:23 +#: .\cookbook\templates\url_import.html:31 +msgid "Drag me to your bookmarks to import recipes from anywhere" +msgstr "" + +#: .\cookbook\templates\url_import.html:32 +msgid "Bookmark Me!" +msgstr "" + +#: .\cookbook\templates\url_import.html:61 msgid "Enter website URL" msgstr "" -#: .\cookbook\templates\url_import.html:36 -msgid "Enter json directly" +#: .\cookbook\templates\url_import.html:97 +msgid "Select recipe files to import or drop them here..." msgstr "" -#: .\cookbook\templates\url_import.html:57 +#: .\cookbook\templates\url_import.html:118 +msgid "Paste json or html source here to load recipe." +msgstr "" + +#: .\cookbook\templates\url_import.html:146 +msgid "Preview Recipe Data" +msgstr "" + +#: .\cookbook\templates\url_import.html:147 +msgid "Drag recipe attributes from the right into the appropriate box below." +msgstr "" + +#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\url_import.html:173 +#: .\cookbook\templates\url_import.html:190 +#: .\cookbook\templates\url_import.html:209 +#: .\cookbook\templates\url_import.html:227 +#: .\cookbook\templates\url_import.html:242 +#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:273 +#: .\cookbook\templates\url_import.html:300 +#: .\cookbook\templates\url_import.html:351 +msgid "Clear Contents" +msgstr "" + +#: .\cookbook\templates\url_import.html:158 +msgid "Text dragged here will be appended to the name." +msgstr "" + +#: .\cookbook\templates\url_import.html:175 +msgid "Text dragged here will be appended to the description." +msgstr "" + +#: .\cookbook\templates\url_import.html:192 +msgid "Keywords dragged here will be appended to current list" +msgstr "" + +#: .\cookbook\templates\url_import.html:207 +msgid "Image" +msgstr "" + +#: .\cookbook\templates\url_import.html:239 +msgid "Prep Time" +msgstr "" + +#: .\cookbook\templates\url_import.html:254 +msgid "Cook Time" +msgstr "" + +#: .\cookbook\templates\url_import.html:275 +msgid "Ingredients dragged here will be appended to current list." +msgstr "" + +#: .\cookbook\templates\url_import.html:302 +msgid "" +"Recipe instructions dragged here will be appended to current instructions." +msgstr "" + +#: .\cookbook\templates\url_import.html:325 +msgid "Discovered Attributes" +msgstr "" + +#: .\cookbook\templates\url_import.html:327 +msgid "" +"Drag recipe attributes from below into the appropriate box on the left. " +"Click any node to display its full properties." +msgstr "" + +#: .\cookbook\templates\url_import.html:344 +msgid "Show Blank Field" +msgstr "" + +#: .\cookbook\templates\url_import.html:349 +msgid "Blank Field" +msgstr "" + +#: .\cookbook\templates\url_import.html:353 +msgid "Items dragged to Blank Field will be appended." +msgstr "" + +#: .\cookbook\templates\url_import.html:400 +msgid "Delete Text" +msgstr "" + +#: .\cookbook\templates\url_import.html:413 +msgid "Delete image" +msgstr "" + +#: .\cookbook\templates\url_import.html:429 msgid "Recipe Name" msgstr "" -#: .\cookbook\templates\url_import.html:62 +#: .\cookbook\templates\url_import.html:433 msgid "Recipe Description" msgstr "" -#: .\cookbook\templates\url_import.html:123 -#: .\cookbook\templates\url_import.html:155 -#: .\cookbook\templates\url_import.html:211 +#: .\cookbook\templates\url_import.html:494 +#: .\cookbook\templates\url_import.html:526 +#: .\cookbook\templates\url_import.html:582 msgid "Select one" msgstr "" -#: .\cookbook\templates\url_import.html:225 +#: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "" -#: .\cookbook\templates\url_import.html:228 +#: .\cookbook\templates\url_import.html:599 msgid "Import all keywords, not only the ones already existing." msgstr "" -#: .\cookbook\templates\url_import.html:255 +#: .\cookbook\templates\url_import.html:626 msgid "Information" msgstr "" -#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:628 msgid "" " Only websites containing ld+json or microdata information can currently\n" " be imported. Most big recipe pages " @@ -1660,48 +2058,73 @@ msgid "" " github issues." msgstr "" -#: .\cookbook\templates\url_import.html:265 +#: .\cookbook\templates\url_import.html:636 msgid "Google ld+json Info" msgstr "" -#: .\cookbook\templates\url_import.html:268 +#: .\cookbook\templates\url_import.html:639 msgid "GitHub Issues" msgstr "" -#: .\cookbook\templates\url_import.html:270 +#: .\cookbook\templates\url_import.html:641 msgid "Recipe Markup Specification" msgstr "" -#: .\cookbook\views\api.py:71 +#: .\cookbook\views\api.py:77 msgid "Parameter updated_at incorrectly formatted" msgstr "" -#: .\cookbook\views\api.py:455 .\cookbook\views\views.py:226 +#: .\cookbook\views\api.py:553 .\cookbook\views\views.py:295 msgid "This feature is not available in the demo version!" msgstr "" -#: .\cookbook\views\api.py:478 +#: .\cookbook\views\api.py:576 msgid "Sync successful!" msgstr "" -#: .\cookbook\views\api.py:483 +#: .\cookbook\views\api.py:581 msgid "Error synchronizing with Storage" msgstr "" -#: .\cookbook\views\api.py:556 .\cookbook\views\api.py:576 +#: .\cookbook\views\api.py:649 +msgid "Nothing to do." +msgstr "" + +#: .\cookbook\views\api.py:664 +msgid "The requested site provided malformed data and cannot be read." +msgstr "" + +#: .\cookbook\views\api.py:671 msgid "The requested page could not be found." msgstr "" -#: .\cookbook\views\api.py:585 +#: .\cookbook\views\api.py:680 msgid "" -"The requested page refused to provide any information (Status Code 403)." +"The requested site does not provide any recognized data format to import the " +"recipe from." msgstr "" -#: .\cookbook\views\api.py:611 -msgid "Could not parse correctly..." +#: .\cookbook\views\api.py:694 +msgid "No useable data could be found." msgstr "" -#: .\cookbook\views\data.py:94 +#: .\cookbook\views\api.py:710 +msgid "I couldn't find anything to do." +msgstr "" + +#: .\cookbook\views\data.py:30 .\cookbook\views\data.py:121 +#: .\cookbook\views\edit.py:50 .\cookbook\views\import_export.py:67 +#: .\cookbook\views\new.py:32 +msgid "You have reached the maximum number of recipes for your space." +msgstr "" + +#: .\cookbook\views\data.py:34 .\cookbook\views\data.py:125 +#: .\cookbook\views\edit.py:54 .\cookbook\views\import_export.py:71 +#: .\cookbook\views\new.py:36 +msgid "You have more users than allowed in your space." +msgstr "" + +#: .\cookbook\views\data.py:103 #, python-format msgid "Batch edit done. %(count)d recipe was updated." msgid_plural "Batch edit done. %(count)d Recipes where updated." @@ -1713,7 +2136,7 @@ msgid "Monitor" msgstr "" #: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:86 +#: .\cookbook\views\new.py:98 msgid "Storage Backend" msgstr "" @@ -1722,8 +2145,8 @@ msgid "" "Could not delete this storage backend as it is used in at least one monitor." msgstr "" -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:204 -#: .\cookbook\views\new.py:144 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 +#: .\cookbook\views\new.py:156 msgid "Recipe Book" msgstr "" @@ -1731,55 +2154,55 @@ msgstr "" msgid "Bookmarks" msgstr "" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:214 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 msgid "Invite Link" msgstr "" -#: .\cookbook\views\edit.py:110 +#: .\cookbook\views\edit.py:119 msgid "Food" msgstr "" -#: .\cookbook\views\edit.py:119 +#: .\cookbook\views\edit.py:128 msgid "You cannot edit this storage!" msgstr "" -#: .\cookbook\views\edit.py:139 +#: .\cookbook\views\edit.py:148 msgid "Storage saved!" msgstr "" -#: .\cookbook\views\edit.py:145 +#: .\cookbook\views\edit.py:154 msgid "There was an error updating this storage backend!" msgstr "" -#: .\cookbook\views\edit.py:156 +#: .\cookbook\views\edit.py:165 msgid "Storage" msgstr "" -#: .\cookbook\views\edit.py:252 +#: .\cookbook\views\edit.py:261 msgid "Changes saved!" msgstr "" -#: .\cookbook\views\edit.py:256 +#: .\cookbook\views\edit.py:265 msgid "Error saving changes!" msgstr "" -#: .\cookbook\views\edit.py:289 +#: .\cookbook\views\edit.py:299 msgid "Units merged!" msgstr "" -#: .\cookbook\views\edit.py:291 .\cookbook\views\edit.py:307 +#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 msgid "Cannot merge with the same object!" msgstr "" -#: .\cookbook\views\edit.py:305 +#: .\cookbook\views\edit.py:315 msgid "Foods merged!" msgstr "" -#: .\cookbook\views\import_export.py:73 +#: .\cookbook\views\import_export.py:93 msgid "Importing is not implemented for this provider" msgstr "" -#: .\cookbook\views\import_export.py:92 +#: .\cookbook\views\import_export.py:115 msgid "Exporting is not implemented for this provider" msgstr "" @@ -1795,41 +2218,103 @@ msgstr "" msgid "Shopping Lists" msgstr "" -#: .\cookbook\views\new.py:111 +#: .\cookbook\views\new.py:123 msgid "Imported new recipe!" msgstr "" -#: .\cookbook\views\new.py:114 +#: .\cookbook\views\new.py:126 msgid "There was an error importing this recipe!" msgstr "" -#: .\cookbook\views\views.py:123 +#: .\cookbook\views\new.py:226 +msgid "Hello" +msgstr "" + +#: .\cookbook\views\new.py:226 +msgid "You have been invited by " +msgstr "" + +#: .\cookbook\views\new.py:227 +msgid " to join their Tandoor Recipes space " +msgstr "" + +#: .\cookbook\views\new.py:228 +msgid "Click the following link to activate your account: " +msgstr "" + +#: .\cookbook\views\new.py:229 +msgid "" +"If the link does not work use the following code to manually join the space: " +msgstr "" + +#: .\cookbook\views\new.py:230 +msgid "The invitation is valid until " +msgstr "" + +#: .\cookbook\views\new.py:231 +msgid "" +"Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " +msgstr "" + +#: .\cookbook\views\new.py:234 +msgid "Tandoor Recipes Invite" +msgstr "" + +#: .\cookbook\views\new.py:241 +msgid "Invite link successfully send to user." +msgstr "" + +#: .\cookbook\views\new.py:244 +msgid "" +"You have send to many emails, please share the link manually or wait a few " +"hours." +msgstr "" + +#: .\cookbook\views\new.py:246 +msgid "Email to user could not be send, please share link manually." +msgstr "" + +#: .\cookbook\views\views.py:125 +msgid "" +"You have successfully created your own recipe space. Start by adding some " +"recipes or invite other people to join you." +msgstr "" + +#: .\cookbook\views\views.py:173 msgid "You do not have the required permissions to perform this action!" msgstr "" -#: .\cookbook\views\views.py:134 +#: .\cookbook\views\views.py:184 msgid "Comment saved!" msgstr "" -#: .\cookbook\views\views.py:326 +#: .\cookbook\views\views.py:396 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." msgstr "" -#: .\cookbook\views\views.py:333 .\cookbook\views\views.py:378 +#: .\cookbook\views\views.py:403 msgid "Passwords dont match!" msgstr "" -#: .\cookbook\views\views.py:349 .\cookbook\views\views.py:385 +#: .\cookbook\views\views.py:419 msgid "User has been created, please login!" msgstr "" -#: .\cookbook\views\views.py:365 +#: .\cookbook\views\views.py:435 msgid "Malformed Invite Link supplied!" msgstr "" -#: .\cookbook\views\views.py:405 +#: .\cookbook\views\views.py:441 +msgid "You are already member of a space and therefore cannot join this one." +msgstr "" + +#: .\cookbook\views\views.py:452 +msgid "Successfully joined space." +msgstr "" + +#: .\cookbook\views\views.py:458 msgid "Invite Link not valid or already used!" msgstr "" diff --git a/cookbook/locale/it/LC_MESSAGES/django.po b/cookbook/locale/it/LC_MESSAGES/django.po index c4578f20c..77f101685 100644 --- a/cookbook/locale/it/LC_MESSAGES/django.po +++ b/cookbook/locale/it/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: 2021-04-11 15:23+0000\n" "Last-Translator: Oliver Cervera \n" "Language-Team: Italian /remote." "php/webdav/ is added automatically)" @@ -192,26 +196,26 @@ msgstr "" "Lascia vuoto per dropbox e inserisci solo l'url base per nextcloud (/" "remote.php/webdav/ è aggiunto automaticamente)" -#: .\cookbook\forms.py:291 +#: .\cookbook\forms.py:307 msgid "Search String" msgstr "Stringa di Ricerca" -#: .\cookbook\forms.py:318 +#: .\cookbook\forms.py:334 msgid "File ID" msgstr "ID del File" -#: .\cookbook\forms.py:354 +#: .\cookbook\forms.py:370 msgid "You must provide at least a recipe or a title." msgstr "Devi fornire almeno una ricetta o un titolo." -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:383 msgid "You can list default users to share recipes with in the settings." msgstr "" "È possibile visualizzare l'elenco degli utenti predefiniti con cui " "condividere le ricette nelle impostazioni." -#: .\cookbook\forms.py:368 -#: .\cookbook\templates\forms\edit_internal_recipe.html:377 +#: .\cookbook\forms.py:384 +#: .\cookbook\templates\forms\edit_internal_recipe.html:404 msgid "" "You can use markdown to format this field. See the docs here" @@ -219,52 +223,57 @@ msgstr "" "Puoi usare markdown per formattare questo campo. Guarda la documentazione qui" -#: .\cookbook\forms.py:393 -msgid "A username is not required, if left blank the new user can choose one." +#: .\cookbook\forms.py:409 +msgid "Maximum number of users for this space reached." msgstr "" -"Non è richiesto un nome utente, se lasciato vuoto il nuovo utente ne può " -"sceglierne uno." -#: .\cookbook\helper\permission_helper.py:123 -#: .\cookbook\helper\permission_helper.py:129 -#: .\cookbook\helper\permission_helper.py:151 -#: .\cookbook\helper\permission_helper.py:196 -#: .\cookbook\helper\permission_helper.py:210 -#: .\cookbook\helper\permission_helper.py:221 -#: .\cookbook\helper\permission_helper.py:232 .\cookbook\views\data.py:30 -#: .\cookbook\views\views.py:112 .\cookbook\views\views.py:116 -#: .\cookbook\views\views.py:184 -msgid "You do not have the required permissions to view this page!" -msgstr "Non hai i permessi necessari per visualizzare questa pagina!" +#: .\cookbook\forms.py:415 +msgid "Email address already taken!" +msgstr "" -#: .\cookbook\helper\permission_helper.py:141 +#: .\cookbook\forms.py:423 +msgid "" +"An email address is not required but if present the invite link will be send " +"to the user." +msgstr "" + +#: .\cookbook\forms.py:438 +msgid "Name already taken." +msgstr "" + +#: .\cookbook\forms.py:449 +msgid "Accept Terms and Privacy" +msgstr "" + +#: .\cookbook\helper\AllAuthCustomAdapter.py:30 +msgid "" +"In order to prevent spam, the requested email was not send. Please wait a " +"few minutes and try again." +msgstr "" + +#: .\cookbook\helper\permission_helper.py:124 +#: .\cookbook\helper\permission_helper.py:144 .\cookbook\views\views.py:147 msgid "You are not logged in and therefore cannot view this page!" msgstr "Non hai fatto l'accesso e quindi non puoi visualizzare questa pagina!" -#: .\cookbook\helper\permission_helper.py:145 -#: .\cookbook\helper\permission_helper.py:167 -#: .\cookbook\helper\permission_helper.py:182 +#: .\cookbook\helper\permission_helper.py:127 +#: .\cookbook\helper\permission_helper.py:132 +#: .\cookbook\helper\permission_helper.py:154 +#: .\cookbook\helper\permission_helper.py:199 +#: .\cookbook\helper\permission_helper.py:213 +#: .\cookbook\helper\permission_helper.py:224 +#: .\cookbook\helper\permission_helper.py:235 .\cookbook\views\data.py:39 +#: .\cookbook\views\views.py:158 .\cookbook\views\views.py:165 +#: .\cookbook\views\views.py:253 +msgid "You do not have the required permissions to view this page!" +msgstr "Non hai i permessi necessari per visualizzare questa pagina!" + +#: .\cookbook\helper\permission_helper.py:148 +#: .\cookbook\helper\permission_helper.py:170 +#: .\cookbook\helper\permission_helper.py:185 msgid "You cannot interact with this object as it is not owned by you!" msgstr "Non puoi interagire con questo oggetto perché non ne hai i diritti!" -#: .\cookbook\helper\recipe_url_import.py:40 .\cookbook\views\api.py:549 -msgid "The requested site provided malformed data and cannot be read." -msgstr "" -"Il sito richiesto ha fornito dati in formato non corretto e non può essere " -"letto." - -#: .\cookbook\helper\recipe_url_import.py:54 -msgid "" -"The requested site does not provide any recognized data format to import the " -"recipe from." -msgstr "" -"Il sito richiesto non fornisce un formato di dati riconosciuto da cui " -"importare la ricetta." - -#: .\cookbook\helper\recipe_url_import.py:160 -msgid "Imported from" -msgstr "Importato da" - #: .\cookbook\helper\template_helper.py:60 #: .\cookbook\helper\template_helper.py:62 msgid "Could not parse template code." @@ -274,12 +283,16 @@ msgstr "Impossibile elaborare il codice del template." #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 -#: .\cookbook\templates\url_import.html:233 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:190 +#: .\cookbook\templates\url_import.html:27 +#: .\cookbook\templates\url_import.html:101 +#: .\cookbook\templates\url_import.html:123 +#: .\cookbook\templates\url_import.html:317 +#: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 +#: .\cookbook\views\edit.py:199 msgid "Import" msgstr "Importa" -#: .\cookbook\integration\integration.py:131 +#: .\cookbook\integration\integration.py:162 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" @@ -287,31 +300,38 @@ msgstr "" "La procedura di import necessita di un file .zip. Hai scelto il tipo di " "importazione corretta per i tuoi dati?" -#: .\cookbook\integration\integration.py:134 +#: .\cookbook\integration\integration.py:165 +msgid "" +"An unexpected error occurred during the import. Please make sure you have " +"uploaded a valid file." +msgstr "" + +#: .\cookbook\integration\integration.py:169 msgid "The following recipes were ignored because they already existed:" msgstr "Le seguenti ricette sono state ignorate perché già esistenti:" -#: .\cookbook\integration\integration.py:137 +#: .\cookbook\integration\integration.py:173 #, python-format msgid "Imported %s recipes." msgstr "Importate %s ricette." -#: .\cookbook\integration\paprika.py:44 +#: .\cookbook\integration\paprika.py:46 msgid "Notes" msgstr "Note" -#: .\cookbook\integration\paprika.py:47 +#: .\cookbook\integration\paprika.py:49 msgid "Nutritional Information" msgstr "Informazioni nutrizionali" -#: .\cookbook\integration\paprika.py:50 +#: .\cookbook\integration\paprika.py:53 msgid "Source" msgstr "Fonte" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:75 +#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 -#: .\cookbook\templates\url_import.html:84 +#: .\cookbook\templates\url_import.html:224 +#: .\cookbook\templates\url_import.html:455 msgid "Servings" msgstr "Porzioni" @@ -320,11 +340,11 @@ msgid "Waiting time" msgstr "Tempo di cottura" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:69 +#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "Tempo di preparazione" -#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:71 +#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:78 #: .\cookbook\templates\forms\ingredients.html:7 #: .\cookbook\templates\index.html:7 msgid "Cookbook" @@ -350,44 +370,74 @@ msgstr "Cena" msgid "Other" msgstr "Altro" -#: .\cookbook\models.py:110 .\cookbook\templates\shopping_list.html:48 +#: .\cookbook\models.py:71 +msgid "" +"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " +"upload." +msgstr "" + +#: .\cookbook\models.py:121 .\cookbook\templates\search.html:7 +#: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "Cerca" -#: .\cookbook\models.py:111 .\cookbook\templates\base.html:85 +#: .\cookbook\models.py:122 .\cookbook\templates\base.html:92 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:224 .\cookbook\views\new.py:188 +#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 msgid "Meal-Plan" msgstr "Piano alimentare" -#: .\cookbook\models.py:112 .\cookbook\templates\base.html:82 +#: .\cookbook\models.py:123 .\cookbook\templates\base.html:89 msgid "Books" msgstr "Libri" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Small" msgstr "Piccolo" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Large" msgstr "Grande" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:198 +#: .\cookbook\models.py:131 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\templates\generic\new_template.html:14 +#: .\cookbook\templates\meal_plan.html:323 +msgid "New" +msgstr "Nuovo" + +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:202 msgid "Text" msgstr "Testo" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:199 +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:203 msgid "Time" msgstr "Tempo" +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:204 +#: .\cookbook\templates\forms\edit_internal_recipe.html:218 +#, fuzzy +#| msgid "File ID" +msgid "File" +msgstr "ID del File" + +#: .\cookbook\serializer.py:109 +msgid "File uploads are not enabled for this Space." +msgstr "" + +#: .\cookbook\serializer.py:117 +msgid "You have reached your file upload limit." +msgstr "" + #: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 #: .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 #: .\cookbook\templates\shopping_list.html:33 +#: .\cookbook\templates\space.html:84 msgid "Edit" msgstr "Modifica" @@ -401,10 +451,6 @@ msgstr "Modifica" msgid "Delete" msgstr "Elimina" -#: .\cookbook\tables.py:144 -msgid "Link" -msgstr "Link" - #: .\cookbook\templates\404.html:5 msgid "404 Error" msgstr "Errore 404" @@ -421,21 +467,126 @@ msgstr "Portami nella Home" msgid "Report a Bug" msgstr "Segnala un Bug" -#: .\cookbook\templates\account\login.html:7 -#: .\cookbook\templates\base.html:170 +#: .\cookbook\templates\account\email.html:6 +#: .\cookbook\templates\account\email.html:9 +msgid "E-mail Addresses" +msgstr "" + +#: .\cookbook\templates\account\email.html:11 +msgid "The following e-mail addresses are associated with your account:" +msgstr "" + +#: .\cookbook\templates\account\email.html:28 +msgid "Verified" +msgstr "" + +#: .\cookbook\templates\account\email.html:30 +msgid "Unverified" +msgstr "" + +#: .\cookbook\templates\account\email.html:32 +msgid "Primary" +msgstr "" + +#: .\cookbook\templates\account\email.html:39 +#, fuzzy +#| msgid "Make Header" +msgid "Make Primary" +msgstr "Crea Intestazione" + +#: .\cookbook\templates\account\email.html:41 +msgid "Re-send Verification" +msgstr "" + +#: .\cookbook\templates\account\email.html:42 +#: .\cookbook\templates\socialaccount\connections.html:36 +msgid "Remove" +msgstr "Rimuovi" + +#: .\cookbook\templates\account\email.html:50 +#, fuzzy +#| msgid "Warning" +msgid "Warning:" +msgstr "Avviso" + +#: .\cookbook\templates\account\email.html:50 +msgid "" +"You currently do not have any e-mail address set up. You should really add " +"an e-mail address so you can receive notifications, reset your password, etc." +msgstr "" + +#: .\cookbook\templates\account\email.html:56 +msgid "Add E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email.html:61 +msgid "Add E-mail" +msgstr "" + +#: .\cookbook\templates\account\email.html:71 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:6 +#: .\cookbook\templates\account\email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that\n" +" %(email)s is an e-mail address " +"for user %(user_display)s\n" +" ." +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:22 +#: .\cookbook\templates\generic\delete_template.html:21 +msgid "Confirm" +msgstr "Conferma" + +#: .\cookbook\templates\account\email_confirm.html:29 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please\n" +" issue a new e-mail confirmation " +"request." +msgstr "" + +#: .\cookbook\templates\account\login.html:8 +#: .\cookbook\templates\base.html:180 msgid "Login" msgstr "Login" -#: .\cookbook\templates\account\login.html:13 -#: .\cookbook\templates\account\login.html:28 +#: .\cookbook\templates\account\login.html:15 +#: .\cookbook\templates\account\login.html:31 +#: .\cookbook\templates\account\signup.html:69 +#: .\cookbook\templates\account\signup_closed.html:15 msgid "Sign In" msgstr "Accedi" -#: .\cookbook\templates\account\login.html:38 +#: .\cookbook\templates\account\login.html:32 +#, fuzzy +#| msgid "Sign In" +msgid "Sign Up" +msgstr "Accedi" + +#: .\cookbook\templates\account\login.html:36 +#: .\cookbook\templates\account\login.html:37 +#: .\cookbook\templates\account\password_reset.html:29 +msgid "Reset My Password" +msgstr "" + +#: .\cookbook\templates\account\login.html:37 +msgid "Lost your password?" +msgstr "" + +#: .\cookbook\templates\account\login.html:48 msgid "Social Login" msgstr "Login con social network" -#: .\cookbook\templates\account\login.html:39 +#: .\cookbook\templates\account\login.html:49 msgid "You can use any of the following providers to sign in." msgstr "Puoi usare uno dei seguenti provider per accedere." @@ -449,116 +600,168 @@ msgstr "Esci" msgid "Are you sure you want to sign out?" msgstr "Sei sicuro di voler uscire?" -#: .\cookbook\templates\account\password_reset.html:5 -#: .\cookbook\templates\account\password_reset_done.html:5 +#: .\cookbook\templates\account\password_reset.html:7 +#: .\cookbook\templates\account\password_reset.html:13 +#: .\cookbook\templates\account\password_reset_done.html:7 +#: .\cookbook\templates\account\password_reset_done.html:10 msgid "Password Reset" msgstr "Recupero password" -#: .\cookbook\templates\account\password_reset.html:9 -#: .\cookbook\templates\account\password_reset_done.html:9 -msgid "Password reset is not implemented for the time being!" +#: .\cookbook\templates\account\password_reset.html:24 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." +msgstr "" + +#: .\cookbook\templates\account\password_reset.html:32 +#, fuzzy +#| msgid "Password reset is not implemented for the time being!" +msgid "Password reset is disabled on this instance." msgstr "Il recupero della password non è stato ancora implementato!" -#: .\cookbook\templates\account\signup.html:5 +#: .\cookbook\templates\account\password_reset_done.html:16 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: .\cookbook\templates\account\signup.html:6 msgid "Register" msgstr "Registrati" -#: .\cookbook\templates\account\signup.html:9 -msgid "Create your Account" +#: .\cookbook\templates\account\signup.html:12 +#, fuzzy +#| msgid "Create your Account" +msgid "Create an Account" msgstr "Crea il tuo account" -#: .\cookbook\templates\account\signup.html:14 +#: .\cookbook\templates\account\signup.html:42 +msgid "I accept the follwoing" +msgstr "" + +#: .\cookbook\templates\account\signup.html:45 +msgid "Terms and Conditions" +msgstr "" + +#: .\cookbook\templates\account\signup.html:48 +msgid "and" +msgstr "" + +#: .\cookbook\templates\account\signup.html:52 +msgid "Privacy Policy" +msgstr "" + +#: .\cookbook\templates\account\signup.html:65 msgid "Create User" msgstr "Crea utente" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:160 +#: .\cookbook\templates\account\signup.html:69 +msgid "Already have an account?" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:5 +#: .\cookbook\templates\account\signup_closed.html:11 +msgid "Sign Up Closed" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:13 +msgid "We are sorry, but the sign up is currently closed." +msgstr "" + +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:170 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "Documentazione API" -#: .\cookbook\templates\base.html:78 +#: .\cookbook\templates\base.html:85 msgid "Utensils" msgstr "Strumenti" -#: .\cookbook\templates\base.html:88 +#: .\cookbook\templates\base.html:95 msgid "Shopping" msgstr "Spesa" -#: .\cookbook\templates\base.html:102 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:93 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:66 +#: .\cookbook\templates\base.html:109 .\cookbook\views\delete.py:84 +#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 +#: .\cookbook\views\new.py:78 msgid "Keyword" msgstr "Parola chiave" -#: .\cookbook\templates\base.html:104 +#: .\cookbook\templates\base.html:111 msgid "Batch Edit" msgstr "Modifica in blocco" -#: .\cookbook\templates\base.html:109 +#: .\cookbook\templates\base.html:116 msgid "Storage Data" msgstr "Dati e Archiviazione" -#: .\cookbook\templates\base.html:113 +#: .\cookbook\templates\base.html:120 msgid "Storage Backends" msgstr "Backend Archiviazione" -#: .\cookbook\templates\base.html:115 +#: .\cookbook\templates\base.html:122 msgid "Configure Sync" msgstr "Configura Sincronizzazione" -#: .\cookbook\templates\base.html:117 +#: .\cookbook\templates\base.html:124 msgid "Discovered Recipes" msgstr "Ricette trovate" -#: .\cookbook\templates\base.html:119 +#: .\cookbook\templates\base.html:126 msgid "Discovery Log" msgstr "Registro ricette trovate" -#: .\cookbook\templates\base.html:121 .\cookbook\templates\stats.html:10 +#: .\cookbook\templates\base.html:128 .\cookbook\templates\stats.html:10 msgid "Statistics" msgstr "Statistiche" -#: .\cookbook\templates\base.html:123 +#: .\cookbook\templates\base.html:130 msgid "Units & Ingredients" msgstr "Unità di misura & Ingredienti" -#: .\cookbook\templates\base.html:125 +#: .\cookbook\templates\base.html:132 .\cookbook\templates\index.html:47 msgid "Import Recipe" msgstr "Importa Ricetta" -#: .\cookbook\templates\base.html:144 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:151 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:16 msgid "Settings" msgstr "Impostazioni" -#: .\cookbook\templates\base.html:146 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:153 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "Cronologia" -#: .\cookbook\templates\base.html:150 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:155 .\cookbook\templates\space.html:7 +#, fuzzy +#| msgid "Settings" +msgid "Space Settings" +msgstr "Impostazioni" + +#: .\cookbook\templates\base.html:160 .\cookbook\templates\system.html:13 msgid "System" msgstr "Sistema" -#: .\cookbook\templates\base.html:152 +#: .\cookbook\templates\base.html:162 msgid "Admin" msgstr "Amministratore" -#: .\cookbook\templates\base.html:156 +#: .\cookbook\templates\base.html:166 msgid "Markdown Guide" msgstr "Informazioni su Markdown" -#: .\cookbook\templates\base.html:158 +#: .\cookbook\templates\base.html:168 msgid "GitHub" msgstr "GitHub" -#: .\cookbook\templates\base.html:162 +#: .\cookbook\templates\base.html:172 msgid "API Browser" msgstr "Browser API" -#: .\cookbook\templates\base.html:165 -msgid "Logout" -msgstr "Logout" +#: .\cookbook\templates\base.html:175 +msgid "Log out" +msgstr "" #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" @@ -574,7 +777,7 @@ msgstr "" "Aggiungi le parole chiave che desideri a tutte le ricette che contengono una " "determinata stringa" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:76 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 msgid "Sync" msgstr "Sincronizza" @@ -603,7 +806,7 @@ msgstr "Sincronizza Ora!" msgid "Importing Recipes" msgstr "Importando Ricette" -#: .\cookbook\templates\batch\waiting.html:23 +#: .\cookbook\templates\batch\waiting.html:28 msgid "" "This can take a few minutes, depending on the number of recipes in sync, " "please wait." @@ -642,26 +845,33 @@ msgid "Export Recipes" msgstr "Esporta Ricette" #: .\cookbook\templates\export.html:14 .\cookbook\templates\export.html:20 -#: .\cookbook\templates\shopping_list.html:347 +#: .\cookbook\templates\shopping_list.html:351 #: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20 msgid "Export" msgstr "Esporta" +#: .\cookbook\templates\files.html:7 +#, fuzzy +#| msgid "File ID" +msgid "Files" +msgstr "ID del File" + #: .\cookbook\templates\forms\edit_import_recipe.html:5 #: .\cookbook\templates\forms\edit_import_recipe.html:9 msgid "Import new Recipe" msgstr "Importa nuova Ricetta" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:389 -#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:416 +#: .\cookbook\templates\forms\edit_internal_recipe.html:448 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:28 .\cookbook\templates\settings.html:35 -#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:73 -#: .\cookbook\templates\shopping_list.html:349 +#: .\cookbook\templates\settings.html:44 .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:114 +#: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "Salva" @@ -670,179 +880,188 @@ msgstr "Salva" msgid "Edit Recipe" msgstr "Modifica Ricetta" -#: .\cookbook\templates\forms\edit_internal_recipe.html:52 +#: .\cookbook\templates\forms\edit_internal_recipe.html:56 +#: .\cookbook\templates\url_import.html:171 msgid "Description" msgstr "Descrizione" -#: .\cookbook\templates\forms\edit_internal_recipe.html:72 +#: .\cookbook\templates\forms\edit_internal_recipe.html:76 msgid "Waiting Time" msgstr "Tempo di cottura" -#: .\cookbook\templates\forms\edit_internal_recipe.html:78 +#: .\cookbook\templates\forms\edit_internal_recipe.html:82 msgid "Servings Text" msgstr "Nome delle porzioni" -#: .\cookbook\templates\forms\edit_internal_recipe.html:89 +#: .\cookbook\templates\forms\edit_internal_recipe.html:93 msgid "Select Keywords" msgstr "Seleziona parole chiave" -#: .\cookbook\templates\forms\edit_internal_recipe.html:90 -#: .\cookbook\templates\url_import.html:212 +#: .\cookbook\templates\forms\edit_internal_recipe.html:94 +#: .\cookbook\templates\url_import.html:583 msgid "Add Keyword" msgstr "Aggiungi parole chiave" -#: .\cookbook\templates\forms\edit_internal_recipe.html:108 +#: .\cookbook\templates\forms\edit_internal_recipe.html:112 msgid "Nutrition" msgstr "Nutrienti" -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -#: .\cookbook\templates\forms\edit_internal_recipe.html:162 +#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:166 msgid "Delete Step" msgstr "Elimina Step" -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:120 msgid "Calories" msgstr "Calorie" -#: .\cookbook\templates\forms\edit_internal_recipe.html:119 +#: .\cookbook\templates\forms\edit_internal_recipe.html:123 msgid "Carbohydrates" msgstr "Carboidrati" -#: .\cookbook\templates\forms\edit_internal_recipe.html:122 +#: .\cookbook\templates\forms\edit_internal_recipe.html:126 msgid "Fats" msgstr "Grassi" -#: .\cookbook\templates\forms\edit_internal_recipe.html:124 +#: .\cookbook\templates\forms\edit_internal_recipe.html:128 msgid "Proteins" msgstr "Proteine" -#: .\cookbook\templates\forms\edit_internal_recipe.html:146 -#: .\cookbook\templates\forms\edit_internal_recipe.html:454 +#: .\cookbook\templates\forms\edit_internal_recipe.html:150 +#: .\cookbook\templates\forms\edit_internal_recipe.html:481 msgid "Step" msgstr "Step" -#: .\cookbook\templates\forms\edit_internal_recipe.html:167 +#: .\cookbook\templates\forms\edit_internal_recipe.html:171 msgid "Show as header" msgstr "Mostra come intestazione" -#: .\cookbook\templates\forms\edit_internal_recipe.html:173 +#: .\cookbook\templates\forms\edit_internal_recipe.html:177 msgid "Hide as header" msgstr "Nascondi come intestazione" -#: .\cookbook\templates\forms\edit_internal_recipe.html:178 +#: .\cookbook\templates\forms\edit_internal_recipe.html:182 msgid "Move Up" msgstr "Sposta Sopra" -#: .\cookbook\templates\forms\edit_internal_recipe.html:183 +#: .\cookbook\templates\forms\edit_internal_recipe.html:187 msgid "Move Down" msgstr "Sposta Sotto" -#: .\cookbook\templates\forms\edit_internal_recipe.html:192 +#: .\cookbook\templates\forms\edit_internal_recipe.html:196 msgid "Step Name" msgstr "Nome dello Step" -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:200 msgid "Step Type" msgstr "Tipo dello Step" -#: .\cookbook\templates\forms\edit_internal_recipe.html:207 +#: .\cookbook\templates\forms\edit_internal_recipe.html:212 msgid "Step time in Minutes" msgstr "Tempo dello step in minuti" -#: .\cookbook\templates\forms\edit_internal_recipe.html:261 -#: .\cookbook\templates\shopping_list.html:183 -msgid "Select Unit" -msgstr "Seleziona unità di misura" +#: .\cookbook\templates\forms\edit_internal_recipe.html:228 +#, fuzzy +#| msgid "Select one" +msgid "Select File" +msgstr "Seleziona un elemento" -#: .\cookbook\templates\forms\edit_internal_recipe.html:262 -#: .\cookbook\templates\forms\edit_internal_recipe.html:286 -#: .\cookbook\templates\shopping_list.html:184 -#: .\cookbook\templates\shopping_list.html:206 -msgid "Create" -msgstr "Crea" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:263 -#: .\cookbook\templates\forms\edit_internal_recipe.html:287 -#: .\cookbook\templates\shopping_list.html:185 -#: .\cookbook\templates\shopping_list.html:207 -#: .\cookbook\templates\shopping_list.html:237 -#: .\cookbook\templates\shopping_list.html:261 -#: .\cookbook\templates\url_import.html:124 -#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\forms\edit_internal_recipe.html:229 +#: .\cookbook\templates\forms\edit_internal_recipe.html:290 +#: .\cookbook\templates\forms\edit_internal_recipe.html:314 +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 msgid "Select" msgstr "Seleziona" -#: .\cookbook\templates\forms\edit_internal_recipe.html:285 -#: .\cookbook\templates\shopping_list.html:205 +#: .\cookbook\templates\forms\edit_internal_recipe.html:288 +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "Seleziona unità di misura" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:289 +#: .\cookbook\templates\forms\edit_internal_recipe.html:313 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "Crea" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:312 +#: .\cookbook\templates\shopping_list.html:209 msgid "Select Food" msgstr "Seleziona alimento" -#: .\cookbook\templates\forms\edit_internal_recipe.html:302 +#: .\cookbook\templates\forms\edit_internal_recipe.html:329 #: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:171 +#: .\cookbook\templates\url_import.html:542 msgid "Note" msgstr "Nota" -#: .\cookbook\templates\forms\edit_internal_recipe.html:319 +#: .\cookbook\templates\forms\edit_internal_recipe.html:346 msgid "Delete Ingredient" msgstr "Elimina Ingredienti" -#: .\cookbook\templates\forms\edit_internal_recipe.html:325 +#: .\cookbook\templates\forms\edit_internal_recipe.html:352 msgid "Make Header" msgstr "Crea Intestazione" -#: .\cookbook\templates\forms\edit_internal_recipe.html:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:358 msgid "Make Ingredient" msgstr "Crea Ingrediente" -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 +#: .\cookbook\templates\forms\edit_internal_recipe.html:364 msgid "Disable Amount" msgstr "Disabilita Quantità" -#: .\cookbook\templates\forms\edit_internal_recipe.html:343 +#: .\cookbook\templates\forms\edit_internal_recipe.html:370 msgid "Enable Amount" msgstr "Abilita Quantità" -#: .\cookbook\templates\forms\edit_internal_recipe.html:348 +#: .\cookbook\templates\forms\edit_internal_recipe.html:375 msgid "Copy Template Reference" msgstr "Copia riferimento template" -#: .\cookbook\templates\forms\edit_internal_recipe.html:374 -#: .\cookbook\templates\url_import.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:401 +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 msgid "Instructions" msgstr "Istruzioni" -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:414 +#: .\cookbook\templates\forms\edit_internal_recipe.html:445 msgid "Save & View" msgstr "Salva & Mostra" -#: .\cookbook\templates\forms\edit_internal_recipe.html:391 -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 +#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:451 msgid "Add Step" msgstr "Aggiungi Step" -#: .\cookbook\templates\forms\edit_internal_recipe.html:394 -#: .\cookbook\templates\forms\edit_internal_recipe.html:428 +#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:455 msgid "Add Nutrition" msgstr "Aggiungi nutrienti" -#: .\cookbook\templates\forms\edit_internal_recipe.html:396 -#: .\cookbook\templates\forms\edit_internal_recipe.html:430 +#: .\cookbook\templates\forms\edit_internal_recipe.html:423 +#: .\cookbook\templates\forms\edit_internal_recipe.html:457 msgid "Remove Nutrition" msgstr "Rimuovi nutrienti" -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -#: .\cookbook\templates\forms\edit_internal_recipe.html:433 +#: .\cookbook\templates\forms\edit_internal_recipe.html:425 +#: .\cookbook\templates\forms\edit_internal_recipe.html:460 msgid "View Recipe" msgstr "Mostra ricetta" -#: .\cookbook\templates\forms\edit_internal_recipe.html:400 -#: .\cookbook\templates\forms\edit_internal_recipe.html:435 +#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\templates\forms\edit_internal_recipe.html:462 msgid "Delete Recipe" msgstr "Elimina Ricetta" -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 +#: .\cookbook\templates\forms\edit_internal_recipe.html:468 msgid "Steps" msgstr "Step" @@ -868,7 +1087,7 @@ msgstr "" "utilizzano." #: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\stats.html:26 +#: .\cookbook\templates\space.html:35 .\cookbook\templates\stats.html:26 msgid "Units" msgstr "Unità di misura" @@ -890,10 +1109,6 @@ msgstr "Sei sicuro di volere unire questi due ingredienti?" msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "Sei sicuro di volere eliminare %(title)s: %(object)s" -#: .\cookbook\templates\generic\delete_template.html:21 -msgid "Confirm" -msgstr "Conferma" - #: .\cookbook\templates\generic\edit_template.html:30 msgid "View" msgstr "Mostra" @@ -915,12 +1130,6 @@ msgstr "Filtro" msgid "Import all" msgstr "Importa tutto" -#: .\cookbook\templates\generic\new_template.html:6 -#: .\cookbook\templates\generic\new_template.html:14 -#: .\cookbook\templates\meal_plan.html:323 -msgid "New" -msgstr "Nuovo" - #: .\cookbook\templates\generic\table_template.html:76 #: .\cookbook\templates\recipes_table.html:121 msgid "previous" @@ -965,7 +1174,7 @@ msgstr "Chiudi" #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:264 .\cookbook\views\new.py:40 +#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "Ricetta" @@ -1004,10 +1213,6 @@ msgstr "Cerca ricetta ..." msgid "New Recipe" msgstr "Nuova Ricetta" -#: .\cookbook\templates\index.html:47 -msgid "Website Import" -msgstr "Importa dal web" - #: .\cookbook\templates\index.html:53 msgid "Advanced Search" msgstr "Ricerca Avanzata" @@ -1021,7 +1226,7 @@ msgid "Last viewed" msgstr "Recenti" #: .\cookbook\templates\index.html:87 .\cookbook\templates\meal_plan.html:178 -#: .\cookbook\templates\stats.html:22 +#: .\cookbook\templates\space.html:29 .\cookbook\templates\stats.html:22 msgid "Recipes" msgstr "Ricette" @@ -1190,7 +1395,7 @@ msgid "New Entry" msgstr "Nuovo Campo" #: .\cookbook\templates\meal_plan.html:113 -#: .\cookbook\templates\shopping_list.html:52 +#: .\cookbook\templates\shopping_list.html:56 msgid "Search Recipe" msgstr "Cerca Ricetta" @@ -1223,7 +1428,7 @@ msgstr "Crea solo una nota" #: .\cookbook\templates\meal_plan.html:168 #: .\cookbook\templates\shopping_list.html:7 #: .\cookbook\templates\shopping_list.html:29 -#: .\cookbook\templates\shopping_list.html:705 +#: .\cookbook\templates\shopping_list.html:714 msgid "Shopping List" msgstr "Lista della spesa" @@ -1275,7 +1480,7 @@ msgstr "Creato da" #: .\cookbook\templates\meal_plan.html:270 #: .\cookbook\templates\meal_plan_entry.html:20 -#: .\cookbook\templates\shopping_list.html:250 +#: .\cookbook\templates\shopping_list.html:254 msgid "Shared with" msgstr "Condiviso con" @@ -1375,7 +1580,6 @@ msgstr "" #: .\cookbook\templates\no_groups_info.html:18 #: .\cookbook\templates\no_perm_info.html:15 -#: .\cookbook\templates\no_space_info.html:15 msgid "Please contact your administrator." msgstr "Contatta il tuo amministratore." @@ -1392,14 +1596,53 @@ msgstr "" "Non hai i permessi necessari per visualizzare questa pagina o completare " "l'operazione!" -#: .\cookbook\templates\no_space_info.html:5 -#: .\cookbook\templates\no_space_info.html:12 +#: .\cookbook\templates\no_space_info.html:6 +#: .\cookbook\templates\no_space_info.html:13 msgid "No Space" msgstr "Nessuno spazio" -#: .\cookbook\templates\no_space_info.html:15 -msgid "You are not a member of any space." -msgstr "Non sei membro di uno spazio." +#: .\cookbook\templates\no_space_info.html:17 +msgid "" +"Recipes, foods, shopping lists and more are organized in spaces of one or " +"more people." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:18 +msgid "" +"You can either be invited into an existing space or create your own one." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:31 +#: .\cookbook\templates\no_space_info.html:40 +#, fuzzy +#| msgid "No Space" +msgid "Join Space" +msgstr "Nessuno spazio" + +#: .\cookbook\templates\no_space_info.html:34 +msgid "Join an existing space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:35 +msgid "" +"To join an existing space either enter your invite token or click on the " +"invite link the space owner send you." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:48 +#: .\cookbook\templates\no_space_info.html:56 +#, fuzzy +#| msgid "Create User" +msgid "Create Space" +msgstr "Crea utente" + +#: .\cookbook\templates\no_space_info.html:51 +msgid "Create your own recipe space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:52 +msgid "Start your own recipe space and invite other users to it." +msgstr "" #: .\cookbook\templates\offline.html:6 msgid "Offline" @@ -1418,28 +1661,29 @@ msgstr "" "offline perché le hai aperte di recente. Ricorda che queste informazioni " "potrebbero non essere aggiornate." -#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\stats.html:47 +#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\space.html:56 +#: .\cookbook\templates\stats.html:47 msgid "Comments" msgstr "Commenti" #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:170 +#: .\cookbook\views\edit.py:179 msgid "Comment" msgstr "Commento" #: .\cookbook\templates\recipes_table.html:19 #: .\cookbook\templates\recipes_table.html:23 -#: .\cookbook\templates\url_import.html:69 +#: .\cookbook\templates\url_import.html:440 msgid "Recipe Image" msgstr "Immagine ricetta" #: .\cookbook\templates\recipes_table.html:51 -#: .\cookbook\templates\url_import.html:74 +#: .\cookbook\templates\url_import.html:445 msgid "Preparation time ca." msgstr "Tempo di preparazione circa" #: .\cookbook\templates\recipes_table.html:57 -#: .\cookbook\templates\url_import.html:79 +#: .\cookbook\templates\url_import.html:450 msgid "Waiting time ca." msgstr "Tempo di cottura circa" @@ -1455,27 +1699,67 @@ msgstr "Registo ricette cucinate" msgid "Recipe Home" msgstr "Pagina iniziale ricette" -#: .\cookbook\templates\settings.html:22 +#: .\cookbook\templates\settings.html:23 msgid "Account" msgstr "Account" -#: .\cookbook\templates\settings.html:38 -msgid "Link social account" +#: .\cookbook\templates\settings.html:27 +msgid "Preferences" +msgstr "" + +#: .\cookbook\templates\settings.html:31 +#, fuzzy +#| msgid "Settings" +msgid "API-Settings" +msgstr "Impostazioni" + +#: .\cookbook\templates\settings.html:39 +#, fuzzy +#| msgid "Settings" +msgid "Name Settings" +msgstr "Impostazioni" + +#: .\cookbook\templates\settings.html:47 +#, fuzzy +#| msgid "Password Reset" +msgid "Password Settings" +msgstr "Recupero password" + +#: .\cookbook\templates\settings.html:55 +#, fuzzy +#| msgid "Settings" +msgid "Email Settings" +msgstr "Impostazioni" + +#: .\cookbook\templates\settings.html:57 +msgid "Manage Email Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:61 +#, fuzzy +#| msgid "Social Login" +msgid "Social" +msgstr "Login con social network" + +#: .\cookbook\templates\settings.html:63 +#, fuzzy +#| msgid "Link social account" +msgid "Manage Social Accounts" msgstr "Collega account social" -#: .\cookbook\templates\settings.html:42 +#: .\cookbook\templates\settings.html:75 msgid "Language" msgstr "Lingua" -#: .\cookbook\templates\settings.html:67 +#: .\cookbook\templates\settings.html:105 msgid "Style" msgstr "Stile" -#: .\cookbook\templates\settings.html:79 +#: .\cookbook\templates\settings.html:125 msgid "API Token" msgstr "Token API" -#: .\cookbook\templates\settings.html:80 +#: .\cookbook\templates\settings.html:126 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." @@ -1483,7 +1767,7 @@ msgstr "" "Per accedere alle API REST puoi usare sia l'autenticazione base sia quella " "tramite token." -#: .\cookbook\templates\settings.html:92 +#: .\cookbook\templates\settings.html:143 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" @@ -1491,7 +1775,7 @@ msgstr "" "Usa il token come header Authorization preceduto dalla parola Token come " "negli esempi seguenti:" -#: .\cookbook\templates\settings.html:94 +#: .\cookbook\templates\settings.html:145 msgid "or" msgstr "o" @@ -1513,58 +1797,55 @@ msgstr "" msgid "Create Superuser account" msgstr "Crea super utente" -#: .\cookbook\templates\shopping_list.html:75 +#: .\cookbook\templates\shopping_list.html:79 msgid "Shopping Recipes" msgstr "Ricette per la spesa" -#: .\cookbook\templates\shopping_list.html:79 +#: .\cookbook\templates\shopping_list.html:83 msgid "No recipes selected" msgstr "Nessuna ricetta selezionata" -#: .\cookbook\templates\shopping_list.html:146 +#: .\cookbook\templates\shopping_list.html:150 msgid "Entry Mode" msgstr "Modalità di inserimento" -#: .\cookbook\templates\shopping_list.html:154 +#: .\cookbook\templates\shopping_list.html:158 msgid "Add Entry" msgstr "Aggiungi voce" -#: .\cookbook\templates\shopping_list.html:170 +#: .\cookbook\templates\shopping_list.html:174 msgid "Amount" msgstr "Quantità" -#: .\cookbook\templates\shopping_list.html:226 +#: .\cookbook\templates\shopping_list.html:230 +#: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "Supermercato" -#: .\cookbook\templates\shopping_list.html:236 +#: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "Seleziona supermercato" -#: .\cookbook\templates\shopping_list.html:260 +#: .\cookbook\templates\shopping_list.html:264 msgid "Select User" msgstr "Seleziona utente" -#: .\cookbook\templates\shopping_list.html:279 +#: .\cookbook\templates\shopping_list.html:283 msgid "Finished" msgstr "Completato" -#: .\cookbook\templates\shopping_list.html:292 +#: .\cookbook\templates\shopping_list.html:296 msgid "You are offline, shopping list might not syncronize." msgstr "Sei offline: la lista della spesa potrebbe non sincronizzarsi." -#: .\cookbook\templates\shopping_list.html:357 +#: .\cookbook\templates\shopping_list.html:361 msgid "Copy/Export" msgstr "Copia/Esporta" -#: .\cookbook\templates\shopping_list.html:361 +#: .\cookbook\templates\shopping_list.html:365 msgid "List Prefix" msgstr "Prefisso lista" -#: .\cookbook\templates\shopping_list.html:708 -msgid "There was an error creating a resource!" -msgstr "Si è verificato un errore durante la creazione di una risorsa!" - #: .\cookbook\templates\socialaccount\connections.html:4 #: .\cookbook\templates\socialaccount\connections.html:7 msgid "Account Connections" @@ -1577,10 +1858,6 @@ msgid "" msgstr "" "Puoi accedere al tuo account usando uno dei seguenti account di terze parti:" -#: .\cookbook\templates\socialaccount\connections.html:36 -msgid "Remove" -msgstr "Rimuovi" - #: .\cookbook\templates\socialaccount\connections.html:44 msgid "" "You currently have no social network accounts connected to this account." @@ -1590,38 +1867,99 @@ msgstr "Non hai account di social network collegati a questo account." msgid "Add a 3rd Party Account" msgstr "Aggiungi un account di terze parti" -#: .\cookbook\templates\stats.html:4 -msgid "Stats" -msgstr "Statistiche" +#: .\cookbook\templates\space.html:18 +#, fuzzy +#| msgid "Description" +msgid "Manage Subscription" +msgstr "Descrizione" -#: .\cookbook\templates\stats.html:19 +#: .\cookbook\templates\space.html:26 .\cookbook\templates\stats.html:19 msgid "Number of objects" msgstr "Numero di oggetti" -#: .\cookbook\templates\stats.html:30 +#: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:30 msgid "Recipe Imports" msgstr "Ricette importate" -#: .\cookbook\templates\stats.html:38 +#: .\cookbook\templates\space.html:47 .\cookbook\templates\stats.html:38 msgid "Objects stats" msgstr "Statistiche degli oggetti" -#: .\cookbook\templates\stats.html:41 +#: .\cookbook\templates\space.html:50 .\cookbook\templates\stats.html:41 msgid "Recipes without Keywords" msgstr "Ricette senza parole chiave" -#: .\cookbook\templates\stats.html:43 +#: .\cookbook\templates\space.html:52 .\cookbook\templates\stats.html:43 msgid "External Recipes" msgstr "Ricette esterne" -#: .\cookbook\templates\stats.html:45 +#: .\cookbook\templates\space.html:54 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "Ricette interne" -#: .\cookbook\templates\system.html:21 .\cookbook\views\lists.py:115 +#: .\cookbook\templates\space.html:67 +msgid "Members" +msgstr "" + +#: .\cookbook\templates\space.html:71 +#, fuzzy +#| msgid "Invite Links" +msgid "Invite User" +msgstr "Link di invito" + +#: .\cookbook\templates\space.html:82 +msgid "User" +msgstr "" + +#: .\cookbook\templates\space.html:83 +msgid "Groups" +msgstr "" + +#: .\cookbook\templates\space.html:99 +#, fuzzy +#| msgid "Admin" +msgid "admin" +msgstr "Amministratore" + +#: .\cookbook\templates\space.html:100 +msgid "user" +msgstr "" + +#: .\cookbook\templates\space.html:101 +msgid "guest" +msgstr "" + +#: .\cookbook\templates\space.html:102 +#, fuzzy +#| msgid "Remove" +msgid "remove" +msgstr "Rimuovi" + +#: .\cookbook\templates\space.html:106 +msgid "Update" +msgstr "" + +#: .\cookbook\templates\space.html:110 +#, fuzzy +#| msgid "You cannot edit this storage!" +msgid "You cannot edit yourself." +msgstr "Non puoi modificare questo backend!" + +#: .\cookbook\templates\space.html:117 +#, fuzzy +#| msgid "There are no recipes in this book yet." +msgid "There are no members in your space yet!" +msgstr "Non ci sono ancora ricette in questo libro." + +#: .\cookbook\templates\space.html:124 .\cookbook\templates\system.html:21 +#: .\cookbook\views\lists.py:115 msgid "Invite Links" msgstr "Link di invito" +#: .\cookbook\templates\stats.html:4 +msgid "Stats" +msgstr "Statistiche" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "Mostra link" @@ -1743,45 +2081,157 @@ msgstr "" "raccomandato perché alcune\n" "funzionalità sono disponibili solo con un database Posgres." -#: .\cookbook\templates\url_import.html:5 +#: .\cookbook\templates\url_import.html:6 msgid "URL Import" msgstr "Importa da URL" -#: .\cookbook\templates\url_import.html:23 +#: .\cookbook\templates\url_import.html:31 +msgid "Drag me to your bookmarks to import recipes from anywhere" +msgstr "" + +#: .\cookbook\templates\url_import.html:32 +#, fuzzy +#| msgid "Bookmark saved!" +msgid "Bookmark Me!" +msgstr "Preferito salvato!" + +#: .\cookbook\templates\url_import.html:61 msgid "Enter website URL" msgstr "Inserisci l'indirizzo del sito web" -#: .\cookbook\templates\url_import.html:36 -msgid "Enter json directly" -msgstr "Inserisci direttamente il json" +#: .\cookbook\templates\url_import.html:97 +msgid "Select recipe files to import or drop them here..." +msgstr "" -#: .\cookbook\templates\url_import.html:57 +#: .\cookbook\templates\url_import.html:118 +msgid "Paste json or html source here to load recipe." +msgstr "" + +#: .\cookbook\templates\url_import.html:146 +#, fuzzy +#| msgid "View Recipe" +msgid "Preview Recipe Data" +msgstr "Mostra ricetta" + +#: .\cookbook\templates\url_import.html:147 +msgid "Drag recipe attributes from the right into the appropriate box below." +msgstr "" + +#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\url_import.html:173 +#: .\cookbook\templates\url_import.html:190 +#: .\cookbook\templates\url_import.html:209 +#: .\cookbook\templates\url_import.html:227 +#: .\cookbook\templates\url_import.html:242 +#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:273 +#: .\cookbook\templates\url_import.html:300 +#: .\cookbook\templates\url_import.html:351 +msgid "Clear Contents" +msgstr "" + +#: .\cookbook\templates\url_import.html:158 +msgid "Text dragged here will be appended to the name." +msgstr "" + +#: .\cookbook\templates\url_import.html:175 +msgid "Text dragged here will be appended to the description." +msgstr "" + +#: .\cookbook\templates\url_import.html:192 +msgid "Keywords dragged here will be appended to current list" +msgstr "" + +#: .\cookbook\templates\url_import.html:207 +msgid "Image" +msgstr "" + +#: .\cookbook\templates\url_import.html:239 +#, fuzzy +#| msgid "Preparation Time" +msgid "Prep Time" +msgstr "Tempo di preparazione" + +#: .\cookbook\templates\url_import.html:254 +#, fuzzy +#| msgid "Time" +msgid "Cook Time" +msgstr "Tempo" + +#: .\cookbook\templates\url_import.html:275 +msgid "Ingredients dragged here will be appended to current list." +msgstr "" + +#: .\cookbook\templates\url_import.html:302 +msgid "" +"Recipe instructions dragged here will be appended to current instructions." +msgstr "" + +#: .\cookbook\templates\url_import.html:325 +#, fuzzy +#| msgid "Discovered Recipes" +msgid "Discovered Attributes" +msgstr "Ricette trovate" + +#: .\cookbook\templates\url_import.html:327 +msgid "" +"Drag recipe attributes from below into the appropriate box on the left. " +"Click any node to display its full properties." +msgstr "" + +#: .\cookbook\templates\url_import.html:344 +#, fuzzy +#| msgid "Show as header" +msgid "Show Blank Field" +msgstr "Mostra come intestazione" + +#: .\cookbook\templates\url_import.html:349 +msgid "Blank Field" +msgstr "" + +#: .\cookbook\templates\url_import.html:353 +msgid "Items dragged to Blank Field will be appended." +msgstr "" + +#: .\cookbook\templates\url_import.html:400 +#, fuzzy +#| msgid "Delete Step" +msgid "Delete Text" +msgstr "Elimina Step" + +#: .\cookbook\templates\url_import.html:413 +#, fuzzy +#| msgid "Delete Recipe" +msgid "Delete image" +msgstr "Elimina Ricetta" + +#: .\cookbook\templates\url_import.html:429 msgid "Recipe Name" msgstr "Nome Ricetta" -#: .\cookbook\templates\url_import.html:62 +#: .\cookbook\templates\url_import.html:433 msgid "Recipe Description" msgstr "Descrizione ricetta" -#: .\cookbook\templates\url_import.html:123 -#: .\cookbook\templates\url_import.html:155 -#: .\cookbook\templates\url_import.html:211 +#: .\cookbook\templates\url_import.html:494 +#: .\cookbook\templates\url_import.html:526 +#: .\cookbook\templates\url_import.html:582 msgid "Select one" msgstr "Seleziona un elemento" -#: .\cookbook\templates\url_import.html:225 +#: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "Tutte le parole chiave" -#: .\cookbook\templates\url_import.html:228 +#: .\cookbook\templates\url_import.html:599 msgid "Import all keywords, not only the ones already existing." msgstr "Importa tutte le parole chiave, non solo quelle che già esistono." -#: .\cookbook\templates\url_import.html:255 +#: .\cookbook\templates\url_import.html:626 msgid "Information" msgstr "Info" -#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:628 msgid "" " Only websites containing ld+json or microdata information can currently\n" " be imported. Most big recipe pages " @@ -1797,49 +2247,79 @@ msgstr "" "Se questo sito non può essere importato ma credi che abbia una qualche tipo " "di struttura dati, puoi inviare un esempio nella sezione Issues su GitHub." -#: .\cookbook\templates\url_import.html:265 +#: .\cookbook\templates\url_import.html:636 msgid "Google ld+json Info" msgstr "Info Google Id+json" -#: .\cookbook\templates\url_import.html:268 +#: .\cookbook\templates\url_import.html:639 msgid "GitHub Issues" msgstr "Issues (Problemi aperti) su GitHub" -#: .\cookbook\templates\url_import.html:270 +#: .\cookbook\templates\url_import.html:641 msgid "Recipe Markup Specification" msgstr "Specifica di Markup della ricetta" -#: .\cookbook\views\api.py:71 +#: .\cookbook\views\api.py:77 msgid "Parameter updated_at incorrectly formatted" msgstr "Il parametro updated_at non è formattato correttamente" -#: .\cookbook\views\api.py:455 .\cookbook\views\views.py:226 +#: .\cookbook\views\api.py:553 .\cookbook\views\views.py:295 msgid "This feature is not available in the demo version!" msgstr "Questa funzione non è disponibile nella versione demo!" -#: .\cookbook\views\api.py:478 +#: .\cookbook\views\api.py:576 msgid "Sync successful!" msgstr "Sincronizzazione completata con successo!" -#: .\cookbook\views\api.py:483 +#: .\cookbook\views\api.py:581 msgid "Error synchronizing with Storage" msgstr "Errore di sincronizzazione con questo backend" -#: .\cookbook\views\api.py:556 .\cookbook\views\api.py:576 +#: .\cookbook\views\api.py:649 +msgid "Nothing to do." +msgstr "" + +#: .\cookbook\views\api.py:664 +msgid "The requested site provided malformed data and cannot be read." +msgstr "" +"Il sito richiesto ha fornito dati in formato non corretto e non può essere " +"letto." + +#: .\cookbook\views\api.py:671 msgid "The requested page could not be found." msgstr "La pagina richiesta non è stata trovata." -#: .\cookbook\views\api.py:585 +#: .\cookbook\views\api.py:680 msgid "" -"The requested page refused to provide any information (Status Code 403)." +"The requested site does not provide any recognized data format to import the " +"recipe from." msgstr "" -"La pagina richiesta si è rifiutata di fornire informazioni (Errore 403)." +"Il sito richiesto non fornisce un formato di dati riconosciuto da cui " +"importare la ricetta." -#: .\cookbook\views\api.py:611 -msgid "Could not parse correctly..." -msgstr "Impossibile elaborare correttamente..." +#: .\cookbook\views\api.py:694 +#, fuzzy +#| msgid "The requested page could not be found." +msgid "No useable data could be found." +msgstr "La pagina richiesta non è stata trovata." -#: .\cookbook\views\data.py:94 +#: .\cookbook\views\api.py:710 +msgid "I couldn't find anything to do." +msgstr "" + +#: .\cookbook\views\data.py:30 .\cookbook\views\data.py:121 +#: .\cookbook\views\edit.py:50 .\cookbook\views\import_export.py:67 +#: .\cookbook\views\new.py:32 +msgid "You have reached the maximum number of recipes for your space." +msgstr "" + +#: .\cookbook\views\data.py:34 .\cookbook\views\data.py:125 +#: .\cookbook\views\edit.py:54 .\cookbook\views\import_export.py:71 +#: .\cookbook\views\new.py:36 +msgid "You have more users than allowed in your space." +msgstr "" + +#: .\cookbook\views\data.py:103 #, python-format msgid "Batch edit done. %(count)d recipe was updated." msgid_plural "Batch edit done. %(count)d Recipes where updated." @@ -1852,7 +2332,7 @@ msgid "Monitor" msgstr "Monitoraggio" #: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:86 +#: .\cookbook\views\new.py:98 msgid "Storage Backend" msgstr "Backend di archiviazione" @@ -1863,8 +2343,8 @@ msgstr "" "Non è possibile eliminare questo backend di archiviazione perchè è usato in " "almeno un monitoraggio." -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:204 -#: .\cookbook\views\new.py:144 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 +#: .\cookbook\views\new.py:156 msgid "Recipe Book" msgstr "Libro delle ricette" @@ -1872,57 +2352,57 @@ msgstr "Libro delle ricette" msgid "Bookmarks" msgstr "Preferiti" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:214 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 msgid "Invite Link" msgstr "Link di invito" -#: .\cookbook\views\edit.py:110 +#: .\cookbook\views\edit.py:119 msgid "Food" msgstr "Alimento" -#: .\cookbook\views\edit.py:119 +#: .\cookbook\views\edit.py:128 msgid "You cannot edit this storage!" msgstr "Non puoi modificare questo backend!" -#: .\cookbook\views\edit.py:139 +#: .\cookbook\views\edit.py:148 msgid "Storage saved!" msgstr "Backend salvato!" -#: .\cookbook\views\edit.py:145 +#: .\cookbook\views\edit.py:154 msgid "There was an error updating this storage backend!" msgstr "" "Si è verificato un errore durante l'aggiornamento di questo backend di " "archiviazione!" -#: .\cookbook\views\edit.py:156 +#: .\cookbook\views\edit.py:165 msgid "Storage" msgstr "Archiviazione" -#: .\cookbook\views\edit.py:252 +#: .\cookbook\views\edit.py:261 msgid "Changes saved!" msgstr "Modifiche salvate!" -#: .\cookbook\views\edit.py:256 +#: .\cookbook\views\edit.py:265 msgid "Error saving changes!" msgstr "Si è verificato un errore durante il salvataggio delle modifiche!" -#: .\cookbook\views\edit.py:289 +#: .\cookbook\views\edit.py:299 msgid "Units merged!" msgstr "Le unità sono state unite!" -#: .\cookbook\views\edit.py:291 .\cookbook\views\edit.py:307 +#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 msgid "Cannot merge with the same object!" msgstr "Non è possibile unirlo con lo stesso oggetto!" -#: .\cookbook\views\edit.py:305 +#: .\cookbook\views\edit.py:315 msgid "Foods merged!" msgstr "Gli alimenti sono stati uniti!" -#: .\cookbook\views\import_export.py:73 +#: .\cookbook\views\import_export.py:93 msgid "Importing is not implemented for this provider" msgstr "Questo provider non permette l'importazione" -#: .\cookbook\views\import_export.py:92 +#: .\cookbook\views\import_export.py:115 msgid "Exporting is not implemented for this provider" msgstr "Questo provider non permette l'esportazione" @@ -1938,23 +2418,77 @@ msgstr "Trovate" msgid "Shopping Lists" msgstr "Liste della spesa" -#: .\cookbook\views\new.py:111 +#: .\cookbook\views\new.py:123 msgid "Imported new recipe!" msgstr "La nuova ricetta è stata importata!" -#: .\cookbook\views\new.py:114 +#: .\cookbook\views\new.py:126 msgid "There was an error importing this recipe!" msgstr "Si è verificato un errore durante l'importazione di questa ricetta!" -#: .\cookbook\views\views.py:123 +#: .\cookbook\views\new.py:226 +msgid "Hello" +msgstr "" + +#: .\cookbook\views\new.py:226 +msgid "You have been invited by " +msgstr "" + +#: .\cookbook\views\new.py:227 +msgid " to join their Tandoor Recipes space " +msgstr "" + +#: .\cookbook\views\new.py:228 +msgid "Click the following link to activate your account: " +msgstr "" + +#: .\cookbook\views\new.py:229 +msgid "" +"If the link does not work use the following code to manually join the space: " +msgstr "" + +#: .\cookbook\views\new.py:230 +msgid "The invitation is valid until " +msgstr "" + +#: .\cookbook\views\new.py:231 +msgid "" +"Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " +msgstr "" + +#: .\cookbook\views\new.py:234 +msgid "Tandoor Recipes Invite" +msgstr "" + +#: .\cookbook\views\new.py:241 +msgid "Invite link successfully send to user." +msgstr "" + +#: .\cookbook\views\new.py:244 +msgid "" +"You have send to many emails, please share the link manually or wait a few " +"hours." +msgstr "" + +#: .\cookbook\views\new.py:246 +msgid "Email to user could not be send, please share link manually." +msgstr "" + +#: .\cookbook\views\views.py:125 +msgid "" +"You have successfully created your own recipe space. Start by adding some " +"recipes or invite other people to join you." +msgstr "" + +#: .\cookbook\views\views.py:173 msgid "You do not have the required permissions to perform this action!" msgstr "Non hai i permessi necessari per completare questa operazione!" -#: .\cookbook\views\views.py:134 +#: .\cookbook\views\views.py:184 msgid "Comment saved!" msgstr "Commento salvato!" -#: .\cookbook\views\views.py:326 +#: .\cookbook\views\views.py:396 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -1964,22 +2498,67 @@ msgstr "" "utente! Se hai dimenticato le credenziali del tuo super utente controlla la " "documentazione di Django per resettare le password. " -#: .\cookbook\views\views.py:333 .\cookbook\views\views.py:378 +#: .\cookbook\views\views.py:403 msgid "Passwords dont match!" msgstr "Le password non combaciano!" -#: .\cookbook\views\views.py:349 .\cookbook\views\views.py:385 +#: .\cookbook\views\views.py:419 msgid "User has been created, please login!" msgstr "L'utente è stato creato e ora può essere usato per il login!" -#: .\cookbook\views\views.py:365 +#: .\cookbook\views\views.py:435 msgid "Malformed Invite Link supplied!" msgstr "È stato fornito un link di invito non valido!" -#: .\cookbook\views\views.py:405 +#: .\cookbook\views\views.py:441 +#, fuzzy +#| msgid "You are not logged in and therefore cannot view this page!" +msgid "You are already member of a space and therefore cannot join this one." +msgstr "Non hai fatto l'accesso e quindi non puoi visualizzare questa pagina!" + +#: .\cookbook\views\views.py:452 +msgid "Successfully joined space." +msgstr "" + +#: .\cookbook\views\views.py:458 msgid "Invite Link not valid or already used!" msgstr "Il link di invito non è valido o è stato già usato!" +#~ msgid "" +#~ "A username is not required, if left blank the new user can choose one." +#~ msgstr "" +#~ "Non è richiesto un nome utente, se lasciato vuoto il nuovo utente ne può " +#~ "sceglierne uno." + +#~ msgid "Imported from" +#~ msgstr "Importato da" + +#~ msgid "Link" +#~ msgstr "Link" + +#~ msgid "Logout" +#~ msgstr "Logout" + +#~ msgid "Website Import" +#~ msgstr "Importa dal web" + +#~ msgid "You are not a member of any space." +#~ msgstr "Non sei membro di uno spazio." + +#~ msgid "There was an error creating a resource!" +#~ msgstr "Si è verificato un errore durante la creazione di una risorsa!" + +#~ msgid "Enter json directly" +#~ msgstr "Inserisci direttamente il json" + +#~ msgid "" +#~ "The requested page refused to provide any information (Status Code 403)." +#~ msgstr "" +#~ "La pagina richiesta si è rifiutata di fornire informazioni (Errore 403)." + +#~ msgid "Could not parse correctly..." +#~ msgstr "Impossibile elaborare correttamente..." + #~ msgid "Number of servings" #~ msgstr "Porzioni" @@ -2001,6 +2580,3 @@ msgstr "Il link di invito non è valido o è stato già usato!" #~ msgid "This recipe is already linked to the book!" #~ msgstr "Questa ricetta è già collegata al libro!" - -#~ msgid "Bookmark saved!" -#~ msgstr "Preferito salvato!" diff --git a/cookbook/locale/lv/LC_MESSAGES/django.po b/cookbook/locale/lv/LC_MESSAGES/django.po index dcc44959e..561861e27 100644 --- a/cookbook/locale/lv/LC_MESSAGES/django.po +++ b/cookbook/locale/lv/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: 2020-06-02 19:28+0000\n" "Last-Translator: vabene1111 , 2021\n" "Language-Team: Latvian (https://www.transifex.com/django-recipes/" @@ -23,14 +23,15 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " "2);\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:91 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 +#: .\cookbook\templates\forms\edit_internal_recipe.html:246 #: .\cookbook\templates\forms\ingredients.html:34 -#: .\cookbook\templates\stats.html:28 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\space.html:37 .\cookbook\templates\stats.html:28 +#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 msgid "Ingredients" msgstr "Sastāvdaļas" -#: .\cookbook\forms.py:45 +#: .\cookbook\forms.py:49 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" @@ -38,11 +39,11 @@ msgstr "" "Augšējās navigācijas joslas krāsa. Ne visas krāsas darbojas ar visām tēmām, " "vienkārši izmēģiniet tās!" -#: .\cookbook\forms.py:46 +#: .\cookbook\forms.py:51 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "Noklusējuma vienība, ko izmantot, ievietojot receptē jaunu sastāvdaļu." -#: .\cookbook\forms.py:47 +#: .\cookbook\forms.py:53 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" @@ -50,7 +51,7 @@ msgstr "" "Iespējot daļskaitļus sastāvdaļu daudzumos (piemēram, decimāldaļas " "automātiski pārveidot par daļskaitļiem)" -#: .\cookbook\forms.py:48 +#: .\cookbook\forms.py:56 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." @@ -58,20 +59,20 @@ msgstr "" "Lietotāji, ar kuriem jaunizveidotie maltīšu saraksti/iepirkumu saraksti tiks " "kopīgoti pēc noklusējuma." -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:58 msgid "Show recently viewed recipes on search page." msgstr "Parādīt nesen skatītās receptes meklēšanas lapā." -#: .\cookbook\forms.py:50 +#: .\cookbook\forms.py:59 msgid "Number of decimals to round ingredients." msgstr "Ciparu skaits pēc komata decimāldaļām sastāvdaļās." -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:60 msgid "If you want to be able to create and see comments underneath recipes." msgstr "" "Ja vēlaties, lai jūs varētu izveidot un redzēt komentārus zem receptēm." -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:62 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -85,11 +86,11 @@ msgstr "" "Ja tas ir zemāks par instances ierobežojumu, tas tiek atiestatīts, " "saglabājot." -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:65 msgid "Makes the navbar stick to the top of the page." msgstr "" -#: .\cookbook\forms.py:72 +#: .\cookbook\forms.py:81 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" @@ -97,89 +98,92 @@ msgstr "" "Abi lauki nav obligāti. Ja neviens nav norādīts, tā vietā tiks parādīts " "lietotājvārds" -#: .\cookbook\forms.py:93 .\cookbook\forms.py:315 -#: .\cookbook\templates\forms\edit_internal_recipe.html:45 +#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "Vārds" -#: .\cookbook\forms.py:94 .\cookbook\forms.py:316 -#: .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:81 -#: .\cookbook\templates\stats.html:24 .\cookbook\templates\url_import.html:202 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 +#: .\cookbook\templates\base.html:105 +#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\templates\space.html:33 .\cookbook\templates\stats.html:24 +#: .\cookbook\templates\url_import.html:188 +#: .\cookbook\templates\url_import.html:573 msgid "Keywords" msgstr "Atslēgvārdi" -#: .\cookbook\forms.py:95 +#: .\cookbook\forms.py:104 msgid "Preparation time in minutes" msgstr "Pagatavošanas laiks minūtēs" -#: .\cookbook\forms.py:96 +#: .\cookbook\forms.py:105 msgid "Waiting time (cooking/baking) in minutes" msgstr "Gaidīšanas laiks (vārīšana / cepšana) minūtēs" -#: .\cookbook\forms.py:97 .\cookbook\forms.py:317 +#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 msgid "Path" msgstr "Ceļš" -#: .\cookbook\forms.py:98 +#: .\cookbook\forms.py:107 msgid "Storage UID" msgstr "Krātuves UID" -#: .\cookbook\forms.py:121 +#: .\cookbook\forms.py:133 msgid "Default" msgstr "" -#: .\cookbook\forms.py:130 +#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:149 +#: .\cookbook\forms.py:164 msgid "New Unit" msgstr "Jaunā vienība" -#: .\cookbook\forms.py:150 +#: .\cookbook\forms.py:165 msgid "New unit that other gets replaced by." msgstr "Jauna vienība, ar kuru cits tiek aizstāts." -#: .\cookbook\forms.py:155 +#: .\cookbook\forms.py:170 msgid "Old Unit" msgstr "Vecā vienība" -#: .\cookbook\forms.py:156 +#: .\cookbook\forms.py:171 msgid "Unit that should be replaced." msgstr "Vienība, kas jāaizstāj." -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:187 msgid "New Food" msgstr "Jauns ēdiens" -#: .\cookbook\forms.py:173 +#: .\cookbook\forms.py:188 msgid "New food that other gets replaced by." msgstr "Jauns ēdiens, ar kuru citi tiek aizstāti." -#: .\cookbook\forms.py:178 +#: .\cookbook\forms.py:193 msgid "Old Food" msgstr "Vecais ēdiens" -#: .\cookbook\forms.py:179 +#: .\cookbook\forms.py:194 msgid "Food that should be replaced." msgstr "Ēdiens, kas būtu jāaizstāj." -#: .\cookbook\forms.py:197 +#: .\cookbook\forms.py:212 msgid "Add your comment: " msgstr "Pievienot komentāru: " -#: .\cookbook\forms.py:238 +#: .\cookbook\forms.py:253 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "Atstājiet tukšu Dropbox un ievadiet lietotnes paroli Nextcloud." -#: .\cookbook\forms.py:245 +#: .\cookbook\forms.py:260 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "Atstājiet tukšu Nextcloud un ievadiet API tokenu Dropbox." -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:269 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -187,26 +191,26 @@ msgstr "" "Atstājiet tukšu Dropbox un ievadiet tikai Nextcloud bāzes URL ( /" "remote.php/webdav/ tiek pievienots automātiski)" -#: .\cookbook\forms.py:291 +#: .\cookbook\forms.py:307 msgid "Search String" msgstr "Meklēšanas virkne" -#: .\cookbook\forms.py:318 +#: .\cookbook\forms.py:334 msgid "File ID" msgstr "Faila ID" -#: .\cookbook\forms.py:354 +#: .\cookbook\forms.py:370 msgid "You must provide at least a recipe or a title." msgstr "Jums jānorāda vismaz recepte vai nosaukums." -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:383 msgid "You can list default users to share recipes with in the settings." msgstr "" "Iestatījumos varat uzskaitīt noklusējuma lietotājus, ar kuriem koplietot " "receptes." -#: .\cookbook\forms.py:368 -#: .\cookbook\templates\forms\edit_internal_recipe.html:377 +#: .\cookbook\forms.py:384 +#: .\cookbook\templates\forms\edit_internal_recipe.html:404 msgid "" "You can use markdown to format this field. See the docs here" @@ -214,50 +218,57 @@ msgstr "" "Lai formatētu šo lauku, varat izmantot Markdown. Skatiet dokumentus šeit " -#: .\cookbook\forms.py:393 -msgid "A username is not required, if left blank the new user can choose one." +#: .\cookbook\forms.py:409 +msgid "Maximum number of users for this space reached." msgstr "" -"Lietotājvārds nav nepieciešams. Ja tas tiks atstāts tukšs, lietotājs to " -"varēs izvēlēties pats." -#: .\cookbook\helper\permission_helper.py:123 -#: .\cookbook\helper\permission_helper.py:129 -#: .\cookbook\helper\permission_helper.py:151 -#: .\cookbook\helper\permission_helper.py:196 -#: .\cookbook\helper\permission_helper.py:210 -#: .\cookbook\helper\permission_helper.py:221 -#: .\cookbook\helper\permission_helper.py:232 .\cookbook\views\data.py:30 -#: .\cookbook\views\views.py:112 .\cookbook\views\views.py:116 -#: .\cookbook\views\views.py:184 -msgid "You do not have the required permissions to view this page!" -msgstr "Jums nav nepieciešamo atļauju, lai apskatītu šo lapu!" +#: .\cookbook\forms.py:415 +msgid "Email address already taken!" +msgstr "" -#: .\cookbook\helper\permission_helper.py:141 +#: .\cookbook\forms.py:423 +msgid "" +"An email address is not required but if present the invite link will be send " +"to the user." +msgstr "" + +#: .\cookbook\forms.py:438 +msgid "Name already taken." +msgstr "" + +#: .\cookbook\forms.py:449 +msgid "Accept Terms and Privacy" +msgstr "" + +#: .\cookbook\helper\AllAuthCustomAdapter.py:30 +msgid "" +"In order to prevent spam, the requested email was not send. Please wait a " +"few minutes and try again." +msgstr "" + +#: .\cookbook\helper\permission_helper.py:124 +#: .\cookbook\helper\permission_helper.py:144 .\cookbook\views\views.py:147 msgid "You are not logged in and therefore cannot view this page!" msgstr "Jūs neesat pieteicies un tāpēc nevarat skatīt šo lapu!" -#: .\cookbook\helper\permission_helper.py:145 -#: .\cookbook\helper\permission_helper.py:167 -#: .\cookbook\helper\permission_helper.py:182 +#: .\cookbook\helper\permission_helper.py:127 +#: .\cookbook\helper\permission_helper.py:132 +#: .\cookbook\helper\permission_helper.py:154 +#: .\cookbook\helper\permission_helper.py:199 +#: .\cookbook\helper\permission_helper.py:213 +#: .\cookbook\helper\permission_helper.py:224 +#: .\cookbook\helper\permission_helper.py:235 .\cookbook\views\data.py:39 +#: .\cookbook\views\views.py:158 .\cookbook\views\views.py:165 +#: .\cookbook\views\views.py:253 +msgid "You do not have the required permissions to view this page!" +msgstr "Jums nav nepieciešamo atļauju, lai apskatītu šo lapu!" + +#: .\cookbook\helper\permission_helper.py:148 +#: .\cookbook\helper\permission_helper.py:170 +#: .\cookbook\helper\permission_helper.py:185 msgid "You cannot interact with this object as it is not owned by you!" msgstr "Jūs nevarat mainīt šo objektu, jo tas nepieder jums!" -#: .\cookbook\helper\recipe_url_import.py:40 .\cookbook\views\api.py:549 -msgid "The requested site provided malformed data and cannot be read." -msgstr "Pieprasītā vietne sniedza nepareizus datus, kurus nevar nolasīt." - -#: .\cookbook\helper\recipe_url_import.py:54 -msgid "" -"The requested site does not provide any recognized data format to import the " -"recipe from." -msgstr "" -"Pieprasītajā vietnē nav norādīts atzīts datu formāts, no kura varētu " -"importēt recepti." - -#: .\cookbook\helper\recipe_url_import.py:160 -msgid "Imported from" -msgstr "Importēts no" - #: .\cookbook\helper\template_helper.py:60 #: .\cookbook\helper\template_helper.py:62 msgid "Could not parse template code." @@ -267,47 +278,58 @@ msgstr "" #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 -#: .\cookbook\templates\url_import.html:233 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:190 +#: .\cookbook\templates\url_import.html:27 +#: .\cookbook\templates\url_import.html:101 +#: .\cookbook\templates\url_import.html:123 +#: .\cookbook\templates\url_import.html:317 +#: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 +#: .\cookbook\views\edit.py:199 msgid "Import" msgstr "Importēt" -#: .\cookbook\integration\integration.py:131 +#: .\cookbook\integration\integration.py:162 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:134 +#: .\cookbook\integration\integration.py:165 +msgid "" +"An unexpected error occurred during the import. Please make sure you have " +"uploaded a valid file." +msgstr "" + +#: .\cookbook\integration\integration.py:169 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:137 +#: .\cookbook\integration\integration.py:173 #, fuzzy, python-format #| msgid "Imported new recipe!" msgid "Imported %s recipes." msgstr "Importēta jauna recepte!" -#: .\cookbook\integration\paprika.py:44 +#: .\cookbook\integration\paprika.py:46 #, fuzzy #| msgid "Note" msgid "Notes" msgstr "Piezīme" -#: .\cookbook\integration\paprika.py:47 +#: .\cookbook\integration\paprika.py:49 #, fuzzy #| msgid "Information" msgid "Nutritional Information" msgstr "Informācija" -#: .\cookbook\integration\paprika.py:50 +#: .\cookbook\integration\paprika.py:53 msgid "Source" msgstr "" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:75 +#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 -#: .\cookbook\templates\url_import.html:84 +#: .\cookbook\templates\url_import.html:224 +#: .\cookbook\templates\url_import.html:455 msgid "Servings" msgstr "Porciju skaits" @@ -316,11 +338,11 @@ msgid "Waiting time" msgstr "" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:69 +#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "Pagatavošanas laiks" -#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:71 +#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:78 #: .\cookbook\templates\forms\ingredients.html:7 #: .\cookbook\templates\index.html:7 msgid "Cookbook" @@ -346,44 +368,74 @@ msgstr "Vakariņas" msgid "Other" msgstr "Cits" -#: .\cookbook\models.py:110 .\cookbook\templates\shopping_list.html:48 +#: .\cookbook\models.py:71 +msgid "" +"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " +"upload." +msgstr "" + +#: .\cookbook\models.py:121 .\cookbook\templates\search.html:7 +#: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "Meklēt" -#: .\cookbook\models.py:111 .\cookbook\templates\base.html:85 +#: .\cookbook\models.py:122 .\cookbook\templates\base.html:92 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:224 .\cookbook\views\new.py:188 +#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 msgid "Meal-Plan" msgstr "Maltīšu plāns" -#: .\cookbook\models.py:112 .\cookbook\templates\base.html:82 +#: .\cookbook\models.py:123 .\cookbook\templates\base.html:89 msgid "Books" msgstr "Grāmatas" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Small" msgstr "Mazs" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Large" msgstr "Liels" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:198 +#: .\cookbook\models.py:131 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\templates\generic\new_template.html:14 +#: .\cookbook\templates\meal_plan.html:323 +msgid "New" +msgstr "Jauns" + +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:202 msgid "Text" msgstr "Teskts" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:199 +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:203 msgid "Time" msgstr "Laiks" +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:204 +#: .\cookbook\templates\forms\edit_internal_recipe.html:218 +#, fuzzy +#| msgid "File ID" +msgid "File" +msgstr "Faila ID" + +#: .\cookbook\serializer.py:109 +msgid "File uploads are not enabled for this Space." +msgstr "" + +#: .\cookbook\serializer.py:117 +msgid "You have reached your file upload limit." +msgstr "" + #: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 #: .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 #: .\cookbook\templates\shopping_list.html:33 +#: .\cookbook\templates\space.html:84 msgid "Edit" msgstr "Rediģēt" @@ -397,10 +449,6 @@ msgstr "Rediģēt" msgid "Delete" msgstr "Izdzēst" -#: .\cookbook\tables.py:144 -msgid "Link" -msgstr "Saite" - #: .\cookbook\templates\404.html:5 msgid "404 Error" msgstr "Kļūda 404" @@ -417,21 +465,124 @@ msgstr "Doties uz Sākumu" msgid "Report a Bug" msgstr "Ziņot par kļūdu" -#: .\cookbook\templates\account\login.html:7 -#: .\cookbook\templates\base.html:170 +#: .\cookbook\templates\account\email.html:6 +#: .\cookbook\templates\account\email.html:9 +msgid "E-mail Addresses" +msgstr "" + +#: .\cookbook\templates\account\email.html:11 +msgid "The following e-mail addresses are associated with your account:" +msgstr "" + +#: .\cookbook\templates\account\email.html:28 +msgid "Verified" +msgstr "" + +#: .\cookbook\templates\account\email.html:30 +msgid "Unverified" +msgstr "" + +#: .\cookbook\templates\account\email.html:32 +msgid "Primary" +msgstr "" + +#: .\cookbook\templates\account\email.html:39 +#, fuzzy +#| msgid "Make Header" +msgid "Make Primary" +msgstr "Izveidot galveni" + +#: .\cookbook\templates\account\email.html:41 +msgid "Re-send Verification" +msgstr "" + +#: .\cookbook\templates\account\email.html:42 +#: .\cookbook\templates\socialaccount\connections.html:36 +msgid "Remove" +msgstr "" + +#: .\cookbook\templates\account\email.html:50 +#, fuzzy +#| msgid "Warning" +msgid "Warning:" +msgstr "Brīdinājums" + +#: .\cookbook\templates\account\email.html:50 +msgid "" +"You currently do not have any e-mail address set up. You should really add " +"an e-mail address so you can receive notifications, reset your password, etc." +msgstr "" + +#: .\cookbook\templates\account\email.html:56 +msgid "Add E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email.html:61 +msgid "Add E-mail" +msgstr "" + +#: .\cookbook\templates\account\email.html:71 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:6 +#: .\cookbook\templates\account\email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that\n" +" %(email)s is an e-mail address " +"for user %(user_display)s\n" +" ." +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:22 +#: .\cookbook\templates\generic\delete_template.html:21 +msgid "Confirm" +msgstr "Apstiprināt" + +#: .\cookbook\templates\account\email_confirm.html:29 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please\n" +" issue a new e-mail confirmation " +"request." +msgstr "" + +#: .\cookbook\templates\account\login.html:8 +#: .\cookbook\templates\base.html:180 msgid "Login" msgstr "Pieslēgties" -#: .\cookbook\templates\account\login.html:13 -#: .\cookbook\templates\account\login.html:28 +#: .\cookbook\templates\account\login.html:15 +#: .\cookbook\templates\account\login.html:31 +#: .\cookbook\templates\account\signup.html:69 +#: .\cookbook\templates\account\signup_closed.html:15 msgid "Sign In" msgstr "" -#: .\cookbook\templates\account\login.html:38 +#: .\cookbook\templates\account\login.html:32 +msgid "Sign Up" +msgstr "" + +#: .\cookbook\templates\account\login.html:36 +#: .\cookbook\templates\account\login.html:37 +#: .\cookbook\templates\account\password_reset.html:29 +msgid "Reset My Password" +msgstr "" + +#: .\cookbook\templates\account\login.html:37 +msgid "Lost your password?" +msgstr "" + +#: .\cookbook\templates\account\login.html:48 msgid "Social Login" msgstr "" -#: .\cookbook\templates\account\login.html:39 +#: .\cookbook\templates\account\login.html:49 msgid "You can use any of the following providers to sign in." msgstr "" @@ -445,116 +596,166 @@ msgstr "" msgid "Are you sure you want to sign out?" msgstr "" -#: .\cookbook\templates\account\password_reset.html:5 -#: .\cookbook\templates\account\password_reset_done.html:5 +#: .\cookbook\templates\account\password_reset.html:7 +#: .\cookbook\templates\account\password_reset.html:13 +#: .\cookbook\templates\account\password_reset_done.html:7 +#: .\cookbook\templates\account\password_reset_done.html:10 msgid "Password Reset" msgstr "" -#: .\cookbook\templates\account\password_reset.html:9 -#: .\cookbook\templates\account\password_reset_done.html:9 -msgid "Password reset is not implemented for the time being!" +#: .\cookbook\templates\account\password_reset.html:24 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." msgstr "" -#: .\cookbook\templates\account\signup.html:5 +#: .\cookbook\templates\account\password_reset.html:32 +msgid "Password reset is disabled on this instance." +msgstr "" + +#: .\cookbook\templates\account\password_reset_done.html:16 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: .\cookbook\templates\account\signup.html:6 msgid "Register" msgstr "Reģistrēties" -#: .\cookbook\templates\account\signup.html:9 -msgid "Create your Account" +#: .\cookbook\templates\account\signup.html:12 +#, fuzzy +#| msgid "Create your Account" +msgid "Create an Account" msgstr "Izveidot savu kontu" -#: .\cookbook\templates\account\signup.html:14 +#: .\cookbook\templates\account\signup.html:42 +msgid "I accept the follwoing" +msgstr "" + +#: .\cookbook\templates\account\signup.html:45 +msgid "Terms and Conditions" +msgstr "" + +#: .\cookbook\templates\account\signup.html:48 +msgid "and" +msgstr "" + +#: .\cookbook\templates\account\signup.html:52 +msgid "Privacy Policy" +msgstr "" + +#: .\cookbook\templates\account\signup.html:65 msgid "Create User" msgstr "Izveidot lietotāju" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:160 +#: .\cookbook\templates\account\signup.html:69 +msgid "Already have an account?" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:5 +#: .\cookbook\templates\account\signup_closed.html:11 +msgid "Sign Up Closed" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:13 +msgid "We are sorry, but the sign up is currently closed." +msgstr "" + +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:170 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "API dokumentācija" -#: .\cookbook\templates\base.html:78 +#: .\cookbook\templates\base.html:85 msgid "Utensils" msgstr "Piederumi" -#: .\cookbook\templates\base.html:88 +#: .\cookbook\templates\base.html:95 msgid "Shopping" msgstr "Iepirkšanās" -#: .\cookbook\templates\base.html:102 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:93 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:66 +#: .\cookbook\templates\base.html:109 .\cookbook\views\delete.py:84 +#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 +#: .\cookbook\views\new.py:78 msgid "Keyword" msgstr "Atslēgvārds" -#: .\cookbook\templates\base.html:104 +#: .\cookbook\templates\base.html:111 msgid "Batch Edit" msgstr "Rediģēt vairākus" -#: .\cookbook\templates\base.html:109 +#: .\cookbook\templates\base.html:116 msgid "Storage Data" msgstr "Krātuves dati" -#: .\cookbook\templates\base.html:113 +#: .\cookbook\templates\base.html:120 msgid "Storage Backends" msgstr "Krātuves backendi" -#: .\cookbook\templates\base.html:115 +#: .\cookbook\templates\base.html:122 msgid "Configure Sync" msgstr "Konfigurēt sinhronizāciju" -#: .\cookbook\templates\base.html:117 +#: .\cookbook\templates\base.html:124 msgid "Discovered Recipes" msgstr "Atrastās receptes" -#: .\cookbook\templates\base.html:119 +#: .\cookbook\templates\base.html:126 msgid "Discovery Log" msgstr "Atrastās žurnāls" -#: .\cookbook\templates\base.html:121 .\cookbook\templates\stats.html:10 +#: .\cookbook\templates\base.html:128 .\cookbook\templates\stats.html:10 msgid "Statistics" msgstr "Statistika" -#: .\cookbook\templates\base.html:123 +#: .\cookbook\templates\base.html:130 msgid "Units & Ingredients" msgstr "Vienības un sastāvdaļas" -#: .\cookbook\templates\base.html:125 +#: .\cookbook\templates\base.html:132 .\cookbook\templates\index.html:47 msgid "Import Recipe" msgstr "Importēt recepti" -#: .\cookbook\templates\base.html:144 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:151 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:16 msgid "Settings" msgstr "Iestatījumi" -#: .\cookbook\templates\base.html:146 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:153 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "Vēsture" -#: .\cookbook\templates\base.html:150 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:155 .\cookbook\templates\space.html:7 +#, fuzzy +#| msgid "Settings" +msgid "Space Settings" +msgstr "Iestatījumi" + +#: .\cookbook\templates\base.html:160 .\cookbook\templates\system.html:13 msgid "System" msgstr "Sistēma" -#: .\cookbook\templates\base.html:152 +#: .\cookbook\templates\base.html:162 msgid "Admin" msgstr "Administrators" -#: .\cookbook\templates\base.html:156 +#: .\cookbook\templates\base.html:166 msgid "Markdown Guide" msgstr "Markdown rokasgrāmata" -#: .\cookbook\templates\base.html:158 +#: .\cookbook\templates\base.html:168 msgid "GitHub" msgstr "Github" -#: .\cookbook\templates\base.html:162 +#: .\cookbook\templates\base.html:172 msgid "API Browser" msgstr "API pārlūks" -#: .\cookbook\templates\base.html:165 -msgid "Logout" -msgstr "Izlogoties" +#: .\cookbook\templates\base.html:175 +msgid "Log out" +msgstr "" #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" @@ -569,7 +770,7 @@ msgid "Add the specified keywords to all recipes containing a word" msgstr "" "Pievienojiet norādītos atslēgvārdus visām receptēm, kurās ir atrodams vārds" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:76 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 msgid "Sync" msgstr "Sinhronizēt" @@ -598,7 +799,7 @@ msgstr "Sinhronizēt tagad!" msgid "Importing Recipes" msgstr "Recepšu importēšana" -#: .\cookbook\templates\batch\waiting.html:23 +#: .\cookbook\templates\batch\waiting.html:28 msgid "" "This can take a few minutes, depending on the number of recipes in sync, " "please wait." @@ -637,26 +838,33 @@ msgid "Export Recipes" msgstr "Eksportēt receptes" #: .\cookbook\templates\export.html:14 .\cookbook\templates\export.html:20 -#: .\cookbook\templates\shopping_list.html:347 +#: .\cookbook\templates\shopping_list.html:351 #: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20 msgid "Export" msgstr "Eksportēt" +#: .\cookbook\templates\files.html:7 +#, fuzzy +#| msgid "File ID" +msgid "Files" +msgstr "Faila ID" + #: .\cookbook\templates\forms\edit_import_recipe.html:5 #: .\cookbook\templates\forms\edit_import_recipe.html:9 msgid "Import new Recipe" msgstr "Importēt jaunu recepti" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:389 -#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:416 +#: .\cookbook\templates\forms\edit_internal_recipe.html:448 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:28 .\cookbook\templates\settings.html:35 -#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:73 -#: .\cookbook\templates\shopping_list.html:349 +#: .\cookbook\templates\settings.html:44 .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:114 +#: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "Saglabāt" @@ -665,181 +873,190 @@ msgstr "Saglabāt" msgid "Edit Recipe" msgstr "Rediģēt recepti" -#: .\cookbook\templates\forms\edit_internal_recipe.html:52 +#: .\cookbook\templates\forms\edit_internal_recipe.html:56 +#: .\cookbook\templates\url_import.html:171 msgid "Description" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:72 +#: .\cookbook\templates\forms\edit_internal_recipe.html:76 msgid "Waiting Time" msgstr "Gaidīšanas laiks" -#: .\cookbook\templates\forms\edit_internal_recipe.html:78 +#: .\cookbook\templates\forms\edit_internal_recipe.html:82 msgid "Servings Text" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:89 +#: .\cookbook\templates\forms\edit_internal_recipe.html:93 msgid "Select Keywords" msgstr "Atlasīt atslēgvārdus" -#: .\cookbook\templates\forms\edit_internal_recipe.html:90 -#: .\cookbook\templates\url_import.html:212 +#: .\cookbook\templates\forms\edit_internal_recipe.html:94 +#: .\cookbook\templates\url_import.html:583 #, fuzzy #| msgid "All Keywords" msgid "Add Keyword" msgstr "Visi atslēgvārdi" -#: .\cookbook\templates\forms\edit_internal_recipe.html:108 +#: .\cookbook\templates\forms\edit_internal_recipe.html:112 msgid "Nutrition" msgstr "Uzturs" -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -#: .\cookbook\templates\forms\edit_internal_recipe.html:162 +#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:166 msgid "Delete Step" msgstr "Dzēst soli" -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:120 msgid "Calories" msgstr "Kalorijas" -#: .\cookbook\templates\forms\edit_internal_recipe.html:119 +#: .\cookbook\templates\forms\edit_internal_recipe.html:123 msgid "Carbohydrates" msgstr "Ogļhidrāti" -#: .\cookbook\templates\forms\edit_internal_recipe.html:122 +#: .\cookbook\templates\forms\edit_internal_recipe.html:126 msgid "Fats" msgstr "Tauki" -#: .\cookbook\templates\forms\edit_internal_recipe.html:124 +#: .\cookbook\templates\forms\edit_internal_recipe.html:128 msgid "Proteins" msgstr "Olbaltumvielas" -#: .\cookbook\templates\forms\edit_internal_recipe.html:146 -#: .\cookbook\templates\forms\edit_internal_recipe.html:454 +#: .\cookbook\templates\forms\edit_internal_recipe.html:150 +#: .\cookbook\templates\forms\edit_internal_recipe.html:481 msgid "Step" msgstr "Solis" -#: .\cookbook\templates\forms\edit_internal_recipe.html:167 +#: .\cookbook\templates\forms\edit_internal_recipe.html:171 msgid "Show as header" msgstr "Rādīt kā galveni" -#: .\cookbook\templates\forms\edit_internal_recipe.html:173 +#: .\cookbook\templates\forms\edit_internal_recipe.html:177 msgid "Hide as header" msgstr "Slēpt kā galveni" -#: .\cookbook\templates\forms\edit_internal_recipe.html:178 +#: .\cookbook\templates\forms\edit_internal_recipe.html:182 msgid "Move Up" msgstr "Pārvietot uz augšu" -#: .\cookbook\templates\forms\edit_internal_recipe.html:183 +#: .\cookbook\templates\forms\edit_internal_recipe.html:187 msgid "Move Down" msgstr "Pārvietot uz leju" -#: .\cookbook\templates\forms\edit_internal_recipe.html:192 +#: .\cookbook\templates\forms\edit_internal_recipe.html:196 msgid "Step Name" msgstr "Soļa nosaukums" -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:200 msgid "Step Type" msgstr "Soļa tips" -#: .\cookbook\templates\forms\edit_internal_recipe.html:207 +#: .\cookbook\templates\forms\edit_internal_recipe.html:212 msgid "Step time in Minutes" msgstr "Soļa laiks minūtēs" -#: .\cookbook\templates\forms\edit_internal_recipe.html:261 -#: .\cookbook\templates\shopping_list.html:183 -msgid "Select Unit" -msgstr "Atlasiet vienību" +#: .\cookbook\templates\forms\edit_internal_recipe.html:228 +#, fuzzy +#| msgid "Select one" +msgid "Select File" +msgstr "Izvēlies vienu" -#: .\cookbook\templates\forms\edit_internal_recipe.html:262 -#: .\cookbook\templates\forms\edit_internal_recipe.html:286 -#: .\cookbook\templates\shopping_list.html:184 -#: .\cookbook\templates\shopping_list.html:206 -msgid "Create" -msgstr "Izveidot" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:263 -#: .\cookbook\templates\forms\edit_internal_recipe.html:287 -#: .\cookbook\templates\shopping_list.html:185 -#: .\cookbook\templates\shopping_list.html:207 -#: .\cookbook\templates\shopping_list.html:237 -#: .\cookbook\templates\shopping_list.html:261 -#: .\cookbook\templates\url_import.html:124 -#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\forms\edit_internal_recipe.html:229 +#: .\cookbook\templates\forms\edit_internal_recipe.html:290 +#: .\cookbook\templates\forms\edit_internal_recipe.html:314 +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 msgid "Select" msgstr "Atlasīt" -#: .\cookbook\templates\forms\edit_internal_recipe.html:285 -#: .\cookbook\templates\shopping_list.html:205 +#: .\cookbook\templates\forms\edit_internal_recipe.html:288 +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "Atlasiet vienību" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:289 +#: .\cookbook\templates\forms\edit_internal_recipe.html:313 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "Izveidot" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:312 +#: .\cookbook\templates\shopping_list.html:209 msgid "Select Food" msgstr "Atlasīt ēdienu" -#: .\cookbook\templates\forms\edit_internal_recipe.html:302 +#: .\cookbook\templates\forms\edit_internal_recipe.html:329 #: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:171 +#: .\cookbook\templates\url_import.html:542 msgid "Note" msgstr "Piezīme" -#: .\cookbook\templates\forms\edit_internal_recipe.html:319 +#: .\cookbook\templates\forms\edit_internal_recipe.html:346 msgid "Delete Ingredient" msgstr "Dzēst sastāvdaļu" -#: .\cookbook\templates\forms\edit_internal_recipe.html:325 +#: .\cookbook\templates\forms\edit_internal_recipe.html:352 msgid "Make Header" msgstr "Izveidot galveni" -#: .\cookbook\templates\forms\edit_internal_recipe.html:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:358 msgid "Make Ingredient" msgstr "Pagatavot sastāvdaļu" -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 +#: .\cookbook\templates\forms\edit_internal_recipe.html:364 msgid "Disable Amount" msgstr "Atspējot summu" -#: .\cookbook\templates\forms\edit_internal_recipe.html:343 +#: .\cookbook\templates\forms\edit_internal_recipe.html:370 msgid "Enable Amount" msgstr "Iespējot summu" -#: .\cookbook\templates\forms\edit_internal_recipe.html:348 +#: .\cookbook\templates\forms\edit_internal_recipe.html:375 msgid "Copy Template Reference" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:374 -#: .\cookbook\templates\url_import.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:401 +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 msgid "Instructions" msgstr "Instrukcijas" -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:414 +#: .\cookbook\templates\forms\edit_internal_recipe.html:445 msgid "Save & View" msgstr "Saglabāt un skatīt" -#: .\cookbook\templates\forms\edit_internal_recipe.html:391 -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 +#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:451 msgid "Add Step" msgstr "Pievienot soli" -#: .\cookbook\templates\forms\edit_internal_recipe.html:394 -#: .\cookbook\templates\forms\edit_internal_recipe.html:428 +#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:455 msgid "Add Nutrition" msgstr "Pievienot uzturu" -#: .\cookbook\templates\forms\edit_internal_recipe.html:396 -#: .\cookbook\templates\forms\edit_internal_recipe.html:430 +#: .\cookbook\templates\forms\edit_internal_recipe.html:423 +#: .\cookbook\templates\forms\edit_internal_recipe.html:457 msgid "Remove Nutrition" msgstr "Noņemt uzturu" -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -#: .\cookbook\templates\forms\edit_internal_recipe.html:433 +#: .\cookbook\templates\forms\edit_internal_recipe.html:425 +#: .\cookbook\templates\forms\edit_internal_recipe.html:460 msgid "View Recipe" msgstr "Skatīt recepti" -#: .\cookbook\templates\forms\edit_internal_recipe.html:400 -#: .\cookbook\templates\forms\edit_internal_recipe.html:435 +#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\templates\forms\edit_internal_recipe.html:462 msgid "Delete Recipe" msgstr "Dzēst recepti" -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 +#: .\cookbook\templates\forms\edit_internal_recipe.html:468 msgid "Steps" msgstr "Soļi" @@ -866,7 +1083,7 @@ msgstr "" " " #: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\stats.html:26 +#: .\cookbook\templates\space.html:35 .\cookbook\templates\stats.html:26 msgid "Units" msgstr "Vienības" @@ -888,10 +1105,6 @@ msgstr "Vai tiešām vēlaties apvienot šīs divas sastāvdaļas?" msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "Vai tiešām vēlaties izdzēst %(title)s: %(object)s " -#: .\cookbook\templates\generic\delete_template.html:21 -msgid "Confirm" -msgstr "Apstiprināt" - #: .\cookbook\templates\generic\edit_template.html:30 msgid "View" msgstr "Skatīt" @@ -913,12 +1126,6 @@ msgstr "Filtrs" msgid "Import all" msgstr "Importēt visu" -#: .\cookbook\templates\generic\new_template.html:6 -#: .\cookbook\templates\generic\new_template.html:14 -#: .\cookbook\templates\meal_plan.html:323 -msgid "New" -msgstr "Jauns" - #: .\cookbook\templates\generic\table_template.html:76 #: .\cookbook\templates\recipes_table.html:121 msgid "previous" @@ -963,7 +1170,7 @@ msgstr "Aizvērt" #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:264 .\cookbook\views\new.py:40 +#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "Recepte" @@ -1005,10 +1212,6 @@ msgstr "Meklēt recepti ..." msgid "New Recipe" msgstr "Jauna recepte" -#: .\cookbook\templates\index.html:47 -msgid "Website Import" -msgstr "Vietnes importēšana" - #: .\cookbook\templates\index.html:53 msgid "Advanced Search" msgstr "Izvērsta meklēšana" @@ -1022,7 +1225,7 @@ msgid "Last viewed" msgstr "Pēdējoreiz skatīts" #: .\cookbook\templates\index.html:87 .\cookbook\templates\meal_plan.html:178 -#: .\cookbook\templates\stats.html:22 +#: .\cookbook\templates\space.html:29 .\cookbook\templates\stats.html:22 msgid "Recipes" msgstr "Receptes" @@ -1188,7 +1391,7 @@ msgid "New Entry" msgstr "Jauns ieraksts" #: .\cookbook\templates\meal_plan.html:113 -#: .\cookbook\templates\shopping_list.html:52 +#: .\cookbook\templates\shopping_list.html:56 msgid "Search Recipe" msgstr "Meklēt recepti" @@ -1221,7 +1424,7 @@ msgstr "Izveidot tikai piezīmi" #: .\cookbook\templates\meal_plan.html:168 #: .\cookbook\templates\shopping_list.html:7 #: .\cookbook\templates\shopping_list.html:29 -#: .\cookbook\templates\shopping_list.html:705 +#: .\cookbook\templates\shopping_list.html:714 msgid "Shopping List" msgstr "Iepirkumu saraksts" @@ -1272,7 +1475,7 @@ msgstr "Izveidojis" #: .\cookbook\templates\meal_plan.html:270 #: .\cookbook\templates\meal_plan_entry.html:20 -#: .\cookbook\templates\shopping_list.html:250 +#: .\cookbook\templates\shopping_list.html:254 msgid "Shared with" msgstr "Kopīgots ar" @@ -1349,7 +1552,6 @@ msgstr "Jūs neesat pieteicies un tāpēc nevarat skatīt šo lapu!" #: .\cookbook\templates\no_groups_info.html:18 #: .\cookbook\templates\no_perm_info.html:15 -#: .\cookbook\templates\no_space_info.html:15 msgid "Please contact your administrator." msgstr "" @@ -1366,13 +1568,50 @@ msgid "" "action." msgstr "Jums nav nepieciešamo atļauju, lai veiktu šo darbību!" -#: .\cookbook\templates\no_space_info.html:5 -#: .\cookbook\templates\no_space_info.html:12 +#: .\cookbook\templates\no_space_info.html:6 +#: .\cookbook\templates\no_space_info.html:13 msgid "No Space" msgstr "" -#: .\cookbook\templates\no_space_info.html:15 -msgid "You are not a member of any space." +#: .\cookbook\templates\no_space_info.html:17 +msgid "" +"Recipes, foods, shopping lists and more are organized in spaces of one or " +"more people." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:18 +msgid "" +"You can either be invited into an existing space or create your own one." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:31 +#: .\cookbook\templates\no_space_info.html:40 +msgid "Join Space" +msgstr "" + +#: .\cookbook\templates\no_space_info.html:34 +msgid "Join an existing space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:35 +msgid "" +"To join an existing space either enter your invite token or click on the " +"invite link the space owner send you." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:48 +#: .\cookbook\templates\no_space_info.html:56 +#, fuzzy +#| msgid "Create User" +msgid "Create Space" +msgstr "Izveidot lietotāju" + +#: .\cookbook\templates\no_space_info.html:51 +msgid "Create your own recipe space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:52 +msgid "Start your own recipe space and invite other users to it." msgstr "" #: .\cookbook\templates\offline.html:6 @@ -1389,28 +1628,29 @@ msgid "" "recently viewed them. Keep in mind that data might be outdated." msgstr "" -#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\stats.html:47 +#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\space.html:56 +#: .\cookbook\templates\stats.html:47 msgid "Comments" msgstr "Komentāri" #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:170 +#: .\cookbook\views\edit.py:179 msgid "Comment" msgstr "Komentēt" #: .\cookbook\templates\recipes_table.html:19 #: .\cookbook\templates\recipes_table.html:23 -#: .\cookbook\templates\url_import.html:69 +#: .\cookbook\templates\url_import.html:440 msgid "Recipe Image" msgstr "Receptes attēls" #: .\cookbook\templates\recipes_table.html:51 -#: .\cookbook\templates\url_import.html:74 +#: .\cookbook\templates\url_import.html:445 msgid "Preparation time ca." msgstr "Pagatavošanas laiks apm." #: .\cookbook\templates\recipes_table.html:57 -#: .\cookbook\templates\url_import.html:79 +#: .\cookbook\templates\url_import.html:450 msgid "Waiting time ca." msgstr "Gaidīšanas laiks apm." @@ -1426,27 +1666,63 @@ msgstr "Veikt ierakstus pagatavošanas žurnālā" msgid "Recipe Home" msgstr "Recepšu Sākums" -#: .\cookbook\templates\settings.html:22 +#: .\cookbook\templates\settings.html:23 msgid "Account" msgstr "Konts" -#: .\cookbook\templates\settings.html:38 -msgid "Link social account" +#: .\cookbook\templates\settings.html:27 +msgid "Preferences" msgstr "" -#: .\cookbook\templates\settings.html:42 +#: .\cookbook\templates\settings.html:31 +#, fuzzy +#| msgid "Settings" +msgid "API-Settings" +msgstr "Iestatījumi" + +#: .\cookbook\templates\settings.html:39 +#, fuzzy +#| msgid "Settings" +msgid "Name Settings" +msgstr "Iestatījumi" + +#: .\cookbook\templates\settings.html:47 +#, fuzzy +#| msgid "Settings" +msgid "Password Settings" +msgstr "Iestatījumi" + +#: .\cookbook\templates\settings.html:55 +#, fuzzy +#| msgid "Settings" +msgid "Email Settings" +msgstr "Iestatījumi" + +#: .\cookbook\templates\settings.html:57 +msgid "Manage Email Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:61 +msgid "Social" +msgstr "" + +#: .\cookbook\templates\settings.html:63 +msgid "Manage Social Accounts" +msgstr "" + +#: .\cookbook\templates\settings.html:75 msgid "Language" msgstr "Valoda" -#: .\cookbook\templates\settings.html:67 +#: .\cookbook\templates\settings.html:105 msgid "Style" msgstr "Stils" -#: .\cookbook\templates\settings.html:79 +#: .\cookbook\templates\settings.html:125 msgid "API Token" msgstr "API Tokens" -#: .\cookbook\templates\settings.html:80 +#: .\cookbook\templates\settings.html:126 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." @@ -1454,7 +1730,7 @@ msgstr "" "Lai piekļūtu REST API, varat izmantot gan pamata autentifikāciju, gan tokena " "autentifikāciju." -#: .\cookbook\templates\settings.html:92 +#: .\cookbook\templates\settings.html:143 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" @@ -1462,7 +1738,7 @@ msgstr "" "Izmantojiet token, kā Authorization header, kas pievienota vārdam token, kā " "parādīts šajos piemēros:" -#: .\cookbook\templates\settings.html:94 +#: .\cookbook\templates\settings.html:145 msgid "or" msgstr "vai" @@ -1485,58 +1761,55 @@ msgstr "" msgid "Create Superuser account" msgstr "Izveidojiet superlietotāja kontu" -#: .\cookbook\templates\shopping_list.html:75 +#: .\cookbook\templates\shopping_list.html:79 msgid "Shopping Recipes" msgstr "Iepirkšanās receptes" -#: .\cookbook\templates\shopping_list.html:79 +#: .\cookbook\templates\shopping_list.html:83 msgid "No recipes selected" msgstr "Nav izvēlēta neviena recepte" -#: .\cookbook\templates\shopping_list.html:146 +#: .\cookbook\templates\shopping_list.html:150 msgid "Entry Mode" msgstr "" -#: .\cookbook\templates\shopping_list.html:154 +#: .\cookbook\templates\shopping_list.html:158 msgid "Add Entry" msgstr "" -#: .\cookbook\templates\shopping_list.html:170 +#: .\cookbook\templates\shopping_list.html:174 msgid "Amount" msgstr "Summa" -#: .\cookbook\templates\shopping_list.html:226 +#: .\cookbook\templates\shopping_list.html:230 +#: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "" -#: .\cookbook\templates\shopping_list.html:236 +#: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "" -#: .\cookbook\templates\shopping_list.html:260 +#: .\cookbook\templates\shopping_list.html:264 msgid "Select User" msgstr "Atlasīt lietotāju" -#: .\cookbook\templates\shopping_list.html:279 +#: .\cookbook\templates\shopping_list.html:283 msgid "Finished" msgstr "Pabeigts" -#: .\cookbook\templates\shopping_list.html:292 +#: .\cookbook\templates\shopping_list.html:296 msgid "You are offline, shopping list might not syncronize." msgstr "Jūs esat bezsaistē. Iepirkumu saraksts netiek sinhronizēts." -#: .\cookbook\templates\shopping_list.html:357 +#: .\cookbook\templates\shopping_list.html:361 msgid "Copy/Export" msgstr "Kopēt/eksportēt" -#: .\cookbook\templates\shopping_list.html:361 +#: .\cookbook\templates\shopping_list.html:365 msgid "List Prefix" msgstr "Saraksta prefikss" -#: .\cookbook\templates\shopping_list.html:708 -msgid "There was an error creating a resource!" -msgstr "Radot resursu, radās kļūda!" - #: .\cookbook\templates\socialaccount\connections.html:4 #: .\cookbook\templates\socialaccount\connections.html:7 msgid "Account Connections" @@ -1548,10 +1821,6 @@ msgid "" " accounts:" msgstr "" -#: .\cookbook\templates\socialaccount\connections.html:36 -msgid "Remove" -msgstr "" - #: .\cookbook\templates\socialaccount\connections.html:44 msgid "" "You currently have no social network accounts connected to this account." @@ -1561,38 +1830,95 @@ msgstr "" msgid "Add a 3rd Party Account" msgstr "" -#: .\cookbook\templates\stats.html:4 -msgid "Stats" -msgstr "Statistika" +#: .\cookbook\templates\space.html:18 +msgid "Manage Subscription" +msgstr "" -#: .\cookbook\templates\stats.html:19 +#: .\cookbook\templates\space.html:26 .\cookbook\templates\stats.html:19 msgid "Number of objects" msgstr "Objektu skaits" -#: .\cookbook\templates\stats.html:30 +#: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:30 msgid "Recipe Imports" msgstr "Recepšu imports" -#: .\cookbook\templates\stats.html:38 +#: .\cookbook\templates\space.html:47 .\cookbook\templates\stats.html:38 msgid "Objects stats" msgstr "Objektu statistika" -#: .\cookbook\templates\stats.html:41 +#: .\cookbook\templates\space.html:50 .\cookbook\templates\stats.html:41 msgid "Recipes without Keywords" msgstr "Receptes bez atslēgas vārdiem" -#: .\cookbook\templates\stats.html:43 +#: .\cookbook\templates\space.html:52 .\cookbook\templates\stats.html:43 msgid "External Recipes" msgstr "Ārējās receptes" -#: .\cookbook\templates\stats.html:45 +#: .\cookbook\templates\space.html:54 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "Iekšējās receptes" -#: .\cookbook\templates\system.html:21 .\cookbook\views\lists.py:115 +#: .\cookbook\templates\space.html:67 +msgid "Members" +msgstr "" + +#: .\cookbook\templates\space.html:71 +#, fuzzy +#| msgid "Invite Links" +msgid "Invite User" +msgstr "Uzaicinājuma saites" + +#: .\cookbook\templates\space.html:82 +msgid "User" +msgstr "" + +#: .\cookbook\templates\space.html:83 +msgid "Groups" +msgstr "" + +#: .\cookbook\templates\space.html:99 +#, fuzzy +#| msgid "Admin" +msgid "admin" +msgstr "Administrators" + +#: .\cookbook\templates\space.html:100 +msgid "user" +msgstr "" + +#: .\cookbook\templates\space.html:101 +msgid "guest" +msgstr "" + +#: .\cookbook\templates\space.html:102 +msgid "remove" +msgstr "" + +#: .\cookbook\templates\space.html:106 +msgid "Update" +msgstr "" + +#: .\cookbook\templates\space.html:110 +#, fuzzy +#| msgid "You cannot edit this storage!" +msgid "You cannot edit yourself." +msgstr "Jūs nevarat rediģēt šo krātuvi!" + +#: .\cookbook\templates\space.html:117 +#, fuzzy +#| msgid "There are no recipes in this book yet." +msgid "There are no members in your space yet!" +msgstr "Šajā grāmatā vēl nav receptes." + +#: .\cookbook\templates\space.html:124 .\cookbook\templates\system.html:21 +#: .\cookbook\views\lists.py:115 msgid "Invite Links" msgstr "Uzaicinājuma saites" +#: .\cookbook\templates\stats.html:4 +msgid "Stats" +msgstr "Statistika" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "Rādīt saites" @@ -1724,47 +2050,159 @@ msgstr "" " funkcijas darbojas tikai ar Postgres datu bāzēm.\n" " " -#: .\cookbook\templates\url_import.html:5 +#: .\cookbook\templates\url_import.html:6 msgid "URL Import" msgstr "URL importēšana" -#: .\cookbook\templates\url_import.html:23 +#: .\cookbook\templates\url_import.html:31 +msgid "Drag me to your bookmarks to import recipes from anywhere" +msgstr "" + +#: .\cookbook\templates\url_import.html:32 +#, fuzzy +#| msgid "Bookmark saved!" +msgid "Bookmark Me!" +msgstr "Grāmatzīme saglabāta!" + +#: .\cookbook\templates\url_import.html:61 msgid "Enter website URL" msgstr "Ievadiet vietnes URL" -#: .\cookbook\templates\url_import.html:36 -msgid "Enter json directly" +#: .\cookbook\templates\url_import.html:97 +msgid "Select recipe files to import or drop them here..." msgstr "" -#: .\cookbook\templates\url_import.html:57 +#: .\cookbook\templates\url_import.html:118 +msgid "Paste json or html source here to load recipe." +msgstr "" + +#: .\cookbook\templates\url_import.html:146 +#, fuzzy +#| msgid "View Recipe" +msgid "Preview Recipe Data" +msgstr "Skatīt recepti" + +#: .\cookbook\templates\url_import.html:147 +msgid "Drag recipe attributes from the right into the appropriate box below." +msgstr "" + +#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\url_import.html:173 +#: .\cookbook\templates\url_import.html:190 +#: .\cookbook\templates\url_import.html:209 +#: .\cookbook\templates\url_import.html:227 +#: .\cookbook\templates\url_import.html:242 +#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:273 +#: .\cookbook\templates\url_import.html:300 +#: .\cookbook\templates\url_import.html:351 +msgid "Clear Contents" +msgstr "" + +#: .\cookbook\templates\url_import.html:158 +msgid "Text dragged here will be appended to the name." +msgstr "" + +#: .\cookbook\templates\url_import.html:175 +msgid "Text dragged here will be appended to the description." +msgstr "" + +#: .\cookbook\templates\url_import.html:192 +msgid "Keywords dragged here will be appended to current list" +msgstr "" + +#: .\cookbook\templates\url_import.html:207 +msgid "Image" +msgstr "" + +#: .\cookbook\templates\url_import.html:239 +#, fuzzy +#| msgid "Preparation Time" +msgid "Prep Time" +msgstr "Pagatavošanas laiks" + +#: .\cookbook\templates\url_import.html:254 +#, fuzzy +#| msgid "Time" +msgid "Cook Time" +msgstr "Laiks" + +#: .\cookbook\templates\url_import.html:275 +msgid "Ingredients dragged here will be appended to current list." +msgstr "" + +#: .\cookbook\templates\url_import.html:302 +msgid "" +"Recipe instructions dragged here will be appended to current instructions." +msgstr "" + +#: .\cookbook\templates\url_import.html:325 +#, fuzzy +#| msgid "Discovered Recipes" +msgid "Discovered Attributes" +msgstr "Atrastās receptes" + +#: .\cookbook\templates\url_import.html:327 +msgid "" +"Drag recipe attributes from below into the appropriate box on the left. " +"Click any node to display its full properties." +msgstr "" + +#: .\cookbook\templates\url_import.html:344 +#, fuzzy +#| msgid "Show as header" +msgid "Show Blank Field" +msgstr "Rādīt kā galveni" + +#: .\cookbook\templates\url_import.html:349 +msgid "Blank Field" +msgstr "" + +#: .\cookbook\templates\url_import.html:353 +msgid "Items dragged to Blank Field will be appended." +msgstr "" + +#: .\cookbook\templates\url_import.html:400 +#, fuzzy +#| msgid "Delete Step" +msgid "Delete Text" +msgstr "Dzēst soli" + +#: .\cookbook\templates\url_import.html:413 +#, fuzzy +#| msgid "Delete Recipe" +msgid "Delete image" +msgstr "Dzēst recepti" + +#: .\cookbook\templates\url_import.html:429 msgid "Recipe Name" msgstr "Receptes nosaukums" -#: .\cookbook\templates\url_import.html:62 +#: .\cookbook\templates\url_import.html:433 #, fuzzy #| msgid "Recipe Markup Specification" msgid "Recipe Description" msgstr "Recepšu Markup specifikācija" -#: .\cookbook\templates\url_import.html:123 -#: .\cookbook\templates\url_import.html:155 -#: .\cookbook\templates\url_import.html:211 +#: .\cookbook\templates\url_import.html:494 +#: .\cookbook\templates\url_import.html:526 +#: .\cookbook\templates\url_import.html:582 msgid "Select one" msgstr "Izvēlies vienu" -#: .\cookbook\templates\url_import.html:225 +#: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "Visi atslēgvārdi" -#: .\cookbook\templates\url_import.html:228 +#: .\cookbook\templates\url_import.html:599 msgid "Import all keywords, not only the ones already existing." msgstr "Importējiet visus atslēgvārdus, ne tikai jau esošos." -#: .\cookbook\templates\url_import.html:255 +#: .\cookbook\templates\url_import.html:626 msgid "Information" msgstr "Informācija" -#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:628 msgid "" " Only websites containing ld+json or microdata information can currently\n" " be imported. Most big recipe pages " @@ -1783,51 +2221,79 @@ msgstr "" "nekautrējieties ievietot piemēru\n" " Github." -#: .\cookbook\templates\url_import.html:265 +#: .\cookbook\templates\url_import.html:636 msgid "Google ld+json Info" msgstr "Google ld+json informācija" -#: .\cookbook\templates\url_import.html:268 +#: .\cookbook\templates\url_import.html:639 msgid "GitHub Issues" msgstr "GitHub Issues" -#: .\cookbook\templates\url_import.html:270 +#: .\cookbook\templates\url_import.html:641 msgid "Recipe Markup Specification" msgstr "Recepšu Markup specifikācija" -#: .\cookbook\views\api.py:71 +#: .\cookbook\views\api.py:77 #, fuzzy #| msgid "Parameter filter_list incorrectly formatted" msgid "Parameter updated_at incorrectly formatted" msgstr "Parametrs filter_list ir nepareizi formatēts" -#: .\cookbook\views\api.py:455 .\cookbook\views\views.py:226 +#: .\cookbook\views\api.py:553 .\cookbook\views\views.py:295 msgid "This feature is not available in the demo version!" msgstr "" -#: .\cookbook\views\api.py:478 +#: .\cookbook\views\api.py:576 msgid "Sync successful!" msgstr "Sinhronizācija ir veiksmīga!" -#: .\cookbook\views\api.py:483 +#: .\cookbook\views\api.py:581 msgid "Error synchronizing with Storage" msgstr "Sinhronizējot ar krātuvi, radās kļūda" -#: .\cookbook\views\api.py:556 .\cookbook\views\api.py:576 +#: .\cookbook\views\api.py:649 +msgid "Nothing to do." +msgstr "" + +#: .\cookbook\views\api.py:664 +msgid "The requested site provided malformed data and cannot be read." +msgstr "Pieprasītā vietne sniedza nepareizus datus, kurus nevar nolasīt." + +#: .\cookbook\views\api.py:671 msgid "The requested page could not be found." msgstr "Pieprasīto lapu nevarēja atrast." -#: .\cookbook\views\api.py:585 +#: .\cookbook\views\api.py:680 msgid "" -"The requested page refused to provide any information (Status Code 403)." +"The requested site does not provide any recognized data format to import the " +"recipe from." msgstr "" -"Pieprasītā lapa atteicās sniegt jebkādu informāciju (statusa kods 403)." +"Pieprasītajā vietnē nav norādīts atzīts datu formāts, no kura varētu " +"importēt recepti." -#: .\cookbook\views\api.py:611 -msgid "Could not parse correctly..." +#: .\cookbook\views\api.py:694 +#, fuzzy +#| msgid "The requested page could not be found." +msgid "No useable data could be found." +msgstr "Pieprasīto lapu nevarēja atrast." + +#: .\cookbook\views\api.py:710 +msgid "I couldn't find anything to do." msgstr "" -#: .\cookbook\views\data.py:94 +#: .\cookbook\views\data.py:30 .\cookbook\views\data.py:121 +#: .\cookbook\views\edit.py:50 .\cookbook\views\import_export.py:67 +#: .\cookbook\views\new.py:32 +msgid "You have reached the maximum number of recipes for your space." +msgstr "" + +#: .\cookbook\views\data.py:34 .\cookbook\views\data.py:125 +#: .\cookbook\views\edit.py:54 .\cookbook\views\import_export.py:71 +#: .\cookbook\views\new.py:36 +msgid "You have more users than allowed in your space." +msgstr "" + +#: .\cookbook\views\data.py:103 #, python-format msgid "Batch edit done. %(count)d recipe was updated." msgid_plural "Batch edit done. %(count)d Recipes where updated." @@ -1840,7 +2306,7 @@ msgid "Monitor" msgstr "Uzraudzīt" #: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:86 +#: .\cookbook\views\new.py:98 msgid "Storage Backend" msgstr "Krātuves aizmugursistēma" @@ -1851,8 +2317,8 @@ msgstr "" "Nevarēja izdzēst šo krātuves aizmugursistēmu, jo tā tiek izmantota vismaz " "vienā uzraugā." -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:204 -#: .\cookbook\views\new.py:144 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 +#: .\cookbook\views\new.py:156 msgid "Recipe Book" msgstr "Recepšu grāmata" @@ -1860,55 +2326,55 @@ msgstr "Recepšu grāmata" msgid "Bookmarks" msgstr "Grāmatzīmes" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:214 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 msgid "Invite Link" msgstr "Uzaicinājuma saite" -#: .\cookbook\views\edit.py:110 +#: .\cookbook\views\edit.py:119 msgid "Food" msgstr "Ēdiens" -#: .\cookbook\views\edit.py:119 +#: .\cookbook\views\edit.py:128 msgid "You cannot edit this storage!" msgstr "Jūs nevarat rediģēt šo krātuvi!" -#: .\cookbook\views\edit.py:139 +#: .\cookbook\views\edit.py:148 msgid "Storage saved!" msgstr "Krātuve saglabāta!" -#: .\cookbook\views\edit.py:145 +#: .\cookbook\views\edit.py:154 msgid "There was an error updating this storage backend!" msgstr "Atjauninot šo krātuves aizmugursistēmu, radās kļūda!" -#: .\cookbook\views\edit.py:156 +#: .\cookbook\views\edit.py:165 msgid "Storage" msgstr "Krātuve" -#: .\cookbook\views\edit.py:252 +#: .\cookbook\views\edit.py:261 msgid "Changes saved!" msgstr "Izmaiņas saglabātas!" -#: .\cookbook\views\edit.py:256 +#: .\cookbook\views\edit.py:265 msgid "Error saving changes!" msgstr "Saglabājot izmaiņas, radās kļūda!" -#: .\cookbook\views\edit.py:289 +#: .\cookbook\views\edit.py:299 msgid "Units merged!" msgstr "Vienības ir apvienotas!" -#: .\cookbook\views\edit.py:291 .\cookbook\views\edit.py:307 +#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 msgid "Cannot merge with the same object!" msgstr "" -#: .\cookbook\views\edit.py:305 +#: .\cookbook\views\edit.py:315 msgid "Foods merged!" msgstr "Ēdieni apvienoti!" -#: .\cookbook\views\import_export.py:73 +#: .\cookbook\views\import_export.py:93 msgid "Importing is not implemented for this provider" msgstr "" -#: .\cookbook\views\import_export.py:92 +#: .\cookbook\views\import_export.py:115 msgid "Exporting is not implemented for this provider" msgstr "" @@ -1924,23 +2390,77 @@ msgstr "Atklāšana" msgid "Shopping Lists" msgstr "Iepirkšanās saraksti" -#: .\cookbook\views\new.py:111 +#: .\cookbook\views\new.py:123 msgid "Imported new recipe!" msgstr "Importēta jauna recepte!" -#: .\cookbook\views\new.py:114 +#: .\cookbook\views\new.py:126 msgid "There was an error importing this recipe!" msgstr "Importējot šo recepti, radās kļūda!" -#: .\cookbook\views\views.py:123 +#: .\cookbook\views\new.py:226 +msgid "Hello" +msgstr "" + +#: .\cookbook\views\new.py:226 +msgid "You have been invited by " +msgstr "" + +#: .\cookbook\views\new.py:227 +msgid " to join their Tandoor Recipes space " +msgstr "" + +#: .\cookbook\views\new.py:228 +msgid "Click the following link to activate your account: " +msgstr "" + +#: .\cookbook\views\new.py:229 +msgid "" +"If the link does not work use the following code to manually join the space: " +msgstr "" + +#: .\cookbook\views\new.py:230 +msgid "The invitation is valid until " +msgstr "" + +#: .\cookbook\views\new.py:231 +msgid "" +"Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " +msgstr "" + +#: .\cookbook\views\new.py:234 +msgid "Tandoor Recipes Invite" +msgstr "" + +#: .\cookbook\views\new.py:241 +msgid "Invite link successfully send to user." +msgstr "" + +#: .\cookbook\views\new.py:244 +msgid "" +"You have send to many emails, please share the link manually or wait a few " +"hours." +msgstr "" + +#: .\cookbook\views\new.py:246 +msgid "Email to user could not be send, please share link manually." +msgstr "" + +#: .\cookbook\views\views.py:125 +msgid "" +"You have successfully created your own recipe space. Start by adding some " +"recipes or invite other people to join you." +msgstr "" + +#: .\cookbook\views\views.py:173 msgid "You do not have the required permissions to perform this action!" msgstr "Jums nav nepieciešamo atļauju, lai veiktu šo darbību!" -#: .\cookbook\views\views.py:134 +#: .\cookbook\views\views.py:184 msgid "Comment saved!" msgstr "Komentārs saglabāts!" -#: .\cookbook\views\views.py:326 +#: .\cookbook\views\views.py:396 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -1950,22 +2470,58 @@ msgstr "" "aizmirsis sava superlietotāja informāciju, lūdzu, skatiet Django " "dokumentāciju par paroļu atiestatīšanu." -#: .\cookbook\views\views.py:333 .\cookbook\views\views.py:378 +#: .\cookbook\views\views.py:403 msgid "Passwords dont match!" msgstr "Paroles nesakrīt!" -#: .\cookbook\views\views.py:349 .\cookbook\views\views.py:385 +#: .\cookbook\views\views.py:419 msgid "User has been created, please login!" msgstr "Lietotājs ir izveidots, lūdzu, piesakieties!" -#: .\cookbook\views\views.py:365 +#: .\cookbook\views\views.py:435 msgid "Malformed Invite Link supplied!" msgstr "Nepareiza uzaicinājuma saite!" -#: .\cookbook\views\views.py:405 +#: .\cookbook\views\views.py:441 +#, fuzzy +#| msgid "You are not logged in and therefore cannot view this page!" +msgid "You are already member of a space and therefore cannot join this one." +msgstr "Jūs neesat pieteicies un tāpēc nevarat skatīt šo lapu!" + +#: .\cookbook\views\views.py:452 +msgid "Successfully joined space." +msgstr "" + +#: .\cookbook\views\views.py:458 msgid "Invite Link not valid or already used!" msgstr "Uzaicinājuma saite nav derīga vai jau izmantota!" +#~ msgid "" +#~ "A username is not required, if left blank the new user can choose one." +#~ msgstr "" +#~ "Lietotājvārds nav nepieciešams. Ja tas tiks atstāts tukšs, lietotājs to " +#~ "varēs izvēlēties pats." + +#~ msgid "Imported from" +#~ msgstr "Importēts no" + +#~ msgid "Link" +#~ msgstr "Saite" + +#~ msgid "Logout" +#~ msgstr "Izlogoties" + +#~ msgid "Website Import" +#~ msgstr "Vietnes importēšana" + +#~ msgid "There was an error creating a resource!" +#~ msgstr "Radot resursu, radās kļūda!" + +#~ msgid "" +#~ "The requested page refused to provide any information (Status Code 403)." +#~ msgstr "" +#~ "Pieprasītā lapa atteicās sniegt jebkādu informāciju (statusa kods 403)." + #~ msgid "" #~ "Include - [ ] in list for easier usage in markdown based " #~ "documents." @@ -1981,6 +2537,3 @@ msgstr "Uzaicinājuma saite nav derīga vai jau izmantota!" #~ msgid "Preference for given user already exists" #~ msgstr "Priekšroka konkrētam lietotājam jau pastāv" - -#~ msgid "Bookmark saved!" -#~ msgstr "Grāmatzīme saglabāta!" diff --git a/cookbook/locale/nl/LC_MESSAGES/django.po b/cookbook/locale/nl/LC_MESSAGES/django.po index 968a11d1c..b43720993 100644 --- a/cookbook/locale/nl/LC_MESSAGES/django.po +++ b/cookbook/locale/nl/LC_MESSAGES/django.po @@ -12,11 +12,11 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: 2021-05-04 09:02+0000\n" "Last-Translator: Jesse \n" -"Language-Team: Dutch \n" +"Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,14 +24,15 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.5.3\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:91 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 +#: .\cookbook\templates\forms\edit_internal_recipe.html:246 #: .\cookbook\templates\forms\ingredients.html:34 -#: .\cookbook\templates\stats.html:28 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\space.html:37 .\cookbook\templates\stats.html:28 +#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 msgid "Ingredients" msgstr "Ingrediënten" -#: .\cookbook\forms.py:45 +#: .\cookbook\forms.py:49 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" @@ -39,13 +40,13 @@ msgstr "" "De kleur van de bovenste navigatie balk. Niet alle kleuren werken met alle " "thema's, je dient ze dus simpelweg uit te proberen!" -#: .\cookbook\forms.py:46 +#: .\cookbook\forms.py:51 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" "Standaard eenheid die gebruikt wordt wanneer een nieuw ingrediënt aan een " "recept wordt toegevoegd." -#: .\cookbook\forms.py:47 +#: .\cookbook\forms.py:53 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" @@ -53,7 +54,7 @@ msgstr "" "Mogelijk maken van breuken bij ingrediënt aantallen (het automatisch " "converteren van decimalen naar breuken)" -#: .\cookbook\forms.py:48 +#: .\cookbook\forms.py:56 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." @@ -61,19 +62,19 @@ msgstr "" "Gebruikers waarmee nieuwe maaltijdplannen/boodschappenlijstjes standaard " "gedeeld moeten worden." -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:58 msgid "Show recently viewed recipes on search page." msgstr "Geef recent bekeken recepten op de zoekpagina weer." -#: .\cookbook\forms.py:50 +#: .\cookbook\forms.py:59 msgid "Number of decimals to round ingredients." msgstr "Aantal decimalen om ingrediënten op af te ronden." -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:60 msgid "If you want to be able to create and see comments underneath recipes." msgstr "Als je opmerkingen bij recepten wil kunnen maken en zien." -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:62 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -86,11 +87,11 @@ msgstr "" "gelijktijdig boodschappen doen maar verbruikt mogelijk extra mobiele data. " "Wordt gereset bij opslaan wanneer de limiet niet bereikt is." -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:65 msgid "Makes the navbar stick to the top of the page." msgstr "Zet de navbar vast aan de bovenkant van de pagina." -#: .\cookbook\forms.py:72 +#: .\cookbook\forms.py:81 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" @@ -98,39 +99,42 @@ msgstr "" "Beide velden zijn optioneel. Indien niks is opgegeven wordt de " "gebruikersnaam weergegeven" -#: .\cookbook\forms.py:93 .\cookbook\forms.py:315 -#: .\cookbook\templates\forms\edit_internal_recipe.html:45 +#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "Naam" -#: .\cookbook\forms.py:94 .\cookbook\forms.py:316 -#: .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:81 -#: .\cookbook\templates\stats.html:24 .\cookbook\templates\url_import.html:202 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 +#: .\cookbook\templates\base.html:105 +#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\templates\space.html:33 .\cookbook\templates\stats.html:24 +#: .\cookbook\templates\url_import.html:188 +#: .\cookbook\templates\url_import.html:573 msgid "Keywords" msgstr "Etiketten" -#: .\cookbook\forms.py:95 +#: .\cookbook\forms.py:104 msgid "Preparation time in minutes" msgstr "Voorbereidingstijd in minuten" -#: .\cookbook\forms.py:96 +#: .\cookbook\forms.py:105 msgid "Waiting time (cooking/baking) in minutes" msgstr "Wacht tijd in minuten (koken en bakken)" -#: .\cookbook\forms.py:97 .\cookbook\forms.py:317 +#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 msgid "Path" msgstr "Pad" -#: .\cookbook\forms.py:98 +#: .\cookbook\forms.py:107 msgid "Storage UID" msgstr "Opslag UID" -#: .\cookbook\forms.py:121 +#: .\cookbook\forms.py:133 msgid "Default" msgstr "Standaard waarde" -#: .\cookbook\forms.py:130 +#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." @@ -138,51 +142,51 @@ msgstr "" "Om dubbelingen te voorkomen worden recepten met dezelfde naam als een " "bestaand recept genegeerd. Vink aan om alles te importeren." -#: .\cookbook\forms.py:149 +#: .\cookbook\forms.py:164 msgid "New Unit" msgstr "Nieuwe eenheid" -#: .\cookbook\forms.py:150 +#: .\cookbook\forms.py:165 msgid "New unit that other gets replaced by." msgstr "Nieuwe eenheid waarmee de andere wordt vervangen." -#: .\cookbook\forms.py:155 +#: .\cookbook\forms.py:170 msgid "Old Unit" msgstr "Oude eenheid" -#: .\cookbook\forms.py:156 +#: .\cookbook\forms.py:171 msgid "Unit that should be replaced." msgstr "Eenheid die vervangen dient te worden." -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:187 msgid "New Food" msgstr "Nieuw Ingredïent" -#: .\cookbook\forms.py:173 +#: .\cookbook\forms.py:188 msgid "New food that other gets replaced by." msgstr "Nieuw Ingredïent dat Oud Ingrediënt vervangt." -#: .\cookbook\forms.py:178 +#: .\cookbook\forms.py:193 msgid "Old Food" msgstr "Oud Ingrediënt" -#: .\cookbook\forms.py:179 +#: .\cookbook\forms.py:194 msgid "Food that should be replaced." msgstr "Te vervangen Ingrediënt." -#: .\cookbook\forms.py:197 +#: .\cookbook\forms.py:212 msgid "Add your comment: " msgstr "Voeg een opmerking toe: " -#: .\cookbook\forms.py:238 +#: .\cookbook\forms.py:253 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "Laat leeg voor dropbox en vul het app wachtwoord in voor nextcloud." -#: .\cookbook\forms.py:245 +#: .\cookbook\forms.py:260 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "Laat leeg voor nextcloud en vul de api token in voor dropbox." -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:269 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -190,26 +194,26 @@ msgstr "" "Laat leeg voor dropbox en vul enkel de base url voor nextcloud in. (/" "remote.php/webdav/ wordt automatisch toegevoegd.)" -#: .\cookbook\forms.py:291 +#: .\cookbook\forms.py:307 msgid "Search String" msgstr "Zoekopdracht" -#: .\cookbook\forms.py:318 +#: .\cookbook\forms.py:334 msgid "File ID" msgstr "Bestands ID" -#: .\cookbook\forms.py:354 +#: .\cookbook\forms.py:370 msgid "You must provide at least a recipe or a title." msgstr "Je moet minimaal één recept of titel te specificeren." -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:383 msgid "You can list default users to share recipes with in the settings." msgstr "" "Je kan in de instellingen standaard gebruikers in stellen om de recepten met " "te delen." -#: .\cookbook\forms.py:368 -#: .\cookbook\templates\forms\edit_internal_recipe.html:377 +#: .\cookbook\forms.py:384 +#: .\cookbook\templates\forms\edit_internal_recipe.html:404 msgid "" "You can use markdown to format this field. See the docs here" @@ -217,53 +221,58 @@ msgstr "" "Je kunt markdown gebruiken om dit veld te op te maken. Bekijk de documentatie hier" -#: .\cookbook\forms.py:393 -msgid "A username is not required, if left blank the new user can choose one." +#: .\cookbook\forms.py:409 +msgid "Maximum number of users for this space reached." msgstr "" -"Een gebruikersnaam is niet verplicht. Als het veld leeg is kan de gebruiker " -"er een kiezen." -#: .\cookbook\helper\permission_helper.py:123 -#: .\cookbook\helper\permission_helper.py:129 -#: .\cookbook\helper\permission_helper.py:151 -#: .\cookbook\helper\permission_helper.py:196 -#: .\cookbook\helper\permission_helper.py:210 -#: .\cookbook\helper\permission_helper.py:221 -#: .\cookbook\helper\permission_helper.py:232 .\cookbook\views\data.py:30 -#: .\cookbook\views\views.py:112 .\cookbook\views\views.py:116 -#: .\cookbook\views\views.py:184 -msgid "You do not have the required permissions to view this page!" -msgstr "Je hebt niet de benodigde machtigingen om deze pagina te bekijken!" +#: .\cookbook\forms.py:415 +msgid "Email address already taken!" +msgstr "" -#: .\cookbook\helper\permission_helper.py:141 +#: .\cookbook\forms.py:423 +msgid "" +"An email address is not required but if present the invite link will be send " +"to the user." +msgstr "" + +#: .\cookbook\forms.py:438 +msgid "Name already taken." +msgstr "" + +#: .\cookbook\forms.py:449 +msgid "Accept Terms and Privacy" +msgstr "" + +#: .\cookbook\helper\AllAuthCustomAdapter.py:30 +msgid "" +"In order to prevent spam, the requested email was not send. Please wait a " +"few minutes and try again." +msgstr "" + +#: .\cookbook\helper\permission_helper.py:124 +#: .\cookbook\helper\permission_helper.py:144 .\cookbook\views\views.py:147 msgid "You are not logged in and therefore cannot view this page!" msgstr "Je bent niet ingelogd en kan deze pagina daarom niet bekijken!" -#: .\cookbook\helper\permission_helper.py:145 -#: .\cookbook\helper\permission_helper.py:167 -#: .\cookbook\helper\permission_helper.py:182 +#: .\cookbook\helper\permission_helper.py:127 +#: .\cookbook\helper\permission_helper.py:132 +#: .\cookbook\helper\permission_helper.py:154 +#: .\cookbook\helper\permission_helper.py:199 +#: .\cookbook\helper\permission_helper.py:213 +#: .\cookbook\helper\permission_helper.py:224 +#: .\cookbook\helper\permission_helper.py:235 .\cookbook\views\data.py:39 +#: .\cookbook\views\views.py:158 .\cookbook\views\views.py:165 +#: .\cookbook\views\views.py:253 +msgid "You do not have the required permissions to view this page!" +msgstr "Je hebt niet de benodigde machtigingen om deze pagina te bekijken!" + +#: .\cookbook\helper\permission_helper.py:148 +#: .\cookbook\helper\permission_helper.py:170 +#: .\cookbook\helper\permission_helper.py:185 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" "Interactie met dit object is niet mogelijk omdat je niet de eigenaar bent!" -#: .\cookbook\helper\recipe_url_import.py:40 .\cookbook\views\api.py:549 -msgid "The requested site provided malformed data and cannot be read." -msgstr "" -"De opgevraagde site heeft misvormde data verstrekt en kan niet gelezen " -"worden." - -#: .\cookbook\helper\recipe_url_import.py:54 -msgid "" -"The requested site does not provide any recognized data format to import the " -"recipe from." -msgstr "" -"De opgevraagde site biedt geen bekend gegevensformaat aan om het recept van " -"te importeren." - -#: .\cookbook\helper\recipe_url_import.py:160 -msgid "Imported from" -msgstr "Geïmporteerd van" - #: .\cookbook\helper\template_helper.py:60 #: .\cookbook\helper\template_helper.py:62 msgid "Could not parse template code." @@ -273,43 +282,54 @@ msgstr "Sjablooncode kon niet verwerkt worden." #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 -#: .\cookbook\templates\url_import.html:233 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:190 +#: .\cookbook\templates\url_import.html:27 +#: .\cookbook\templates\url_import.html:101 +#: .\cookbook\templates\url_import.html:123 +#: .\cookbook\templates\url_import.html:317 +#: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 +#: .\cookbook\views\edit.py:199 msgid "Import" msgstr "Importeer" -#: .\cookbook\integration\integration.py:131 +#: .\cookbook\integration\integration.py:162 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" "De importtool verwachtte een .zip bestand. Heb je het juiste type gekozen?" -#: .\cookbook\integration\integration.py:134 +#: .\cookbook\integration\integration.py:165 +msgid "" +"An unexpected error occurred during the import. Please make sure you have " +"uploaded a valid file." +msgstr "" + +#: .\cookbook\integration\integration.py:169 msgid "The following recipes were ignored because they already existed:" msgstr "De volgende recepten zijn genegeerd omdat ze al bestonden:" -#: .\cookbook\integration\integration.py:137 +#: .\cookbook\integration\integration.py:173 #, python-format msgid "Imported %s recipes." msgstr "%s recepten geïmporteerd." -#: .\cookbook\integration\paprika.py:44 +#: .\cookbook\integration\paprika.py:46 msgid "Notes" msgstr "Notities" -#: .\cookbook\integration\paprika.py:47 +#: .\cookbook\integration\paprika.py:49 msgid "Nutritional Information" msgstr "Voedingswaarde" -#: .\cookbook\integration\paprika.py:50 +#: .\cookbook\integration\paprika.py:53 msgid "Source" msgstr "Bron" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:75 +#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 -#: .\cookbook\templates\url_import.html:84 +#: .\cookbook\templates\url_import.html:224 +#: .\cookbook\templates\url_import.html:455 msgid "Servings" msgstr "Porties" @@ -318,11 +338,11 @@ msgid "Waiting time" msgstr "Wachttijd" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:69 +#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "Bereidingstijd" -#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:71 +#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:78 #: .\cookbook\templates\forms\ingredients.html:7 #: .\cookbook\templates\index.html:7 msgid "Cookbook" @@ -348,44 +368,74 @@ msgstr "Avondeten" msgid "Other" msgstr "Overige" -#: .\cookbook\models.py:110 .\cookbook\templates\shopping_list.html:48 +#: .\cookbook\models.py:71 +msgid "" +"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " +"upload." +msgstr "" + +#: .\cookbook\models.py:121 .\cookbook\templates\search.html:7 +#: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "Zoeken" -#: .\cookbook\models.py:111 .\cookbook\templates\base.html:85 +#: .\cookbook\models.py:122 .\cookbook\templates\base.html:92 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:224 .\cookbook\views\new.py:188 +#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 msgid "Meal-Plan" msgstr "Maaltijdplan" -#: .\cookbook\models.py:112 .\cookbook\templates\base.html:82 +#: .\cookbook\models.py:123 .\cookbook\templates\base.html:89 msgid "Books" msgstr "Boeken" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Small" msgstr "Klein" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Large" msgstr "Groot" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:198 +#: .\cookbook\models.py:131 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\templates\generic\new_template.html:14 +#: .\cookbook\templates\meal_plan.html:323 +msgid "New" +msgstr "Nieuw" + +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:202 msgid "Text" msgstr "Tekst" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:199 +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:203 msgid "Time" msgstr "Tijd" +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:204 +#: .\cookbook\templates\forms\edit_internal_recipe.html:218 +#, fuzzy +#| msgid "File ID" +msgid "File" +msgstr "Bestands ID" + +#: .\cookbook\serializer.py:109 +msgid "File uploads are not enabled for this Space." +msgstr "" + +#: .\cookbook\serializer.py:117 +msgid "You have reached your file upload limit." +msgstr "" + #: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 #: .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 #: .\cookbook\templates\shopping_list.html:33 +#: .\cookbook\templates\space.html:84 msgid "Edit" msgstr "Bewerken" @@ -399,10 +449,6 @@ msgstr "Bewerken" msgid "Delete" msgstr "Verwijderen" -#: .\cookbook\tables.py:144 -msgid "Link" -msgstr "Link" - #: .\cookbook\templates\404.html:5 msgid "404 Error" msgstr "404 Foutmelding" @@ -419,21 +465,126 @@ msgstr "Breng me Thuis" msgid "Report a Bug" msgstr "Rapporteer een bug" -#: .\cookbook\templates\account\login.html:7 -#: .\cookbook\templates\base.html:170 +#: .\cookbook\templates\account\email.html:6 +#: .\cookbook\templates\account\email.html:9 +msgid "E-mail Addresses" +msgstr "" + +#: .\cookbook\templates\account\email.html:11 +msgid "The following e-mail addresses are associated with your account:" +msgstr "" + +#: .\cookbook\templates\account\email.html:28 +msgid "Verified" +msgstr "" + +#: .\cookbook\templates\account\email.html:30 +msgid "Unverified" +msgstr "" + +#: .\cookbook\templates\account\email.html:32 +msgid "Primary" +msgstr "" + +#: .\cookbook\templates\account\email.html:39 +#, fuzzy +#| msgid "Make Header" +msgid "Make Primary" +msgstr "Stel in als kop" + +#: .\cookbook\templates\account\email.html:41 +msgid "Re-send Verification" +msgstr "" + +#: .\cookbook\templates\account\email.html:42 +#: .\cookbook\templates\socialaccount\connections.html:36 +msgid "Remove" +msgstr "Verwijder" + +#: .\cookbook\templates\account\email.html:50 +#, fuzzy +#| msgid "Warning" +msgid "Warning:" +msgstr "Waarschuwing" + +#: .\cookbook\templates\account\email.html:50 +msgid "" +"You currently do not have any e-mail address set up. You should really add " +"an e-mail address so you can receive notifications, reset your password, etc." +msgstr "" + +#: .\cookbook\templates\account\email.html:56 +msgid "Add E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email.html:61 +msgid "Add E-mail" +msgstr "" + +#: .\cookbook\templates\account\email.html:71 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:6 +#: .\cookbook\templates\account\email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that\n" +" %(email)s is an e-mail address " +"for user %(user_display)s\n" +" ." +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:22 +#: .\cookbook\templates\generic\delete_template.html:21 +msgid "Confirm" +msgstr "Bevestigen" + +#: .\cookbook\templates\account\email_confirm.html:29 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please\n" +" issue a new e-mail confirmation " +"request." +msgstr "" + +#: .\cookbook\templates\account\login.html:8 +#: .\cookbook\templates\base.html:180 msgid "Login" msgstr "Inloggen" -#: .\cookbook\templates\account\login.html:13 -#: .\cookbook\templates\account\login.html:28 +#: .\cookbook\templates\account\login.html:15 +#: .\cookbook\templates\account\login.html:31 +#: .\cookbook\templates\account\signup.html:69 +#: .\cookbook\templates\account\signup_closed.html:15 msgid "Sign In" msgstr "Log in" -#: .\cookbook\templates\account\login.html:38 +#: .\cookbook\templates\account\login.html:32 +#, fuzzy +#| msgid "Sign In" +msgid "Sign Up" +msgstr "Log in" + +#: .\cookbook\templates\account\login.html:36 +#: .\cookbook\templates\account\login.html:37 +#: .\cookbook\templates\account\password_reset.html:29 +msgid "Reset My Password" +msgstr "" + +#: .\cookbook\templates\account\login.html:37 +msgid "Lost your password?" +msgstr "" + +#: .\cookbook\templates\account\login.html:48 msgid "Social Login" msgstr "Socials login" -#: .\cookbook\templates\account\login.html:39 +#: .\cookbook\templates\account\login.html:49 msgid "You can use any of the following providers to sign in." msgstr "Je kan een van de volgende providers gebruiken om in te loggen." @@ -447,116 +598,168 @@ msgstr "Log uit" msgid "Are you sure you want to sign out?" msgstr "Weet je zeker dat je uit wil loggen?" -#: .\cookbook\templates\account\password_reset.html:5 -#: .\cookbook\templates\account\password_reset_done.html:5 +#: .\cookbook\templates\account\password_reset.html:7 +#: .\cookbook\templates\account\password_reset.html:13 +#: .\cookbook\templates\account\password_reset_done.html:7 +#: .\cookbook\templates\account\password_reset_done.html:10 msgid "Password Reset" msgstr "Wachtwoord reset" -#: .\cookbook\templates\account\password_reset.html:9 -#: .\cookbook\templates\account\password_reset_done.html:9 -msgid "Password reset is not implemented for the time being!" +#: .\cookbook\templates\account\password_reset.html:24 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." +msgstr "" + +#: .\cookbook\templates\account\password_reset.html:32 +#, fuzzy +#| msgid "Password reset is not implemented for the time being!" +msgid "Password reset is disabled on this instance." msgstr "Wachtwoord reset is nog niet geïmplementeerd!" -#: .\cookbook\templates\account\signup.html:5 +#: .\cookbook\templates\account\password_reset_done.html:16 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: .\cookbook\templates\account\signup.html:6 msgid "Register" msgstr "Registreer" -#: .\cookbook\templates\account\signup.html:9 -msgid "Create your Account" +#: .\cookbook\templates\account\signup.html:12 +#, fuzzy +#| msgid "Create your Account" +msgid "Create an Account" msgstr "Maak je account aan" -#: .\cookbook\templates\account\signup.html:14 +#: .\cookbook\templates\account\signup.html:42 +msgid "I accept the follwoing" +msgstr "" + +#: .\cookbook\templates\account\signup.html:45 +msgid "Terms and Conditions" +msgstr "" + +#: .\cookbook\templates\account\signup.html:48 +msgid "and" +msgstr "" + +#: .\cookbook\templates\account\signup.html:52 +msgid "Privacy Policy" +msgstr "" + +#: .\cookbook\templates\account\signup.html:65 msgid "Create User" msgstr "Maak gebruiker aan" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:160 +#: .\cookbook\templates\account\signup.html:69 +msgid "Already have an account?" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:5 +#: .\cookbook\templates\account\signup_closed.html:11 +msgid "Sign Up Closed" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:13 +msgid "We are sorry, but the sign up is currently closed." +msgstr "" + +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:170 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "API documentatie" -#: .\cookbook\templates\base.html:78 +#: .\cookbook\templates\base.html:85 msgid "Utensils" msgstr "Kookgerei" -#: .\cookbook\templates\base.html:88 +#: .\cookbook\templates\base.html:95 msgid "Shopping" msgstr "Winkelen" -#: .\cookbook\templates\base.html:102 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:93 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:66 +#: .\cookbook\templates\base.html:109 .\cookbook\views\delete.py:84 +#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 +#: .\cookbook\views\new.py:78 msgid "Keyword" msgstr "Etiket" -#: .\cookbook\templates\base.html:104 +#: .\cookbook\templates\base.html:111 msgid "Batch Edit" msgstr "Batchbewerking" -#: .\cookbook\templates\base.html:109 +#: .\cookbook\templates\base.html:116 msgid "Storage Data" msgstr "Dataopslag" -#: .\cookbook\templates\base.html:113 +#: .\cookbook\templates\base.html:120 msgid "Storage Backends" msgstr "Opslag Backends" -#: .\cookbook\templates\base.html:115 +#: .\cookbook\templates\base.html:122 msgid "Configure Sync" msgstr "Synchronisatie configureren" -#: .\cookbook\templates\base.html:117 +#: .\cookbook\templates\base.html:124 msgid "Discovered Recipes" msgstr "Ontdekte recepten" -#: .\cookbook\templates\base.html:119 +#: .\cookbook\templates\base.html:126 msgid "Discovery Log" msgstr "Ontdekkingslogboek" -#: .\cookbook\templates\base.html:121 .\cookbook\templates\stats.html:10 +#: .\cookbook\templates\base.html:128 .\cookbook\templates\stats.html:10 msgid "Statistics" msgstr "Statistieken" -#: .\cookbook\templates\base.html:123 +#: .\cookbook\templates\base.html:130 msgid "Units & Ingredients" msgstr "Eenheden & Ingrediënten" -#: .\cookbook\templates\base.html:125 +#: .\cookbook\templates\base.html:132 .\cookbook\templates\index.html:47 msgid "Import Recipe" msgstr "Recept importeren" -#: .\cookbook\templates\base.html:144 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:151 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:16 msgid "Settings" msgstr "Instellingen" -#: .\cookbook\templates\base.html:146 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:153 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "Geschiedenis" -#: .\cookbook\templates\base.html:150 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:155 .\cookbook\templates\space.html:7 +#, fuzzy +#| msgid "Settings" +msgid "Space Settings" +msgstr "Instellingen" + +#: .\cookbook\templates\base.html:160 .\cookbook\templates\system.html:13 msgid "System" msgstr "Systeem" -#: .\cookbook\templates\base.html:152 +#: .\cookbook\templates\base.html:162 msgid "Admin" msgstr "Beheer" -#: .\cookbook\templates\base.html:156 +#: .\cookbook\templates\base.html:166 msgid "Markdown Guide" msgstr "Markdown gids" -#: .\cookbook\templates\base.html:158 +#: .\cookbook\templates\base.html:168 msgid "GitHub" msgstr "GitHub" -#: .\cookbook\templates\base.html:162 +#: .\cookbook\templates\base.html:172 msgid "API Browser" msgstr "API Browser" -#: .\cookbook\templates\base.html:165 -msgid "Logout" -msgstr "Uitloggen" +#: .\cookbook\templates\base.html:175 +msgid "Log out" +msgstr "" #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" @@ -572,7 +775,7 @@ msgstr "" "Voeg de gespecificeerde etiketten toe aan alle recepten die een woord " "bevatten" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:76 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 msgid "Sync" msgstr "Synchroniseren" @@ -601,7 +804,7 @@ msgstr "Synchroniseer nu!" msgid "Importing Recipes" msgstr "Recepten aan het importeren" -#: .\cookbook\templates\batch\waiting.html:23 +#: .\cookbook\templates\batch\waiting.html:28 msgid "" "This can take a few minutes, depending on the number of recipes in sync, " "please wait." @@ -640,26 +843,33 @@ msgid "Export Recipes" msgstr "Recepten exporteren" #: .\cookbook\templates\export.html:14 .\cookbook\templates\export.html:20 -#: .\cookbook\templates\shopping_list.html:347 +#: .\cookbook\templates\shopping_list.html:351 #: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20 msgid "Export" msgstr "Exporteren" +#: .\cookbook\templates\files.html:7 +#, fuzzy +#| msgid "File ID" +msgid "Files" +msgstr "Bestands ID" + #: .\cookbook\templates\forms\edit_import_recipe.html:5 #: .\cookbook\templates\forms\edit_import_recipe.html:9 msgid "Import new Recipe" msgstr "Nieuw recept importeren" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:389 -#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:416 +#: .\cookbook\templates\forms\edit_internal_recipe.html:448 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:28 .\cookbook\templates\settings.html:35 -#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:73 -#: .\cookbook\templates\shopping_list.html:349 +#: .\cookbook\templates\settings.html:44 .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:114 +#: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "Opslaan" @@ -668,179 +878,188 @@ msgstr "Opslaan" msgid "Edit Recipe" msgstr "Recept bewerken" -#: .\cookbook\templates\forms\edit_internal_recipe.html:52 +#: .\cookbook\templates\forms\edit_internal_recipe.html:56 +#: .\cookbook\templates\url_import.html:171 msgid "Description" msgstr "Beschrijving" -#: .\cookbook\templates\forms\edit_internal_recipe.html:72 +#: .\cookbook\templates\forms\edit_internal_recipe.html:76 msgid "Waiting Time" msgstr "Wachttijd" -#: .\cookbook\templates\forms\edit_internal_recipe.html:78 +#: .\cookbook\templates\forms\edit_internal_recipe.html:82 msgid "Servings Text" msgstr "Porties tekst" -#: .\cookbook\templates\forms\edit_internal_recipe.html:89 +#: .\cookbook\templates\forms\edit_internal_recipe.html:93 msgid "Select Keywords" msgstr "Selecteer etiketten" -#: .\cookbook\templates\forms\edit_internal_recipe.html:90 -#: .\cookbook\templates\url_import.html:212 +#: .\cookbook\templates\forms\edit_internal_recipe.html:94 +#: .\cookbook\templates\url_import.html:583 msgid "Add Keyword" msgstr "Voeg Etiket toe" -#: .\cookbook\templates\forms\edit_internal_recipe.html:108 +#: .\cookbook\templates\forms\edit_internal_recipe.html:112 msgid "Nutrition" msgstr "Voedingswaarde" -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -#: .\cookbook\templates\forms\edit_internal_recipe.html:162 +#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:166 msgid "Delete Step" msgstr "Verwijder stap" -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:120 msgid "Calories" msgstr "Calorieën" -#: .\cookbook\templates\forms\edit_internal_recipe.html:119 +#: .\cookbook\templates\forms\edit_internal_recipe.html:123 msgid "Carbohydrates" msgstr "Koolhydraten" -#: .\cookbook\templates\forms\edit_internal_recipe.html:122 +#: .\cookbook\templates\forms\edit_internal_recipe.html:126 msgid "Fats" msgstr "Vetten" -#: .\cookbook\templates\forms\edit_internal_recipe.html:124 +#: .\cookbook\templates\forms\edit_internal_recipe.html:128 msgid "Proteins" msgstr "Eiwitten" -#: .\cookbook\templates\forms\edit_internal_recipe.html:146 -#: .\cookbook\templates\forms\edit_internal_recipe.html:454 +#: .\cookbook\templates\forms\edit_internal_recipe.html:150 +#: .\cookbook\templates\forms\edit_internal_recipe.html:481 msgid "Step" msgstr "Stap" -#: .\cookbook\templates\forms\edit_internal_recipe.html:167 +#: .\cookbook\templates\forms\edit_internal_recipe.html:171 msgid "Show as header" msgstr "Laat als kop zien" -#: .\cookbook\templates\forms\edit_internal_recipe.html:173 +#: .\cookbook\templates\forms\edit_internal_recipe.html:177 msgid "Hide as header" msgstr "Verbergen als kop" -#: .\cookbook\templates\forms\edit_internal_recipe.html:178 +#: .\cookbook\templates\forms\edit_internal_recipe.html:182 msgid "Move Up" msgstr "Verplaats omhoog" -#: .\cookbook\templates\forms\edit_internal_recipe.html:183 +#: .\cookbook\templates\forms\edit_internal_recipe.html:187 msgid "Move Down" msgstr "Verplaats omlaag" -#: .\cookbook\templates\forms\edit_internal_recipe.html:192 +#: .\cookbook\templates\forms\edit_internal_recipe.html:196 msgid "Step Name" msgstr "Stap naam" -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:200 msgid "Step Type" msgstr "Stap type" -#: .\cookbook\templates\forms\edit_internal_recipe.html:207 +#: .\cookbook\templates\forms\edit_internal_recipe.html:212 msgid "Step time in Minutes" msgstr "Tijdsduur stap in minuten" -#: .\cookbook\templates\forms\edit_internal_recipe.html:261 -#: .\cookbook\templates\shopping_list.html:183 -msgid "Select Unit" -msgstr "Selecteer eenheid" +#: .\cookbook\templates\forms\edit_internal_recipe.html:228 +#, fuzzy +#| msgid "Select one" +msgid "Select File" +msgstr "Selecteer één" -#: .\cookbook\templates\forms\edit_internal_recipe.html:262 -#: .\cookbook\templates\forms\edit_internal_recipe.html:286 -#: .\cookbook\templates\shopping_list.html:184 -#: .\cookbook\templates\shopping_list.html:206 -msgid "Create" -msgstr "Maak" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:263 -#: .\cookbook\templates\forms\edit_internal_recipe.html:287 -#: .\cookbook\templates\shopping_list.html:185 -#: .\cookbook\templates\shopping_list.html:207 -#: .\cookbook\templates\shopping_list.html:237 -#: .\cookbook\templates\shopping_list.html:261 -#: .\cookbook\templates\url_import.html:124 -#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\forms\edit_internal_recipe.html:229 +#: .\cookbook\templates\forms\edit_internal_recipe.html:290 +#: .\cookbook\templates\forms\edit_internal_recipe.html:314 +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 msgid "Select" msgstr "Selecteer" -#: .\cookbook\templates\forms\edit_internal_recipe.html:285 -#: .\cookbook\templates\shopping_list.html:205 +#: .\cookbook\templates\forms\edit_internal_recipe.html:288 +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "Selecteer eenheid" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:289 +#: .\cookbook\templates\forms\edit_internal_recipe.html:313 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "Maak" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:312 +#: .\cookbook\templates\shopping_list.html:209 msgid "Select Food" msgstr "Selecteer ingrediënt" -#: .\cookbook\templates\forms\edit_internal_recipe.html:302 +#: .\cookbook\templates\forms\edit_internal_recipe.html:329 #: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:171 +#: .\cookbook\templates\url_import.html:542 msgid "Note" msgstr "Notitie" -#: .\cookbook\templates\forms\edit_internal_recipe.html:319 +#: .\cookbook\templates\forms\edit_internal_recipe.html:346 msgid "Delete Ingredient" msgstr "Verwijder ingrediënt" -#: .\cookbook\templates\forms\edit_internal_recipe.html:325 +#: .\cookbook\templates\forms\edit_internal_recipe.html:352 msgid "Make Header" msgstr "Stel in als kop" -#: .\cookbook\templates\forms\edit_internal_recipe.html:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:358 msgid "Make Ingredient" msgstr "Maak ingrediënt" -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 +#: .\cookbook\templates\forms\edit_internal_recipe.html:364 msgid "Disable Amount" msgstr "Hoeveelheid uitschakelen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:343 +#: .\cookbook\templates\forms\edit_internal_recipe.html:370 msgid "Enable Amount" msgstr "Hoeveelheid inschakelen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:348 +#: .\cookbook\templates\forms\edit_internal_recipe.html:375 msgid "Copy Template Reference" msgstr "Kopieer sjabloon referentie" -#: .\cookbook\templates\forms\edit_internal_recipe.html:374 -#: .\cookbook\templates\url_import.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:401 +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 msgid "Instructions" msgstr "Instructies" -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:414 +#: .\cookbook\templates\forms\edit_internal_recipe.html:445 msgid "Save & View" msgstr "Opslaan & bekijken" -#: .\cookbook\templates\forms\edit_internal_recipe.html:391 -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 +#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:451 msgid "Add Step" msgstr "Voeg stap toe" -#: .\cookbook\templates\forms\edit_internal_recipe.html:394 -#: .\cookbook\templates\forms\edit_internal_recipe.html:428 +#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:455 msgid "Add Nutrition" msgstr "Voedingswaarde toevoegen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:396 -#: .\cookbook\templates\forms\edit_internal_recipe.html:430 +#: .\cookbook\templates\forms\edit_internal_recipe.html:423 +#: .\cookbook\templates\forms\edit_internal_recipe.html:457 msgid "Remove Nutrition" msgstr "Voedingswaarde verwijderen" -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -#: .\cookbook\templates\forms\edit_internal_recipe.html:433 +#: .\cookbook\templates\forms\edit_internal_recipe.html:425 +#: .\cookbook\templates\forms\edit_internal_recipe.html:460 msgid "View Recipe" msgstr "Bekijk recept" -#: .\cookbook\templates\forms\edit_internal_recipe.html:400 -#: .\cookbook\templates\forms\edit_internal_recipe.html:435 +#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\templates\forms\edit_internal_recipe.html:462 msgid "Delete Recipe" msgstr "Verwijder recept" -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 +#: .\cookbook\templates\forms\edit_internal_recipe.html:468 msgid "Steps" msgstr "Stappen" @@ -859,15 +1078,15 @@ msgid "" " " msgstr "" "\n" -" Het volgende formulier kan worden gebruikt wanneer per ongeluk twee (" -"of meer) eenheden of ingrediënten zijn gemaakt die eigenlijk hetzelfde zijn." -"\n" +" Het volgende formulier kan worden gebruikt wanneer per ongeluk twee " +"(of meer) eenheden of ingrediënten zijn gemaakt die eigenlijk hetzelfde " +"zijn.\n" " Het voegt de twee eenheden of ingrediënten samen en past alle bijbehorende " "recepten aan.\n" " " #: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\stats.html:26 +#: .\cookbook\templates\space.html:35 .\cookbook\templates\stats.html:26 msgid "Units" msgstr "Eenheden" @@ -889,10 +1108,6 @@ msgstr "Weet je zeker dat je deze ingrediënten wil samenvoegen?" msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "Weet je zeker dat je %(title)s: %(object)s wil verwijderen " -#: .\cookbook\templates\generic\delete_template.html:21 -msgid "Confirm" -msgstr "Bevestigen" - #: .\cookbook\templates\generic\edit_template.html:30 msgid "View" msgstr "Bekijken" @@ -914,12 +1129,6 @@ msgstr "Filtreren" msgid "Import all" msgstr "Alles importeren" -#: .\cookbook\templates\generic\new_template.html:6 -#: .\cookbook\templates\generic\new_template.html:14 -#: .\cookbook\templates\meal_plan.html:323 -msgid "New" -msgstr "Nieuw" - #: .\cookbook\templates\generic\table_template.html:76 #: .\cookbook\templates\recipes_table.html:121 msgid "previous" @@ -964,7 +1173,7 @@ msgstr "Sluiten" #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:264 .\cookbook\views\new.py:40 +#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "recept" @@ -1005,10 +1214,6 @@ msgstr "Zoek recept ..." msgid "New Recipe" msgstr "Nieuw recept" -#: .\cookbook\templates\index.html:47 -msgid "Website Import" -msgstr "Importeer website" - #: .\cookbook\templates\index.html:53 msgid "Advanced Search" msgstr "Geavanceerde zoekopdracht" @@ -1022,7 +1227,7 @@ msgid "Last viewed" msgstr "Laatst bekeken" #: .\cookbook\templates\index.html:87 .\cookbook\templates\meal_plan.html:178 -#: .\cookbook\templates\stats.html:22 +#: .\cookbook\templates\space.html:29 .\cookbook\templates\stats.html:22 msgid "Recipes" msgstr "Recepten" @@ -1190,7 +1395,7 @@ msgid "New Entry" msgstr "Nieuw item" #: .\cookbook\templates\meal_plan.html:113 -#: .\cookbook\templates\shopping_list.html:52 +#: .\cookbook\templates\shopping_list.html:56 msgid "Search Recipe" msgstr "Zoek recept" @@ -1222,7 +1427,7 @@ msgstr "Maak alleen een notitie" #: .\cookbook\templates\meal_plan.html:168 #: .\cookbook\templates\shopping_list.html:7 #: .\cookbook\templates\shopping_list.html:29 -#: .\cookbook\templates\shopping_list.html:705 +#: .\cookbook\templates\shopping_list.html:714 msgid "Shopping List" msgstr "Boodschappenlijstje" @@ -1274,7 +1479,7 @@ msgstr "Gemaakt door" #: .\cookbook\templates\meal_plan.html:270 #: .\cookbook\templates\meal_plan_entry.html:20 -#: .\cookbook\templates\shopping_list.html:250 +#: .\cookbook\templates\shopping_list.html:254 msgid "Shared with" msgstr "Gedeeld met" @@ -1372,7 +1577,6 @@ msgstr "Je hebt geen groepen en kan daarom deze applicatie niet gebruiken." #: .\cookbook\templates\no_groups_info.html:18 #: .\cookbook\templates\no_perm_info.html:15 -#: .\cookbook\templates\no_space_info.html:15 msgid "Please contact your administrator." msgstr "Neem contact op met je beheerder." @@ -1389,14 +1593,53 @@ msgstr "" "Je beschikt niet over de juiste rechten om deze pagina te bekijken of deze " "actie uit te voeren." -#: .\cookbook\templates\no_space_info.html:5 -#: .\cookbook\templates\no_space_info.html:12 +#: .\cookbook\templates\no_space_info.html:6 +#: .\cookbook\templates\no_space_info.html:13 msgid "No Space" msgstr "Geen ruimte" -#: .\cookbook\templates\no_space_info.html:15 -msgid "You are not a member of any space." -msgstr "Je bent geen lid van een ruimte." +#: .\cookbook\templates\no_space_info.html:17 +msgid "" +"Recipes, foods, shopping lists and more are organized in spaces of one or " +"more people." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:18 +msgid "" +"You can either be invited into an existing space or create your own one." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:31 +#: .\cookbook\templates\no_space_info.html:40 +#, fuzzy +#| msgid "No Space" +msgid "Join Space" +msgstr "Geen ruimte" + +#: .\cookbook\templates\no_space_info.html:34 +msgid "Join an existing space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:35 +msgid "" +"To join an existing space either enter your invite token or click on the " +"invite link the space owner send you." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:48 +#: .\cookbook\templates\no_space_info.html:56 +#, fuzzy +#| msgid "Create User" +msgid "Create Space" +msgstr "Maak gebruiker aan" + +#: .\cookbook\templates\no_space_info.html:51 +msgid "Create your own recipe space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:52 +msgid "Start your own recipe space and invite other users to it." +msgstr "" #: .\cookbook\templates\offline.html:6 msgid "Offline" @@ -1414,28 +1657,29 @@ msgstr "" "De recepten hieronder zijn beschikbaar om offline te bekijken omdat je ze " "recent bekeken hebt. Houd er rekening mee dat de data mogelijk verouderd is." -#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\stats.html:47 +#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\space.html:56 +#: .\cookbook\templates\stats.html:47 msgid "Comments" msgstr "Opmerkingen" #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:170 +#: .\cookbook\views\edit.py:179 msgid "Comment" msgstr "Opmerking" #: .\cookbook\templates\recipes_table.html:19 #: .\cookbook\templates\recipes_table.html:23 -#: .\cookbook\templates\url_import.html:69 +#: .\cookbook\templates\url_import.html:440 msgid "Recipe Image" msgstr "Recept afbeelding" #: .\cookbook\templates\recipes_table.html:51 -#: .\cookbook\templates\url_import.html:74 +#: .\cookbook\templates\url_import.html:445 msgid "Preparation time ca." msgstr "Geschatte voorbereidingstijd" #: .\cookbook\templates\recipes_table.html:57 -#: .\cookbook\templates\url_import.html:79 +#: .\cookbook\templates\url_import.html:450 msgid "Waiting time ca." msgstr "Geschatte wachttijd" @@ -1451,27 +1695,67 @@ msgstr "Bereiding loggen" msgid "Recipe Home" msgstr "Recept thuis" -#: .\cookbook\templates\settings.html:22 +#: .\cookbook\templates\settings.html:23 msgid "Account" msgstr "Account" -#: .\cookbook\templates\settings.html:38 -msgid "Link social account" +#: .\cookbook\templates\settings.html:27 +msgid "Preferences" +msgstr "" + +#: .\cookbook\templates\settings.html:31 +#, fuzzy +#| msgid "Settings" +msgid "API-Settings" +msgstr "Instellingen" + +#: .\cookbook\templates\settings.html:39 +#, fuzzy +#| msgid "Settings" +msgid "Name Settings" +msgstr "Instellingen" + +#: .\cookbook\templates\settings.html:47 +#, fuzzy +#| msgid "Password Reset" +msgid "Password Settings" +msgstr "Wachtwoord reset" + +#: .\cookbook\templates\settings.html:55 +#, fuzzy +#| msgid "Settings" +msgid "Email Settings" +msgstr "Instellingen" + +#: .\cookbook\templates\settings.html:57 +msgid "Manage Email Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:61 +#, fuzzy +#| msgid "Social Login" +msgid "Social" +msgstr "Socials login" + +#: .\cookbook\templates\settings.html:63 +#, fuzzy +#| msgid "Link social account" +msgid "Manage Social Accounts" msgstr "Koppel account socials" -#: .\cookbook\templates\settings.html:42 +#: .\cookbook\templates\settings.html:75 msgid "Language" msgstr "Taal" -#: .\cookbook\templates\settings.html:67 +#: .\cookbook\templates\settings.html:105 msgid "Style" msgstr "Stijl" -#: .\cookbook\templates\settings.html:79 +#: .\cookbook\templates\settings.html:125 msgid "API Token" msgstr "API Token" -#: .\cookbook\templates\settings.html:80 +#: .\cookbook\templates\settings.html:126 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." @@ -1479,7 +1763,7 @@ msgstr "" "Je kan zowel basale verificatie als verificatie op basis van tokens " "gebruiken om toegang tot de REST API te krijgen." -#: .\cookbook\templates\settings.html:92 +#: .\cookbook\templates\settings.html:143 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" @@ -1487,7 +1771,7 @@ msgstr "" "Gebruik de token als een 'Authorization header'voorafgegaan door het woord " "token zoals in de volgende voorbeelden:" -#: .\cookbook\templates\settings.html:94 +#: .\cookbook\templates\settings.html:145 msgid "or" msgstr "of" @@ -1509,58 +1793,55 @@ msgstr "" msgid "Create Superuser account" msgstr "Maak Superuser acount" -#: .\cookbook\templates\shopping_list.html:75 +#: .\cookbook\templates\shopping_list.html:79 msgid "Shopping Recipes" msgstr "Boodschappen recepten" -#: .\cookbook\templates\shopping_list.html:79 +#: .\cookbook\templates\shopping_list.html:83 msgid "No recipes selected" msgstr "Geen recepten geselecteerd" -#: .\cookbook\templates\shopping_list.html:146 +#: .\cookbook\templates\shopping_list.html:150 msgid "Entry Mode" msgstr "Invoermodus" -#: .\cookbook\templates\shopping_list.html:154 +#: .\cookbook\templates\shopping_list.html:158 msgid "Add Entry" msgstr "Zet op lijst" -#: .\cookbook\templates\shopping_list.html:170 +#: .\cookbook\templates\shopping_list.html:174 msgid "Amount" msgstr "Hoeveelheid" -#: .\cookbook\templates\shopping_list.html:226 +#: .\cookbook\templates\shopping_list.html:230 +#: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "Supermarkt" -#: .\cookbook\templates\shopping_list.html:236 +#: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "Selecteer supermarkt" -#: .\cookbook\templates\shopping_list.html:260 +#: .\cookbook\templates\shopping_list.html:264 msgid "Select User" msgstr "Selecteer gebruiker" -#: .\cookbook\templates\shopping_list.html:279 +#: .\cookbook\templates\shopping_list.html:283 msgid "Finished" msgstr "Afgerond" -#: .\cookbook\templates\shopping_list.html:292 +#: .\cookbook\templates\shopping_list.html:296 msgid "You are offline, shopping list might not syncronize." msgstr "Je bent offline, boodschappenlijst synchroniseert mogelijk niet." -#: .\cookbook\templates\shopping_list.html:357 +#: .\cookbook\templates\shopping_list.html:361 msgid "Copy/Export" msgstr "Kopieër/exporteer" -#: .\cookbook\templates\shopping_list.html:361 +#: .\cookbook\templates\shopping_list.html:365 msgid "List Prefix" msgstr "Lijst voorvoegsel" -#: .\cookbook\templates\shopping_list.html:708 -msgid "There was an error creating a resource!" -msgstr "Er is een fout opgetreden bij het maken van een hulpbron!" - #: .\cookbook\templates\socialaccount\connections.html:4 #: .\cookbook\templates\socialaccount\connections.html:7 msgid "Account Connections" @@ -1574,10 +1855,6 @@ msgstr "" "Je kan inloggen met een account van een van de onderstaande derde \n" "partijen:" -#: .\cookbook\templates\socialaccount\connections.html:36 -msgid "Remove" -msgstr "Verwijder" - #: .\cookbook\templates\socialaccount\connections.html:44 msgid "" "You currently have no social network accounts connected to this account." @@ -1588,38 +1865,99 @@ msgstr "" msgid "Add a 3rd Party Account" msgstr "Voeg account van een 3e partij toe" -#: .\cookbook\templates\stats.html:4 -msgid "Stats" -msgstr "Statistieken" +#: .\cookbook\templates\space.html:18 +#, fuzzy +#| msgid "Description" +msgid "Manage Subscription" +msgstr "Beschrijving" -#: .\cookbook\templates\stats.html:19 +#: .\cookbook\templates\space.html:26 .\cookbook\templates\stats.html:19 msgid "Number of objects" msgstr "Aantal objecten" -#: .\cookbook\templates\stats.html:30 +#: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:30 msgid "Recipe Imports" msgstr "Geïmporteerde recepten" -#: .\cookbook\templates\stats.html:38 +#: .\cookbook\templates\space.html:47 .\cookbook\templates\stats.html:38 msgid "Objects stats" msgstr "Object statistieken" -#: .\cookbook\templates\stats.html:41 +#: .\cookbook\templates\space.html:50 .\cookbook\templates\stats.html:41 msgid "Recipes without Keywords" msgstr "Recepten zonder etiketten" -#: .\cookbook\templates\stats.html:43 +#: .\cookbook\templates\space.html:52 .\cookbook\templates\stats.html:43 msgid "External Recipes" msgstr "Externe recepten" -#: .\cookbook\templates\stats.html:45 +#: .\cookbook\templates\space.html:54 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "Interne recepten" -#: .\cookbook\templates\system.html:21 .\cookbook\views\lists.py:115 +#: .\cookbook\templates\space.html:67 +msgid "Members" +msgstr "" + +#: .\cookbook\templates\space.html:71 +#, fuzzy +#| msgid "Invite Links" +msgid "Invite User" +msgstr "Uitnodigingslink" + +#: .\cookbook\templates\space.html:82 +msgid "User" +msgstr "" + +#: .\cookbook\templates\space.html:83 +msgid "Groups" +msgstr "" + +#: .\cookbook\templates\space.html:99 +#, fuzzy +#| msgid "Admin" +msgid "admin" +msgstr "Beheer" + +#: .\cookbook\templates\space.html:100 +msgid "user" +msgstr "" + +#: .\cookbook\templates\space.html:101 +msgid "guest" +msgstr "" + +#: .\cookbook\templates\space.html:102 +#, fuzzy +#| msgid "Remove" +msgid "remove" +msgstr "Verwijder" + +#: .\cookbook\templates\space.html:106 +msgid "Update" +msgstr "" + +#: .\cookbook\templates\space.html:110 +#, fuzzy +#| msgid "You cannot edit this storage!" +msgid "You cannot edit yourself." +msgstr "Je kan deze opslag niet bewerken!" + +#: .\cookbook\templates\space.html:117 +#, fuzzy +#| msgid "There are no recipes in this book yet." +msgid "There are no members in your space yet!" +msgstr "In dit boek bestaan nog geen recepten." + +#: .\cookbook\templates\space.html:124 .\cookbook\templates\system.html:21 +#: .\cookbook\views\lists.py:115 msgid "Invite Links" msgstr "Uitnodigingslink" +#: .\cookbook\templates\stats.html:4 +msgid "Stats" +msgstr "Statistieken" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "Toon links" @@ -1748,45 +2086,157 @@ msgstr "" " alleen werken met Postgres databases.\n" " " -#: .\cookbook\templates\url_import.html:5 +#: .\cookbook\templates\url_import.html:6 msgid "URL Import" msgstr "Importeer URL" -#: .\cookbook\templates\url_import.html:23 +#: .\cookbook\templates\url_import.html:31 +msgid "Drag me to your bookmarks to import recipes from anywhere" +msgstr "" + +#: .\cookbook\templates\url_import.html:32 +#, fuzzy +#| msgid "Bookmark saved!" +msgid "Bookmark Me!" +msgstr "Bladwijzer opgeslagen!" + +#: .\cookbook\templates\url_import.html:61 msgid "Enter website URL" msgstr "Vul website URL in" -#: .\cookbook\templates\url_import.html:36 -msgid "Enter json directly" -msgstr "Geef json direct op" +#: .\cookbook\templates\url_import.html:97 +msgid "Select recipe files to import or drop them here..." +msgstr "" -#: .\cookbook\templates\url_import.html:57 +#: .\cookbook\templates\url_import.html:118 +msgid "Paste json or html source here to load recipe." +msgstr "" + +#: .\cookbook\templates\url_import.html:146 +#, fuzzy +#| msgid "View Recipe" +msgid "Preview Recipe Data" +msgstr "Bekijk recept" + +#: .\cookbook\templates\url_import.html:147 +msgid "Drag recipe attributes from the right into the appropriate box below." +msgstr "" + +#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\url_import.html:173 +#: .\cookbook\templates\url_import.html:190 +#: .\cookbook\templates\url_import.html:209 +#: .\cookbook\templates\url_import.html:227 +#: .\cookbook\templates\url_import.html:242 +#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:273 +#: .\cookbook\templates\url_import.html:300 +#: .\cookbook\templates\url_import.html:351 +msgid "Clear Contents" +msgstr "" + +#: .\cookbook\templates\url_import.html:158 +msgid "Text dragged here will be appended to the name." +msgstr "" + +#: .\cookbook\templates\url_import.html:175 +msgid "Text dragged here will be appended to the description." +msgstr "" + +#: .\cookbook\templates\url_import.html:192 +msgid "Keywords dragged here will be appended to current list" +msgstr "" + +#: .\cookbook\templates\url_import.html:207 +msgid "Image" +msgstr "" + +#: .\cookbook\templates\url_import.html:239 +#, fuzzy +#| msgid "Preparation Time" +msgid "Prep Time" +msgstr "Bereidingstijd" + +#: .\cookbook\templates\url_import.html:254 +#, fuzzy +#| msgid "Time" +msgid "Cook Time" +msgstr "Tijd" + +#: .\cookbook\templates\url_import.html:275 +msgid "Ingredients dragged here will be appended to current list." +msgstr "" + +#: .\cookbook\templates\url_import.html:302 +msgid "" +"Recipe instructions dragged here will be appended to current instructions." +msgstr "" + +#: .\cookbook\templates\url_import.html:325 +#, fuzzy +#| msgid "Discovered Recipes" +msgid "Discovered Attributes" +msgstr "Ontdekte recepten" + +#: .\cookbook\templates\url_import.html:327 +msgid "" +"Drag recipe attributes from below into the appropriate box on the left. " +"Click any node to display its full properties." +msgstr "" + +#: .\cookbook\templates\url_import.html:344 +#, fuzzy +#| msgid "Show as header" +msgid "Show Blank Field" +msgstr "Laat als kop zien" + +#: .\cookbook\templates\url_import.html:349 +msgid "Blank Field" +msgstr "" + +#: .\cookbook\templates\url_import.html:353 +msgid "Items dragged to Blank Field will be appended." +msgstr "" + +#: .\cookbook\templates\url_import.html:400 +#, fuzzy +#| msgid "Delete Step" +msgid "Delete Text" +msgstr "Verwijder stap" + +#: .\cookbook\templates\url_import.html:413 +#, fuzzy +#| msgid "Delete Recipe" +msgid "Delete image" +msgstr "Verwijder recept" + +#: .\cookbook\templates\url_import.html:429 msgid "Recipe Name" msgstr "Naam Recept" -#: .\cookbook\templates\url_import.html:62 +#: .\cookbook\templates\url_import.html:433 msgid "Recipe Description" msgstr "Beschrijving recept" -#: .\cookbook\templates\url_import.html:123 -#: .\cookbook\templates\url_import.html:155 -#: .\cookbook\templates\url_import.html:211 +#: .\cookbook\templates\url_import.html:494 +#: .\cookbook\templates\url_import.html:526 +#: .\cookbook\templates\url_import.html:582 msgid "Select one" msgstr "Selecteer één" -#: .\cookbook\templates\url_import.html:225 +#: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "Alle etiketten" -#: .\cookbook\templates\url_import.html:228 +#: .\cookbook\templates\url_import.html:599 msgid "Import all keywords, not only the ones already existing." msgstr "Importeer alle etiketten, niet alleen de bestaande." -#: .\cookbook\templates\url_import.html:255 +#: .\cookbook\templates\url_import.html:626 msgid "Information" msgstr "Informatie" -#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:628 msgid "" " Only websites containing ld+json or microdata information can currently\n" " be imported. Most big recipe pages " @@ -1804,49 +2254,79 @@ msgstr "" "vrij om een voorbeeld te posten in \n" " de GitHub issues." -#: .\cookbook\templates\url_import.html:265 +#: .\cookbook\templates\url_import.html:636 msgid "Google ld+json Info" msgstr "Google Id+json Info" -#: .\cookbook\templates\url_import.html:268 +#: .\cookbook\templates\url_import.html:639 msgid "GitHub Issues" msgstr "GitHub issues" -#: .\cookbook\templates\url_import.html:270 +#: .\cookbook\templates\url_import.html:641 msgid "Recipe Markup Specification" msgstr "Recept opmaak specificatie" -#: .\cookbook\views\api.py:71 +#: .\cookbook\views\api.py:77 msgid "Parameter updated_at incorrectly formatted" msgstr "Parameter updatet_at is onjuist geformateerd" -#: .\cookbook\views\api.py:455 .\cookbook\views\views.py:226 +#: .\cookbook\views\api.py:553 .\cookbook\views\views.py:295 msgid "This feature is not available in the demo version!" msgstr "Deze optie is niet beschikbaar in de demo versie!" -#: .\cookbook\views\api.py:478 +#: .\cookbook\views\api.py:576 msgid "Sync successful!" msgstr "Synchronisatie succesvol!" -#: .\cookbook\views\api.py:483 +#: .\cookbook\views\api.py:581 msgid "Error synchronizing with Storage" msgstr "Er is een fout opgetreden bij het synchroniseren met Opslag" -#: .\cookbook\views\api.py:556 .\cookbook\views\api.py:576 +#: .\cookbook\views\api.py:649 +msgid "Nothing to do." +msgstr "" + +#: .\cookbook\views\api.py:664 +msgid "The requested site provided malformed data and cannot be read." +msgstr "" +"De opgevraagde site heeft misvormde data verstrekt en kan niet gelezen " +"worden." + +#: .\cookbook\views\api.py:671 msgid "The requested page could not be found." msgstr "De opgevraagde pagina kon niet gevonden worden." -#: .\cookbook\views\api.py:585 +#: .\cookbook\views\api.py:680 msgid "" -"The requested page refused to provide any information (Status Code 403)." +"The requested site does not provide any recognized data format to import the " +"recipe from." msgstr "" -"De opgevraagde pagina weigert informatie te verstrekken (Statuscode 403)." +"De opgevraagde site biedt geen bekend gegevensformaat aan om het recept van " +"te importeren." -#: .\cookbook\views\api.py:611 -msgid "Could not parse correctly..." -msgstr "Kon niet goed verwerken.." +#: .\cookbook\views\api.py:694 +#, fuzzy +#| msgid "The requested page could not be found." +msgid "No useable data could be found." +msgstr "De opgevraagde pagina kon niet gevonden worden." -#: .\cookbook\views\data.py:94 +#: .\cookbook\views\api.py:710 +msgid "I couldn't find anything to do." +msgstr "" + +#: .\cookbook\views\data.py:30 .\cookbook\views\data.py:121 +#: .\cookbook\views\edit.py:50 .\cookbook\views\import_export.py:67 +#: .\cookbook\views\new.py:32 +msgid "You have reached the maximum number of recipes for your space." +msgstr "" + +#: .\cookbook\views\data.py:34 .\cookbook\views\data.py:125 +#: .\cookbook\views\edit.py:54 .\cookbook\views\import_export.py:71 +#: .\cookbook\views\new.py:36 +msgid "You have more users than allowed in your space." +msgstr "" + +#: .\cookbook\views\data.py:103 #, python-format msgid "Batch edit done. %(count)d recipe was updated." msgid_plural "Batch edit done. %(count)d Recipes where updated." @@ -1858,7 +2338,7 @@ msgid "Monitor" msgstr "Bewaker" #: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:86 +#: .\cookbook\views\new.py:98 msgid "Storage Backend" msgstr "Opslag backend" @@ -1869,8 +2349,8 @@ msgstr "" "Dit Opslag backend kon niet verwijderd worden omdat het gebruikt wordt in " "tenminste een Bewaker." -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:204 -#: .\cookbook\views\new.py:144 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 +#: .\cookbook\views\new.py:156 msgid "Recipe Book" msgstr "Kookboek" @@ -1878,55 +2358,55 @@ msgstr "Kookboek" msgid "Bookmarks" msgstr "Bladwijzers" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:214 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 msgid "Invite Link" msgstr "Uitnodigingslink" -#: .\cookbook\views\edit.py:110 +#: .\cookbook\views\edit.py:119 msgid "Food" msgstr "Ingrediënt" -#: .\cookbook\views\edit.py:119 +#: .\cookbook\views\edit.py:128 msgid "You cannot edit this storage!" msgstr "Je kan deze opslag niet bewerken!" -#: .\cookbook\views\edit.py:139 +#: .\cookbook\views\edit.py:148 msgid "Storage saved!" msgstr "Opslag opgeslagen!" -#: .\cookbook\views\edit.py:145 +#: .\cookbook\views\edit.py:154 msgid "There was an error updating this storage backend!" msgstr "Er is een fout opgetreden bij het updaten van deze opslag backend!" -#: .\cookbook\views\edit.py:156 +#: .\cookbook\views\edit.py:165 msgid "Storage" msgstr "Opslag" -#: .\cookbook\views\edit.py:252 +#: .\cookbook\views\edit.py:261 msgid "Changes saved!" msgstr "Wijzigingen opgeslagen!" -#: .\cookbook\views\edit.py:256 +#: .\cookbook\views\edit.py:265 msgid "Error saving changes!" msgstr "Fout bij het opslaan van de wijzigingen!" -#: .\cookbook\views\edit.py:289 +#: .\cookbook\views\edit.py:299 msgid "Units merged!" msgstr "Eenheden samengevoegd!" -#: .\cookbook\views\edit.py:291 .\cookbook\views\edit.py:307 +#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 msgid "Cannot merge with the same object!" msgstr "Kan niet met hetzelfde object samenvoegen!" -#: .\cookbook\views\edit.py:305 +#: .\cookbook\views\edit.py:315 msgid "Foods merged!" msgstr "Ingrediënten samengevoegd!" -#: .\cookbook\views\import_export.py:73 +#: .\cookbook\views\import_export.py:93 msgid "Importing is not implemented for this provider" msgstr "Importeren is voor deze provider niet geïmplementeerd" -#: .\cookbook\views\import_export.py:92 +#: .\cookbook\views\import_export.py:115 msgid "Exporting is not implemented for this provider" msgstr "Exporteren is voor deze provider niet geïmplementeerd" @@ -1942,23 +2422,77 @@ msgstr "Ontdekken" msgid "Shopping Lists" msgstr "Boodschappenlijst" -#: .\cookbook\views\new.py:111 +#: .\cookbook\views\new.py:123 msgid "Imported new recipe!" msgstr "Nieuw recept geïmporteerd!" -#: .\cookbook\views\new.py:114 +#: .\cookbook\views\new.py:126 msgid "There was an error importing this recipe!" msgstr "Er is een fout opgetreden bij het importeren van dit recept!" -#: .\cookbook\views\views.py:123 +#: .\cookbook\views\new.py:226 +msgid "Hello" +msgstr "" + +#: .\cookbook\views\new.py:226 +msgid "You have been invited by " +msgstr "" + +#: .\cookbook\views\new.py:227 +msgid " to join their Tandoor Recipes space " +msgstr "" + +#: .\cookbook\views\new.py:228 +msgid "Click the following link to activate your account: " +msgstr "" + +#: .\cookbook\views\new.py:229 +msgid "" +"If the link does not work use the following code to manually join the space: " +msgstr "" + +#: .\cookbook\views\new.py:230 +msgid "The invitation is valid until " +msgstr "" + +#: .\cookbook\views\new.py:231 +msgid "" +"Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " +msgstr "" + +#: .\cookbook\views\new.py:234 +msgid "Tandoor Recipes Invite" +msgstr "" + +#: .\cookbook\views\new.py:241 +msgid "Invite link successfully send to user." +msgstr "" + +#: .\cookbook\views\new.py:244 +msgid "" +"You have send to many emails, please share the link manually or wait a few " +"hours." +msgstr "" + +#: .\cookbook\views\new.py:246 +msgid "Email to user could not be send, please share link manually." +msgstr "" + +#: .\cookbook\views\views.py:125 +msgid "" +"You have successfully created your own recipe space. Start by adding some " +"recipes or invite other people to join you." +msgstr "" + +#: .\cookbook\views\views.py:173 msgid "You do not have the required permissions to perform this action!" msgstr "Je beschikt niet over de juiste rechten om deze actie uit te voeren!" -#: .\cookbook\views\views.py:134 +#: .\cookbook\views\views.py:184 msgid "Comment saved!" msgstr "Opmerking opgeslagen!" -#: .\cookbook\views\views.py:326 +#: .\cookbook\views\views.py:396 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -1969,22 +2503,67 @@ msgstr "" "documentatie raad moeten plegen voor een methode om je wachtwoord te " "resetten." -#: .\cookbook\views\views.py:333 .\cookbook\views\views.py:378 +#: .\cookbook\views\views.py:403 msgid "Passwords dont match!" msgstr "Wachtwoorden komen niet overeen!" -#: .\cookbook\views\views.py:349 .\cookbook\views\views.py:385 +#: .\cookbook\views\views.py:419 msgid "User has been created, please login!" msgstr "Gebruiker is gecreëerd, Log in alstublieft!" -#: .\cookbook\views\views.py:365 +#: .\cookbook\views\views.py:435 msgid "Malformed Invite Link supplied!" msgstr "Onjuiste uitnodigingslink opgegeven!" -#: .\cookbook\views\views.py:405 +#: .\cookbook\views\views.py:441 +#, fuzzy +#| msgid "You are not logged in and therefore cannot view this page!" +msgid "You are already member of a space and therefore cannot join this one." +msgstr "Je bent niet ingelogd en kan deze pagina daarom niet bekijken!" + +#: .\cookbook\views\views.py:452 +msgid "Successfully joined space." +msgstr "" + +#: .\cookbook\views\views.py:458 msgid "Invite Link not valid or already used!" msgstr "De uitnodigingslink is niet valide of al gebruikt!" +#~ msgid "" +#~ "A username is not required, if left blank the new user can choose one." +#~ msgstr "" +#~ "Een gebruikersnaam is niet verplicht. Als het veld leeg is kan de " +#~ "gebruiker er een kiezen." + +#~ msgid "Imported from" +#~ msgstr "Geïmporteerd van" + +#~ msgid "Link" +#~ msgstr "Link" + +#~ msgid "Logout" +#~ msgstr "Uitloggen" + +#~ msgid "Website Import" +#~ msgstr "Importeer website" + +#~ msgid "You are not a member of any space." +#~ msgstr "Je bent geen lid van een ruimte." + +#~ msgid "There was an error creating a resource!" +#~ msgstr "Er is een fout opgetreden bij het maken van een hulpbron!" + +#~ msgid "Enter json directly" +#~ msgstr "Geef json direct op" + +#~ msgid "" +#~ "The requested page refused to provide any information (Status Code 403)." +#~ msgstr "" +#~ "De opgevraagde pagina weigert informatie te verstrekken (Statuscode 403)." + +#~ msgid "Could not parse correctly..." +#~ msgstr "Kon niet goed verwerken.." + #~ msgid "Number of servings" #~ msgstr "Porties" @@ -2006,6 +2585,3 @@ msgstr "De uitnodigingslink is niet valide of al gebruikt!" #~ msgid "This recipe is already linked to the book!" #~ msgstr "Dit recept is al aan het boek gekoppeld!" - -#~ msgid "Bookmark saved!" -#~ msgstr "Bladwijzer opgeslagen!" diff --git a/cookbook/locale/pt/LC_MESSAGES/django.po b/cookbook/locale/pt/LC_MESSAGES/django.po index d796cbf79..7c50f46ed 100644 --- a/cookbook/locale/pt/LC_MESSAGES/django.po +++ b/cookbook/locale/pt/LC_MESSAGES/django.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: 2020-06-02 19:28+0000\n" "Last-Translator: João Cunha , 2020\n" "Language-Team: Portuguese (https://www.transifex.com/django-recipes/" @@ -23,48 +23,49 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:91 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 +#: .\cookbook\templates\forms\edit_internal_recipe.html:246 #: .\cookbook\templates\forms\ingredients.html:34 -#: .\cookbook\templates\stats.html:28 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\space.html:37 .\cookbook\templates\stats.html:28 +#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 msgid "Ingredients" msgstr "Ingredientes" -#: .\cookbook\forms.py:45 +#: .\cookbook\forms.py:49 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" msgstr "Cor da barra de navegação." -#: .\cookbook\forms.py:46 +#: .\cookbook\forms.py:51 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "Unidade defeito a ser usada quando um novo ingrediente for inserido." -#: .\cookbook\forms.py:47 +#: .\cookbook\forms.py:53 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" msgstr "" -#: .\cookbook\forms.py:48 +#: .\cookbook\forms.py:56 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." msgstr "" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:58 msgid "Show recently viewed recipes on search page." msgstr "Mostrar receitas recentes na página de pesquisa." -#: .\cookbook\forms.py:50 +#: .\cookbook\forms.py:59 msgid "Number of decimals to round ingredients." msgstr "Número de casas decimais para arredondamentos." -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:60 msgid "If you want to be able to create and see comments underneath recipes." msgstr "" -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:62 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -72,11 +73,11 @@ msgid "" "mobile data. If lower than instance limit it is reset when saving." msgstr "" -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:65 msgid "Makes the navbar stick to the top of the page." msgstr "" -#: .\cookbook\forms.py:72 +#: .\cookbook\forms.py:81 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" @@ -84,91 +85,94 @@ msgstr "" "Ambos os campos são opcionais. Se nenhum for preenchido o nome de utilizador " "será apresentado." -#: .\cookbook\forms.py:93 .\cookbook\forms.py:315 -#: .\cookbook\templates\forms\edit_internal_recipe.html:45 +#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "Nome" -#: .\cookbook\forms.py:94 .\cookbook\forms.py:316 -#: .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:81 -#: .\cookbook\templates\stats.html:24 .\cookbook\templates\url_import.html:202 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 +#: .\cookbook\templates\base.html:105 +#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\templates\space.html:33 .\cookbook\templates\stats.html:24 +#: .\cookbook\templates\url_import.html:188 +#: .\cookbook\templates\url_import.html:573 msgid "Keywords" msgstr "Palavras-chave" -#: .\cookbook\forms.py:95 +#: .\cookbook\forms.py:104 msgid "Preparation time in minutes" msgstr "Tempo de preparação em minutos" -#: .\cookbook\forms.py:96 +#: .\cookbook\forms.py:105 msgid "Waiting time (cooking/baking) in minutes" msgstr "Tempo de espera (cozedura) em minutos" -#: .\cookbook\forms.py:97 .\cookbook\forms.py:317 +#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 msgid "Path" msgstr "Caminho" -#: .\cookbook\forms.py:98 +#: .\cookbook\forms.py:107 msgid "Storage UID" msgstr "UID de armazenamento" -#: .\cookbook\forms.py:121 +#: .\cookbook\forms.py:133 msgid "Default" msgstr "" -#: .\cookbook\forms.py:130 +#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:149 +#: .\cookbook\forms.py:164 msgid "New Unit" msgstr "Nova Unidade" -#: .\cookbook\forms.py:150 +#: .\cookbook\forms.py:165 msgid "New unit that other gets replaced by." msgstr "Nova unidade substituta." -#: .\cookbook\forms.py:155 +#: .\cookbook\forms.py:170 msgid "Old Unit" msgstr "Unidade Anterior" -#: .\cookbook\forms.py:156 +#: .\cookbook\forms.py:171 msgid "Unit that should be replaced." msgstr "Unidade a ser alterada." -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:187 msgid "New Food" msgstr "Novo Prato" -#: .\cookbook\forms.py:173 +#: .\cookbook\forms.py:188 msgid "New food that other gets replaced by." msgstr "Novo prato a ser alterado." -#: .\cookbook\forms.py:178 +#: .\cookbook\forms.py:193 msgid "Old Food" msgstr "Prato Anterior" -#: .\cookbook\forms.py:179 +#: .\cookbook\forms.py:194 msgid "Food that should be replaced." msgstr "Prato a ser alterado." -#: .\cookbook\forms.py:197 +#: .\cookbook\forms.py:212 msgid "Add your comment: " msgstr "Adicionar comentário:" -#: .\cookbook\forms.py:238 +#: .\cookbook\forms.py:253 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" "Deixar vazio para Dropbox e inserir palavra-passe de aplicação para " "Nextcloud." -#: .\cookbook\forms.py:245 +#: .\cookbook\forms.py:260 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "Deixar vazio para Nextcloud e inserir token api para Dropbox." -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:269 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -176,26 +180,26 @@ msgstr "" "Deixar vazio para Dropbox e inserir apenas url base para Nextcloud (/" "remote.php/webdav/é adicionado automaticamente). " -#: .\cookbook\forms.py:291 +#: .\cookbook\forms.py:307 msgid "Search String" msgstr "Procurar" -#: .\cookbook\forms.py:318 +#: .\cookbook\forms.py:334 msgid "File ID" msgstr "ID the ficheiro" -#: .\cookbook\forms.py:354 +#: .\cookbook\forms.py:370 msgid "You must provide at least a recipe or a title." msgstr "É necessário inserir uma receita ou um título." -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:383 msgid "You can list default users to share recipes with in the settings." msgstr "" "É possível escolher os utilizadores com quem partilhar receitas por defeitos " "nas definições." -#: .\cookbook\forms.py:368 -#: .\cookbook\templates\forms\edit_internal_recipe.html:377 +#: .\cookbook\forms.py:384 +#: .\cookbook\templates\forms\edit_internal_recipe.html:404 msgid "" "You can use markdown to format this field. See the docs here" @@ -203,48 +207,57 @@ msgstr "" "É possível utilizar markdown para editar este campo. Documentação disponível aqui" -#: .\cookbook\forms.py:393 -msgid "A username is not required, if left blank the new user can choose one." +#: .\cookbook\forms.py:409 +msgid "Maximum number of users for this space reached." msgstr "" -"Um nome de utilizador não é obrigatório. Se deixado em branco o novo " -"utilizador pode escolher o seu nome." -#: .\cookbook\helper\permission_helper.py:123 -#: .\cookbook\helper\permission_helper.py:129 -#: .\cookbook\helper\permission_helper.py:151 -#: .\cookbook\helper\permission_helper.py:196 -#: .\cookbook\helper\permission_helper.py:210 -#: .\cookbook\helper\permission_helper.py:221 -#: .\cookbook\helper\permission_helper.py:232 .\cookbook\views\data.py:30 -#: .\cookbook\views\views.py:112 .\cookbook\views\views.py:116 -#: .\cookbook\views\views.py:184 -msgid "You do not have the required permissions to view this page!" -msgstr "Sem permissões para aceder a esta página!" +#: .\cookbook\forms.py:415 +msgid "Email address already taken!" +msgstr "" -#: .\cookbook\helper\permission_helper.py:141 +#: .\cookbook\forms.py:423 +msgid "" +"An email address is not required but if present the invite link will be send " +"to the user." +msgstr "" + +#: .\cookbook\forms.py:438 +msgid "Name already taken." +msgstr "" + +#: .\cookbook\forms.py:449 +msgid "Accept Terms and Privacy" +msgstr "" + +#: .\cookbook\helper\AllAuthCustomAdapter.py:30 +msgid "" +"In order to prevent spam, the requested email was not send. Please wait a " +"few minutes and try again." +msgstr "" + +#: .\cookbook\helper\permission_helper.py:124 +#: .\cookbook\helper\permission_helper.py:144 .\cookbook\views\views.py:147 msgid "You are not logged in and therefore cannot view this page!" msgstr "Autenticação necessária para aceder a esta página!" -#: .\cookbook\helper\permission_helper.py:145 -#: .\cookbook\helper\permission_helper.py:167 -#: .\cookbook\helper\permission_helper.py:182 +#: .\cookbook\helper\permission_helper.py:127 +#: .\cookbook\helper\permission_helper.py:132 +#: .\cookbook\helper\permission_helper.py:154 +#: .\cookbook\helper\permission_helper.py:199 +#: .\cookbook\helper\permission_helper.py:213 +#: .\cookbook\helper\permission_helper.py:224 +#: .\cookbook\helper\permission_helper.py:235 .\cookbook\views\data.py:39 +#: .\cookbook\views\views.py:158 .\cookbook\views\views.py:165 +#: .\cookbook\views\views.py:253 +msgid "You do not have the required permissions to view this page!" +msgstr "Sem permissões para aceder a esta página!" + +#: .\cookbook\helper\permission_helper.py:148 +#: .\cookbook\helper\permission_helper.py:170 +#: .\cookbook\helper\permission_helper.py:185 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" -#: .\cookbook\helper\recipe_url_import.py:40 .\cookbook\views\api.py:549 -msgid "The requested site provided malformed data and cannot be read." -msgstr "" - -#: .\cookbook\helper\recipe_url_import.py:54 -msgid "" -"The requested site does not provide any recognized data format to import the " -"recipe from." -msgstr "Esta página não contém uma receita que eu consiga entender." - -#: .\cookbook\helper\recipe_url_import.py:160 -msgid "Imported from" -msgstr "" - #: .\cookbook\helper\template_helper.py:60 #: .\cookbook\helper\template_helper.py:62 msgid "Could not parse template code." @@ -254,45 +267,56 @@ msgstr "" #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 -#: .\cookbook\templates\url_import.html:233 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:190 +#: .\cookbook\templates\url_import.html:27 +#: .\cookbook\templates\url_import.html:101 +#: .\cookbook\templates\url_import.html:123 +#: .\cookbook\templates\url_import.html:317 +#: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 +#: .\cookbook\views\edit.py:199 msgid "Import" msgstr "Importar" -#: .\cookbook\integration\integration.py:131 +#: .\cookbook\integration\integration.py:162 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:134 +#: .\cookbook\integration\integration.py:165 +msgid "" +"An unexpected error occurred during the import. Please make sure you have " +"uploaded a valid file." +msgstr "" + +#: .\cookbook\integration\integration.py:169 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:137 +#: .\cookbook\integration\integration.py:173 #, fuzzy, python-format #| msgid "Import Recipes" msgid "Imported %s recipes." msgstr "Importar Receitas" -#: .\cookbook\integration\paprika.py:44 +#: .\cookbook\integration\paprika.py:46 #, fuzzy #| msgid "Note" msgid "Notes" msgstr "Nota" -#: .\cookbook\integration\paprika.py:47 +#: .\cookbook\integration\paprika.py:49 msgid "Nutritional Information" msgstr "" -#: .\cookbook\integration\paprika.py:50 +#: .\cookbook\integration\paprika.py:53 msgid "Source" msgstr "" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:75 +#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 -#: .\cookbook\templates\url_import.html:84 +#: .\cookbook\templates\url_import.html:224 +#: .\cookbook\templates\url_import.html:455 msgid "Servings" msgstr "Porções" @@ -301,11 +325,11 @@ msgid "Waiting time" msgstr "" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:69 +#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "" -#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:71 +#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:78 #: .\cookbook\templates\forms\ingredients.html:7 #: .\cookbook\templates\index.html:7 msgid "Cookbook" @@ -331,44 +355,74 @@ msgstr "Jantar" msgid "Other" msgstr "Outro" -#: .\cookbook\models.py:110 .\cookbook\templates\shopping_list.html:48 +#: .\cookbook\models.py:71 +msgid "" +"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " +"upload." +msgstr "" + +#: .\cookbook\models.py:121 .\cookbook\templates\search.html:7 +#: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "Procurar" -#: .\cookbook\models.py:111 .\cookbook\templates\base.html:85 +#: .\cookbook\models.py:122 .\cookbook\templates\base.html:92 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:224 .\cookbook\views\new.py:188 +#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 msgid "Meal-Plan" msgstr "Plano de refeição" -#: .\cookbook\models.py:112 .\cookbook\templates\base.html:82 +#: .\cookbook\models.py:123 .\cookbook\templates\base.html:89 msgid "Books" msgstr "Livros" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Small" msgstr "Pequeno" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Large" msgstr "Grande" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:198 +#: .\cookbook\models.py:131 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\templates\generic\new_template.html:14 +#: .\cookbook\templates\meal_plan.html:323 +msgid "New" +msgstr "Novo" + +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:202 msgid "Text" msgstr "Texto" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:199 +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:203 msgid "Time" msgstr "Tempo" +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:204 +#: .\cookbook\templates\forms\edit_internal_recipe.html:218 +#, fuzzy +#| msgid "File ID" +msgid "File" +msgstr "ID the ficheiro" + +#: .\cookbook\serializer.py:109 +msgid "File uploads are not enabled for this Space." +msgstr "" + +#: .\cookbook\serializer.py:117 +msgid "You have reached your file upload limit." +msgstr "" + #: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 #: .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 #: .\cookbook\templates\shopping_list.html:33 +#: .\cookbook\templates\space.html:84 msgid "Edit" msgstr "Editar" @@ -382,10 +436,6 @@ msgstr "Editar" msgid "Delete" msgstr "Apagar" -#: .\cookbook\tables.py:144 -msgid "Link" -msgstr "Ligação" - #: .\cookbook\templates\404.html:5 msgid "404 Error" msgstr "Erro 404" @@ -402,21 +452,122 @@ msgstr "Início" msgid "Report a Bug" msgstr "Reportar defeito" -#: .\cookbook\templates\account\login.html:7 -#: .\cookbook\templates\base.html:170 +#: .\cookbook\templates\account\email.html:6 +#: .\cookbook\templates\account\email.html:9 +msgid "E-mail Addresses" +msgstr "" + +#: .\cookbook\templates\account\email.html:11 +msgid "The following e-mail addresses are associated with your account:" +msgstr "" + +#: .\cookbook\templates\account\email.html:28 +msgid "Verified" +msgstr "" + +#: .\cookbook\templates\account\email.html:30 +msgid "Unverified" +msgstr "" + +#: .\cookbook\templates\account\email.html:32 +msgid "Primary" +msgstr "" + +#: .\cookbook\templates\account\email.html:39 +#, fuzzy +#| msgid "Make Header" +msgid "Make Primary" +msgstr "Adicionar Cabeçalho" + +#: .\cookbook\templates\account\email.html:41 +msgid "Re-send Verification" +msgstr "" + +#: .\cookbook\templates\account\email.html:42 +#: .\cookbook\templates\socialaccount\connections.html:36 +msgid "Remove" +msgstr "" + +#: .\cookbook\templates\account\email.html:50 +msgid "Warning:" +msgstr "" + +#: .\cookbook\templates\account\email.html:50 +msgid "" +"You currently do not have any e-mail address set up. You should really add " +"an e-mail address so you can receive notifications, reset your password, etc." +msgstr "" + +#: .\cookbook\templates\account\email.html:56 +msgid "Add E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email.html:61 +msgid "Add E-mail" +msgstr "" + +#: .\cookbook\templates\account\email.html:71 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:6 +#: .\cookbook\templates\account\email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that\n" +" %(email)s is an e-mail address " +"for user %(user_display)s\n" +" ." +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:22 +#: .\cookbook\templates\generic\delete_template.html:21 +msgid "Confirm" +msgstr "Confirme" + +#: .\cookbook\templates\account\email_confirm.html:29 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please\n" +" issue a new e-mail confirmation " +"request." +msgstr "" + +#: .\cookbook\templates\account\login.html:8 +#: .\cookbook\templates\base.html:180 msgid "Login" msgstr "Iniciar sessão" -#: .\cookbook\templates\account\login.html:13 -#: .\cookbook\templates\account\login.html:28 +#: .\cookbook\templates\account\login.html:15 +#: .\cookbook\templates\account\login.html:31 +#: .\cookbook\templates\account\signup.html:69 +#: .\cookbook\templates\account\signup_closed.html:15 msgid "Sign In" msgstr "" -#: .\cookbook\templates\account\login.html:38 +#: .\cookbook\templates\account\login.html:32 +msgid "Sign Up" +msgstr "" + +#: .\cookbook\templates\account\login.html:36 +#: .\cookbook\templates\account\login.html:37 +#: .\cookbook\templates\account\password_reset.html:29 +msgid "Reset My Password" +msgstr "" + +#: .\cookbook\templates\account\login.html:37 +msgid "Lost your password?" +msgstr "" + +#: .\cookbook\templates\account\login.html:48 msgid "Social Login" msgstr "" -#: .\cookbook\templates\account\login.html:39 +#: .\cookbook\templates\account\login.html:49 msgid "You can use any of the following providers to sign in." msgstr "" @@ -430,116 +581,164 @@ msgstr "" msgid "Are you sure you want to sign out?" msgstr "" -#: .\cookbook\templates\account\password_reset.html:5 -#: .\cookbook\templates\account\password_reset_done.html:5 +#: .\cookbook\templates\account\password_reset.html:7 +#: .\cookbook\templates\account\password_reset.html:13 +#: .\cookbook\templates\account\password_reset_done.html:7 +#: .\cookbook\templates\account\password_reset_done.html:10 msgid "Password Reset" msgstr "" -#: .\cookbook\templates\account\password_reset.html:9 -#: .\cookbook\templates\account\password_reset_done.html:9 -msgid "Password reset is not implemented for the time being!" +#: .\cookbook\templates\account\password_reset.html:24 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." msgstr "" -#: .\cookbook\templates\account\signup.html:5 +#: .\cookbook\templates\account\password_reset.html:32 +msgid "Password reset is disabled on this instance." +msgstr "" + +#: .\cookbook\templates\account\password_reset_done.html:16 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: .\cookbook\templates\account\signup.html:6 msgid "Register" msgstr "" -#: .\cookbook\templates\account\signup.html:9 -msgid "Create your Account" +#: .\cookbook\templates\account\signup.html:12 +msgid "Create an Account" msgstr "" -#: .\cookbook\templates\account\signup.html:14 +#: .\cookbook\templates\account\signup.html:42 +msgid "I accept the follwoing" +msgstr "" + +#: .\cookbook\templates\account\signup.html:45 +msgid "Terms and Conditions" +msgstr "" + +#: .\cookbook\templates\account\signup.html:48 +msgid "and" +msgstr "" + +#: .\cookbook\templates\account\signup.html:52 +msgid "Privacy Policy" +msgstr "" + +#: .\cookbook\templates\account\signup.html:65 msgid "Create User" msgstr "" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:160 +#: .\cookbook\templates\account\signup.html:69 +msgid "Already have an account?" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:5 +#: .\cookbook\templates\account\signup_closed.html:11 +msgid "Sign Up Closed" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:13 +msgid "We are sorry, but the sign up is currently closed." +msgstr "" + +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:170 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "Documentação API" -#: .\cookbook\templates\base.html:78 +#: .\cookbook\templates\base.html:85 msgid "Utensils" msgstr "Utensílios" -#: .\cookbook\templates\base.html:88 +#: .\cookbook\templates\base.html:95 msgid "Shopping" msgstr "Compras" -#: .\cookbook\templates\base.html:102 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:93 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:66 +#: .\cookbook\templates\base.html:109 .\cookbook\views\delete.py:84 +#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 +#: .\cookbook\views\new.py:78 msgid "Keyword" msgstr "Palavra-chave" -#: .\cookbook\templates\base.html:104 +#: .\cookbook\templates\base.html:111 msgid "Batch Edit" msgstr "Editor em massa" -#: .\cookbook\templates\base.html:109 +#: .\cookbook\templates\base.html:116 msgid "Storage Data" msgstr "Dados de armazenamento" -#: .\cookbook\templates\base.html:113 +#: .\cookbook\templates\base.html:120 msgid "Storage Backends" msgstr "" -#: .\cookbook\templates\base.html:115 +#: .\cookbook\templates\base.html:122 msgid "Configure Sync" msgstr "Configurar sincronização" -#: .\cookbook\templates\base.html:117 +#: .\cookbook\templates\base.html:124 msgid "Discovered Recipes" msgstr "Descobrir Receitas" -#: .\cookbook\templates\base.html:119 +#: .\cookbook\templates\base.html:126 msgid "Discovery Log" msgstr "" -#: .\cookbook\templates\base.html:121 .\cookbook\templates\stats.html:10 +#: .\cookbook\templates\base.html:128 .\cookbook\templates\stats.html:10 msgid "Statistics" msgstr "Estatísticas" -#: .\cookbook\templates\base.html:123 +#: .\cookbook\templates\base.html:130 msgid "Units & Ingredients" msgstr "Unidades e Ingredientes" -#: .\cookbook\templates\base.html:125 +#: .\cookbook\templates\base.html:132 .\cookbook\templates\index.html:47 msgid "Import Recipe" msgstr "Importar Receita" -#: .\cookbook\templates\base.html:144 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:151 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:16 msgid "Settings" msgstr "Definições" -#: .\cookbook\templates\base.html:146 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:153 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "Histórico" -#: .\cookbook\templates\base.html:150 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:155 .\cookbook\templates\space.html:7 +#, fuzzy +#| msgid "Settings" +msgid "Space Settings" +msgstr "Definições" + +#: .\cookbook\templates\base.html:160 .\cookbook\templates\system.html:13 msgid "System" msgstr "Sistema" -#: .\cookbook\templates\base.html:152 +#: .\cookbook\templates\base.html:162 msgid "Admin" msgstr "Administração" -#: .\cookbook\templates\base.html:156 +#: .\cookbook\templates\base.html:166 msgid "Markdown Guide" msgstr "" -#: .\cookbook\templates\base.html:158 +#: .\cookbook\templates\base.html:168 msgid "GitHub" msgstr "GitHub" -#: .\cookbook\templates\base.html:162 +#: .\cookbook\templates\base.html:172 msgid "API Browser" msgstr "Navegador de API" -#: .\cookbook\templates\base.html:165 -msgid "Logout" -msgstr "Sair" +#: .\cookbook\templates\base.html:175 +msgid "Log out" +msgstr "" #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" @@ -553,7 +752,7 @@ msgstr "Editar Receitas em massa" msgid "Add the specified keywords to all recipes containing a word" msgstr "Adicionar palavras-chave a todas as receitas que contenham uma palavra" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:76 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 msgid "Sync" msgstr "Sincronizar" @@ -580,7 +779,7 @@ msgstr "Sincronizar" msgid "Importing Recipes" msgstr "A importar Receitas" -#: .\cookbook\templates\batch\waiting.html:23 +#: .\cookbook\templates\batch\waiting.html:28 msgid "" "This can take a few minutes, depending on the number of recipes in sync, " "please wait." @@ -619,26 +818,33 @@ msgid "Export Recipes" msgstr "Exportar Receitas" #: .\cookbook\templates\export.html:14 .\cookbook\templates\export.html:20 -#: .\cookbook\templates\shopping_list.html:347 +#: .\cookbook\templates\shopping_list.html:351 #: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20 msgid "Export" msgstr "Exportar" +#: .\cookbook\templates\files.html:7 +#, fuzzy +#| msgid "File ID" +msgid "Files" +msgstr "ID the ficheiro" + #: .\cookbook\templates\forms\edit_import_recipe.html:5 #: .\cookbook\templates\forms\edit_import_recipe.html:9 msgid "Import new Recipe" msgstr "Importar nova Receita" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:389 -#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:416 +#: .\cookbook\templates\forms\edit_internal_recipe.html:448 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:28 .\cookbook\templates\settings.html:35 -#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:73 -#: .\cookbook\templates\shopping_list.html:349 +#: .\cookbook\templates\settings.html:44 .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:114 +#: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "Gravar" @@ -647,181 +853,190 @@ msgstr "Gravar" msgid "Edit Recipe" msgstr "Editar Receita" -#: .\cookbook\templates\forms\edit_internal_recipe.html:52 +#: .\cookbook\templates\forms\edit_internal_recipe.html:56 +#: .\cookbook\templates\url_import.html:171 msgid "Description" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:72 +#: .\cookbook\templates\forms\edit_internal_recipe.html:76 msgid "Waiting Time" msgstr "Tempo de Espera" -#: .\cookbook\templates\forms\edit_internal_recipe.html:78 +#: .\cookbook\templates\forms\edit_internal_recipe.html:82 msgid "Servings Text" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:89 +#: .\cookbook\templates\forms\edit_internal_recipe.html:93 msgid "Select Keywords" msgstr "Escolher Palavras-chave" -#: .\cookbook\templates\forms\edit_internal_recipe.html:90 -#: .\cookbook\templates\url_import.html:212 +#: .\cookbook\templates\forms\edit_internal_recipe.html:94 +#: .\cookbook\templates\url_import.html:583 #, fuzzy #| msgid "Keyword" msgid "Add Keyword" msgstr "Palavra-chave" -#: .\cookbook\templates\forms\edit_internal_recipe.html:108 +#: .\cookbook\templates\forms\edit_internal_recipe.html:112 msgid "Nutrition" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -#: .\cookbook\templates\forms\edit_internal_recipe.html:162 +#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:166 msgid "Delete Step" msgstr "Apagar Passo" -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:120 msgid "Calories" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:119 +#: .\cookbook\templates\forms\edit_internal_recipe.html:123 msgid "Carbohydrates" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:122 +#: .\cookbook\templates\forms\edit_internal_recipe.html:126 msgid "Fats" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:124 +#: .\cookbook\templates\forms\edit_internal_recipe.html:128 msgid "Proteins" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:146 -#: .\cookbook\templates\forms\edit_internal_recipe.html:454 +#: .\cookbook\templates\forms\edit_internal_recipe.html:150 +#: .\cookbook\templates\forms\edit_internal_recipe.html:481 msgid "Step" msgstr "Passo" -#: .\cookbook\templates\forms\edit_internal_recipe.html:167 +#: .\cookbook\templates\forms\edit_internal_recipe.html:171 msgid "Show as header" msgstr "Mostrar como cabeçalho" -#: .\cookbook\templates\forms\edit_internal_recipe.html:173 +#: .\cookbook\templates\forms\edit_internal_recipe.html:177 msgid "Hide as header" msgstr "Esconder como cabeçalho" -#: .\cookbook\templates\forms\edit_internal_recipe.html:178 +#: .\cookbook\templates\forms\edit_internal_recipe.html:182 msgid "Move Up" msgstr "Mover para cima" -#: .\cookbook\templates\forms\edit_internal_recipe.html:183 +#: .\cookbook\templates\forms\edit_internal_recipe.html:187 msgid "Move Down" msgstr "Mover para baixo" -#: .\cookbook\templates\forms\edit_internal_recipe.html:192 +#: .\cookbook\templates\forms\edit_internal_recipe.html:196 msgid "Step Name" msgstr "Nome do passo" -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:200 msgid "Step Type" msgstr "Tipo de passo" -#: .\cookbook\templates\forms\edit_internal_recipe.html:207 +#: .\cookbook\templates\forms\edit_internal_recipe.html:212 msgid "Step time in Minutes" msgstr "Tempo de passo em minutos" -#: .\cookbook\templates\forms\edit_internal_recipe.html:261 -#: .\cookbook\templates\shopping_list.html:183 -msgid "Select Unit" +#: .\cookbook\templates\forms\edit_internal_recipe.html:228 +#, fuzzy +#| msgid "Select Unit" +msgid "Select File" msgstr "Selecionar Unidade" -#: .\cookbook\templates\forms\edit_internal_recipe.html:262 -#: .\cookbook\templates\forms\edit_internal_recipe.html:286 -#: .\cookbook\templates\shopping_list.html:184 -#: .\cookbook\templates\shopping_list.html:206 -msgid "Create" -msgstr "Criar" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:263 -#: .\cookbook\templates\forms\edit_internal_recipe.html:287 -#: .\cookbook\templates\shopping_list.html:185 -#: .\cookbook\templates\shopping_list.html:207 -#: .\cookbook\templates\shopping_list.html:237 -#: .\cookbook\templates\shopping_list.html:261 -#: .\cookbook\templates\url_import.html:124 -#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\forms\edit_internal_recipe.html:229 +#: .\cookbook\templates\forms\edit_internal_recipe.html:290 +#: .\cookbook\templates\forms\edit_internal_recipe.html:314 +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 msgid "Select" msgstr "Selecionar" -#: .\cookbook\templates\forms\edit_internal_recipe.html:285 -#: .\cookbook\templates\shopping_list.html:205 +#: .\cookbook\templates\forms\edit_internal_recipe.html:288 +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "Selecionar Unidade" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:289 +#: .\cookbook\templates\forms\edit_internal_recipe.html:313 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "Criar" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:312 +#: .\cookbook\templates\shopping_list.html:209 msgid "Select Food" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:302 +#: .\cookbook\templates\forms\edit_internal_recipe.html:329 #: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:171 +#: .\cookbook\templates\url_import.html:542 msgid "Note" msgstr "Nota" -#: .\cookbook\templates\forms\edit_internal_recipe.html:319 +#: .\cookbook\templates\forms\edit_internal_recipe.html:346 msgid "Delete Ingredient" msgstr "Apagar Ingrediente" -#: .\cookbook\templates\forms\edit_internal_recipe.html:325 +#: .\cookbook\templates\forms\edit_internal_recipe.html:352 msgid "Make Header" msgstr "Adicionar Cabeçalho" -#: .\cookbook\templates\forms\edit_internal_recipe.html:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:358 msgid "Make Ingredient" msgstr "Adicionar Ingrediente" -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 +#: .\cookbook\templates\forms\edit_internal_recipe.html:364 msgid "Disable Amount" msgstr "Desativar Quantidade" -#: .\cookbook\templates\forms\edit_internal_recipe.html:343 +#: .\cookbook\templates\forms\edit_internal_recipe.html:370 msgid "Enable Amount" msgstr "Ativar Quantidade" -#: .\cookbook\templates\forms\edit_internal_recipe.html:348 +#: .\cookbook\templates\forms\edit_internal_recipe.html:375 msgid "Copy Template Reference" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:374 -#: .\cookbook\templates\url_import.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:401 +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 msgid "Instructions" msgstr "Instruções" -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:414 +#: .\cookbook\templates\forms\edit_internal_recipe.html:445 msgid "Save & View" msgstr "Gravar e Ver" -#: .\cookbook\templates\forms\edit_internal_recipe.html:391 -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 +#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:451 msgid "Add Step" msgstr "Adicionar Passo" -#: .\cookbook\templates\forms\edit_internal_recipe.html:394 -#: .\cookbook\templates\forms\edit_internal_recipe.html:428 +#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:455 msgid "Add Nutrition" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:396 -#: .\cookbook\templates\forms\edit_internal_recipe.html:430 +#: .\cookbook\templates\forms\edit_internal_recipe.html:423 +#: .\cookbook\templates\forms\edit_internal_recipe.html:457 msgid "Remove Nutrition" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -#: .\cookbook\templates\forms\edit_internal_recipe.html:433 +#: .\cookbook\templates\forms\edit_internal_recipe.html:425 +#: .\cookbook\templates\forms\edit_internal_recipe.html:460 msgid "View Recipe" msgstr "Ver Receita" -#: .\cookbook\templates\forms\edit_internal_recipe.html:400 -#: .\cookbook\templates\forms\edit_internal_recipe.html:435 +#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\templates\forms\edit_internal_recipe.html:462 msgid "Delete Recipe" msgstr "Apagar Receita" -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 +#: .\cookbook\templates\forms\edit_internal_recipe.html:468 msgid "Steps" msgstr "Passos" @@ -846,7 +1061,7 @@ msgstr "" "estejam a usar. " #: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\stats.html:26 +#: .\cookbook\templates\space.html:35 .\cookbook\templates\stats.html:26 msgid "Units" msgstr "Unidades" @@ -868,10 +1083,6 @@ msgstr "" msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "Tem a certeza que quer apagar %(title)s: %(object)s" -#: .\cookbook\templates\generic\delete_template.html:21 -msgid "Confirm" -msgstr "Confirme" - #: .\cookbook\templates\generic\edit_template.html:30 msgid "View" msgstr "Ver" @@ -893,12 +1104,6 @@ msgstr "Filtrar" msgid "Import all" msgstr "Importar tudo" -#: .\cookbook\templates\generic\new_template.html:6 -#: .\cookbook\templates\generic\new_template.html:14 -#: .\cookbook\templates\meal_plan.html:323 -msgid "New" -msgstr "Novo" - #: .\cookbook\templates\generic\table_template.html:76 #: .\cookbook\templates\recipes_table.html:121 msgid "previous" @@ -943,7 +1148,7 @@ msgstr "Fechar" #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:264 .\cookbook\views\new.py:40 +#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "Receita" @@ -984,10 +1189,6 @@ msgstr "Procure receita ..." msgid "New Recipe" msgstr "Nova Receita" -#: .\cookbook\templates\index.html:47 -msgid "Website Import" -msgstr "Importar Website" - #: .\cookbook\templates\index.html:53 msgid "Advanced Search" msgstr "Procura avançada " @@ -1001,7 +1202,7 @@ msgid "Last viewed" msgstr "Ultimo visto" #: .\cookbook\templates\index.html:87 .\cookbook\templates\meal_plan.html:178 -#: .\cookbook\templates\stats.html:22 +#: .\cookbook\templates\space.html:29 .\cookbook\templates\stats.html:22 msgid "Recipes" msgstr "Receitas" @@ -1153,7 +1354,7 @@ msgid "New Entry" msgstr "Nova Entrada" #: .\cookbook\templates\meal_plan.html:113 -#: .\cookbook\templates\shopping_list.html:52 +#: .\cookbook\templates\shopping_list.html:56 msgid "Search Recipe" msgstr "Procure Receita" @@ -1185,7 +1386,7 @@ msgstr "" #: .\cookbook\templates\meal_plan.html:168 #: .\cookbook\templates\shopping_list.html:7 #: .\cookbook\templates\shopping_list.html:29 -#: .\cookbook\templates\shopping_list.html:705 +#: .\cookbook\templates\shopping_list.html:714 msgid "Shopping List" msgstr "" @@ -1235,7 +1436,7 @@ msgstr "" #: .\cookbook\templates\meal_plan.html:270 #: .\cookbook\templates\meal_plan_entry.html:20 -#: .\cookbook\templates\shopping_list.html:250 +#: .\cookbook\templates\shopping_list.html:254 msgid "Shared with" msgstr "" @@ -1312,7 +1513,6 @@ msgstr "Autenticação necessária para aceder a esta página!" #: .\cookbook\templates\no_groups_info.html:18 #: .\cookbook\templates\no_perm_info.html:15 -#: .\cookbook\templates\no_space_info.html:15 msgid "Please contact your administrator." msgstr "" @@ -1329,13 +1529,50 @@ msgid "" "action." msgstr "Sem permissões para aceder a esta página!" -#: .\cookbook\templates\no_space_info.html:5 -#: .\cookbook\templates\no_space_info.html:12 +#: .\cookbook\templates\no_space_info.html:6 +#: .\cookbook\templates\no_space_info.html:13 msgid "No Space" msgstr "" -#: .\cookbook\templates\no_space_info.html:15 -msgid "You are not a member of any space." +#: .\cookbook\templates\no_space_info.html:17 +msgid "" +"Recipes, foods, shopping lists and more are organized in spaces of one or " +"more people." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:18 +msgid "" +"You can either be invited into an existing space or create your own one." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:31 +#: .\cookbook\templates\no_space_info.html:40 +msgid "Join Space" +msgstr "" + +#: .\cookbook\templates\no_space_info.html:34 +msgid "Join an existing space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:35 +msgid "" +"To join an existing space either enter your invite token or click on the " +"invite link the space owner send you." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:48 +#: .\cookbook\templates\no_space_info.html:56 +#, fuzzy +#| msgid "Create" +msgid "Create Space" +msgstr "Criar" + +#: .\cookbook\templates\no_space_info.html:51 +msgid "Create your own recipe space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:52 +msgid "Start your own recipe space and invite other users to it." msgstr "" #: .\cookbook\templates\offline.html:6 @@ -1352,28 +1589,29 @@ msgid "" "recently viewed them. Keep in mind that data might be outdated." msgstr "" -#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\stats.html:47 +#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\space.html:56 +#: .\cookbook\templates\stats.html:47 msgid "Comments" msgstr "" #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:170 +#: .\cookbook\views\edit.py:179 msgid "Comment" msgstr "" #: .\cookbook\templates\recipes_table.html:19 #: .\cookbook\templates\recipes_table.html:23 -#: .\cookbook\templates\url_import.html:69 +#: .\cookbook\templates\url_import.html:440 msgid "Recipe Image" msgstr "" #: .\cookbook\templates\recipes_table.html:51 -#: .\cookbook\templates\url_import.html:74 +#: .\cookbook\templates\url_import.html:445 msgid "Preparation time ca." msgstr "" #: .\cookbook\templates\recipes_table.html:57 -#: .\cookbook\templates\url_import.html:79 +#: .\cookbook\templates\url_import.html:450 msgid "Waiting time ca." msgstr "" @@ -1389,39 +1627,75 @@ msgstr "" msgid "Recipe Home" msgstr "" -#: .\cookbook\templates\settings.html:22 +#: .\cookbook\templates\settings.html:23 msgid "Account" msgstr "" -#: .\cookbook\templates\settings.html:38 -msgid "Link social account" +#: .\cookbook\templates\settings.html:27 +msgid "Preferences" msgstr "" -#: .\cookbook\templates\settings.html:42 +#: .\cookbook\templates\settings.html:31 +#, fuzzy +#| msgid "Settings" +msgid "API-Settings" +msgstr "Definições" + +#: .\cookbook\templates\settings.html:39 +#, fuzzy +#| msgid "Settings" +msgid "Name Settings" +msgstr "Definições" + +#: .\cookbook\templates\settings.html:47 +#, fuzzy +#| msgid "Settings" +msgid "Password Settings" +msgstr "Definições" + +#: .\cookbook\templates\settings.html:55 +#, fuzzy +#| msgid "Settings" +msgid "Email Settings" +msgstr "Definições" + +#: .\cookbook\templates\settings.html:57 +msgid "Manage Email Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:61 +msgid "Social" +msgstr "" + +#: .\cookbook\templates\settings.html:63 +msgid "Manage Social Accounts" +msgstr "" + +#: .\cookbook\templates\settings.html:75 msgid "Language" msgstr "" -#: .\cookbook\templates\settings.html:67 +#: .\cookbook\templates\settings.html:105 msgid "Style" msgstr "" -#: .\cookbook\templates\settings.html:79 +#: .\cookbook\templates\settings.html:125 msgid "API Token" msgstr "" -#: .\cookbook\templates\settings.html:80 +#: .\cookbook\templates\settings.html:126 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." msgstr "" -#: .\cookbook\templates\settings.html:92 +#: .\cookbook\templates\settings.html:143 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" msgstr "" -#: .\cookbook\templates\settings.html:94 +#: .\cookbook\templates\settings.html:145 msgid "or" msgstr "" @@ -1442,58 +1716,55 @@ msgstr "" msgid "Create Superuser account" msgstr "" -#: .\cookbook\templates\shopping_list.html:75 +#: .\cookbook\templates\shopping_list.html:79 msgid "Shopping Recipes" msgstr "" -#: .\cookbook\templates\shopping_list.html:79 +#: .\cookbook\templates\shopping_list.html:83 msgid "No recipes selected" msgstr "" -#: .\cookbook\templates\shopping_list.html:146 +#: .\cookbook\templates\shopping_list.html:150 msgid "Entry Mode" msgstr "" -#: .\cookbook\templates\shopping_list.html:154 +#: .\cookbook\templates\shopping_list.html:158 msgid "Add Entry" msgstr "" -#: .\cookbook\templates\shopping_list.html:170 +#: .\cookbook\templates\shopping_list.html:174 msgid "Amount" msgstr "" -#: .\cookbook\templates\shopping_list.html:226 +#: .\cookbook\templates\shopping_list.html:230 +#: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "" -#: .\cookbook\templates\shopping_list.html:236 +#: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "" -#: .\cookbook\templates\shopping_list.html:260 +#: .\cookbook\templates\shopping_list.html:264 msgid "Select User" msgstr "" -#: .\cookbook\templates\shopping_list.html:279 +#: .\cookbook\templates\shopping_list.html:283 msgid "Finished" msgstr "" -#: .\cookbook\templates\shopping_list.html:292 +#: .\cookbook\templates\shopping_list.html:296 msgid "You are offline, shopping list might not syncronize." msgstr "" -#: .\cookbook\templates\shopping_list.html:357 +#: .\cookbook\templates\shopping_list.html:361 msgid "Copy/Export" msgstr "" -#: .\cookbook\templates\shopping_list.html:361 +#: .\cookbook\templates\shopping_list.html:365 msgid "List Prefix" msgstr "" -#: .\cookbook\templates\shopping_list.html:708 -msgid "There was an error creating a resource!" -msgstr "" - #: .\cookbook\templates\socialaccount\connections.html:4 #: .\cookbook\templates\socialaccount\connections.html:7 msgid "Account Connections" @@ -1505,10 +1776,6 @@ msgid "" " accounts:" msgstr "" -#: .\cookbook\templates\socialaccount\connections.html:36 -msgid "Remove" -msgstr "" - #: .\cookbook\templates\socialaccount\connections.html:44 msgid "" "You currently have no social network accounts connected to this account." @@ -1518,38 +1785,91 @@ msgstr "" msgid "Add a 3rd Party Account" msgstr "" -#: .\cookbook\templates\stats.html:4 -msgid "Stats" +#: .\cookbook\templates\space.html:18 +msgid "Manage Subscription" msgstr "" -#: .\cookbook\templates\stats.html:19 +#: .\cookbook\templates\space.html:26 .\cookbook\templates\stats.html:19 msgid "Number of objects" msgstr "" -#: .\cookbook\templates\stats.html:30 +#: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:30 msgid "Recipe Imports" msgstr "" -#: .\cookbook\templates\stats.html:38 +#: .\cookbook\templates\space.html:47 .\cookbook\templates\stats.html:38 msgid "Objects stats" msgstr "" -#: .\cookbook\templates\stats.html:41 +#: .\cookbook\templates\space.html:50 .\cookbook\templates\stats.html:41 msgid "Recipes without Keywords" msgstr "" -#: .\cookbook\templates\stats.html:43 +#: .\cookbook\templates\space.html:52 .\cookbook\templates\stats.html:43 msgid "External Recipes" msgstr "" -#: .\cookbook\templates\stats.html:45 +#: .\cookbook\templates\space.html:54 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "" -#: .\cookbook\templates\system.html:21 .\cookbook\views\lists.py:115 +#: .\cookbook\templates\space.html:67 +msgid "Members" +msgstr "" + +#: .\cookbook\templates\space.html:71 +msgid "Invite User" +msgstr "" + +#: .\cookbook\templates\space.html:82 +msgid "User" +msgstr "" + +#: .\cookbook\templates\space.html:83 +msgid "Groups" +msgstr "" + +#: .\cookbook\templates\space.html:99 +#, fuzzy +#| msgid "Admin" +msgid "admin" +msgstr "Administração" + +#: .\cookbook\templates\space.html:100 +msgid "user" +msgstr "" + +#: .\cookbook\templates\space.html:101 +msgid "guest" +msgstr "" + +#: .\cookbook\templates\space.html:102 +msgid "remove" +msgstr "" + +#: .\cookbook\templates\space.html:106 +msgid "Update" +msgstr "" + +#: .\cookbook\templates\space.html:110 +msgid "You cannot edit yourself." +msgstr "" + +#: .\cookbook\templates\space.html:117 +#, fuzzy +#| msgid "There are no recipes in this book yet." +msgid "There are no members in your space yet!" +msgstr "Ainda não há receitas neste livro." + +#: .\cookbook\templates\space.html:124 .\cookbook\templates\system.html:21 +#: .\cookbook\views\lists.py:115 msgid "Invite Links" msgstr "" +#: .\cookbook\templates\stats.html:4 +msgid "Stats" +msgstr "" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "" @@ -1647,45 +1967,155 @@ msgid "" " " msgstr "" -#: .\cookbook\templates\url_import.html:5 +#: .\cookbook\templates\url_import.html:6 msgid "URL Import" msgstr "" -#: .\cookbook\templates\url_import.html:23 +#: .\cookbook\templates\url_import.html:31 +msgid "Drag me to your bookmarks to import recipes from anywhere" +msgstr "" + +#: .\cookbook\templates\url_import.html:32 +msgid "Bookmark Me!" +msgstr "" + +#: .\cookbook\templates\url_import.html:61 msgid "Enter website URL" msgstr "" -#: .\cookbook\templates\url_import.html:36 -msgid "Enter json directly" +#: .\cookbook\templates\url_import.html:97 +msgid "Select recipe files to import or drop them here..." msgstr "" -#: .\cookbook\templates\url_import.html:57 +#: .\cookbook\templates\url_import.html:118 +msgid "Paste json or html source here to load recipe." +msgstr "" + +#: .\cookbook\templates\url_import.html:146 +#, fuzzy +#| msgid "View Recipe" +msgid "Preview Recipe Data" +msgstr "Ver Receita" + +#: .\cookbook\templates\url_import.html:147 +msgid "Drag recipe attributes from the right into the appropriate box below." +msgstr "" + +#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\url_import.html:173 +#: .\cookbook\templates\url_import.html:190 +#: .\cookbook\templates\url_import.html:209 +#: .\cookbook\templates\url_import.html:227 +#: .\cookbook\templates\url_import.html:242 +#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:273 +#: .\cookbook\templates\url_import.html:300 +#: .\cookbook\templates\url_import.html:351 +msgid "Clear Contents" +msgstr "" + +#: .\cookbook\templates\url_import.html:158 +msgid "Text dragged here will be appended to the name." +msgstr "" + +#: .\cookbook\templates\url_import.html:175 +msgid "Text dragged here will be appended to the description." +msgstr "" + +#: .\cookbook\templates\url_import.html:192 +msgid "Keywords dragged here will be appended to current list" +msgstr "" + +#: .\cookbook\templates\url_import.html:207 +msgid "Image" +msgstr "" + +#: .\cookbook\templates\url_import.html:239 +#, fuzzy +#| msgid "Time" +msgid "Prep Time" +msgstr "Tempo" + +#: .\cookbook\templates\url_import.html:254 +#, fuzzy +#| msgid "Time" +msgid "Cook Time" +msgstr "Tempo" + +#: .\cookbook\templates\url_import.html:275 +msgid "Ingredients dragged here will be appended to current list." +msgstr "" + +#: .\cookbook\templates\url_import.html:302 +msgid "" +"Recipe instructions dragged here will be appended to current instructions." +msgstr "" + +#: .\cookbook\templates\url_import.html:325 +#, fuzzy +#| msgid "Discovered Recipes" +msgid "Discovered Attributes" +msgstr "Descobrir Receitas" + +#: .\cookbook\templates\url_import.html:327 +msgid "" +"Drag recipe attributes from below into the appropriate box on the left. " +"Click any node to display its full properties." +msgstr "" + +#: .\cookbook\templates\url_import.html:344 +#, fuzzy +#| msgid "Show as header" +msgid "Show Blank Field" +msgstr "Mostrar como cabeçalho" + +#: .\cookbook\templates\url_import.html:349 +msgid "Blank Field" +msgstr "" + +#: .\cookbook\templates\url_import.html:353 +msgid "Items dragged to Blank Field will be appended." +msgstr "" + +#: .\cookbook\templates\url_import.html:400 +#, fuzzy +#| msgid "Delete Step" +msgid "Delete Text" +msgstr "Apagar Passo" + +#: .\cookbook\templates\url_import.html:413 +#, fuzzy +#| msgid "Delete Recipe" +msgid "Delete image" +msgstr "Apagar Receita" + +#: .\cookbook\templates\url_import.html:429 msgid "Recipe Name" msgstr "" -#: .\cookbook\templates\url_import.html:62 +#: .\cookbook\templates\url_import.html:433 msgid "Recipe Description" msgstr "" -#: .\cookbook\templates\url_import.html:123 -#: .\cookbook\templates\url_import.html:155 -#: .\cookbook\templates\url_import.html:211 +#: .\cookbook\templates\url_import.html:494 +#: .\cookbook\templates\url_import.html:526 +#: .\cookbook\templates\url_import.html:582 msgid "Select one" msgstr "" -#: .\cookbook\templates\url_import.html:225 +#: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "" -#: .\cookbook\templates\url_import.html:228 +#: .\cookbook\templates\url_import.html:599 msgid "Import all keywords, not only the ones already existing." msgstr "" -#: .\cookbook\templates\url_import.html:255 +#: .\cookbook\templates\url_import.html:626 msgid "Information" msgstr "" -#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:628 msgid "" " Only websites containing ld+json or microdata information can currently\n" " be imported. Most big recipe pages " @@ -1696,48 +2126,73 @@ msgid "" " github issues." msgstr "" -#: .\cookbook\templates\url_import.html:265 +#: .\cookbook\templates\url_import.html:636 msgid "Google ld+json Info" msgstr "" -#: .\cookbook\templates\url_import.html:268 +#: .\cookbook\templates\url_import.html:639 msgid "GitHub Issues" msgstr "" -#: .\cookbook\templates\url_import.html:270 +#: .\cookbook\templates\url_import.html:641 msgid "Recipe Markup Specification" msgstr "" -#: .\cookbook\views\api.py:71 +#: .\cookbook\views\api.py:77 msgid "Parameter updated_at incorrectly formatted" msgstr "" -#: .\cookbook\views\api.py:455 .\cookbook\views\views.py:226 +#: .\cookbook\views\api.py:553 .\cookbook\views\views.py:295 msgid "This feature is not available in the demo version!" msgstr "" -#: .\cookbook\views\api.py:478 +#: .\cookbook\views\api.py:576 msgid "Sync successful!" msgstr "" -#: .\cookbook\views\api.py:483 +#: .\cookbook\views\api.py:581 msgid "Error synchronizing with Storage" msgstr "" -#: .\cookbook\views\api.py:556 .\cookbook\views\api.py:576 +#: .\cookbook\views\api.py:649 +msgid "Nothing to do." +msgstr "" + +#: .\cookbook\views\api.py:664 +msgid "The requested site provided malformed data and cannot be read." +msgstr "" + +#: .\cookbook\views\api.py:671 msgid "The requested page could not be found." msgstr "" -#: .\cookbook\views\api.py:585 +#: .\cookbook\views\api.py:680 msgid "" -"The requested page refused to provide any information (Status Code 403)." +"The requested site does not provide any recognized data format to import the " +"recipe from." +msgstr "Esta página não contém uma receita que eu consiga entender." + +#: .\cookbook\views\api.py:694 +msgid "No useable data could be found." msgstr "" -#: .\cookbook\views\api.py:611 -msgid "Could not parse correctly..." +#: .\cookbook\views\api.py:710 +msgid "I couldn't find anything to do." msgstr "" -#: .\cookbook\views\data.py:94 +#: .\cookbook\views\data.py:30 .\cookbook\views\data.py:121 +#: .\cookbook\views\edit.py:50 .\cookbook\views\import_export.py:67 +#: .\cookbook\views\new.py:32 +msgid "You have reached the maximum number of recipes for your space." +msgstr "" + +#: .\cookbook\views\data.py:34 .\cookbook\views\data.py:125 +#: .\cookbook\views\edit.py:54 .\cookbook\views\import_export.py:71 +#: .\cookbook\views\new.py:36 +msgid "You have more users than allowed in your space." +msgstr "" + +#: .\cookbook\views\data.py:103 #, python-format msgid "Batch edit done. %(count)d recipe was updated." msgid_plural "Batch edit done. %(count)d Recipes where updated." @@ -1749,7 +2204,7 @@ msgid "Monitor" msgstr "" #: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:86 +#: .\cookbook\views\new.py:98 msgid "Storage Backend" msgstr "" @@ -1758,8 +2213,8 @@ msgid "" "Could not delete this storage backend as it is used in at least one monitor." msgstr "" -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:204 -#: .\cookbook\views\new.py:144 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 +#: .\cookbook\views\new.py:156 msgid "Recipe Book" msgstr "" @@ -1767,55 +2222,55 @@ msgstr "" msgid "Bookmarks" msgstr "" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:214 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 msgid "Invite Link" msgstr "" -#: .\cookbook\views\edit.py:110 +#: .\cookbook\views\edit.py:119 msgid "Food" msgstr "" -#: .\cookbook\views\edit.py:119 +#: .\cookbook\views\edit.py:128 msgid "You cannot edit this storage!" msgstr "" -#: .\cookbook\views\edit.py:139 +#: .\cookbook\views\edit.py:148 msgid "Storage saved!" msgstr "" -#: .\cookbook\views\edit.py:145 +#: .\cookbook\views\edit.py:154 msgid "There was an error updating this storage backend!" msgstr "" -#: .\cookbook\views\edit.py:156 +#: .\cookbook\views\edit.py:165 msgid "Storage" msgstr "" -#: .\cookbook\views\edit.py:252 +#: .\cookbook\views\edit.py:261 msgid "Changes saved!" msgstr "" -#: .\cookbook\views\edit.py:256 +#: .\cookbook\views\edit.py:265 msgid "Error saving changes!" msgstr "" -#: .\cookbook\views\edit.py:289 +#: .\cookbook\views\edit.py:299 msgid "Units merged!" msgstr "" -#: .\cookbook\views\edit.py:291 .\cookbook\views\edit.py:307 +#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 msgid "Cannot merge with the same object!" msgstr "" -#: .\cookbook\views\edit.py:305 +#: .\cookbook\views\edit.py:315 msgid "Foods merged!" msgstr "" -#: .\cookbook\views\import_export.py:73 +#: .\cookbook\views\import_export.py:93 msgid "Importing is not implemented for this provider" msgstr "" -#: .\cookbook\views\import_export.py:92 +#: .\cookbook\views\import_export.py:115 msgid "Exporting is not implemented for this provider" msgstr "" @@ -1831,45 +2286,124 @@ msgstr "" msgid "Shopping Lists" msgstr "" -#: .\cookbook\views\new.py:111 +#: .\cookbook\views\new.py:123 msgid "Imported new recipe!" msgstr "" -#: .\cookbook\views\new.py:114 +#: .\cookbook\views\new.py:126 msgid "There was an error importing this recipe!" msgstr "" -#: .\cookbook\views\views.py:123 +#: .\cookbook\views\new.py:226 +msgid "Hello" +msgstr "" + +#: .\cookbook\views\new.py:226 +msgid "You have been invited by " +msgstr "" + +#: .\cookbook\views\new.py:227 +msgid " to join their Tandoor Recipes space " +msgstr "" + +#: .\cookbook\views\new.py:228 +msgid "Click the following link to activate your account: " +msgstr "" + +#: .\cookbook\views\new.py:229 +msgid "" +"If the link does not work use the following code to manually join the space: " +msgstr "" + +#: .\cookbook\views\new.py:230 +msgid "The invitation is valid until " +msgstr "" + +#: .\cookbook\views\new.py:231 +msgid "" +"Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " +msgstr "" + +#: .\cookbook\views\new.py:234 +msgid "Tandoor Recipes Invite" +msgstr "" + +#: .\cookbook\views\new.py:241 +msgid "Invite link successfully send to user." +msgstr "" + +#: .\cookbook\views\new.py:244 +msgid "" +"You have send to many emails, please share the link manually or wait a few " +"hours." +msgstr "" + +#: .\cookbook\views\new.py:246 +msgid "Email to user could not be send, please share link manually." +msgstr "" + +#: .\cookbook\views\views.py:125 +msgid "" +"You have successfully created your own recipe space. Start by adding some " +"recipes or invite other people to join you." +msgstr "" + +#: .\cookbook\views\views.py:173 msgid "You do not have the required permissions to perform this action!" msgstr "" -#: .\cookbook\views\views.py:134 +#: .\cookbook\views\views.py:184 msgid "Comment saved!" msgstr "" -#: .\cookbook\views\views.py:326 +#: .\cookbook\views\views.py:396 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." msgstr "" -#: .\cookbook\views\views.py:333 .\cookbook\views\views.py:378 +#: .\cookbook\views\views.py:403 msgid "Passwords dont match!" msgstr "" -#: .\cookbook\views\views.py:349 .\cookbook\views\views.py:385 +#: .\cookbook\views\views.py:419 msgid "User has been created, please login!" msgstr "" -#: .\cookbook\views\views.py:365 +#: .\cookbook\views\views.py:435 msgid "Malformed Invite Link supplied!" msgstr "" -#: .\cookbook\views\views.py:405 +#: .\cookbook\views\views.py:441 +#, fuzzy +#| msgid "You are not logged in and therefore cannot view this page!" +msgid "You are already member of a space and therefore cannot join this one." +msgstr "Autenticação necessária para aceder a esta página!" + +#: .\cookbook\views\views.py:452 +msgid "Successfully joined space." +msgstr "" + +#: .\cookbook\views\views.py:458 msgid "Invite Link not valid or already used!" msgstr "" +#~ msgid "" +#~ "A username is not required, if left blank the new user can choose one." +#~ msgstr "" +#~ "Um nome de utilizador não é obrigatório. Se deixado em branco o novo " +#~ "utilizador pode escolher o seu nome." + +#~ msgid "Link" +#~ msgstr "Ligação" + +#~ msgid "Logout" +#~ msgstr "Sair" + +#~ msgid "Website Import" +#~ msgstr "Importar Website" + #~ msgid "" #~ "Include - [ ] in list for easier usage in markdown based " #~ "documents." diff --git a/cookbook/locale/rn/LC_MESSAGES/django.po b/cookbook/locale/rn/LC_MESSAGES/django.po index a0a54d561..404178a10 100644 --- a/cookbook/locale/rn/LC_MESSAGES/django.po +++ b/cookbook/locale/rn/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,48 +18,49 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:91 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 +#: .\cookbook\templates\forms\edit_internal_recipe.html:246 #: .\cookbook\templates\forms\ingredients.html:34 -#: .\cookbook\templates\stats.html:28 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\space.html:37 .\cookbook\templates\stats.html:28 +#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 msgid "Ingredients" msgstr "" -#: .\cookbook\forms.py:45 +#: .\cookbook\forms.py:49 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" msgstr "" -#: .\cookbook\forms.py:46 +#: .\cookbook\forms.py:51 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" -#: .\cookbook\forms.py:47 +#: .\cookbook\forms.py:53 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" msgstr "" -#: .\cookbook\forms.py:48 +#: .\cookbook\forms.py:56 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." msgstr "" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:58 msgid "Show recently viewed recipes on search page." msgstr "" -#: .\cookbook\forms.py:50 +#: .\cookbook\forms.py:59 msgid "Number of decimals to round ingredients." msgstr "" -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:60 msgid "If you want to be able to create and see comments underneath recipes." msgstr "" -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:62 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -67,167 +68,181 @@ msgid "" "mobile data. If lower than instance limit it is reset when saving." msgstr "" -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:65 msgid "Makes the navbar stick to the top of the page." msgstr "" -#: .\cookbook\forms.py:72 +#: .\cookbook\forms.py:81 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" msgstr "" -#: .\cookbook\forms.py:93 .\cookbook\forms.py:315 -#: .\cookbook\templates\forms\edit_internal_recipe.html:45 +#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "" -#: .\cookbook\forms.py:94 .\cookbook\forms.py:316 -#: .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:81 -#: .\cookbook\templates\stats.html:24 .\cookbook\templates\url_import.html:202 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 +#: .\cookbook\templates\base.html:105 +#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\templates\space.html:33 .\cookbook\templates\stats.html:24 +#: .\cookbook\templates\url_import.html:188 +#: .\cookbook\templates\url_import.html:573 msgid "Keywords" msgstr "" -#: .\cookbook\forms.py:95 +#: .\cookbook\forms.py:104 msgid "Preparation time in minutes" msgstr "" -#: .\cookbook\forms.py:96 +#: .\cookbook\forms.py:105 msgid "Waiting time (cooking/baking) in minutes" msgstr "" -#: .\cookbook\forms.py:97 .\cookbook\forms.py:317 +#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 msgid "Path" msgstr "" -#: .\cookbook\forms.py:98 +#: .\cookbook\forms.py:107 msgid "Storage UID" msgstr "" -#: .\cookbook\forms.py:121 +#: .\cookbook\forms.py:133 msgid "Default" msgstr "" -#: .\cookbook\forms.py:130 +#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:149 +#: .\cookbook\forms.py:164 msgid "New Unit" msgstr "" -#: .\cookbook\forms.py:150 +#: .\cookbook\forms.py:165 msgid "New unit that other gets replaced by." msgstr "" -#: .\cookbook\forms.py:155 +#: .\cookbook\forms.py:170 msgid "Old Unit" msgstr "" -#: .\cookbook\forms.py:156 +#: .\cookbook\forms.py:171 msgid "Unit that should be replaced." msgstr "" -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:187 msgid "New Food" msgstr "" -#: .\cookbook\forms.py:173 +#: .\cookbook\forms.py:188 msgid "New food that other gets replaced by." msgstr "" -#: .\cookbook\forms.py:178 +#: .\cookbook\forms.py:193 msgid "Old Food" msgstr "" -#: .\cookbook\forms.py:179 +#: .\cookbook\forms.py:194 msgid "Food that should be replaced." msgstr "" -#: .\cookbook\forms.py:197 +#: .\cookbook\forms.py:212 msgid "Add your comment: " msgstr "" -#: .\cookbook\forms.py:238 +#: .\cookbook\forms.py:253 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" -#: .\cookbook\forms.py:245 +#: .\cookbook\forms.py:260 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:269 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" msgstr "" -#: .\cookbook\forms.py:291 +#: .\cookbook\forms.py:307 msgid "Search String" msgstr "" -#: .\cookbook\forms.py:318 +#: .\cookbook\forms.py:334 msgid "File ID" msgstr "" -#: .\cookbook\forms.py:354 +#: .\cookbook\forms.py:370 msgid "You must provide at least a recipe or a title." msgstr "" -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:383 msgid "You can list default users to share recipes with in the settings." msgstr "" -#: .\cookbook\forms.py:368 -#: .\cookbook\templates\forms\edit_internal_recipe.html:377 +#: .\cookbook\forms.py:384 +#: .\cookbook\templates\forms\edit_internal_recipe.html:404 msgid "" "You can use markdown to format this field. See the docs here" msgstr "" -#: .\cookbook\forms.py:393 -msgid "A username is not required, if left blank the new user can choose one." +#: .\cookbook\forms.py:409 +msgid "Maximum number of users for this space reached." msgstr "" -#: .\cookbook\helper\permission_helper.py:123 -#: .\cookbook\helper\permission_helper.py:129 -#: .\cookbook\helper\permission_helper.py:151 -#: .\cookbook\helper\permission_helper.py:196 -#: .\cookbook\helper\permission_helper.py:210 -#: .\cookbook\helper\permission_helper.py:221 -#: .\cookbook\helper\permission_helper.py:232 .\cookbook\views\data.py:30 -#: .\cookbook\views\views.py:112 .\cookbook\views\views.py:116 -#: .\cookbook\views\views.py:184 -msgid "You do not have the required permissions to view this page!" +#: .\cookbook\forms.py:415 +msgid "Email address already taken!" msgstr "" -#: .\cookbook\helper\permission_helper.py:141 +#: .\cookbook\forms.py:423 +msgid "" +"An email address is not required but if present the invite link will be send " +"to the user." +msgstr "" + +#: .\cookbook\forms.py:438 +msgid "Name already taken." +msgstr "" + +#: .\cookbook\forms.py:449 +msgid "Accept Terms and Privacy" +msgstr "" + +#: .\cookbook\helper\AllAuthCustomAdapter.py:30 +msgid "" +"In order to prevent spam, the requested email was not send. Please wait a " +"few minutes and try again." +msgstr "" + +#: .\cookbook\helper\permission_helper.py:124 +#: .\cookbook\helper\permission_helper.py:144 .\cookbook\views\views.py:147 msgid "You are not logged in and therefore cannot view this page!" msgstr "" -#: .\cookbook\helper\permission_helper.py:145 -#: .\cookbook\helper\permission_helper.py:167 -#: .\cookbook\helper\permission_helper.py:182 +#: .\cookbook\helper\permission_helper.py:127 +#: .\cookbook\helper\permission_helper.py:132 +#: .\cookbook\helper\permission_helper.py:154 +#: .\cookbook\helper\permission_helper.py:199 +#: .\cookbook\helper\permission_helper.py:213 +#: .\cookbook\helper\permission_helper.py:224 +#: .\cookbook\helper\permission_helper.py:235 .\cookbook\views\data.py:39 +#: .\cookbook\views\views.py:158 .\cookbook\views\views.py:165 +#: .\cookbook\views\views.py:253 +msgid "You do not have the required permissions to view this page!" +msgstr "" + +#: .\cookbook\helper\permission_helper.py:148 +#: .\cookbook\helper\permission_helper.py:170 +#: .\cookbook\helper\permission_helper.py:185 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" -#: .\cookbook\helper\recipe_url_import.py:40 .\cookbook\views\api.py:549 -msgid "The requested site provided malformed data and cannot be read." -msgstr "" - -#: .\cookbook\helper\recipe_url_import.py:54 -msgid "" -"The requested site does not provide any recognized data format to import the " -"recipe from." -msgstr "" - -#: .\cookbook\helper\recipe_url_import.py:160 -msgid "Imported from" -msgstr "" - #: .\cookbook\helper\template_helper.py:60 #: .\cookbook\helper\template_helper.py:62 msgid "Could not parse template code." @@ -237,42 +252,53 @@ msgstr "" #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 -#: .\cookbook\templates\url_import.html:233 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:190 +#: .\cookbook\templates\url_import.html:27 +#: .\cookbook\templates\url_import.html:101 +#: .\cookbook\templates\url_import.html:123 +#: .\cookbook\templates\url_import.html:317 +#: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 +#: .\cookbook\views\edit.py:199 msgid "Import" msgstr "" -#: .\cookbook\integration\integration.py:131 +#: .\cookbook\integration\integration.py:162 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:134 +#: .\cookbook\integration\integration.py:165 +msgid "" +"An unexpected error occurred during the import. Please make sure you have " +"uploaded a valid file." +msgstr "" + +#: .\cookbook\integration\integration.py:169 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:137 +#: .\cookbook\integration\integration.py:173 #, python-format msgid "Imported %s recipes." msgstr "" -#: .\cookbook\integration\paprika.py:44 +#: .\cookbook\integration\paprika.py:46 msgid "Notes" msgstr "" -#: .\cookbook\integration\paprika.py:47 +#: .\cookbook\integration\paprika.py:49 msgid "Nutritional Information" msgstr "" -#: .\cookbook\integration\paprika.py:50 +#: .\cookbook\integration\paprika.py:53 msgid "Source" msgstr "" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:75 +#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 -#: .\cookbook\templates\url_import.html:84 +#: .\cookbook\templates\url_import.html:224 +#: .\cookbook\templates\url_import.html:455 msgid "Servings" msgstr "" @@ -281,11 +307,11 @@ msgid "Waiting time" msgstr "" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:69 +#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "" -#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:71 +#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:78 #: .\cookbook\templates\forms\ingredients.html:7 #: .\cookbook\templates\index.html:7 msgid "Cookbook" @@ -311,44 +337,72 @@ msgstr "" msgid "Other" msgstr "" -#: .\cookbook\models.py:110 .\cookbook\templates\shopping_list.html:48 +#: .\cookbook\models.py:71 +msgid "" +"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " +"upload." +msgstr "" + +#: .\cookbook\models.py:121 .\cookbook\templates\search.html:7 +#: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "" -#: .\cookbook\models.py:111 .\cookbook\templates\base.html:85 +#: .\cookbook\models.py:122 .\cookbook\templates\base.html:92 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:224 .\cookbook\views\new.py:188 +#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 msgid "Meal-Plan" msgstr "" -#: .\cookbook\models.py:112 .\cookbook\templates\base.html:82 +#: .\cookbook\models.py:123 .\cookbook\templates\base.html:89 msgid "Books" msgstr "" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Small" msgstr "" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Large" msgstr "" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:198 +#: .\cookbook\models.py:131 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\templates\generic\new_template.html:14 +#: .\cookbook\templates\meal_plan.html:323 +msgid "New" +msgstr "" + +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:202 msgid "Text" msgstr "" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:199 +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:203 msgid "Time" msgstr "" +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:204 +#: .\cookbook\templates\forms\edit_internal_recipe.html:218 +msgid "File" +msgstr "" + +#: .\cookbook\serializer.py:109 +msgid "File uploads are not enabled for this Space." +msgstr "" + +#: .\cookbook\serializer.py:117 +msgid "You have reached your file upload limit." +msgstr "" + #: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 #: .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 #: .\cookbook\templates\shopping_list.html:33 +#: .\cookbook\templates\space.html:84 msgid "Edit" msgstr "" @@ -362,10 +416,6 @@ msgstr "" msgid "Delete" msgstr "" -#: .\cookbook\tables.py:144 -msgid "Link" -msgstr "" - #: .\cookbook\templates\404.html:5 msgid "404 Error" msgstr "" @@ -382,21 +432,120 @@ msgstr "" msgid "Report a Bug" msgstr "" -#: .\cookbook\templates\account\login.html:7 -#: .\cookbook\templates\base.html:170 +#: .\cookbook\templates\account\email.html:6 +#: .\cookbook\templates\account\email.html:9 +msgid "E-mail Addresses" +msgstr "" + +#: .\cookbook\templates\account\email.html:11 +msgid "The following e-mail addresses are associated with your account:" +msgstr "" + +#: .\cookbook\templates\account\email.html:28 +msgid "Verified" +msgstr "" + +#: .\cookbook\templates\account\email.html:30 +msgid "Unverified" +msgstr "" + +#: .\cookbook\templates\account\email.html:32 +msgid "Primary" +msgstr "" + +#: .\cookbook\templates\account\email.html:39 +msgid "Make Primary" +msgstr "" + +#: .\cookbook\templates\account\email.html:41 +msgid "Re-send Verification" +msgstr "" + +#: .\cookbook\templates\account\email.html:42 +#: .\cookbook\templates\socialaccount\connections.html:36 +msgid "Remove" +msgstr "" + +#: .\cookbook\templates\account\email.html:50 +msgid "Warning:" +msgstr "" + +#: .\cookbook\templates\account\email.html:50 +msgid "" +"You currently do not have any e-mail address set up. You should really add " +"an e-mail address so you can receive notifications, reset your password, etc." +msgstr "" + +#: .\cookbook\templates\account\email.html:56 +msgid "Add E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email.html:61 +msgid "Add E-mail" +msgstr "" + +#: .\cookbook\templates\account\email.html:71 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:6 +#: .\cookbook\templates\account\email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that\n" +" %(email)s is an e-mail address " +"for user %(user_display)s\n" +" ." +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:22 +#: .\cookbook\templates\generic\delete_template.html:21 +msgid "Confirm" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:29 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please\n" +" issue a new e-mail confirmation " +"request." +msgstr "" + +#: .\cookbook\templates\account\login.html:8 +#: .\cookbook\templates\base.html:180 msgid "Login" msgstr "" -#: .\cookbook\templates\account\login.html:13 -#: .\cookbook\templates\account\login.html:28 +#: .\cookbook\templates\account\login.html:15 +#: .\cookbook\templates\account\login.html:31 +#: .\cookbook\templates\account\signup.html:69 +#: .\cookbook\templates\account\signup_closed.html:15 msgid "Sign In" msgstr "" -#: .\cookbook\templates\account\login.html:38 +#: .\cookbook\templates\account\login.html:32 +msgid "Sign Up" +msgstr "" + +#: .\cookbook\templates\account\login.html:36 +#: .\cookbook\templates\account\login.html:37 +#: .\cookbook\templates\account\password_reset.html:29 +msgid "Reset My Password" +msgstr "" + +#: .\cookbook\templates\account\login.html:37 +msgid "Lost your password?" +msgstr "" + +#: .\cookbook\templates\account\login.html:48 msgid "Social Login" msgstr "" -#: .\cookbook\templates\account\login.html:39 +#: .\cookbook\templates\account\login.html:49 msgid "You can use any of the following providers to sign in." msgstr "" @@ -410,115 +559,161 @@ msgstr "" msgid "Are you sure you want to sign out?" msgstr "" -#: .\cookbook\templates\account\password_reset.html:5 -#: .\cookbook\templates\account\password_reset_done.html:5 +#: .\cookbook\templates\account\password_reset.html:7 +#: .\cookbook\templates\account\password_reset.html:13 +#: .\cookbook\templates\account\password_reset_done.html:7 +#: .\cookbook\templates\account\password_reset_done.html:10 msgid "Password Reset" msgstr "" -#: .\cookbook\templates\account\password_reset.html:9 -#: .\cookbook\templates\account\password_reset_done.html:9 -msgid "Password reset is not implemented for the time being!" +#: .\cookbook\templates\account\password_reset.html:24 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." msgstr "" -#: .\cookbook\templates\account\signup.html:5 +#: .\cookbook\templates\account\password_reset.html:32 +msgid "Password reset is disabled on this instance." +msgstr "" + +#: .\cookbook\templates\account\password_reset_done.html:16 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: .\cookbook\templates\account\signup.html:6 msgid "Register" msgstr "" -#: .\cookbook\templates\account\signup.html:9 -msgid "Create your Account" +#: .\cookbook\templates\account\signup.html:12 +msgid "Create an Account" msgstr "" -#: .\cookbook\templates\account\signup.html:14 +#: .\cookbook\templates\account\signup.html:42 +msgid "I accept the follwoing" +msgstr "" + +#: .\cookbook\templates\account\signup.html:45 +msgid "Terms and Conditions" +msgstr "" + +#: .\cookbook\templates\account\signup.html:48 +msgid "and" +msgstr "" + +#: .\cookbook\templates\account\signup.html:52 +msgid "Privacy Policy" +msgstr "" + +#: .\cookbook\templates\account\signup.html:65 msgid "Create User" msgstr "" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:160 +#: .\cookbook\templates\account\signup.html:69 +msgid "Already have an account?" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:5 +#: .\cookbook\templates\account\signup_closed.html:11 +msgid "Sign Up Closed" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:13 +msgid "We are sorry, but the sign up is currently closed." +msgstr "" + +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:170 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "" -#: .\cookbook\templates\base.html:78 +#: .\cookbook\templates\base.html:85 msgid "Utensils" msgstr "" -#: .\cookbook\templates\base.html:88 +#: .\cookbook\templates\base.html:95 msgid "Shopping" msgstr "" -#: .\cookbook\templates\base.html:102 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:93 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:66 +#: .\cookbook\templates\base.html:109 .\cookbook\views\delete.py:84 +#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 +#: .\cookbook\views\new.py:78 msgid "Keyword" msgstr "" -#: .\cookbook\templates\base.html:104 +#: .\cookbook\templates\base.html:111 msgid "Batch Edit" msgstr "" -#: .\cookbook\templates\base.html:109 +#: .\cookbook\templates\base.html:116 msgid "Storage Data" msgstr "" -#: .\cookbook\templates\base.html:113 +#: .\cookbook\templates\base.html:120 msgid "Storage Backends" msgstr "" -#: .\cookbook\templates\base.html:115 +#: .\cookbook\templates\base.html:122 msgid "Configure Sync" msgstr "" -#: .\cookbook\templates\base.html:117 +#: .\cookbook\templates\base.html:124 msgid "Discovered Recipes" msgstr "" -#: .\cookbook\templates\base.html:119 +#: .\cookbook\templates\base.html:126 msgid "Discovery Log" msgstr "" -#: .\cookbook\templates\base.html:121 .\cookbook\templates\stats.html:10 +#: .\cookbook\templates\base.html:128 .\cookbook\templates\stats.html:10 msgid "Statistics" msgstr "" -#: .\cookbook\templates\base.html:123 +#: .\cookbook\templates\base.html:130 msgid "Units & Ingredients" msgstr "" -#: .\cookbook\templates\base.html:125 +#: .\cookbook\templates\base.html:132 .\cookbook\templates\index.html:47 msgid "Import Recipe" msgstr "" -#: .\cookbook\templates\base.html:144 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:151 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:16 msgid "Settings" msgstr "" -#: .\cookbook\templates\base.html:146 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:153 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "" -#: .\cookbook\templates\base.html:150 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:155 .\cookbook\templates\space.html:7 +msgid "Space Settings" +msgstr "" + +#: .\cookbook\templates\base.html:160 .\cookbook\templates\system.html:13 msgid "System" msgstr "" -#: .\cookbook\templates\base.html:152 +#: .\cookbook\templates\base.html:162 msgid "Admin" msgstr "" -#: .\cookbook\templates\base.html:156 +#: .\cookbook\templates\base.html:166 msgid "Markdown Guide" msgstr "" -#: .\cookbook\templates\base.html:158 +#: .\cookbook\templates\base.html:168 msgid "GitHub" msgstr "" -#: .\cookbook\templates\base.html:162 +#: .\cookbook\templates\base.html:172 msgid "API Browser" msgstr "" -#: .\cookbook\templates\base.html:165 -msgid "Logout" +#: .\cookbook\templates\base.html:175 +msgid "Log out" msgstr "" #: .\cookbook\templates\batch\edit.html:6 @@ -533,7 +728,7 @@ msgstr "" msgid "Add the specified keywords to all recipes containing a word" msgstr "" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:76 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 msgid "Sync" msgstr "" @@ -560,7 +755,7 @@ msgstr "" msgid "Importing Recipes" msgstr "" -#: .\cookbook\templates\batch\waiting.html:23 +#: .\cookbook\templates\batch\waiting.html:28 msgid "" "This can take a few minutes, depending on the number of recipes in sync, " "please wait." @@ -597,26 +792,31 @@ msgid "Export Recipes" msgstr "" #: .\cookbook\templates\export.html:14 .\cookbook\templates\export.html:20 -#: .\cookbook\templates\shopping_list.html:347 +#: .\cookbook\templates\shopping_list.html:351 #: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20 msgid "Export" msgstr "" +#: .\cookbook\templates\files.html:7 +msgid "Files" +msgstr "" + #: .\cookbook\templates\forms\edit_import_recipe.html:5 #: .\cookbook\templates\forms\edit_import_recipe.html:9 msgid "Import new Recipe" msgstr "" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:389 -#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:416 +#: .\cookbook\templates\forms\edit_internal_recipe.html:448 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:28 .\cookbook\templates\settings.html:35 -#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:73 -#: .\cookbook\templates\shopping_list.html:349 +#: .\cookbook\templates\settings.html:44 .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:114 +#: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "" @@ -625,179 +825,186 @@ msgstr "" msgid "Edit Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:52 +#: .\cookbook\templates\forms\edit_internal_recipe.html:56 +#: .\cookbook\templates\url_import.html:171 msgid "Description" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:72 +#: .\cookbook\templates\forms\edit_internal_recipe.html:76 msgid "Waiting Time" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:78 +#: .\cookbook\templates\forms\edit_internal_recipe.html:82 msgid "Servings Text" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:89 +#: .\cookbook\templates\forms\edit_internal_recipe.html:93 msgid "Select Keywords" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:90 -#: .\cookbook\templates\url_import.html:212 +#: .\cookbook\templates\forms\edit_internal_recipe.html:94 +#: .\cookbook\templates\url_import.html:583 msgid "Add Keyword" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:108 +#: .\cookbook\templates\forms\edit_internal_recipe.html:112 msgid "Nutrition" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -#: .\cookbook\templates\forms\edit_internal_recipe.html:162 +#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:166 msgid "Delete Step" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:120 msgid "Calories" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:119 +#: .\cookbook\templates\forms\edit_internal_recipe.html:123 msgid "Carbohydrates" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:122 +#: .\cookbook\templates\forms\edit_internal_recipe.html:126 msgid "Fats" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:124 +#: .\cookbook\templates\forms\edit_internal_recipe.html:128 msgid "Proteins" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:146 -#: .\cookbook\templates\forms\edit_internal_recipe.html:454 +#: .\cookbook\templates\forms\edit_internal_recipe.html:150 +#: .\cookbook\templates\forms\edit_internal_recipe.html:481 msgid "Step" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:167 +#: .\cookbook\templates\forms\edit_internal_recipe.html:171 msgid "Show as header" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:173 +#: .\cookbook\templates\forms\edit_internal_recipe.html:177 msgid "Hide as header" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:178 +#: .\cookbook\templates\forms\edit_internal_recipe.html:182 msgid "Move Up" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:183 +#: .\cookbook\templates\forms\edit_internal_recipe.html:187 msgid "Move Down" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:192 +#: .\cookbook\templates\forms\edit_internal_recipe.html:196 msgid "Step Name" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:200 msgid "Step Type" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:207 +#: .\cookbook\templates\forms\edit_internal_recipe.html:212 msgid "Step time in Minutes" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:261 -#: .\cookbook\templates\shopping_list.html:183 -msgid "Select Unit" +#: .\cookbook\templates\forms\edit_internal_recipe.html:228 +msgid "Select File" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:262 -#: .\cookbook\templates\forms\edit_internal_recipe.html:286 -#: .\cookbook\templates\shopping_list.html:184 -#: .\cookbook\templates\shopping_list.html:206 -msgid "Create" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:263 -#: .\cookbook\templates\forms\edit_internal_recipe.html:287 -#: .\cookbook\templates\shopping_list.html:185 -#: .\cookbook\templates\shopping_list.html:207 -#: .\cookbook\templates\shopping_list.html:237 -#: .\cookbook\templates\shopping_list.html:261 -#: .\cookbook\templates\url_import.html:124 -#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\forms\edit_internal_recipe.html:229 +#: .\cookbook\templates\forms\edit_internal_recipe.html:290 +#: .\cookbook\templates\forms\edit_internal_recipe.html:314 +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 msgid "Select" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:285 -#: .\cookbook\templates\shopping_list.html:205 +#: .\cookbook\templates\forms\edit_internal_recipe.html:288 +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:289 +#: .\cookbook\templates\forms\edit_internal_recipe.html:313 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:312 +#: .\cookbook\templates\shopping_list.html:209 msgid "Select Food" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:302 +#: .\cookbook\templates\forms\edit_internal_recipe.html:329 #: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:171 +#: .\cookbook\templates\url_import.html:542 msgid "Note" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:319 +#: .\cookbook\templates\forms\edit_internal_recipe.html:346 msgid "Delete Ingredient" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:325 +#: .\cookbook\templates\forms\edit_internal_recipe.html:352 msgid "Make Header" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:358 msgid "Make Ingredient" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 +#: .\cookbook\templates\forms\edit_internal_recipe.html:364 msgid "Disable Amount" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:343 +#: .\cookbook\templates\forms\edit_internal_recipe.html:370 msgid "Enable Amount" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:348 +#: .\cookbook\templates\forms\edit_internal_recipe.html:375 msgid "Copy Template Reference" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:374 -#: .\cookbook\templates\url_import.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:401 +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 msgid "Instructions" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:414 +#: .\cookbook\templates\forms\edit_internal_recipe.html:445 msgid "Save & View" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:391 -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 +#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:451 msgid "Add Step" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:394 -#: .\cookbook\templates\forms\edit_internal_recipe.html:428 +#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:455 msgid "Add Nutrition" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:396 -#: .\cookbook\templates\forms\edit_internal_recipe.html:430 +#: .\cookbook\templates\forms\edit_internal_recipe.html:423 +#: .\cookbook\templates\forms\edit_internal_recipe.html:457 msgid "Remove Nutrition" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -#: .\cookbook\templates\forms\edit_internal_recipe.html:433 +#: .\cookbook\templates\forms\edit_internal_recipe.html:425 +#: .\cookbook\templates\forms\edit_internal_recipe.html:460 msgid "View Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:400 -#: .\cookbook\templates\forms\edit_internal_recipe.html:435 +#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\templates\forms\edit_internal_recipe.html:462 msgid "Delete Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 +#: .\cookbook\templates\forms\edit_internal_recipe.html:468 msgid "Steps" msgstr "" @@ -817,7 +1024,7 @@ msgid "" msgstr "" #: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\stats.html:26 +#: .\cookbook\templates\space.html:35 .\cookbook\templates\stats.html:26 msgid "Units" msgstr "" @@ -839,10 +1046,6 @@ msgstr "" msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "" -#: .\cookbook\templates\generic\delete_template.html:21 -msgid "Confirm" -msgstr "" - #: .\cookbook\templates\generic\edit_template.html:30 msgid "View" msgstr "" @@ -864,12 +1067,6 @@ msgstr "" msgid "Import all" msgstr "" -#: .\cookbook\templates\generic\new_template.html:6 -#: .\cookbook\templates\generic\new_template.html:14 -#: .\cookbook\templates\meal_plan.html:323 -msgid "New" -msgstr "" - #: .\cookbook\templates\generic\table_template.html:76 #: .\cookbook\templates\recipes_table.html:121 msgid "previous" @@ -914,7 +1111,7 @@ msgstr "" #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:264 .\cookbook\views\new.py:40 +#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "" @@ -947,10 +1144,6 @@ msgstr "" msgid "New Recipe" msgstr "" -#: .\cookbook\templates\index.html:47 -msgid "Website Import" -msgstr "" - #: .\cookbook\templates\index.html:53 msgid "Advanced Search" msgstr "" @@ -964,7 +1157,7 @@ msgid "Last viewed" msgstr "" #: .\cookbook\templates\index.html:87 .\cookbook\templates\meal_plan.html:178 -#: .\cookbook\templates\stats.html:22 +#: .\cookbook\templates\space.html:29 .\cookbook\templates\stats.html:22 msgid "Recipes" msgstr "" @@ -1112,7 +1305,7 @@ msgid "New Entry" msgstr "" #: .\cookbook\templates\meal_plan.html:113 -#: .\cookbook\templates\shopping_list.html:52 +#: .\cookbook\templates\shopping_list.html:56 msgid "Search Recipe" msgstr "" @@ -1142,7 +1335,7 @@ msgstr "" #: .\cookbook\templates\meal_plan.html:168 #: .\cookbook\templates\shopping_list.html:7 #: .\cookbook\templates\shopping_list.html:29 -#: .\cookbook\templates\shopping_list.html:705 +#: .\cookbook\templates\shopping_list.html:714 msgid "Shopping List" msgstr "" @@ -1192,7 +1385,7 @@ msgstr "" #: .\cookbook\templates\meal_plan.html:270 #: .\cookbook\templates\meal_plan_entry.html:20 -#: .\cookbook\templates\shopping_list.html:250 +#: .\cookbook\templates\shopping_list.html:254 msgid "Shared with" msgstr "" @@ -1267,7 +1460,6 @@ msgstr "" #: .\cookbook\templates\no_groups_info.html:18 #: .\cookbook\templates\no_perm_info.html:15 -#: .\cookbook\templates\no_space_info.html:15 msgid "Please contact your administrator." msgstr "" @@ -1282,13 +1474,48 @@ msgid "" "action." msgstr "" -#: .\cookbook\templates\no_space_info.html:5 -#: .\cookbook\templates\no_space_info.html:12 +#: .\cookbook\templates\no_space_info.html:6 +#: .\cookbook\templates\no_space_info.html:13 msgid "No Space" msgstr "" -#: .\cookbook\templates\no_space_info.html:15 -msgid "You are not a member of any space." +#: .\cookbook\templates\no_space_info.html:17 +msgid "" +"Recipes, foods, shopping lists and more are organized in spaces of one or " +"more people." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:18 +msgid "" +"You can either be invited into an existing space or create your own one." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:31 +#: .\cookbook\templates\no_space_info.html:40 +msgid "Join Space" +msgstr "" + +#: .\cookbook\templates\no_space_info.html:34 +msgid "Join an existing space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:35 +msgid "" +"To join an existing space either enter your invite token or click on the " +"invite link the space owner send you." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:48 +#: .\cookbook\templates\no_space_info.html:56 +msgid "Create Space" +msgstr "" + +#: .\cookbook\templates\no_space_info.html:51 +msgid "Create your own recipe space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:52 +msgid "Start your own recipe space and invite other users to it." msgstr "" #: .\cookbook\templates\offline.html:6 @@ -1305,28 +1532,29 @@ msgid "" "recently viewed them. Keep in mind that data might be outdated." msgstr "" -#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\stats.html:47 +#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\space.html:56 +#: .\cookbook\templates\stats.html:47 msgid "Comments" msgstr "" #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:170 +#: .\cookbook\views\edit.py:179 msgid "Comment" msgstr "" #: .\cookbook\templates\recipes_table.html:19 #: .\cookbook\templates\recipes_table.html:23 -#: .\cookbook\templates\url_import.html:69 +#: .\cookbook\templates\url_import.html:440 msgid "Recipe Image" msgstr "" #: .\cookbook\templates\recipes_table.html:51 -#: .\cookbook\templates\url_import.html:74 +#: .\cookbook\templates\url_import.html:445 msgid "Preparation time ca." msgstr "" #: .\cookbook\templates\recipes_table.html:57 -#: .\cookbook\templates\url_import.html:79 +#: .\cookbook\templates\url_import.html:450 msgid "Waiting time ca." msgstr "" @@ -1342,39 +1570,67 @@ msgstr "" msgid "Recipe Home" msgstr "" -#: .\cookbook\templates\settings.html:22 +#: .\cookbook\templates\settings.html:23 msgid "Account" msgstr "" -#: .\cookbook\templates\settings.html:38 -msgid "Link social account" +#: .\cookbook\templates\settings.html:27 +msgid "Preferences" msgstr "" -#: .\cookbook\templates\settings.html:42 +#: .\cookbook\templates\settings.html:31 +msgid "API-Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:39 +msgid "Name Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:47 +msgid "Password Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:55 +msgid "Email Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:57 +msgid "Manage Email Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:61 +msgid "Social" +msgstr "" + +#: .\cookbook\templates\settings.html:63 +msgid "Manage Social Accounts" +msgstr "" + +#: .\cookbook\templates\settings.html:75 msgid "Language" msgstr "" -#: .\cookbook\templates\settings.html:67 +#: .\cookbook\templates\settings.html:105 msgid "Style" msgstr "" -#: .\cookbook\templates\settings.html:79 +#: .\cookbook\templates\settings.html:125 msgid "API Token" msgstr "" -#: .\cookbook\templates\settings.html:80 +#: .\cookbook\templates\settings.html:126 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." msgstr "" -#: .\cookbook\templates\settings.html:92 +#: .\cookbook\templates\settings.html:143 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" msgstr "" -#: .\cookbook\templates\settings.html:94 +#: .\cookbook\templates\settings.html:145 msgid "or" msgstr "" @@ -1395,58 +1651,55 @@ msgstr "" msgid "Create Superuser account" msgstr "" -#: .\cookbook\templates\shopping_list.html:75 +#: .\cookbook\templates\shopping_list.html:79 msgid "Shopping Recipes" msgstr "" -#: .\cookbook\templates\shopping_list.html:79 +#: .\cookbook\templates\shopping_list.html:83 msgid "No recipes selected" msgstr "" -#: .\cookbook\templates\shopping_list.html:146 +#: .\cookbook\templates\shopping_list.html:150 msgid "Entry Mode" msgstr "" -#: .\cookbook\templates\shopping_list.html:154 +#: .\cookbook\templates\shopping_list.html:158 msgid "Add Entry" msgstr "" -#: .\cookbook\templates\shopping_list.html:170 +#: .\cookbook\templates\shopping_list.html:174 msgid "Amount" msgstr "" -#: .\cookbook\templates\shopping_list.html:226 +#: .\cookbook\templates\shopping_list.html:230 +#: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "" -#: .\cookbook\templates\shopping_list.html:236 +#: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "" -#: .\cookbook\templates\shopping_list.html:260 +#: .\cookbook\templates\shopping_list.html:264 msgid "Select User" msgstr "" -#: .\cookbook\templates\shopping_list.html:279 +#: .\cookbook\templates\shopping_list.html:283 msgid "Finished" msgstr "" -#: .\cookbook\templates\shopping_list.html:292 +#: .\cookbook\templates\shopping_list.html:296 msgid "You are offline, shopping list might not syncronize." msgstr "" -#: .\cookbook\templates\shopping_list.html:357 +#: .\cookbook\templates\shopping_list.html:361 msgid "Copy/Export" msgstr "" -#: .\cookbook\templates\shopping_list.html:361 +#: .\cookbook\templates\shopping_list.html:365 msgid "List Prefix" msgstr "" -#: .\cookbook\templates\shopping_list.html:708 -msgid "There was an error creating a resource!" -msgstr "" - #: .\cookbook\templates\socialaccount\connections.html:4 #: .\cookbook\templates\socialaccount\connections.html:7 msgid "Account Connections" @@ -1458,10 +1711,6 @@ msgid "" " accounts:" msgstr "" -#: .\cookbook\templates\socialaccount\connections.html:36 -msgid "Remove" -msgstr "" - #: .\cookbook\templates\socialaccount\connections.html:44 msgid "" "You currently have no social network accounts connected to this account." @@ -1471,38 +1720,87 @@ msgstr "" msgid "Add a 3rd Party Account" msgstr "" -#: .\cookbook\templates\stats.html:4 -msgid "Stats" +#: .\cookbook\templates\space.html:18 +msgid "Manage Subscription" msgstr "" -#: .\cookbook\templates\stats.html:19 +#: .\cookbook\templates\space.html:26 .\cookbook\templates\stats.html:19 msgid "Number of objects" msgstr "" -#: .\cookbook\templates\stats.html:30 +#: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:30 msgid "Recipe Imports" msgstr "" -#: .\cookbook\templates\stats.html:38 +#: .\cookbook\templates\space.html:47 .\cookbook\templates\stats.html:38 msgid "Objects stats" msgstr "" -#: .\cookbook\templates\stats.html:41 +#: .\cookbook\templates\space.html:50 .\cookbook\templates\stats.html:41 msgid "Recipes without Keywords" msgstr "" -#: .\cookbook\templates\stats.html:43 +#: .\cookbook\templates\space.html:52 .\cookbook\templates\stats.html:43 msgid "External Recipes" msgstr "" -#: .\cookbook\templates\stats.html:45 +#: .\cookbook\templates\space.html:54 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "" -#: .\cookbook\templates\system.html:21 .\cookbook\views\lists.py:115 +#: .\cookbook\templates\space.html:67 +msgid "Members" +msgstr "" + +#: .\cookbook\templates\space.html:71 +msgid "Invite User" +msgstr "" + +#: .\cookbook\templates\space.html:82 +msgid "User" +msgstr "" + +#: .\cookbook\templates\space.html:83 +msgid "Groups" +msgstr "" + +#: .\cookbook\templates\space.html:99 +msgid "admin" +msgstr "" + +#: .\cookbook\templates\space.html:100 +msgid "user" +msgstr "" + +#: .\cookbook\templates\space.html:101 +msgid "guest" +msgstr "" + +#: .\cookbook\templates\space.html:102 +msgid "remove" +msgstr "" + +#: .\cookbook\templates\space.html:106 +msgid "Update" +msgstr "" + +#: .\cookbook\templates\space.html:110 +msgid "You cannot edit yourself." +msgstr "" + +#: .\cookbook\templates\space.html:117 +msgid "There are no members in your space yet!" +msgstr "" + +#: .\cookbook\templates\space.html:124 .\cookbook\templates\system.html:21 +#: .\cookbook\views\lists.py:115 msgid "Invite Links" msgstr "" +#: .\cookbook\templates\stats.html:4 +msgid "Stats" +msgstr "" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "" @@ -1600,45 +1898,141 @@ msgid "" " " msgstr "" -#: .\cookbook\templates\url_import.html:5 +#: .\cookbook\templates\url_import.html:6 msgid "URL Import" msgstr "" -#: .\cookbook\templates\url_import.html:23 +#: .\cookbook\templates\url_import.html:31 +msgid "Drag me to your bookmarks to import recipes from anywhere" +msgstr "" + +#: .\cookbook\templates\url_import.html:32 +msgid "Bookmark Me!" +msgstr "" + +#: .\cookbook\templates\url_import.html:61 msgid "Enter website URL" msgstr "" -#: .\cookbook\templates\url_import.html:36 -msgid "Enter json directly" +#: .\cookbook\templates\url_import.html:97 +msgid "Select recipe files to import or drop them here..." msgstr "" -#: .\cookbook\templates\url_import.html:57 +#: .\cookbook\templates\url_import.html:118 +msgid "Paste json or html source here to load recipe." +msgstr "" + +#: .\cookbook\templates\url_import.html:146 +msgid "Preview Recipe Data" +msgstr "" + +#: .\cookbook\templates\url_import.html:147 +msgid "Drag recipe attributes from the right into the appropriate box below." +msgstr "" + +#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\url_import.html:173 +#: .\cookbook\templates\url_import.html:190 +#: .\cookbook\templates\url_import.html:209 +#: .\cookbook\templates\url_import.html:227 +#: .\cookbook\templates\url_import.html:242 +#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:273 +#: .\cookbook\templates\url_import.html:300 +#: .\cookbook\templates\url_import.html:351 +msgid "Clear Contents" +msgstr "" + +#: .\cookbook\templates\url_import.html:158 +msgid "Text dragged here will be appended to the name." +msgstr "" + +#: .\cookbook\templates\url_import.html:175 +msgid "Text dragged here will be appended to the description." +msgstr "" + +#: .\cookbook\templates\url_import.html:192 +msgid "Keywords dragged here will be appended to current list" +msgstr "" + +#: .\cookbook\templates\url_import.html:207 +msgid "Image" +msgstr "" + +#: .\cookbook\templates\url_import.html:239 +msgid "Prep Time" +msgstr "" + +#: .\cookbook\templates\url_import.html:254 +msgid "Cook Time" +msgstr "" + +#: .\cookbook\templates\url_import.html:275 +msgid "Ingredients dragged here will be appended to current list." +msgstr "" + +#: .\cookbook\templates\url_import.html:302 +msgid "" +"Recipe instructions dragged here will be appended to current instructions." +msgstr "" + +#: .\cookbook\templates\url_import.html:325 +msgid "Discovered Attributes" +msgstr "" + +#: .\cookbook\templates\url_import.html:327 +msgid "" +"Drag recipe attributes from below into the appropriate box on the left. " +"Click any node to display its full properties." +msgstr "" + +#: .\cookbook\templates\url_import.html:344 +msgid "Show Blank Field" +msgstr "" + +#: .\cookbook\templates\url_import.html:349 +msgid "Blank Field" +msgstr "" + +#: .\cookbook\templates\url_import.html:353 +msgid "Items dragged to Blank Field will be appended." +msgstr "" + +#: .\cookbook\templates\url_import.html:400 +msgid "Delete Text" +msgstr "" + +#: .\cookbook\templates\url_import.html:413 +msgid "Delete image" +msgstr "" + +#: .\cookbook\templates\url_import.html:429 msgid "Recipe Name" msgstr "" -#: .\cookbook\templates\url_import.html:62 +#: .\cookbook\templates\url_import.html:433 msgid "Recipe Description" msgstr "" -#: .\cookbook\templates\url_import.html:123 -#: .\cookbook\templates\url_import.html:155 -#: .\cookbook\templates\url_import.html:211 +#: .\cookbook\templates\url_import.html:494 +#: .\cookbook\templates\url_import.html:526 +#: .\cookbook\templates\url_import.html:582 msgid "Select one" msgstr "" -#: .\cookbook\templates\url_import.html:225 +#: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "" -#: .\cookbook\templates\url_import.html:228 +#: .\cookbook\templates\url_import.html:599 msgid "Import all keywords, not only the ones already existing." msgstr "" -#: .\cookbook\templates\url_import.html:255 +#: .\cookbook\templates\url_import.html:626 msgid "Information" msgstr "" -#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:628 msgid "" " Only websites containing ld+json or microdata information can currently\n" " be imported. Most big recipe pages " @@ -1649,48 +2043,73 @@ msgid "" " github issues." msgstr "" -#: .\cookbook\templates\url_import.html:265 +#: .\cookbook\templates\url_import.html:636 msgid "Google ld+json Info" msgstr "" -#: .\cookbook\templates\url_import.html:268 +#: .\cookbook\templates\url_import.html:639 msgid "GitHub Issues" msgstr "" -#: .\cookbook\templates\url_import.html:270 +#: .\cookbook\templates\url_import.html:641 msgid "Recipe Markup Specification" msgstr "" -#: .\cookbook\views\api.py:71 +#: .\cookbook\views\api.py:77 msgid "Parameter updated_at incorrectly formatted" msgstr "" -#: .\cookbook\views\api.py:455 .\cookbook\views\views.py:226 +#: .\cookbook\views\api.py:553 .\cookbook\views\views.py:295 msgid "This feature is not available in the demo version!" msgstr "" -#: .\cookbook\views\api.py:478 +#: .\cookbook\views\api.py:576 msgid "Sync successful!" msgstr "" -#: .\cookbook\views\api.py:483 +#: .\cookbook\views\api.py:581 msgid "Error synchronizing with Storage" msgstr "" -#: .\cookbook\views\api.py:556 .\cookbook\views\api.py:576 +#: .\cookbook\views\api.py:649 +msgid "Nothing to do." +msgstr "" + +#: .\cookbook\views\api.py:664 +msgid "The requested site provided malformed data and cannot be read." +msgstr "" + +#: .\cookbook\views\api.py:671 msgid "The requested page could not be found." msgstr "" -#: .\cookbook\views\api.py:585 +#: .\cookbook\views\api.py:680 msgid "" -"The requested page refused to provide any information (Status Code 403)." +"The requested site does not provide any recognized data format to import the " +"recipe from." msgstr "" -#: .\cookbook\views\api.py:611 -msgid "Could not parse correctly..." +#: .\cookbook\views\api.py:694 +msgid "No useable data could be found." msgstr "" -#: .\cookbook\views\data.py:94 +#: .\cookbook\views\api.py:710 +msgid "I couldn't find anything to do." +msgstr "" + +#: .\cookbook\views\data.py:30 .\cookbook\views\data.py:121 +#: .\cookbook\views\edit.py:50 .\cookbook\views\import_export.py:67 +#: .\cookbook\views\new.py:32 +msgid "You have reached the maximum number of recipes for your space." +msgstr "" + +#: .\cookbook\views\data.py:34 .\cookbook\views\data.py:125 +#: .\cookbook\views\edit.py:54 .\cookbook\views\import_export.py:71 +#: .\cookbook\views\new.py:36 +msgid "You have more users than allowed in your space." +msgstr "" + +#: .\cookbook\views\data.py:103 #, python-format msgid "Batch edit done. %(count)d recipe was updated." msgid_plural "Batch edit done. %(count)d Recipes where updated." @@ -1702,7 +2121,7 @@ msgid "Monitor" msgstr "" #: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:86 +#: .\cookbook\views\new.py:98 msgid "Storage Backend" msgstr "" @@ -1711,8 +2130,8 @@ msgid "" "Could not delete this storage backend as it is used in at least one monitor." msgstr "" -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:204 -#: .\cookbook\views\new.py:144 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 +#: .\cookbook\views\new.py:156 msgid "Recipe Book" msgstr "" @@ -1720,55 +2139,55 @@ msgstr "" msgid "Bookmarks" msgstr "" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:214 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 msgid "Invite Link" msgstr "" -#: .\cookbook\views\edit.py:110 +#: .\cookbook\views\edit.py:119 msgid "Food" msgstr "" -#: .\cookbook\views\edit.py:119 +#: .\cookbook\views\edit.py:128 msgid "You cannot edit this storage!" msgstr "" -#: .\cookbook\views\edit.py:139 +#: .\cookbook\views\edit.py:148 msgid "Storage saved!" msgstr "" -#: .\cookbook\views\edit.py:145 +#: .\cookbook\views\edit.py:154 msgid "There was an error updating this storage backend!" msgstr "" -#: .\cookbook\views\edit.py:156 +#: .\cookbook\views\edit.py:165 msgid "Storage" msgstr "" -#: .\cookbook\views\edit.py:252 +#: .\cookbook\views\edit.py:261 msgid "Changes saved!" msgstr "" -#: .\cookbook\views\edit.py:256 +#: .\cookbook\views\edit.py:265 msgid "Error saving changes!" msgstr "" -#: .\cookbook\views\edit.py:289 +#: .\cookbook\views\edit.py:299 msgid "Units merged!" msgstr "" -#: .\cookbook\views\edit.py:291 .\cookbook\views\edit.py:307 +#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 msgid "Cannot merge with the same object!" msgstr "" -#: .\cookbook\views\edit.py:305 +#: .\cookbook\views\edit.py:315 msgid "Foods merged!" msgstr "" -#: .\cookbook\views\import_export.py:73 +#: .\cookbook\views\import_export.py:93 msgid "Importing is not implemented for this provider" msgstr "" -#: .\cookbook\views\import_export.py:92 +#: .\cookbook\views\import_export.py:115 msgid "Exporting is not implemented for this provider" msgstr "" @@ -1784,41 +2203,103 @@ msgstr "" msgid "Shopping Lists" msgstr "" -#: .\cookbook\views\new.py:111 +#: .\cookbook\views\new.py:123 msgid "Imported new recipe!" msgstr "" -#: .\cookbook\views\new.py:114 +#: .\cookbook\views\new.py:126 msgid "There was an error importing this recipe!" msgstr "" -#: .\cookbook\views\views.py:123 +#: .\cookbook\views\new.py:226 +msgid "Hello" +msgstr "" + +#: .\cookbook\views\new.py:226 +msgid "You have been invited by " +msgstr "" + +#: .\cookbook\views\new.py:227 +msgid " to join their Tandoor Recipes space " +msgstr "" + +#: .\cookbook\views\new.py:228 +msgid "Click the following link to activate your account: " +msgstr "" + +#: .\cookbook\views\new.py:229 +msgid "" +"If the link does not work use the following code to manually join the space: " +msgstr "" + +#: .\cookbook\views\new.py:230 +msgid "The invitation is valid until " +msgstr "" + +#: .\cookbook\views\new.py:231 +msgid "" +"Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " +msgstr "" + +#: .\cookbook\views\new.py:234 +msgid "Tandoor Recipes Invite" +msgstr "" + +#: .\cookbook\views\new.py:241 +msgid "Invite link successfully send to user." +msgstr "" + +#: .\cookbook\views\new.py:244 +msgid "" +"You have send to many emails, please share the link manually or wait a few " +"hours." +msgstr "" + +#: .\cookbook\views\new.py:246 +msgid "Email to user could not be send, please share link manually." +msgstr "" + +#: .\cookbook\views\views.py:125 +msgid "" +"You have successfully created your own recipe space. Start by adding some " +"recipes or invite other people to join you." +msgstr "" + +#: .\cookbook\views\views.py:173 msgid "You do not have the required permissions to perform this action!" msgstr "" -#: .\cookbook\views\views.py:134 +#: .\cookbook\views\views.py:184 msgid "Comment saved!" msgstr "" -#: .\cookbook\views\views.py:326 +#: .\cookbook\views\views.py:396 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." msgstr "" -#: .\cookbook\views\views.py:333 .\cookbook\views\views.py:378 +#: .\cookbook\views\views.py:403 msgid "Passwords dont match!" msgstr "" -#: .\cookbook\views\views.py:349 .\cookbook\views\views.py:385 +#: .\cookbook\views\views.py:419 msgid "User has been created, please login!" msgstr "" -#: .\cookbook\views\views.py:365 +#: .\cookbook\views\views.py:435 msgid "Malformed Invite Link supplied!" msgstr "" -#: .\cookbook\views\views.py:405 +#: .\cookbook\views\views.py:441 +msgid "You are already member of a space and therefore cannot join this one." +msgstr "" + +#: .\cookbook\views\views.py:452 +msgid "Successfully joined space." +msgstr "" + +#: .\cookbook\views\views.py:458 msgid "Invite Link not valid or already used!" msgstr "" diff --git a/cookbook/locale/tr/LC_MESSAGES/django.po b/cookbook/locale/tr/LC_MESSAGES/django.po index 979d1713c..0eb932b3f 100644 --- a/cookbook/locale/tr/LC_MESSAGES/django.po +++ b/cookbook/locale/tr/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: 2020-06-02 19:28+0000\n" "Last-Translator: Emre S, 2020\n" "Language-Team: Turkish (https://www.transifex.com/django-recipes/" @@ -22,14 +22,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:91 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 +#: .\cookbook\templates\forms\edit_internal_recipe.html:246 #: .\cookbook\templates\forms\ingredients.html:34 -#: .\cookbook\templates\stats.html:28 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\space.html:37 .\cookbook\templates\stats.html:28 +#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 msgid "Ingredients" msgstr "Malzemeler" -#: .\cookbook\forms.py:45 +#: .\cookbook\forms.py:49 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" @@ -37,35 +38,35 @@ msgstr "" "Gezinti çubuğunun rengi. Bütün renkeler bütün temalarla çalışmayabilir, önce " "deneyin!" -#: .\cookbook\forms.py:46 +#: .\cookbook\forms.py:51 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "Bir tarife yeni bir malzeme eklenirken kullanılacak Varsayılan Birim." -#: .\cookbook\forms.py:47 +#: .\cookbook\forms.py:53 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" msgstr "" -#: .\cookbook\forms.py:48 +#: .\cookbook\forms.py:56 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." msgstr "" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:58 msgid "Show recently viewed recipes on search page." msgstr "Son görüntülenen tarifleri arama sayfasında göster." -#: .\cookbook\forms.py:50 +#: .\cookbook\forms.py:59 msgid "Number of decimals to round ingredients." msgstr "Malzeme birimleri için yuvarlanma basamağı." -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:60 msgid "If you want to be able to create and see comments underneath recipes." msgstr "Tariflerin altında yorumlar oluşturup görebilmek istiyorsanız." -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:62 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -78,167 +79,181 @@ msgstr "" "fazla kişiyle alışveriş yaparken kullanışlıdır, ancak biraz mobil veri " "kullanabilir. Örnek sınırından düşükse, kaydederken sıfırlanır." -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:65 msgid "Makes the navbar stick to the top of the page." msgstr "" -#: .\cookbook\forms.py:72 +#: .\cookbook\forms.py:81 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" msgstr "" -#: .\cookbook\forms.py:93 .\cookbook\forms.py:315 -#: .\cookbook\templates\forms\edit_internal_recipe.html:45 +#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "İsim" -#: .\cookbook\forms.py:94 .\cookbook\forms.py:316 -#: .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:81 -#: .\cookbook\templates\stats.html:24 .\cookbook\templates\url_import.html:202 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 +#: .\cookbook\templates\base.html:105 +#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\templates\space.html:33 .\cookbook\templates\stats.html:24 +#: .\cookbook\templates\url_import.html:188 +#: .\cookbook\templates\url_import.html:573 msgid "Keywords" msgstr "" -#: .\cookbook\forms.py:95 +#: .\cookbook\forms.py:104 msgid "Preparation time in minutes" msgstr "" -#: .\cookbook\forms.py:96 +#: .\cookbook\forms.py:105 msgid "Waiting time (cooking/baking) in minutes" msgstr "" -#: .\cookbook\forms.py:97 .\cookbook\forms.py:317 +#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 msgid "Path" msgstr "" -#: .\cookbook\forms.py:98 +#: .\cookbook\forms.py:107 msgid "Storage UID" msgstr "" -#: .\cookbook\forms.py:121 +#: .\cookbook\forms.py:133 msgid "Default" msgstr "" -#: .\cookbook\forms.py:130 +#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:149 +#: .\cookbook\forms.py:164 msgid "New Unit" msgstr "" -#: .\cookbook\forms.py:150 +#: .\cookbook\forms.py:165 msgid "New unit that other gets replaced by." msgstr "" -#: .\cookbook\forms.py:155 +#: .\cookbook\forms.py:170 msgid "Old Unit" msgstr "" -#: .\cookbook\forms.py:156 +#: .\cookbook\forms.py:171 msgid "Unit that should be replaced." msgstr "" -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:187 msgid "New Food" msgstr "" -#: .\cookbook\forms.py:173 +#: .\cookbook\forms.py:188 msgid "New food that other gets replaced by." msgstr "" -#: .\cookbook\forms.py:178 +#: .\cookbook\forms.py:193 msgid "Old Food" msgstr "" -#: .\cookbook\forms.py:179 +#: .\cookbook\forms.py:194 msgid "Food that should be replaced." msgstr "" -#: .\cookbook\forms.py:197 +#: .\cookbook\forms.py:212 msgid "Add your comment: " msgstr "" -#: .\cookbook\forms.py:238 +#: .\cookbook\forms.py:253 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" -#: .\cookbook\forms.py:245 +#: .\cookbook\forms.py:260 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:269 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" msgstr "" -#: .\cookbook\forms.py:291 +#: .\cookbook\forms.py:307 msgid "Search String" msgstr "" -#: .\cookbook\forms.py:318 +#: .\cookbook\forms.py:334 msgid "File ID" msgstr "" -#: .\cookbook\forms.py:354 +#: .\cookbook\forms.py:370 msgid "You must provide at least a recipe or a title." msgstr "" -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:383 msgid "You can list default users to share recipes with in the settings." msgstr "" -#: .\cookbook\forms.py:368 -#: .\cookbook\templates\forms\edit_internal_recipe.html:377 +#: .\cookbook\forms.py:384 +#: .\cookbook\templates\forms\edit_internal_recipe.html:404 msgid "" "You can use markdown to format this field. See the docs here" msgstr "" -#: .\cookbook\forms.py:393 -msgid "A username is not required, if left blank the new user can choose one." +#: .\cookbook\forms.py:409 +msgid "Maximum number of users for this space reached." msgstr "" -#: .\cookbook\helper\permission_helper.py:123 -#: .\cookbook\helper\permission_helper.py:129 -#: .\cookbook\helper\permission_helper.py:151 -#: .\cookbook\helper\permission_helper.py:196 -#: .\cookbook\helper\permission_helper.py:210 -#: .\cookbook\helper\permission_helper.py:221 -#: .\cookbook\helper\permission_helper.py:232 .\cookbook\views\data.py:30 -#: .\cookbook\views\views.py:112 .\cookbook\views\views.py:116 -#: .\cookbook\views\views.py:184 -msgid "You do not have the required permissions to view this page!" +#: .\cookbook\forms.py:415 +msgid "Email address already taken!" msgstr "" -#: .\cookbook\helper\permission_helper.py:141 +#: .\cookbook\forms.py:423 +msgid "" +"An email address is not required but if present the invite link will be send " +"to the user." +msgstr "" + +#: .\cookbook\forms.py:438 +msgid "Name already taken." +msgstr "" + +#: .\cookbook\forms.py:449 +msgid "Accept Terms and Privacy" +msgstr "" + +#: .\cookbook\helper\AllAuthCustomAdapter.py:30 +msgid "" +"In order to prevent spam, the requested email was not send. Please wait a " +"few minutes and try again." +msgstr "" + +#: .\cookbook\helper\permission_helper.py:124 +#: .\cookbook\helper\permission_helper.py:144 .\cookbook\views\views.py:147 msgid "You are not logged in and therefore cannot view this page!" msgstr "" -#: .\cookbook\helper\permission_helper.py:145 -#: .\cookbook\helper\permission_helper.py:167 -#: .\cookbook\helper\permission_helper.py:182 +#: .\cookbook\helper\permission_helper.py:127 +#: .\cookbook\helper\permission_helper.py:132 +#: .\cookbook\helper\permission_helper.py:154 +#: .\cookbook\helper\permission_helper.py:199 +#: .\cookbook\helper\permission_helper.py:213 +#: .\cookbook\helper\permission_helper.py:224 +#: .\cookbook\helper\permission_helper.py:235 .\cookbook\views\data.py:39 +#: .\cookbook\views\views.py:158 .\cookbook\views\views.py:165 +#: .\cookbook\views\views.py:253 +msgid "You do not have the required permissions to view this page!" +msgstr "" + +#: .\cookbook\helper\permission_helper.py:148 +#: .\cookbook\helper\permission_helper.py:170 +#: .\cookbook\helper\permission_helper.py:185 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" -#: .\cookbook\helper\recipe_url_import.py:40 .\cookbook\views\api.py:549 -msgid "The requested site provided malformed data and cannot be read." -msgstr "" - -#: .\cookbook\helper\recipe_url_import.py:54 -msgid "" -"The requested site does not provide any recognized data format to import the " -"recipe from." -msgstr "" - -#: .\cookbook\helper\recipe_url_import.py:160 -msgid "Imported from" -msgstr "" - #: .\cookbook\helper\template_helper.py:60 #: .\cookbook\helper\template_helper.py:62 msgid "Could not parse template code." @@ -248,42 +263,53 @@ msgstr "" #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 -#: .\cookbook\templates\url_import.html:233 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:190 +#: .\cookbook\templates\url_import.html:27 +#: .\cookbook\templates\url_import.html:101 +#: .\cookbook\templates\url_import.html:123 +#: .\cookbook\templates\url_import.html:317 +#: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 +#: .\cookbook\views\edit.py:199 msgid "Import" msgstr "" -#: .\cookbook\integration\integration.py:131 +#: .\cookbook\integration\integration.py:162 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:134 +#: .\cookbook\integration\integration.py:165 +msgid "" +"An unexpected error occurred during the import. Please make sure you have " +"uploaded a valid file." +msgstr "" + +#: .\cookbook\integration\integration.py:169 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:137 +#: .\cookbook\integration\integration.py:173 #, python-format msgid "Imported %s recipes." msgstr "" -#: .\cookbook\integration\paprika.py:44 +#: .\cookbook\integration\paprika.py:46 msgid "Notes" msgstr "" -#: .\cookbook\integration\paprika.py:47 +#: .\cookbook\integration\paprika.py:49 msgid "Nutritional Information" msgstr "" -#: .\cookbook\integration\paprika.py:50 +#: .\cookbook\integration\paprika.py:53 msgid "Source" msgstr "" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:75 +#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 -#: .\cookbook\templates\url_import.html:84 +#: .\cookbook\templates\url_import.html:224 +#: .\cookbook\templates\url_import.html:455 msgid "Servings" msgstr "" @@ -292,11 +318,11 @@ msgid "Waiting time" msgstr "" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:69 +#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "" -#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:71 +#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:78 #: .\cookbook\templates\forms\ingredients.html:7 #: .\cookbook\templates\index.html:7 msgid "Cookbook" @@ -322,44 +348,72 @@ msgstr "" msgid "Other" msgstr "" -#: .\cookbook\models.py:110 .\cookbook\templates\shopping_list.html:48 +#: .\cookbook\models.py:71 +msgid "" +"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " +"upload." +msgstr "" + +#: .\cookbook\models.py:121 .\cookbook\templates\search.html:7 +#: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "" -#: .\cookbook\models.py:111 .\cookbook\templates\base.html:85 +#: .\cookbook\models.py:122 .\cookbook\templates\base.html:92 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:224 .\cookbook\views\new.py:188 +#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 msgid "Meal-Plan" msgstr "" -#: .\cookbook\models.py:112 .\cookbook\templates\base.html:82 +#: .\cookbook\models.py:123 .\cookbook\templates\base.html:89 msgid "Books" msgstr "" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Small" msgstr "" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Large" msgstr "" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:198 +#: .\cookbook\models.py:131 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\templates\generic\new_template.html:14 +#: .\cookbook\templates\meal_plan.html:323 +msgid "New" +msgstr "" + +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:202 msgid "Text" msgstr "" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:199 +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:203 msgid "Time" msgstr "" +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:204 +#: .\cookbook\templates\forms\edit_internal_recipe.html:218 +msgid "File" +msgstr "" + +#: .\cookbook\serializer.py:109 +msgid "File uploads are not enabled for this Space." +msgstr "" + +#: .\cookbook\serializer.py:117 +msgid "You have reached your file upload limit." +msgstr "" + #: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 #: .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 #: .\cookbook\templates\shopping_list.html:33 +#: .\cookbook\templates\space.html:84 msgid "Edit" msgstr "" @@ -373,10 +427,6 @@ msgstr "" msgid "Delete" msgstr "" -#: .\cookbook\tables.py:144 -msgid "Link" -msgstr "" - #: .\cookbook\templates\404.html:5 msgid "404 Error" msgstr "" @@ -393,21 +443,120 @@ msgstr "" msgid "Report a Bug" msgstr "" -#: .\cookbook\templates\account\login.html:7 -#: .\cookbook\templates\base.html:170 +#: .\cookbook\templates\account\email.html:6 +#: .\cookbook\templates\account\email.html:9 +msgid "E-mail Addresses" +msgstr "" + +#: .\cookbook\templates\account\email.html:11 +msgid "The following e-mail addresses are associated with your account:" +msgstr "" + +#: .\cookbook\templates\account\email.html:28 +msgid "Verified" +msgstr "" + +#: .\cookbook\templates\account\email.html:30 +msgid "Unverified" +msgstr "" + +#: .\cookbook\templates\account\email.html:32 +msgid "Primary" +msgstr "" + +#: .\cookbook\templates\account\email.html:39 +msgid "Make Primary" +msgstr "" + +#: .\cookbook\templates\account\email.html:41 +msgid "Re-send Verification" +msgstr "" + +#: .\cookbook\templates\account\email.html:42 +#: .\cookbook\templates\socialaccount\connections.html:36 +msgid "Remove" +msgstr "" + +#: .\cookbook\templates\account\email.html:50 +msgid "Warning:" +msgstr "" + +#: .\cookbook\templates\account\email.html:50 +msgid "" +"You currently do not have any e-mail address set up. You should really add " +"an e-mail address so you can receive notifications, reset your password, etc." +msgstr "" + +#: .\cookbook\templates\account\email.html:56 +msgid "Add E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email.html:61 +msgid "Add E-mail" +msgstr "" + +#: .\cookbook\templates\account\email.html:71 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:6 +#: .\cookbook\templates\account\email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that\n" +" %(email)s is an e-mail address " +"for user %(user_display)s\n" +" ." +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:22 +#: .\cookbook\templates\generic\delete_template.html:21 +msgid "Confirm" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:29 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please\n" +" issue a new e-mail confirmation " +"request." +msgstr "" + +#: .\cookbook\templates\account\login.html:8 +#: .\cookbook\templates\base.html:180 msgid "Login" msgstr "" -#: .\cookbook\templates\account\login.html:13 -#: .\cookbook\templates\account\login.html:28 +#: .\cookbook\templates\account\login.html:15 +#: .\cookbook\templates\account\login.html:31 +#: .\cookbook\templates\account\signup.html:69 +#: .\cookbook\templates\account\signup_closed.html:15 msgid "Sign In" msgstr "" -#: .\cookbook\templates\account\login.html:38 +#: .\cookbook\templates\account\login.html:32 +msgid "Sign Up" +msgstr "" + +#: .\cookbook\templates\account\login.html:36 +#: .\cookbook\templates\account\login.html:37 +#: .\cookbook\templates\account\password_reset.html:29 +msgid "Reset My Password" +msgstr "" + +#: .\cookbook\templates\account\login.html:37 +msgid "Lost your password?" +msgstr "" + +#: .\cookbook\templates\account\login.html:48 msgid "Social Login" msgstr "" -#: .\cookbook\templates\account\login.html:39 +#: .\cookbook\templates\account\login.html:49 msgid "You can use any of the following providers to sign in." msgstr "" @@ -421,115 +570,161 @@ msgstr "" msgid "Are you sure you want to sign out?" msgstr "" -#: .\cookbook\templates\account\password_reset.html:5 -#: .\cookbook\templates\account\password_reset_done.html:5 +#: .\cookbook\templates\account\password_reset.html:7 +#: .\cookbook\templates\account\password_reset.html:13 +#: .\cookbook\templates\account\password_reset_done.html:7 +#: .\cookbook\templates\account\password_reset_done.html:10 msgid "Password Reset" msgstr "" -#: .\cookbook\templates\account\password_reset.html:9 -#: .\cookbook\templates\account\password_reset_done.html:9 -msgid "Password reset is not implemented for the time being!" +#: .\cookbook\templates\account\password_reset.html:24 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." msgstr "" -#: .\cookbook\templates\account\signup.html:5 +#: .\cookbook\templates\account\password_reset.html:32 +msgid "Password reset is disabled on this instance." +msgstr "" + +#: .\cookbook\templates\account\password_reset_done.html:16 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: .\cookbook\templates\account\signup.html:6 msgid "Register" msgstr "" -#: .\cookbook\templates\account\signup.html:9 -msgid "Create your Account" +#: .\cookbook\templates\account\signup.html:12 +msgid "Create an Account" msgstr "" -#: .\cookbook\templates\account\signup.html:14 +#: .\cookbook\templates\account\signup.html:42 +msgid "I accept the follwoing" +msgstr "" + +#: .\cookbook\templates\account\signup.html:45 +msgid "Terms and Conditions" +msgstr "" + +#: .\cookbook\templates\account\signup.html:48 +msgid "and" +msgstr "" + +#: .\cookbook\templates\account\signup.html:52 +msgid "Privacy Policy" +msgstr "" + +#: .\cookbook\templates\account\signup.html:65 msgid "Create User" msgstr "" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:160 +#: .\cookbook\templates\account\signup.html:69 +msgid "Already have an account?" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:5 +#: .\cookbook\templates\account\signup_closed.html:11 +msgid "Sign Up Closed" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:13 +msgid "We are sorry, but the sign up is currently closed." +msgstr "" + +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:170 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "" -#: .\cookbook\templates\base.html:78 +#: .\cookbook\templates\base.html:85 msgid "Utensils" msgstr "" -#: .\cookbook\templates\base.html:88 +#: .\cookbook\templates\base.html:95 msgid "Shopping" msgstr "" -#: .\cookbook\templates\base.html:102 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:93 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:66 +#: .\cookbook\templates\base.html:109 .\cookbook\views\delete.py:84 +#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 +#: .\cookbook\views\new.py:78 msgid "Keyword" msgstr "" -#: .\cookbook\templates\base.html:104 +#: .\cookbook\templates\base.html:111 msgid "Batch Edit" msgstr "" -#: .\cookbook\templates\base.html:109 +#: .\cookbook\templates\base.html:116 msgid "Storage Data" msgstr "" -#: .\cookbook\templates\base.html:113 +#: .\cookbook\templates\base.html:120 msgid "Storage Backends" msgstr "" -#: .\cookbook\templates\base.html:115 +#: .\cookbook\templates\base.html:122 msgid "Configure Sync" msgstr "" -#: .\cookbook\templates\base.html:117 +#: .\cookbook\templates\base.html:124 msgid "Discovered Recipes" msgstr "" -#: .\cookbook\templates\base.html:119 +#: .\cookbook\templates\base.html:126 msgid "Discovery Log" msgstr "" -#: .\cookbook\templates\base.html:121 .\cookbook\templates\stats.html:10 +#: .\cookbook\templates\base.html:128 .\cookbook\templates\stats.html:10 msgid "Statistics" msgstr "" -#: .\cookbook\templates\base.html:123 +#: .\cookbook\templates\base.html:130 msgid "Units & Ingredients" msgstr "" -#: .\cookbook\templates\base.html:125 +#: .\cookbook\templates\base.html:132 .\cookbook\templates\index.html:47 msgid "Import Recipe" msgstr "" -#: .\cookbook\templates\base.html:144 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:151 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:16 msgid "Settings" msgstr "" -#: .\cookbook\templates\base.html:146 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:153 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "" -#: .\cookbook\templates\base.html:150 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:155 .\cookbook\templates\space.html:7 +msgid "Space Settings" +msgstr "" + +#: .\cookbook\templates\base.html:160 .\cookbook\templates\system.html:13 msgid "System" msgstr "" -#: .\cookbook\templates\base.html:152 +#: .\cookbook\templates\base.html:162 msgid "Admin" msgstr "" -#: .\cookbook\templates\base.html:156 +#: .\cookbook\templates\base.html:166 msgid "Markdown Guide" msgstr "" -#: .\cookbook\templates\base.html:158 +#: .\cookbook\templates\base.html:168 msgid "GitHub" msgstr "" -#: .\cookbook\templates\base.html:162 +#: .\cookbook\templates\base.html:172 msgid "API Browser" msgstr "" -#: .\cookbook\templates\base.html:165 -msgid "Logout" +#: .\cookbook\templates\base.html:175 +msgid "Log out" msgstr "" #: .\cookbook\templates\batch\edit.html:6 @@ -544,7 +739,7 @@ msgstr "" msgid "Add the specified keywords to all recipes containing a word" msgstr "" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:76 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 msgid "Sync" msgstr "" @@ -571,7 +766,7 @@ msgstr "" msgid "Importing Recipes" msgstr "" -#: .\cookbook\templates\batch\waiting.html:23 +#: .\cookbook\templates\batch\waiting.html:28 msgid "" "This can take a few minutes, depending on the number of recipes in sync, " "please wait." @@ -608,26 +803,31 @@ msgid "Export Recipes" msgstr "" #: .\cookbook\templates\export.html:14 .\cookbook\templates\export.html:20 -#: .\cookbook\templates\shopping_list.html:347 +#: .\cookbook\templates\shopping_list.html:351 #: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20 msgid "Export" msgstr "" +#: .\cookbook\templates\files.html:7 +msgid "Files" +msgstr "" + #: .\cookbook\templates\forms\edit_import_recipe.html:5 #: .\cookbook\templates\forms\edit_import_recipe.html:9 msgid "Import new Recipe" msgstr "" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:389 -#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:416 +#: .\cookbook\templates\forms\edit_internal_recipe.html:448 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:28 .\cookbook\templates\settings.html:35 -#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:73 -#: .\cookbook\templates\shopping_list.html:349 +#: .\cookbook\templates\settings.html:44 .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:114 +#: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "" @@ -636,179 +836,186 @@ msgstr "" msgid "Edit Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:52 +#: .\cookbook\templates\forms\edit_internal_recipe.html:56 +#: .\cookbook\templates\url_import.html:171 msgid "Description" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:72 +#: .\cookbook\templates\forms\edit_internal_recipe.html:76 msgid "Waiting Time" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:78 +#: .\cookbook\templates\forms\edit_internal_recipe.html:82 msgid "Servings Text" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:89 +#: .\cookbook\templates\forms\edit_internal_recipe.html:93 msgid "Select Keywords" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:90 -#: .\cookbook\templates\url_import.html:212 +#: .\cookbook\templates\forms\edit_internal_recipe.html:94 +#: .\cookbook\templates\url_import.html:583 msgid "Add Keyword" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:108 +#: .\cookbook\templates\forms\edit_internal_recipe.html:112 msgid "Nutrition" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -#: .\cookbook\templates\forms\edit_internal_recipe.html:162 +#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:166 msgid "Delete Step" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:120 msgid "Calories" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:119 +#: .\cookbook\templates\forms\edit_internal_recipe.html:123 msgid "Carbohydrates" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:122 +#: .\cookbook\templates\forms\edit_internal_recipe.html:126 msgid "Fats" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:124 +#: .\cookbook\templates\forms\edit_internal_recipe.html:128 msgid "Proteins" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:146 -#: .\cookbook\templates\forms\edit_internal_recipe.html:454 +#: .\cookbook\templates\forms\edit_internal_recipe.html:150 +#: .\cookbook\templates\forms\edit_internal_recipe.html:481 msgid "Step" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:167 +#: .\cookbook\templates\forms\edit_internal_recipe.html:171 msgid "Show as header" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:173 +#: .\cookbook\templates\forms\edit_internal_recipe.html:177 msgid "Hide as header" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:178 +#: .\cookbook\templates\forms\edit_internal_recipe.html:182 msgid "Move Up" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:183 +#: .\cookbook\templates\forms\edit_internal_recipe.html:187 msgid "Move Down" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:192 +#: .\cookbook\templates\forms\edit_internal_recipe.html:196 msgid "Step Name" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:200 msgid "Step Type" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:207 +#: .\cookbook\templates\forms\edit_internal_recipe.html:212 msgid "Step time in Minutes" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:261 -#: .\cookbook\templates\shopping_list.html:183 -msgid "Select Unit" +#: .\cookbook\templates\forms\edit_internal_recipe.html:228 +msgid "Select File" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:262 -#: .\cookbook\templates\forms\edit_internal_recipe.html:286 -#: .\cookbook\templates\shopping_list.html:184 -#: .\cookbook\templates\shopping_list.html:206 -msgid "Create" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:263 -#: .\cookbook\templates\forms\edit_internal_recipe.html:287 -#: .\cookbook\templates\shopping_list.html:185 -#: .\cookbook\templates\shopping_list.html:207 -#: .\cookbook\templates\shopping_list.html:237 -#: .\cookbook\templates\shopping_list.html:261 -#: .\cookbook\templates\url_import.html:124 -#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\forms\edit_internal_recipe.html:229 +#: .\cookbook\templates\forms\edit_internal_recipe.html:290 +#: .\cookbook\templates\forms\edit_internal_recipe.html:314 +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 msgid "Select" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:285 -#: .\cookbook\templates\shopping_list.html:205 +#: .\cookbook\templates\forms\edit_internal_recipe.html:288 +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:289 +#: .\cookbook\templates\forms\edit_internal_recipe.html:313 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:312 +#: .\cookbook\templates\shopping_list.html:209 msgid "Select Food" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:302 +#: .\cookbook\templates\forms\edit_internal_recipe.html:329 #: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:171 +#: .\cookbook\templates\url_import.html:542 msgid "Note" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:319 +#: .\cookbook\templates\forms\edit_internal_recipe.html:346 msgid "Delete Ingredient" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:325 +#: .\cookbook\templates\forms\edit_internal_recipe.html:352 msgid "Make Header" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:358 msgid "Make Ingredient" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 +#: .\cookbook\templates\forms\edit_internal_recipe.html:364 msgid "Disable Amount" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:343 +#: .\cookbook\templates\forms\edit_internal_recipe.html:370 msgid "Enable Amount" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:348 +#: .\cookbook\templates\forms\edit_internal_recipe.html:375 msgid "Copy Template Reference" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:374 -#: .\cookbook\templates\url_import.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:401 +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 msgid "Instructions" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:414 +#: .\cookbook\templates\forms\edit_internal_recipe.html:445 msgid "Save & View" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:391 -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 +#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:451 msgid "Add Step" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:394 -#: .\cookbook\templates\forms\edit_internal_recipe.html:428 +#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:455 msgid "Add Nutrition" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:396 -#: .\cookbook\templates\forms\edit_internal_recipe.html:430 +#: .\cookbook\templates\forms\edit_internal_recipe.html:423 +#: .\cookbook\templates\forms\edit_internal_recipe.html:457 msgid "Remove Nutrition" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -#: .\cookbook\templates\forms\edit_internal_recipe.html:433 +#: .\cookbook\templates\forms\edit_internal_recipe.html:425 +#: .\cookbook\templates\forms\edit_internal_recipe.html:460 msgid "View Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:400 -#: .\cookbook\templates\forms\edit_internal_recipe.html:435 +#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\templates\forms\edit_internal_recipe.html:462 msgid "Delete Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 +#: .\cookbook\templates\forms\edit_internal_recipe.html:468 msgid "Steps" msgstr "" @@ -828,7 +1035,7 @@ msgid "" msgstr "" #: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\stats.html:26 +#: .\cookbook\templates\space.html:35 .\cookbook\templates\stats.html:26 msgid "Units" msgstr "" @@ -850,10 +1057,6 @@ msgstr "" msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "" -#: .\cookbook\templates\generic\delete_template.html:21 -msgid "Confirm" -msgstr "" - #: .\cookbook\templates\generic\edit_template.html:30 msgid "View" msgstr "" @@ -875,12 +1078,6 @@ msgstr "" msgid "Import all" msgstr "" -#: .\cookbook\templates\generic\new_template.html:6 -#: .\cookbook\templates\generic\new_template.html:14 -#: .\cookbook\templates\meal_plan.html:323 -msgid "New" -msgstr "" - #: .\cookbook\templates\generic\table_template.html:76 #: .\cookbook\templates\recipes_table.html:121 msgid "previous" @@ -925,7 +1122,7 @@ msgstr "" #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:264 .\cookbook\views\new.py:40 +#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "" @@ -958,10 +1155,6 @@ msgstr "" msgid "New Recipe" msgstr "" -#: .\cookbook\templates\index.html:47 -msgid "Website Import" -msgstr "" - #: .\cookbook\templates\index.html:53 msgid "Advanced Search" msgstr "" @@ -975,7 +1168,7 @@ msgid "Last viewed" msgstr "" #: .\cookbook\templates\index.html:87 .\cookbook\templates\meal_plan.html:178 -#: .\cookbook\templates\stats.html:22 +#: .\cookbook\templates\space.html:29 .\cookbook\templates\stats.html:22 msgid "Recipes" msgstr "" @@ -1123,7 +1316,7 @@ msgid "New Entry" msgstr "" #: .\cookbook\templates\meal_plan.html:113 -#: .\cookbook\templates\shopping_list.html:52 +#: .\cookbook\templates\shopping_list.html:56 msgid "Search Recipe" msgstr "" @@ -1153,7 +1346,7 @@ msgstr "" #: .\cookbook\templates\meal_plan.html:168 #: .\cookbook\templates\shopping_list.html:7 #: .\cookbook\templates\shopping_list.html:29 -#: .\cookbook\templates\shopping_list.html:705 +#: .\cookbook\templates\shopping_list.html:714 msgid "Shopping List" msgstr "" @@ -1203,7 +1396,7 @@ msgstr "" #: .\cookbook\templates\meal_plan.html:270 #: .\cookbook\templates\meal_plan_entry.html:20 -#: .\cookbook\templates\shopping_list.html:250 +#: .\cookbook\templates\shopping_list.html:254 msgid "Shared with" msgstr "" @@ -1278,7 +1471,6 @@ msgstr "" #: .\cookbook\templates\no_groups_info.html:18 #: .\cookbook\templates\no_perm_info.html:15 -#: .\cookbook\templates\no_space_info.html:15 msgid "Please contact your administrator." msgstr "" @@ -1293,13 +1485,48 @@ msgid "" "action." msgstr "" -#: .\cookbook\templates\no_space_info.html:5 -#: .\cookbook\templates\no_space_info.html:12 +#: .\cookbook\templates\no_space_info.html:6 +#: .\cookbook\templates\no_space_info.html:13 msgid "No Space" msgstr "" -#: .\cookbook\templates\no_space_info.html:15 -msgid "You are not a member of any space." +#: .\cookbook\templates\no_space_info.html:17 +msgid "" +"Recipes, foods, shopping lists and more are organized in spaces of one or " +"more people." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:18 +msgid "" +"You can either be invited into an existing space or create your own one." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:31 +#: .\cookbook\templates\no_space_info.html:40 +msgid "Join Space" +msgstr "" + +#: .\cookbook\templates\no_space_info.html:34 +msgid "Join an existing space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:35 +msgid "" +"To join an existing space either enter your invite token or click on the " +"invite link the space owner send you." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:48 +#: .\cookbook\templates\no_space_info.html:56 +msgid "Create Space" +msgstr "" + +#: .\cookbook\templates\no_space_info.html:51 +msgid "Create your own recipe space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:52 +msgid "Start your own recipe space and invite other users to it." msgstr "" #: .\cookbook\templates\offline.html:6 @@ -1316,28 +1543,29 @@ msgid "" "recently viewed them. Keep in mind that data might be outdated." msgstr "" -#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\stats.html:47 +#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\space.html:56 +#: .\cookbook\templates\stats.html:47 msgid "Comments" msgstr "" #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:170 +#: .\cookbook\views\edit.py:179 msgid "Comment" msgstr "" #: .\cookbook\templates\recipes_table.html:19 #: .\cookbook\templates\recipes_table.html:23 -#: .\cookbook\templates\url_import.html:69 +#: .\cookbook\templates\url_import.html:440 msgid "Recipe Image" msgstr "" #: .\cookbook\templates\recipes_table.html:51 -#: .\cookbook\templates\url_import.html:74 +#: .\cookbook\templates\url_import.html:445 msgid "Preparation time ca." msgstr "" #: .\cookbook\templates\recipes_table.html:57 -#: .\cookbook\templates\url_import.html:79 +#: .\cookbook\templates\url_import.html:450 msgid "Waiting time ca." msgstr "" @@ -1353,39 +1581,67 @@ msgstr "" msgid "Recipe Home" msgstr "" -#: .\cookbook\templates\settings.html:22 +#: .\cookbook\templates\settings.html:23 msgid "Account" msgstr "" -#: .\cookbook\templates\settings.html:38 -msgid "Link social account" +#: .\cookbook\templates\settings.html:27 +msgid "Preferences" msgstr "" -#: .\cookbook\templates\settings.html:42 +#: .\cookbook\templates\settings.html:31 +msgid "API-Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:39 +msgid "Name Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:47 +msgid "Password Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:55 +msgid "Email Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:57 +msgid "Manage Email Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:61 +msgid "Social" +msgstr "" + +#: .\cookbook\templates\settings.html:63 +msgid "Manage Social Accounts" +msgstr "" + +#: .\cookbook\templates\settings.html:75 msgid "Language" msgstr "" -#: .\cookbook\templates\settings.html:67 +#: .\cookbook\templates\settings.html:105 msgid "Style" msgstr "" -#: .\cookbook\templates\settings.html:79 +#: .\cookbook\templates\settings.html:125 msgid "API Token" msgstr "" -#: .\cookbook\templates\settings.html:80 +#: .\cookbook\templates\settings.html:126 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." msgstr "" -#: .\cookbook\templates\settings.html:92 +#: .\cookbook\templates\settings.html:143 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" msgstr "" -#: .\cookbook\templates\settings.html:94 +#: .\cookbook\templates\settings.html:145 msgid "or" msgstr "" @@ -1406,58 +1662,55 @@ msgstr "" msgid "Create Superuser account" msgstr "" -#: .\cookbook\templates\shopping_list.html:75 +#: .\cookbook\templates\shopping_list.html:79 msgid "Shopping Recipes" msgstr "" -#: .\cookbook\templates\shopping_list.html:79 +#: .\cookbook\templates\shopping_list.html:83 msgid "No recipes selected" msgstr "" -#: .\cookbook\templates\shopping_list.html:146 +#: .\cookbook\templates\shopping_list.html:150 msgid "Entry Mode" msgstr "" -#: .\cookbook\templates\shopping_list.html:154 +#: .\cookbook\templates\shopping_list.html:158 msgid "Add Entry" msgstr "" -#: .\cookbook\templates\shopping_list.html:170 +#: .\cookbook\templates\shopping_list.html:174 msgid "Amount" msgstr "" -#: .\cookbook\templates\shopping_list.html:226 +#: .\cookbook\templates\shopping_list.html:230 +#: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "" -#: .\cookbook\templates\shopping_list.html:236 +#: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "" -#: .\cookbook\templates\shopping_list.html:260 +#: .\cookbook\templates\shopping_list.html:264 msgid "Select User" msgstr "" -#: .\cookbook\templates\shopping_list.html:279 +#: .\cookbook\templates\shopping_list.html:283 msgid "Finished" msgstr "" -#: .\cookbook\templates\shopping_list.html:292 +#: .\cookbook\templates\shopping_list.html:296 msgid "You are offline, shopping list might not syncronize." msgstr "" -#: .\cookbook\templates\shopping_list.html:357 +#: .\cookbook\templates\shopping_list.html:361 msgid "Copy/Export" msgstr "" -#: .\cookbook\templates\shopping_list.html:361 +#: .\cookbook\templates\shopping_list.html:365 msgid "List Prefix" msgstr "" -#: .\cookbook\templates\shopping_list.html:708 -msgid "There was an error creating a resource!" -msgstr "" - #: .\cookbook\templates\socialaccount\connections.html:4 #: .\cookbook\templates\socialaccount\connections.html:7 msgid "Account Connections" @@ -1469,10 +1722,6 @@ msgid "" " accounts:" msgstr "" -#: .\cookbook\templates\socialaccount\connections.html:36 -msgid "Remove" -msgstr "" - #: .\cookbook\templates\socialaccount\connections.html:44 msgid "" "You currently have no social network accounts connected to this account." @@ -1482,38 +1731,87 @@ msgstr "" msgid "Add a 3rd Party Account" msgstr "" -#: .\cookbook\templates\stats.html:4 -msgid "Stats" +#: .\cookbook\templates\space.html:18 +msgid "Manage Subscription" msgstr "" -#: .\cookbook\templates\stats.html:19 +#: .\cookbook\templates\space.html:26 .\cookbook\templates\stats.html:19 msgid "Number of objects" msgstr "" -#: .\cookbook\templates\stats.html:30 +#: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:30 msgid "Recipe Imports" msgstr "" -#: .\cookbook\templates\stats.html:38 +#: .\cookbook\templates\space.html:47 .\cookbook\templates\stats.html:38 msgid "Objects stats" msgstr "" -#: .\cookbook\templates\stats.html:41 +#: .\cookbook\templates\space.html:50 .\cookbook\templates\stats.html:41 msgid "Recipes without Keywords" msgstr "" -#: .\cookbook\templates\stats.html:43 +#: .\cookbook\templates\space.html:52 .\cookbook\templates\stats.html:43 msgid "External Recipes" msgstr "" -#: .\cookbook\templates\stats.html:45 +#: .\cookbook\templates\space.html:54 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "" -#: .\cookbook\templates\system.html:21 .\cookbook\views\lists.py:115 +#: .\cookbook\templates\space.html:67 +msgid "Members" +msgstr "" + +#: .\cookbook\templates\space.html:71 +msgid "Invite User" +msgstr "" + +#: .\cookbook\templates\space.html:82 +msgid "User" +msgstr "" + +#: .\cookbook\templates\space.html:83 +msgid "Groups" +msgstr "" + +#: .\cookbook\templates\space.html:99 +msgid "admin" +msgstr "" + +#: .\cookbook\templates\space.html:100 +msgid "user" +msgstr "" + +#: .\cookbook\templates\space.html:101 +msgid "guest" +msgstr "" + +#: .\cookbook\templates\space.html:102 +msgid "remove" +msgstr "" + +#: .\cookbook\templates\space.html:106 +msgid "Update" +msgstr "" + +#: .\cookbook\templates\space.html:110 +msgid "You cannot edit yourself." +msgstr "" + +#: .\cookbook\templates\space.html:117 +msgid "There are no members in your space yet!" +msgstr "" + +#: .\cookbook\templates\space.html:124 .\cookbook\templates\system.html:21 +#: .\cookbook\views\lists.py:115 msgid "Invite Links" msgstr "" +#: .\cookbook\templates\stats.html:4 +msgid "Stats" +msgstr "" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "" @@ -1611,45 +1909,141 @@ msgid "" " " msgstr "" -#: .\cookbook\templates\url_import.html:5 +#: .\cookbook\templates\url_import.html:6 msgid "URL Import" msgstr "" -#: .\cookbook\templates\url_import.html:23 +#: .\cookbook\templates\url_import.html:31 +msgid "Drag me to your bookmarks to import recipes from anywhere" +msgstr "" + +#: .\cookbook\templates\url_import.html:32 +msgid "Bookmark Me!" +msgstr "" + +#: .\cookbook\templates\url_import.html:61 msgid "Enter website URL" msgstr "" -#: .\cookbook\templates\url_import.html:36 -msgid "Enter json directly" +#: .\cookbook\templates\url_import.html:97 +msgid "Select recipe files to import or drop them here..." msgstr "" -#: .\cookbook\templates\url_import.html:57 +#: .\cookbook\templates\url_import.html:118 +msgid "Paste json or html source here to load recipe." +msgstr "" + +#: .\cookbook\templates\url_import.html:146 +msgid "Preview Recipe Data" +msgstr "" + +#: .\cookbook\templates\url_import.html:147 +msgid "Drag recipe attributes from the right into the appropriate box below." +msgstr "" + +#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\url_import.html:173 +#: .\cookbook\templates\url_import.html:190 +#: .\cookbook\templates\url_import.html:209 +#: .\cookbook\templates\url_import.html:227 +#: .\cookbook\templates\url_import.html:242 +#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:273 +#: .\cookbook\templates\url_import.html:300 +#: .\cookbook\templates\url_import.html:351 +msgid "Clear Contents" +msgstr "" + +#: .\cookbook\templates\url_import.html:158 +msgid "Text dragged here will be appended to the name." +msgstr "" + +#: .\cookbook\templates\url_import.html:175 +msgid "Text dragged here will be appended to the description." +msgstr "" + +#: .\cookbook\templates\url_import.html:192 +msgid "Keywords dragged here will be appended to current list" +msgstr "" + +#: .\cookbook\templates\url_import.html:207 +msgid "Image" +msgstr "" + +#: .\cookbook\templates\url_import.html:239 +msgid "Prep Time" +msgstr "" + +#: .\cookbook\templates\url_import.html:254 +msgid "Cook Time" +msgstr "" + +#: .\cookbook\templates\url_import.html:275 +msgid "Ingredients dragged here will be appended to current list." +msgstr "" + +#: .\cookbook\templates\url_import.html:302 +msgid "" +"Recipe instructions dragged here will be appended to current instructions." +msgstr "" + +#: .\cookbook\templates\url_import.html:325 +msgid "Discovered Attributes" +msgstr "" + +#: .\cookbook\templates\url_import.html:327 +msgid "" +"Drag recipe attributes from below into the appropriate box on the left. " +"Click any node to display its full properties." +msgstr "" + +#: .\cookbook\templates\url_import.html:344 +msgid "Show Blank Field" +msgstr "" + +#: .\cookbook\templates\url_import.html:349 +msgid "Blank Field" +msgstr "" + +#: .\cookbook\templates\url_import.html:353 +msgid "Items dragged to Blank Field will be appended." +msgstr "" + +#: .\cookbook\templates\url_import.html:400 +msgid "Delete Text" +msgstr "" + +#: .\cookbook\templates\url_import.html:413 +msgid "Delete image" +msgstr "" + +#: .\cookbook\templates\url_import.html:429 msgid "Recipe Name" msgstr "" -#: .\cookbook\templates\url_import.html:62 +#: .\cookbook\templates\url_import.html:433 msgid "Recipe Description" msgstr "" -#: .\cookbook\templates\url_import.html:123 -#: .\cookbook\templates\url_import.html:155 -#: .\cookbook\templates\url_import.html:211 +#: .\cookbook\templates\url_import.html:494 +#: .\cookbook\templates\url_import.html:526 +#: .\cookbook\templates\url_import.html:582 msgid "Select one" msgstr "" -#: .\cookbook\templates\url_import.html:225 +#: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "" -#: .\cookbook\templates\url_import.html:228 +#: .\cookbook\templates\url_import.html:599 msgid "Import all keywords, not only the ones already existing." msgstr "" -#: .\cookbook\templates\url_import.html:255 +#: .\cookbook\templates\url_import.html:626 msgid "Information" msgstr "" -#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:628 msgid "" " Only websites containing ld+json or microdata information can currently\n" " be imported. Most big recipe pages " @@ -1660,48 +2054,73 @@ msgid "" " github issues." msgstr "" -#: .\cookbook\templates\url_import.html:265 +#: .\cookbook\templates\url_import.html:636 msgid "Google ld+json Info" msgstr "" -#: .\cookbook\templates\url_import.html:268 +#: .\cookbook\templates\url_import.html:639 msgid "GitHub Issues" msgstr "" -#: .\cookbook\templates\url_import.html:270 +#: .\cookbook\templates\url_import.html:641 msgid "Recipe Markup Specification" msgstr "" -#: .\cookbook\views\api.py:71 +#: .\cookbook\views\api.py:77 msgid "Parameter updated_at incorrectly formatted" msgstr "" -#: .\cookbook\views\api.py:455 .\cookbook\views\views.py:226 +#: .\cookbook\views\api.py:553 .\cookbook\views\views.py:295 msgid "This feature is not available in the demo version!" msgstr "" -#: .\cookbook\views\api.py:478 +#: .\cookbook\views\api.py:576 msgid "Sync successful!" msgstr "" -#: .\cookbook\views\api.py:483 +#: .\cookbook\views\api.py:581 msgid "Error synchronizing with Storage" msgstr "" -#: .\cookbook\views\api.py:556 .\cookbook\views\api.py:576 +#: .\cookbook\views\api.py:649 +msgid "Nothing to do." +msgstr "" + +#: .\cookbook\views\api.py:664 +msgid "The requested site provided malformed data and cannot be read." +msgstr "" + +#: .\cookbook\views\api.py:671 msgid "The requested page could not be found." msgstr "" -#: .\cookbook\views\api.py:585 +#: .\cookbook\views\api.py:680 msgid "" -"The requested page refused to provide any information (Status Code 403)." +"The requested site does not provide any recognized data format to import the " +"recipe from." msgstr "" -#: .\cookbook\views\api.py:611 -msgid "Could not parse correctly..." +#: .\cookbook\views\api.py:694 +msgid "No useable data could be found." msgstr "" -#: .\cookbook\views\data.py:94 +#: .\cookbook\views\api.py:710 +msgid "I couldn't find anything to do." +msgstr "" + +#: .\cookbook\views\data.py:30 .\cookbook\views\data.py:121 +#: .\cookbook\views\edit.py:50 .\cookbook\views\import_export.py:67 +#: .\cookbook\views\new.py:32 +msgid "You have reached the maximum number of recipes for your space." +msgstr "" + +#: .\cookbook\views\data.py:34 .\cookbook\views\data.py:125 +#: .\cookbook\views\edit.py:54 .\cookbook\views\import_export.py:71 +#: .\cookbook\views\new.py:36 +msgid "You have more users than allowed in your space." +msgstr "" + +#: .\cookbook\views\data.py:103 #, python-format msgid "Batch edit done. %(count)d recipe was updated." msgid_plural "Batch edit done. %(count)d Recipes where updated." @@ -1713,7 +2132,7 @@ msgid "Monitor" msgstr "" #: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:86 +#: .\cookbook\views\new.py:98 msgid "Storage Backend" msgstr "" @@ -1722,8 +2141,8 @@ msgid "" "Could not delete this storage backend as it is used in at least one monitor." msgstr "" -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:204 -#: .\cookbook\views\new.py:144 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 +#: .\cookbook\views\new.py:156 msgid "Recipe Book" msgstr "" @@ -1731,55 +2150,55 @@ msgstr "" msgid "Bookmarks" msgstr "" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:214 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 msgid "Invite Link" msgstr "" -#: .\cookbook\views\edit.py:110 +#: .\cookbook\views\edit.py:119 msgid "Food" msgstr "" -#: .\cookbook\views\edit.py:119 +#: .\cookbook\views\edit.py:128 msgid "You cannot edit this storage!" msgstr "" -#: .\cookbook\views\edit.py:139 +#: .\cookbook\views\edit.py:148 msgid "Storage saved!" msgstr "" -#: .\cookbook\views\edit.py:145 +#: .\cookbook\views\edit.py:154 msgid "There was an error updating this storage backend!" msgstr "" -#: .\cookbook\views\edit.py:156 +#: .\cookbook\views\edit.py:165 msgid "Storage" msgstr "" -#: .\cookbook\views\edit.py:252 +#: .\cookbook\views\edit.py:261 msgid "Changes saved!" msgstr "" -#: .\cookbook\views\edit.py:256 +#: .\cookbook\views\edit.py:265 msgid "Error saving changes!" msgstr "" -#: .\cookbook\views\edit.py:289 +#: .\cookbook\views\edit.py:299 msgid "Units merged!" msgstr "" -#: .\cookbook\views\edit.py:291 .\cookbook\views\edit.py:307 +#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 msgid "Cannot merge with the same object!" msgstr "" -#: .\cookbook\views\edit.py:305 +#: .\cookbook\views\edit.py:315 msgid "Foods merged!" msgstr "" -#: .\cookbook\views\import_export.py:73 +#: .\cookbook\views\import_export.py:93 msgid "Importing is not implemented for this provider" msgstr "" -#: .\cookbook\views\import_export.py:92 +#: .\cookbook\views\import_export.py:115 msgid "Exporting is not implemented for this provider" msgstr "" @@ -1795,41 +2214,103 @@ msgstr "" msgid "Shopping Lists" msgstr "" -#: .\cookbook\views\new.py:111 +#: .\cookbook\views\new.py:123 msgid "Imported new recipe!" msgstr "" -#: .\cookbook\views\new.py:114 +#: .\cookbook\views\new.py:126 msgid "There was an error importing this recipe!" msgstr "" -#: .\cookbook\views\views.py:123 +#: .\cookbook\views\new.py:226 +msgid "Hello" +msgstr "" + +#: .\cookbook\views\new.py:226 +msgid "You have been invited by " +msgstr "" + +#: .\cookbook\views\new.py:227 +msgid " to join their Tandoor Recipes space " +msgstr "" + +#: .\cookbook\views\new.py:228 +msgid "Click the following link to activate your account: " +msgstr "" + +#: .\cookbook\views\new.py:229 +msgid "" +"If the link does not work use the following code to manually join the space: " +msgstr "" + +#: .\cookbook\views\new.py:230 +msgid "The invitation is valid until " +msgstr "" + +#: .\cookbook\views\new.py:231 +msgid "" +"Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " +msgstr "" + +#: .\cookbook\views\new.py:234 +msgid "Tandoor Recipes Invite" +msgstr "" + +#: .\cookbook\views\new.py:241 +msgid "Invite link successfully send to user." +msgstr "" + +#: .\cookbook\views\new.py:244 +msgid "" +"You have send to many emails, please share the link manually or wait a few " +"hours." +msgstr "" + +#: .\cookbook\views\new.py:246 +msgid "Email to user could not be send, please share link manually." +msgstr "" + +#: .\cookbook\views\views.py:125 +msgid "" +"You have successfully created your own recipe space. Start by adding some " +"recipes or invite other people to join you." +msgstr "" + +#: .\cookbook\views\views.py:173 msgid "You do not have the required permissions to perform this action!" msgstr "" -#: .\cookbook\views\views.py:134 +#: .\cookbook\views\views.py:184 msgid "Comment saved!" msgstr "" -#: .\cookbook\views\views.py:326 +#: .\cookbook\views\views.py:396 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." msgstr "" -#: .\cookbook\views\views.py:333 .\cookbook\views\views.py:378 +#: .\cookbook\views\views.py:403 msgid "Passwords dont match!" msgstr "" -#: .\cookbook\views\views.py:349 .\cookbook\views\views.py:385 +#: .\cookbook\views\views.py:419 msgid "User has been created, please login!" msgstr "" -#: .\cookbook\views\views.py:365 +#: .\cookbook\views\views.py:435 msgid "Malformed Invite Link supplied!" msgstr "" -#: .\cookbook\views\views.py:405 +#: .\cookbook\views\views.py:441 +msgid "You are already member of a space and therefore cannot join this one." +msgstr "" + +#: .\cookbook\views\views.py:452 +msgid "Successfully joined space." +msgstr "" + +#: .\cookbook\views\views.py:458 msgid "Invite Link not valid or already used!" msgstr "" diff --git a/cookbook/locale/zh_CN/LC_MESSAGES/django.po b/cookbook/locale/zh_CN/LC_MESSAGES/django.po index a0a54d561..404178a10 100644 --- a/cookbook/locale/zh_CN/LC_MESSAGES/django.po +++ b/cookbook/locale/zh_CN/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,48 +18,49 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:91 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 +#: .\cookbook\templates\forms\edit_internal_recipe.html:246 #: .\cookbook\templates\forms\ingredients.html:34 -#: .\cookbook\templates\stats.html:28 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\space.html:37 .\cookbook\templates\stats.html:28 +#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 msgid "Ingredients" msgstr "" -#: .\cookbook\forms.py:45 +#: .\cookbook\forms.py:49 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" msgstr "" -#: .\cookbook\forms.py:46 +#: .\cookbook\forms.py:51 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" -#: .\cookbook\forms.py:47 +#: .\cookbook\forms.py:53 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" msgstr "" -#: .\cookbook\forms.py:48 +#: .\cookbook\forms.py:56 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." msgstr "" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:58 msgid "Show recently viewed recipes on search page." msgstr "" -#: .\cookbook\forms.py:50 +#: .\cookbook\forms.py:59 msgid "Number of decimals to round ingredients." msgstr "" -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:60 msgid "If you want to be able to create and see comments underneath recipes." msgstr "" -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:62 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -67,167 +68,181 @@ msgid "" "mobile data. If lower than instance limit it is reset when saving." msgstr "" -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:65 msgid "Makes the navbar stick to the top of the page." msgstr "" -#: .\cookbook\forms.py:72 +#: .\cookbook\forms.py:81 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" msgstr "" -#: .\cookbook\forms.py:93 .\cookbook\forms.py:315 -#: .\cookbook\templates\forms\edit_internal_recipe.html:45 +#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "" -#: .\cookbook\forms.py:94 .\cookbook\forms.py:316 -#: .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:81 -#: .\cookbook\templates\stats.html:24 .\cookbook\templates\url_import.html:202 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 +#: .\cookbook\templates\base.html:105 +#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\templates\space.html:33 .\cookbook\templates\stats.html:24 +#: .\cookbook\templates\url_import.html:188 +#: .\cookbook\templates\url_import.html:573 msgid "Keywords" msgstr "" -#: .\cookbook\forms.py:95 +#: .\cookbook\forms.py:104 msgid "Preparation time in minutes" msgstr "" -#: .\cookbook\forms.py:96 +#: .\cookbook\forms.py:105 msgid "Waiting time (cooking/baking) in minutes" msgstr "" -#: .\cookbook\forms.py:97 .\cookbook\forms.py:317 +#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 msgid "Path" msgstr "" -#: .\cookbook\forms.py:98 +#: .\cookbook\forms.py:107 msgid "Storage UID" msgstr "" -#: .\cookbook\forms.py:121 +#: .\cookbook\forms.py:133 msgid "Default" msgstr "" -#: .\cookbook\forms.py:130 +#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:149 +#: .\cookbook\forms.py:164 msgid "New Unit" msgstr "" -#: .\cookbook\forms.py:150 +#: .\cookbook\forms.py:165 msgid "New unit that other gets replaced by." msgstr "" -#: .\cookbook\forms.py:155 +#: .\cookbook\forms.py:170 msgid "Old Unit" msgstr "" -#: .\cookbook\forms.py:156 +#: .\cookbook\forms.py:171 msgid "Unit that should be replaced." msgstr "" -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:187 msgid "New Food" msgstr "" -#: .\cookbook\forms.py:173 +#: .\cookbook\forms.py:188 msgid "New food that other gets replaced by." msgstr "" -#: .\cookbook\forms.py:178 +#: .\cookbook\forms.py:193 msgid "Old Food" msgstr "" -#: .\cookbook\forms.py:179 +#: .\cookbook\forms.py:194 msgid "Food that should be replaced." msgstr "" -#: .\cookbook\forms.py:197 +#: .\cookbook\forms.py:212 msgid "Add your comment: " msgstr "" -#: .\cookbook\forms.py:238 +#: .\cookbook\forms.py:253 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" -#: .\cookbook\forms.py:245 +#: .\cookbook\forms.py:260 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:269 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" msgstr "" -#: .\cookbook\forms.py:291 +#: .\cookbook\forms.py:307 msgid "Search String" msgstr "" -#: .\cookbook\forms.py:318 +#: .\cookbook\forms.py:334 msgid "File ID" msgstr "" -#: .\cookbook\forms.py:354 +#: .\cookbook\forms.py:370 msgid "You must provide at least a recipe or a title." msgstr "" -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:383 msgid "You can list default users to share recipes with in the settings." msgstr "" -#: .\cookbook\forms.py:368 -#: .\cookbook\templates\forms\edit_internal_recipe.html:377 +#: .\cookbook\forms.py:384 +#: .\cookbook\templates\forms\edit_internal_recipe.html:404 msgid "" "You can use markdown to format this field. See the docs here" msgstr "" -#: .\cookbook\forms.py:393 -msgid "A username is not required, if left blank the new user can choose one." +#: .\cookbook\forms.py:409 +msgid "Maximum number of users for this space reached." msgstr "" -#: .\cookbook\helper\permission_helper.py:123 -#: .\cookbook\helper\permission_helper.py:129 -#: .\cookbook\helper\permission_helper.py:151 -#: .\cookbook\helper\permission_helper.py:196 -#: .\cookbook\helper\permission_helper.py:210 -#: .\cookbook\helper\permission_helper.py:221 -#: .\cookbook\helper\permission_helper.py:232 .\cookbook\views\data.py:30 -#: .\cookbook\views\views.py:112 .\cookbook\views\views.py:116 -#: .\cookbook\views\views.py:184 -msgid "You do not have the required permissions to view this page!" +#: .\cookbook\forms.py:415 +msgid "Email address already taken!" msgstr "" -#: .\cookbook\helper\permission_helper.py:141 +#: .\cookbook\forms.py:423 +msgid "" +"An email address is not required but if present the invite link will be send " +"to the user." +msgstr "" + +#: .\cookbook\forms.py:438 +msgid "Name already taken." +msgstr "" + +#: .\cookbook\forms.py:449 +msgid "Accept Terms and Privacy" +msgstr "" + +#: .\cookbook\helper\AllAuthCustomAdapter.py:30 +msgid "" +"In order to prevent spam, the requested email was not send. Please wait a " +"few minutes and try again." +msgstr "" + +#: .\cookbook\helper\permission_helper.py:124 +#: .\cookbook\helper\permission_helper.py:144 .\cookbook\views\views.py:147 msgid "You are not logged in and therefore cannot view this page!" msgstr "" -#: .\cookbook\helper\permission_helper.py:145 -#: .\cookbook\helper\permission_helper.py:167 -#: .\cookbook\helper\permission_helper.py:182 +#: .\cookbook\helper\permission_helper.py:127 +#: .\cookbook\helper\permission_helper.py:132 +#: .\cookbook\helper\permission_helper.py:154 +#: .\cookbook\helper\permission_helper.py:199 +#: .\cookbook\helper\permission_helper.py:213 +#: .\cookbook\helper\permission_helper.py:224 +#: .\cookbook\helper\permission_helper.py:235 .\cookbook\views\data.py:39 +#: .\cookbook\views\views.py:158 .\cookbook\views\views.py:165 +#: .\cookbook\views\views.py:253 +msgid "You do not have the required permissions to view this page!" +msgstr "" + +#: .\cookbook\helper\permission_helper.py:148 +#: .\cookbook\helper\permission_helper.py:170 +#: .\cookbook\helper\permission_helper.py:185 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" -#: .\cookbook\helper\recipe_url_import.py:40 .\cookbook\views\api.py:549 -msgid "The requested site provided malformed data and cannot be read." -msgstr "" - -#: .\cookbook\helper\recipe_url_import.py:54 -msgid "" -"The requested site does not provide any recognized data format to import the " -"recipe from." -msgstr "" - -#: .\cookbook\helper\recipe_url_import.py:160 -msgid "Imported from" -msgstr "" - #: .\cookbook\helper\template_helper.py:60 #: .\cookbook\helper\template_helper.py:62 msgid "Could not parse template code." @@ -237,42 +252,53 @@ msgstr "" #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 -#: .\cookbook\templates\url_import.html:233 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:190 +#: .\cookbook\templates\url_import.html:27 +#: .\cookbook\templates\url_import.html:101 +#: .\cookbook\templates\url_import.html:123 +#: .\cookbook\templates\url_import.html:317 +#: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 +#: .\cookbook\views\edit.py:199 msgid "Import" msgstr "" -#: .\cookbook\integration\integration.py:131 +#: .\cookbook\integration\integration.py:162 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:134 +#: .\cookbook\integration\integration.py:165 +msgid "" +"An unexpected error occurred during the import. Please make sure you have " +"uploaded a valid file." +msgstr "" + +#: .\cookbook\integration\integration.py:169 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:137 +#: .\cookbook\integration\integration.py:173 #, python-format msgid "Imported %s recipes." msgstr "" -#: .\cookbook\integration\paprika.py:44 +#: .\cookbook\integration\paprika.py:46 msgid "Notes" msgstr "" -#: .\cookbook\integration\paprika.py:47 +#: .\cookbook\integration\paprika.py:49 msgid "Nutritional Information" msgstr "" -#: .\cookbook\integration\paprika.py:50 +#: .\cookbook\integration\paprika.py:53 msgid "Source" msgstr "" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:75 +#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 -#: .\cookbook\templates\url_import.html:84 +#: .\cookbook\templates\url_import.html:224 +#: .\cookbook\templates\url_import.html:455 msgid "Servings" msgstr "" @@ -281,11 +307,11 @@ msgid "Waiting time" msgstr "" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:69 +#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "" -#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:71 +#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:78 #: .\cookbook\templates\forms\ingredients.html:7 #: .\cookbook\templates\index.html:7 msgid "Cookbook" @@ -311,44 +337,72 @@ msgstr "" msgid "Other" msgstr "" -#: .\cookbook\models.py:110 .\cookbook\templates\shopping_list.html:48 +#: .\cookbook\models.py:71 +msgid "" +"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " +"upload." +msgstr "" + +#: .\cookbook\models.py:121 .\cookbook\templates\search.html:7 +#: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "" -#: .\cookbook\models.py:111 .\cookbook\templates\base.html:85 +#: .\cookbook\models.py:122 .\cookbook\templates\base.html:92 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:224 .\cookbook\views\new.py:188 +#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 msgid "Meal-Plan" msgstr "" -#: .\cookbook\models.py:112 .\cookbook\templates\base.html:82 +#: .\cookbook\models.py:123 .\cookbook\templates\base.html:89 msgid "Books" msgstr "" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Small" msgstr "" -#: .\cookbook\models.py:119 +#: .\cookbook\models.py:131 msgid "Large" msgstr "" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:198 +#: .\cookbook\models.py:131 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\templates\generic\new_template.html:14 +#: .\cookbook\templates\meal_plan.html:323 +msgid "New" +msgstr "" + +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:202 msgid "Text" msgstr "" -#: .\cookbook\models.py:327 -#: .\cookbook\templates\forms\edit_internal_recipe.html:199 +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:203 msgid "Time" msgstr "" +#: .\cookbook\models.py:340 +#: .\cookbook\templates\forms\edit_internal_recipe.html:204 +#: .\cookbook\templates\forms\edit_internal_recipe.html:218 +msgid "File" +msgstr "" + +#: .\cookbook\serializer.py:109 +msgid "File uploads are not enabled for this Space." +msgstr "" + +#: .\cookbook\serializer.py:117 +msgid "You have reached your file upload limit." +msgstr "" + #: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 #: .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 #: .\cookbook\templates\shopping_list.html:33 +#: .\cookbook\templates\space.html:84 msgid "Edit" msgstr "" @@ -362,10 +416,6 @@ msgstr "" msgid "Delete" msgstr "" -#: .\cookbook\tables.py:144 -msgid "Link" -msgstr "" - #: .\cookbook\templates\404.html:5 msgid "404 Error" msgstr "" @@ -382,21 +432,120 @@ msgstr "" msgid "Report a Bug" msgstr "" -#: .\cookbook\templates\account\login.html:7 -#: .\cookbook\templates\base.html:170 +#: .\cookbook\templates\account\email.html:6 +#: .\cookbook\templates\account\email.html:9 +msgid "E-mail Addresses" +msgstr "" + +#: .\cookbook\templates\account\email.html:11 +msgid "The following e-mail addresses are associated with your account:" +msgstr "" + +#: .\cookbook\templates\account\email.html:28 +msgid "Verified" +msgstr "" + +#: .\cookbook\templates\account\email.html:30 +msgid "Unverified" +msgstr "" + +#: .\cookbook\templates\account\email.html:32 +msgid "Primary" +msgstr "" + +#: .\cookbook\templates\account\email.html:39 +msgid "Make Primary" +msgstr "" + +#: .\cookbook\templates\account\email.html:41 +msgid "Re-send Verification" +msgstr "" + +#: .\cookbook\templates\account\email.html:42 +#: .\cookbook\templates\socialaccount\connections.html:36 +msgid "Remove" +msgstr "" + +#: .\cookbook\templates\account\email.html:50 +msgid "Warning:" +msgstr "" + +#: .\cookbook\templates\account\email.html:50 +msgid "" +"You currently do not have any e-mail address set up. You should really add " +"an e-mail address so you can receive notifications, reset your password, etc." +msgstr "" + +#: .\cookbook\templates\account\email.html:56 +msgid "Add E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email.html:61 +msgid "Add E-mail" +msgstr "" + +#: .\cookbook\templates\account\email.html:71 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:6 +#: .\cookbook\templates\account\email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that\n" +" %(email)s is an e-mail address " +"for user %(user_display)s\n" +" ." +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:22 +#: .\cookbook\templates\generic\delete_template.html:21 +msgid "Confirm" +msgstr "" + +#: .\cookbook\templates\account\email_confirm.html:29 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please\n" +" issue a new e-mail confirmation " +"request." +msgstr "" + +#: .\cookbook\templates\account\login.html:8 +#: .\cookbook\templates\base.html:180 msgid "Login" msgstr "" -#: .\cookbook\templates\account\login.html:13 -#: .\cookbook\templates\account\login.html:28 +#: .\cookbook\templates\account\login.html:15 +#: .\cookbook\templates\account\login.html:31 +#: .\cookbook\templates\account\signup.html:69 +#: .\cookbook\templates\account\signup_closed.html:15 msgid "Sign In" msgstr "" -#: .\cookbook\templates\account\login.html:38 +#: .\cookbook\templates\account\login.html:32 +msgid "Sign Up" +msgstr "" + +#: .\cookbook\templates\account\login.html:36 +#: .\cookbook\templates\account\login.html:37 +#: .\cookbook\templates\account\password_reset.html:29 +msgid "Reset My Password" +msgstr "" + +#: .\cookbook\templates\account\login.html:37 +msgid "Lost your password?" +msgstr "" + +#: .\cookbook\templates\account\login.html:48 msgid "Social Login" msgstr "" -#: .\cookbook\templates\account\login.html:39 +#: .\cookbook\templates\account\login.html:49 msgid "You can use any of the following providers to sign in." msgstr "" @@ -410,115 +559,161 @@ msgstr "" msgid "Are you sure you want to sign out?" msgstr "" -#: .\cookbook\templates\account\password_reset.html:5 -#: .\cookbook\templates\account\password_reset_done.html:5 +#: .\cookbook\templates\account\password_reset.html:7 +#: .\cookbook\templates\account\password_reset.html:13 +#: .\cookbook\templates\account\password_reset_done.html:7 +#: .\cookbook\templates\account\password_reset_done.html:10 msgid "Password Reset" msgstr "" -#: .\cookbook\templates\account\password_reset.html:9 -#: .\cookbook\templates\account\password_reset_done.html:9 -msgid "Password reset is not implemented for the time being!" +#: .\cookbook\templates\account\password_reset.html:24 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." msgstr "" -#: .\cookbook\templates\account\signup.html:5 +#: .\cookbook\templates\account\password_reset.html:32 +msgid "Password reset is disabled on this instance." +msgstr "" + +#: .\cookbook\templates\account\password_reset_done.html:16 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: .\cookbook\templates\account\signup.html:6 msgid "Register" msgstr "" -#: .\cookbook\templates\account\signup.html:9 -msgid "Create your Account" +#: .\cookbook\templates\account\signup.html:12 +msgid "Create an Account" msgstr "" -#: .\cookbook\templates\account\signup.html:14 +#: .\cookbook\templates\account\signup.html:42 +msgid "I accept the follwoing" +msgstr "" + +#: .\cookbook\templates\account\signup.html:45 +msgid "Terms and Conditions" +msgstr "" + +#: .\cookbook\templates\account\signup.html:48 +msgid "and" +msgstr "" + +#: .\cookbook\templates\account\signup.html:52 +msgid "Privacy Policy" +msgstr "" + +#: .\cookbook\templates\account\signup.html:65 msgid "Create User" msgstr "" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:160 +#: .\cookbook\templates\account\signup.html:69 +msgid "Already have an account?" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:5 +#: .\cookbook\templates\account\signup_closed.html:11 +msgid "Sign Up Closed" +msgstr "" + +#: .\cookbook\templates\account\signup_closed.html:13 +msgid "We are sorry, but the sign up is currently closed." +msgstr "" + +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:170 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "" -#: .\cookbook\templates\base.html:78 +#: .\cookbook\templates\base.html:85 msgid "Utensils" msgstr "" -#: .\cookbook\templates\base.html:88 +#: .\cookbook\templates\base.html:95 msgid "Shopping" msgstr "" -#: .\cookbook\templates\base.html:102 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:93 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:66 +#: .\cookbook\templates\base.html:109 .\cookbook\views\delete.py:84 +#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 +#: .\cookbook\views\new.py:78 msgid "Keyword" msgstr "" -#: .\cookbook\templates\base.html:104 +#: .\cookbook\templates\base.html:111 msgid "Batch Edit" msgstr "" -#: .\cookbook\templates\base.html:109 +#: .\cookbook\templates\base.html:116 msgid "Storage Data" msgstr "" -#: .\cookbook\templates\base.html:113 +#: .\cookbook\templates\base.html:120 msgid "Storage Backends" msgstr "" -#: .\cookbook\templates\base.html:115 +#: .\cookbook\templates\base.html:122 msgid "Configure Sync" msgstr "" -#: .\cookbook\templates\base.html:117 +#: .\cookbook\templates\base.html:124 msgid "Discovered Recipes" msgstr "" -#: .\cookbook\templates\base.html:119 +#: .\cookbook\templates\base.html:126 msgid "Discovery Log" msgstr "" -#: .\cookbook\templates\base.html:121 .\cookbook\templates\stats.html:10 +#: .\cookbook\templates\base.html:128 .\cookbook\templates\stats.html:10 msgid "Statistics" msgstr "" -#: .\cookbook\templates\base.html:123 +#: .\cookbook\templates\base.html:130 msgid "Units & Ingredients" msgstr "" -#: .\cookbook\templates\base.html:125 +#: .\cookbook\templates\base.html:132 .\cookbook\templates\index.html:47 msgid "Import Recipe" msgstr "" -#: .\cookbook\templates\base.html:144 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:151 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:16 msgid "Settings" msgstr "" -#: .\cookbook\templates\base.html:146 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:153 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "" -#: .\cookbook\templates\base.html:150 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:155 .\cookbook\templates\space.html:7 +msgid "Space Settings" +msgstr "" + +#: .\cookbook\templates\base.html:160 .\cookbook\templates\system.html:13 msgid "System" msgstr "" -#: .\cookbook\templates\base.html:152 +#: .\cookbook\templates\base.html:162 msgid "Admin" msgstr "" -#: .\cookbook\templates\base.html:156 +#: .\cookbook\templates\base.html:166 msgid "Markdown Guide" msgstr "" -#: .\cookbook\templates\base.html:158 +#: .\cookbook\templates\base.html:168 msgid "GitHub" msgstr "" -#: .\cookbook\templates\base.html:162 +#: .\cookbook\templates\base.html:172 msgid "API Browser" msgstr "" -#: .\cookbook\templates\base.html:165 -msgid "Logout" +#: .\cookbook\templates\base.html:175 +msgid "Log out" msgstr "" #: .\cookbook\templates\batch\edit.html:6 @@ -533,7 +728,7 @@ msgstr "" msgid "Add the specified keywords to all recipes containing a word" msgstr "" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:76 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 msgid "Sync" msgstr "" @@ -560,7 +755,7 @@ msgstr "" msgid "Importing Recipes" msgstr "" -#: .\cookbook\templates\batch\waiting.html:23 +#: .\cookbook\templates\batch\waiting.html:28 msgid "" "This can take a few minutes, depending on the number of recipes in sync, " "please wait." @@ -597,26 +792,31 @@ msgid "Export Recipes" msgstr "" #: .\cookbook\templates\export.html:14 .\cookbook\templates\export.html:20 -#: .\cookbook\templates\shopping_list.html:347 +#: .\cookbook\templates\shopping_list.html:351 #: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20 msgid "Export" msgstr "" +#: .\cookbook\templates\files.html:7 +msgid "Files" +msgstr "" + #: .\cookbook\templates\forms\edit_import_recipe.html:5 #: .\cookbook\templates\forms\edit_import_recipe.html:9 msgid "Import new Recipe" msgstr "" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:389 -#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:416 +#: .\cookbook\templates\forms\edit_internal_recipe.html:448 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:28 .\cookbook\templates\settings.html:35 -#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:73 -#: .\cookbook\templates\shopping_list.html:349 +#: .\cookbook\templates\settings.html:44 .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:114 +#: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "" @@ -625,179 +825,186 @@ msgstr "" msgid "Edit Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:52 +#: .\cookbook\templates\forms\edit_internal_recipe.html:56 +#: .\cookbook\templates\url_import.html:171 msgid "Description" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:72 +#: .\cookbook\templates\forms\edit_internal_recipe.html:76 msgid "Waiting Time" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:78 +#: .\cookbook\templates\forms\edit_internal_recipe.html:82 msgid "Servings Text" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:89 +#: .\cookbook\templates\forms\edit_internal_recipe.html:93 msgid "Select Keywords" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:90 -#: .\cookbook\templates\url_import.html:212 +#: .\cookbook\templates\forms\edit_internal_recipe.html:94 +#: .\cookbook\templates\url_import.html:583 msgid "Add Keyword" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:108 +#: .\cookbook\templates\forms\edit_internal_recipe.html:112 msgid "Nutrition" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -#: .\cookbook\templates\forms\edit_internal_recipe.html:162 +#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:166 msgid "Delete Step" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 +#: .\cookbook\templates\forms\edit_internal_recipe.html:120 msgid "Calories" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:119 +#: .\cookbook\templates\forms\edit_internal_recipe.html:123 msgid "Carbohydrates" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:122 +#: .\cookbook\templates\forms\edit_internal_recipe.html:126 msgid "Fats" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:124 +#: .\cookbook\templates\forms\edit_internal_recipe.html:128 msgid "Proteins" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:146 -#: .\cookbook\templates\forms\edit_internal_recipe.html:454 +#: .\cookbook\templates\forms\edit_internal_recipe.html:150 +#: .\cookbook\templates\forms\edit_internal_recipe.html:481 msgid "Step" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:167 +#: .\cookbook\templates\forms\edit_internal_recipe.html:171 msgid "Show as header" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:173 +#: .\cookbook\templates\forms\edit_internal_recipe.html:177 msgid "Hide as header" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:178 +#: .\cookbook\templates\forms\edit_internal_recipe.html:182 msgid "Move Up" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:183 +#: .\cookbook\templates\forms\edit_internal_recipe.html:187 msgid "Move Down" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:192 +#: .\cookbook\templates\forms\edit_internal_recipe.html:196 msgid "Step Name" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:200 msgid "Step Type" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:207 +#: .\cookbook\templates\forms\edit_internal_recipe.html:212 msgid "Step time in Minutes" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:261 -#: .\cookbook\templates\shopping_list.html:183 -msgid "Select Unit" +#: .\cookbook\templates\forms\edit_internal_recipe.html:228 +msgid "Select File" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:262 -#: .\cookbook\templates\forms\edit_internal_recipe.html:286 -#: .\cookbook\templates\shopping_list.html:184 -#: .\cookbook\templates\shopping_list.html:206 -msgid "Create" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:263 -#: .\cookbook\templates\forms\edit_internal_recipe.html:287 -#: .\cookbook\templates\shopping_list.html:185 -#: .\cookbook\templates\shopping_list.html:207 -#: .\cookbook\templates\shopping_list.html:237 -#: .\cookbook\templates\shopping_list.html:261 -#: .\cookbook\templates\url_import.html:124 -#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\forms\edit_internal_recipe.html:229 +#: .\cookbook\templates\forms\edit_internal_recipe.html:290 +#: .\cookbook\templates\forms\edit_internal_recipe.html:314 +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 msgid "Select" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:285 -#: .\cookbook\templates\shopping_list.html:205 +#: .\cookbook\templates\forms\edit_internal_recipe.html:288 +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:289 +#: .\cookbook\templates\forms\edit_internal_recipe.html:313 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:312 +#: .\cookbook\templates\shopping_list.html:209 msgid "Select Food" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:302 +#: .\cookbook\templates\forms\edit_internal_recipe.html:329 #: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:171 +#: .\cookbook\templates\url_import.html:542 msgid "Note" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:319 +#: .\cookbook\templates\forms\edit_internal_recipe.html:346 msgid "Delete Ingredient" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:325 +#: .\cookbook\templates\forms\edit_internal_recipe.html:352 msgid "Make Header" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:331 +#: .\cookbook\templates\forms\edit_internal_recipe.html:358 msgid "Make Ingredient" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 +#: .\cookbook\templates\forms\edit_internal_recipe.html:364 msgid "Disable Amount" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:343 +#: .\cookbook\templates\forms\edit_internal_recipe.html:370 msgid "Enable Amount" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:348 +#: .\cookbook\templates\forms\edit_internal_recipe.html:375 msgid "Copy Template Reference" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:374 -#: .\cookbook\templates\url_import.html:196 +#: .\cookbook\templates\forms\edit_internal_recipe.html:401 +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 msgid "Instructions" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:414 +#: .\cookbook\templates\forms\edit_internal_recipe.html:445 msgid "Save & View" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:391 -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 +#: .\cookbook\templates\forms\edit_internal_recipe.html:418 +#: .\cookbook\templates\forms\edit_internal_recipe.html:451 msgid "Add Step" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:394 -#: .\cookbook\templates\forms\edit_internal_recipe.html:428 +#: .\cookbook\templates\forms\edit_internal_recipe.html:421 +#: .\cookbook\templates\forms\edit_internal_recipe.html:455 msgid "Add Nutrition" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:396 -#: .\cookbook\templates\forms\edit_internal_recipe.html:430 +#: .\cookbook\templates\forms\edit_internal_recipe.html:423 +#: .\cookbook\templates\forms\edit_internal_recipe.html:457 msgid "Remove Nutrition" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -#: .\cookbook\templates\forms\edit_internal_recipe.html:433 +#: .\cookbook\templates\forms\edit_internal_recipe.html:425 +#: .\cookbook\templates\forms\edit_internal_recipe.html:460 msgid "View Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:400 -#: .\cookbook\templates\forms\edit_internal_recipe.html:435 +#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\templates\forms\edit_internal_recipe.html:462 msgid "Delete Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 +#: .\cookbook\templates\forms\edit_internal_recipe.html:468 msgid "Steps" msgstr "" @@ -817,7 +1024,7 @@ msgid "" msgstr "" #: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\stats.html:26 +#: .\cookbook\templates\space.html:35 .\cookbook\templates\stats.html:26 msgid "Units" msgstr "" @@ -839,10 +1046,6 @@ msgstr "" msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "" -#: .\cookbook\templates\generic\delete_template.html:21 -msgid "Confirm" -msgstr "" - #: .\cookbook\templates\generic\edit_template.html:30 msgid "View" msgstr "" @@ -864,12 +1067,6 @@ msgstr "" msgid "Import all" msgstr "" -#: .\cookbook\templates\generic\new_template.html:6 -#: .\cookbook\templates\generic\new_template.html:14 -#: .\cookbook\templates\meal_plan.html:323 -msgid "New" -msgstr "" - #: .\cookbook\templates\generic\table_template.html:76 #: .\cookbook\templates\recipes_table.html:121 msgid "previous" @@ -914,7 +1111,7 @@ msgstr "" #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:264 .\cookbook\views\new.py:40 +#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "" @@ -947,10 +1144,6 @@ msgstr "" msgid "New Recipe" msgstr "" -#: .\cookbook\templates\index.html:47 -msgid "Website Import" -msgstr "" - #: .\cookbook\templates\index.html:53 msgid "Advanced Search" msgstr "" @@ -964,7 +1157,7 @@ msgid "Last viewed" msgstr "" #: .\cookbook\templates\index.html:87 .\cookbook\templates\meal_plan.html:178 -#: .\cookbook\templates\stats.html:22 +#: .\cookbook\templates\space.html:29 .\cookbook\templates\stats.html:22 msgid "Recipes" msgstr "" @@ -1112,7 +1305,7 @@ msgid "New Entry" msgstr "" #: .\cookbook\templates\meal_plan.html:113 -#: .\cookbook\templates\shopping_list.html:52 +#: .\cookbook\templates\shopping_list.html:56 msgid "Search Recipe" msgstr "" @@ -1142,7 +1335,7 @@ msgstr "" #: .\cookbook\templates\meal_plan.html:168 #: .\cookbook\templates\shopping_list.html:7 #: .\cookbook\templates\shopping_list.html:29 -#: .\cookbook\templates\shopping_list.html:705 +#: .\cookbook\templates\shopping_list.html:714 msgid "Shopping List" msgstr "" @@ -1192,7 +1385,7 @@ msgstr "" #: .\cookbook\templates\meal_plan.html:270 #: .\cookbook\templates\meal_plan_entry.html:20 -#: .\cookbook\templates\shopping_list.html:250 +#: .\cookbook\templates\shopping_list.html:254 msgid "Shared with" msgstr "" @@ -1267,7 +1460,6 @@ msgstr "" #: .\cookbook\templates\no_groups_info.html:18 #: .\cookbook\templates\no_perm_info.html:15 -#: .\cookbook\templates\no_space_info.html:15 msgid "Please contact your administrator." msgstr "" @@ -1282,13 +1474,48 @@ msgid "" "action." msgstr "" -#: .\cookbook\templates\no_space_info.html:5 -#: .\cookbook\templates\no_space_info.html:12 +#: .\cookbook\templates\no_space_info.html:6 +#: .\cookbook\templates\no_space_info.html:13 msgid "No Space" msgstr "" -#: .\cookbook\templates\no_space_info.html:15 -msgid "You are not a member of any space." +#: .\cookbook\templates\no_space_info.html:17 +msgid "" +"Recipes, foods, shopping lists and more are organized in spaces of one or " +"more people." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:18 +msgid "" +"You can either be invited into an existing space or create your own one." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:31 +#: .\cookbook\templates\no_space_info.html:40 +msgid "Join Space" +msgstr "" + +#: .\cookbook\templates\no_space_info.html:34 +msgid "Join an existing space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:35 +msgid "" +"To join an existing space either enter your invite token or click on the " +"invite link the space owner send you." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:48 +#: .\cookbook\templates\no_space_info.html:56 +msgid "Create Space" +msgstr "" + +#: .\cookbook\templates\no_space_info.html:51 +msgid "Create your own recipe space." +msgstr "" + +#: .\cookbook\templates\no_space_info.html:52 +msgid "Start your own recipe space and invite other users to it." msgstr "" #: .\cookbook\templates\offline.html:6 @@ -1305,28 +1532,29 @@ msgid "" "recently viewed them. Keep in mind that data might be outdated." msgstr "" -#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\stats.html:47 +#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\space.html:56 +#: .\cookbook\templates\stats.html:47 msgid "Comments" msgstr "" #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:170 +#: .\cookbook\views\edit.py:179 msgid "Comment" msgstr "" #: .\cookbook\templates\recipes_table.html:19 #: .\cookbook\templates\recipes_table.html:23 -#: .\cookbook\templates\url_import.html:69 +#: .\cookbook\templates\url_import.html:440 msgid "Recipe Image" msgstr "" #: .\cookbook\templates\recipes_table.html:51 -#: .\cookbook\templates\url_import.html:74 +#: .\cookbook\templates\url_import.html:445 msgid "Preparation time ca." msgstr "" #: .\cookbook\templates\recipes_table.html:57 -#: .\cookbook\templates\url_import.html:79 +#: .\cookbook\templates\url_import.html:450 msgid "Waiting time ca." msgstr "" @@ -1342,39 +1570,67 @@ msgstr "" msgid "Recipe Home" msgstr "" -#: .\cookbook\templates\settings.html:22 +#: .\cookbook\templates\settings.html:23 msgid "Account" msgstr "" -#: .\cookbook\templates\settings.html:38 -msgid "Link social account" +#: .\cookbook\templates\settings.html:27 +msgid "Preferences" msgstr "" -#: .\cookbook\templates\settings.html:42 +#: .\cookbook\templates\settings.html:31 +msgid "API-Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:39 +msgid "Name Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:47 +msgid "Password Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:55 +msgid "Email Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:57 +msgid "Manage Email Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:61 +msgid "Social" +msgstr "" + +#: .\cookbook\templates\settings.html:63 +msgid "Manage Social Accounts" +msgstr "" + +#: .\cookbook\templates\settings.html:75 msgid "Language" msgstr "" -#: .\cookbook\templates\settings.html:67 +#: .\cookbook\templates\settings.html:105 msgid "Style" msgstr "" -#: .\cookbook\templates\settings.html:79 +#: .\cookbook\templates\settings.html:125 msgid "API Token" msgstr "" -#: .\cookbook\templates\settings.html:80 +#: .\cookbook\templates\settings.html:126 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." msgstr "" -#: .\cookbook\templates\settings.html:92 +#: .\cookbook\templates\settings.html:143 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" msgstr "" -#: .\cookbook\templates\settings.html:94 +#: .\cookbook\templates\settings.html:145 msgid "or" msgstr "" @@ -1395,58 +1651,55 @@ msgstr "" msgid "Create Superuser account" msgstr "" -#: .\cookbook\templates\shopping_list.html:75 +#: .\cookbook\templates\shopping_list.html:79 msgid "Shopping Recipes" msgstr "" -#: .\cookbook\templates\shopping_list.html:79 +#: .\cookbook\templates\shopping_list.html:83 msgid "No recipes selected" msgstr "" -#: .\cookbook\templates\shopping_list.html:146 +#: .\cookbook\templates\shopping_list.html:150 msgid "Entry Mode" msgstr "" -#: .\cookbook\templates\shopping_list.html:154 +#: .\cookbook\templates\shopping_list.html:158 msgid "Add Entry" msgstr "" -#: .\cookbook\templates\shopping_list.html:170 +#: .\cookbook\templates\shopping_list.html:174 msgid "Amount" msgstr "" -#: .\cookbook\templates\shopping_list.html:226 +#: .\cookbook\templates\shopping_list.html:230 +#: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "" -#: .\cookbook\templates\shopping_list.html:236 +#: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "" -#: .\cookbook\templates\shopping_list.html:260 +#: .\cookbook\templates\shopping_list.html:264 msgid "Select User" msgstr "" -#: .\cookbook\templates\shopping_list.html:279 +#: .\cookbook\templates\shopping_list.html:283 msgid "Finished" msgstr "" -#: .\cookbook\templates\shopping_list.html:292 +#: .\cookbook\templates\shopping_list.html:296 msgid "You are offline, shopping list might not syncronize." msgstr "" -#: .\cookbook\templates\shopping_list.html:357 +#: .\cookbook\templates\shopping_list.html:361 msgid "Copy/Export" msgstr "" -#: .\cookbook\templates\shopping_list.html:361 +#: .\cookbook\templates\shopping_list.html:365 msgid "List Prefix" msgstr "" -#: .\cookbook\templates\shopping_list.html:708 -msgid "There was an error creating a resource!" -msgstr "" - #: .\cookbook\templates\socialaccount\connections.html:4 #: .\cookbook\templates\socialaccount\connections.html:7 msgid "Account Connections" @@ -1458,10 +1711,6 @@ msgid "" " accounts:" msgstr "" -#: .\cookbook\templates\socialaccount\connections.html:36 -msgid "Remove" -msgstr "" - #: .\cookbook\templates\socialaccount\connections.html:44 msgid "" "You currently have no social network accounts connected to this account." @@ -1471,38 +1720,87 @@ msgstr "" msgid "Add a 3rd Party Account" msgstr "" -#: .\cookbook\templates\stats.html:4 -msgid "Stats" +#: .\cookbook\templates\space.html:18 +msgid "Manage Subscription" msgstr "" -#: .\cookbook\templates\stats.html:19 +#: .\cookbook\templates\space.html:26 .\cookbook\templates\stats.html:19 msgid "Number of objects" msgstr "" -#: .\cookbook\templates\stats.html:30 +#: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:30 msgid "Recipe Imports" msgstr "" -#: .\cookbook\templates\stats.html:38 +#: .\cookbook\templates\space.html:47 .\cookbook\templates\stats.html:38 msgid "Objects stats" msgstr "" -#: .\cookbook\templates\stats.html:41 +#: .\cookbook\templates\space.html:50 .\cookbook\templates\stats.html:41 msgid "Recipes without Keywords" msgstr "" -#: .\cookbook\templates\stats.html:43 +#: .\cookbook\templates\space.html:52 .\cookbook\templates\stats.html:43 msgid "External Recipes" msgstr "" -#: .\cookbook\templates\stats.html:45 +#: .\cookbook\templates\space.html:54 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "" -#: .\cookbook\templates\system.html:21 .\cookbook\views\lists.py:115 +#: .\cookbook\templates\space.html:67 +msgid "Members" +msgstr "" + +#: .\cookbook\templates\space.html:71 +msgid "Invite User" +msgstr "" + +#: .\cookbook\templates\space.html:82 +msgid "User" +msgstr "" + +#: .\cookbook\templates\space.html:83 +msgid "Groups" +msgstr "" + +#: .\cookbook\templates\space.html:99 +msgid "admin" +msgstr "" + +#: .\cookbook\templates\space.html:100 +msgid "user" +msgstr "" + +#: .\cookbook\templates\space.html:101 +msgid "guest" +msgstr "" + +#: .\cookbook\templates\space.html:102 +msgid "remove" +msgstr "" + +#: .\cookbook\templates\space.html:106 +msgid "Update" +msgstr "" + +#: .\cookbook\templates\space.html:110 +msgid "You cannot edit yourself." +msgstr "" + +#: .\cookbook\templates\space.html:117 +msgid "There are no members in your space yet!" +msgstr "" + +#: .\cookbook\templates\space.html:124 .\cookbook\templates\system.html:21 +#: .\cookbook\views\lists.py:115 msgid "Invite Links" msgstr "" +#: .\cookbook\templates\stats.html:4 +msgid "Stats" +msgstr "" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "" @@ -1600,45 +1898,141 @@ msgid "" " " msgstr "" -#: .\cookbook\templates\url_import.html:5 +#: .\cookbook\templates\url_import.html:6 msgid "URL Import" msgstr "" -#: .\cookbook\templates\url_import.html:23 +#: .\cookbook\templates\url_import.html:31 +msgid "Drag me to your bookmarks to import recipes from anywhere" +msgstr "" + +#: .\cookbook\templates\url_import.html:32 +msgid "Bookmark Me!" +msgstr "" + +#: .\cookbook\templates\url_import.html:61 msgid "Enter website URL" msgstr "" -#: .\cookbook\templates\url_import.html:36 -msgid "Enter json directly" +#: .\cookbook\templates\url_import.html:97 +msgid "Select recipe files to import or drop them here..." msgstr "" -#: .\cookbook\templates\url_import.html:57 +#: .\cookbook\templates\url_import.html:118 +msgid "Paste json or html source here to load recipe." +msgstr "" + +#: .\cookbook\templates\url_import.html:146 +msgid "Preview Recipe Data" +msgstr "" + +#: .\cookbook\templates\url_import.html:147 +msgid "Drag recipe attributes from the right into the appropriate box below." +msgstr "" + +#: .\cookbook\templates\url_import.html:156 +#: .\cookbook\templates\url_import.html:173 +#: .\cookbook\templates\url_import.html:190 +#: .\cookbook\templates\url_import.html:209 +#: .\cookbook\templates\url_import.html:227 +#: .\cookbook\templates\url_import.html:242 +#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:273 +#: .\cookbook\templates\url_import.html:300 +#: .\cookbook\templates\url_import.html:351 +msgid "Clear Contents" +msgstr "" + +#: .\cookbook\templates\url_import.html:158 +msgid "Text dragged here will be appended to the name." +msgstr "" + +#: .\cookbook\templates\url_import.html:175 +msgid "Text dragged here will be appended to the description." +msgstr "" + +#: .\cookbook\templates\url_import.html:192 +msgid "Keywords dragged here will be appended to current list" +msgstr "" + +#: .\cookbook\templates\url_import.html:207 +msgid "Image" +msgstr "" + +#: .\cookbook\templates\url_import.html:239 +msgid "Prep Time" +msgstr "" + +#: .\cookbook\templates\url_import.html:254 +msgid "Cook Time" +msgstr "" + +#: .\cookbook\templates\url_import.html:275 +msgid "Ingredients dragged here will be appended to current list." +msgstr "" + +#: .\cookbook\templates\url_import.html:302 +msgid "" +"Recipe instructions dragged here will be appended to current instructions." +msgstr "" + +#: .\cookbook\templates\url_import.html:325 +msgid "Discovered Attributes" +msgstr "" + +#: .\cookbook\templates\url_import.html:327 +msgid "" +"Drag recipe attributes from below into the appropriate box on the left. " +"Click any node to display its full properties." +msgstr "" + +#: .\cookbook\templates\url_import.html:344 +msgid "Show Blank Field" +msgstr "" + +#: .\cookbook\templates\url_import.html:349 +msgid "Blank Field" +msgstr "" + +#: .\cookbook\templates\url_import.html:353 +msgid "Items dragged to Blank Field will be appended." +msgstr "" + +#: .\cookbook\templates\url_import.html:400 +msgid "Delete Text" +msgstr "" + +#: .\cookbook\templates\url_import.html:413 +msgid "Delete image" +msgstr "" + +#: .\cookbook\templates\url_import.html:429 msgid "Recipe Name" msgstr "" -#: .\cookbook\templates\url_import.html:62 +#: .\cookbook\templates\url_import.html:433 msgid "Recipe Description" msgstr "" -#: .\cookbook\templates\url_import.html:123 -#: .\cookbook\templates\url_import.html:155 -#: .\cookbook\templates\url_import.html:211 +#: .\cookbook\templates\url_import.html:494 +#: .\cookbook\templates\url_import.html:526 +#: .\cookbook\templates\url_import.html:582 msgid "Select one" msgstr "" -#: .\cookbook\templates\url_import.html:225 +#: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "" -#: .\cookbook\templates\url_import.html:228 +#: .\cookbook\templates\url_import.html:599 msgid "Import all keywords, not only the ones already existing." msgstr "" -#: .\cookbook\templates\url_import.html:255 +#: .\cookbook\templates\url_import.html:626 msgid "Information" msgstr "" -#: .\cookbook\templates\url_import.html:257 +#: .\cookbook\templates\url_import.html:628 msgid "" " Only websites containing ld+json or microdata information can currently\n" " be imported. Most big recipe pages " @@ -1649,48 +2043,73 @@ msgid "" " github issues." msgstr "" -#: .\cookbook\templates\url_import.html:265 +#: .\cookbook\templates\url_import.html:636 msgid "Google ld+json Info" msgstr "" -#: .\cookbook\templates\url_import.html:268 +#: .\cookbook\templates\url_import.html:639 msgid "GitHub Issues" msgstr "" -#: .\cookbook\templates\url_import.html:270 +#: .\cookbook\templates\url_import.html:641 msgid "Recipe Markup Specification" msgstr "" -#: .\cookbook\views\api.py:71 +#: .\cookbook\views\api.py:77 msgid "Parameter updated_at incorrectly formatted" msgstr "" -#: .\cookbook\views\api.py:455 .\cookbook\views\views.py:226 +#: .\cookbook\views\api.py:553 .\cookbook\views\views.py:295 msgid "This feature is not available in the demo version!" msgstr "" -#: .\cookbook\views\api.py:478 +#: .\cookbook\views\api.py:576 msgid "Sync successful!" msgstr "" -#: .\cookbook\views\api.py:483 +#: .\cookbook\views\api.py:581 msgid "Error synchronizing with Storage" msgstr "" -#: .\cookbook\views\api.py:556 .\cookbook\views\api.py:576 +#: .\cookbook\views\api.py:649 +msgid "Nothing to do." +msgstr "" + +#: .\cookbook\views\api.py:664 +msgid "The requested site provided malformed data and cannot be read." +msgstr "" + +#: .\cookbook\views\api.py:671 msgid "The requested page could not be found." msgstr "" -#: .\cookbook\views\api.py:585 +#: .\cookbook\views\api.py:680 msgid "" -"The requested page refused to provide any information (Status Code 403)." +"The requested site does not provide any recognized data format to import the " +"recipe from." msgstr "" -#: .\cookbook\views\api.py:611 -msgid "Could not parse correctly..." +#: .\cookbook\views\api.py:694 +msgid "No useable data could be found." msgstr "" -#: .\cookbook\views\data.py:94 +#: .\cookbook\views\api.py:710 +msgid "I couldn't find anything to do." +msgstr "" + +#: .\cookbook\views\data.py:30 .\cookbook\views\data.py:121 +#: .\cookbook\views\edit.py:50 .\cookbook\views\import_export.py:67 +#: .\cookbook\views\new.py:32 +msgid "You have reached the maximum number of recipes for your space." +msgstr "" + +#: .\cookbook\views\data.py:34 .\cookbook\views\data.py:125 +#: .\cookbook\views\edit.py:54 .\cookbook\views\import_export.py:71 +#: .\cookbook\views\new.py:36 +msgid "You have more users than allowed in your space." +msgstr "" + +#: .\cookbook\views\data.py:103 #, python-format msgid "Batch edit done. %(count)d recipe was updated." msgid_plural "Batch edit done. %(count)d Recipes where updated." @@ -1702,7 +2121,7 @@ msgid "Monitor" msgstr "" #: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:86 +#: .\cookbook\views\new.py:98 msgid "Storage Backend" msgstr "" @@ -1711,8 +2130,8 @@ msgid "" "Could not delete this storage backend as it is used in at least one monitor." msgstr "" -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:204 -#: .\cookbook\views\new.py:144 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 +#: .\cookbook\views\new.py:156 msgid "Recipe Book" msgstr "" @@ -1720,55 +2139,55 @@ msgstr "" msgid "Bookmarks" msgstr "" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:214 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 msgid "Invite Link" msgstr "" -#: .\cookbook\views\edit.py:110 +#: .\cookbook\views\edit.py:119 msgid "Food" msgstr "" -#: .\cookbook\views\edit.py:119 +#: .\cookbook\views\edit.py:128 msgid "You cannot edit this storage!" msgstr "" -#: .\cookbook\views\edit.py:139 +#: .\cookbook\views\edit.py:148 msgid "Storage saved!" msgstr "" -#: .\cookbook\views\edit.py:145 +#: .\cookbook\views\edit.py:154 msgid "There was an error updating this storage backend!" msgstr "" -#: .\cookbook\views\edit.py:156 +#: .\cookbook\views\edit.py:165 msgid "Storage" msgstr "" -#: .\cookbook\views\edit.py:252 +#: .\cookbook\views\edit.py:261 msgid "Changes saved!" msgstr "" -#: .\cookbook\views\edit.py:256 +#: .\cookbook\views\edit.py:265 msgid "Error saving changes!" msgstr "" -#: .\cookbook\views\edit.py:289 +#: .\cookbook\views\edit.py:299 msgid "Units merged!" msgstr "" -#: .\cookbook\views\edit.py:291 .\cookbook\views\edit.py:307 +#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 msgid "Cannot merge with the same object!" msgstr "" -#: .\cookbook\views\edit.py:305 +#: .\cookbook\views\edit.py:315 msgid "Foods merged!" msgstr "" -#: .\cookbook\views\import_export.py:73 +#: .\cookbook\views\import_export.py:93 msgid "Importing is not implemented for this provider" msgstr "" -#: .\cookbook\views\import_export.py:92 +#: .\cookbook\views\import_export.py:115 msgid "Exporting is not implemented for this provider" msgstr "" @@ -1784,41 +2203,103 @@ msgstr "" msgid "Shopping Lists" msgstr "" -#: .\cookbook\views\new.py:111 +#: .\cookbook\views\new.py:123 msgid "Imported new recipe!" msgstr "" -#: .\cookbook\views\new.py:114 +#: .\cookbook\views\new.py:126 msgid "There was an error importing this recipe!" msgstr "" -#: .\cookbook\views\views.py:123 +#: .\cookbook\views\new.py:226 +msgid "Hello" +msgstr "" + +#: .\cookbook\views\new.py:226 +msgid "You have been invited by " +msgstr "" + +#: .\cookbook\views\new.py:227 +msgid " to join their Tandoor Recipes space " +msgstr "" + +#: .\cookbook\views\new.py:228 +msgid "Click the following link to activate your account: " +msgstr "" + +#: .\cookbook\views\new.py:229 +msgid "" +"If the link does not work use the following code to manually join the space: " +msgstr "" + +#: .\cookbook\views\new.py:230 +msgid "The invitation is valid until " +msgstr "" + +#: .\cookbook\views\new.py:231 +msgid "" +"Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " +msgstr "" + +#: .\cookbook\views\new.py:234 +msgid "Tandoor Recipes Invite" +msgstr "" + +#: .\cookbook\views\new.py:241 +msgid "Invite link successfully send to user." +msgstr "" + +#: .\cookbook\views\new.py:244 +msgid "" +"You have send to many emails, please share the link manually or wait a few " +"hours." +msgstr "" + +#: .\cookbook\views\new.py:246 +msgid "Email to user could not be send, please share link manually." +msgstr "" + +#: .\cookbook\views\views.py:125 +msgid "" +"You have successfully created your own recipe space. Start by adding some " +"recipes or invite other people to join you." +msgstr "" + +#: .\cookbook\views\views.py:173 msgid "You do not have the required permissions to perform this action!" msgstr "" -#: .\cookbook\views\views.py:134 +#: .\cookbook\views\views.py:184 msgid "Comment saved!" msgstr "" -#: .\cookbook\views\views.py:326 +#: .\cookbook\views\views.py:396 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." msgstr "" -#: .\cookbook\views\views.py:333 .\cookbook\views\views.py:378 +#: .\cookbook\views\views.py:403 msgid "Passwords dont match!" msgstr "" -#: .\cookbook\views\views.py:349 .\cookbook\views\views.py:385 +#: .\cookbook\views\views.py:419 msgid "User has been created, please login!" msgstr "" -#: .\cookbook\views\views.py:365 +#: .\cookbook\views\views.py:435 msgid "Malformed Invite Link supplied!" msgstr "" -#: .\cookbook\views\views.py:405 +#: .\cookbook\views\views.py:441 +msgid "You are already member of a space and therefore cannot join this one." +msgstr "" + +#: .\cookbook\views\views.py:452 +msgid "Successfully joined space." +msgstr "" + +#: .\cookbook\views\views.py:458 msgid "Invite Link not valid or already used!" msgstr "" diff --git a/recipes/locale/ca/LC_MESSAGES/django.po b/recipes/locale/ca/LC_MESSAGES/django.po index 6a8cfc86a..381168251 100644 --- a/recipes/locale/ca/LC_MESSAGES/django.po +++ b/recipes/locale/ca/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,42 +18,42 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:220 +#: .\recipes\settings.py:303 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:221 +#: .\recipes\settings.py:304 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:222 +#: .\recipes\settings.py:305 msgid "Czech" msgstr "" -#: .\recipes\settings.py:223 +#: .\recipes\settings.py:306 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:224 +#: .\recipes\settings.py:307 msgid "English" msgstr "" -#: .\recipes\settings.py:225 +#: .\recipes\settings.py:308 msgid "French" msgstr "" -#: .\recipes\settings.py:226 +#: .\recipes\settings.py:309 msgid "German" msgstr "" -#: .\recipes\settings.py:227 +#: .\recipes\settings.py:310 msgid "Italian" msgstr "" -#: .\recipes\settings.py:228 +#: .\recipes\settings.py:311 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:229 +#: .\recipes\settings.py:312 msgid "Spanish" msgstr "" diff --git a/recipes/locale/de/LC_MESSAGES/django.po b/recipes/locale/de/LC_MESSAGES/django.po index e2a2c64b2..632239c5c 100644 --- a/recipes/locale/de/LC_MESSAGES/django.po +++ b/recipes/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,42 +18,42 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:220 +#: .\recipes\settings.py:303 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:221 +#: .\recipes\settings.py:304 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:222 +#: .\recipes\settings.py:305 msgid "Czech" msgstr "" -#: .\recipes\settings.py:223 +#: .\recipes\settings.py:306 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:224 +#: .\recipes\settings.py:307 msgid "English" msgstr "Englisch" -#: .\recipes\settings.py:225 +#: .\recipes\settings.py:308 msgid "French" msgstr "" -#: .\recipes\settings.py:226 +#: .\recipes\settings.py:309 msgid "German" msgstr "Deutsch" -#: .\recipes\settings.py:227 +#: .\recipes\settings.py:310 msgid "Italian" msgstr "" -#: .\recipes\settings.py:228 +#: .\recipes\settings.py:311 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:229 +#: .\recipes\settings.py:312 msgid "Spanish" msgstr "" diff --git a/recipes/locale/en/LC_MESSAGES/django.po b/recipes/locale/en/LC_MESSAGES/django.po index 6a8cfc86a..381168251 100644 --- a/recipes/locale/en/LC_MESSAGES/django.po +++ b/recipes/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,42 +18,42 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:220 +#: .\recipes\settings.py:303 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:221 +#: .\recipes\settings.py:304 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:222 +#: .\recipes\settings.py:305 msgid "Czech" msgstr "" -#: .\recipes\settings.py:223 +#: .\recipes\settings.py:306 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:224 +#: .\recipes\settings.py:307 msgid "English" msgstr "" -#: .\recipes\settings.py:225 +#: .\recipes\settings.py:308 msgid "French" msgstr "" -#: .\recipes\settings.py:226 +#: .\recipes\settings.py:309 msgid "German" msgstr "" -#: .\recipes\settings.py:227 +#: .\recipes\settings.py:310 msgid "Italian" msgstr "" -#: .\recipes\settings.py:228 +#: .\recipes\settings.py:311 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:229 +#: .\recipes\settings.py:312 msgid "Spanish" msgstr "" diff --git a/recipes/locale/es/LC_MESSAGES/django.po b/recipes/locale/es/LC_MESSAGES/django.po index 6a8cfc86a..381168251 100644 --- a/recipes/locale/es/LC_MESSAGES/django.po +++ b/recipes/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,42 +18,42 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:220 +#: .\recipes\settings.py:303 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:221 +#: .\recipes\settings.py:304 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:222 +#: .\recipes\settings.py:305 msgid "Czech" msgstr "" -#: .\recipes\settings.py:223 +#: .\recipes\settings.py:306 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:224 +#: .\recipes\settings.py:307 msgid "English" msgstr "" -#: .\recipes\settings.py:225 +#: .\recipes\settings.py:308 msgid "French" msgstr "" -#: .\recipes\settings.py:226 +#: .\recipes\settings.py:309 msgid "German" msgstr "" -#: .\recipes\settings.py:227 +#: .\recipes\settings.py:310 msgid "Italian" msgstr "" -#: .\recipes\settings.py:228 +#: .\recipes\settings.py:311 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:229 +#: .\recipes\settings.py:312 msgid "Spanish" msgstr "" diff --git a/recipes/locale/fr/LC_MESSAGES/django.po b/recipes/locale/fr/LC_MESSAGES/django.po index 667b42f69..55242682d 100644 --- a/recipes/locale/fr/LC_MESSAGES/django.po +++ b/recipes/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,42 +18,42 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: .\recipes\settings.py:220 +#: .\recipes\settings.py:303 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:221 +#: .\recipes\settings.py:304 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:222 +#: .\recipes\settings.py:305 msgid "Czech" msgstr "" -#: .\recipes\settings.py:223 +#: .\recipes\settings.py:306 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:224 +#: .\recipes\settings.py:307 msgid "English" msgstr "" -#: .\recipes\settings.py:225 +#: .\recipes\settings.py:308 msgid "French" msgstr "" -#: .\recipes\settings.py:226 +#: .\recipes\settings.py:309 msgid "German" msgstr "" -#: .\recipes\settings.py:227 +#: .\recipes\settings.py:310 msgid "Italian" msgstr "" -#: .\recipes\settings.py:228 +#: .\recipes\settings.py:311 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:229 +#: .\recipes\settings.py:312 msgid "Spanish" msgstr "" diff --git a/recipes/locale/hu_HU/LC_MESSAGES/django.po b/recipes/locale/hu_HU/LC_MESSAGES/django.po index 26aabd828..53f8b8073 100644 --- a/recipes/locale/hu_HU/LC_MESSAGES/django.po +++ b/recipes/locale/hu_HU/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,42 +17,42 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: .\recipes\settings.py:220 +#: .\recipes\settings.py:303 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:221 +#: .\recipes\settings.py:304 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:222 +#: .\recipes\settings.py:305 msgid "Czech" msgstr "" -#: .\recipes\settings.py:223 +#: .\recipes\settings.py:306 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:224 +#: .\recipes\settings.py:307 msgid "English" msgstr "" -#: .\recipes\settings.py:225 +#: .\recipes\settings.py:308 msgid "French" msgstr "" -#: .\recipes\settings.py:226 +#: .\recipes\settings.py:309 msgid "German" msgstr "" -#: .\recipes\settings.py:227 +#: .\recipes\settings.py:310 msgid "Italian" msgstr "" -#: .\recipes\settings.py:228 +#: .\recipes\settings.py:311 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:229 +#: .\recipes\settings.py:312 msgid "Spanish" msgstr "" diff --git a/recipes/locale/it/LC_MESSAGES/django.po b/recipes/locale/it/LC_MESSAGES/django.po index 6a8cfc86a..381168251 100644 --- a/recipes/locale/it/LC_MESSAGES/django.po +++ b/recipes/locale/it/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,42 +18,42 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:220 +#: .\recipes\settings.py:303 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:221 +#: .\recipes\settings.py:304 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:222 +#: .\recipes\settings.py:305 msgid "Czech" msgstr "" -#: .\recipes\settings.py:223 +#: .\recipes\settings.py:306 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:224 +#: .\recipes\settings.py:307 msgid "English" msgstr "" -#: .\recipes\settings.py:225 +#: .\recipes\settings.py:308 msgid "French" msgstr "" -#: .\recipes\settings.py:226 +#: .\recipes\settings.py:309 msgid "German" msgstr "" -#: .\recipes\settings.py:227 +#: .\recipes\settings.py:310 msgid "Italian" msgstr "" -#: .\recipes\settings.py:228 +#: .\recipes\settings.py:311 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:229 +#: .\recipes\settings.py:312 msgid "Spanish" msgstr "" diff --git a/recipes/locale/lv/LC_MESSAGES/django.po b/recipes/locale/lv/LC_MESSAGES/django.po index 0c5adc7ae..19d68bab1 100644 --- a/recipes/locale/lv/LC_MESSAGES/django.po +++ b/recipes/locale/lv/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -19,42 +19,42 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " "2);\n" -#: .\recipes\settings.py:220 +#: .\recipes\settings.py:303 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:221 +#: .\recipes\settings.py:304 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:222 +#: .\recipes\settings.py:305 msgid "Czech" msgstr "" -#: .\recipes\settings.py:223 +#: .\recipes\settings.py:306 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:224 +#: .\recipes\settings.py:307 msgid "English" msgstr "" -#: .\recipes\settings.py:225 +#: .\recipes\settings.py:308 msgid "French" msgstr "" -#: .\recipes\settings.py:226 +#: .\recipes\settings.py:309 msgid "German" msgstr "" -#: .\recipes\settings.py:227 +#: .\recipes\settings.py:310 msgid "Italian" msgstr "" -#: .\recipes\settings.py:228 +#: .\recipes\settings.py:311 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:229 +#: .\recipes\settings.py:312 msgid "Spanish" msgstr "" diff --git a/recipes/locale/nl/LC_MESSAGES/django.po b/recipes/locale/nl/LC_MESSAGES/django.po index 6a8cfc86a..381168251 100644 --- a/recipes/locale/nl/LC_MESSAGES/django.po +++ b/recipes/locale/nl/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,42 +18,42 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:220 +#: .\recipes\settings.py:303 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:221 +#: .\recipes\settings.py:304 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:222 +#: .\recipes\settings.py:305 msgid "Czech" msgstr "" -#: .\recipes\settings.py:223 +#: .\recipes\settings.py:306 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:224 +#: .\recipes\settings.py:307 msgid "English" msgstr "" -#: .\recipes\settings.py:225 +#: .\recipes\settings.py:308 msgid "French" msgstr "" -#: .\recipes\settings.py:226 +#: .\recipes\settings.py:309 msgid "German" msgstr "" -#: .\recipes\settings.py:227 +#: .\recipes\settings.py:310 msgid "Italian" msgstr "" -#: .\recipes\settings.py:228 +#: .\recipes\settings.py:311 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:229 +#: .\recipes\settings.py:312 msgid "Spanish" msgstr "" diff --git a/recipes/locale/pt/LC_MESSAGES/django.po b/recipes/locale/pt/LC_MESSAGES/django.po index 6a8cfc86a..381168251 100644 --- a/recipes/locale/pt/LC_MESSAGES/django.po +++ b/recipes/locale/pt/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,42 +18,42 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:220 +#: .\recipes\settings.py:303 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:221 +#: .\recipes\settings.py:304 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:222 +#: .\recipes\settings.py:305 msgid "Czech" msgstr "" -#: .\recipes\settings.py:223 +#: .\recipes\settings.py:306 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:224 +#: .\recipes\settings.py:307 msgid "English" msgstr "" -#: .\recipes\settings.py:225 +#: .\recipes\settings.py:308 msgid "French" msgstr "" -#: .\recipes\settings.py:226 +#: .\recipes\settings.py:309 msgid "German" msgstr "" -#: .\recipes\settings.py:227 +#: .\recipes\settings.py:310 msgid "Italian" msgstr "" -#: .\recipes\settings.py:228 +#: .\recipes\settings.py:311 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:229 +#: .\recipes\settings.py:312 msgid "Spanish" msgstr "" diff --git a/recipes/locale/rn/LC_MESSAGES/django.po b/recipes/locale/rn/LC_MESSAGES/django.po index 26aabd828..53f8b8073 100644 --- a/recipes/locale/rn/LC_MESSAGES/django.po +++ b/recipes/locale/rn/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,42 +17,42 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: .\recipes\settings.py:220 +#: .\recipes\settings.py:303 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:221 +#: .\recipes\settings.py:304 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:222 +#: .\recipes\settings.py:305 msgid "Czech" msgstr "" -#: .\recipes\settings.py:223 +#: .\recipes\settings.py:306 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:224 +#: .\recipes\settings.py:307 msgid "English" msgstr "" -#: .\recipes\settings.py:225 +#: .\recipes\settings.py:308 msgid "French" msgstr "" -#: .\recipes\settings.py:226 +#: .\recipes\settings.py:309 msgid "German" msgstr "" -#: .\recipes\settings.py:227 +#: .\recipes\settings.py:310 msgid "Italian" msgstr "" -#: .\recipes\settings.py:228 +#: .\recipes\settings.py:311 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:229 +#: .\recipes\settings.py:312 msgid "Spanish" msgstr "" diff --git a/recipes/locale/tr/LC_MESSAGES/django.po b/recipes/locale/tr/LC_MESSAGES/django.po index 667b42f69..55242682d 100644 --- a/recipes/locale/tr/LC_MESSAGES/django.po +++ b/recipes/locale/tr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,42 +18,42 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: .\recipes\settings.py:220 +#: .\recipes\settings.py:303 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:221 +#: .\recipes\settings.py:304 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:222 +#: .\recipes\settings.py:305 msgid "Czech" msgstr "" -#: .\recipes\settings.py:223 +#: .\recipes\settings.py:306 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:224 +#: .\recipes\settings.py:307 msgid "English" msgstr "" -#: .\recipes\settings.py:225 +#: .\recipes\settings.py:308 msgid "French" msgstr "" -#: .\recipes\settings.py:226 +#: .\recipes\settings.py:309 msgid "German" msgstr "" -#: .\recipes\settings.py:227 +#: .\recipes\settings.py:310 msgid "Italian" msgstr "" -#: .\recipes\settings.py:228 +#: .\recipes\settings.py:311 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:229 +#: .\recipes\settings.py:312 msgid "Spanish" msgstr "" diff --git a/recipes/locale/zh_CN/LC_MESSAGES/django.po b/recipes/locale/zh_CN/LC_MESSAGES/django.po index 26aabd828..53f8b8073 100644 --- a/recipes/locale/zh_CN/LC_MESSAGES/django.po +++ b/recipes/locale/zh_CN/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-11 15:09+0200\n" +"POT-Creation-Date: 2021-06-12 20:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,42 +17,42 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: .\recipes\settings.py:220 +#: .\recipes\settings.py:303 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:221 +#: .\recipes\settings.py:304 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:222 +#: .\recipes\settings.py:305 msgid "Czech" msgstr "" -#: .\recipes\settings.py:223 +#: .\recipes\settings.py:306 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:224 +#: .\recipes\settings.py:307 msgid "English" msgstr "" -#: .\recipes\settings.py:225 +#: .\recipes\settings.py:308 msgid "French" msgstr "" -#: .\recipes\settings.py:226 +#: .\recipes\settings.py:309 msgid "German" msgstr "" -#: .\recipes\settings.py:227 +#: .\recipes\settings.py:310 msgid "Italian" msgstr "" -#: .\recipes\settings.py:228 +#: .\recipes\settings.py:311 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:229 +#: .\recipes\settings.py:312 msgid "Spanish" msgstr "" From 08bc87960b2fb1d637e86c58a72fad54e247f379 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Sat, 12 Jun 2021 21:15:23 +0200 Subject: [PATCH 32/97] added abuse prevention for share links --- cookbook/helper/permission_helper.py | 33 ++++++++++++++---- .../0132_sharelink_request_count.py | 18 ++++++++++ .../0133_sharelink_abuse_blocked.py | 18 ++++++++++ cookbook/models.py | 2 ++ cookbook/static/vue/js/recipe_view.js | 2 +- cookbook/urls.py | 1 + cookbook/views/views.py | 34 +++++++++++++++---- recipes/settings.py | 3 ++ vue/src/apps/RecipeView/RecipeView.vue | 11 +++++- 9 files changed, 106 insertions(+), 16 deletions(-) create mode 100644 cookbook/migrations/0132_sharelink_request_count.py create mode 100644 cookbook/migrations/0133_sharelink_abuse_blocked.py diff --git a/cookbook/helper/permission_helper.py b/cookbook/helper/permission_helper.py index 1ac842cd4..739468534 100644 --- a/cookbook/helper/permission_helper.py +++ b/cookbook/helper/permission_helper.py @@ -1,6 +1,8 @@ """ Source: https://djangosnippets.org/snippets/1703/ """ +from django.conf import settings +from django.core.cache import caches from django.views.generic.detail import SingleObjectTemplateResponseMixin from django.views.generic.edit import ModelFormMixin @@ -90,7 +92,18 @@ def share_link_valid(recipe, share): :return: true if a share link with the given recipe and uuid exists """ try: - return True if ShareLink.objects.filter(recipe=recipe, uuid=share).exists() else False + CACHE_KEY = f'recipe_share_{recipe.pk}_{share}' + if c := caches['default'].get(CACHE_KEY, False): + return c + + if link := ShareLink.objects.filter(recipe=recipe, uuid=share, abuse_blocked=False).first(): + if 0 < settings.SHARING_LIMIT < link.request_count: + return False + link.request_count += 1 + link.save() + caches['default'].set(CACHE_KEY, True, timeout=3) + return True + return False except ValidationError: return False @@ -121,15 +134,18 @@ class GroupRequiredMixin(object): def dispatch(self, request, *args, **kwargs): if not has_group_permission(request.user, self.groups_required): if not request.user.is_authenticated: - messages.add_message(request, messages.ERROR, _('You are not logged in and therefore cannot view this page!')) + messages.add_message(request, messages.ERROR, + _('You are not logged in and therefore cannot view this page!')) return HttpResponseRedirect(reverse_lazy('account_login') + '?next=' + request.path) else: - messages.add_message(request, messages.ERROR, _('You do not have the required permissions to view this page!')) + messages.add_message(request, messages.ERROR, + _('You do not have the required permissions to view this page!')) return HttpResponseRedirect(reverse_lazy('index')) try: obj = self.get_object() if obj.get_space() != request.space: - messages.add_message(request, messages.ERROR, _('You do not have the required permissions to view this page!')) + messages.add_message(request, messages.ERROR, + _('You do not have the required permissions to view this page!')) return HttpResponseRedirect(reverse_lazy('index')) except AttributeError: pass @@ -141,17 +157,20 @@ class OwnerRequiredMixin(object): def dispatch(self, request, *args, **kwargs): if not request.user.is_authenticated: - messages.add_message(request, messages.ERROR, _('You are not logged in and therefore cannot view this page!')) + messages.add_message(request, messages.ERROR, + _('You are not logged in and therefore cannot view this page!')) return HttpResponseRedirect(reverse_lazy('account_login') + '?next=' + request.path) else: if not is_object_owner(request.user, self.get_object()): - messages.add_message(request, messages.ERROR, _('You cannot interact with this object as it is not owned by you!')) + messages.add_message(request, messages.ERROR, + _('You cannot interact with this object as it is not owned by you!')) return HttpResponseRedirect(reverse('index')) try: obj = self.get_object() if obj.get_space() != request.space: - messages.add_message(request, messages.ERROR, _('You do not have the required permissions to view this page!')) + messages.add_message(request, messages.ERROR, + _('You do not have the required permissions to view this page!')) return HttpResponseRedirect(reverse_lazy('index')) except AttributeError: pass diff --git a/cookbook/migrations/0132_sharelink_request_count.py b/cookbook/migrations/0132_sharelink_request_count.py new file mode 100644 index 000000000..706c34c31 --- /dev/null +++ b/cookbook/migrations/0132_sharelink_request_count.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.4 on 2021-06-12 18:39 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0131_auto_20210608_1929'), + ] + + operations = [ + migrations.AddField( + model_name='sharelink', + name='request_count', + field=models.IntegerField(default=0), + ), + ] diff --git a/cookbook/migrations/0133_sharelink_abuse_blocked.py b/cookbook/migrations/0133_sharelink_abuse_blocked.py new file mode 100644 index 000000000..ae8747ea5 --- /dev/null +++ b/cookbook/migrations/0133_sharelink_abuse_blocked.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.4 on 2021-06-12 18:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0132_sharelink_request_count'), + ] + + operations = [ + migrations.AddField( + model_name='sharelink', + name='abuse_blocked', + field=models.BooleanField(default=False), + ), + ] diff --git a/cookbook/models.py b/cookbook/models.py index cf8b21038..e6fcd60b9 100644 --- a/cookbook/models.py +++ b/cookbook/models.py @@ -603,6 +603,8 @@ class ShoppingList(ExportModelOperationsMixin('shopping_list'), models.Model, Pe class ShareLink(ExportModelOperationsMixin('share_link'), models.Model, PermissionModelMixin): recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE) uuid = models.UUIDField(default=uuid.uuid4) + request_count = models.IntegerField(default=0) + abuse_blocked = models.BooleanField(default=False) created_by = models.ForeignKey(User, on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True) diff --git a/cookbook/static/vue/js/recipe_view.js b/cookbook/static/vue/js/recipe_view.js index 64a5ab7c1..64158707e 100644 --- a/cookbook/static/vue/js/recipe_view.js +++ b/cookbook/static/vue/js/recipe_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var n,s,o=t[0],c=t[1],l=t[2],p=0,u=[];p0?i("div",{staticClass:"col-md-6 order-md-1 col-sm-12 order-sm-2 col-12 order-2"},[i("div",{staticClass:"card border-primary"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-pepper-hot"}),e._v(" "+e._s(e.$t("Ingredients")))])])]),i("br"),i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-12"},[i("table",{staticClass:"table table-sm"},[e._l(e.recipe.steps,(function(t){return[e._l(t.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":e.updateIngredientCheckedState}})]}))]}))],2)])])])])]):e._e(),i("div",{staticClass:"col-12 order-1 col-sm-12 order-sm-1 col-md-6 order-md-2"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[null!==e.recipe.image?i("img",{staticClass:"img img-fluid rounded",staticStyle:{"max-height":"30vh"},attrs:{src:e.recipe.image,alt:e.$t("Recipe_Image")}}):e._e()])]),i("div",{staticClass:"row",staticStyle:{"margin-top":"2vh","margin-bottom":"2vh"}},[i("div",{staticClass:"col-12"},[i("Nutrition",{attrs:{recipe:e.recipe,ingredient_factor:e.ingredient_factor}})],1)])])]),e.recipe.internal?e._e():[e.recipe.file_path.includes(".pdf")?i("div",[i("PdfViewer",{attrs:{recipe:e.recipe}})],1):e._e(),e.recipe.file_path.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")||e.recipe.file_path.includes(".gif")?i("div",[i("ImageViewer",{attrs:{recipe:e.recipe}})],1):e._e()],e._l(e.recipe.steps,(function(t,n){return i("div",{key:t.id,staticStyle:{"margin-top":"1vh"}},[i("Step",{attrs:{recipe:e.recipe,step:t,ingredient_factor:e.ingredient_factor,index:n,start_time:e.start_time},on:{"update-start-time":e.updateStartTime,"checked-state-changed":e.updateIngredientCheckedState}})],1)}))],2),i("add-recipe-to-book",{attrs:{recipe:e.recipe}})],2)},r=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-user-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"far fa-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-pizza-slice fa-2x text-primary"})])}],s=i("b85c"),o=i("5f5b"),c=(i("2dd8"),i("7c15")),l=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("hr"),"TEXT"===e.step.type?[e.recipe.steps.length>1?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h5",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))],0!==e.step.time?i("small",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fas fa-user-clock"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min"))+" ")]):e._e(),""!==e.start_time?i("small",{staticClass:"d-print-none"},[i("b-link",{attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")])],1):e._e()],2)]),i("div",{staticClass:"col col-md-4",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]):e._e(),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[i("div",{staticClass:"row"},[e.step.ingredients.length>0&&e.recipe.steps.length>1?i("div",{staticClass:"col col-md-4"},[i("table",{staticClass:"table table-sm"},[e._l(e.step.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":function(i){return e.$emit("checked-state-changed",t)}}})]}))],2)]):e._e(),i("div",{staticClass:"col",class:{"col-md-8":e.recipe.steps.length>1,"col-md-12":e.recipe.steps.length<=1}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)])])]:e._e(),"TIME"===e.step.type||"FILE"===e.step.type?[i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-8 offset-md-2",staticStyle:{"text-align":"center"}},[i("h4",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))]],2),0!==e.step.time?i("span",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fa fa-stopwatch"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min")))]):e._e(),""!==e.start_time?i("b-link",{staticClass:"d-print-none",attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")]):e._e()],1),i("div",{staticClass:"col-md-2",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[""!==e.step.instruction?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-12",staticStyle:{"text-align":"center"}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)]):e._e()])]:e._e(),i("div",{staticClass:"row",staticStyle:{"text-align":"center"}},[i("div",{staticClass:"col col-md-12"},[null!==e.step.file?[e.step.file.file.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")||e.recipe.file_path.includes(".gif")?i("div",[i("img",{staticStyle:{"max-width":"50vw","max-height":"50vh"},attrs:{src:e.step.file.file}})]):i("div",[i("a",{attrs:{href:e.step.file.file,target:"_blank",rel:"noreferrer nofollow"}},[e._v(e._s(e.$t("Download"))+" "+e._s(e.$t("File")))])])]:e._e()],2)]),""!==e.start_time?i("div",[i("b-popover",{ref:"id_reactive_popover_"+e.step.id,attrs:{target:"id_reactive_popover_"+e.step.id,triggers:"click",placement:"bottom",title:e.$t("Step start time")}},[i("div",[i("b-form-group",{staticClass:"mb-1",attrs:{label:"Time","label-for":"popover-input-1","label-cols":"3"}},[i("b-form-input",{attrs:{type:"datetime-local",id:"popover-input-1",size:"sm"},model:{value:e.set_time_input,callback:function(t){e.set_time_input=t},expression:"set_time_input"}})],1)],1),i("div",{staticClass:"row",staticStyle:{"margin-top":"1vh"}},[i("div",{staticClass:"col-12",staticStyle:{"text-align":"right"}},[i("b-button",{staticStyle:{"margin-right":"8px"},attrs:{size:"sm",variant:"secondary"},on:{click:e.closePopover}},[e._v("Cancel")]),i("b-button",{attrs:{size:"sm",variant:"primary"},on:{click:e.updateTime}},[e._v("Ok")])],1)])])],1):e._e()],2)},d=[],p=(i("a9e3"),i("fa7d")),u=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("tr",{on:{click:function(t){return e.$emit("checked-state-changed",e.ingredient)}}},[e.ingredient.is_header?[i("td",{attrs:{colspan:"5"}},[i("b",[e._v(e._s(e.ingredient.note))])])]:[i("td",[e.ingredient.checked?i("i",{staticClass:"far fa-check-circle text-success"}):e._e(),e.ingredient.checked?e._e():i("i",{staticClass:"far fa-check-circle text-primary"})]),i("td",[0!==e.ingredient.amount?i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.ingredient.amount))}}):e._e()]),i("td",[null===e.ingredient.unit||e.ingredient.no_amount?e._e():i("span",[e._v(e._s(e.ingredient.unit.name))])]),i("td",[null!==e.ingredient.food?[null!==e.ingredient.food.recipe?i("a",{attrs:{href:e.resolveDjangoUrl("view_recipe",e.ingredient.food.recipe),target:"_blank",rel:"noopener noreferrer"}},[e._v(e._s(e.ingredient.food.name))]):e._e(),null===e.ingredient.food.recipe?i("span",[e._v(e._s(e.ingredient.food.name))]):e._e()]:e._e()],2),i("td",[e.ingredient.note?i("div",[i("span",{directives:[{name:"b-popover",rawName:"v-b-popover.hover",value:e.ingredient.note,expression:"ingredient.note",modifiers:{hover:!0}}],staticClass:"d-print-none"},[i("i",{staticClass:"far fa-comment"})]),i("div",{staticClass:"d-none d-print-block"},[i("i",{staticClass:"far fa-comment-alt"}),e._v(" "+e._s(e.ingredient.note)+" ")])]):e._e()])]],2)},f=[],_={name:"Ingredient",props:{ingredient:Object,ingredient_factor:{type:Number,default:1}},mixins:[p["b"]],data:function(){return{checked:!1}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},m=_,g=i("2877"),v=Object(g["a"])(m,u,f,!1,null,null,null),b=v.exports,h=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i(e.compiled,{tag:"component",attrs:{ingredient_factor:e.ingredient_factor,code:e.code}})],1)},j=[],k=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.number))}})},C=[],y={name:"ScalableNumber",props:{number:Number,factor:{type:Number,default:4}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.factor)}}},w=y,S=Object(g["a"])(w,k,C,!1,null,null,null),x=S.exports,O={name:"CompileComponent",props:["code","ingredient_factor"],data:function(){return{compiled:null}},mounted:function(){this.compiled=n["default"].component("compiled-component",{props:["ingredient_factor","code"],components:{ScalableNumber:x},template:"
".concat(this.code,"
")})}},E=O,R=Object(g["a"])(E,h,j,!1,null,null,null),$=R.exports,I=i("c1df"),P=i.n(I);n["default"].prototype.moment=P.a;var A={name:"Step",mixins:[p["a"]],components:{Ingredient:b,CompileComponent:$},props:{step:Object,ingredient_factor:Number,index:Number,recipe:Object,start_time:String},data:function(){return{details_visible:!0,set_time_input:""}},mounted:function(){this.set_time_input=P()(this.start_time).add(this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm")},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)},updateTime:function(){var e=P()(this.set_time_input).add(-1*this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm");this.$emit("update-start-time",e),this.closePopover()},closePopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("close")},openPopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("open")}}},N=A,L=Object(g["a"])(N,l,d,!1,null,null,null),z=L.exports,B=i("fc0d"),D=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("iframe",{staticStyle:{border:"none"},attrs:{src:e.pdfUrl,width:"100%",height:"700px"}})])},T=[],M={name:"PdfViewer",mixins:[p["b"]],props:{recipe:Object},computed:{pdfUrl:function(){return"/static/pdfjs/viewer.html?file="+Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},U=M,V=Object(g["a"])(U,D,T,!1,null,null,null),H=V.exports,F=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticStyle:{"text-align":"center"}},[i("b-img",{attrs:{src:e.pdfUrl,alt:e.$t("External_Recipe_Image")}})],1)},K=[],Z={name:"ImageViewer",props:{recipe:Object},computed:{pdfUrl:function(){return Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},W=Z,J=Object(g["a"])(W,F,K,!1,null,null,null),q=J.exports,G=function(){var e=this,t=e.$createElement,i=e._self._c||t;return null!==e.recipe.nutrition?i("div",[i("div",{staticClass:"card border-success"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-carrot"}),e._v(" "+e._s(e.$t("Nutrition")))])])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-fire fa-fw text-primary"}),e._v(" "+e._s(e.$t("Calories"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.calories))}}),e._v(" kcal ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-bread-slice fa-fw text-primary"}),e._v(" "+e._s(e.$t("Carbohydrates"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.carbohydrates))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-cheese fa-fw text-primary"}),e._v(" "+e._s(e.$t("Fats"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.fats))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-drumstick-bite fa-fw text-primary"}),e._v(" "+e._s(e.$t("Proteins"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.proteins))}}),e._v(" g ")])])])])]):e._e()},X=[],Q={name:"Nutrition",props:{recipe:Object,ingredient_factor:Number},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},Y=Q,ee=Object(g["a"])(Y,G,X,!1,null,null,null),te=ee.exports,ie=i("81d5"),ne=i("d76c"),ae=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_add_book",title:e.$t("Add_to_Book"),"ok-title":e.$t("Add"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.addToBook()}}},[i("multiselect",{attrs:{options:e.books,"preserve-search":!0,placeholder:e.$t("Select_Book"),label:"name","track-by":"id",id:"id_books",multiple:!1},on:{"search-change":e.loadBook},model:{value:e.selected_book,callback:function(t){e.selected_book=t},expression:"selected_book"}})],1)],1)},re=[],se=i("8e5f"),oe=i.n(se);n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ce={name:"AddRecipeToBook",components:{Multiselect:oe.a},props:{recipe:Object},data:function(){return{books:[],selected_book:null}},mounted:function(){this.loadBook("")},methods:{loadBook:function(e){var t=this;Object(c["b"])(e).then((function(e){t.books=e}))},addToBook:function(){Object(c["a"])({recipe:this.recipe.id,book:this.selected_book.id})}}},le=ce,de=(i("60bc"),Object(g["a"])(le,ae,re,!1,null,null,null)),pe=de.exports;n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ue={name:"RecipeView",mixins:[p["b"],p["c"]],components:{PdfViewer:H,ImageViewer:q,Ingredient:b,Step:z,RecipeContextMenu:B["a"],Nutrition:te,Keywords:ie["a"],LoadingSpinner:ne["a"],AddRecipeToBook:pe},computed:{ingredient_factor:function(){return this.servings/this.recipe.servings}},data:function(){return{loading:!0,recipe:void 0,ingredient_count:0,servings:1,start_time:""}},mounted:function(){this.loadRecipe(window.RECIPE_ID),this.$i18n.locale=window.CUSTOM_LOCALE},methods:{loadRecipe:function(e){var t=this;Object(c["c"])(e).then((function(e){0!==window.USER_SERVINGS&&(e.servings=window.USER_SERVINGS),t.servings=e.servings;var i,n=0,a=Object(s["a"])(e.steps);try{for(a.s();!(i=a.n()).done;){var r=i.value;t.ingredient_count+=r.ingredients.length;var o,c=Object(s["a"])(r.ingredients);try{for(c.s();!(o=c.n()).done;){var l=o.value;t.$set(l,"checked",!1)}}catch(d){c.e(d)}finally{c.f()}r.time_offset=n,n+=r.time}}catch(d){a.e(d)}finally{a.f()}n>0&&(t.start_time=P()().format("yyyy-MM-DDTHH:mm")),t.recipe=e,t.loading=!1}))},updateStartTime:function(e){this.start_time=e},updateIngredientCheckedState:function(e){var t,i=Object(s["a"])(this.recipe.steps);try{for(i.s();!(t=i.n()).done;){var n,a=t.value,r=Object(s["a"])(a.ingredients);try{for(r.s();!(n=r.n()).done;){var o=n.value;o.id===e.id&&this.$set(o,"checked",!o.checked)}}catch(c){r.e(c)}finally{r.f()}}}catch(c){i.e(c)}finally{i.f()}}}},fe=ue,_e=Object(g["a"])(fe,a,r,!1,null,null,null),me=_e.exports,ge=i("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:ge["a"],render:function(e){return e(me)}}).$mount("#app")},1:function(e,t,i){e.exports=i("0671")},4678:function(e,t,i){var n={"./af":"2bfb","./af.js":"2bfb","./ar":"8e73","./ar-dz":"a356","./ar-dz.js":"a356","./ar-kw":"423e","./ar-kw.js":"423e","./ar-ly":"1cfd","./ar-ly.js":"1cfd","./ar-ma":"0a84","./ar-ma.js":"0a84","./ar-sa":"8230","./ar-sa.js":"8230","./ar-tn":"6d83","./ar-tn.js":"6d83","./ar.js":"8e73","./az":"485c","./az.js":"485c","./be":"1fc1","./be.js":"1fc1","./bg":"84aa","./bg.js":"84aa","./bm":"a7fa","./bm.js":"a7fa","./bn":"9043","./bn-bd":"9686","./bn-bd.js":"9686","./bn.js":"9043","./bo":"d26a","./bo.js":"d26a","./br":"6887","./br.js":"6887","./bs":"2554","./bs.js":"2554","./ca":"d716","./ca.js":"d716","./cs":"3c0d","./cs.js":"3c0d","./cv":"03ec","./cv.js":"03ec","./cy":"9797","./cy.js":"9797","./da":"0f14","./da.js":"0f14","./de":"b469","./de-at":"b3eb","./de-at.js":"b3eb","./de-ch":"bb71","./de-ch.js":"bb71","./de.js":"b469","./dv":"598a","./dv.js":"598a","./el":"8d47","./el.js":"8d47","./en-au":"0e6b","./en-au.js":"0e6b","./en-ca":"3886","./en-ca.js":"3886","./en-gb":"39a6","./en-gb.js":"39a6","./en-ie":"e1d3","./en-ie.js":"e1d3","./en-il":"7333","./en-il.js":"7333","./en-in":"ec2e","./en-in.js":"ec2e","./en-nz":"6f50","./en-nz.js":"6f50","./en-sg":"b7e9","./en-sg.js":"b7e9","./eo":"65db","./eo.js":"65db","./es":"898b","./es-do":"0a3c","./es-do.js":"0a3c","./es-mx":"b5b7","./es-mx.js":"b5b7","./es-us":"55c9","./es-us.js":"55c9","./es.js":"898b","./et":"ec18","./et.js":"ec18","./eu":"0ff2","./eu.js":"0ff2","./fa":"8df4","./fa.js":"8df4","./fi":"81e9","./fi.js":"81e9","./fil":"d69a","./fil.js":"d69a","./fo":"0721","./fo.js":"0721","./fr":"9f26","./fr-ca":"d9f8","./fr-ca.js":"d9f8","./fr-ch":"0e49","./fr-ch.js":"0e49","./fr.js":"9f26","./fy":"7118","./fy.js":"7118","./ga":"5120","./ga.js":"5120","./gd":"f6b4","./gd.js":"f6b4","./gl":"8840","./gl.js":"8840","./gom-deva":"aaf2","./gom-deva.js":"aaf2","./gom-latn":"0caa","./gom-latn.js":"0caa","./gu":"e0c5","./gu.js":"e0c5","./he":"c7aa","./he.js":"c7aa","./hi":"dc4d","./hi.js":"dc4d","./hr":"4ba9","./hr.js":"4ba9","./hu":"5b14","./hu.js":"5b14","./hy-am":"d6b6","./hy-am.js":"d6b6","./id":"5038","./id.js":"5038","./is":"0558","./is.js":"0558","./it":"6e98","./it-ch":"6f12","./it-ch.js":"6f12","./it.js":"6e98","./ja":"079e","./ja.js":"079e","./jv":"b540","./jv.js":"b540","./ka":"201b","./ka.js":"201b","./kk":"6d79","./kk.js":"6d79","./km":"e81d","./km.js":"e81d","./kn":"3e92","./kn.js":"3e92","./ko":"22f8","./ko.js":"22f8","./ku":"2421","./ku.js":"2421","./ky":"9609","./ky.js":"9609","./lb":"440c","./lb.js":"440c","./lo":"b29d","./lo.js":"b29d","./lt":"26f9","./lt.js":"26f9","./lv":"b97c","./lv.js":"b97c","./me":"293c","./me.js":"293c","./mi":"688b","./mi.js":"688b","./mk":"6909","./mk.js":"6909","./ml":"02fb","./ml.js":"02fb","./mn":"958b","./mn.js":"958b","./mr":"39bd","./mr.js":"39bd","./ms":"ebe4","./ms-my":"6403","./ms-my.js":"6403","./ms.js":"ebe4","./mt":"1b45","./mt.js":"1b45","./my":"8689","./my.js":"8689","./nb":"6ce3","./nb.js":"6ce3","./ne":"3a39","./ne.js":"3a39","./nl":"facd","./nl-be":"db29","./nl-be.js":"db29","./nl.js":"facd","./nn":"b84c","./nn.js":"b84c","./oc-lnc":"167b","./oc-lnc.js":"167b","./pa-in":"f3ff","./pa-in.js":"f3ff","./pl":"8d57","./pl.js":"8d57","./pt":"f260","./pt-br":"d2d4","./pt-br.js":"d2d4","./pt.js":"f260","./ro":"972c","./ro.js":"972c","./ru":"957c","./ru.js":"957c","./sd":"6784","./sd.js":"6784","./se":"ffff","./se.js":"ffff","./si":"eda5","./si.js":"eda5","./sk":"7be6","./sk.js":"7be6","./sl":"8155","./sl.js":"8155","./sq":"c8f3","./sq.js":"c8f3","./sr":"cf1e","./sr-cyrl":"13e9","./sr-cyrl.js":"13e9","./sr.js":"cf1e","./ss":"52bd","./ss.js":"52bd","./sv":"5fbd","./sv.js":"5fbd","./sw":"74dc","./sw.js":"74dc","./ta":"3de5","./ta.js":"3de5","./te":"5cbb","./te.js":"5cbb","./tet":"576c","./tet.js":"576c","./tg":"3b1b","./tg.js":"3b1b","./th":"10e8","./th.js":"10e8","./tk":"5aff","./tk.js":"5aff","./tl-ph":"0f38","./tl-ph.js":"0f38","./tlh":"cf755","./tlh.js":"cf755","./tr":"0e81","./tr.js":"0e81","./tzl":"cf51","./tzl.js":"cf51","./tzm":"c109","./tzm-latn":"b53d","./tzm-latn.js":"b53d","./tzm.js":"c109","./ug-cn":"6117","./ug-cn.js":"6117","./uk":"ada2","./uk.js":"ada2","./ur":"5294","./ur.js":"5294","./uz":"2e8c","./uz-latn":"010e","./uz-latn.js":"010e","./uz.js":"2e8c","./vi":"2921","./vi.js":"2921","./x-pseudo":"fd7e","./x-pseudo.js":"fd7e","./yo":"7f33","./yo.js":"7f33","./zh-cn":"5c3a","./zh-cn.js":"5c3a","./zh-hk":"49ab","./zh-hk.js":"49ab","./zh-mo":"3a6c","./zh-mo.js":"3a6c","./zh-tw":"90ea","./zh-tw.js":"90ea"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="4678"},"49f8":function(e,t,i){var n={"./de.json":"6ce2","./en.json":"edd4","./nl.json":"a625","./sv.json":"4c5b"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="49f8"},"4c5b":function(e){e.exports=JSON.parse('{"import_running":"Import pågår, var god vänta!","all_fields_optional":"Alla rutor är valfria och kan lämnas tomma.","convert_internal":"Konvertera till internt recept","Log_Recipe_Cooking":"Logga tillagningen av receptet","External_Recipe_Image":"Externt receptbild","Add_to_Book":"Lägg till i kokbok","Add_to_Shopping":"Lägg till i handelslista","Add_to_Plan":"Lägg till i matsedel","Step_start_time":"Steg starttid","Select_Book":"Välj kokbok","Recipe_Image":"Receptbild","Import_finished":"Importering klar","View_Recipes":"Visa recept","Log_Cooking":"Logga tillagning","Proteins":"Protein","Fats":"Fett","Carbohydrates":"Kolhydrater","Calories":"Kalorier","Nutrition":"Näringsinnehåll","Date":"Datum","Share":"Dela","Export":"Exportera","Rating":"Betyg","Close":"Stäng","Add":"Lägg till","Ingredients":"Ingredienser","min":"min","Servings":"Portioner","Waiting":"Väntan","Preparation":"Förberedelse","Edit":"Redigera","Open":"Öppna","Save":"Spara","Step":"Steg","Search":"Sök","Import":"Importera","Print":"Skriv ut","Information":"Information"}')},"6ce2":function(e){e.exports=JSON.parse('{"Import":"Import","import_running":"Import läuft, bitte warten!","Import_finished":"Import fertig","View_Recipes":"Rezepte Ansehen","Information":"Information","all_fields_optional":"Alle Felder sind optional und können leer gelassen werden.","convert_internal":"Zu internem Rezept wandeln","Log_Recipe_Cooking":"Kochen protokollieren","External_Recipe_Image":"Externes Rezept Bild","Add_to_Book":"Zu Buch hinzufügen","Add_to_Shopping":"Zu Einkaufsliste hinzufügen","Add_to_Plan":"Zu Plan hinzufügen","Step_start_time":"Schritt Startzeit","Select_Book":"Buch wählen","Recipe_Image":"Rezept Bild","Log_Cooking":"Kochen protokollieren","Proteins":"Proteine","Fats":"Fette","Carbohydrates":"Kohlenhydrate","Calories":"Kalorien","Nutrition":"Nährwerte","Keywords":"Stichwörter","Books":"Bücher","show_only_internal":"Nur interne Rezepte anzeigen","Ingredients":"Zutaten","min":"Min","Servings":"Portionen","Waiting":"Wartezeit","Preparation":"Zubereitung","Edit":"Bearbeiten","Open":"Öffnen","Save":"Speichern","Step":"Schritt","Search":"Suchen","Print":"Drucken","New_Recipe":"Neues Rezept","Url_Import":"URL Import","Reset_Search":"Suche zurücksetzen","or":"oder","and":"und","Recently_Viewed":"Kürzlich angesehen","External":"Extern","Settings":"Einstellungen","Meal_Plan":"Speiseplan","Date":"Datum","Share":"Teilen","Export":"Exportieren","Rating":"Bewertung","Close":"Schließen","Add":"Hinzufügen"}')},"7c15":function(e,t,i){"use strict";i.d(t,"c",(function(){return s})),i.d(t,"d",(function(){return o})),i.d(t,"b",(function(){return c})),i.d(t,"a",(function(){return l}));var n=i("bc3a"),a=i.n(n),r=i("fa7d");function s(e){var t=Object(r["g"])("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),a.a.get(t).then((function(e){return e.data})).catch((function(e){d(e,"There was an error loading a resource!","danger")}))}function o(e){return a.a.post(Object(r["g"])("api:cooklog-list"),e).then((function(e){Object(r["f"])("Saved","Cook Log entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function c(e){return a.a.get(Object(r["g"])("api:recipebook-list")+"?query="+e).then((function(e){return e.data})).catch((function(e){}))}function l(e){return a.a.post(Object(r["g"])("api:recipebookentry-list"),e).then((function(e){Object(r["f"])("Saved","Recipe Book entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function d(e,t){if("response"in e){console.log(e.response);var i="statusText"in e.response?e.response.statusText:Object(r["e"])("Error");t+="\n\n"+JSON.stringify(e.response.data),Object(r["f"])(i,t,"danger")}else Object(r["f"])("Error",t,"danger"),console.log(e)}a.a.defaults.xsrfCookieName="csrftoken",a.a.defaults.xsrfHeaderName="X-CSRFTOKEN"},"81d5":function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.recipe.keywords.length>0?i("div",e._l(e.recipe.keywords,(function(t){return i("span",{key:t.id,staticStyle:{padding:"2px"}},[i("b-badge",{attrs:{pill:"",variant:"light"}},[e._v(e._s(t.label))])],1)})),0):e._e()},a=[],r={name:"Keywords",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},9225:function(e,t,i){"use strict";i("159b"),i("d3b7"),i("ddb0"),i("ac1f"),i("466d");var n=i("a026"),a=i("a925");function r(){var e=i("49f8"),t={};return e.keys().forEach((function(i){var n=i.match(/([A-Za-z0-9-_]+)\./i);if(n&&n.length>1){var a=n[1];t[a]=e(i)}})),t}n["default"].use(a["a"]),t["a"]=new a["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:r()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"row"},[i("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[i("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],r={name:"LoadingSpinner",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","err_deleting_resource":"There was an error deleting a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","success_deleting_resource":"Successfully deleted a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Load_More":"Load More","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Cancel":"Cancel","Delete":"Delete","Open":"Open","Ok":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,i){"use strict";i.d(t,"c",(function(){return r})),i.d(t,"f",(function(){return s})),i.d(t,"a",(function(){return o})),i.d(t,"e",(function(){return c})),i.d(t,"b",(function(){return l})),i.d(t,"g",(function(){return d})),i.d(t,"d",(function(){return u}));i("99af");var n=i("59e4");function a(e,t,i){var n=Math.floor(e),a=1,r=n+1,s=1;if(e!==n)while(a<=t&&s<=t){var o=(n+r)/(a+s);if(e===o){a+s<=t?(a+=s,n+=r,s=t+1):a>s?s=t+1:a=t+1;break}et&&(a=s,n=r),!i)return[0,n,a];var c=Math.floor(n/a);return[c,n-c*a,a]}var r={methods:{makeToast:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return s(e,t,i)}}};function s(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=new n["a"];a.$bvToast.toast(t,{title:e,variant:i,toaster:"b-toaster-top-center",solid:!0})}var o={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var l={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function u(e,t){if(p("use_fractions")){var i="",n=a(e*t,9,!0);return n[0]>0&&(i+=n[0]),n[1]>0&&(i+=" ".concat(n[1],"").concat(n[2],"")),i}return f(e*t)}function f(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fc0d:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("div",{staticClass:"dropdown"},[e._m(0),i("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e.$t("Edit")))]),e.recipe.internal?e._e():i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e.$t("convert_internal")))]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_add_book")}}},[i("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Book"))+" ")]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Shopping"))+" ")]):e._e(),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?recipe="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Plan"))+" ")]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[i("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e.$t("Log_Cooking"))+" ")]),i("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[i("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e.$t("Print"))+" ")]),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e.$t("Export")))]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e.$t("Share")))]):e._e()])]),i("cook-log",{attrs:{recipe:e.recipe}})],1)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[i("i",{staticClass:"fas fa-ellipsis-v"})])}],r=(i("a9e3"),i("fa7d")),s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e.$t("Log_Recipe_Cooking"),"ok-title":e.$t("Save"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.logCook()}}},[i("p",[e._v(e._s(e.$t("all_fields_optional")))]),i("form",[i("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e.$t("Servings")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),i("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e.$t("Rating"))+" - "),i("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),i("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),i("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e.$t("Date")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},o=[],c=i("c1df"),l=i.n(c),d=i("a026"),p=i("5f5b"),u=i("7c15");d["default"].prototype.moment=l.a,d["default"].use(p["a"]);var f={name:"CookLog",props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:l()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){Object(u["d"])(this.logObject)}}},_=f,m=i("2877"),g=Object(m["a"])(_,s,o,!1,null,null,null),v=g.exports,b={name:"RecipeContextMenu",mixins:[r["b"]],components:{CookLog:v},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},h=b,j=Object(m["a"])(h,n,a,!1,null,null,null);t["a"]=j.exports}}); \ No newline at end of file +(function(e){function t(t){for(var n,s,o=t[0],c=t[1],l=t[2],p=0,u=[];p0?i("div",{staticClass:"col-md-6 order-md-1 col-sm-12 order-sm-2 col-12 order-2"},[i("div",{staticClass:"card border-primary"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-pepper-hot"}),e._v(" "+e._s(e.$t("Ingredients")))])])]),i("br"),i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-12"},[i("table",{staticClass:"table table-sm"},[e._l(e.recipe.steps,(function(t){return[e._l(t.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":e.updateIngredientCheckedState}})]}))]}))],2)])])])])]):e._e(),i("div",{staticClass:"col-12 order-1 col-sm-12 order-sm-1 col-md-6 order-md-2"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[null!==e.recipe.image?i("img",{staticClass:"img img-fluid rounded",staticStyle:{"max-height":"30vh"},attrs:{src:e.recipe.image,alt:e.$t("Recipe_Image")}}):e._e()])]),i("div",{staticClass:"row",staticStyle:{"margin-top":"2vh","margin-bottom":"2vh"}},[i("div",{staticClass:"col-12"},[i("Nutrition",{attrs:{recipe:e.recipe,ingredient_factor:e.ingredient_factor}})],1)])])]),e.recipe.internal?e._e():[e.recipe.file_path.includes(".pdf")?i("div",[i("PdfViewer",{attrs:{recipe:e.recipe}})],1):e._e(),e.recipe.file_path.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")||e.recipe.file_path.includes(".gif")?i("div",[i("ImageViewer",{attrs:{recipe:e.recipe}})],1):e._e()],e._l(e.recipe.steps,(function(t,n){return i("div",{key:t.id,staticStyle:{"margin-top":"1vh"}},[i("Step",{attrs:{recipe:e.recipe,step:t,ingredient_factor:e.ingredient_factor,index:n,start_time:e.start_time},on:{"update-start-time":e.updateStartTime,"checked-state-changed":e.updateIngredientCheckedState}})],1)}))],2),i("add-recipe-to-book",{attrs:{recipe:e.recipe}}),""!==e.share_uid?i("div",{staticClass:"row text-center",staticStyle:{"margin-top":"3vh","margin-bottom":"3vh"}},[i("div",{staticClass:"col col-md-12"},[i("a",{attrs:{href:e.resolveDjangoUrl("view_report_share_abuse",e.share_uid)}},[e._v(e._s(e.$t("Report Abuse")))])])]):e._e()],2)},r=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-user-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"far fa-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-pizza-slice fa-2x text-primary"})])}],s=i("b85c"),o=i("5f5b"),c=(i("2dd8"),i("7c15")),l=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("hr"),"TEXT"===e.step.type?[e.recipe.steps.length>1?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h5",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))],0!==e.step.time?i("small",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fas fa-user-clock"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min"))+" ")]):e._e(),""!==e.start_time?i("small",{staticClass:"d-print-none"},[i("b-link",{attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")])],1):e._e()],2)]),i("div",{staticClass:"col col-md-4",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]):e._e(),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[i("div",{staticClass:"row"},[e.step.ingredients.length>0&&e.recipe.steps.length>1?i("div",{staticClass:"col col-md-4"},[i("table",{staticClass:"table table-sm"},[e._l(e.step.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":function(i){return e.$emit("checked-state-changed",t)}}})]}))],2)]):e._e(),i("div",{staticClass:"col",class:{"col-md-8":e.recipe.steps.length>1,"col-md-12":e.recipe.steps.length<=1}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)])])]:e._e(),"TIME"===e.step.type||"FILE"===e.step.type?[i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-8 offset-md-2",staticStyle:{"text-align":"center"}},[i("h4",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))]],2),0!==e.step.time?i("span",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fa fa-stopwatch"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min")))]):e._e(),""!==e.start_time?i("b-link",{staticClass:"d-print-none",attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")]):e._e()],1),i("div",{staticClass:"col-md-2",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[""!==e.step.instruction?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-12",staticStyle:{"text-align":"center"}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)]):e._e()])]:e._e(),i("div",{staticClass:"row",staticStyle:{"text-align":"center"}},[i("div",{staticClass:"col col-md-12"},[null!==e.step.file?[e.step.file.file.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")||e.recipe.file_path.includes(".gif")?i("div",[i("img",{staticStyle:{"max-width":"50vw","max-height":"50vh"},attrs:{src:e.step.file.file}})]):i("div",[i("a",{attrs:{href:e.step.file.file,target:"_blank",rel:"noreferrer nofollow"}},[e._v(e._s(e.$t("Download"))+" "+e._s(e.$t("File")))])])]:e._e()],2)]),""!==e.start_time?i("div",[i("b-popover",{ref:"id_reactive_popover_"+e.step.id,attrs:{target:"id_reactive_popover_"+e.step.id,triggers:"click",placement:"bottom",title:e.$t("Step start time")}},[i("div",[i("b-form-group",{staticClass:"mb-1",attrs:{label:"Time","label-for":"popover-input-1","label-cols":"3"}},[i("b-form-input",{attrs:{type:"datetime-local",id:"popover-input-1",size:"sm"},model:{value:e.set_time_input,callback:function(t){e.set_time_input=t},expression:"set_time_input"}})],1)],1),i("div",{staticClass:"row",staticStyle:{"margin-top":"1vh"}},[i("div",{staticClass:"col-12",staticStyle:{"text-align":"right"}},[i("b-button",{staticStyle:{"margin-right":"8px"},attrs:{size:"sm",variant:"secondary"},on:{click:e.closePopover}},[e._v("Cancel")]),i("b-button",{attrs:{size:"sm",variant:"primary"},on:{click:e.updateTime}},[e._v("Ok")])],1)])])],1):e._e()],2)},d=[],p=(i("a9e3"),i("fa7d")),u=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("tr",{on:{click:function(t){return e.$emit("checked-state-changed",e.ingredient)}}},[e.ingredient.is_header?[i("td",{attrs:{colspan:"5"}},[i("b",[e._v(e._s(e.ingredient.note))])])]:[i("td",[e.ingredient.checked?i("i",{staticClass:"far fa-check-circle text-success"}):e._e(),e.ingredient.checked?e._e():i("i",{staticClass:"far fa-check-circle text-primary"})]),i("td",[0!==e.ingredient.amount?i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.ingredient.amount))}}):e._e()]),i("td",[null===e.ingredient.unit||e.ingredient.no_amount?e._e():i("span",[e._v(e._s(e.ingredient.unit.name))])]),i("td",[null!==e.ingredient.food?[null!==e.ingredient.food.recipe?i("a",{attrs:{href:e.resolveDjangoUrl("view_recipe",e.ingredient.food.recipe),target:"_blank",rel:"noopener noreferrer"}},[e._v(e._s(e.ingredient.food.name))]):e._e(),null===e.ingredient.food.recipe?i("span",[e._v(e._s(e.ingredient.food.name))]):e._e()]:e._e()],2),i("td",[e.ingredient.note?i("div",[i("span",{directives:[{name:"b-popover",rawName:"v-b-popover.hover",value:e.ingredient.note,expression:"ingredient.note",modifiers:{hover:!0}}],staticClass:"d-print-none"},[i("i",{staticClass:"far fa-comment"})]),i("div",{staticClass:"d-none d-print-block"},[i("i",{staticClass:"far fa-comment-alt"}),e._v(" "+e._s(e.ingredient.note)+" ")])]):e._e()])]],2)},f=[],_={name:"Ingredient",props:{ingredient:Object,ingredient_factor:{type:Number,default:1}},mixins:[p["b"]],data:function(){return{checked:!1}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},m=_,g=i("2877"),v=Object(g["a"])(m,u,f,!1,null,null,null),b=v.exports,h=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i(e.compiled,{tag:"component",attrs:{ingredient_factor:e.ingredient_factor,code:e.code}})],1)},j=[],k=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.number))}})},C=[],w={name:"ScalableNumber",props:{number:Number,factor:{type:Number,default:4}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.factor)}}},y=w,S=Object(g["a"])(y,k,C,!1,null,null,null),x=S.exports,O={name:"CompileComponent",props:["code","ingredient_factor"],data:function(){return{compiled:null}},mounted:function(){this.compiled=n["default"].component("compiled-component",{props:["ingredient_factor","code"],components:{ScalableNumber:x},template:"
".concat(this.code,"
")})}},E=O,R=Object(g["a"])(E,h,j,!1,null,null,null),$=R.exports,I=i("c1df"),P=i.n(I);n["default"].prototype.moment=P.a;var A={name:"Step",mixins:[p["a"]],components:{Ingredient:b,CompileComponent:$},props:{step:Object,ingredient_factor:Number,index:Number,recipe:Object,start_time:String},data:function(){return{details_visible:!0,set_time_input:""}},mounted:function(){this.set_time_input=P()(this.start_time).add(this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm")},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)},updateTime:function(){var e=P()(this.set_time_input).add(-1*this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm");this.$emit("update-start-time",e),this.closePopover()},closePopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("close")},openPopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("open")}}},N=A,L=Object(g["a"])(N,l,d,!1,null,null,null),z=L.exports,B=i("fc0d"),D=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("iframe",{staticStyle:{border:"none"},attrs:{src:e.pdfUrl,width:"100%",height:"700px"}})])},T=[],M={name:"PdfViewer",mixins:[p["b"]],props:{recipe:Object},computed:{pdfUrl:function(){return"/static/pdfjs/viewer.html?file="+Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},U=M,V=Object(g["a"])(U,D,T,!1,null,null,null),H=V.exports,F=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticStyle:{"text-align":"center"}},[i("b-img",{attrs:{src:e.pdfUrl,alt:e.$t("External_Recipe_Image")}})],1)},K=[],Z={name:"ImageViewer",props:{recipe:Object},computed:{pdfUrl:function(){return Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},W=Z,J=Object(g["a"])(W,F,K,!1,null,null,null),q=J.exports,G=function(){var e=this,t=e.$createElement,i=e._self._c||t;return null!==e.recipe.nutrition?i("div",[i("div",{staticClass:"card border-success"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-carrot"}),e._v(" "+e._s(e.$t("Nutrition")))])])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-fire fa-fw text-primary"}),e._v(" "+e._s(e.$t("Calories"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.calories))}}),e._v(" kcal ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-bread-slice fa-fw text-primary"}),e._v(" "+e._s(e.$t("Carbohydrates"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.carbohydrates))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-cheese fa-fw text-primary"}),e._v(" "+e._s(e.$t("Fats"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.fats))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-drumstick-bite fa-fw text-primary"}),e._v(" "+e._s(e.$t("Proteins"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.proteins))}}),e._v(" g ")])])])])]):e._e()},X=[],Q={name:"Nutrition",props:{recipe:Object,ingredient_factor:Number},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},Y=Q,ee=Object(g["a"])(Y,G,X,!1,null,null,null),te=ee.exports,ie=i("81d5"),ne=i("d76c"),ae=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_add_book",title:e.$t("Add_to_Book"),"ok-title":e.$t("Add"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.addToBook()}}},[i("multiselect",{attrs:{options:e.books,"preserve-search":!0,placeholder:e.$t("Select_Book"),label:"name","track-by":"id",id:"id_books",multiple:!1},on:{"search-change":e.loadBook},model:{value:e.selected_book,callback:function(t){e.selected_book=t},expression:"selected_book"}})],1)],1)},re=[],se=i("8e5f"),oe=i.n(se);n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ce={name:"AddRecipeToBook",components:{Multiselect:oe.a},props:{recipe:Object},data:function(){return{books:[],selected_book:null}},mounted:function(){this.loadBook("")},methods:{loadBook:function(e){var t=this;Object(c["b"])(e).then((function(e){t.books=e}))},addToBook:function(){Object(c["a"])({recipe:this.recipe.id,book:this.selected_book.id})}}},le=ce,de=(i("60bc"),Object(g["a"])(le,ae,re,!1,null,null,null)),pe=de.exports;n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ue={name:"RecipeView",mixins:[p["b"],p["c"]],components:{PdfViewer:H,ImageViewer:q,Ingredient:b,Step:z,RecipeContextMenu:B["a"],Nutrition:te,Keywords:ie["a"],LoadingSpinner:ne["a"],AddRecipeToBook:pe},computed:{ingredient_factor:function(){return this.servings/this.recipe.servings}},data:function(){return{loading:!0,recipe:void 0,ingredient_count:0,servings:1,start_time:"",share_uid:window.SHARE_UID}},mounted:function(){this.loadRecipe(window.RECIPE_ID),this.$i18n.locale=window.CUSTOM_LOCALE},methods:{loadRecipe:function(e){var t=this;Object(c["c"])(e).then((function(e){0!==window.USER_SERVINGS&&(e.servings=window.USER_SERVINGS),t.servings=e.servings;var i,n=0,a=Object(s["a"])(e.steps);try{for(a.s();!(i=a.n()).done;){var r=i.value;t.ingredient_count+=r.ingredients.length;var o,c=Object(s["a"])(r.ingredients);try{for(c.s();!(o=c.n()).done;){var l=o.value;t.$set(l,"checked",!1)}}catch(d){c.e(d)}finally{c.f()}r.time_offset=n,n+=r.time}}catch(d){a.e(d)}finally{a.f()}n>0&&(t.start_time=P()().format("yyyy-MM-DDTHH:mm")),t.recipe=e,t.loading=!1}))},updateStartTime:function(e){this.start_time=e},updateIngredientCheckedState:function(e){var t,i=Object(s["a"])(this.recipe.steps);try{for(i.s();!(t=i.n()).done;){var n,a=t.value,r=Object(s["a"])(a.ingredients);try{for(r.s();!(n=r.n()).done;){var o=n.value;o.id===e.id&&this.$set(o,"checked",!o.checked)}}catch(c){r.e(c)}finally{r.f()}}}catch(c){i.e(c)}finally{i.f()}}}},fe=ue,_e=Object(g["a"])(fe,a,r,!1,null,null,null),me=_e.exports,ge=i("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:ge["a"],render:function(e){return e(me)}}).$mount("#app")},1:function(e,t,i){e.exports=i("0671")},4678:function(e,t,i){var n={"./af":"2bfb","./af.js":"2bfb","./ar":"8e73","./ar-dz":"a356","./ar-dz.js":"a356","./ar-kw":"423e","./ar-kw.js":"423e","./ar-ly":"1cfd","./ar-ly.js":"1cfd","./ar-ma":"0a84","./ar-ma.js":"0a84","./ar-sa":"8230","./ar-sa.js":"8230","./ar-tn":"6d83","./ar-tn.js":"6d83","./ar.js":"8e73","./az":"485c","./az.js":"485c","./be":"1fc1","./be.js":"1fc1","./bg":"84aa","./bg.js":"84aa","./bm":"a7fa","./bm.js":"a7fa","./bn":"9043","./bn-bd":"9686","./bn-bd.js":"9686","./bn.js":"9043","./bo":"d26a","./bo.js":"d26a","./br":"6887","./br.js":"6887","./bs":"2554","./bs.js":"2554","./ca":"d716","./ca.js":"d716","./cs":"3c0d","./cs.js":"3c0d","./cv":"03ec","./cv.js":"03ec","./cy":"9797","./cy.js":"9797","./da":"0f14","./da.js":"0f14","./de":"b469","./de-at":"b3eb","./de-at.js":"b3eb","./de-ch":"bb71","./de-ch.js":"bb71","./de.js":"b469","./dv":"598a","./dv.js":"598a","./el":"8d47","./el.js":"8d47","./en-au":"0e6b","./en-au.js":"0e6b","./en-ca":"3886","./en-ca.js":"3886","./en-gb":"39a6","./en-gb.js":"39a6","./en-ie":"e1d3","./en-ie.js":"e1d3","./en-il":"7333","./en-il.js":"7333","./en-in":"ec2e","./en-in.js":"ec2e","./en-nz":"6f50","./en-nz.js":"6f50","./en-sg":"b7e9","./en-sg.js":"b7e9","./eo":"65db","./eo.js":"65db","./es":"898b","./es-do":"0a3c","./es-do.js":"0a3c","./es-mx":"b5b7","./es-mx.js":"b5b7","./es-us":"55c9","./es-us.js":"55c9","./es.js":"898b","./et":"ec18","./et.js":"ec18","./eu":"0ff2","./eu.js":"0ff2","./fa":"8df4","./fa.js":"8df4","./fi":"81e9","./fi.js":"81e9","./fil":"d69a","./fil.js":"d69a","./fo":"0721","./fo.js":"0721","./fr":"9f26","./fr-ca":"d9f8","./fr-ca.js":"d9f8","./fr-ch":"0e49","./fr-ch.js":"0e49","./fr.js":"9f26","./fy":"7118","./fy.js":"7118","./ga":"5120","./ga.js":"5120","./gd":"f6b4","./gd.js":"f6b4","./gl":"8840","./gl.js":"8840","./gom-deva":"aaf2","./gom-deva.js":"aaf2","./gom-latn":"0caa","./gom-latn.js":"0caa","./gu":"e0c5","./gu.js":"e0c5","./he":"c7aa","./he.js":"c7aa","./hi":"dc4d","./hi.js":"dc4d","./hr":"4ba9","./hr.js":"4ba9","./hu":"5b14","./hu.js":"5b14","./hy-am":"d6b6","./hy-am.js":"d6b6","./id":"5038","./id.js":"5038","./is":"0558","./is.js":"0558","./it":"6e98","./it-ch":"6f12","./it-ch.js":"6f12","./it.js":"6e98","./ja":"079e","./ja.js":"079e","./jv":"b540","./jv.js":"b540","./ka":"201b","./ka.js":"201b","./kk":"6d79","./kk.js":"6d79","./km":"e81d","./km.js":"e81d","./kn":"3e92","./kn.js":"3e92","./ko":"22f8","./ko.js":"22f8","./ku":"2421","./ku.js":"2421","./ky":"9609","./ky.js":"9609","./lb":"440c","./lb.js":"440c","./lo":"b29d","./lo.js":"b29d","./lt":"26f9","./lt.js":"26f9","./lv":"b97c","./lv.js":"b97c","./me":"293c","./me.js":"293c","./mi":"688b","./mi.js":"688b","./mk":"6909","./mk.js":"6909","./ml":"02fb","./ml.js":"02fb","./mn":"958b","./mn.js":"958b","./mr":"39bd","./mr.js":"39bd","./ms":"ebe4","./ms-my":"6403","./ms-my.js":"6403","./ms.js":"ebe4","./mt":"1b45","./mt.js":"1b45","./my":"8689","./my.js":"8689","./nb":"6ce3","./nb.js":"6ce3","./ne":"3a39","./ne.js":"3a39","./nl":"facd","./nl-be":"db29","./nl-be.js":"db29","./nl.js":"facd","./nn":"b84c","./nn.js":"b84c","./oc-lnc":"167b","./oc-lnc.js":"167b","./pa-in":"f3ff","./pa-in.js":"f3ff","./pl":"8d57","./pl.js":"8d57","./pt":"f260","./pt-br":"d2d4","./pt-br.js":"d2d4","./pt.js":"f260","./ro":"972c","./ro.js":"972c","./ru":"957c","./ru.js":"957c","./sd":"6784","./sd.js":"6784","./se":"ffff","./se.js":"ffff","./si":"eda5","./si.js":"eda5","./sk":"7be6","./sk.js":"7be6","./sl":"8155","./sl.js":"8155","./sq":"c8f3","./sq.js":"c8f3","./sr":"cf1e","./sr-cyrl":"13e9","./sr-cyrl.js":"13e9","./sr.js":"cf1e","./ss":"52bd","./ss.js":"52bd","./sv":"5fbd","./sv.js":"5fbd","./sw":"74dc","./sw.js":"74dc","./ta":"3de5","./ta.js":"3de5","./te":"5cbb","./te.js":"5cbb","./tet":"576c","./tet.js":"576c","./tg":"3b1b","./tg.js":"3b1b","./th":"10e8","./th.js":"10e8","./tk":"5aff","./tk.js":"5aff","./tl-ph":"0f38","./tl-ph.js":"0f38","./tlh":"cf755","./tlh.js":"cf755","./tr":"0e81","./tr.js":"0e81","./tzl":"cf51","./tzl.js":"cf51","./tzm":"c109","./tzm-latn":"b53d","./tzm-latn.js":"b53d","./tzm.js":"c109","./ug-cn":"6117","./ug-cn.js":"6117","./uk":"ada2","./uk.js":"ada2","./ur":"5294","./ur.js":"5294","./uz":"2e8c","./uz-latn":"010e","./uz-latn.js":"010e","./uz.js":"2e8c","./vi":"2921","./vi.js":"2921","./x-pseudo":"fd7e","./x-pseudo.js":"fd7e","./yo":"7f33","./yo.js":"7f33","./zh-cn":"5c3a","./zh-cn.js":"5c3a","./zh-hk":"49ab","./zh-hk.js":"49ab","./zh-mo":"3a6c","./zh-mo.js":"3a6c","./zh-tw":"90ea","./zh-tw.js":"90ea"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="4678"},"49f8":function(e,t,i){var n={"./de.json":"6ce2","./en.json":"edd4","./nl.json":"a625","./sv.json":"4c5b"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="49f8"},"4c5b":function(e){e.exports=JSON.parse('{"import_running":"Import pågår, var god vänta!","all_fields_optional":"Alla rutor är valfria och kan lämnas tomma.","convert_internal":"Konvertera till internt recept","Log_Recipe_Cooking":"Logga tillagningen av receptet","External_Recipe_Image":"Externt receptbild","Add_to_Book":"Lägg till i kokbok","Add_to_Shopping":"Lägg till i handelslista","Add_to_Plan":"Lägg till i matsedel","Step_start_time":"Steg starttid","Select_Book":"Välj kokbok","Recipe_Image":"Receptbild","Import_finished":"Importering klar","View_Recipes":"Visa recept","Log_Cooking":"Logga tillagning","Proteins":"Protein","Fats":"Fett","Carbohydrates":"Kolhydrater","Calories":"Kalorier","Nutrition":"Näringsinnehåll","Date":"Datum","Share":"Dela","Export":"Exportera","Rating":"Betyg","Close":"Stäng","Add":"Lägg till","Ingredients":"Ingredienser","min":"min","Servings":"Portioner","Waiting":"Väntan","Preparation":"Förberedelse","Edit":"Redigera","Open":"Öppna","Save":"Spara","Step":"Steg","Search":"Sök","Import":"Importera","Print":"Skriv ut","Information":"Information"}')},"6ce2":function(e){e.exports=JSON.parse('{"Import":"Import","import_running":"Import läuft, bitte warten!","Import_finished":"Import fertig","View_Recipes":"Rezepte Ansehen","Information":"Information","all_fields_optional":"Alle Felder sind optional und können leer gelassen werden.","convert_internal":"Zu internem Rezept wandeln","Log_Recipe_Cooking":"Kochen protokollieren","External_Recipe_Image":"Externes Rezept Bild","Add_to_Book":"Zu Buch hinzufügen","Add_to_Shopping":"Zu Einkaufsliste hinzufügen","Add_to_Plan":"Zu Plan hinzufügen","Step_start_time":"Schritt Startzeit","Select_Book":"Buch wählen","Recipe_Image":"Rezept Bild","Log_Cooking":"Kochen protokollieren","Proteins":"Proteine","Fats":"Fette","Carbohydrates":"Kohlenhydrate","Calories":"Kalorien","Nutrition":"Nährwerte","Keywords":"Stichwörter","Books":"Bücher","show_only_internal":"Nur interne Rezepte anzeigen","Ingredients":"Zutaten","min":"Min","Servings":"Portionen","Waiting":"Wartezeit","Preparation":"Zubereitung","Edit":"Bearbeiten","Open":"Öffnen","Save":"Speichern","Step":"Schritt","Search":"Suchen","Print":"Drucken","New_Recipe":"Neues Rezept","Url_Import":"URL Import","Reset_Search":"Suche zurücksetzen","or":"oder","and":"und","Recently_Viewed":"Kürzlich angesehen","External":"Extern","Settings":"Einstellungen","Meal_Plan":"Speiseplan","Date":"Datum","Share":"Teilen","Export":"Exportieren","Rating":"Bewertung","Close":"Schließen","Add":"Hinzufügen"}')},"7c15":function(e,t,i){"use strict";i.d(t,"c",(function(){return s})),i.d(t,"d",(function(){return o})),i.d(t,"b",(function(){return c})),i.d(t,"a",(function(){return l}));var n=i("bc3a"),a=i.n(n),r=i("fa7d");function s(e){var t=Object(r["g"])("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),a.a.get(t).then((function(e){return e.data})).catch((function(e){d(e,"There was an error loading a resource!","danger")}))}function o(e){return a.a.post(Object(r["g"])("api:cooklog-list"),e).then((function(e){Object(r["f"])("Saved","Cook Log entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function c(e){return a.a.get(Object(r["g"])("api:recipebook-list")+"?query="+e).then((function(e){return e.data})).catch((function(e){}))}function l(e){return a.a.post(Object(r["g"])("api:recipebookentry-list"),e).then((function(e){Object(r["f"])("Saved","Recipe Book entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function d(e,t){if("response"in e){console.log(e.response);var i="statusText"in e.response?e.response.statusText:Object(r["e"])("Error");t+="\n\n"+JSON.stringify(e.response.data),Object(r["f"])(i,t,"danger")}else Object(r["f"])("Error",t,"danger"),console.log(e)}a.a.defaults.xsrfCookieName="csrftoken",a.a.defaults.xsrfHeaderName="X-CSRFTOKEN"},"81d5":function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.recipe.keywords.length>0?i("div",e._l(e.recipe.keywords,(function(t){return i("span",{key:t.id,staticStyle:{padding:"2px"}},[i("b-badge",{attrs:{pill:"",variant:"light"}},[e._v(e._s(t.label))])],1)})),0):e._e()},a=[],r={name:"Keywords",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},9225:function(e,t,i){"use strict";i("159b"),i("d3b7"),i("ddb0"),i("ac1f"),i("466d");var n=i("a026"),a=i("a925");function r(){var e=i("49f8"),t={};return e.keys().forEach((function(i){var n=i.match(/([A-Za-z0-9-_]+)\./i);if(n&&n.length>1){var a=n[1];t[a]=e(i)}})),t}n["default"].use(a["a"]),t["a"]=new a["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:r()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"row"},[i("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[i("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],r={name:"LoadingSpinner",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","err_deleting_resource":"There was an error deleting a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","success_deleting_resource":"Successfully deleted a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Load_More":"Load More","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Cancel":"Cancel","Delete":"Delete","Open":"Open","Ok":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,i){"use strict";i.d(t,"c",(function(){return r})),i.d(t,"f",(function(){return s})),i.d(t,"a",(function(){return o})),i.d(t,"e",(function(){return c})),i.d(t,"b",(function(){return l})),i.d(t,"g",(function(){return d})),i.d(t,"d",(function(){return u}));i("99af");var n=i("59e4");function a(e,t,i){var n=Math.floor(e),a=1,r=n+1,s=1;if(e!==n)while(a<=t&&s<=t){var o=(n+r)/(a+s);if(e===o){a+s<=t?(a+=s,n+=r,s=t+1):a>s?s=t+1:a=t+1;break}et&&(a=s,n=r),!i)return[0,n,a];var c=Math.floor(n/a);return[c,n-c*a,a]}var r={methods:{makeToast:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return s(e,t,i)}}};function s(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=new n["a"];a.$bvToast.toast(t,{title:e,variant:i,toaster:"b-toaster-top-center",solid:!0})}var o={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var l={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function u(e,t){if(p("use_fractions")){var i="",n=a(e*t,9,!0);return n[0]>0&&(i+=n[0]),n[1]>0&&(i+=" ".concat(n[1],"").concat(n[2],"")),i}return f(e*t)}function f(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fc0d:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("div",{staticClass:"dropdown"},[e._m(0),i("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e.$t("Edit")))]),e.recipe.internal?e._e():i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e.$t("convert_internal")))]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_add_book")}}},[i("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Book"))+" ")]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Shopping"))+" ")]):e._e(),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?recipe="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Plan"))+" ")]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[i("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e.$t("Log_Cooking"))+" ")]),i("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[i("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e.$t("Print"))+" ")]),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e.$t("Export")))]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e.$t("Share")))]):e._e()])]),i("cook-log",{attrs:{recipe:e.recipe}})],1)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[i("i",{staticClass:"fas fa-ellipsis-v"})])}],r=(i("a9e3"),i("fa7d")),s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e.$t("Log_Recipe_Cooking"),"ok-title":e.$t("Save"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.logCook()}}},[i("p",[e._v(e._s(e.$t("all_fields_optional")))]),i("form",[i("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e.$t("Servings")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),i("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e.$t("Rating"))+" - "),i("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),i("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),i("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e.$t("Date")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},o=[],c=i("c1df"),l=i.n(c),d=i("a026"),p=i("5f5b"),u=i("7c15");d["default"].prototype.moment=l.a,d["default"].use(p["a"]);var f={name:"CookLog",props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:l()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){Object(u["d"])(this.logObject)}}},_=f,m=i("2877"),g=Object(m["a"])(_,s,o,!1,null,null,null),v=g.exports,b={name:"RecipeContextMenu",mixins:[r["b"]],components:{CookLog:v},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},h=b,j=Object(m["a"])(h,n,a,!1,null,null,null);t["a"]=j.exports}}); \ No newline at end of file diff --git a/cookbook/urls.py b/cookbook/urls.py index 1b0560436..011cbb6a3 100644 --- a/cookbook/urls.py +++ b/cookbook/urls.py @@ -64,6 +64,7 @@ urlpatterns = [ path('history/', views.history, name='view_history'), path('supermarket/', views.supermarket, name='view_supermarket'), path('files/', views.files, name='view_files'), + path('abuse/', views.report_share_abuse, name='view_report_share_abuse'), path('test/', views.test, name='view_test'), path('test2/', views.test2, name='view_test2'), diff --git a/cookbook/views/views.py b/cookbook/views/views.py index 350ff8878..896df38fe 100644 --- a/cookbook/views/views.py +++ b/cookbook/views/views.py @@ -30,7 +30,7 @@ from cookbook.forms import (CommentForm, Recipe, RecipeBookEntryForm, User, from cookbook.helper.permission_helper import group_required, share_link_valid, has_group_permission from cookbook.models import (Comment, CookLog, InviteLink, MealPlan, RecipeBook, RecipeBookEntry, ViewLog, ShoppingList, Space, Keyword, RecipeImport, Unit, - Food, UserFile) + Food, UserFile, ShareLink) from cookbook.tables import (CookLogTable, RecipeTable, RecipeTableSmall, ViewLogTable, InviteLinkTable) from cookbook.views.data import Object @@ -122,7 +122,8 @@ def no_space(request): request.user.userpreference.save() request.user.groups.add(Group.objects.filter(name='admin').get()) - messages.add_message(request, messages.SUCCESS, _('You have successfully created your own recipe space. Start by adding some recipes or invite other people to join you.')) + messages.add_message(request, messages.SUCCESS, + _('You have successfully created your own recipe space. Start by adding some recipes or invite other people to join you.')) return HttpResponseRedirect(reverse('index')) if join_form.is_valid(): @@ -239,10 +240,12 @@ def supermarket(request): @group_required('user') def files(request): try: - current_file_size_mb = UserFile.objects.filter(space=request.space).aggregate(Sum('file_size_kb'))['file_size_kb__sum'] / 1000 + current_file_size_mb = UserFile.objects.filter(space=request.space).aggregate(Sum('file_size_kb'))[ + 'file_size_kb__sum'] / 1000 except TypeError: current_file_size_mb = 0 - return render(request, 'files.html', {'current_file_size_mb': current_file_size_mb, 'max_file_size_mb': request.space.max_file_storage_mb}) + return render(request, 'files.html', + {'current_file_size_mb': current_file_size_mb, 'max_file_size_mb': request.space.max_file_storage_mb}) @group_required('user') @@ -264,7 +267,9 @@ def meal_plan_entry(request, pk): @group_required('user') def latest_shopping_list(request): - sl = ShoppingList.objects.filter(Q(created_by=request.user) | Q(shared=request.user)).filter(finished=False, pace=request.space).order_by('-created_at').first() + sl = ShoppingList.objects.filter(Q(created_by=request.user) | Q(shared=request.user)).filter(finished=False, + pace=request.space).order_by( + '-created_at').first() if sl: return HttpResponseRedirect(reverse('view_shopping', kwargs={'pk': sl.pk}) + '?edit=true') @@ -438,7 +443,8 @@ def invite_link(request, token): if link := InviteLink.objects.filter(valid_until__gte=datetime.today(), used_by=None, uuid=token).first(): if request.user.is_authenticated: if request.user.userpreference.space: - messages.add_message(request, messages.WARNING, _('You are already member of a space and therefore cannot join this one.')) + messages.add_message(request, messages.WARNING, + _('You are already member of a space and therefore cannot join this one.')) return HttpResponseRedirect(reverse('index')) link.used_by = request.user @@ -481,7 +487,8 @@ def space(request): counts.recipes_no_keyword = Recipe.objects.filter(keywords=None, space=request.space).count() - invite_links = InviteLinkTable(InviteLink.objects.filter(valid_until__gte=datetime.today(), used_by=None, space=request.space).all()) + invite_links = InviteLinkTable( + InviteLink.objects.filter(valid_until__gte=datetime.today(), used_by=None, space=request.space).all()) RequestConfig(request, paginate={'per_page': 25}).configure(invite_links) return render(request, 'space.html', {'space_users': space_users, 'counts': counts, 'invite_links': invite_links}) @@ -515,6 +522,19 @@ def space_change_member(request, user_id, space_id, group): return HttpResponseRedirect(reverse('view_space')) +def report_share_abuse(request, token): + if not settings.SHARING_ABUSE: + messages.add_message(request, messages.WARNING, + _('Reporting share links is not enabled for this instance. Please notify the page administrator to report problems.')) + else: + if link := ShareLink.objects.filter(uuid=token).first(): + link.abuse_blocked = True + link.save() + messages.add_message(request, messages.WARNING, + _('Recipe sharing link has been disabled! For additional information please contact the page administrator.')) + return HttpResponseRedirect(reverse('index')) + + def markdown_info(request): return render(request, 'markdown_info.html', {}) diff --git a/recipes/settings.py b/recipes/settings.py index 6d86fa117..6fa021ec0 100644 --- a/recipes/settings.py +++ b/recipes/settings.py @@ -67,6 +67,9 @@ DJANGO_TABLES2_PAGE_RANGE = 8 HCAPTCHA_SITEKEY = os.getenv('HCAPTCHA_SITEKEY', '') HCAPTCHA_SECRET = os.getenv('HCAPTCHA_SECRET', '') +SHARING_ABUSE = bool(int(os.getenv('SHARING_ABUSE', False))) +SHARING_LIMIT = int(os.getenv('SHARING_LIMIT', 0)) + ACCOUNT_SIGNUP_FORM_CLASS = 'cookbook.forms.AllAuthSignupForm' TERMS_URL = os.getenv('TERMS_URL', '') diff --git a/vue/src/apps/RecipeView/RecipeView.vue b/vue/src/apps/RecipeView/RecipeView.vue index 54fe3ba81..d2708f97e 100644 --- a/vue/src/apps/RecipeView/RecipeView.vue +++ b/vue/src/apps/RecipeView/RecipeView.vue @@ -134,6 +134,14 @@
+ + + +
@@ -191,7 +199,8 @@ export default { recipe: undefined, ingredient_count: 0, servings: 1, - start_time: "" + start_time: "", + share_uid: window.SHARE_UID } }, mounted() { From 24e4ea354dfed727112015cc4c2d5fea86f779c4 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Sun, 13 Jun 2021 16:55:27 +0200 Subject: [PATCH 33/97] catch all exception image import --- cookbook/views/data.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cookbook/views/data.py b/cookbook/views/data.py index 52c2fb4ee..caa4f55d0 100644 --- a/cookbook/views/data.py +++ b/cookbook/views/data.py @@ -204,6 +204,8 @@ def import_url(request): pass except MissingSchema: pass + except: + pass return HttpResponse(reverse('view_recipe', args=[recipe.pk])) From 0b3e86f6fd393d0f7efac5090538c05d1395cfa1 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Sun, 13 Jun 2021 17:04:52 +0200 Subject: [PATCH 34/97] imprioved recipe print view --- cookbook/static/vue/js/recipe_search_view.js | 2 +- cookbook/static/vue/js/recipe_view.js | 2 +- vue/src/apps/RecipeView/RecipeView.vue | 2 +- vue/src/components/Ingredient.vue | 4 ++-- vue/src/components/RecipeContextMenu.vue | 2 +- vue/src/components/Step.vue | 4 ++-- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cookbook/static/vue/js/recipe_search_view.js b/cookbook/static/vue/js/recipe_search_view.js index fc8088099..69120021f 100644 --- a/cookbook/static/vue/js/recipe_search_view.js +++ b/cookbook/static/vue/js/recipe_search_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var n,a,s=t[0],c=t[1],u=t[2],p=0,h=[];pnew Date(Date.now()-6048e5)?r("b-badge",{attrs:{pill:"",variant:"success"}},[e._v(e._s(e.$t("New")))]):e._e()]:[e._v(e._s(e.meal_plan.note))]],2)],1),void 0!==e.footer_text?r("b-card-footer",[r("i",{class:e.footer_icon}),e._v(" "+e._s(e.footer_text)+" ")]):e._e()],1)},O=[],v=r("fc0d"),g=r("81d5"),m={name:"RecipeCard",mixins:[l["b"]],components:{Keywords:g["a"],RecipeContextMenu:v["a"]},props:{recipe:Object,meal_plan:Object,footer_text:String,footer_icon:String},data:function(){return{recipe_image:""}},mounted:function(){null==this.recipe||null===this.recipe.image?this.recipe_image=window.IMAGE_PLACEHOLDER:this.recipe_image=this.recipe.image},methods:{clickUrl:function(){return null!==this.recipe?Object(l["g"])("view_recipe",this.recipe.id):Object(l["g"])("view_plan_entry",this.meal_plan.id)}}},y=m,S=r("2877"),P=Object(S["a"])(y,j,O,!1,null,"2bdfc3cc",null),U=P.exports,w=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("multiselect",{attrs:{options:e.objects,"close-on-select":!0,"clear-on-select":!0,"hide-selected":!0,"preserve-search":!0,placeholder:e.placeholder,label:e.label,"track-by":"id",multiple:!0,loading:e.loading},on:{"search-change":e.search,input:e.selectionChanged},model:{value:e.selected_objects,callback:function(t){e.selected_objects=t},expression:"selected_objects"}})},k=[],R=r("8e5f"),L=r.n(R),_={name:"GenericMultiselect",components:{Multiselect:L.a},data:function(){return{loading:!1,objects:[],selected_objects:[]}},props:{placeholder:String,search_function:String,label:String,parent_variable:String,initial_selection:Array},watch:{initial_selection:function(e,t){this.selected_objects=e}},mounted:function(){this.search("")},methods:{search:function(e){var t=this,r=new f["a"];r[this.search_function]({query:{query:e,limit:10}}).then((function(e){t.objects=e.data}))},selectionChanged:function(){this.$emit("change",{var:this.parent_variable,val:this.selected_objects})}}},C=_,I=Object(S["a"])(C,w,k,!1,null,"20923c58",null),T=I.exports;n["default"].use(b.a),n["default"].use(s["a"]);var E={name:"RecipeSearchView",mixins:[l["b"]],components:{GenericMultiselect:T,RecipeCard:U},data:function(){return{recipes:[],meal_plans:[],last_viewed_recipes:[],settings:{search_input:"",search_internal:!1,search_keywords:[],search_foods:[],search_books:[],search_keywords_or:!0,search_foods_or:!0,search_books_or:!0,advanced_search_visible:!1,show_meal_plan:!0,recently_viewed:5},pagination_more:!0,pagination_page:1}},mounted:function(){this.$nextTick((function(){var e=this;this.$cookies.isKey("search_settings_v2")&&(this.settings=this.$cookies.get("search_settings_v2"));var t=new URLSearchParams(window.location.search),r=new f["a"];if(t.has("keyword")){this.settings.search_keywords=[];var n,i=Object(a["a"])(t.getAll("keyword"));try{var o=function(){var t=n.value,i={id:t,name:"loading"};e.settings.search_keywords.push(i),r.retrieveKeyword(t).then((function(t){e.$set(e.settings.search_keywords,e.settings.search_keywords.indexOf(i),t.data)}))};for(i.s();!(n=i.n()).done;)o()}catch(s){i.e(s)}finally{i.f()}}this.loadMealPlan(),this.loadRecentlyViewed(),this.refreshData(!1)})),this.$i18n.locale=window.CUSTOM_LOCALE},watch:{settings:{handler:function(){this.$cookies.set("search_settings_v2",this.settings,-1)},deep:!0},"settings.show_meal_plan":function(){this.loadMealPlan()},"settings.recently_viewed":function(){this.loadRecentlyViewed()},"settings.search_input":p()((function(){this.refreshData(!1)}),300)},methods:{refreshData:function(e){var t=this,r=new f["a"];r.listRecipes(this.settings.search_input,this.settings.search_keywords.map((function(e){return e["id"]})),this.settings.search_foods.map((function(e){return e["id"]})),this.settings.search_books.map((function(e){return e["id"]})),this.settings.search_keywords_or,this.settings.search_foods_or,this.settings.search_books_or,this.settings.search_internal,void 0,this.pagination_page).then((function(r){if(t.pagination_more=null!==r.data.next,e){var n,i=Object(a["a"])(r.data.results);try{for(i.s();!(n=i.n()).done;){var o=n.value;t.recipes.push(o)}}catch(s){i.e(s)}finally{i.f()}}else t.recipes=r.data.results}))},loadMealPlan:function(){var e=this,t=new f["a"];this.settings.show_meal_plan?t.listMealPlans({query:{from_date:u()().format("YYYY-MM-DD"),to_date:u()().format("YYYY-MM-DD")}}).then((function(t){e.meal_plans=t.data})):this.meal_plans=[]},loadRecentlyViewed:function(){var e=this,t=new f["a"];this.settings.recently_viewed>0?t.listRecipes(void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,{query:{last_viewed:this.settings.recently_viewed}}).then((function(t){e.last_viewed_recipes=t.data.results})):this.last_viewed_recipes=[]},genericSelectChanged:function(e){this.settings[e.var]=e.val,this.refreshData(!1)},resetSearch:function(){this.settings.search_input="",this.settings.search_internal=!1,this.settings.search_keywords=[],this.settings.search_foods=[],this.settings.search_books=[],this.refreshData(!1)},loadMore:function(e){this.pagination_page++,this.refreshData(!0)}}},x=E,B=(r("60bc"),Object(S["a"])(x,i,o,!1,null,null,null)),q=B.exports,M=r("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:M["a"],render:function(e){return e(q)}}).$mount("#app")},"6ce2":function(e){e.exports=JSON.parse('{"Import":"Import","import_running":"Import läuft, bitte warten!","Import_finished":"Import fertig","View_Recipes":"Rezepte Ansehen","Information":"Information","all_fields_optional":"Alle Felder sind optional und können leer gelassen werden.","convert_internal":"Zu internem Rezept wandeln","Log_Recipe_Cooking":"Kochen protokollieren","External_Recipe_Image":"Externes Rezept Bild","Add_to_Book":"Zu Buch hinzufügen","Add_to_Shopping":"Zu Einkaufsliste hinzufügen","Add_to_Plan":"Zu Plan hinzufügen","Step_start_time":"Schritt Startzeit","Select_Book":"Buch wählen","Recipe_Image":"Rezept Bild","Log_Cooking":"Kochen protokollieren","Proteins":"Proteine","Fats":"Fette","Carbohydrates":"Kohlenhydrate","Calories":"Kalorien","Nutrition":"Nährwerte","Keywords":"Stichwörter","Books":"Bücher","show_only_internal":"Nur interne Rezepte anzeigen","Ingredients":"Zutaten","min":"Min","Servings":"Portionen","Waiting":"Wartezeit","Preparation":"Zubereitung","Edit":"Bearbeiten","Open":"Öffnen","Save":"Speichern","Step":"Schritt","Search":"Suchen","Print":"Drucken","New_Recipe":"Neues Rezept","Url_Import":"URL Import","Reset_Search":"Suche zurücksetzen","or":"oder","and":"und","Recently_Viewed":"Kürzlich angesehen","External":"Extern","Settings":"Einstellungen","Meal_Plan":"Speiseplan","Date":"Datum","Share":"Teilen","Export":"Exportieren","Rating":"Bewertung","Close":"Schließen","Add":"Hinzufügen"}')},"7c15":function(e,t,r){"use strict";r.d(t,"c",(function(){return a})),r.d(t,"d",(function(){return s})),r.d(t,"b",(function(){return c})),r.d(t,"a",(function(){return u}));var n=r("bc3a"),i=r.n(n),o=r("fa7d");function a(e){var t=Object(o["g"])("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),i.a.get(t).then((function(e){return e.data})).catch((function(e){d(e,"There was an error loading a resource!","danger")}))}function s(e){return i.a.post(Object(o["g"])("api:cooklog-list"),e).then((function(e){Object(o["f"])("Saved","Cook Log entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function c(e){return i.a.get(Object(o["g"])("api:recipebook-list")+"?query="+e).then((function(e){return e.data})).catch((function(e){}))}function u(e){return i.a.post(Object(o["g"])("api:recipebookentry-list"),e).then((function(e){Object(o["f"])("Saved","Recipe Book entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function d(e,t){if("response"in e){console.log(e.response);var r="statusText"in e.response?e.response.statusText:Object(o["e"])("Error");t+="\n\n"+JSON.stringify(e.response.data),Object(o["f"])(r,t,"danger")}else Object(o["f"])("Error",t,"danger"),console.log(e)}i.a.defaults.xsrfCookieName="csrftoken",i.a.defaults.xsrfHeaderName="X-CSRFTOKEN"},"81d5":function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return e.recipe.keywords.length>0?r("div",e._l(e.recipe.keywords,(function(t){return r("span",{key:t.id,staticStyle:{padding:"2px"}},[r("b-badge",{attrs:{pill:"",variant:"light"}},[e._v(e._s(t.label))])],1)})),0):e._e()},i=[],o={name:"Keywords",props:{recipe:Object}},a=o,s=r("2877"),c=Object(s["a"])(a,n,i,!1,null,null,null);t["a"]=c.exports},9225:function(e,t,r){"use strict";r("159b"),r("d3b7"),r("ddb0"),r("ac1f"),r("466d");var n=r("a026"),i=r("a925");function o(){var e=r("49f8"),t={};return e.keys().forEach((function(r){var n=r.match(/([A-Za-z0-9-_]+)\./i);if(n&&n.length>1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"row"},[r("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[r("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],o={name:"LoadingSpinner",props:{recipe:Object}},a=o,s=r("2877"),c=Object(s["a"])(a,n,i,!1,null,null,null);t["a"]=c.exports},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","err_deleting_resource":"There was an error deleting a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","success_deleting_resource":"Successfully deleted a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Load_More":"Load More","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Cancel":"Cancel","Delete":"Delete","Open":"Open","Ok":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return s})),r.d(t,"e",(function(){return c})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var s=(n+o)/(i+a);if(e===s){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var c=Math.floor(n/i);return[c,n-c*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var s={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fc0d:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("div",{staticClass:"dropdown"},[e._m(0),r("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[r("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e.$t("Edit")))]),e.recipe.internal?e._e():r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[r("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e.$t("convert_internal")))]),r("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_add_book")}}},[r("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Book"))+" ")]),e.recipe.internal?r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Shopping"))+" ")]):e._e(),r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?recipe="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Plan"))+" ")]),r("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[r("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e.$t("Log_Cooking"))+" ")]),r("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[r("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e.$t("Print"))+" ")]),r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e.$t("Export")))]),e.recipe.internal?r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e.$t("Share")))]):e._e()])]),r("cook-log",{attrs:{recipe:e.recipe}})],1)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[r("i",{staticClass:"fas fa-ellipsis-v"})])}],o=(r("a9e3"),r("fa7d")),a=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e.$t("Log_Recipe_Cooking"),"ok-title":e.$t("Save"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.logCook()}}},[r("p",[e._v(e._s(e.$t("all_fields_optional")))]),r("form",[r("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e.$t("Servings")))]),r("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),r("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e.$t("Rating"))+" - "),r("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),r("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),r("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e.$t("Date")))]),r("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},s=[],c=r("c1df"),u=r.n(c),d=r("a026"),p=r("5f5b"),h=r("7c15");d["default"].prototype.moment=u.a,d["default"].use(p["a"]);var b={name:"CookLog",props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:u()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){Object(h["d"])(this.logObject)}}},l=b,f=r("2877"),j=Object(f["a"])(l,a,s,!1,null,null,null),O=j.exports,v={name:"RecipeContextMenu",mixins:[o["b"]],components:{CookLog:O},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},g=v,m=Object(f["a"])(g,n,i,!1,null,null,null);t["a"]=m.exports}}); \ No newline at end of file +(function(e){function t(t){for(var n,a,s=t[0],c=t[1],u=t[2],p=0,h=[];pnew Date(Date.now()-6048e5)?r("b-badge",{attrs:{pill:"",variant:"success"}},[e._v(e._s(e.$t("New")))]):e._e()]:[e._v(e._s(e.meal_plan.note))]],2)],1),void 0!==e.footer_text?r("b-card-footer",[r("i",{class:e.footer_icon}),e._v(" "+e._s(e.footer_text)+" ")]):e._e()],1)},O=[],v=r("fc0d"),g=r("81d5"),m={name:"RecipeCard",mixins:[l["b"]],components:{Keywords:g["a"],RecipeContextMenu:v["a"]},props:{recipe:Object,meal_plan:Object,footer_text:String,footer_icon:String},data:function(){return{recipe_image:""}},mounted:function(){null==this.recipe||null===this.recipe.image?this.recipe_image=window.IMAGE_PLACEHOLDER:this.recipe_image=this.recipe.image},methods:{clickUrl:function(){return null!==this.recipe?Object(l["g"])("view_recipe",this.recipe.id):Object(l["g"])("view_plan_entry",this.meal_plan.id)}}},y=m,S=r("2877"),P=Object(S["a"])(y,j,O,!1,null,"2bdfc3cc",null),U=P.exports,w=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("multiselect",{attrs:{options:e.objects,"close-on-select":!0,"clear-on-select":!0,"hide-selected":!0,"preserve-search":!0,placeholder:e.placeholder,label:e.label,"track-by":"id",multiple:!0,loading:e.loading},on:{"search-change":e.search,input:e.selectionChanged},model:{value:e.selected_objects,callback:function(t){e.selected_objects=t},expression:"selected_objects"}})},k=[],R=r("8e5f"),L=r.n(R),_={name:"GenericMultiselect",components:{Multiselect:L.a},data:function(){return{loading:!1,objects:[],selected_objects:[]}},props:{placeholder:String,search_function:String,label:String,parent_variable:String,initial_selection:Array},watch:{initial_selection:function(e,t){this.selected_objects=e}},mounted:function(){this.search("")},methods:{search:function(e){var t=this,r=new f["a"];r[this.search_function]({query:{query:e,limit:10}}).then((function(e){t.objects=e.data}))},selectionChanged:function(){this.$emit("change",{var:this.parent_variable,val:this.selected_objects})}}},C=_,I=Object(S["a"])(C,w,k,!1,null,"20923c58",null),T=I.exports;n["default"].use(b.a),n["default"].use(s["a"]);var E={name:"RecipeSearchView",mixins:[l["b"]],components:{GenericMultiselect:T,RecipeCard:U},data:function(){return{recipes:[],meal_plans:[],last_viewed_recipes:[],settings:{search_input:"",search_internal:!1,search_keywords:[],search_foods:[],search_books:[],search_keywords_or:!0,search_foods_or:!0,search_books_or:!0,advanced_search_visible:!1,show_meal_plan:!0,recently_viewed:5},pagination_more:!0,pagination_page:1}},mounted:function(){this.$nextTick((function(){var e=this;this.$cookies.isKey("search_settings_v2")&&(this.settings=this.$cookies.get("search_settings_v2"));var t=new URLSearchParams(window.location.search),r=new f["a"];if(t.has("keyword")){this.settings.search_keywords=[];var n,i=Object(a["a"])(t.getAll("keyword"));try{var o=function(){var t=n.value,i={id:t,name:"loading"};e.settings.search_keywords.push(i),r.retrieveKeyword(t).then((function(t){e.$set(e.settings.search_keywords,e.settings.search_keywords.indexOf(i),t.data)}))};for(i.s();!(n=i.n()).done;)o()}catch(s){i.e(s)}finally{i.f()}}this.loadMealPlan(),this.loadRecentlyViewed(),this.refreshData(!1)})),this.$i18n.locale=window.CUSTOM_LOCALE},watch:{settings:{handler:function(){this.$cookies.set("search_settings_v2",this.settings,-1)},deep:!0},"settings.show_meal_plan":function(){this.loadMealPlan()},"settings.recently_viewed":function(){this.loadRecentlyViewed()},"settings.search_input":p()((function(){this.refreshData(!1)}),300)},methods:{refreshData:function(e){var t=this,r=new f["a"];r.listRecipes(this.settings.search_input,this.settings.search_keywords.map((function(e){return e["id"]})),this.settings.search_foods.map((function(e){return e["id"]})),this.settings.search_books.map((function(e){return e["id"]})),this.settings.search_keywords_or,this.settings.search_foods_or,this.settings.search_books_or,this.settings.search_internal,void 0,this.pagination_page).then((function(r){if(t.pagination_more=null!==r.data.next,e){var n,i=Object(a["a"])(r.data.results);try{for(i.s();!(n=i.n()).done;){var o=n.value;t.recipes.push(o)}}catch(s){i.e(s)}finally{i.f()}}else t.recipes=r.data.results}))},loadMealPlan:function(){var e=this,t=new f["a"];this.settings.show_meal_plan?t.listMealPlans({query:{from_date:u()().format("YYYY-MM-DD"),to_date:u()().format("YYYY-MM-DD")}}).then((function(t){e.meal_plans=t.data})):this.meal_plans=[]},loadRecentlyViewed:function(){var e=this,t=new f["a"];this.settings.recently_viewed>0?t.listRecipes(void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,{query:{last_viewed:this.settings.recently_viewed}}).then((function(t){e.last_viewed_recipes=t.data.results})):this.last_viewed_recipes=[]},genericSelectChanged:function(e){this.settings[e.var]=e.val,this.refreshData(!1)},resetSearch:function(){this.settings.search_input="",this.settings.search_internal=!1,this.settings.search_keywords=[],this.settings.search_foods=[],this.settings.search_books=[],this.refreshData(!1)},loadMore:function(e){this.pagination_page++,this.refreshData(!0)}}},x=E,B=(r("60bc"),Object(S["a"])(x,i,o,!1,null,null,null)),q=B.exports,M=r("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:M["a"],render:function(e){return e(q)}}).$mount("#app")},"6ce2":function(e){e.exports=JSON.parse('{"Import":"Import","import_running":"Import läuft, bitte warten!","Import_finished":"Import fertig","View_Recipes":"Rezepte Ansehen","Information":"Information","all_fields_optional":"Alle Felder sind optional und können leer gelassen werden.","convert_internal":"Zu internem Rezept wandeln","Log_Recipe_Cooking":"Kochen protokollieren","External_Recipe_Image":"Externes Rezept Bild","Add_to_Book":"Zu Buch hinzufügen","Add_to_Shopping":"Zu Einkaufsliste hinzufügen","Add_to_Plan":"Zu Plan hinzufügen","Step_start_time":"Schritt Startzeit","Select_Book":"Buch wählen","Recipe_Image":"Rezept Bild","Log_Cooking":"Kochen protokollieren","Proteins":"Proteine","Fats":"Fette","Carbohydrates":"Kohlenhydrate","Calories":"Kalorien","Nutrition":"Nährwerte","Keywords":"Stichwörter","Books":"Bücher","show_only_internal":"Nur interne Rezepte anzeigen","Ingredients":"Zutaten","min":"Min","Servings":"Portionen","Waiting":"Wartezeit","Preparation":"Zubereitung","Edit":"Bearbeiten","Open":"Öffnen","Save":"Speichern","Step":"Schritt","Search":"Suchen","Print":"Drucken","New_Recipe":"Neues Rezept","Url_Import":"URL Import","Reset_Search":"Suche zurücksetzen","or":"oder","and":"und","Recently_Viewed":"Kürzlich angesehen","External":"Extern","Settings":"Einstellungen","Meal_Plan":"Speiseplan","Date":"Datum","Share":"Teilen","Export":"Exportieren","Rating":"Bewertung","Close":"Schließen","Add":"Hinzufügen"}')},"7c15":function(e,t,r){"use strict";r.d(t,"c",(function(){return a})),r.d(t,"d",(function(){return s})),r.d(t,"b",(function(){return c})),r.d(t,"a",(function(){return u}));var n=r("bc3a"),i=r.n(n),o=r("fa7d");function a(e){var t=Object(o["g"])("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),i.a.get(t).then((function(e){return e.data})).catch((function(e){d(e,"There was an error loading a resource!","danger")}))}function s(e){return i.a.post(Object(o["g"])("api:cooklog-list"),e).then((function(e){Object(o["f"])("Saved","Cook Log entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function c(e){return i.a.get(Object(o["g"])("api:recipebook-list")+"?query="+e).then((function(e){return e.data})).catch((function(e){}))}function u(e){return i.a.post(Object(o["g"])("api:recipebookentry-list"),e).then((function(e){Object(o["f"])("Saved","Recipe Book entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function d(e,t){if("response"in e){console.log(e.response);var r="statusText"in e.response?e.response.statusText:Object(o["e"])("Error");t+="\n\n"+JSON.stringify(e.response.data),Object(o["f"])(r,t,"danger")}else Object(o["f"])("Error",t,"danger"),console.log(e)}i.a.defaults.xsrfCookieName="csrftoken",i.a.defaults.xsrfHeaderName="X-CSRFTOKEN"},"81d5":function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return e.recipe.keywords.length>0?r("div",e._l(e.recipe.keywords,(function(t){return r("span",{key:t.id,staticStyle:{padding:"2px"}},[r("b-badge",{attrs:{pill:"",variant:"light"}},[e._v(e._s(t.label))])],1)})),0):e._e()},i=[],o={name:"Keywords",props:{recipe:Object}},a=o,s=r("2877"),c=Object(s["a"])(a,n,i,!1,null,null,null);t["a"]=c.exports},9225:function(e,t,r){"use strict";r("159b"),r("d3b7"),r("ddb0"),r("ac1f"),r("466d");var n=r("a026"),i=r("a925");function o(){var e=r("49f8"),t={};return e.keys().forEach((function(r){var n=r.match(/([A-Za-z0-9-_]+)\./i);if(n&&n.length>1){var i=n[1];t[i]=e(r)}})),t}n["default"].use(i["a"]),t["a"]=new i["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:o()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"row"},[r("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[r("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],o={name:"LoadingSpinner",props:{recipe:Object}},a=o,s=r("2877"),c=Object(s["a"])(a,n,i,!1,null,null,null);t["a"]=c.exports},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","err_deleting_resource":"There was an error deleting a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","success_deleting_resource":"Successfully deleted a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Load_More":"Load More","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Cancel":"Cancel","Delete":"Delete","Open":"Open","Ok":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"f",(function(){return a})),r.d(t,"a",(function(){return s})),r.d(t,"e",(function(){return c})),r.d(t,"b",(function(){return u})),r.d(t,"g",(function(){return d})),r.d(t,"d",(function(){return h}));r("99af");var n=r("59e4");function i(e,t,r){var n=Math.floor(e),i=1,o=n+1,a=1;if(e!==n)while(i<=t&&a<=t){var s=(n+o)/(i+a);if(e===s){i+a<=t?(i+=a,n+=o,a=t+1):i>a?a=t+1:i=t+1;break}et&&(i=a,n=o),!r)return[0,n,i];var c=Math.floor(n/i);return[c,n-c*i,i]}var o={methods:{makeToast:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return a(e,t,r)}}};function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new n["a"];i.$bvToast.toast(t,{title:e,variant:r,toaster:"b-toaster-top-center",solid:!0})}var s={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var u={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function h(e,t){if(p("use_fractions")){var r="",n=i(e*t,9,!0);return n[0]>0&&(r+=n[0]),n[1]>0&&(r+=" ".concat(n[1],"").concat(n[2],"")),r}return b(e*t)}function b(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fc0d:function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("div",{staticClass:"dropdown d-print-none"},[e._m(0),r("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[r("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e.$t("Edit")))]),e.recipe.internal?e._e():r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[r("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e.$t("convert_internal")))]),r("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_add_book")}}},[r("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Book"))+" ")]),e.recipe.internal?r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Shopping"))+" ")]):e._e(),r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?recipe="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Plan"))+" ")]),r("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[r("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e.$t("Log_Cooking"))+" ")]),r("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[r("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e.$t("Print"))+" ")]),r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e.$t("Export")))]),e.recipe.internal?r("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[r("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e.$t("Share")))]):e._e()])]),r("cook-log",{attrs:{recipe:e.recipe}})],1)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[r("i",{staticClass:"fas fa-ellipsis-v"})])}],o=(r("a9e3"),r("fa7d")),a=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e.$t("Log_Recipe_Cooking"),"ok-title":e.$t("Save"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.logCook()}}},[r("p",[e._v(e._s(e.$t("all_fields_optional")))]),r("form",[r("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e.$t("Servings")))]),r("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),r("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e.$t("Rating"))+" - "),r("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),r("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),r("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e.$t("Date")))]),r("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},s=[],c=r("c1df"),u=r.n(c),d=r("a026"),p=r("5f5b"),h=r("7c15");d["default"].prototype.moment=u.a,d["default"].use(p["a"]);var b={name:"CookLog",props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:u()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){Object(h["d"])(this.logObject)}}},l=b,f=r("2877"),j=Object(f["a"])(l,a,s,!1,null,null,null),O=j.exports,v={name:"RecipeContextMenu",mixins:[o["b"]],components:{CookLog:O},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},g=v,m=Object(f["a"])(g,n,i,!1,null,null,null);t["a"]=m.exports}}); \ No newline at end of file diff --git a/cookbook/static/vue/js/recipe_view.js b/cookbook/static/vue/js/recipe_view.js index 64158707e..8df00f372 100644 --- a/cookbook/static/vue/js/recipe_view.js +++ b/cookbook/static/vue/js/recipe_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var n,s,o=t[0],c=t[1],l=t[2],p=0,u=[];p0?i("div",{staticClass:"col-md-6 order-md-1 col-sm-12 order-sm-2 col-12 order-2"},[i("div",{staticClass:"card border-primary"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-pepper-hot"}),e._v(" "+e._s(e.$t("Ingredients")))])])]),i("br"),i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-12"},[i("table",{staticClass:"table table-sm"},[e._l(e.recipe.steps,(function(t){return[e._l(t.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":e.updateIngredientCheckedState}})]}))]}))],2)])])])])]):e._e(),i("div",{staticClass:"col-12 order-1 col-sm-12 order-sm-1 col-md-6 order-md-2"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[null!==e.recipe.image?i("img",{staticClass:"img img-fluid rounded",staticStyle:{"max-height":"30vh"},attrs:{src:e.recipe.image,alt:e.$t("Recipe_Image")}}):e._e()])]),i("div",{staticClass:"row",staticStyle:{"margin-top":"2vh","margin-bottom":"2vh"}},[i("div",{staticClass:"col-12"},[i("Nutrition",{attrs:{recipe:e.recipe,ingredient_factor:e.ingredient_factor}})],1)])])]),e.recipe.internal?e._e():[e.recipe.file_path.includes(".pdf")?i("div",[i("PdfViewer",{attrs:{recipe:e.recipe}})],1):e._e(),e.recipe.file_path.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")||e.recipe.file_path.includes(".gif")?i("div",[i("ImageViewer",{attrs:{recipe:e.recipe}})],1):e._e()],e._l(e.recipe.steps,(function(t,n){return i("div",{key:t.id,staticStyle:{"margin-top":"1vh"}},[i("Step",{attrs:{recipe:e.recipe,step:t,ingredient_factor:e.ingredient_factor,index:n,start_time:e.start_time},on:{"update-start-time":e.updateStartTime,"checked-state-changed":e.updateIngredientCheckedState}})],1)}))],2),i("add-recipe-to-book",{attrs:{recipe:e.recipe}}),""!==e.share_uid?i("div",{staticClass:"row text-center",staticStyle:{"margin-top":"3vh","margin-bottom":"3vh"}},[i("div",{staticClass:"col col-md-12"},[i("a",{attrs:{href:e.resolveDjangoUrl("view_report_share_abuse",e.share_uid)}},[e._v(e._s(e.$t("Report Abuse")))])])]):e._e()],2)},r=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-user-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"far fa-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-pizza-slice fa-2x text-primary"})])}],s=i("b85c"),o=i("5f5b"),c=(i("2dd8"),i("7c15")),l=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("hr"),"TEXT"===e.step.type?[e.recipe.steps.length>1?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h5",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))],0!==e.step.time?i("small",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fas fa-user-clock"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min"))+" ")]):e._e(),""!==e.start_time?i("small",{staticClass:"d-print-none"},[i("b-link",{attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")])],1):e._e()],2)]),i("div",{staticClass:"col col-md-4",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]):e._e(),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[i("div",{staticClass:"row"},[e.step.ingredients.length>0&&e.recipe.steps.length>1?i("div",{staticClass:"col col-md-4"},[i("table",{staticClass:"table table-sm"},[e._l(e.step.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":function(i){return e.$emit("checked-state-changed",t)}}})]}))],2)]):e._e(),i("div",{staticClass:"col",class:{"col-md-8":e.recipe.steps.length>1,"col-md-12":e.recipe.steps.length<=1}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)])])]:e._e(),"TIME"===e.step.type||"FILE"===e.step.type?[i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-8 offset-md-2",staticStyle:{"text-align":"center"}},[i("h4",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))]],2),0!==e.step.time?i("span",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fa fa-stopwatch"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min")))]):e._e(),""!==e.start_time?i("b-link",{staticClass:"d-print-none",attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")]):e._e()],1),i("div",{staticClass:"col-md-2",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[""!==e.step.instruction?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-12",staticStyle:{"text-align":"center"}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)]):e._e()])]:e._e(),i("div",{staticClass:"row",staticStyle:{"text-align":"center"}},[i("div",{staticClass:"col col-md-12"},[null!==e.step.file?[e.step.file.file.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")||e.recipe.file_path.includes(".gif")?i("div",[i("img",{staticStyle:{"max-width":"50vw","max-height":"50vh"},attrs:{src:e.step.file.file}})]):i("div",[i("a",{attrs:{href:e.step.file.file,target:"_blank",rel:"noreferrer nofollow"}},[e._v(e._s(e.$t("Download"))+" "+e._s(e.$t("File")))])])]:e._e()],2)]),""!==e.start_time?i("div",[i("b-popover",{ref:"id_reactive_popover_"+e.step.id,attrs:{target:"id_reactive_popover_"+e.step.id,triggers:"click",placement:"bottom",title:e.$t("Step start time")}},[i("div",[i("b-form-group",{staticClass:"mb-1",attrs:{label:"Time","label-for":"popover-input-1","label-cols":"3"}},[i("b-form-input",{attrs:{type:"datetime-local",id:"popover-input-1",size:"sm"},model:{value:e.set_time_input,callback:function(t){e.set_time_input=t},expression:"set_time_input"}})],1)],1),i("div",{staticClass:"row",staticStyle:{"margin-top":"1vh"}},[i("div",{staticClass:"col-12",staticStyle:{"text-align":"right"}},[i("b-button",{staticStyle:{"margin-right":"8px"},attrs:{size:"sm",variant:"secondary"},on:{click:e.closePopover}},[e._v("Cancel")]),i("b-button",{attrs:{size:"sm",variant:"primary"},on:{click:e.updateTime}},[e._v("Ok")])],1)])])],1):e._e()],2)},d=[],p=(i("a9e3"),i("fa7d")),u=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("tr",{on:{click:function(t){return e.$emit("checked-state-changed",e.ingredient)}}},[e.ingredient.is_header?[i("td",{attrs:{colspan:"5"}},[i("b",[e._v(e._s(e.ingredient.note))])])]:[i("td",[e.ingredient.checked?i("i",{staticClass:"far fa-check-circle text-success"}):e._e(),e.ingredient.checked?e._e():i("i",{staticClass:"far fa-check-circle text-primary"})]),i("td",[0!==e.ingredient.amount?i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.ingredient.amount))}}):e._e()]),i("td",[null===e.ingredient.unit||e.ingredient.no_amount?e._e():i("span",[e._v(e._s(e.ingredient.unit.name))])]),i("td",[null!==e.ingredient.food?[null!==e.ingredient.food.recipe?i("a",{attrs:{href:e.resolveDjangoUrl("view_recipe",e.ingredient.food.recipe),target:"_blank",rel:"noopener noreferrer"}},[e._v(e._s(e.ingredient.food.name))]):e._e(),null===e.ingredient.food.recipe?i("span",[e._v(e._s(e.ingredient.food.name))]):e._e()]:e._e()],2),i("td",[e.ingredient.note?i("div",[i("span",{directives:[{name:"b-popover",rawName:"v-b-popover.hover",value:e.ingredient.note,expression:"ingredient.note",modifiers:{hover:!0}}],staticClass:"d-print-none"},[i("i",{staticClass:"far fa-comment"})]),i("div",{staticClass:"d-none d-print-block"},[i("i",{staticClass:"far fa-comment-alt"}),e._v(" "+e._s(e.ingredient.note)+" ")])]):e._e()])]],2)},f=[],_={name:"Ingredient",props:{ingredient:Object,ingredient_factor:{type:Number,default:1}},mixins:[p["b"]],data:function(){return{checked:!1}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},m=_,g=i("2877"),v=Object(g["a"])(m,u,f,!1,null,null,null),b=v.exports,h=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i(e.compiled,{tag:"component",attrs:{ingredient_factor:e.ingredient_factor,code:e.code}})],1)},j=[],k=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.number))}})},C=[],w={name:"ScalableNumber",props:{number:Number,factor:{type:Number,default:4}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.factor)}}},y=w,S=Object(g["a"])(y,k,C,!1,null,null,null),x=S.exports,O={name:"CompileComponent",props:["code","ingredient_factor"],data:function(){return{compiled:null}},mounted:function(){this.compiled=n["default"].component("compiled-component",{props:["ingredient_factor","code"],components:{ScalableNumber:x},template:"
".concat(this.code,"
")})}},E=O,R=Object(g["a"])(E,h,j,!1,null,null,null),$=R.exports,I=i("c1df"),P=i.n(I);n["default"].prototype.moment=P.a;var A={name:"Step",mixins:[p["a"]],components:{Ingredient:b,CompileComponent:$},props:{step:Object,ingredient_factor:Number,index:Number,recipe:Object,start_time:String},data:function(){return{details_visible:!0,set_time_input:""}},mounted:function(){this.set_time_input=P()(this.start_time).add(this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm")},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)},updateTime:function(){var e=P()(this.set_time_input).add(-1*this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm");this.$emit("update-start-time",e),this.closePopover()},closePopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("close")},openPopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("open")}}},N=A,L=Object(g["a"])(N,l,d,!1,null,null,null),z=L.exports,B=i("fc0d"),D=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("iframe",{staticStyle:{border:"none"},attrs:{src:e.pdfUrl,width:"100%",height:"700px"}})])},T=[],M={name:"PdfViewer",mixins:[p["b"]],props:{recipe:Object},computed:{pdfUrl:function(){return"/static/pdfjs/viewer.html?file="+Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},U=M,V=Object(g["a"])(U,D,T,!1,null,null,null),H=V.exports,F=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticStyle:{"text-align":"center"}},[i("b-img",{attrs:{src:e.pdfUrl,alt:e.$t("External_Recipe_Image")}})],1)},K=[],Z={name:"ImageViewer",props:{recipe:Object},computed:{pdfUrl:function(){return Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},W=Z,J=Object(g["a"])(W,F,K,!1,null,null,null),q=J.exports,G=function(){var e=this,t=e.$createElement,i=e._self._c||t;return null!==e.recipe.nutrition?i("div",[i("div",{staticClass:"card border-success"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-carrot"}),e._v(" "+e._s(e.$t("Nutrition")))])])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-fire fa-fw text-primary"}),e._v(" "+e._s(e.$t("Calories"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.calories))}}),e._v(" kcal ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-bread-slice fa-fw text-primary"}),e._v(" "+e._s(e.$t("Carbohydrates"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.carbohydrates))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-cheese fa-fw text-primary"}),e._v(" "+e._s(e.$t("Fats"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.fats))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-drumstick-bite fa-fw text-primary"}),e._v(" "+e._s(e.$t("Proteins"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.proteins))}}),e._v(" g ")])])])])]):e._e()},X=[],Q={name:"Nutrition",props:{recipe:Object,ingredient_factor:Number},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},Y=Q,ee=Object(g["a"])(Y,G,X,!1,null,null,null),te=ee.exports,ie=i("81d5"),ne=i("d76c"),ae=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_add_book",title:e.$t("Add_to_Book"),"ok-title":e.$t("Add"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.addToBook()}}},[i("multiselect",{attrs:{options:e.books,"preserve-search":!0,placeholder:e.$t("Select_Book"),label:"name","track-by":"id",id:"id_books",multiple:!1},on:{"search-change":e.loadBook},model:{value:e.selected_book,callback:function(t){e.selected_book=t},expression:"selected_book"}})],1)],1)},re=[],se=i("8e5f"),oe=i.n(se);n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ce={name:"AddRecipeToBook",components:{Multiselect:oe.a},props:{recipe:Object},data:function(){return{books:[],selected_book:null}},mounted:function(){this.loadBook("")},methods:{loadBook:function(e){var t=this;Object(c["b"])(e).then((function(e){t.books=e}))},addToBook:function(){Object(c["a"])({recipe:this.recipe.id,book:this.selected_book.id})}}},le=ce,de=(i("60bc"),Object(g["a"])(le,ae,re,!1,null,null,null)),pe=de.exports;n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ue={name:"RecipeView",mixins:[p["b"],p["c"]],components:{PdfViewer:H,ImageViewer:q,Ingredient:b,Step:z,RecipeContextMenu:B["a"],Nutrition:te,Keywords:ie["a"],LoadingSpinner:ne["a"],AddRecipeToBook:pe},computed:{ingredient_factor:function(){return this.servings/this.recipe.servings}},data:function(){return{loading:!0,recipe:void 0,ingredient_count:0,servings:1,start_time:"",share_uid:window.SHARE_UID}},mounted:function(){this.loadRecipe(window.RECIPE_ID),this.$i18n.locale=window.CUSTOM_LOCALE},methods:{loadRecipe:function(e){var t=this;Object(c["c"])(e).then((function(e){0!==window.USER_SERVINGS&&(e.servings=window.USER_SERVINGS),t.servings=e.servings;var i,n=0,a=Object(s["a"])(e.steps);try{for(a.s();!(i=a.n()).done;){var r=i.value;t.ingredient_count+=r.ingredients.length;var o,c=Object(s["a"])(r.ingredients);try{for(c.s();!(o=c.n()).done;){var l=o.value;t.$set(l,"checked",!1)}}catch(d){c.e(d)}finally{c.f()}r.time_offset=n,n+=r.time}}catch(d){a.e(d)}finally{a.f()}n>0&&(t.start_time=P()().format("yyyy-MM-DDTHH:mm")),t.recipe=e,t.loading=!1}))},updateStartTime:function(e){this.start_time=e},updateIngredientCheckedState:function(e){var t,i=Object(s["a"])(this.recipe.steps);try{for(i.s();!(t=i.n()).done;){var n,a=t.value,r=Object(s["a"])(a.ingredients);try{for(r.s();!(n=r.n()).done;){var o=n.value;o.id===e.id&&this.$set(o,"checked",!o.checked)}}catch(c){r.e(c)}finally{r.f()}}}catch(c){i.e(c)}finally{i.f()}}}},fe=ue,_e=Object(g["a"])(fe,a,r,!1,null,null,null),me=_e.exports,ge=i("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:ge["a"],render:function(e){return e(me)}}).$mount("#app")},1:function(e,t,i){e.exports=i("0671")},4678:function(e,t,i){var n={"./af":"2bfb","./af.js":"2bfb","./ar":"8e73","./ar-dz":"a356","./ar-dz.js":"a356","./ar-kw":"423e","./ar-kw.js":"423e","./ar-ly":"1cfd","./ar-ly.js":"1cfd","./ar-ma":"0a84","./ar-ma.js":"0a84","./ar-sa":"8230","./ar-sa.js":"8230","./ar-tn":"6d83","./ar-tn.js":"6d83","./ar.js":"8e73","./az":"485c","./az.js":"485c","./be":"1fc1","./be.js":"1fc1","./bg":"84aa","./bg.js":"84aa","./bm":"a7fa","./bm.js":"a7fa","./bn":"9043","./bn-bd":"9686","./bn-bd.js":"9686","./bn.js":"9043","./bo":"d26a","./bo.js":"d26a","./br":"6887","./br.js":"6887","./bs":"2554","./bs.js":"2554","./ca":"d716","./ca.js":"d716","./cs":"3c0d","./cs.js":"3c0d","./cv":"03ec","./cv.js":"03ec","./cy":"9797","./cy.js":"9797","./da":"0f14","./da.js":"0f14","./de":"b469","./de-at":"b3eb","./de-at.js":"b3eb","./de-ch":"bb71","./de-ch.js":"bb71","./de.js":"b469","./dv":"598a","./dv.js":"598a","./el":"8d47","./el.js":"8d47","./en-au":"0e6b","./en-au.js":"0e6b","./en-ca":"3886","./en-ca.js":"3886","./en-gb":"39a6","./en-gb.js":"39a6","./en-ie":"e1d3","./en-ie.js":"e1d3","./en-il":"7333","./en-il.js":"7333","./en-in":"ec2e","./en-in.js":"ec2e","./en-nz":"6f50","./en-nz.js":"6f50","./en-sg":"b7e9","./en-sg.js":"b7e9","./eo":"65db","./eo.js":"65db","./es":"898b","./es-do":"0a3c","./es-do.js":"0a3c","./es-mx":"b5b7","./es-mx.js":"b5b7","./es-us":"55c9","./es-us.js":"55c9","./es.js":"898b","./et":"ec18","./et.js":"ec18","./eu":"0ff2","./eu.js":"0ff2","./fa":"8df4","./fa.js":"8df4","./fi":"81e9","./fi.js":"81e9","./fil":"d69a","./fil.js":"d69a","./fo":"0721","./fo.js":"0721","./fr":"9f26","./fr-ca":"d9f8","./fr-ca.js":"d9f8","./fr-ch":"0e49","./fr-ch.js":"0e49","./fr.js":"9f26","./fy":"7118","./fy.js":"7118","./ga":"5120","./ga.js":"5120","./gd":"f6b4","./gd.js":"f6b4","./gl":"8840","./gl.js":"8840","./gom-deva":"aaf2","./gom-deva.js":"aaf2","./gom-latn":"0caa","./gom-latn.js":"0caa","./gu":"e0c5","./gu.js":"e0c5","./he":"c7aa","./he.js":"c7aa","./hi":"dc4d","./hi.js":"dc4d","./hr":"4ba9","./hr.js":"4ba9","./hu":"5b14","./hu.js":"5b14","./hy-am":"d6b6","./hy-am.js":"d6b6","./id":"5038","./id.js":"5038","./is":"0558","./is.js":"0558","./it":"6e98","./it-ch":"6f12","./it-ch.js":"6f12","./it.js":"6e98","./ja":"079e","./ja.js":"079e","./jv":"b540","./jv.js":"b540","./ka":"201b","./ka.js":"201b","./kk":"6d79","./kk.js":"6d79","./km":"e81d","./km.js":"e81d","./kn":"3e92","./kn.js":"3e92","./ko":"22f8","./ko.js":"22f8","./ku":"2421","./ku.js":"2421","./ky":"9609","./ky.js":"9609","./lb":"440c","./lb.js":"440c","./lo":"b29d","./lo.js":"b29d","./lt":"26f9","./lt.js":"26f9","./lv":"b97c","./lv.js":"b97c","./me":"293c","./me.js":"293c","./mi":"688b","./mi.js":"688b","./mk":"6909","./mk.js":"6909","./ml":"02fb","./ml.js":"02fb","./mn":"958b","./mn.js":"958b","./mr":"39bd","./mr.js":"39bd","./ms":"ebe4","./ms-my":"6403","./ms-my.js":"6403","./ms.js":"ebe4","./mt":"1b45","./mt.js":"1b45","./my":"8689","./my.js":"8689","./nb":"6ce3","./nb.js":"6ce3","./ne":"3a39","./ne.js":"3a39","./nl":"facd","./nl-be":"db29","./nl-be.js":"db29","./nl.js":"facd","./nn":"b84c","./nn.js":"b84c","./oc-lnc":"167b","./oc-lnc.js":"167b","./pa-in":"f3ff","./pa-in.js":"f3ff","./pl":"8d57","./pl.js":"8d57","./pt":"f260","./pt-br":"d2d4","./pt-br.js":"d2d4","./pt.js":"f260","./ro":"972c","./ro.js":"972c","./ru":"957c","./ru.js":"957c","./sd":"6784","./sd.js":"6784","./se":"ffff","./se.js":"ffff","./si":"eda5","./si.js":"eda5","./sk":"7be6","./sk.js":"7be6","./sl":"8155","./sl.js":"8155","./sq":"c8f3","./sq.js":"c8f3","./sr":"cf1e","./sr-cyrl":"13e9","./sr-cyrl.js":"13e9","./sr.js":"cf1e","./ss":"52bd","./ss.js":"52bd","./sv":"5fbd","./sv.js":"5fbd","./sw":"74dc","./sw.js":"74dc","./ta":"3de5","./ta.js":"3de5","./te":"5cbb","./te.js":"5cbb","./tet":"576c","./tet.js":"576c","./tg":"3b1b","./tg.js":"3b1b","./th":"10e8","./th.js":"10e8","./tk":"5aff","./tk.js":"5aff","./tl-ph":"0f38","./tl-ph.js":"0f38","./tlh":"cf755","./tlh.js":"cf755","./tr":"0e81","./tr.js":"0e81","./tzl":"cf51","./tzl.js":"cf51","./tzm":"c109","./tzm-latn":"b53d","./tzm-latn.js":"b53d","./tzm.js":"c109","./ug-cn":"6117","./ug-cn.js":"6117","./uk":"ada2","./uk.js":"ada2","./ur":"5294","./ur.js":"5294","./uz":"2e8c","./uz-latn":"010e","./uz-latn.js":"010e","./uz.js":"2e8c","./vi":"2921","./vi.js":"2921","./x-pseudo":"fd7e","./x-pseudo.js":"fd7e","./yo":"7f33","./yo.js":"7f33","./zh-cn":"5c3a","./zh-cn.js":"5c3a","./zh-hk":"49ab","./zh-hk.js":"49ab","./zh-mo":"3a6c","./zh-mo.js":"3a6c","./zh-tw":"90ea","./zh-tw.js":"90ea"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="4678"},"49f8":function(e,t,i){var n={"./de.json":"6ce2","./en.json":"edd4","./nl.json":"a625","./sv.json":"4c5b"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="49f8"},"4c5b":function(e){e.exports=JSON.parse('{"import_running":"Import pågår, var god vänta!","all_fields_optional":"Alla rutor är valfria och kan lämnas tomma.","convert_internal":"Konvertera till internt recept","Log_Recipe_Cooking":"Logga tillagningen av receptet","External_Recipe_Image":"Externt receptbild","Add_to_Book":"Lägg till i kokbok","Add_to_Shopping":"Lägg till i handelslista","Add_to_Plan":"Lägg till i matsedel","Step_start_time":"Steg starttid","Select_Book":"Välj kokbok","Recipe_Image":"Receptbild","Import_finished":"Importering klar","View_Recipes":"Visa recept","Log_Cooking":"Logga tillagning","Proteins":"Protein","Fats":"Fett","Carbohydrates":"Kolhydrater","Calories":"Kalorier","Nutrition":"Näringsinnehåll","Date":"Datum","Share":"Dela","Export":"Exportera","Rating":"Betyg","Close":"Stäng","Add":"Lägg till","Ingredients":"Ingredienser","min":"min","Servings":"Portioner","Waiting":"Väntan","Preparation":"Förberedelse","Edit":"Redigera","Open":"Öppna","Save":"Spara","Step":"Steg","Search":"Sök","Import":"Importera","Print":"Skriv ut","Information":"Information"}')},"6ce2":function(e){e.exports=JSON.parse('{"Import":"Import","import_running":"Import läuft, bitte warten!","Import_finished":"Import fertig","View_Recipes":"Rezepte Ansehen","Information":"Information","all_fields_optional":"Alle Felder sind optional und können leer gelassen werden.","convert_internal":"Zu internem Rezept wandeln","Log_Recipe_Cooking":"Kochen protokollieren","External_Recipe_Image":"Externes Rezept Bild","Add_to_Book":"Zu Buch hinzufügen","Add_to_Shopping":"Zu Einkaufsliste hinzufügen","Add_to_Plan":"Zu Plan hinzufügen","Step_start_time":"Schritt Startzeit","Select_Book":"Buch wählen","Recipe_Image":"Rezept Bild","Log_Cooking":"Kochen protokollieren","Proteins":"Proteine","Fats":"Fette","Carbohydrates":"Kohlenhydrate","Calories":"Kalorien","Nutrition":"Nährwerte","Keywords":"Stichwörter","Books":"Bücher","show_only_internal":"Nur interne Rezepte anzeigen","Ingredients":"Zutaten","min":"Min","Servings":"Portionen","Waiting":"Wartezeit","Preparation":"Zubereitung","Edit":"Bearbeiten","Open":"Öffnen","Save":"Speichern","Step":"Schritt","Search":"Suchen","Print":"Drucken","New_Recipe":"Neues Rezept","Url_Import":"URL Import","Reset_Search":"Suche zurücksetzen","or":"oder","and":"und","Recently_Viewed":"Kürzlich angesehen","External":"Extern","Settings":"Einstellungen","Meal_Plan":"Speiseplan","Date":"Datum","Share":"Teilen","Export":"Exportieren","Rating":"Bewertung","Close":"Schließen","Add":"Hinzufügen"}')},"7c15":function(e,t,i){"use strict";i.d(t,"c",(function(){return s})),i.d(t,"d",(function(){return o})),i.d(t,"b",(function(){return c})),i.d(t,"a",(function(){return l}));var n=i("bc3a"),a=i.n(n),r=i("fa7d");function s(e){var t=Object(r["g"])("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),a.a.get(t).then((function(e){return e.data})).catch((function(e){d(e,"There was an error loading a resource!","danger")}))}function o(e){return a.a.post(Object(r["g"])("api:cooklog-list"),e).then((function(e){Object(r["f"])("Saved","Cook Log entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function c(e){return a.a.get(Object(r["g"])("api:recipebook-list")+"?query="+e).then((function(e){return e.data})).catch((function(e){}))}function l(e){return a.a.post(Object(r["g"])("api:recipebookentry-list"),e).then((function(e){Object(r["f"])("Saved","Recipe Book entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function d(e,t){if("response"in e){console.log(e.response);var i="statusText"in e.response?e.response.statusText:Object(r["e"])("Error");t+="\n\n"+JSON.stringify(e.response.data),Object(r["f"])(i,t,"danger")}else Object(r["f"])("Error",t,"danger"),console.log(e)}a.a.defaults.xsrfCookieName="csrftoken",a.a.defaults.xsrfHeaderName="X-CSRFTOKEN"},"81d5":function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.recipe.keywords.length>0?i("div",e._l(e.recipe.keywords,(function(t){return i("span",{key:t.id,staticStyle:{padding:"2px"}},[i("b-badge",{attrs:{pill:"",variant:"light"}},[e._v(e._s(t.label))])],1)})),0):e._e()},a=[],r={name:"Keywords",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},9225:function(e,t,i){"use strict";i("159b"),i("d3b7"),i("ddb0"),i("ac1f"),i("466d");var n=i("a026"),a=i("a925");function r(){var e=i("49f8"),t={};return e.keys().forEach((function(i){var n=i.match(/([A-Za-z0-9-_]+)\./i);if(n&&n.length>1){var a=n[1];t[a]=e(i)}})),t}n["default"].use(a["a"]),t["a"]=new a["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:r()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"row"},[i("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[i("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],r={name:"LoadingSpinner",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","err_deleting_resource":"There was an error deleting a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","success_deleting_resource":"Successfully deleted a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Load_More":"Load More","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Cancel":"Cancel","Delete":"Delete","Open":"Open","Ok":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,i){"use strict";i.d(t,"c",(function(){return r})),i.d(t,"f",(function(){return s})),i.d(t,"a",(function(){return o})),i.d(t,"e",(function(){return c})),i.d(t,"b",(function(){return l})),i.d(t,"g",(function(){return d})),i.d(t,"d",(function(){return u}));i("99af");var n=i("59e4");function a(e,t,i){var n=Math.floor(e),a=1,r=n+1,s=1;if(e!==n)while(a<=t&&s<=t){var o=(n+r)/(a+s);if(e===o){a+s<=t?(a+=s,n+=r,s=t+1):a>s?s=t+1:a=t+1;break}et&&(a=s,n=r),!i)return[0,n,a];var c=Math.floor(n/a);return[c,n-c*a,a]}var r={methods:{makeToast:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return s(e,t,i)}}};function s(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=new n["a"];a.$bvToast.toast(t,{title:e,variant:i,toaster:"b-toaster-top-center",solid:!0})}var o={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var l={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function u(e,t){if(p("use_fractions")){var i="",n=a(e*t,9,!0);return n[0]>0&&(i+=n[0]),n[1]>0&&(i+=" ".concat(n[1],"").concat(n[2],"")),i}return f(e*t)}function f(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fc0d:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("div",{staticClass:"dropdown"},[e._m(0),i("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e.$t("Edit")))]),e.recipe.internal?e._e():i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e.$t("convert_internal")))]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_add_book")}}},[i("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Book"))+" ")]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Shopping"))+" ")]):e._e(),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?recipe="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Plan"))+" ")]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[i("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e.$t("Log_Cooking"))+" ")]),i("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[i("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e.$t("Print"))+" ")]),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e.$t("Export")))]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e.$t("Share")))]):e._e()])]),i("cook-log",{attrs:{recipe:e.recipe}})],1)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[i("i",{staticClass:"fas fa-ellipsis-v"})])}],r=(i("a9e3"),i("fa7d")),s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e.$t("Log_Recipe_Cooking"),"ok-title":e.$t("Save"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.logCook()}}},[i("p",[e._v(e._s(e.$t("all_fields_optional")))]),i("form",[i("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e.$t("Servings")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),i("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e.$t("Rating"))+" - "),i("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),i("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),i("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e.$t("Date")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},o=[],c=i("c1df"),l=i.n(c),d=i("a026"),p=i("5f5b"),u=i("7c15");d["default"].prototype.moment=l.a,d["default"].use(p["a"]);var f={name:"CookLog",props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:l()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){Object(u["d"])(this.logObject)}}},_=f,m=i("2877"),g=Object(m["a"])(_,s,o,!1,null,null,null),v=g.exports,b={name:"RecipeContextMenu",mixins:[r["b"]],components:{CookLog:v},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},h=b,j=Object(m["a"])(h,n,a,!1,null,null,null);t["a"]=j.exports}}); \ No newline at end of file +(function(e){function t(t){for(var n,s,o=t[0],c=t[1],l=t[2],p=0,u=[];p0?i("div",{staticClass:"col-md-6 order-md-1 col-sm-12 order-sm-2 col-12 order-2"},[i("div",{staticClass:"card border-primary"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-pepper-hot"}),e._v(" "+e._s(e.$t("Ingredients")))])])]),i("br"),i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-12"},[i("table",{staticClass:"table table-sm"},[e._l(e.recipe.steps,(function(t){return[e._l(t.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":e.updateIngredientCheckedState}})]}))]}))],2)])])])])]):e._e(),i("div",{staticClass:"col-12 order-1 col-sm-12 order-sm-1 col-md-6 order-md-2"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[null!==e.recipe.image?i("img",{staticClass:"img img-fluid rounded",staticStyle:{"max-height":"30vh"},attrs:{src:e.recipe.image,alt:e.$t("Recipe_Image")}}):e._e()])]),i("div",{staticClass:"row",staticStyle:{"margin-top":"2vh","margin-bottom":"2vh"}},[i("div",{staticClass:"col-12"},[i("Nutrition",{attrs:{recipe:e.recipe,ingredient_factor:e.ingredient_factor}})],1)])])]),e.recipe.internal?e._e():[e.recipe.file_path.includes(".pdf")?i("div",[i("PdfViewer",{attrs:{recipe:e.recipe}})],1):e._e(),e.recipe.file_path.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")||e.recipe.file_path.includes(".gif")?i("div",[i("ImageViewer",{attrs:{recipe:e.recipe}})],1):e._e()],e._l(e.recipe.steps,(function(t,n){return i("div",{key:t.id,staticStyle:{"margin-top":"1vh"}},[i("Step",{attrs:{recipe:e.recipe,step:t,ingredient_factor:e.ingredient_factor,index:n,start_time:e.start_time},on:{"update-start-time":e.updateStartTime,"checked-state-changed":e.updateIngredientCheckedState}})],1)}))],2),i("add-recipe-to-book",{attrs:{recipe:e.recipe}}),""!==e.share_uid?i("div",{staticClass:"row text-center d-print-none",staticStyle:{"margin-top":"3vh","margin-bottom":"3vh"}},[i("div",{staticClass:"col col-md-12"},[i("a",{attrs:{href:e.resolveDjangoUrl("view_report_share_abuse",e.share_uid)}},[e._v(e._s(e.$t("Report Abuse")))])])]):e._e()],2)},r=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-user-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"far fa-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[i("i",{staticClass:"fas fa-pizza-slice fa-2x text-primary"})])}],s=i("b85c"),o=i("5f5b"),c=(i("2dd8"),i("7c15")),l=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("hr"),"TEXT"===e.step.type?[e.recipe.steps.length>1?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-8"},[i("h5",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))],0!==e.step.time?i("small",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fas fa-user-clock"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min"))+" ")]):e._e(),""!==e.start_time?i("small",{staticClass:"d-print-none"},[i("b-link",{attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")])],1):e._e()],2)]),i("div",{staticClass:"col col-md-4",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none d-print-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]):e._e(),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[i("div",{staticClass:"row"},[e.step.ingredients.length>0&&e.recipe.steps.length>1?i("div",{staticClass:"col col-md-4"},[i("table",{staticClass:"table table-sm"},[e._l(e.step.ingredients,(function(t){return[i("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":function(i){return e.$emit("checked-state-changed",t)}}})]}))],2)]):e._e(),i("div",{staticClass:"col",class:{"col-md-8":e.recipe.steps.length>1,"col-md-12":e.recipe.steps.length<=1}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)])])]:e._e(),"TIME"===e.step.type||"FILE"===e.step.type?[i("div",{staticClass:"row"},[i("div",{staticClass:"col-md-8 offset-md-2",staticStyle:{"text-align":"center"}},[i("h4",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e.$t("Step"))+" "+e._s(e.index+1))]],2),0!==e.step.time?i("span",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[i("i",{staticClass:"fa fa-stopwatch"}),e._v(" "+e._s(e.step.time)+" "+e._s(e.$t("min")))]):e._e(),""!==e.start_time?i("b-link",{staticClass:"d-print-none",attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")]):e._e()],1),i("div",{staticClass:"col-md-2",staticStyle:{"text-align":"right"}},[i("b-button",{staticClass:"shadow-none d-print-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[i("i",{staticClass:"far fa-check-circle"})])],1)]),i("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[""!==e.step.instruction?i("div",{staticClass:"row"},[i("div",{staticClass:"col col-md-12",staticStyle:{"text-align":"center"}},[i("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)]):e._e()])]:e._e(),i("div",{staticClass:"row",staticStyle:{"text-align":"center"}},[i("div",{staticClass:"col col-md-12"},[null!==e.step.file?[e.step.file.file.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")||e.recipe.file_path.includes(".gif")?i("div",[i("img",{staticStyle:{"max-width":"50vw","max-height":"50vh"},attrs:{src:e.step.file.file}})]):i("div",[i("a",{attrs:{href:e.step.file.file,target:"_blank",rel:"noreferrer nofollow"}},[e._v(e._s(e.$t("Download"))+" "+e._s(e.$t("File")))])])]:e._e()],2)]),""!==e.start_time?i("div",[i("b-popover",{ref:"id_reactive_popover_"+e.step.id,attrs:{target:"id_reactive_popover_"+e.step.id,triggers:"click",placement:"bottom",title:e.$t("Step start time")}},[i("div",[i("b-form-group",{staticClass:"mb-1",attrs:{label:"Time","label-for":"popover-input-1","label-cols":"3"}},[i("b-form-input",{attrs:{type:"datetime-local",id:"popover-input-1",size:"sm"},model:{value:e.set_time_input,callback:function(t){e.set_time_input=t},expression:"set_time_input"}})],1)],1),i("div",{staticClass:"row",staticStyle:{"margin-top":"1vh"}},[i("div",{staticClass:"col-12",staticStyle:{"text-align":"right"}},[i("b-button",{staticStyle:{"margin-right":"8px"},attrs:{size:"sm",variant:"secondary"},on:{click:e.closePopover}},[e._v("Cancel")]),i("b-button",{attrs:{size:"sm",variant:"primary"},on:{click:e.updateTime}},[e._v("Ok")])],1)])])],1):e._e()],2)},d=[],p=(i("a9e3"),i("fa7d")),u=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("tr",{on:{click:function(t){return e.$emit("checked-state-changed",e.ingredient)}}},[e.ingredient.is_header?[i("td",{attrs:{colspan:"5"}},[i("b",[e._v(e._s(e.ingredient.note))])])]:[i("td",{staticClass:"d-print-none"},[e.ingredient.checked?i("i",{staticClass:"far fa-check-circle text-success"}):e._e(),e.ingredient.checked?e._e():i("i",{staticClass:"far fa-check-circle text-primary"})]),i("td",[0!==e.ingredient.amount?i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.ingredient.amount))}}):e._e()]),i("td",[null===e.ingredient.unit||e.ingredient.no_amount?e._e():i("span",[e._v(e._s(e.ingredient.unit.name))])]),i("td",[null!==e.ingredient.food?[null!==e.ingredient.food.recipe?i("a",{attrs:{href:e.resolveDjangoUrl("view_recipe",e.ingredient.food.recipe),target:"_blank",rel:"noopener noreferrer"}},[e._v(e._s(e.ingredient.food.name))]):e._e(),null===e.ingredient.food.recipe?i("span",[e._v(e._s(e.ingredient.food.name))]):e._e()]:e._e()],2),i("td",[e.ingredient.note?i("div",[i("span",{directives:[{name:"b-popover",rawName:"v-b-popover.hover",value:e.ingredient.note,expression:"ingredient.note",modifiers:{hover:!0}}],staticClass:"d-print-none"},[i("i",{staticClass:"far fa-comment"})]),i("div",{staticClass:"d-none d-print-block"},[i("i",{staticClass:"far fa-comment-alt d-print-none"}),e._v(" "+e._s(e.ingredient.note)+" ")])]):e._e()])]],2)},f=[],_={name:"Ingredient",props:{ingredient:Object,ingredient_factor:{type:Number,default:1}},mixins:[p["b"]],data:function(){return{checked:!1}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},m=_,g=i("2877"),v=Object(g["a"])(m,u,f,!1,null,null,null),b=v.exports,h=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i(e.compiled,{tag:"component",attrs:{ingredient_factor:e.ingredient_factor,code:e.code}})],1)},j=[],k=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.number))}})},C=[],w={name:"ScalableNumber",props:{number:Number,factor:{type:Number,default:4}},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.factor)}}},y=w,S=Object(g["a"])(y,k,C,!1,null,null,null),x=S.exports,O={name:"CompileComponent",props:["code","ingredient_factor"],data:function(){return{compiled:null}},mounted:function(){this.compiled=n["default"].component("compiled-component",{props:["ingredient_factor","code"],components:{ScalableNumber:x},template:"
".concat(this.code,"
")})}},E=O,R=Object(g["a"])(E,h,j,!1,null,null,null),$=R.exports,I=i("c1df"),P=i.n(I);n["default"].prototype.moment=P.a;var A={name:"Step",mixins:[p["a"]],components:{Ingredient:b,CompileComponent:$},props:{step:Object,ingredient_factor:Number,index:Number,recipe:Object,start_time:String},data:function(){return{details_visible:!0,set_time_input:""}},mounted:function(){this.set_time_input=P()(this.start_time).add(this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm")},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)},updateTime:function(){var e=P()(this.set_time_input).add(-1*this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm");this.$emit("update-start-time",e),this.closePopover()},closePopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("close")},openPopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("open")}}},N=A,L=Object(g["a"])(N,l,d,!1,null,null,null),z=L.exports,B=i("fc0d"),D=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("iframe",{staticStyle:{border:"none"},attrs:{src:e.pdfUrl,width:"100%",height:"700px"}})])},T=[],M={name:"PdfViewer",mixins:[p["b"]],props:{recipe:Object},computed:{pdfUrl:function(){return"/static/pdfjs/viewer.html?file="+Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},U=M,V=Object(g["a"])(U,D,T,!1,null,null,null),H=V.exports,F=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticStyle:{"text-align":"center"}},[i("b-img",{attrs:{src:e.pdfUrl,alt:e.$t("External_Recipe_Image")}})],1)},K=[],Z={name:"ImageViewer",props:{recipe:Object},computed:{pdfUrl:function(){return Object(p["g"])("api_get_recipe_file",this.recipe.id)}}},W=Z,J=Object(g["a"])(W,F,K,!1,null,null,null),q=J.exports,G=function(){var e=this,t=e.$createElement,i=e._self._c||t;return null!==e.recipe.nutrition?i("div",[i("div",{staticClass:"card border-success"},[i("div",{staticClass:"card-body"},[i("div",{staticClass:"row"},[i("div",{staticClass:"col-12"},[i("h4",{staticClass:"card-title"},[i("i",{staticClass:"fas fa-carrot"}),e._v(" "+e._s(e.$t("Nutrition")))])])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-fire fa-fw text-primary"}),e._v(" "+e._s(e.$t("Calories"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.calories))}}),e._v(" kcal ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-bread-slice fa-fw text-primary"}),e._v(" "+e._s(e.$t("Carbohydrates"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.carbohydrates))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-cheese fa-fw text-primary"}),e._v(" "+e._s(e.$t("Fats"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.fats))}}),e._v(" g ")])]),i("div",{staticClass:"row"},[i("div",{staticClass:"col-6"},[i("i",{staticClass:"fas fa-drumstick-bite fa-fw text-primary"}),e._v(" "+e._s(e.$t("Proteins"))+" ")]),i("div",{staticClass:"col-6"},[i("span",{domProps:{innerHTML:e._s(e.calculateAmount(e.recipe.nutrition.proteins))}}),e._v(" g ")])])])])]):e._e()},X=[],Q={name:"Nutrition",props:{recipe:Object,ingredient_factor:Number},methods:{calculateAmount:function(e){return Object(p["d"])(e,this.ingredient_factor)}}},Y=Q,ee=Object(g["a"])(Y,G,X,!1,null,null,null),te=ee.exports,ie=i("81d5"),ne=i("d76c"),ae=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_add_book",title:e.$t("Add_to_Book"),"ok-title":e.$t("Add"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.addToBook()}}},[i("multiselect",{attrs:{options:e.books,"preserve-search":!0,placeholder:e.$t("Select_Book"),label:"name","track-by":"id",id:"id_books",multiple:!1},on:{"search-change":e.loadBook},model:{value:e.selected_book,callback:function(t){e.selected_book=t},expression:"selected_book"}})],1)],1)},re=[],se=i("8e5f"),oe=i.n(se);n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ce={name:"AddRecipeToBook",components:{Multiselect:oe.a},props:{recipe:Object},data:function(){return{books:[],selected_book:null}},mounted:function(){this.loadBook("")},methods:{loadBook:function(e){var t=this;Object(c["b"])(e).then((function(e){t.books=e}))},addToBook:function(){Object(c["a"])({recipe:this.recipe.id,book:this.selected_book.id})}}},le=ce,de=(i("60bc"),Object(g["a"])(le,ae,re,!1,null,null,null)),pe=de.exports;n["default"].prototype.moment=P.a,n["default"].use(o["a"]);var ue={name:"RecipeView",mixins:[p["b"],p["c"]],components:{PdfViewer:H,ImageViewer:q,Ingredient:b,Step:z,RecipeContextMenu:B["a"],Nutrition:te,Keywords:ie["a"],LoadingSpinner:ne["a"],AddRecipeToBook:pe},computed:{ingredient_factor:function(){return this.servings/this.recipe.servings}},data:function(){return{loading:!0,recipe:void 0,ingredient_count:0,servings:1,start_time:"",share_uid:window.SHARE_UID}},mounted:function(){this.loadRecipe(window.RECIPE_ID),this.$i18n.locale=window.CUSTOM_LOCALE},methods:{loadRecipe:function(e){var t=this;Object(c["c"])(e).then((function(e){0!==window.USER_SERVINGS&&(e.servings=window.USER_SERVINGS),t.servings=e.servings;var i,n=0,a=Object(s["a"])(e.steps);try{for(a.s();!(i=a.n()).done;){var r=i.value;t.ingredient_count+=r.ingredients.length;var o,c=Object(s["a"])(r.ingredients);try{for(c.s();!(o=c.n()).done;){var l=o.value;t.$set(l,"checked",!1)}}catch(d){c.e(d)}finally{c.f()}r.time_offset=n,n+=r.time}}catch(d){a.e(d)}finally{a.f()}n>0&&(t.start_time=P()().format("yyyy-MM-DDTHH:mm")),t.recipe=e,t.loading=!1}))},updateStartTime:function(e){this.start_time=e},updateIngredientCheckedState:function(e){var t,i=Object(s["a"])(this.recipe.steps);try{for(i.s();!(t=i.n()).done;){var n,a=t.value,r=Object(s["a"])(a.ingredients);try{for(r.s();!(n=r.n()).done;){var o=n.value;o.id===e.id&&this.$set(o,"checked",!o.checked)}}catch(c){r.e(c)}finally{r.f()}}}catch(c){i.e(c)}finally{i.f()}}}},fe=ue,_e=Object(g["a"])(fe,a,r,!1,null,null,null),me=_e.exports,ge=i("9225");n["default"].config.productionTip=!1,new n["default"]({i18n:ge["a"],render:function(e){return e(me)}}).$mount("#app")},1:function(e,t,i){e.exports=i("0671")},4678:function(e,t,i){var n={"./af":"2bfb","./af.js":"2bfb","./ar":"8e73","./ar-dz":"a356","./ar-dz.js":"a356","./ar-kw":"423e","./ar-kw.js":"423e","./ar-ly":"1cfd","./ar-ly.js":"1cfd","./ar-ma":"0a84","./ar-ma.js":"0a84","./ar-sa":"8230","./ar-sa.js":"8230","./ar-tn":"6d83","./ar-tn.js":"6d83","./ar.js":"8e73","./az":"485c","./az.js":"485c","./be":"1fc1","./be.js":"1fc1","./bg":"84aa","./bg.js":"84aa","./bm":"a7fa","./bm.js":"a7fa","./bn":"9043","./bn-bd":"9686","./bn-bd.js":"9686","./bn.js":"9043","./bo":"d26a","./bo.js":"d26a","./br":"6887","./br.js":"6887","./bs":"2554","./bs.js":"2554","./ca":"d716","./ca.js":"d716","./cs":"3c0d","./cs.js":"3c0d","./cv":"03ec","./cv.js":"03ec","./cy":"9797","./cy.js":"9797","./da":"0f14","./da.js":"0f14","./de":"b469","./de-at":"b3eb","./de-at.js":"b3eb","./de-ch":"bb71","./de-ch.js":"bb71","./de.js":"b469","./dv":"598a","./dv.js":"598a","./el":"8d47","./el.js":"8d47","./en-au":"0e6b","./en-au.js":"0e6b","./en-ca":"3886","./en-ca.js":"3886","./en-gb":"39a6","./en-gb.js":"39a6","./en-ie":"e1d3","./en-ie.js":"e1d3","./en-il":"7333","./en-il.js":"7333","./en-in":"ec2e","./en-in.js":"ec2e","./en-nz":"6f50","./en-nz.js":"6f50","./en-sg":"b7e9","./en-sg.js":"b7e9","./eo":"65db","./eo.js":"65db","./es":"898b","./es-do":"0a3c","./es-do.js":"0a3c","./es-mx":"b5b7","./es-mx.js":"b5b7","./es-us":"55c9","./es-us.js":"55c9","./es.js":"898b","./et":"ec18","./et.js":"ec18","./eu":"0ff2","./eu.js":"0ff2","./fa":"8df4","./fa.js":"8df4","./fi":"81e9","./fi.js":"81e9","./fil":"d69a","./fil.js":"d69a","./fo":"0721","./fo.js":"0721","./fr":"9f26","./fr-ca":"d9f8","./fr-ca.js":"d9f8","./fr-ch":"0e49","./fr-ch.js":"0e49","./fr.js":"9f26","./fy":"7118","./fy.js":"7118","./ga":"5120","./ga.js":"5120","./gd":"f6b4","./gd.js":"f6b4","./gl":"8840","./gl.js":"8840","./gom-deva":"aaf2","./gom-deva.js":"aaf2","./gom-latn":"0caa","./gom-latn.js":"0caa","./gu":"e0c5","./gu.js":"e0c5","./he":"c7aa","./he.js":"c7aa","./hi":"dc4d","./hi.js":"dc4d","./hr":"4ba9","./hr.js":"4ba9","./hu":"5b14","./hu.js":"5b14","./hy-am":"d6b6","./hy-am.js":"d6b6","./id":"5038","./id.js":"5038","./is":"0558","./is.js":"0558","./it":"6e98","./it-ch":"6f12","./it-ch.js":"6f12","./it.js":"6e98","./ja":"079e","./ja.js":"079e","./jv":"b540","./jv.js":"b540","./ka":"201b","./ka.js":"201b","./kk":"6d79","./kk.js":"6d79","./km":"e81d","./km.js":"e81d","./kn":"3e92","./kn.js":"3e92","./ko":"22f8","./ko.js":"22f8","./ku":"2421","./ku.js":"2421","./ky":"9609","./ky.js":"9609","./lb":"440c","./lb.js":"440c","./lo":"b29d","./lo.js":"b29d","./lt":"26f9","./lt.js":"26f9","./lv":"b97c","./lv.js":"b97c","./me":"293c","./me.js":"293c","./mi":"688b","./mi.js":"688b","./mk":"6909","./mk.js":"6909","./ml":"02fb","./ml.js":"02fb","./mn":"958b","./mn.js":"958b","./mr":"39bd","./mr.js":"39bd","./ms":"ebe4","./ms-my":"6403","./ms-my.js":"6403","./ms.js":"ebe4","./mt":"1b45","./mt.js":"1b45","./my":"8689","./my.js":"8689","./nb":"6ce3","./nb.js":"6ce3","./ne":"3a39","./ne.js":"3a39","./nl":"facd","./nl-be":"db29","./nl-be.js":"db29","./nl.js":"facd","./nn":"b84c","./nn.js":"b84c","./oc-lnc":"167b","./oc-lnc.js":"167b","./pa-in":"f3ff","./pa-in.js":"f3ff","./pl":"8d57","./pl.js":"8d57","./pt":"f260","./pt-br":"d2d4","./pt-br.js":"d2d4","./pt.js":"f260","./ro":"972c","./ro.js":"972c","./ru":"957c","./ru.js":"957c","./sd":"6784","./sd.js":"6784","./se":"ffff","./se.js":"ffff","./si":"eda5","./si.js":"eda5","./sk":"7be6","./sk.js":"7be6","./sl":"8155","./sl.js":"8155","./sq":"c8f3","./sq.js":"c8f3","./sr":"cf1e","./sr-cyrl":"13e9","./sr-cyrl.js":"13e9","./sr.js":"cf1e","./ss":"52bd","./ss.js":"52bd","./sv":"5fbd","./sv.js":"5fbd","./sw":"74dc","./sw.js":"74dc","./ta":"3de5","./ta.js":"3de5","./te":"5cbb","./te.js":"5cbb","./tet":"576c","./tet.js":"576c","./tg":"3b1b","./tg.js":"3b1b","./th":"10e8","./th.js":"10e8","./tk":"5aff","./tk.js":"5aff","./tl-ph":"0f38","./tl-ph.js":"0f38","./tlh":"cf755","./tlh.js":"cf755","./tr":"0e81","./tr.js":"0e81","./tzl":"cf51","./tzl.js":"cf51","./tzm":"c109","./tzm-latn":"b53d","./tzm-latn.js":"b53d","./tzm.js":"c109","./ug-cn":"6117","./ug-cn.js":"6117","./uk":"ada2","./uk.js":"ada2","./ur":"5294","./ur.js":"5294","./uz":"2e8c","./uz-latn":"010e","./uz-latn.js":"010e","./uz.js":"2e8c","./vi":"2921","./vi.js":"2921","./x-pseudo":"fd7e","./x-pseudo.js":"fd7e","./yo":"7f33","./yo.js":"7f33","./zh-cn":"5c3a","./zh-cn.js":"5c3a","./zh-hk":"49ab","./zh-hk.js":"49ab","./zh-mo":"3a6c","./zh-mo.js":"3a6c","./zh-tw":"90ea","./zh-tw.js":"90ea"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="4678"},"49f8":function(e,t,i){var n={"./de.json":"6ce2","./en.json":"edd4","./nl.json":"a625","./sv.json":"4c5b"};function a(e){var t=r(e);return i(t)}function r(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=r,e.exports=a,a.id="49f8"},"4c5b":function(e){e.exports=JSON.parse('{"import_running":"Import pågår, var god vänta!","all_fields_optional":"Alla rutor är valfria och kan lämnas tomma.","convert_internal":"Konvertera till internt recept","Log_Recipe_Cooking":"Logga tillagningen av receptet","External_Recipe_Image":"Externt receptbild","Add_to_Book":"Lägg till i kokbok","Add_to_Shopping":"Lägg till i handelslista","Add_to_Plan":"Lägg till i matsedel","Step_start_time":"Steg starttid","Select_Book":"Välj kokbok","Recipe_Image":"Receptbild","Import_finished":"Importering klar","View_Recipes":"Visa recept","Log_Cooking":"Logga tillagning","Proteins":"Protein","Fats":"Fett","Carbohydrates":"Kolhydrater","Calories":"Kalorier","Nutrition":"Näringsinnehåll","Date":"Datum","Share":"Dela","Export":"Exportera","Rating":"Betyg","Close":"Stäng","Add":"Lägg till","Ingredients":"Ingredienser","min":"min","Servings":"Portioner","Waiting":"Väntan","Preparation":"Förberedelse","Edit":"Redigera","Open":"Öppna","Save":"Spara","Step":"Steg","Search":"Sök","Import":"Importera","Print":"Skriv ut","Information":"Information"}')},"6ce2":function(e){e.exports=JSON.parse('{"Import":"Import","import_running":"Import läuft, bitte warten!","Import_finished":"Import fertig","View_Recipes":"Rezepte Ansehen","Information":"Information","all_fields_optional":"Alle Felder sind optional und können leer gelassen werden.","convert_internal":"Zu internem Rezept wandeln","Log_Recipe_Cooking":"Kochen protokollieren","External_Recipe_Image":"Externes Rezept Bild","Add_to_Book":"Zu Buch hinzufügen","Add_to_Shopping":"Zu Einkaufsliste hinzufügen","Add_to_Plan":"Zu Plan hinzufügen","Step_start_time":"Schritt Startzeit","Select_Book":"Buch wählen","Recipe_Image":"Rezept Bild","Log_Cooking":"Kochen protokollieren","Proteins":"Proteine","Fats":"Fette","Carbohydrates":"Kohlenhydrate","Calories":"Kalorien","Nutrition":"Nährwerte","Keywords":"Stichwörter","Books":"Bücher","show_only_internal":"Nur interne Rezepte anzeigen","Ingredients":"Zutaten","min":"Min","Servings":"Portionen","Waiting":"Wartezeit","Preparation":"Zubereitung","Edit":"Bearbeiten","Open":"Öffnen","Save":"Speichern","Step":"Schritt","Search":"Suchen","Print":"Drucken","New_Recipe":"Neues Rezept","Url_Import":"URL Import","Reset_Search":"Suche zurücksetzen","or":"oder","and":"und","Recently_Viewed":"Kürzlich angesehen","External":"Extern","Settings":"Einstellungen","Meal_Plan":"Speiseplan","Date":"Datum","Share":"Teilen","Export":"Exportieren","Rating":"Bewertung","Close":"Schließen","Add":"Hinzufügen"}')},"7c15":function(e,t,i){"use strict";i.d(t,"c",(function(){return s})),i.d(t,"d",(function(){return o})),i.d(t,"b",(function(){return c})),i.d(t,"a",(function(){return l}));var n=i("bc3a"),a=i.n(n),r=i("fa7d");function s(e){var t=Object(r["g"])("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),a.a.get(t).then((function(e){return e.data})).catch((function(e){d(e,"There was an error loading a resource!","danger")}))}function o(e){return a.a.post(Object(r["g"])("api:cooklog-list"),e).then((function(e){Object(r["f"])("Saved","Cook Log entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function c(e){return a.a.get(Object(r["g"])("api:recipebook-list")+"?query="+e).then((function(e){return e.data})).catch((function(e){}))}function l(e){return a.a.post(Object(r["g"])("api:recipebookentry-list"),e).then((function(e){Object(r["f"])("Saved","Recipe Book entry saved!","success")})).catch((function(e){d(e,"There was an error creating a resource!","danger")}))}function d(e,t){if("response"in e){console.log(e.response);var i="statusText"in e.response?e.response.statusText:Object(r["e"])("Error");t+="\n\n"+JSON.stringify(e.response.data),Object(r["f"])(i,t,"danger")}else Object(r["f"])("Error",t,"danger"),console.log(e)}a.a.defaults.xsrfCookieName="csrftoken",a.a.defaults.xsrfHeaderName="X-CSRFTOKEN"},"81d5":function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.recipe.keywords.length>0?i("div",e._l(e.recipe.keywords,(function(t){return i("span",{key:t.id,staticStyle:{padding:"2px"}},[i("b-badge",{attrs:{pill:"",variant:"light"}},[e._v(e._s(t.label))])],1)})),0):e._e()},a=[],r={name:"Keywords",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},9225:function(e,t,i){"use strict";i("159b"),i("d3b7"),i("ddb0"),i("ac1f"),i("466d");var n=i("a026"),a=i("a925");function r(){var e=i("49f8"),t={};return e.keys().forEach((function(i){var n=i.match(/([A-Za-z0-9-_]+)\./i);if(n&&n.length>1){var a=n[1];t[a]=e(i)}})),t}n["default"].use(a["a"]),t["a"]=new a["a"]({locale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_LOCALE||"en",fallbackLocale:Object({NODE_ENV:"production",BASE_URL:""}).VUE_APP_I18N_FALLBACK_LOCALE||"en",messages:r()})},a625:function(e){e.exports=JSON.parse('{"import_running":"Er wordt geïmporteerd, even geduld!","all_fields_optional":"Alle velden zijn optioneel en kunnen leeg gelaten worden.","convert_internal":"Zet om naar intern recept","Log_Recipe_Cooking":"Log Bereiding","External_Recipe_Image":"Externe Afbeelding Recept","Add_to_Book":"Voeg toe aan Boek","Add_to_Shopping":"Voeg toe aan Boodschappenlijst","Add_to_Plan":"Voeg toe aan Plan","Step_start_time":"Starttijd stap","Select_Book":"Selecteer Boek","Recipe_Image":"Afbeelding Recept","Import_finished":"Importeren gereed","View_Recipes":"Bekijk Recepten","Log_Cooking":"Log Bereiding","Proteins":"Eiwitten","Fats":"Vetten","Carbohydrates":"Koolhydraten","Calories":"Calorieën","Nutrition":"Voedingswaarde","Date":"Datum","Share":"Deel","Export":"Exporteren","Rating":"Beoordeling","Close":"Sluiten","Add":"Voeg toe","Ingredients":"Ingrediënten","min":"min","Servings":"Porties","Waiting":"Wachten","Preparation":"Bereiding","Edit":"Bewerken","Open":"Open","Save":"Opslaan","Step":"Stap","Search":"Zoeken","Import":"Importeer","Print":"Afdrukken","Information":"Informatie","Keywords":"Etiketten","Books":"Boeken","show_only_internal":"Toon alleen interne recepten","New_Recipe":"Nieuw Recept","Url_Import":"Importeer URL","Reset_Search":"Zoeken resetten","or":"of","and":"en","Recently_Viewed":"Recent bekeken","External":"Externe","Settings":"Instellingen","Meal_Plan":"Maaltijdplan","New":"Nieuw","Supermarket":"Supermarkt","Categories":"Categorieën","Category":"Categorie","Selected":"Geselecteerd"}')},d76c:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"row"},[i("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[i("img",{staticClass:"spinner-tandoor",staticStyle:{height:"30vh"},attrs:{alt:"loading spinner",src:""}})])])}],r={name:"LoadingSpinner",props:{recipe:Object}},s=r,o=i("2877"),c=Object(o["a"])(s,n,a,!1,null,null,null);t["a"]=c.exports},edd4:function(e){e.exports=JSON.parse('{"err_fetching_resource":"There was an error fetching a resource!","err_creating_resource":"There was an error creating a resource!","err_updating_resource":"There was an error updating a resource!","err_deleting_resource":"There was an error deleting a resource!","success_fetching_resource":"Successfully fetched a resource!","success_creating_resource":"Successfully created a resource!","success_updating_resource":"Successfully updated a resource!","success_deleting_resource":"Successfully deleted a resource!","import_running":"Import running, please wait!","all_fields_optional":"All fields are optional and can be left empty.","convert_internal":"Convert to internal recipe","show_only_internal":"Show only internal recipes","Log_Recipe_Cooking":"Log Recipe Cooking","External_Recipe_Image":"External Recipe Image","Add_to_Book":"Add to Book","Add_to_Shopping":"Add to Shopping","Add_to_Plan":"Add to Plan","Step_start_time":"Step start time","Meal_Plan":"Meal Plan","Select_Book":"Select Book","Recipe_Image":"Recipe Image","Import_finished":"Import finished","View_Recipes":"View Recipes","Log_Cooking":"Log Cooking","New_Recipe":"New Recipe","Url_Import":"Url Import","Reset_Search":"Reset Search","Recently_Viewed":"Recently Viewed","Load_More":"Load More","Keywords":"Keywords","Books":"Books","Proteins":"Proteins","Fats":"Fats","Carbohydrates":"Carbohydrates","Calories":"Calories","Nutrition":"Nutrition","Date":"Date","Share":"Share","Export":"Export","Rating":"Rating","Close":"Close","Add":"Add","New":"New","Success":"Success","Ingredients":"Ingredients","Supermarket":"Supermarket","Categories":"Categories","Category":"Category","Selected":"Selected","min":"min","Servings":"Servings","Waiting":"Waiting","Preparation":"Preparation","External":"External","Size":"Size","Files":"Files","File":"File","Edit":"Edit","Cancel":"Cancel","Delete":"Delete","Open":"Open","Ok":"Open","Save":"Save","Step":"Step","Search":"Search","Import":"Import","Print":"Print","Settings":"Settings","or":"or","and":"and","Information":"Information","Download":"Download"}')},fa7d:function(e,t,i){"use strict";i.d(t,"c",(function(){return r})),i.d(t,"f",(function(){return s})),i.d(t,"a",(function(){return o})),i.d(t,"e",(function(){return c})),i.d(t,"b",(function(){return l})),i.d(t,"g",(function(){return d})),i.d(t,"d",(function(){return u}));i("99af");var n=i("59e4");function a(e,t,i){var n=Math.floor(e),a=1,r=n+1,s=1;if(e!==n)while(a<=t&&s<=t){var o=(n+r)/(a+s);if(e===o){a+s<=t?(a+=s,n+=r,s=t+1):a>s?s=t+1:a=t+1;break}et&&(a=s,n=r),!i)return[0,n,a];var c=Math.floor(n/a);return[c,n-c*a,a]}var r={methods:{makeToast:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return s(e,t,i)}}};function s(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=new n["a"];a.$bvToast.toast(t,{title:e,variant:i,toaster:"b-toaster-top-center",solid:!0})}var o={methods:{_:function(e){return c(e)}}};function c(e){return window.gettext(e)}var l={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return d(e,t)}}};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function p(e){return window.USER_PREF[e]}function u(e,t){if(p("use_fractions")){var i="",n=a(e*t,9,!0);return n[0]>0&&(i+=n[0]),n[1]>0&&(i+=" ".concat(n[1],"").concat(n[2],"")),i}return f(e*t)}function f(e){var t=p("user_fractions")?p("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}},fc0d:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("div",{staticClass:"dropdown d-print-none"},[e._m(0),i("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e.$t("Edit")))]),e.recipe.internal?e._e():i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[i("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e.$t("convert_internal")))]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_add_book")}}},[i("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Book"))+" ")]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Shopping"))+" ")]):e._e(),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?recipe="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e.$t("Add_to_Plan"))+" ")]),i("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[i("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e.$t("Log_Cooking"))+" ")]),i("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[i("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e.$t("Print"))+" ")]),i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e.$t("Export")))]),e.recipe.internal?i("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[i("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e.$t("Share")))]):e._e()])]),i("cook-log",{attrs:{recipe:e.recipe}})],1)},a=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[i("i",{staticClass:"fas fa-ellipsis-v"})])}],r=(i("a9e3"),i("fa7d")),s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e.$t("Log_Recipe_Cooking"),"ok-title":e.$t("Save"),"cancel-title":e.$t("Close")},on:{ok:function(t){return e.logCook()}}},[i("p",[e._v(e._s(e.$t("all_fields_optional")))]),i("form",[i("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e.$t("Servings")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),i("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e.$t("Rating"))+" - "),i("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),i("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),i("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e.$t("Date")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},o=[],c=i("c1df"),l=i.n(c),d=i("a026"),p=i("5f5b"),u=i("7c15");d["default"].prototype.moment=l.a,d["default"].use(p["a"]);var f={name:"CookLog",props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:l()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){Object(u["d"])(this.logObject)}}},_=f,m=i("2877"),g=Object(m["a"])(_,s,o,!1,null,null,null),v=g.exports,b={name:"RecipeContextMenu",mixins:[r["b"]],components:{CookLog:v},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},h=b,j=Object(m["a"])(h,n,a,!1,null,null,null);t["a"]=j.exports}}); \ No newline at end of file diff --git a/vue/src/apps/RecipeView/RecipeView.vue b/vue/src/apps/RecipeView/RecipeView.vue index d2708f97e..ee2a60470 100644 --- a/vue/src/apps/RecipeView/RecipeView.vue +++ b/vue/src/apps/RecipeView/RecipeView.vue @@ -135,7 +135,7 @@ -
+
diff --git a/vue/src/components/Ingredient.vue b/vue/src/components/Ingredient.vue index 5b20373f4..97759f8af 100644 --- a/vue/src/components/Ingredient.vue +++ b/vue/src/components/Ingredient.vue @@ -7,7 +7,7 @@