diff --git a/kirby/.php_cs b/kirby/.php_cs
new file mode 100755
index 0000000..5753edd
--- /dev/null
+++ b/kirby/.php_cs
@@ -0,0 +1,58 @@
+exclude('dependencies')
+ ->in(__DIR__);
+
+return PhpCsFixer\Config::create()
+ ->setRules([
+ '@PSR1' => true,
+ '@PSR2' => true,
+ 'align_multiline_comment' => ['comment_type' => 'phpdocs_like'],
+ 'array_indentation' => true,
+ 'array_syntax' => ['syntax' => 'short'],
+ 'cast_spaces' => ['space' => 'none'],
+ // 'class_keyword_remove' => true, // replaces static::class with 'static' (won't work)
+ 'combine_consecutive_issets' => true,
+ 'combine_consecutive_unsets' => true,
+ 'combine_nested_dirname' => true,
+ 'concat_space' => ['spacing' => 'one'],
+ 'declare_equal_normalize' => ['space' => 'single'],
+ 'dir_constant' => true,
+ 'function_typehint_space' => true,
+ 'include' => true,
+ 'logical_operators' => true,
+ 'lowercase_cast' => true,
+ 'lowercase_static_reference' => true,
+ 'magic_constant_casing' => true,
+ 'magic_method_casing' => true,
+ 'method_chaining_indentation' => true,
+ 'modernize_types_casting' => true,
+ 'multiline_comment_opening_closing' => true,
+ 'native_function_casing' => true,
+ 'native_function_type_declaration_casing' => true,
+ 'new_with_braces' => true,
+ 'no_blank_lines_after_class_opening' => true,
+ 'no_blank_lines_after_phpdoc' => true,
+ 'no_empty_comment' => true,
+ 'no_empty_phpdoc' => true,
+ 'no_empty_statement' => true,
+ 'no_leading_namespace_whitespace' => true,
+ 'no_mixed_echo_print' => ['use' => 'echo'],
+ 'no_unneeded_control_parentheses' => true,
+ 'no_unused_imports' => true,
+ 'no_useless_return' => true,
+ 'ordered_imports' => ['sort_algorithm' => 'alpha'],
+ // 'phpdoc_add_missing_param_annotation' => ['only_untyped' => false], // adds params in the wrong order
+ // 'phpdoc_align' => ['align' => 'vertical'], // added in a second step
+ 'phpdoc_indent' => true,
+ // 'phpdoc_scalar' => true, // added in a second step
+ 'phpdoc_trim' => true,
+ 'short_scalar_cast' => true,
+ 'single_line_comment_style' => true,
+ 'single_quote' => true,
+ 'ternary_to_null_coalescing' => true,
+ 'whitespace_after_comma_in_array' => true
+ ])
+ ->setRiskyAllowed(true)
+ ->setFinder($finder);
diff --git a/kirby/composer.json b/kirby/composer.json
index 0f2643f..3b36fcc 100755
--- a/kirby/composer.json
+++ b/kirby/composer.json
@@ -1,7 +1,7 @@
{
"name": "getkirby/cms",
"description": "The Kirby 3 core",
- "version": "3.2.4",
+ "version": "3.2.5",
"license": "proprietary",
"keywords": ["kirby", "cms", "core"],
"homepage": "https://getkirby.com",
@@ -44,7 +44,7 @@
"test": "phpunit --stderr --coverage-html=tests/coverage",
"zip": "composer archive --format=zip --file=dist",
"build": "./scripts/build",
- "fix": "php-cs-fixer fix ."
+ "fix": "php-cs-fixer fix --config .php_cs"
},
"config": {
"optimize-autoloader": true
diff --git a/kirby/config/api/authentication.php b/kirby/config/api/authentication.php
index 8c31128..41ce7a1 100755
--- a/kirby/config/api/authentication.php
+++ b/kirby/config/api/authentication.php
@@ -1,8 +1,6 @@
kirby()->auth();
diff --git a/kirby/config/api/collections.php b/kirby/config/api/collections.php
index bafa483..f0bcf72 100755
--- a/kirby/config/api/collections.php
+++ b/kirby/config/api/collections.php
@@ -1,12 +1,5 @@
[
'model' => 'page',
- 'type' => Pages::class,
+ 'type' => 'Kirby\Cms\Pages',
'view' => 'compact'
],
@@ -26,7 +19,7 @@ return [
*/
'files' => [
'model' => 'file',
- 'type' => Files::class
+ 'type' => 'Kirby\Cms\Files'
],
/**
@@ -34,7 +27,7 @@ return [
*/
'languages' => [
'model' => 'language',
- 'type' => Languages::class,
+ 'type' => 'Kirby\Cms\Languages',
'view' => 'compact'
],
@@ -43,7 +36,7 @@ return [
*/
'pages' => [
'model' => 'page',
- 'type' => Pages::class,
+ 'type' => 'Kirby\Cms\Pages',
'view' => 'compact'
],
@@ -52,7 +45,7 @@ return [
*/
'roles' => [
'model' => 'role',
- 'type' => Roles::class,
+ 'type' => 'Kirby\Cms\Roles',
'view' => 'compact'
],
@@ -61,7 +54,7 @@ return [
*/
'translations' => [
'model' => 'translation',
- 'type' => Translations::class,
+ 'type' => 'Kirby\Cms\Translations',
'view' => 'compact'
],
@@ -73,7 +66,7 @@ return [
return $this->users();
},
'model' => 'user',
- 'type' => Users::class,
+ 'type' => 'Kirby\Cms\Users',
'view' => 'compact'
]
diff --git a/kirby/config/api/models.php b/kirby/config/api/models.php
index 5e02abf..51d19fb 100755
--- a/kirby/config/api/models.php
+++ b/kirby/config/api/models.php
@@ -1,9 +1,5 @@
url(true);
},
],
- 'type' => File::class,
+ 'type' => 'Kirby\Cms\File',
'views' => [
'default' => [
'content',
diff --git a/kirby/config/api/models/FileBlueprint.php b/kirby/config/api/models/FileBlueprint.php
index 52588f2..0ca7cc0 100755
--- a/kirby/config/api/models/FileBlueprint.php
+++ b/kirby/config/api/models/FileBlueprint.php
@@ -20,7 +20,7 @@ return [
return $blueprint->title();
},
],
- 'type' => FileBlueprint::class,
+ 'type' => 'Kirby\Cms\FileBlueprint',
'views' => [
],
];
diff --git a/kirby/config/api/models/FileVersion.php b/kirby/config/api/models/FileVersion.php
index 6b7509b..3d518b3 100755
--- a/kirby/config/api/models/FileVersion.php
+++ b/kirby/config/api/models/FileVersion.php
@@ -44,7 +44,7 @@ return [
return $file->url(true);
},
],
- 'type' => FileVersion::class,
+ 'type' => 'Kirby\Cms\FileVersion',
'views' => [
'default' => [
'dimensions',
diff --git a/kirby/config/api/models/Language.php b/kirby/config/api/models/Language.php
index f05626f..77a633e 100755
--- a/kirby/config/api/models/Language.php
+++ b/kirby/config/api/models/Language.php
@@ -29,7 +29,7 @@ return [
return $language->url();
},
],
- 'type' => Language::class,
+ 'type' => 'Kirby\Cms\Language',
'views' => [
'compact' => [
'code',
diff --git a/kirby/config/api/models/Page.php b/kirby/config/api/models/Page.php
index efadb03..91b145b 100755
--- a/kirby/config/api/models/Page.php
+++ b/kirby/config/api/models/Page.php
@@ -104,7 +104,7 @@ return [
return $page->url();
},
],
- 'type' => Page::class,
+ 'type' => 'Kirby\Cms\Page',
'views' => [
'compact' => [
'id',
diff --git a/kirby/config/api/models/PageBlueprint.php b/kirby/config/api/models/PageBlueprint.php
index fdb5ccc..fd4cdef 100755
--- a/kirby/config/api/models/PageBlueprint.php
+++ b/kirby/config/api/models/PageBlueprint.php
@@ -29,7 +29,7 @@ return [
return $blueprint->title();
},
],
- 'type' => PageBlueprint::class,
+ 'type' => 'Kirby\Cms\PageBlueprint',
'views' => [
],
];
diff --git a/kirby/config/api/models/Role.php b/kirby/config/api/models/Role.php
index 7613a09..99aed16 100755
--- a/kirby/config/api/models/Role.php
+++ b/kirby/config/api/models/Role.php
@@ -20,7 +20,7 @@ return [
return $role->title();
},
],
- 'type' => Role::class,
+ 'type' => 'Kirby\Cms\Role',
'views' => [
'compact' => [
'description',
diff --git a/kirby/config/api/models/Site.php b/kirby/config/api/models/Site.php
index 8909837..2913126 100755
--- a/kirby/config/api/models/Site.php
+++ b/kirby/config/api/models/Site.php
@@ -39,7 +39,7 @@ return [
return $site->url();
},
],
- 'type' => Site::class,
+ 'type' => 'Kirby\Cms\Site',
'views' => [
'compact' => [
'title',
diff --git a/kirby/config/api/models/SiteBlueprint.php b/kirby/config/api/models/SiteBlueprint.php
index b7a45d6..a3b0943 100755
--- a/kirby/config/api/models/SiteBlueprint.php
+++ b/kirby/config/api/models/SiteBlueprint.php
@@ -20,7 +20,7 @@ return [
return $blueprint->title();
},
],
- 'type' => SiteBlueprint::class,
+ 'type' => 'Kirby\Cms\SiteBlueprint',
'views' => [
],
];
diff --git a/kirby/config/api/models/System.php b/kirby/config/api/models/System.php
index cade8e7..927ff2b 100755
--- a/kirby/config/api/models/System.php
+++ b/kirby/config/api/models/System.php
@@ -11,6 +11,9 @@ return [
'ascii' => function () {
return Str::$ascii;
},
+ 'defaultLanguage' => function () {
+ return $this->kirby()->option('panel.language', 'en');
+ },
'isOk' => function (System $system) {
return $system->isOk();
},
@@ -62,7 +65,7 @@ return [
}
},
'kirbytext' => function () {
- return $this->kirby()->option('panel')['kirbytext'] ?? true;
+ return $this->kirby()->option('panel.kirbytext') ?? true;
},
'user' => function () {
return $this->user();
@@ -71,7 +74,7 @@ return [
return $this->kirby()->version();
}
],
- 'type' => System::class,
+ 'type' => 'Kirby\Cms\System',
'views' => [
'login' => [
'isOk',
@@ -90,6 +93,7 @@ return [
],
'panel' => [
'ascii',
+ 'defaultLanguage',
'isOk',
'isInstalled',
'isLocal',
diff --git a/kirby/config/api/models/Translation.php b/kirby/config/api/models/Translation.php
index 2f72efc..13be9a0 100755
--- a/kirby/config/api/models/Translation.php
+++ b/kirby/config/api/models/Translation.php
@@ -23,7 +23,7 @@ return [
return $translation->name();
},
],
- 'type' => Translation::class,
+ 'type' => 'Kirby\Cms\Translation',
'views' => [
'compact' => [
'direction',
diff --git a/kirby/config/api/models/User.php b/kirby/config/api/models/User.php
index faf2108..8fe2dc2 100755
--- a/kirby/config/api/models/User.php
+++ b/kirby/config/api/models/User.php
@@ -54,7 +54,7 @@ return [
return $user->username();
}
],
- 'type' => User::class,
+ 'type' => 'Kirby\Cms\User',
'views' => [
'default' => [
'avatar',
diff --git a/kirby/config/api/models/UserBlueprint.php b/kirby/config/api/models/UserBlueprint.php
index 48cb1f4..fdf63eb 100755
--- a/kirby/config/api/models/UserBlueprint.php
+++ b/kirby/config/api/models/UserBlueprint.php
@@ -20,7 +20,7 @@ return [
return $blueprint->title();
},
],
- 'type' => UserBlueprint::class,
+ 'type' => 'Kirby\Cms\UserBlueprint',
'views' => [
],
];
diff --git a/kirby/config/api/routes/auth.php b/kirby/config/api/routes/auth.php
index ab46cf4..7e4dcb4 100755
--- a/kirby/config/api/routes/auth.php
+++ b/kirby/config/api/routes/auth.php
@@ -1,8 +1,7 @@
'roles',
'method' => 'GET',
'action' => function () {
- return $this->kirby()->roles();
+ switch (get('canBe')) {
+ case 'changed':
+ return $this->kirby()->roles()->canBeChanged();
+ case 'created':
+ return $this->kirby()->roles()->canBeCreated();
+ default:
+ return $this->kirby()->roles();
+ }
}
],
[
diff --git a/kirby/config/api/routes/system.php b/kirby/config/api/routes/system.php
index 6c7d8a0..44c8807 100755
--- a/kirby/config/api/routes/system.php
+++ b/kirby/config/api/routes/system.php
@@ -1,5 +1,8 @@
isInstallable() === false) {
- throw new Exception('The panel cannot be installed');
+ throw new Exception('The Panel cannot be installed');
}
if ($system->isInstalled() === true) {
- throw new Exception('The panel is already installed');
+ throw new Exception('The Panel is already installed');
}
// create the first user
diff --git a/kirby/config/components.php b/kirby/config/components.php
index dd7792c..44949fa 100755
--- a/kirby/config/components.php
+++ b/kirby/config/components.php
@@ -4,12 +4,8 @@ use Kirby\Cms\App;
use Kirby\Cms\File;
use Kirby\Cms\Filename;
use Kirby\Cms\FileVersion;
-use Kirby\Cms\FileModifications;
-use Kirby\Cms\Model;
-use Kirby\Cms\Response;
use Kirby\Cms\Template;
use Kirby\Data\Data;
-use Kirby\Exception\NotFoundException;
use Kirby\Image\Darkroom;
use Kirby\Text\Markdown;
use Kirby\Text\SmartyPants;
@@ -22,7 +18,7 @@ return [
/**
* Used by the `css()` helper
*
- * @param Kirby\Cms\App $kirby Kirby instance
+ * @param \Kirby\Cms\App $kirby Kirby instance
* @param string $url Relative or absolute URL
* @param string|array $options An array of attributes for the link tag or a media attribute string
*/
@@ -33,8 +29,8 @@ return [
/**
* Modify URLs for file objects
*
- * @param Kirby\Cms\App $kirby Kirby instance
- * @param Kirby\Cms\File $file The original file object
+ * @param \Kirby\Cms\App $kirby Kirby instance
+ * @param \Kirby\Cms\File $file The original file object
* @return string
*/
'file::url' => function (App $kirby, File $file): string {
@@ -44,10 +40,10 @@ return [
/**
* Adapt file characteristics
*
- * @param Kirby\Cms\App $kirby Kirby instance
- * @param Kirby\Cms\File|Kirby\Cms\FileModifications $file The file object
+ * @param \Kirby\Cms\App $kirby Kirby instance
+ * @param \Kirby\Cms\File|\Kirby\Cms\FileModifications $file The file object
* @param array $options All thumb options (width, height, crop, blur, grayscale)
- * @return Kirby\Cms\File|Kirby\Cms\FileVersion
+ * @return \Kirby\Cms\File|\Kirby\Cms\FileVersion
*/
'file::version' => function (App $kirby, $file, array $options = []) {
if ($file->isResizable() === false) {
@@ -82,7 +78,7 @@ return [
/**
* Used by the `js()` helper
*
- * @param Kirby\Cms\App $kirby Kirby instance
+ * @param \Kirby\Cms\App $kirby Kirby instance
* @param string $url Relative or absolute URL
* @param string|array $options An array of attributes for the link tag or a media attribute string
*/
@@ -93,7 +89,7 @@ return [
/**
* Add your own Markdown parser
*
- * @param Kirby\Cms\App $kirby Kirby instance
+ * @param \Kirby\Cms\App $kirby Kirby instance
* @param string $text Text to parse
* @param array $options Markdown options
* @param bool $inline Whether to wrap the text in `
` tags
@@ -116,7 +112,7 @@ return [
/**
* Add your own SmartyPants parser
*
- * @param Kirby\Cms\App $kirby Kirby instance
+ * @param \Kirby\Cms\App $kirby Kirby instance
* @param string $text Text to parse
* @param array $options SmartyPants options
* @return string
@@ -138,7 +134,7 @@ return [
/**
* Add your own snippet loader
*
- * @param Kirby\Cms\App $kirby Kirby instance
+ * @param \Kirby\Cms\App $kirby Kirby instance
* @param string|array $name Snippet name
* @param array $data Data array for the snippet
* @return string|null
@@ -165,11 +161,11 @@ return [
/**
* Add your own template engine
*
- * @param Kirby\Cms\App $kirby Kirby instance
+ * @param \Kirby\Cms\App $kirby Kirby instance
* @param string $name Template name
* @param string $type Extension type
* @param string $defaultType Default extension type
- * @return Kirby\Cms\Template
+ * @return \Kirby\Cms\Template
*/
'template' => function (App $kirby, string $name, string $type = 'html', string $defaultType = 'html') {
return new Template($name, $type, $defaultType);
@@ -178,7 +174,7 @@ return [
/**
* Add your own thumb generator
*
- * @param Kirby\Cms\App $kirby Kirby instance
+ * @param \Kirby\Cms\App $kirby Kirby instance
* @param string $src The root of the original file
* @param string $dst The root to the desired destination
* @param array $options All thumb options that should be applied: `width`, `height`, `crop`, `blur`, `grayscale`
@@ -198,7 +194,7 @@ return [
/**
* Modify all URLs
*
- * @param Kirby\Cms\App $kirby Kirby instance
+ * @param \Kirby\Cms\App $kirby Kirby instance
* @param string $path URL path
* @param array|null $options Array of options for the Uri class
* @param Closure $originalHandler Callback function to the original URL handler with `$path` and `$options` as parameters
diff --git a/kirby/config/fields/date.php b/kirby/config/fields/date.php
index 23a212c..c27f696 100755
--- a/kirby/config/fields/date.php
+++ b/kirby/config/fields/date.php
@@ -21,7 +21,7 @@ return [
/**
* Changes the calendar icon to something custom
*/
- 'icon' => function (string $icon = "calendar") {
+ 'icon' => function (string $icon = 'calendar') {
return $icon;
},
/**
diff --git a/kirby/config/fields/email.php b/kirby/config/fields/email.php
index 1772ae3..e7892b8 100755
--- a/kirby/config/fields/email.php
+++ b/kirby/config/fields/email.php
@@ -1,5 +1,7 @@
'text',
'props' => [
diff --git a/kirby/config/fields/files.php b/kirby/config/fields/files.php
index b0f7aad..2bf87c8 100755
--- a/kirby/config/fields/files.php
+++ b/kirby/config/fields/files.php
@@ -1,5 +1,6 @@
field();
$uploads = $field->uploads();
- return $field->upload($this, $uploads, function ($file) use ($field) {
+ return $field->upload($this, $uploads, function ($file, $parent) use ($field) {
return $file->panelPickerData([
'image' => $field->image(),
'info' => $field->info(),
diff --git a/kirby/config/fields/info.php b/kirby/config/fields/info.php
index f259806..15c0a27 100755
--- a/kirby/config/fields/info.php
+++ b/kirby/config/fields/info.php
@@ -13,13 +13,10 @@ return [
],
'computed' => [
'text' => function () {
- $text = $this->text;
-
- if ($model = $this->model()) {
+ if ($text = $this->text) {
$text = $this->model()->toString($text);
+ return kirbytext($text);
}
-
- return kirbytext($text);
}
],
'save' => false,
diff --git a/kirby/config/fields/mixins/pagepicker.php b/kirby/config/fields/mixins/pagepicker.php
index 62bc77a..d0a8186 100755
--- a/kirby/config/fields/mixins/pagepicker.php
+++ b/kirby/config/fields/mixins/pagepicker.php
@@ -19,7 +19,7 @@ return [
$self = [
'id' => $parent->id() == '' ? null : $parent->id(),
'title' => $parent->title()->value(),
- 'parent' => is_a($parent->parent(), Page::class) === true ? $parent->parent()->id() : null,
+ 'parent' => is_a($parent->parent(), 'Kirby\Cms\Page') === true ? $parent->parent()->id() : null,
];
}
diff --git a/kirby/config/fields/mixins/picker.php b/kirby/config/fields/mixins/picker.php
index 481bddd..028eb66 100755
--- a/kirby/config/fields/mixins/picker.php
+++ b/kirby/config/fields/mixins/picker.php
@@ -1,5 +1,6 @@
[
diff --git a/kirby/config/fields/mixins/upload.php b/kirby/config/fields/mixins/upload.php
index 4b3036e..ce5bd4c 100755
--- a/kirby/config/fields/mixins/upload.php
+++ b/kirby/config/fields/mixins/upload.php
@@ -2,6 +2,7 @@
use Kirby\Cms\Api;
use Kirby\Cms\File;
+use Kirby\Exception\Exception;
return [
'props' => [
@@ -64,7 +65,7 @@ return [
throw new Exception('The file could not be uploaded');
}
- return $map($file);
+ return $map($file, $parent);
});
}
]
diff --git a/kirby/config/fields/number.php b/kirby/config/fields/number.php
index 9e0b960..83a13e8 100755
--- a/kirby/config/fields/number.php
+++ b/kirby/config/fields/number.php
@@ -1,5 +1,7 @@
[
/**
diff --git a/kirby/config/fields/pages.php b/kirby/config/fields/pages.php
index b0a0cdd..1c8a6c9 100755
--- a/kirby/config/fields/pages.php
+++ b/kirby/config/fields/pages.php
@@ -1,7 +1,7 @@
['min', 'pagepicker', 'picker'],
@@ -47,6 +47,12 @@ return [
return $this->toPages($value);
},
],
+ 'computed' => [
+ /**
+ * Unset inherited computed
+ */
+ 'default' => null
+ ],
'methods' => [
'pageResponse' => function ($page) {
return $page->panelPickerData([
diff --git a/kirby/config/fields/structure.php b/kirby/config/fields/structure.php
index 992db7c..d925077 100755
--- a/kirby/config/fields/structure.php
+++ b/kirby/config/fields/structure.php
@@ -1,7 +1,8 @@
['min'],
@@ -162,7 +163,7 @@ return [
$data = [];
foreach ($value as $row) {
- $data[] = $this->form($row)->data(true);
+ $data[] = $this->form($row)->data();
}
return $data;
diff --git a/kirby/config/fields/tags.php b/kirby/config/fields/tags.php
index 8177985..93c29bd 100755
--- a/kirby/config/fields/tags.php
+++ b/kirby/config/fields/tags.php
@@ -1,5 +1,9 @@
['min', 'options'],
'props' => [
diff --git a/kirby/config/fields/text.php b/kirby/config/fields/text.php
index 7faabfd..c32a037 100755
--- a/kirby/config/fields/text.php
+++ b/kirby/config/fields/text.php
@@ -1,7 +1,6 @@
[
'minlength',
- 'maxlength'
+ 'maxlength',
+ 'pattern'
]
];
diff --git a/kirby/config/fields/textarea.php b/kirby/config/fields/textarea.php
index f2e1018..2cafb39 100755
--- a/kirby/config/fields/textarea.php
+++ b/kirby/config/fields/textarea.php
@@ -76,7 +76,7 @@ return [
/**
* If `false`, spellcheck will be switched off
*/
- 'spellcheck' => function (bool $spellcheck = false) {
+ 'spellcheck' => function (bool $spellcheck = true) {
return $spellcheck;
},
@@ -95,10 +95,15 @@ return [
[
'pattern' => 'upload',
'action' => function () {
- return $this->field()->upload($this, $this->field()->uploads(), function ($file) {
+ $field = $this->field();
+ $uploads = $field->uploads();
+
+ return $this->field()->upload($this, $uploads, function ($file, $parent) use ($field) {
+ $absolute = $field->model()->is($parent) === false;
+
return [
'filename' => $file->filename(),
- 'dragText' => $file->dragText(),
+ 'dragText' => $file->dragText('auto', $absolute),
];
});
}
diff --git a/kirby/config/fields/toggle.php b/kirby/config/fields/toggle.php
index 0842e8b..a43c613 100755
--- a/kirby/config/fields/toggle.php
+++ b/kirby/config/fields/toggle.php
@@ -1,6 +1,7 @@
[
@@ -12,8 +13,8 @@ return [
/**
* Default value which will be saved when a new page/user/file is created
*/
- 'default' => function ($value = null) {
- return $this->toBool($value);
+ 'default' => function ($default = null) {
+ return $this->default = $default;
},
/**
* Sets the text next to the toggle. The text can be a string or an array of two options. The first one is the negative text and the second one the positive. The text will automatically switch when the toggle is triggered.
@@ -35,6 +36,9 @@ return [
},
],
'computed' => [
+ 'default' => function () {
+ return $this->toBool($this->default);
+ },
'value' => function () {
if ($this->props['value'] === null) {
return $this->default();
diff --git a/kirby/config/fields/url.php b/kirby/config/fields/url.php
index 6aaa5f2..f92dd2c 100755
--- a/kirby/config/fields/url.php
+++ b/kirby/config/fields/url.php
@@ -1,5 +1,7 @@
'text',
'props' => [
diff --git a/kirby/config/fields/users.php b/kirby/config/fields/users.php
index 62844b7..6b7fe65 100755
--- a/kirby/config/fields/users.php
+++ b/kirby/config/fields/users.php
@@ -1,5 +1,8 @@
['min', 'picker', 'userpicker'],
'props' => [
@@ -33,6 +36,12 @@ return [
return $this->toUsers($value);
},
],
+ 'computed' => [
+ /**
+ * Unset inherited computed
+ */
+ 'default' => null
+ ],
'methods' => [
'userResponse' => function ($user) {
return $user->panelPickerData([
diff --git a/kirby/config/helpers.php b/kirby/config/helpers.php
index 6444d85..f88d5ef 100755
--- a/kirby/config/helpers.php
+++ b/kirby/config/helpers.php
@@ -5,18 +5,18 @@ use Kirby\Cms\Asset;
use Kirby\Cms\Html;
use Kirby\Cms\Response;
use Kirby\Cms\Url;
-use Kirby\Exception\Exception;
use Kirby\Http\Server;
use Kirby\Toolkit\Escape;
use Kirby\Toolkit\F;
use Kirby\Toolkit\I18n;
-use Kirby\Toolkit\View;
+use Kirby\Toolkit\Str;
+use Kirby\Toolkit\V;
/**
* Helper to create an asset object
*
* @param string $path
- * @return Kirby\Cms\Asset
+ * @return \Kirby\Cms\Asset
*/
function asset(string $path)
{
@@ -44,7 +44,7 @@ function attr(array $attr = null, $before = null, $after = null)
* Returns the result of a collection by name
*
* @param string $name
- * @return Kirby\Cms\Collection|null
+ * @return \Kirby\Cms\Collection|null
*/
function collection(string $name)
{
@@ -217,7 +217,7 @@ function go(string $url = null, int $code = 302)
/**
* Shortcut for html()
*
- * @param string $text unencoded text
+ * @param string $string unencoded text
* @param bool $keepTags
* @return string
*/
@@ -229,7 +229,7 @@ function h(string $string = null, bool $keepTags = false)
/**
* Creates safe html by encoding special characters
*
- * @param string $text unencoded text
+ * @param string $string unencoded text
* @param bool $keepTags
* @return string
*/
@@ -246,7 +246,7 @@ function html(string $string = null, bool $keepTags = false)
* = image('some/page/myimage.jpg') ?>
*
* @param string $path
- * @return Kirby\Cms\File|null
+ * @return \Kirby\Cms\File|null
*/
function image(string $path = null)
{
@@ -346,7 +346,7 @@ function invalid(array $data = [], array $rules = [], array $messages = [])
/**
* Creates a script tag to load a javascript file
*
- * @param string|array $src
+ * @param string|array $url
* @param string|array $options
* @return void
*/
@@ -382,7 +382,7 @@ function js($url, $options = null)
/**
* Returns the Kirby object in any situation
*
- * @return Kirby\Cms\App
+ * @return \Kirby\Cms\App
*/
function kirby()
{
@@ -527,7 +527,7 @@ function option(string $key, $default = null)
* id or the current page when no id is specified
*
* @param string|array ...$id
- * @return Kirby\Cms\Page|null
+ * @return \Kirby\Cms\Page|null
*/
function page(...$id)
{
@@ -542,7 +542,7 @@ function page(...$id)
* Helper to build page collections
*
* @param string|array ...$id
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
function pages(...$id)
{
@@ -616,7 +616,7 @@ function timestamp(string $date = null, int $step = null): ?string
/**
* Returns the currrent site object
*
- * @return Kirby\Cms\Site
+ * @return \Kirby\Cms\Site
*/
function site()
{
diff --git a/kirby/config/methods.php b/kirby/config/methods.php
index e63e97b..51ba2da 100755
--- a/kirby/config/methods.php
+++ b/kirby/config/methods.php
@@ -5,11 +5,13 @@ use Kirby\Cms\Field;
use Kirby\Cms\File;
use Kirby\Cms\Files;
use Kirby\Cms\Html;
-use Kirby\Cms\Structure;
use Kirby\Cms\Page;
+use Kirby\Cms\Structure;
use Kirby\Cms\Url;
use Kirby\Data\Json;
use Kirby\Data\Yaml;
+use Kirby\Exception\Exception;
+use Kirby\Exception\InvalidArgumentException;
use Kirby\Toolkit\Str;
use Kirby\Toolkit\V;
use Kirby\Toolkit\Xml;
@@ -25,7 +27,7 @@ return function (App $app) {
/**
* Converts the field value into a proper boolean and inverts it
*
- * @param Kirby\Cms\Field $field
+ * @param \Kirby\Cms\Field $field
* @return boolean
*/
'isFalse' => function (Field $field): bool {
@@ -35,7 +37,7 @@ return function (App $app) {
/**
* Converts the field value into a proper boolean
*
- * @param Kirby\Cms\Field $field
+ * @param \Kirby\Cms\Field $field
* @return boolean
*/
'isTrue' => function (Field $field): bool {
@@ -46,7 +48,7 @@ return function (App $app) {
* Validates the field content with the given validator and parameters
*
* @param string $validator
- * @param mixed[] ...$arguments A list of optional validator arguments
+ * @param mixed ...$arguments A list of optional validator arguments
* @return boolean
*/
'isValid' => function (Field $field, string $validator, ...$arguments): bool {
@@ -58,7 +60,7 @@ return function (App $app) {
/**
* Parses the field value with the given method
*
- * @param Kirby\Cms\Field $field
+ * @param \Kirby\Cms\Field $field
* @param string $method [',', 'yaml', 'json']
* @return array
*/
@@ -76,7 +78,7 @@ return function (App $app) {
/**
* Converts the field value into a proper boolean
*
- * @param Kirby\Cms\Field $field
+ * @param \Kirby\Cms\Field $field
* @param bool $default Default value if the field is empty
* @return bool
*/
@@ -88,7 +90,7 @@ return function (App $app) {
/**
* Converts the field value to a timestamp or a formatted date
*
- * @param Kirby\Cms\Field $field
+ * @param \Kirby\Cms\Field $field
* @param string|null $format PHP date formatting string
* @param string|null $fallback Fallback string for `strtotime` (since 3.2)
* @return string|int
@@ -110,8 +112,8 @@ return function (App $app) {
/**
* Returns a file object from a filename in the field
*
- * @param Kirby\Cms\Field $field
- * @return Kirby\Cms\File|null
+ * @param \Kirby\Cms\Field $field
+ * @return \Kirby\Cms\File|null
*/
'toFile' => function (Field $field) {
return $field->toFiles()->first();
@@ -120,9 +122,9 @@ return function (App $app) {
/**
* Returns a file collection from a yaml list of filenames in the field
*
- * @param Kirby\Cms\Field $field
+ * @param \Kirby\Cms\Field $field
* @param string $separator
- * @return Kirby\Cms\Files
+ * @return \Kirby\Cms\Files
*/
'toFiles' => function (Field $field, string $separator = 'yaml') {
$parent = $field->parent();
@@ -140,31 +142,31 @@ return function (App $app) {
/**
* Converts the field value into a proper float
*
- * @param Kirby\Cms\Field $field
+ * @param \Kirby\Cms\Field $field
* @param float $default Default value if the field is empty
* @return float
*/
'toFloat' => function (Field $field, float $default = 0) {
$value = $field->isEmpty() ? $default : $field->value;
- return floatval($value);
+ return (float)$value;
},
/**
* Converts the field value into a proper integer
*
- * @param Kirby\Cms\Field $field
+ * @param \Kirby\Cms\Field $field
* @param int $default Default value if the field is empty
* @return int
*/
'toInt' => function (Field $field, int $default = 0) {
$value = $field->isEmpty() ? $default : $field->value;
- return intval($value);
+ return (int)$value;
},
/**
* Wraps a link tag around the field value. The field value is used as the link text
*
- * @param Kirby\Cms\Field $field
+ * @param \Kirby\Cms\Field $field
* @param mixed $attr1 Can be an optional Url. If no Url is set, the Url of the Page, File or Site will be used. Can also be an array of link attributes
* @param mixed $attr2 If `$attr1` is used to set the Url, you can use `$attr2` to pass an array of additional attributes.
* @return string
@@ -188,8 +190,8 @@ return function (App $app) {
/**
* Returns a page object from a page id in the field
*
- * @param Kirby\Cms\Field $field
- * @return Kirby\Cms\Page|null
+ * @param \Kirby\Cms\Field $field
+ * @return \Kirby\Cms\Page|null
*/
'toPage' => function (Field $field) use ($app) {
return $field->toPages()->first();
@@ -198,9 +200,9 @@ return function (App $app) {
/**
* Returns a pages collection from a yaml list of page ids in the field
*
- * @param Kirby\Cms\Field $field
+ * @param \Kirby\Cms\Field $field
* @param string $separator Can be any other separator to split the field value by
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
'toPages' => function (Field $field, string $separator = 'yaml') use ($app) {
return $app->site()->find(false, false, ...$field->toData($separator));
@@ -209,17 +211,27 @@ return function (App $app) {
/**
* Converts a yaml field to a Structure object
*
- * @param Kirby\Cms\Field $field
- * @return Kirby\Cms\Structure
+ * @param \Kirby\Cms\Field $field
+ * @return \Kirby\Cms\Structure
*/
'toStructure' => function (Field $field) {
- return new Structure(Yaml::decode($field->value), $field->parent());
+ try {
+ return new Structure(Yaml::decode($field->value), $field->parent());
+ } catch (Exception $e) {
+ if ($field->parent() === null) {
+ $message = 'Invalid structure data for "' . $field->key() . '" field';
+ } else {
+ $message = 'Invalid structure data for "' . $field->key() . '" field on parent "' . $field->parent()->title() . '"';
+ }
+
+ throw new InvalidArgumentException($message);
+ }
},
/**
* Converts the field value to a Unix timestamp
*
- * @param Kirby\Cms\Field $field
+ * @param \Kirby\Cms\Field $field
* @return int
*/
'toTimestamp' => function (Field $field): int {
@@ -229,7 +241,7 @@ return function (App $app) {
/**
* Turns the field value into an absolute Url
*
- * @param Kirby\Cms\Field $field
+ * @param \Kirby\Cms\Field $field
* @return string
*/
'toUrl' => function (Field $field): string {
@@ -239,8 +251,8 @@ return function (App $app) {
/**
* Converts a user email address to a user object
*
- * @param Kirby\Cms\Field $field
- * @return Kirby\Cms\User|null
+ * @param \Kirby\Cms\Field $field
+ * @return \Kirby\Cms\User|null
*/
'toUser' => function (Field $field) use ($app) {
return $field->toUsers()->first();
@@ -249,9 +261,9 @@ return function (App $app) {
/**
* Returns a users collection from a yaml list of user email addresses in the field
*
- * @param Kirby\Cms\Field $field
+ * @param \Kirby\Cms\Field $field
* @param string $separator
- * @return Kirby\Cms\Users
+ * @return \Kirby\Cms\Users
*/
'toUsers' => function (Field $field, string $separator = 'yaml') use ($app) {
return $app->users()->find(false, false, ...$field->toData($separator));
@@ -279,7 +291,7 @@ return function (App $app) {
* Escapes the field value to be safely used in HTML
* templates without the risk of XSS attacks
*
- * @param Kirby\Cms\Field $field
+ * @param \Kirby\Cms\Field $field
* @param string $context html, attr, js or css
*/
'escape' => function (Field $field, string $context = 'html') {
@@ -291,11 +303,11 @@ return function (App $app) {
* Creates an excerpt of the field value without html
* or any other formatting.
*
- * @param Kirby\Cms\Field $field
+ * @param \Kirby\Cms\Field $field
* @param int $cahrs
* @param boolean $strip
* @param string $rep
- * @return Kirby\Cms\Field
+ * @return \Kirby\Cms\Field
*/
'excerpt' => function (Field $field, int $chars = 0, bool $strip = true, string $rep = '…') {
$field->value = Str::excerpt($field->kirbytext()->value(), $chars, $strip, $rep);
@@ -305,8 +317,8 @@ return function (App $app) {
/**
* Converts the field content to valid HTML
*
- * @param Kirby\Cms\Field $field
- * @return Kirby\Cms\Field
+ * @param \Kirby\Cms\Field $field
+ * @return \Kirby\Cms\Field
*/
'html' => function (Field $field) {
$field->value = htmlentities($field->value, ENT_COMPAT, 'utf-8');
@@ -316,8 +328,8 @@ return function (App $app) {
/**
* Converts the field content from Markdown/Kirbytext to valid HTML
*
- * @param Kirby\Cms\Field $field
- * @return Kirby\Cms\Field
+ * @param \Kirby\Cms\Field $field
+ * @return \Kirby\Cms\Field
*/
'kirbytext' => function (Field $field) use ($app) {
$field->value = $app->kirbytext($field->value, [
@@ -333,8 +345,8 @@ return function (App $app) {
* to valid HTML
* @since 3.1.0
*
- * @param Kirby\Cms\Field $field
- * @return Kirby\Cms\Field
+ * @param \Kirby\Cms\Field $field
+ * @return \Kirby\Cms\Field
*/
'kirbytextinline' => function (Field $field) use ($app) {
$field->value = $app->kirbytext($field->value, [
@@ -348,8 +360,8 @@ return function (App $app) {
/**
* Parses all KirbyTags without also parsing Markdown
*
- * @param Kirby\Cms\Field $field
- * @return Kirby\Cms\Field
+ * @param \Kirby\Cms\Field $field
+ * @return \Kirby\Cms\Field
*/
'kirbytags' => function (Field $field) use ($app) {
$field->value = $app->kirbytags($field->value, [
@@ -363,8 +375,8 @@ return function (App $app) {
/**
* Converts the field content to lowercase
*
- * @param Kirby\Cms\Field $field
- * @return Kirby\Cms\Field
+ * @param \Kirby\Cms\Field $field
+ * @return \Kirby\Cms\Field
*/
'lower' => function (Field $field) {
$field->value = Str::lower($field->value);
@@ -374,8 +386,8 @@ return function (App $app) {
/**
* Converts markdown to valid HTML
*
- * @param Kirby\Cms\Field $field
- * @return Kirby\Cms\Field
+ * @param \Kirby\Cms\Field $field
+ * @return \Kirby\Cms\Field
*/
'markdown' => function (Field $field) use ($app) {
$field->value = $app->markdown($field->value);
@@ -385,8 +397,8 @@ return function (App $app) {
/**
* Converts the field content to valid XML
*
- * @param Kirby\Cms\Field $field
- * @return Kirby\Cms\Field
+ * @param \Kirby\Cms\Field $field
+ * @return \Kirby\Cms\Field
*/
'xml' => function (Field $field) {
$field->value = Xml::encode($field->value);
@@ -397,10 +409,10 @@ return function (App $app) {
* Cuts the string after the given length and
* adds "…" if it is longer
*
- * @param Kirby\Cms\Field $field
+ * @param \Kirby\Cms\Field $field
* @param int $length The number of characters in the string
* @param string $appendix An optional replacement for the missing rest
- * @return Kirby\Cms\Field
+ * @return \Kirby\Cms\Field
*/
'short' => function (Field $field, int $length, string $appendix = '…') {
$field->value = Str::short($field->value, $length, $appendix);
@@ -410,8 +422,8 @@ return function (App $app) {
/**
* Converts the field content to a slug
*
- * @param Kirby\Cms\Field $field
- * @return Kirby\cms\Field
+ * @param \Kirby\Cms\Field $field
+ * @return \Kirby\cms\Field
*/
'slug' => function (Field $field) {
$field->value = Str::slug($field->value);
@@ -421,8 +433,8 @@ return function (App $app) {
/**
* Applies SmartyPants to the field
*
- * @param Kirby\Cms\Field $field
- * @return Kirby\cms\Field
+ * @param \Kirby\Cms\Field $field
+ * @return \Kirby\cms\Field
*/
'smartypants' => function (Field $field) use ($app) {
$field->value = $app->smartypants($field->value);
@@ -432,8 +444,8 @@ return function (App $app) {
/**
* Splits the field content into an array
*
- * @param Kirby\Cms\Field $field
- * @return Kirby\cms\Field
+ * @param \Kirby\Cms\Field $field
+ * @return \Kirby\cms\Field
*/
'split' => function (Field $field, $separator = ',') {
return Str::split((string)$field->value, $separator);
@@ -442,8 +454,8 @@ return function (App $app) {
/**
* Converts the field content to uppercase
*
- * @param Kirby\Cms\Field $field
- * @return Kirby\cms\Field
+ * @param \Kirby\Cms\Field $field
+ * @return \Kirby\cms\Field
*/
'upper' => function (Field $field) {
$field->value = Str::upper($field->value);
@@ -454,8 +466,8 @@ return function (App $app) {
* Avoids typographical widows in strings by replacing
* the last space with ` `
*
- * @param Kirby\Cms\Field $field
- * @return Kirby\cms\Field
+ * @param \Kirby\Cms\Field $field
+ * @return \Kirby\cms\Field
*/
'widont' => function (Field $field) {
$field->value = Str::widont($field->value);
@@ -467,7 +479,7 @@ return function (App $app) {
/**
* Parses yaml in the field content and returns an array
*
- * @param Kirby\Cms\Field $field
+ * @param \Kirby\Cms\Field $field
* @return array
*/
'yaml' => function (Field $field): array {
diff --git a/kirby/config/routes.php b/kirby/config/routes.php
index 0fc4687..b12cf61 100755
--- a/kirby/config/routes.php
+++ b/kirby/config/routes.php
@@ -1,19 +1,13 @@
option('api.slug', 'api');
diff --git a/kirby/config/sections/files.php b/kirby/config/sections/files.php
index 86600ee..7df73fa 100755
--- a/kirby/config/sections/files.php
+++ b/kirby/config/sections/files.php
@@ -1,8 +1,7 @@
[
@@ -72,9 +71,6 @@ return [
return null;
},
- 'dragTextType' => function () {
- return (option('panel')['kirbytext'] ?? true) ? 'kirbytext' : 'markdown';
- },
'parent' => function () {
return $this->parentModel();
},
@@ -84,7 +80,7 @@ return [
if ($this->sortBy) {
$files = $files->sortBy(...$files::sortArgs($this->sortBy));
} elseif ($this->sortable === true) {
- $files = $files->sortBy('sort', 'asc');
+ $files = $files->sortBy('sort', 'asc', 'filename', 'asc');
}
// apply the default pagination
@@ -106,7 +102,7 @@ return [
$image = $file->panelImage($this->image);
$data[] = [
- 'dragText' => $file->dragText($this->dragTextType, $dragTextAbsolute),
+ 'dragText' => $file->dragText('auto', $dragTextAbsolute),
'filename' => $file->filename(),
'id' => $file->id(),
'text' => $file->toString($this->text),
diff --git a/kirby/config/sections/mixins/empty.php b/kirby/config/sections/mixins/empty.php
index 635bed8..1c58194 100755
--- a/kirby/config/sections/mixins/empty.php
+++ b/kirby/config/sections/mixins/empty.php
@@ -1,5 +1,7 @@
[
/**
@@ -8,5 +10,12 @@ return [
'empty' => function ($empty = null) {
return I18n::translate($empty, $empty);
}
+ ],
+ 'computed' => [
+ 'empty' => function () {
+ if ($this->empty) {
+ return $this->model()->toString($this->empty);
+ }
+ }
]
];
diff --git a/kirby/config/sections/mixins/headline.php b/kirby/config/sections/mixins/headline.php
index 80594cc..f4bb7e1 100755
--- a/kirby/config/sections/mixins/headline.php
+++ b/kirby/config/sections/mixins/headline.php
@@ -13,7 +13,11 @@ return [
],
'computed' => [
'headline' => function () {
- return $this->headline ?? ucfirst($this->name);
+ if ($this->headline) {
+ return $this->model()->toString($this->headline);
+ }
+
+ return ucfirst($this->name);
}
]
];
diff --git a/kirby/config/sections/mixins/help.php b/kirby/config/sections/mixins/help.php
index 20cec1b..f0301ea 100755
--- a/kirby/config/sections/mixins/help.php
+++ b/kirby/config/sections/mixins/help.php
@@ -10,5 +10,12 @@ return [
'help' => function ($help = null) {
return I18n::translate($help, $help);
}
+ ],
+ 'computed' => [
+ 'help' => function () {
+ if ($this->help) {
+ return $this->model()->toString($this->help);
+ }
+ }
]
];
diff --git a/kirby/config/sections/mixins/parent.php b/kirby/config/sections/mixins/parent.php
index c4d17bf..3534acf 100755
--- a/kirby/config/sections/mixins/parent.php
+++ b/kirby/config/sections/mixins/parent.php
@@ -1,6 +1,6 @@
[
@@ -22,6 +22,15 @@ return [
if (!$parent) {
throw new Exception('The parent for the query "' . $query . '" cannot be found in the section "' . $this->name() . '"');
}
+
+ if (
+ is_a($parent, 'Kirby\Cms\Page') === false &&
+ is_a($parent, 'Kirby\Cms\Site') === false &&
+ is_a($parent, 'Kirby\Cms\File') === false &&
+ is_a($parent, 'Kirby\Cms\User') === false
+ ) {
+ throw new Exception('The parent for the section "' . $this->name() . '" has to be a page, site or user object');
+ }
}
if ($parent === null) {
diff --git a/kirby/config/sections/pages.php b/kirby/config/sections/pages.php
index c06562e..fac4c71 100755
--- a/kirby/config/sections/pages.php
+++ b/kirby/config/sections/pages.php
@@ -2,7 +2,7 @@
use Kirby\Cms\Blueprint;
use Kirby\Toolkit\A;
-use Kirby\Toolkit\Str;
+use Kirby\Toolkit\I18n;
return [
'mixins' => [
@@ -80,9 +80,6 @@ return [
}
],
'computed' => [
- 'dragTextType' => function () {
- return option('panel.kirbytext', true) ? 'kirbytext' : 'markdown';
- },
'parent' => function () {
return $this->parentModel();
},
@@ -145,7 +142,7 @@ return [
$data[] = [
'id' => $item->id(),
- 'dragText' => $item->dragText($this->dragTextType),
+ 'dragText' => $item->dragText(),
'text' => $item->toString($this->text),
'info' => $item->toString($this->info ?? false),
'parent' => $item->parentId(),
diff --git a/kirby/config/tags.php b/kirby/config/tags.php
index bba7aab..955478e 100755
--- a/kirby/config/tags.php
+++ b/kirby/config/tags.php
@@ -8,7 +8,9 @@ use Kirby\Cms\Url;
*/
return [
- /* Date */
+ /**
+ * Date
+ */
'date' => [
'attr' => [],
'html' => function ($tag) {
@@ -16,7 +18,9 @@ return [
}
],
- /* Email */
+ /**
+ * Email
+ */
'email' => [
'attr' => [
'class',
@@ -35,7 +39,9 @@ return [
}
],
- /* File */
+ /**
+ * File
+ */
'file' => [
'attr' => [
'class',
@@ -66,7 +72,9 @@ return [
}
],
- /* Gist */
+ /**
+ * Gist
+ */
'gist' => [
'attr' => [
'file'
@@ -76,7 +84,9 @@ return [
}
],
- /* Image */
+ /**
+ * Image
+ */
'image' => [
'attr' => [
'alt',
@@ -143,7 +153,9 @@ return [
}
],
- /* Link */
+ /**
+ * Link
+ */
'link' => [
'attr' => [
'class',
@@ -169,7 +181,9 @@ return [
}
],
- /* Tel */
+ /**
+ * Tel
+ */
'tel' => [
'attr' => [
'class',
@@ -186,7 +200,9 @@ return [
}
],
- /* Twitter */
+ /**
+ * Twitter
+ */
'twitter' => [
'attr' => [
'class',
@@ -216,7 +232,9 @@ return [
}
],
- /* Video */
+ /**
+ * Video
+ */
'video' => [
'attr' => [
'class',
diff --git a/kirby/i18n/translations/bg.json b/kirby/i18n/translations/bg.json
index e90b096..920484f 100755
--- a/kirby/i18n/translations/bg.json
+++ b/kirby/i18n/translations/bg.json
@@ -37,6 +37,7 @@
"error.access.login": "Invalid login",
"error.access.panel": "Нямате права за достъп до панела",
+ "error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Профилната снимка не може да се качи",
"error.avatar.delete.fail": "Профилната снимка не може да бъде изтрита",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Невалиден конвертор \"{converter}\"",
+ "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission":
"Не можете да смените името на \"{filename}\"",
"error.file.duplicate": "Файл с име \"{filename}\" вече съществува",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "\u041c\u043e\u043b\u044f, \u043f\u043e\u0442\u0432\u044a\u0440\u0434\u0435\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u0430\u0442\u0430",
"error.user.password.undefined": "Потребителят няма парола",
"error.user.role.invalid": "Моля въведете валидна роля",
- "error.user.undefined": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d.",
"error.user.update.permission":
"Нямате права да обновите този потребител \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Български",
"upload": "Прикачи",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Грешка",
"upload.progress": "Uploading…",
diff --git a/kirby/i18n/translations/ca.json b/kirby/i18n/translations/ca.json
index 287816d..b787e1c 100755
--- a/kirby/i18n/translations/ca.json
+++ b/kirby/i18n/translations/ca.json
@@ -37,6 +37,7 @@
"error.access.login": "Inici de sessió no vàlid",
"error.access.panel": "No tens permís per accedir al panell",
+ "error.access.view": "No tens accés a aquesta part del tauler",
"error.avatar.create.fail": "No s'ha pogut carregar la imatge del perfil",
"error.avatar.delete.fail": "La imatge del perfil no s'ha pogut eliminar",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Convertidor no vàlid \"{converter}\"",
+ "error.file.changeName.empty": "El nom no pot estar buit",
"error.file.changeName.permission":
"No tens permís per canviar el nom de \"{filename}\"",
"error.file.duplicate": "Ja existeix un fitxer amb el nom \"{filename}\"",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Les contrasenyes no coincideixen",
"error.user.password.undefined": "L'usuari no té una contrasenya",
"error.user.role.invalid": "Si us plau, introdueix un rol vàlid",
- "error.user.undefined": "L'usuari no s'ha trobat",
"error.user.update.permission":
"No tens permís per actualitzar l'usuari \"{name}\"",
@@ -265,7 +266,7 @@
"language.direction.ltr": "Esquerra a dreta",
"language.direction.rtl": "De dreta a esquerra",
"language.locale": "Cadena local de PHP",
- "language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages",
+ "language.locale.warning": "S'està fent servir una configuració regional personalitzada. Modifica el fitxer d'idioma a /site/languages",
"language.name": "Nom",
"language.updated": "S'ha actualitzat l'idioma",
@@ -412,6 +413,17 @@
"translation.name": "Catalan",
"upload": "Carregar",
+ "upload.error.cantMove": "El fitxer carregat no s'ha pogut moure",
+ "upload.error.cantWrite": "No s'ha pogut escriure el fitxer al disc",
+ "upload.error.default": "No s'ha pogut carregar el fitxer",
+ "upload.error.extension": "La càrrega del fitxer s'ha aturat per l'extensió",
+ "upload.error.formSize": "El fitxer carregat supera la directiva MAX_FILE_SIZE especificada en el formulari",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "El fitxer carregat supera la directiva upload_max_filesize especifiada al php.ini",
+ "upload.error.noFile": "No s'ha carregat cap fitxer",
+ "upload.error.noFiles": "No s'ha penjat cap fitxer",
+ "upload.error.partial": "El fitxer carregat només s'ha carregat parcialment",
+ "upload.error.tmpDir": "Falta una carpeta temporal",
"upload.errors": "Error",
"upload.progress": "Carregant...",
diff --git a/kirby/i18n/translations/cs.json b/kirby/i18n/translations/cs.json
index 7934a35..f5535a6 100755
--- a/kirby/i18n/translations/cs.json
+++ b/kirby/i18n/translations/cs.json
@@ -24,19 +24,20 @@
"delete": "Smazat",
"dimensions": "Rozměry",
"discard": "Zahodit",
- "download": "Download",
- "duplicate": "Duplicate",
+ "download": "Stáhnout",
+ "duplicate": "Duplikovat",
"edit": "Upravit",
- "dialog.files.empty": "No files to select",
- "dialog.pages.empty": "No pages to select",
- "dialog.users.empty": "No users to select",
+ "dialog.files.empty": "Žádné soubory k výběru",
+ "dialog.pages.empty": "Žádné stránky k výběru",
+ "dialog.users.empty": "Žádní uživatelé k výběru",
"email": "Email",
"email.placeholder": "mail@example.com",
"error.access.login": "Neplatné přihlášení",
"error.access.panel": "Nemáte povoleno vstoupit do panelu",
+ "error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Nebylo možné nahrát profilový obrázek",
"error.avatar.delete.fail": "Nebylo mo\u017en\u00e9 smazat profilov\u00fd obr\u00e1zek",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Neplatný konvertor \"{converter}\"",
+ "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission":
"Nemáte povoleno změnit jméno souboru \"{filename}\"",
"error.file.duplicate": "Soubor s názvem \"{filename}\" již existuje",
@@ -71,13 +73,13 @@
"error.form.incomplete": "Prosím opravte všechny chyby ve formuláři",
"error.form.notSaved": "Formulář nemohl být uložen",
- "error.language.code": "Please enter a valid code for the language",
- "error.language.duplicate": "The language already exists",
- "error.language.name": "Please enter a valid name for the language",
+ "error.language.code": "Zadejte prosím platný kód jazyka",
+ "error.language.duplicate": "Jazyk již existuje",
+ "error.language.name": "Zadejte prosím platné jméno jazyka",
- "error.license.format": "Please enter a valid license key",
+ "error.license.format": "Zadejte prosím platné licenční číslo",
"error.license.email": "Zadejte prosím platnou emailovou adresu",
- "error.license.verification": "The license could not be verified",
+ "error.license.verification": "Licenci nelze ověřit",
"error.page.changeSlug.permission":
"Nem\u016f\u017eete zm\u011bnit URL t\u00e9to str\u00e1nky",
@@ -104,7 +106,7 @@
"Koncept stránky, který obsahuje v adrese URL \"{slug}\" již existuje ",
"error.page.duplicate":
"Stránka, která v adrese URL obsahuje \"{slug}\" již existuje",
- "error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
+ "error.page.duplicate.permission": "Nemáte dovoleno duplikovat \"{slug}\"",
"error.page.notFound": "Str\u00e1nku se nepoda\u0159ilo nal\u00e9zt.",
"error.page.num.invalid":
"Zadejte prosím platné pořadové číslo. Čísla nesmí být záporná.",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Pros\u00edm potvr\u010fte heslo",
"error.user.password.undefined": "Uživatel nemá nastavené heslo.",
"error.user.role.invalid": "Zadejte prosím platnou roli",
- "error.user.undefined": "U\u017eivatele se nepoda\u0159ilo nal\u00e9zt",
"error.user.update.permission":
"Nemáte dovoleno upravit uživatele \"{name}\"",
@@ -183,9 +184,9 @@
"error.validation.contains":
"Zadejte prosím hodnotu, která obsahuje \"{needle}\"",
"error.validation.date": "Zadejte prosím platné datum",
- "error.validation.date.after": "Please enter a date after {date}",
- "error.validation.date.before": "Please enter a date before {date}",
- "error.validation.date.between": "Please enter a date between {min} and {max}",
+ "error.validation.date.after": "Zadejte prosím datum po {date}",
+ "error.validation.date.before": "Zadejte prosím datum před {date}",
+ "error.validation.date.between": "Zadejte prosím datum mezi {min} a {max}",
"error.validation.denied": "Prosím, odmítněte",
"error.validation.different": "Hodnota nesmí být \"{other}\"",
"error.validation.email": "Zadejte prosím platnou emailovou adresu",
@@ -265,7 +266,7 @@
"language.direction.ltr": "Zleva doprava",
"language.direction.rtl": "Zprava doleva",
"language.locale": "Řetězec lokalizace PHP",
- "language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages",
+ "language.locale.warning": "Používáte vlastní jazykové nastavení. Upravte prosím soubor s nastavením v /site/languages",
"language.name": "Jméno",
"language.updated": "Jazyk byl aktualizován",
@@ -289,12 +290,12 @@
"loading": "Načítám",
- "lock.unsaved": "Unsaved changes",
- "lock.isLocked": "Unsaved changes by {email}",
- "lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
- "lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
- "lock.unlock": "Unlock",
- "lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
+ "lock.unsaved": "Neuložené změny",
+ "lock.isLocked": "Neuložené změny provedené {email}",
+ "lock.file.isLocked": "Soubor nelze změnit, právě jej upravuje {email}.",
+ "lock.page.isLocked": "Stránku nelze změnit, právě jí upravuje {email} .",
+ "lock.unlock": "Odemknout",
+ "lock.isUnlocked": "Vaše neuložené změny byly přepsány jiným uživatelem. Můžeze si své úpravy stáhnout a zapracovat je ručně.",
"login": "P\u0159ihl\u00e1sit se",
"login.remember": "Zůstat přihlášen",
@@ -323,8 +324,8 @@
"more": "Více",
"name": "Jméno",
"next": "Další",
- "off": "off",
- "on": "on",
+ "off": "vypnuto",
+ "on": "zapnuto",
"open": "Otevřít",
"options": "Možnosti",
@@ -346,8 +347,8 @@
"page.delete.confirm.title": "Pro potvrzení zadejte titulek stránky",
"page.draft.create": "Vytvořit koncept",
"page.duplicate.appendix": "Kopírovat",
- "page.duplicate.files": "Copy files",
- "page.duplicate.pages": "Copy pages",
+ "page.duplicate.files": "Kopírovat soubory",
+ "page.duplicate.pages": "Kopírovat stránky",
"page.status": "Stav",
"page.status.draft": "Koncept",
"page.status.draft.description":
@@ -373,13 +374,13 @@
"revert": "Zahodit",
"role": "Role",
- "role.admin.description": "The admin has all rights",
- "role.admin.title": "Admin",
+ "role.admin.description": "Administrátor má všechna práva",
+ "role.admin.title": "Administrátor",
"role.all": "Vše",
"role.empty": "Neexistují uživatelé s touto rolí",
"role.description.placeholder": "Žádný popis",
- "role.nobody.description": "This is a fallback role without any permissions",
- "role.nobody.title": "Nobody",
+ "role.nobody.description": "Toto je výchozí role bez jakýchkoli oprávnění",
+ "role.nobody.title": "Nikdo",
"save": "Ulo\u017eit",
"search": "Hledat",
@@ -412,6 +413,17 @@
"translation.name": "\u010cesky",
"upload": "Nahrát",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Chyba",
"upload.progress": "Nahrávání...",
diff --git a/kirby/i18n/translations/da.json b/kirby/i18n/translations/da.json
index 20fc047..7b4a533 100755
--- a/kirby/i18n/translations/da.json
+++ b/kirby/i18n/translations/da.json
@@ -37,6 +37,7 @@
"error.access.login": "Ugyldigt log ind",
"error.access.panel": "Du har ikke adgang til panelet",
+ "error.access.view": "Du har ikke adgang til denne del af panelet",
"error.avatar.create.fail": "Profilbilledet kunne blev ikke uploadet ",
"error.avatar.delete.fail": "Profilbilledet kunne ikke slettes",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Ugyldig converter \"{converter}\"",
+ "error.file.changeName.empty": "Navn kan ikke efterlades tomt",
"error.file.changeName.permission":
"Du har ikke tilladelse til at ændre navnet på filen \"{filename}\"",
"error.file.duplicate": "En fil med navnet \"{filename}\" eksisterer allerede",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Bekr\u00e6ft venligst adgangskoden",
"error.user.password.undefined": "Brugeren har ikke en adgangskode",
"error.user.role.invalid": "Indtast venligst en gyldig rolle",
- "error.user.undefined": "Brugeren kunne ikke findes",
"error.user.update.permission":
"Du har ikke tilladelse til at opdatere brugeren \"{name}\"",
@@ -183,9 +184,9 @@
"error.validation.contains":
"Indtast venligst en værdi der indeholder \"{needle}\"",
"error.validation.date": "Indtast venligst en gyldig dato",
- "error.validation.date.after": "Please enter a date after {date}",
- "error.validation.date.before": "Please enter a date before {date}",
- "error.validation.date.between": "Please enter a date between {min} and {max}",
+ "error.validation.date.after": "Indtast venligst en dato efter {date}",
+ "error.validation.date.before": "Indtast venligst en dato før {date}",
+ "error.validation.date.between": "Indtast venligst en dato imellem {min} og {max}",
"error.validation.denied": "Venligst afvis",
"error.validation.different": "Værdien må ikke være \"{other}\"",
"error.validation.email": "Indtast venligst en gyldig email adresse",
@@ -265,7 +266,7 @@
"language.direction.ltr": "Venstre mod højre",
"language.direction.rtl": "Højre mod venstre",
"language.locale": "PHP locale string",
- "language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages",
+ "language.locale.warning": "Du benytter en brugerdefineret sprogopsætning. Rediger venligst dette i sprogfilen i /site/languages",
"language.name": "Navn",
"language.updated": "Sproget er blevet opdateret",
@@ -412,6 +413,17 @@
"translation.name": "Dansk",
"upload": "Upload",
+ "upload.error.cantMove": "Den uploadede fil kunne ikke flyttes",
+ "upload.error.cantWrite": "Kunne ikke skrive fil til disk",
+ "upload.error.default": "Filen kunne ikke uploades",
+ "upload.error.extension": "Upload af filen blev stoppet af dens type",
+ "upload.error.formSize": "Filen overskrider MAX_FILE_SIZE direktivet der er specificeret for formularen",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "FIlen overskrider upload_max_filesize direktivet i php.ini",
+ "upload.error.noFile": "Ingen fil blev uploadet",
+ "upload.error.noFiles": "Ingen filer blev uploadet",
+ "upload.error.partial": "Den uploadede fil blev kun delvist uploadet",
+ "upload.error.tmpDir": "Der mangler en midlertidig mappe",
"upload.errors": "Fejl",
"upload.progress": "Uploader...",
diff --git a/kirby/i18n/translations/de.json b/kirby/i18n/translations/de.json
index 8288939..cb03073 100755
--- a/kirby/i18n/translations/de.json
+++ b/kirby/i18n/translations/de.json
@@ -37,6 +37,7 @@
"error.access.login": "Ungültige Zugangsdaten",
"error.access.panel": "Du hast keinen Zugang zum Panel",
+ "error.access.view": "Du hast keinen Zugriff auf diesen Teil des Panels",
"error.avatar.create.fail": "Das Profilbild konnte nicht hochgeladen werden",
"error.avatar.delete.fail": "Das Profilbild konnte nicht gel\u00f6scht werden",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Ungültiger Konverter: \"{converter}\"",
+ "error.file.changeName.empty": "Bitte gib einen Namen an",
"error.file.changeName.permission":
"Du darfst den Dateinamen von \"{filename}\" nicht ändern",
"error.file.duplicate": "Eine Datei mit dem Dateinamen \"{filename}\" besteht bereits",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Die Passwörter stimmen nicht überein",
"error.user.password.undefined": "Der Benutzer hat kein Passwort",
"error.user.role.invalid": "Bitte gib eine gültige Rolle an",
- "error.user.undefined": "Der Benutzer wurde nicht gefunden",
"error.user.update.permission":
"Du darfst den den Benutzer \"{name}\" nicht editieren",
@@ -412,6 +413,17 @@
"translation.name": "Deutsch",
"upload": "Hochladen",
+ "upload.error.cantMove": "Die Datei konnte nicht an ihren Zielort bewegt werden",
+ "upload.error.cantWrite": "Die Datei konnte nicht auf der Festplatte gespeichert werden",
+ "upload.error.default": "Die Datei konnte nicht hochgeladen werden",
+ "upload.error.extension": "Der Dateiupload wurde durch eine Erweiterung verhindert",
+ "upload.error.formSize": "Die Datei ist größer als die MAX_FILE_SIZE Einstellung im Formular",
+ "upload.error.iniPostSize": "Die Datei ist größer als die post_max_size Einstellung in der php.ini",
+ "upload.error.iniSize": "Die Datei ist größer als die upload_max_filesize Einstellung in der php.ini",
+ "upload.error.noFile": "Es wurde keine Datei hochgeladen",
+ "upload.error.noFiles": "Es wurden keine Dateien hochgeladen",
+ "upload.error.partial": "Die Datei wurde nur teilweise hochgeladen",
+ "upload.error.tmpDir": "Der temporäre Ordner für den Dateiupload existiert leider nicht",
"upload.errors": "Fehler",
"upload.progress": "Hochladen …",
diff --git a/kirby/i18n/translations/el.json b/kirby/i18n/translations/el.json
index 97aa845..3eb8718 100755
--- a/kirby/i18n/translations/el.json
+++ b/kirby/i18n/translations/el.json
@@ -37,6 +37,7 @@
"error.access.login": "Mη έγκυρη σύνδεση",
"error.access.panel": "Δεν επιτρέπεται η πρόσβαση στον πίνακα ελέγχου",
+ "error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Δεν ήταν δυνατή η μεταφόρτωση της εικόνας προφίλ",
"error.avatar.delete.fail": "Δεν ήταν δυνατή η διαγραφή της εικόνας προφίλ",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Μη έγκυρος μετατροπέας \"{converter}\"",
+ "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission":
"Δεν επιτρέπεται να αλλάξετε το όνομα του \"{filename}\"",
"error.file.duplicate": "Ένα αρχείο με το όνομα \"{filename}\" υπάρχει ήδη",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03c4\u03b5 \u03c4\u03bf\u03bd \u039a\u03c9\u03b4\u03b9\u03ba\u03cc \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2",
"error.user.password.undefined": "Ο χρήστης δεν έχει κωδικό πρόσβασης",
"error.user.role.invalid": "Παρακαλώ εισαγάγετε έναν έγκυρο ρόλο",
- "error.user.undefined": "Δεν είναι δυνατή η εύρεση του χρήστη",
"error.user.update.permission":
"Δεν επιτρέπεται η ενημέρωση του χρήστη \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac",
"upload": "Μεταφόρτωση",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Σφάλμα",
"upload.progress": "Μεταφόρτωση...",
diff --git a/kirby/i18n/translations/en.json b/kirby/i18n/translations/en.json
index 50d0262..de88c92 100755
--- a/kirby/i18n/translations/en.json
+++ b/kirby/i18n/translations/en.json
@@ -155,6 +155,8 @@
"The role for the last admin cannot be changed",
"error.user.changeRole.permission":
"You are not allowed to change the role for the user \"{name}\"",
+ "error.user.changeRole.toAdmin":
+ "You are not allowed to promote someone to the admin role",
"error.user.create.permission": "You are not allowed to create this user",
"error.user.delete": "The user \"{name}\" cannot be deleted",
"error.user.delete.lastAdmin": "The last admin cannot be deleted",
@@ -413,6 +415,17 @@
"translation.name": "English",
"upload": "Upload",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Error",
"upload.progress": "Uploading…",
diff --git a/kirby/i18n/translations/es_419.json b/kirby/i18n/translations/es_419.json
index 620208b..305d611 100755
--- a/kirby/i18n/translations/es_419.json
+++ b/kirby/i18n/translations/es_419.json
@@ -37,6 +37,7 @@
"error.access.login": "Ingreso inválido",
"error.access.panel": "No tienes permitido acceder al panel.",
+ "error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "No se pudo subir la foto de perfil.",
"error.avatar.delete.fail": "No se pudo eliminar la foto de perfil.",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Convertidor inválido \"{converter}\"",
+ "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission":
"No tienes permitido cambiar el nombre de \"{filename}\"",
"error.file.duplicate": "Ya existe un archivo con el nombre \"{filename}\".",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Por favor confirma la contrase\u00f1a",
"error.user.password.undefined": "El usuario no tiene contraseña",
"error.user.role.invalid": "Por favor ingresa un rol valido",
- "error.user.undefined": "El usuario no pudo ser encontrado",
"error.user.update.permission":
"No tienes permiso para actualizar al usuario \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Inglés",
"upload": "Subir",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Error",
"upload.progress": "Subiendo...",
diff --git a/kirby/i18n/translations/es_ES.json b/kirby/i18n/translations/es_ES.json
index 70dae23..8eff368 100755
--- a/kirby/i18n/translations/es_ES.json
+++ b/kirby/i18n/translations/es_ES.json
@@ -37,6 +37,7 @@
"error.access.login": "Ingreso inválido",
"error.access.panel": "No estás autorizado para acceder al panel",
+ "error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "No se pudo subir la foto de perfil.",
"error.avatar.delete.fail": "No se pudo borrar la foto de perfil",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Convertidor \"{converter}\" inválido",
+ "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission":
"No tienes permitido cambiar el nombre de \"{filename}\"",
"error.file.duplicate": "Ya existe un archivo con el nombre \"{filename}\"",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Las contraseñas no coinciden",
"error.user.password.undefined": "El usuario no tiene contraseña",
"error.user.role.invalid": "Por favor ingrese un rol válido",
- "error.user.undefined": "El usuario no puede ser encontrado",
"error.user.update.permission":
"No tienes permitido actualizar al usuario \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Español",
"upload": "Subir",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Error",
"upload.progress": "Cargando…",
diff --git a/kirby/i18n/translations/fa.json b/kirby/i18n/translations/fa.json
index 3591405..f116961 100755
--- a/kirby/i18n/translations/fa.json
+++ b/kirby/i18n/translations/fa.json
@@ -37,6 +37,7 @@
"error.access.login": "اطلاعات ورودی نامعتبر است",
"error.access.panel": "شما اجازه دسترسی به پانل را ندارید",
+ "error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "بارگزاری تصویر پروفایل موفق نبود",
"error.avatar.delete.fail": "\u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0646\u0645\u06cc\u062a\u0648\u0627\u0646 \u062d\u0630\u0641 \u06a9\u0631\u062f",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "مبدل «{converter}» نامعتبر است",
+ "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission":
"شما اجازه تنغییر نام فایل «{filename}» را ندارید",
"error.file.duplicate": "فایلی هم نام با «{filename}» هم اکنون موجود است",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "\u0644\u0637\u0641\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06af\u0630\u0631\u0648\u0627\u0698\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f",
"error.user.password.undefined": "کاربر فاقد گذرواژه است",
"error.user.role.invalid": "لطفا نقش صحیحی وارد نمایید",
- "error.user.undefined": "\u06a9\u0627\u0631\u0628\u0631 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f",
"error.user.update.permission":
"شما اجازه بروزرسانی کاربر «{name}» را ندارید",
@@ -412,6 +413,17 @@
"translation.name": "انگلیسی",
"upload": "بارگذاری",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "خطا",
"upload.progress": "در حال بارگذاری...",
diff --git a/kirby/i18n/translations/fi.json b/kirby/i18n/translations/fi.json
index ca3d054..2c38093 100755
--- a/kirby/i18n/translations/fi.json
+++ b/kirby/i18n/translations/fi.json
@@ -37,6 +37,7 @@
"error.access.login": "Kirjautumistiedot eivät kelpaa",
"error.access.panel": "Sinulla ei ole oikeutta käyttää paneelia",
+ "error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Profiilikuvaa ei voitu lähettää",
"error.avatar.delete.fail": "Profiilikuvaa ei voitu poistaa",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Muunnin \"{converter}\" ei kelpaa",
+ "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission":
"Sinulla ei ole oikeutta muuttaa tiedoston \"{filename}\" nimeä",
"error.file.duplicate": "Tiedosto nimellä \"{filename}\" on jo olemassa",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Salasanat eivät täsmää",
"error.user.password.undefined": "Käyttäjällä ei ole salasanaa",
"error.user.role.invalid": "Anna kelpaava käyttäjätaso",
- "error.user.undefined": "K\u00e4ytt\u00e4j\u00e4\u00e4 ei l\u00f6ytynyt",
"error.user.update.permission":
"Sinulla ei ole oikeutta päivittää käyttäjää \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Suomi",
"upload": "Lähetä",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Virhe",
"upload.progress": "Lähetetään...",
diff --git a/kirby/i18n/translations/fr.json b/kirby/i18n/translations/fr.json
index 1a1a723..93c19e4 100755
--- a/kirby/i18n/translations/fr.json
+++ b/kirby/i18n/translations/fr.json
@@ -37,8 +37,9 @@
"error.access.login": "Identifiant incorrect",
"error.access.panel": "Vous n’êtes pas autorisé à accéder au Panel",
+ "error.access.view": "Vous n’êtes pas autorisé à accéder à cette section du Panel",
- "error.avatar.create.fail": "L’image du profil n’a pas pu être transférée",
+ "error.avatar.create.fail": "L’image du profil n’a pu être transférée",
"error.avatar.delete.fail": "L’image du profil n’a pu être supprimée",
"error.avatar.dimensions.invalid":
"Veuillez choisir une image de profil de largeur et hauteur inférieures à 3000 pixels",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Convertisseur « {converter} » incorrect",
+ "error.file.changeName.empty": "Le nom ne peut être vide",
"error.file.changeName.permission":
"Vous n’êtes pas autorisé à modifier le nom de « {filename} »",
"error.file.duplicate": "Un fichier nommé « {filename} » existe déjà",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Les mots de passe ne sont pas identiques",
"error.user.password.undefined": "Cet utilisateur n’a pas de mot de passe",
"error.user.role.invalid": "Veuillez saisir un rôle valide",
- "error.user.undefined": "L’utilisateur est introuvable",
"error.user.update.permission":
"Vous n’êtes pas autorisé à modifier l’utilisateur « {name} »",
@@ -265,7 +266,7 @@
"language.direction.ltr": "De gauche à droite",
"language.direction.rtl": "De droite à gauche",
"language.locale": "Locales PHP",
- "language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages",
+ "language.locale.warning": "Vous utilisez une Locale PHP personnalisée. Veuillez la modifier dans le fichier de langue situé dans /site/languages",
"language.name": "Nom",
"language.updated": "La langue a été mise à jour",
@@ -412,6 +413,17 @@
"translation.name": "Français",
"upload": "Transférer",
+ "upload.error.cantMove": "Le fichier transféré n’a pu être déplacé",
+ "upload.error.cantWrite": "Le fichier n’a pu être écrit sur le disque",
+ "upload.error.default": "Le fichier n’a pu être transféré",
+ "upload.error.extension": "Le transfert de fichier a été stoppé par une extension",
+ "upload.error.formSize": "Le fichier transféré excède la directive MAX_FILE_SIZE spécifiée dans le formulaire",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "Le fichier transféré excède la directive MAX_FILE_SIZE spécifiée dans php.ini",
+ "upload.error.noFile": "Aucun fichier n’a été transféré",
+ "upload.error.noFiles": "Aucun fichier n’a été transféré",
+ "upload.error.partial": "Le fichier n’a été que partiellement transféré",
+ "upload.error.tmpDir": "Un dossier temporaire est manquant",
"upload.errors": "Erreur",
"upload.progress": "Transfert en cours…",
diff --git a/kirby/i18n/translations/hu.json b/kirby/i18n/translations/hu.json
index 26f81c7..85534a3 100755
--- a/kirby/i18n/translations/hu.json
+++ b/kirby/i18n/translations/hu.json
@@ -37,6 +37,7 @@
"error.access.login": "Érvénytelen bejelentkezés",
"error.access.panel": "Nincs jogosultságod megnyitni a panelt",
+ "error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "A profilkép feltöltése nem sikerült",
"error.avatar.delete.fail": "A profilkép nem törölhető",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Érvénytelen konverter: \"{converter}\"",
+ "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission":
"Nincs jogosultságod megváltoztatni a \"{filename}\" fájl nevét",
"error.file.duplicate": "Már létezik \"{filename}\" nevű fájl",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "K\u00e9rlek er\u0151s\u00edtsd meg a jelsz\u00f3t",
"error.user.password.undefined": "A felhasználónak nincs jelszó megadva",
"error.user.role.invalid": "Kérlek adj meg egy megfelelő szerepkört",
- "error.user.undefined": "A felhaszn\u00e1l\u00f3 nem tal\u00e1lhat\u00f3",
"error.user.update.permission":
"Nincs jogosultságod frissíteni \"{name}\" felhasználó adatait",
@@ -412,6 +413,17 @@
"translation.name": "Magyar",
"upload": "Feltöltés",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Hiba",
"upload.progress": "Feltöltés...",
diff --git a/kirby/i18n/translations/id.json b/kirby/i18n/translations/id.json
index 0855268..6931b2e 100755
--- a/kirby/i18n/translations/id.json
+++ b/kirby/i18n/translations/id.json
@@ -33,10 +33,11 @@
"dialog.users.empty": "Tidak ada pengguna untuk dipilih",
"email": "Surel",
- "email.placeholder": "surel@contohsurel.com",
+ "email.placeholder": "surel@contoh.com",
"error.access.login": "Upaya masuk tidak valid",
"error.access.panel": "Anda tidak diizinkan mengakses panel",
+ "error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Gambar profil tidak dapat diunggah",
"error.avatar.delete.fail": "Gambar profil tidak dapat dihapus",
@@ -45,12 +46,13 @@
"error.avatar.mime.forbidden":
"Gambar profil harus berupa berkas JPEG atau PNG",
- "error.blueprint.notFound": "Blueprint \"{name}\" tidak dapat dimuat",
+ "error.blueprint.notFound": "Cetak biru \"{name}\" tidak dapat dimuat",
"error.email.preset.notFound": "Surel \"{name}\" tidak dapat ditemukan",
"error.field.converter.invalid": "Konverter \"{converter}\" tidak valid",
+ "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission":
"Anda tidak diizinkan mengubah nama berkas \"{filename}\"",
"error.file.duplicate": "Berkas dengan nama \"{filename}\" sudah ada",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Sandi tidak cocok",
"error.user.password.undefined": "Pengguna tidak memiliki sandi",
"error.user.role.invalid": "Masukkan peran yang valid",
- "error.user.undefined": "Pengguna tidak dapat ditemukan",
"error.user.update.permission":
"Anda tidak diizinkan memperbaharui pengguna \"{name}\"",
@@ -265,7 +266,7 @@
"language.direction.ltr": "Kiri ke kanan",
"language.direction.rtl": "Kanan ke kiri",
"language.locale": "String \"PHP locale\"",
- "language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages",
+ "language.locale.warning": "Anda menggunakan pengaturan lokal ubah suaian. Ubah di berkas bahasa di /site/languages",
"language.name": "Nama",
"language.updated": "Bahasa sudah diperbaharui",
@@ -412,6 +413,17 @@
"translation.name": "Bahasa Indonesia",
"upload": "Unggah",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Kesalahan",
"upload.progress": "Mengunggah…",
diff --git a/kirby/i18n/translations/it.json b/kirby/i18n/translations/it.json
index 622c2ff..30dffa9 100755
--- a/kirby/i18n/translations/it.json
+++ b/kirby/i18n/translations/it.json
@@ -37,6 +37,7 @@
"error.access.login": "Login Invalido",
"error.access.panel": "Non ti è permesso accedere al pannello",
+ "error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Non è stato possibile caricare l'immagine del profilo",
"error.avatar.delete.fail": "Non è stato possibile eliminare l'immagine del profilo",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Convertitore \"{converter}\" non valido",
+ "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission":
"Non ti è permesso modificare il nome di \"{filename}\"",
"error.file.duplicate": "Un file con il nome \"{filename}\" esiste già",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Le password non corrispondono",
"error.user.password.undefined": "L'utente non ha una password",
"error.user.role.invalid": "Inserisci un ruolo valido",
- "error.user.undefined": "L'utente non \u00e8 stato trovato",
"error.user.update.permission":
"Non ti è permesso aggiornare l'utente \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Italiano",
"upload": "Carica",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Errore",
"upload.progress": "Caricamento...",
diff --git a/kirby/i18n/translations/ko.json b/kirby/i18n/translations/ko.json
index 8f399c9..8092ac6 100755
--- a/kirby/i18n/translations/ko.json
+++ b/kirby/i18n/translations/ko.json
@@ -37,6 +37,7 @@
"error.access.login": "로그인할 수 없습니다.",
"error.access.panel": "패널에 접근할 권한이 없습니다.",
+ "error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "프로필 이미지를 업로드할 수 없습니다.",
"error.avatar.delete.fail": "\ud504\ub85c\ud544 \uc774\ubbf8\uc9c0\ub97c \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "컨버터({converter})가 올바르지 않습니다.",
+ "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission":
"파일명({filename})을 변경할 권한이 없습니다.",
"error.file.duplicate": "파일명이 같은 파일({filename})이 있습니다.",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "\uc554\ud638\ub97c \ud655\uc778\ud558\uc138\uc694.",
"error.user.password.undefined": "암호가 설정되지 않았습니다.",
"error.user.role.invalid": "올바른 역할을 입력하세요.",
- "error.user.undefined": "\uc0ac\uc6a9\uc790\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.",
"error.user.update.permission":
"사용자({name})의 정보를 변경할 권한이 없습니다.",
@@ -412,6 +413,17 @@
"translation.name": "한국어",
"upload": "업로드",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "오류",
"upload.progress": "업로드 중…",
diff --git a/kirby/i18n/translations/lt.json b/kirby/i18n/translations/lt.json
index b7032ca..f9e3db0 100755
--- a/kirby/i18n/translations/lt.json
+++ b/kirby/i18n/translations/lt.json
@@ -37,6 +37,7 @@
"error.access.login": "Neteisingas prisijungimo vardas",
"error.access.panel": "Neturite teisės prisijungti prie valdymo pulto",
+ "error.access.view": "Neturite teisės peržiūrėti šios valdymo pulto dalies",
"error.avatar.create.fail": "Nepavyko įkelti profilio nuotraukos",
"error.avatar.delete.fail": "Nepavyko pašalinti profilio nuotraukos",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Neteisingas konverteris \"{converter}\"",
+ "error.file.changeName.empty": "Pavadinimas negali būti tuščias",
"error.file.changeName.permission":
"Neturite teisės pakeisti failo pavadinimo \"{filename}\"",
"error.file.duplicate": "Failas su pavadinimu \"{filename}\" jau yra",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Slaptažodžiai nesutampa",
"error.user.password.undefined": "Vartotojas neturi slaptažodžio",
"error.user.role.invalid": "Įrašykite teisingą rolę",
- "error.user.undefined": "Vartotojas nerastas",
"error.user.update.permission":
"Neturite teisės keisti vartotojo \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Lietuvių",
"upload": "Įkelti",
+ "upload.error.cantMove": "Įkeltas failas negali būti perkeltas",
+ "upload.error.cantWrite": "Nepavyko įrašyti failo į diską",
+ "upload.error.default": "Nepavyko įkelti failo",
+ "upload.error.extension": "Neįmanoma įkelti tokio tipo failo",
+ "upload.error.formSize": "Įkeltas failas viršija MAX_FILE_SIZE nustatymą, kuris buvo nurodytas formoje",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "Įkeltas failas viršija upload_max_filesize nustatymą faile php.ini",
+ "upload.error.noFile": "Failas nebuvo įkeltas",
+ "upload.error.noFiles": "Failai nebuvo įkelti",
+ "upload.error.partial": "Failas įkeltas tik iš dalies",
+ "upload.error.tmpDir": "Trūksta laikinojo katalogo",
"upload.errors": "Klaida",
"upload.progress": "Įkėlimas…",
diff --git a/kirby/i18n/translations/nb.json b/kirby/i18n/translations/nb.json
index 4c2b6af..cd547c6 100755
--- a/kirby/i18n/translations/nb.json
+++ b/kirby/i18n/translations/nb.json
@@ -37,6 +37,7 @@
"error.access.login": "Ugyldig innlogging",
"error.access.panel": "Du har ikke tilgang til panelet",
+ "error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Profilbildet kunne ikke lastes opp",
"error.avatar.delete.fail": "Profil bildet kunne ikke bli slette",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Ugyldig omformer \"{converter}\"",
+ "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission":
"Du er ikke tillatt å endre navnet til \"{filename}\"",
"error.file.duplicate": "En fil med navnet \"{filename}\" eksisterer allerede",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Vennligst bekreft passordet",
"error.user.password.undefined": "Brukeren har ikke et passord",
"error.user.role.invalid": "Vennligst skriv inn en gyldig rolle",
- "error.user.undefined": "Brukeren kunne ikke bli funnet",
"error.user.update.permission":
"Du har ikke tillatelse til å oppdatere brukeren \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Norsk Bokm\u00e5l",
"upload": "Last opp",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Feil",
"upload.progress": "Laster opp…",
diff --git a/kirby/i18n/translations/nl.json b/kirby/i18n/translations/nl.json
index b74fc4a..27bc6d6 100755
--- a/kirby/i18n/translations/nl.json
+++ b/kirby/i18n/translations/nl.json
@@ -37,6 +37,7 @@
"error.access.login": "Ongeldige login",
"error.access.panel": "Je hebt geen toegang tot het Panel",
+ "error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "De avatar kon niet worden geupload",
"error.avatar.delete.fail": "De avatar kan niet worden verwijderd",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Ongeldige converter \"{converter}\"",
+ "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission":
"Je hebt geen rechten om de naam te wijzigen van \"{filename}\"",
"error.file.duplicate": "Er bestaat al een bestand met de naam \"{filename}\"",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "De wachtwoorden komen niet overeen",
"error.user.password.undefined": "De gebruiker heeft geen wachtwoord",
"error.user.role.invalid": "Gelieve een geldige rol in te voeren",
- "error.user.undefined": "De gebruiker kan niet worden gevonden",
"error.user.update.permission":
"Je hebt geen rechten om gebruiker \"{name}\" te updaten",
@@ -412,6 +413,17 @@
"translation.name": "Nederlands",
"upload": "Upload",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Foutmelding",
"upload.progress": "Uploaden...",
diff --git a/kirby/i18n/translations/pl.json b/kirby/i18n/translations/pl.json
index d14c0b3..3d5f0ad 100755
--- a/kirby/i18n/translations/pl.json
+++ b/kirby/i18n/translations/pl.json
@@ -37,6 +37,7 @@
"error.access.login": "Nieprawidłowy login",
"error.access.panel": "Nie masz uprawnień by dostać się do panelu",
+ "error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Nie udało się załadować zdjęcia profilowego",
"error.avatar.delete.fail": "Nie udało się usunąć zdjęcia profilowego",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Nieprawidłowy konwerter \"{converter}\"",
+ "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission":
"Nie masz uprawnień, by zmienić nazwę \"{filename}\"",
"error.file.duplicate": "Istnieje już plik o nazwie \"{filename}\"",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Hasła nie są takie same",
"error.user.password.undefined": "Użytkownik nie ma hasła",
"error.user.role.invalid": "Wprowadź poprawną rolę",
- "error.user.undefined": "Nie można znaleźć użytkownika",
"error.user.update.permission":
"Nie masz uprawnień, by zaktualizować użytkownika \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Polski",
"upload": "Prześlij",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Błąd",
"upload.progress": "Przesyłanie…",
diff --git a/kirby/i18n/translations/pt_BR.json b/kirby/i18n/translations/pt_BR.json
index 0a68dcf..10adc3f 100755
--- a/kirby/i18n/translations/pt_BR.json
+++ b/kirby/i18n/translations/pt_BR.json
@@ -37,6 +37,7 @@
"error.access.login": "Login inválido",
"error.access.panel": "Você não tem permissão para acessar o painel",
+ "error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "A foto de perfil não pôde ser enviada",
"error.avatar.delete.fail": "A foto do perfil não pôde ser deletada",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Conversor \"{converter}\" inválido",
+ "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission":
"Você não tem permissão para alterar o nome de \"{filename}\"",
"error.file.duplicate": "Um arquivo com o nome \"{filename}\" já existe",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "As senhas não combinam",
"error.user.password.undefined": "O usuário não possui uma senha",
"error.user.role.invalid": "Digite um papel válido",
- "error.user.undefined": "Usu\u00e1rio n\u00e3o encontrado",
"error.user.update.permission":
"Você não tem permissão para atualizar o usuário \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Português (Brasileiro)",
"upload": "Enviar",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Erro",
"upload.progress": "Enviando…",
diff --git a/kirby/i18n/translations/pt_PT.json b/kirby/i18n/translations/pt_PT.json
index e59e8cb..e4c179a 100755
--- a/kirby/i18n/translations/pt_PT.json
+++ b/kirby/i18n/translations/pt_PT.json
@@ -37,6 +37,7 @@
"error.access.login": "Login inválido",
"error.access.panel": "Não tem permissões para aceder ao painel",
+ "error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "A foto de perfil não foi enviada",
"error.avatar.delete.fail": "A foto do perfil não foi deletada",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Conversor \"{converter}\" inválido",
+ "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission":
"Não tem permissões para alterar o nome de \"{filename}\"",
"error.file.duplicate": "Um arquivo com o nome \"{filename}\" já existe",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "As palavras-passe não combinam",
"error.user.password.undefined": "O utilizador não possui uma palavra-passe",
"error.user.role.invalid": "Digite uma função válida",
- "error.user.undefined": "Usu\u00e1rio n\u00e3o encontrado",
"error.user.update.permission":
"Não tem permissões para atualizar o utilizador \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Português (Europeu)",
"upload": "Enviar",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Erro",
"upload.progress": "A enviar…",
diff --git a/kirby/i18n/translations/ru.json b/kirby/i18n/translations/ru.json
index bb9d658..3c5c9f9 100755
--- a/kirby/i18n/translations/ru.json
+++ b/kirby/i18n/translations/ru.json
@@ -37,6 +37,7 @@
"error.access.login": "Неправильный логин",
"error.access.panel": "У вас нет права доступа к панели",
+ "error.access.view": "У вас нет прав доступа к этой части панели",
"error.avatar.create.fail": "Не удалось загрузить фотографию профиля",
"error.avatar.delete.fail": "\u0410\u0432\u0430\u0442\u0430\u0440 (\u0444\u043e\u0442\u043e) \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Неверный конвертер \"{converter}\"",
+ "error.file.changeName.empty": "Название не может быть пустым",
"error.file.changeName.permission":
"У вас нет права поменять название \"{filename}\"",
"error.file.duplicate": "Файл с названием \"{filename}\" уже есть",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u044c",
"error.user.password.undefined": "У пользователя нет пароля",
"error.user.role.invalid": "Впишите правильную роль",
- "error.user.undefined": "\u0410\u043a\u043a\u0430\u0443\u043d\u0442 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
"error.user.update.permission":
"У вас нет права обновить пользователя \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Русский (Russian)",
"upload": "Закачать",
+ "upload.error.cantMove": "Загруженный файл не может быть перемещен",
+ "upload.error.cantWrite": "Не получилось записать файл на диск",
+ "upload.error.default": "Не получилось загрузить файл",
+ "upload.error.extension": "Загрузка файла не удалась из за расширения",
+ "upload.error.formSize": "Загруженный файл больше чем MAX_FILE_SIZE настройка в форме",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "Загруженный файл больше чем upload_max_filesize настройка в php.ini",
+ "upload.error.noFile": "Файл не был загружен",
+ "upload.error.noFiles": "Файлы не были загружены",
+ "upload.error.partial": "Файл загружен только частично",
+ "upload.error.tmpDir": "Не хватает временной папки",
"upload.errors": "Ошибка",
"upload.progress": "Закачивается...",
diff --git a/kirby/i18n/translations/sk.json b/kirby/i18n/translations/sk.json
index 622d794..e9908cb 100755
--- a/kirby/i18n/translations/sk.json
+++ b/kirby/i18n/translations/sk.json
@@ -37,6 +37,7 @@
"error.access.login": "Neplatné prihlásenie",
"error.access.panel": "Nemáte povolenie na prístup do Panel-u",
+ "error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Profilový obrázok sa nepodarilo nahrať",
"error.avatar.delete.fail": "Profilový obrázok sa nepodarilo zmazať",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Neplatný converter \"{converter}\"",
+ "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission":
"Nemáte povolenie na zmenu názvu pre \"{filename}\"",
"error.file.duplicate": "Súbor s názvom \"{filename}\" už existuje",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Heslá nie sú rovnaké",
"error.user.password.undefined": "Užívateľ nemá heslo",
"error.user.role.invalid": "Prosím, zadajte platnú rolu",
- "error.user.undefined": "Užívateľa sa nepodarilo nájsť",
"error.user.update.permission":
"Nemáte povolenie na aktualizáciu užívateľa \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Slovensky",
"upload": "Nahrať",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Chyba",
"upload.progress": "Nahrávanie...",
diff --git a/kirby/i18n/translations/sv_SE.json b/kirby/i18n/translations/sv_SE.json
index 4ce9bf4..f857d35 100755
--- a/kirby/i18n/translations/sv_SE.json
+++ b/kirby/i18n/translations/sv_SE.json
@@ -37,6 +37,7 @@
"error.access.login": "Ogiltig inloggning",
"error.access.panel": "Du saknar behörighet att nå panelen",
+ "error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Profilbilden kunde inte laddas upp",
"error.avatar.delete.fail": "Profilbilden kunde inte raderas",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Ogiltig omvandlare \"{converter}\"",
+ "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission":
"Du har inte behörighet att ändra namnet på \"{filename}\"",
"error.file.duplicate": "En fil med namnet \"{filename}\" existerar redan",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Lösenorden matchar inte",
"error.user.password.undefined": "Användaren har inget lösenord",
"error.user.role.invalid": "Ange en giltig roll",
- "error.user.undefined": "Användaren kan inte hittas",
"error.user.update.permission":
"Du har inte behörighet att uppdatera användaren \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Svenska",
"upload": "Ladda upp",
+ "upload.error.cantMove": "The uploaded file could not be moved",
+ "upload.error.cantWrite": "Failed to write file to disk",
+ "upload.error.default": "The file could not be uploaded",
+ "upload.error.extension": "File upload stopped by extension",
+ "upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
+ "upload.error.noFile": "No file was uploaded",
+ "upload.error.noFiles": "No files were uploaded",
+ "upload.error.partial": "The uploaded file was only partially uploaded",
+ "upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Fel",
"upload.progress": "Laddar upp...",
diff --git a/kirby/i18n/translations/tr.json b/kirby/i18n/translations/tr.json
index 76f4d22..163bda3 100755
--- a/kirby/i18n/translations/tr.json
+++ b/kirby/i18n/translations/tr.json
@@ -37,6 +37,7 @@
"error.access.login": "Geçersiz giriş",
"error.access.panel": "Panele erişim izniniz yok",
+ "error.access.view": "Panelin bu bölümüne erişemezsiniz",
"error.avatar.create.fail": "Profil resmi yüklenemedi",
"error.avatar.delete.fail": "Profil resmi silinemedi",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Geçersiz dönüştürücü \"{converter}\"",
+ "error.file.changeName.empty": "İsim boş olmamalıdır",
"error.file.changeName.permission":
"\"{filename}\" adını değiştiremezsiniz",
"error.file.duplicate": "\"{filename}\" isimli bir dosya zaten var",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "L\u00fctfen \u015fifreyi do\u011frulay\u0131n",
"error.user.password.undefined": "Bu kullanıcının şifresi yok",
"error.user.role.invalid": "Lütfen geçerli bir rol girin",
- "error.user.undefined": "Kullan\u0131c\u0131 bulunamad\u0131",
"error.user.update.permission":
"\"{name}\" kullanıcısını güncellemenize izin verilmiyor",
@@ -325,7 +326,7 @@
"next": "Sonraki",
"off": "kapalı",
"on": "açık",
- "open": "Önizle",
+ "open": "Önizleme",
"options": "Seçenekler",
"orientation": "Oryantasyon",
@@ -412,6 +413,17 @@
"translation.name": "T\u00fcrk\u00e7e",
"upload": "Yükle",
+ "upload.error.cantMove": "Yüklenen dosya taşınamadı",
+ "upload.error.cantWrite": "Dosya diske yazılamadı",
+ "upload.error.default": "Dosya yüklenemedi",
+ "upload.error.extension": "Dosya yükleme uzantısı tarafından durduruldu",
+ "upload.error.formSize": "Yüklenen dosya, formda belirtilen MAX_FILE_SIZE yönergesini aşıyor",
+ "upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
+ "upload.error.iniSize": "Yüklenen dosya php.ini içindeki upload_max_filesize yönergesini aşıyor",
+ "upload.error.noFile": "Dosya yüklenmedi",
+ "upload.error.noFiles": "Dosyalar yüklenmedi",
+ "upload.error.partial": "Yüklenen dosya sadece kısmen yüklendi",
+ "upload.error.tmpDir": "Geçici klasör eksik",
"upload.errors": "Hata",
"upload.progress": "Yükleniyor...",
diff --git a/kirby/panel/dist/css/app.css b/kirby/panel/dist/css/app.css
index 6330929..f249e71 100755
--- a/kirby/panel/dist/css/app.css
+++ b/kirby/panel/dist/css/app.css
@@ -1 +1 @@
-*,:after,:before{margin:0;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}noscript{padding:1.5rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100vh;text-align:center}html{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;background:#efefef}body,html{color:#16171a;overflow:hidden;height:100%}a{color:inherit;text-decoration:none}li{list-style:none}b,strong{font-weight:600}.fade-enter-active,.fade-leave-active{-webkit-transition:opacity .5s;transition:opacity .5s}.fade-enter,.fade-leave-to{opacity:0}.k-panel{position:absolute;top:0;right:0;bottom:0;left:0;background:#efefef}.k-panel[data-loading]{-webkit-animation:LoadingCursor .5s;animation:LoadingCursor .5s}.k-panel-header{position:absolute;top:0;left:0;right:0;z-index:300}.k-panel .k-form-buttons{position:fixed;bottom:0;left:0;right:0;z-index:300}.k-panel-view{position:absolute;top:0;right:0;bottom:0;left:0;padding-bottom:6rem;overflow-y:scroll;-webkit-overflow-scrolling:touch;-webkit-transform:translateZ(0);transform:translateZ(0)}.k-panel[data-dialog] .k-panel-view{overflow:hidden;-webkit-transform:none;transform:none}.k-panel[data-topbar] .k-panel-view{top:2.5rem}.k-panel[data-dragging],.k-panel[data-loading]:after{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.k-offline-warning{position:fixed;content:" ";top:0;right:0;bottom:0;left:0;z-index:900;background:rgba(22,23,26,.7);content:"offline";display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff}@-webkit-keyframes LoadingCursor{to{cursor:progress}}@keyframes LoadingCursor{to{cursor:progress}}@-webkit-keyframes Spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes Spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.k-offscreen{-webkit-clip-path:inset(100%);clip-path:inset(100%);clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.k-icons{position:absolute;width:0;height:0}.k-dialog{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:fixed;top:0;right:0;bottom:0;left:0;border:0;width:100%;height:100%;background:rgba(22,23,26,.6);z-index:600;-webkit-transform:translateZ(0);transform:translateZ(0)}.k-dialog,.k-dialog-box{display:-webkit-box;display:-ms-flexbox;display:flex}.k-dialog-box{position:relative;background:#efefef;width:22rem;-webkit-box-shadow:rgba(22,23,26,.2) 0 2px 10px;box-shadow:0 2px 10px rgba(22,23,26,.2);border-radius:1px;line-height:1;max-height:calc(100vh - 3rem);margin:1.5rem;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.k-dialog-box[data-size=small]{width:20rem}.k-dialog-box[data-size=medium]{width:30rem}.k-dialog-box[data-size=large]{width:40rem}.k-dialog-notification{padding:.75rem 1.5rem;background:#16171a;width:100%;line-height:1.25rem;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-dialog-notification[data-theme=error]{background:#d16464;color:#000}.k-dialog-notification[data-theme=success]{background:#a7bd68;color:#000}.k-dialog-notification p{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;word-wrap:break-word;overflow:hidden}.k-dialog-notification .k-button{display:-webkit-box;display:-ms-flexbox;display:flex;margin-left:1rem}.k-dialog-body{padding:1.5rem;overflow-y:auto;overflow-x:hidden}.k-dialog-body .k-fieldset{padding-bottom:.5rem}.k-dialog-footer{border-top:1px solid #ccc;padding:0;border-bottom-left-radius:1px;border-bottom-right-radius:1px;line-height:1;-ms-flex-negative:0;flex-shrink:0}.k-dialog-footer .k-button-group{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.k-dialog-footer .k-button-group .k-button{padding:.75rem 1rem;line-height:1.25rem}.k-dialog-footer .k-button-group .k-button:first-child{text-align:left;padding-left:1.5rem}.k-dialog-footer .k-button-group .k-button:last-child{text-align:right;padding-right:1.5rem}.k-error-details{background:#fff;display:block;overflow:auto;padding:1rem;font-size:.875rem;line-height:1.25em;margin-top:.75rem}.k-error-details dt{color:#d16464;margin-bottom:.25rem}.k-error-details dd{overflow:hidden;overflow-wrap:break-word;text-overflow:ellipsis}.k-error-details dd:not(:last-of-type){margin-bottom:1.5em}.k-error-details li:not(:last-child){border-bottom:1px solid #efefef;padding-bottom:.25rem;margin-bottom:.25rem}.k-files-dialog .k-list-item{cursor:pointer}.k-page-remove-warning{margin:1.5rem 0}.k-page-remove-warning .k-box{font-size:1rem;line-height:1.5em;padding-top:.75rem;padding-bottom:.75rem}.k-pages-dialog-navbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:.5rem;padding-right:38px}.k-pages-dialog-navbar .k-button{width:38px}.k-pages-dialog-navbar .k-button[disabled]{opacity:0}.k-pages-dialog-navbar .k-headline{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.k-pages-dialog-search{margin-bottom:.5rem}.k-pages-dialog .k-list-item{cursor:pointer}.k-pages-dialog .k-list-item .k-button[data-theme=disabled],.k-pages-dialog .k-list-item .k-button[disabled]{opacity:.25}.k-pages-dialog .k-list-item .k-button[data-theme=disabled]:hover{opacity:1}.k-users-dialog .k-list-item{cursor:pointer}.k-calendar-input{padding:.5rem;background:#16171a;color:#efefef;border-radius:1px}.k-calendar-table{table-layout:fixed;width:100%;min-width:15rem;padding-top:.5rem}.k-calendar-input>nav{display:-webkit-box;display:-ms-flexbox;display:flex;direction:ltr}.k-calendar-input>nav .k-button{padding:.5rem}.k-calendar-selects{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}[dir=ltr] .k-calendar-selects{direction:ltr}[dir=rtl] .k-calendar-selects{direction:rtl}.k-calendar-selects .k-select-input{padding:0 .5rem;font-weight:400;font-size:.875rem}.k-calendar-selects .k-select-input:focus-within{color:#81a2be!important}.k-calendar-input th{padding:.5rem 0;color:#999;font-size:.75rem;font-weight:400;text-align:center}.k-calendar-day .k-button{width:2rem;height:2rem;margin:0 auto;color:#fff;line-height:1.75rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;border:2px solid transparent}.k-calendar-day .k-button .k-button-text{opacity:1}.k-calendar-table .k-button:hover{color:#fff}.k-calendar-day:hover .k-button{border-color:hsla(0,0%,100%,.25)}.k-calendar-day[aria-current=date] .k-button{color:#81a2be;font-weight:500}.k-calendar-day[aria-selected=date] .k-button{border-color:#a7bd68;color:#a7bd68}.k-calendar-today{text-align:center;padding-top:.5rem}.k-calendar-today .k-button{color:#81a2be;font-size:.75rem;padding:1rem}.k-calendar-today .k-button-text{opacity:1}.k-counter{font-size:.75rem;color:#16171a;font-weight:600}.k-counter[data-invalid]{color:#c82829}.k-counter-rules{color:#777;font-weight:400}[dir=ltr] .k-counter-rules{padding-left:.5rem}[dir=rtl] .k-counter-rules{padding-right:.5rem}.k-form-submitter{display:none}.k-form-buttons[data-theme=changes]{background:#de935f}.k-form-buttons[data-theme=lock]{background:#d16464}.k-form-buttons[data-theme=unlock]{background:#81a2be}.k-form-buttons .k-view{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.k-form-button,.k-form-buttons .k-view{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-form-button{font-weight:500;white-space:nowrap;line-height:1;height:2.5rem;padding:0 1rem}.k-form-button:first-child{margin-left:-1rem}.k-form-button:last-child{margin-right:-1rem}.k-form-lock-info{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.875rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1.5em;padding:.625rem 0;margin-right:3rem}.k-form-lock-info>.k-icon{margin-right:.5rem}.k-form-lock-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}.k-form-indicator-icon{color:#de935f}.k-form-indicator-info{font-size:.875rem;font-weight:600;padding:.75rem 1rem .25rem;line-height:1.25em;width:15rem}.k-field-label{font-weight:600;display:block;padding:0 0 .75rem;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;line-height:1.25rem}.k-field-label abbr{text-decoration:none;color:#999;padding-left:.25rem}.k-field-header{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.k-field-options{position:absolute;top:calc(-.5rem - 1px)}[dir=ltr] .k-field-options{right:0}[dir=rtl] .k-field-options{left:0}.k-field-options.k-button-group .k-dropdown{height:auto}.k-field-options.k-button-group .k-field-options-button.k-button{padding:.75rem;display:-webkit-box;display:-ms-flexbox;display:flex}.k-field[data-disabled]{cursor:not-allowed}.k-field[data-disabled] *{pointer-events:none}.k-field:focus-within>.k-field-header>.k-field-counter{display:block}.k-field-help{padding-top:.5rem}.k-fieldset{border:0}.k-fieldset .k-grid{grid-row-gap:2.25rem}@media screen and (min-width:30em){.k-fieldset .k-grid{grid-column-gap:1.5rem}}.k-sections>.k-column[data-width="1/3"] .k-fieldset .k-grid,.k-sections>.k-column[data-width="1/4"] .k-fieldset .k-grid{grid-template-columns:repeat(1,1fr)}.k-sections>.k-column[data-width="1/3"] .k-fieldset .k-grid .k-column,.k-sections>.k-column[data-width="1/4"] .k-fieldset .k-grid .k-column{grid-column-start:auto}.k-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1;border:0;outline:0;background:none}.k-input-element{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.k-input-icon{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:0}.k-input[data-disabled]{pointer-events:none}.k-input[data-theme=field]{line-height:1;border:1px solid #ccc;background:#fff}.k-input[data-theme=field]:focus-within{border:1px solid #4271ae;-webkit-box-shadow:rgba(66,113,174,.25) 0 0 0 2px;box-shadow:0 0 0 2px rgba(66,113,174,.25)}.k-input[data-theme=field][data-disabled]{background:#efefef}.k-input[data-theme=field][data-invalid]{border:1px solid rgba(200,40,41,.25);-webkit-box-shadow:rgba(200,40,41,.25) 0 0 3px 2px;box-shadow:0 0 3px 2px rgba(200,40,41,.25)}.k-input[data-theme=field][data-invalid]:focus-within{border:1px solid #c82829;-webkit-box-shadow:rgba(200,40,41,.25) 0 0 0 2px;box-shadow:0 0 0 2px rgba(200,40,41,.25)}.k-input[data-theme=field] .k-input-icon{width:2.25rem}.k-input[data-theme=field] .k-input-after,.k-input[data-theme=field] .k-input-before,.k-input[data-theme=field] .k-input-icon{-ms-flex-item-align:stretch;align-self:stretch;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-negative:0;flex-shrink:0}.k-input[data-theme=field] .k-input-after,.k-input[data-theme=field] .k-input-before{padding:0 .5rem}.k-input[data-theme=field] .k-input-before{color:#777;padding-right:0}.k-input[data-theme=field] .k-input-after{color:#777;padding-left:0}.k-input[data-theme=field] .k-input-icon>.k-dropdown{width:100%;height:100%}.k-input[data-theme=field] .k-input-icon-button{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0}.k-input[data-theme=field] .k-number-input,.k-input[data-theme=field] .k-select-input,.k-input[data-theme=field] .k-text-input{padding:.5rem;line-height:1.25rem}.k-input[data-theme=field] .k-date-input .k-select-input,.k-input[data-theme=field] .k-time-input .k-select-input{padding-left:0;padding-right:0}[dir=ltr] .k-input[data-theme=field] .k-date-input .k-select-input:first-child,[dir=ltr] .k-input[data-theme=field] .k-time-input .k-select-input:first-child{padding-left:.5rem}[dir=rtl] .k-input[data-theme=field] .k-date-input .k-select-input:first-child,[dir=rtl] .k-input[data-theme=field] .k-time-input .k-select-input:first-child{padding-right:.5rem}.k-input[data-theme=field] .k-date-input .k-select-input:focus-within,.k-input[data-theme=field] .k-time-input .k-select-input:focus-within{color:#4271ae;font-weight:600}.k-input[data-theme=field] .k-time-input .k-time-input-meridiem{padding-left:.5rem}.k-input[data-theme=field][data-type=checkboxes] .k-checkboxes-input li,.k-input[data-theme=field][data-type=checkboxes] .k-radio-input li,.k-input[data-theme=field][data-type=radio] .k-checkboxes-input li,.k-input[data-theme=field][data-type=radio] .k-radio-input li{min-width:0;overflow-wrap:break-word}.k-input[data-theme=field][data-type=checkboxes] .k-input-before{border-right:1px solid #efefef}.k-input[data-theme=field][data-type=checkboxes] .k-input-element+.k-input-after,.k-input[data-theme=field][data-type=checkboxes] .k-input-element+.k-input-icon{border-left:1px solid #efefef}.k-input[data-theme=field][data-type=checkboxes] .k-input-element{overflow:hidden}.k-input[data-theme=field][data-type=checkboxes] .k-checkboxes-input{display:grid;grid-template-columns:1fr;margin-bottom:-1px;margin-right:-1px}@media screen and (min-width:65em){.k-input[data-theme=field][data-type=checkboxes] .k-checkboxes-input{grid-template-columns:repeat(var(--columns),1fr)}}.k-input[data-theme=field][data-type=checkboxes] .k-checkboxes-input li{border-right:1px solid #efefef;border-bottom:1px solid #efefef}.k-input[data-theme=field][data-type=checkboxes] .k-checkboxes-input label{display:block;line-height:1.25rem;padding:.5rem .5rem}.k-input[data-theme=field][data-type=checkboxes] .k-checkbox-input-icon{top:.625rem;left:.5rem;margin-top:0}.k-input[data-theme=field][data-type=radio] .k-input-before{border-right:1px solid #efefef}.k-input[data-theme=field][data-type=radio] .k-input-element+.k-input-after,.k-input[data-theme=field][data-type=radio] .k-input-element+.k-input-icon{border-left:1px solid #efefef}.k-input[data-theme=field][data-type=radio] .k-input-element{overflow:hidden}.k-input[data-theme=field][data-type=radio] .k-radio-input{display:grid;grid-template-columns:1fr;margin-bottom:-1px;margin-right:-1px}@media screen and (min-width:65em){.k-input[data-theme=field][data-type=radio] .k-radio-input{grid-template-columns:repeat(var(--columns),1fr)}}.k-input[data-theme=field][data-type=radio] .k-radio-input li{border-right:1px solid #efefef;border-bottom:1px solid #efefef}.k-input[data-theme=field][data-type=radio] .k-radio-input label{display:block;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;min-height:2.25rem;line-height:1.25rem;padding:.5rem .5rem}.k-input[data-theme=field][data-type=radio] .k-radio-input label:before{top:.625rem;left:.5rem;margin-top:-1px}.k-input[data-theme=field][data-type=radio] .k-radio-input .k-radio-input-info{display:block;font-size:.875rem;color:#777;line-height:1.25rem;padding-top:.125rem}.k-input[data-theme=field][data-type=radio] .k-radio-input .k-icon{width:2.25rem;height:2.25rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.k-input[data-theme=field][data-type=range] .k-range-input{padding:.5rem}.k-input[data-theme=field][data-type=select]{position:relative}.k-input[data-theme=field][data-type=select] .k-input-icon{position:absolute;top:0;bottom:0}[dir=ltr] .k-input[data-theme=field][data-type=select] .k-input-icon{right:0}[dir=rtl] .k-input[data-theme=field][data-type=select] .k-input-icon{left:0}.k-input[data-theme=field][data-type=tags] .k-tags-input{padding:.25rem .25rem 0 .25rem}.k-input[data-theme=field][data-type=tags] .k-tag{margin-right:.25rem;margin-bottom:.25rem;height:1.75rem;font-size:.875rem}.k-input[data-theme=field][data-type=tags] .k-tags-input input{font-size:.875rem;padding:0 .25rem;height:1.75rem;line-height:1;margin-bottom:.25rem}.k-input[data-theme=field][data-type=tags] .k-tags-input .k-dropdown-content{top:calc(100% + .5rem + 2px)}.k-input[data-theme=field][data-type=multiselect]{position:relative}.k-input[data-theme=field][data-type=multiselect] .k-multiselect-input{padding:.25rem 2rem 0 .25rem;min-height:2.25rem}.k-input[data-theme=field][data-type=multiselect] .k-tag{margin-right:.25rem;margin-bottom:.25rem;height:1.75rem;font-size:.875rem}.k-input[data-theme=field][data-type=multiselect] .k-input-icon{position:absolute;top:0;right:0;bottom:0;pointer-events:none}.k-input[data-theme=field][data-type=textarea] .k-textarea-input-native{padding:.25rem .5rem;line-height:1.5rem}.k-input[data-theme=field][data-type=toggle] .k-input-before{padding-right:.25rem}.k-input[data-theme=field][data-type=toggle] .k-toggle-input{padding-left:.5rem}.k-input[data-theme=field][data-type=toggle] .k-toggle-input-label{padding:0 .5rem 0 .75rem;line-height:2.25rem}.k-upload input{position:absolute;top:0}[dir=ltr] .k-upload input{left:-3000px}[dir=rtl] .k-upload input{right:-3000px}.k-upload .k-headline{margin-bottom:.75rem}.k-upload-error-list,.k-upload-list{line-height:1.5em;font-size:.875rem}.k-upload-list-filename{color:#777}.k-upload-error-list li{padding:.75rem;background:#fff;border-radius:1px}.k-upload-error-list li:not(:last-child){margin-bottom:2px}.k-upload-error-filename{color:#c82829;font-weight:600}.k-upload-error-message{color:#777}.k-checkbox-input{position:relative;cursor:pointer}.k-checkbox-input-native{position:absolute;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:0;height:0;opacity:0}.k-checkbox-input-label{display:block;padding-left:1.75rem}.k-checkbox-input-icon{position:absolute;left:0;width:1rem;height:1rem;border:2px solid #999}.k-checkbox-input-icon svg{position:absolute;width:12px;height:12px;display:none}.k-checkbox-input-icon path{stroke:#fff}.k-checkbox-input-native:checked+.k-checkbox-input-icon{border-color:#16171a;background:#16171a}.k-checkbox-input-native:checked+.k-checkbox-input-icon svg{display:block}.k-checkbox-input-native:focus+.k-checkbox-input-icon{border-color:#4271ae}.k-checkbox-input-native:focus:checked+.k-checkbox-input-icon{background:#4271ae}.k-date-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-date-input-separator{padding:0 .125rem}.k-datetime-input{display:-webkit-box;display:-ms-flexbox;display:flex}.k-datetime-input .k-time-input{padding-left:.5rem}.k-text-input{width:100%;border:0;background:none;font:inherit;color:inherit}.k-text-input::-webkit-input-placeholder{color:#999}.k-text-input::-moz-placeholder{color:#999}.k-text-input:-ms-input-placeholder{color:#999}.k-text-input::-ms-input-placeholder{color:#999}.k-text-input::placeholder{color:#999}.k-text-input:focus{outline:0}.k-text-input:invalid{-webkit-box-shadow:none;box-shadow:none;outline:0}.k-multiselect-input{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;position:relative;font-size:.875rem;min-height:2.25rem;line-height:1}.k-multiselect-input .k-sortable-ghost{background:#4271ae}.k-multiselect-input .k-dropdown-content{width:100%}.k-multiselect-search{margin-top:0!important;color:#fff;background:#16171a;border-bottom:1px dashed hsla(0,0%,100%,.2)}.k-multiselect-search>.k-button-text{-webkit-box-flex:1;-ms-flex:1;flex:1}.k-multiselect-search input{width:100%;color:#fff;background:none;border:none;outline:none;padding:.25rem 0;font:inherit}.k-multiselect-options{position:relative;max-height:240px;overflow-y:scroll;padding:.5rem 0}.k-multiselect-option{position:relative}.k-multiselect-option.selected{color:#a7bd68}.k-multiselect-option.disabled:not(.selected) .k-icon{opacity:0}.k-multiselect-option b{color:#81a2be;font-weight:700}.k-multiselect-value{color:#999;margin-left:.25rem}.k-multiselect-value:before{content:" ("}.k-multiselect-value:after{content:")"}.k-multiselect-input[data-layout=list] .k-tag{width:100%;margin-right:0!important}.k-number-input{width:100%;border:0;background:none;font:inherit;color:inherit}.k-number-input::-webkit-input-placeholder{color:$color-light-grey}.k-number-input::-moz-placeholder{color:$color-light-grey}.k-number-input:-ms-input-placeholder{color:$color-light-grey}.k-number-input::-ms-input-placeholder{color:$color-light-grey}.k-number-input::placeholder{color:$color-light-grey}.k-number-input:focus{outline:0}.k-number-input:invalid{-webkit-box-shadow:none;box-shadow:none;outline:0}.k-radio-input li{position:relative;line-height:1.5rem;padding-left:1.75rem}.k-radio-input input{position:absolute;width:0;height:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;opacity:0}.k-radio-input label{cursor:pointer;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-radio-input label:before{position:absolute;top:.175em;left:0;content:"";width:1rem;height:1rem;border-radius:50%;border:2px solid #999;-webkit-box-shadow:#fff 0 0 0 2px inset;box-shadow:inset 0 0 0 2px #fff}.k-radio-input input:checked+label:before{border-color:#16171a;background:#16171a}.k-radio-input input:focus+label:before{border-color:#4271ae}.k-radio-input input:focus:checked+label:before{background:#4271ae}.k-radio-input-text{display:block}.k-range-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-range-input-native{--min:0;--max:100;--value:0;--range:calc(var(--max) - var(--min));--ratio:calc((var(--value) - var(--min))/var(--range));--position:calc(8px + var(--ratio)*(100% - 16px));-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:16px;background:transparent;font-size:.875rem;line-height:1}.k-range-input-native::-webkit-slider-thumb{-webkit-appearance:none;appearance:none}.k-range-input-native::-webkit-slider-runnable-track{border:none;border-radius:4px;width:100%;height:4px;background:#ccc;background:-webkit-gradient(linear,left top,left bottom,from(#16171a),to(#16171a)) 0/var(--position) 100% no-repeat #ccc;background:linear-gradient(#16171a,#16171a) 0/var(--position) 100% no-repeat #ccc}.k-range-input-native::-moz-range-track{border:none;border-radius:4px;width:100%;height:4px;background:#ccc}.k-range-input-native::-ms-track{border:none;border-radius:4px;width:100%;height:4px;background:#ccc}.k-range-input-native::-moz-range-progress{height:4px;background:#16171a}.k-range-input-native::-ms-fill-lower{height:4px;background:#16171a}.k-range-input-native::-webkit-slider-thumb{margin-top:-6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:16px;height:16px;background:#efefef;border:4px solid #16171a;border-radius:50%;cursor:pointer}.k-range-input-native::-moz-range-thumb{box-sizing:border-box;width:16px;height:16px;background:#efefef;border:4px solid #16171a;border-radius:50%;cursor:pointer}.k-range-input-native::-ms-thumb{margin-top:0;box-sizing:border-box;width:16px;height:16px;background:#efefef;border:4px solid #16171a;border-radius:50%;cursor:pointer}.k-range-input-native::-ms-tooltip{display:none}.k-range-input-native:focus{outline:none}.k-range-input-native:focus::-webkit-slider-runnable-track{border:none;border-radius:4px;width:100%;height:4px;background:#ccc;background:-webkit-gradient(linear,left top,left bottom,from(#4271ae),to(#4271ae)) 0/var(--position) 100% no-repeat #ccc;background:linear-gradient(#4271ae,#4271ae) 0/var(--position) 100% no-repeat #ccc}.k-range-input-native:focus::-moz-range-progress{height:4px;background:#4271ae}.k-range-input-native:focus::-ms-fill-lower{height:4px;background:#4271ae}.k-range-input-native:focus::-webkit-slider-thumb{background:#efefef;border:4px solid #4271ae}.k-range-input-native:focus::-moz-range-thumb{background:#efefef;border:4px solid #4271ae}.k-range-input-native:focus::-ms-thumb{background:#efefef;border:4px solid #4271ae}.k-range-input-tooltip{position:relative;max-width:20%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#fff;font-size:.75rem;line-height:1;text-align:center;border-radius:1px;background:#16171a;margin-left:1rem;padding:0 .25rem;white-space:nowrap}.k-range-input-tooltip:after{position:absolute;top:50%;left:-5px;width:0;height:0;-webkit-transform:translateY(-50%);transform:translateY(-50%);border-top:5px solid transparent;border-right:5px solid #16171a;border-bottom:5px solid transparent;content:""}.k-range-input-tooltip>*{padding:4px}.k-select-input{position:relative;display:block;cursor:pointer;overflow:hidden}.k-select-input-native{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;width:100%;font:inherit;z-index:1;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.k-select-input-native[disabled]{cursor:default}.k-select-input-native{font-weight:400}.k-tags-input{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.k-tags-input .k-sortable-ghost{background:#4271ae}.k-tags-input-element{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;min-width:0}.k-tags-input:focus-within .k-tags-input-element{-ms-flex-preferred-size:4rem;flex-basis:4rem}.k-tags-input-element input{font:inherit;border:0;width:100%;background:none}.k-tags-input-element input:focus{outline:0}.k-tags-input[data-layout=list] .k-tag{width:100%;margin-right:0!important}.k-textarea-input-wrapper{position:relative}.k-textarea-input-native{resize:none;border:0;width:100%;background:none;font:inherit;line-height:1.5em;color:inherit}.k-textarea-input-native::-webkit-input-placeholder{color:#999}.k-textarea-input-native::-moz-placeholder{color:#999}.k-textarea-input-native:-ms-input-placeholder{color:#999}.k-textarea-input-native::-ms-input-placeholder{color:#999}.k-textarea-input-native::placeholder{color:#999}.k-textarea-input-native:focus{outline:0}.k-textarea-input-native:invalid{-webkit-box-shadow:none;box-shadow:none;outline:0}.k-textarea-input-native[data-size=small]{min-height:7.5rem}.k-textarea-input-native[data-size=medium]{min-height:15rem}.k-textarea-input-native[data-size=large]{min-height:30rem}.k-textarea-input-native[data-size=huge]{min-height:45rem}.k-textarea-input-native[data-font=monospace]{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}.k-toolbar{margin-bottom:.25rem;color:#aaa}.k-textarea-input:focus-within .k-toolbar{position:-webkit-sticky;position:sticky;top:0;right:0;left:0;z-index:1;-webkit-box-shadow:rgba(0,0,0,.05) 0 2px 5px;box-shadow:0 2px 5px rgba(0,0,0,.05);border-bottom:1px solid rgba(0,0,0,.1);color:#000}.k-time-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1}.k-time-input-separator{padding:0 .125rem}.k-time-input-meridiem{padding-left:.5rem}.k-toggle-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-toggle-input-native{position:relative;height:16px;width:32px;border-radius:16px;border:2px solid #999;-webkit-box-shadow:inset 0 0 0 2px #fff,inset -16px 0 0 2px #fff;box-shadow:inset 0 0 0 2px #fff,inset -16px 0 0 2px #fff;background-color:#999;outline:0;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.k-toggle-input-native:checked{border-color:#16171a;-webkit-box-shadow:inset 0 0 0 2px #fff,inset 16px 0 0 2px #fff;box-shadow:inset 0 0 0 2px #fff,inset 16px 0 0 2px #fff;background-color:#16171a}.k-toggle-input-native[disabled]{border-color:#ccc;-webkit-box-shadow:inset 0 0 0 2px #efefef,inset 16px 0 0 2px #efefef;box-shadow:inset 0 0 0 2px #efefef,inset 16px 0 0 2px #efefef;background-color:#ccc}.k-toggle-input-native:focus:checked{border:2px solid #4271ae;background-color:#4271ae}.k-toggle-input-native::-ms-check{opacity:0}.k-toggle-input-label{cursor:pointer;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.k-files-field[data-disabled] *{pointer-events:all!important}body{counter-reset:headline-counter}.k-headline-field{position:relative;padding-top:1.5rem}.k-headline-field[data-numbered]:before{counter-increment:headline-counter;content:counter(headline-counter,decimal-leading-zero);color:#4271ae;font-weight:400;padding-right:.25rem}.k-fieldset>.k-grid .k-column:first-child .k-headline-field{padding-top:0}.k-info-field .k-headline{padding-bottom:.75rem;line-height:1.25rem}.k-line-field{position:relative;border:0;height:3rem;width:auto}.k-line-field:after{position:absolute;content:"";top:50%;margin-top:-1px;left:0;right:0;height:1px;background:#ccc}.k-pages-field[data-disabled] *{pointer-events:all!important}.k-structure-table{table-layout:fixed;width:100%;background:#fff;font-size:.875rem;border-spacing:0;-webkit-box-shadow:rgba(22,23,26,.05) 0 2px 5px;box-shadow:0 2px 5px rgba(22,23,26,.05)}.k-structure-table td,.k-structure-table th{border-bottom:1px solid #efefef;line-height:1.25em;overflow:hidden;text-overflow:ellipsis}[dir=ltr] .k-structure-table td,[dir=ltr] .k-structure-table th{border-right:1px solid #efefef}[dir=rtl] .k-structure-table td,[dir=rtl] .k-structure-table th{border-left:1px solid #efefef}.k-structure-table th{font-weight:400;color:#777;padding:0 .75rem;height:38px}[dir=ltr] .k-structure-table th{text-align:left}[dir=rtl] .k-structure-table th{text-align:right}.k-structure-table td:last-child,.k-structure-table th:last-child{width:38px}[dir=ltr] .k-structure-table td:last-child,[dir=ltr] .k-structure-table th:last-child{border-right:0}[dir=rtl] .k-structure-table td:last-child,[dir=rtl] .k-structure-table th:last-child{border-left:0}.k-structure-table tr:last-child td{border-bottom:0}.k-structure-table tbody tr:hover td{background:hsla(0,0%,93.7%,.25)}@media screen and (max-width:65em){.k-structure-table td,.k-structure-table th{display:none}.k-structure-table td:first-child,.k-structure-table td:last-child,.k-structure-table td:nth-child(2),.k-structure-table th:first-child,.k-structure-table th:last-child,.k-structure-table th:nth-child(2){display:table-cell}}.k-structure-table .k-structure-table-column[data-align=center]{text-align:center}[dir=ltr] .k-structure-table .k-structure-table-column[data-align=right]{text-align:right}[dir=rtl] .k-structure-table .k-structure-table-column[data-align=right]{text-align:left}.k-structure-table .k-structure-table-column[data-width="1/2"]{width:50%}.k-structure-table .k-structure-table-column[data-width="1/3"]{width:33.33%}.k-structure-table .k-structure-table-column[data-width="1/4"]{width:25%}.k-structure-table .k-structure-table-column[data-width="1/5"]{width:20%}.k-structure-table .k-structure-table-column[data-width="1/6"]{width:16.66%}.k-structure-table .k-structure-table-column[data-width="1/8"]{width:12.5%}.k-structure-table .k-structure-table-column[data-width="1/9"]{width:11.11%}.k-structure-table .k-structure-table-column[data-width="2/3"]{width:66.66%}.k-structure-table .k-structure-table-column[data-width="3/4"]{width:75%}.k-structure-table .k-structure-table-index{width:38px;text-align:center}.k-structure-table .k-structure-table-index-number{font-size:.75rem;color:#999;padding-top:.15rem}.k-structure-table .k-sort-handle{width:38px;height:38px;display:none}.k-structure-table[data-sortable] tr:hover .k-structure-table-index-number{display:none}.k-structure-table[data-sortable] tr:hover .k-sort-handle{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.k-structure-table .k-structure-table-option{width:38px;text-align:center}.k-structure-table .k-structure-table-option .k-button{width:38px;height:38px}.k-structure-table .k-structure-table-text{padding:0 .75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.k-structure-table .k-sortable-ghost{background:#fff;-webkit-box-shadow:rgba(22,23,26,.25) 0 5px 10px;box-shadow:0 5px 10px rgba(22,23,26,.25);outline:2px solid #4271ae;margin-bottom:2px;cursor:-webkit-grabbing}.k-sortable-row-fallback{opacity:0!important}.k-structure-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;height:100vh}.k-structure-form{position:relative;z-index:3;border-radius:1px;margin-bottom:1px;-webkit-box-shadow:rgba(22,23,26,.05) 0 0 0 3px;box-shadow:0 0 0 3px rgba(22,23,26,.05);border:1px solid #ccc;background:#efefef}.k-structure-form-fields{padding:1.5rem 1.5rem 2rem}.k-structure-form-buttons{border-top:1px solid #ccc;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.k-structure-form-buttons .k-pagination{display:none}@media screen and (min-width:65em){.k-structure-form-buttons .k-pagination{display:-webkit-box;display:-ms-flexbox;display:flex}}.k-structure-form-buttons .k-pagination>.k-button,.k-structure-form-buttons .k-pagination>span{padding:.875rem 1rem!important}.k-structure-form-cancel-button,.k-structure-form-submit-button{padding:.875rem 1.5rem;line-height:1rem;display:-webkit-box;display:-ms-flexbox;display:flex}.k-field-counter{display:none}.k-text-field:focus-within .k-field-counter{display:block}.k-users-field[data-disabled] *{pointer-events:all!important}.k-toolbar{background:#fff;border-bottom:1px solid #efefef;height:38px}.k-toolbar-wrapper{position:absolute;top:0;right:0;left:0;max-width:100%}.k-toolbar-buttons{display:-webkit-box;display:-ms-flexbox;display:flex}.k-toolbar-divider{width:1px;background:#efefef}.k-toolbar-button{width:36px;height:36px}.k-toolbar-button:hover{background:hsla(0,0%,93.7%,.5)}.k-files-field-preview{display:grid;grid-gap:.5rem;grid-template-columns:repeat(auto-fill,1.525rem);padding:0 .75rem}.k-files-field-preview li{line-height:0}.k-url-field-preview{padding:0 .75rem}.k-url-field-preview a{color:#4271ae;text-decoration:underline;-webkit-transition:color .3s;transition:color .3s;overflow:hidden;white-space:nowrap;max-width:100%;text-overflow:ellipsis}.k-url-field-preview a:hover{color:#000}.k-pages-field-preview{padding:0 .25rem 0 .75rem;display:-webkit-box;display:-ms-flexbox;display:flex}.k-pages-field-preview li{line-height:0;margin-right:.5rem}.k-pages-field-preview .k-link{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;background:#efefef;-webkit-box-shadow:rgba(22,23,26,.05) 0 2px 5px;box-shadow:0 2px 5px rgba(22,23,26,.05)}.k-pages-field-preview-image{width:1.525rem;height:1.525rem;color:#999!important}.k-pages-field-preview figcaption{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;line-height:1.5em;padding:0 .5rem;border:1px solid #ccc;border-left:0;border-radius:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.k-users-field-preview{padding:0 .25rem 0 .75rem;display:-webkit-box;display:-ms-flexbox;display:flex}.k-users-field-preview li{line-height:0;margin-right:.5rem}.k-users-field-preview .k-link{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;background:#efefef;-webkit-box-shadow:rgba(22,23,26,.05) 0 2px 5px;box-shadow:0 2px 5px rgba(22,23,26,.05)}.k-users-field-preview-avatar{width:1.525rem;height:1.525rem;color:#999!important}.k-users-field-preview-avatar.k-image{display:block}.k-users-field-preview figcaption{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;line-height:1.5em;padding:0 .5rem;border:1px solid #ccc;border-left:0;border-radius:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.k-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;line-height:1}.k-bar-slot{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.k-bar-slot[data-position=center]{text-align:center}[dir=ltr] .k-bar-slot[data-position=right]{text-align:right}[dir=rtl] .k-bar-slot[data-position=right]{text-align:left}.k-box{background:#d9d9d9;border-radius:1px;padding:.375rem .75rem;line-height:1.25rem;border-left:2px solid #999;padding:.5rem 1.5rem;word-wrap:break-word;font-size:.875rem}.k-box[data-theme=code]{background:#16171a;border:1px solid #000;color:#efefef;font-family:Input,Menlo,monospace;font-size:.875rem;line-height:1.5}.k-box[data-theme=button]{padding:0}.k-box[data-theme=button] .k-button{padding:0 .75rem;height:2.25rem;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:2rem;text-align:left}.k-box[data-theme=positive]{background:#dbe4c1;border:0;border-left:2px solid #a7bd68;padding:.5rem 1.5rem}.k-box[data-theme=negative]{background:#eec6c6;border:0;border-left:2px solid #d16464;padding:.5rem 1.5rem}.k-box[data-theme=notice]{background:#f4dac9;border:0;border-left:2px solid #de935f;padding:.5rem 1.5rem}.k-box[data-theme=info]{background:#d5e0e9;border:0;border-left:2px solid #81a2be;padding:.5rem 1.5rem}.k-box[data-theme=empty]{text-align:center;border-left:0;padding:3rem 1.5rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background:#efefef;border-radius:1px;color:#777;border:1px dashed #ccc}.k-box[data-theme=empty] .k-icon{margin-bottom:.5rem;color:#999}.k-box[data-theme=empty] p{color:#777}.k-card{position:relative;border-radius:1px;-webkit-box-shadow:rgba(22,23,26,.05) 0 2px 5px;box-shadow:0 2px 5px rgba(22,23,26,.05)}.k-card,.k-card a{min-width:0;background:#fff}.k-card:focus-within{-webkit-box-shadow:#4271ae 0 0 0 2px;box-shadow:0 0 0 2px #4271ae}.k-card a:focus{outline:0}.k-card .k-sort-handle{position:absolute;top:.75rem;width:2rem;height:2rem;border-radius:1px;background:#fff;opacity:0;color:#16171a;z-index:1;will-change:opacity;-webkit-transition:opacity .3s;transition:opacity .3s}[dir=ltr] .k-card .k-sort-handle{right:.75rem}[dir=rtl] .k-card .k-sort-handle{left:.75rem}.k-cards:hover .k-sort-handle{opacity:.25}.k-card:hover .k-sort-handle{opacity:1}.k-card.k-sortable-ghost{outline:2px solid #4271ae;border-radius:0}.k-card-icon,.k-card-image{border-top-left-radius:1px;border-top-right-radius:1px;overflow:hidden}.k-card-icon{position:relative;display:block}.k-card-icon .k-icon{position:absolute;top:0;right:0;bottom:0;left:0}.k-card-icon .k-icon-emoji{font-size:3rem}.k-card-icon .k-icon svg{width:3rem;height:3rem}.k-card-content{line-height:1.25rem;border-bottom-left-radius:1px;border-bottom-right-radius:1px;min-height:2.25rem;padding:.5rem .75rem;overflow-wrap:break-word;word-wrap:break-word}.k-card-text{display:block;font-weight:400;text-overflow:ellipsis;font-size:.875rem}.k-card-text[data-noinfo]:after{content:" ";height:1em;width:5rem;display:inline-block}.k-card-info{color:#777;display:block;font-size:.875rem;text-overflow:ellipsis;overflow:hidden}[dir=ltr] .k-card-info{margin-right:4rem}[dir=rtl] .k-card-info{margin-left:4rem}.k-card-options{position:absolute;bottom:0}[dir=ltr] .k-card-options{right:0}[dir=rtl] .k-card-options{left:0}.k-card-options>.k-button{position:relative;float:left;height:2.25rem;padding:0 .75rem;line-height:1}.k-card-options-dropdown{top:2.25rem}.k-cards{display:grid;grid-gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))}@media screen and (min-width:30em){.k-cards[data-size=tiny]{grid-template-columns:repeat(auto-fill,minmax(12rem,1fr))}.k-cards[data-size=small]{grid-template-columns:repeat(auto-fill,minmax(16rem,1fr))}.k-cards[data-size=medium]{grid-template-columns:repeat(auto-fill,minmax(24rem,1fr))}.k-cards[data-size=huge],.k-cards[data-size=large]{grid-template-columns:1fr}}@media screen and (min-width:65em){.k-cards[data-size=large]{grid-template-columns:repeat(auto-fill,minmax(32rem,1fr))}}.k-collection-help{padding:.5rem .75rem}.k-collection-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-right:-.75rem;margin-left:-.75rem}.k-collection-pagination{line-height:1.25rem;min-height:2.75rem}.k-collection-pagination .k-pagination .k-button{padding:.5rem .75rem;line-height:1.125rem}.k-column{min-width:0;grid-column-start:span 12}@media screen and (min-width:65em){.k-column[data-width="1/1"],.k-column[data-width="2/2"],.k-column[data-width="3/3"],.k-column[data-width="4/4"],.k-column[data-width="6/6"]{grid-column-start:span 12}.k-column[data-width="1/2"],.k-column[data-width="2/4"],.k-column[data-width="3/6"]{grid-column-start:span 6}.k-column[data-width="1/3"],.k-column[data-width="2/6"]{grid-column-start:span 4}.k-column[data-width="2/3"],.k-column[data-width="4/6"]{grid-column-start:span 8}.k-column[data-width="1/4"]{grid-column-start:span 3}.k-column[data-width="1/6"]{grid-column-start:span 2}.k-column[data-width="5/6"]{grid-column-start:span 10}.k-column[data-width="3/4"]{grid-column-start:span 9}}.k-dropzone{position:relative}.k-dropzone:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;display:none;pointer-events:none;z-index:1}.k-dropzone[data-over]:after{display:block;outline:1px solid #4271ae;-webkit-box-shadow:rgba(66,113,174,.25) 0 0 0 3px;box-shadow:0 0 0 3px rgba(66,113,174,.25)}.k-empty{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:1px;color:#777;border:1px dashed #ccc}.k-empty p{font-size:.875rem;color:#777}.k-empty>.k-icon{color:#999}.k-empty[data-layout=cards]{text-align:center;padding:1.5rem;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.k-empty[data-layout=cards] .k-icon{margin-bottom:1rem}.k-empty[data-layout=cards] .k-icon svg{width:2rem;height:2rem}.k-empty[data-layout=list]{height:38px}.k-empty[data-layout=list]>.k-icon{width:36px;height:36px;border-right:1px solid rgba(0,0,0,.05)}.k-empty[data-layout=list]>p{line-height:1.25rem;padding:.5rem .75rem}.k-file-preview{background:#2d2f36}.k-file-preview-layout{display:grid}@media screen and (max-width:65em){.k-file-preview-layout{padding:0!important}}@media screen and (min-width:30em){.k-file-preview-layout{grid-template-columns:50% auto}}@media screen and (min-width:65em){.k-file-preview-layout{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}}.k-file-preview-layout>*{min-width:0}.k-file-preview-image{position:relative;background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXR0ZXJuIGlkPSJhIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiPjxwYXRoIGZpbGw9InJnYmEoMCwgMCwgMCwgMC4yKSIgZD0iTTAgMGgxMHYxMEgwem0xMCAxMGgxMHYxMEgxMHoiLz48L3BhdHRlcm4+PHJlY3QgZmlsbD0idXJsKCNhKSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIvPjwvc3ZnPg==")}@media screen and (min-width:65em){.k-file-preview-image{width:33.33%}}@media screen and (min-width:90em){.k-file-preview-image{width:25%}}.k-file-preview-image .k-image span{overflow:hidden;padding-bottom:66.66%}@media screen and (min-width:30em) and (max-width:65em){.k-file-preview-image .k-image span{position:absolute;top:0;left:0;bottom:0;right:0;padding-bottom:0!important}}@media screen and (min-width:65em){.k-file-preview-image .k-image span{padding-bottom:100%}}.k-file-preview-placeholder{display:block;padding-bottom:100%}.k-file-preview-image img{padding:3rem}.k-file-preview-image-link{display:block;outline:0}.k-file-preview-image-link[data-tabbed]{outline:2px solid #4271ae!important;outline-offset:-2px}.k-file-preview-icon{position:relative;display:block;padding-bottom:100%;overflow:hidden;color:hsla(0,0%,100%,.5)}.k-file-preview-icon svg{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%) scale(4);transform:translate(-50%,-50%) scale(4)}.k-file-preview-details{padding:1.5rem;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}@media screen and (min-width:65em){.k-file-preview-details{padding:3rem}}.k-file-preview-details ul{line-height:1.5em;max-width:50rem;display:grid;grid-gap:1.5rem 3rem;grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}@media screen and (min-width:30em){.k-file-preview-details ul{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}.k-file-preview-details h3{font-size:.875rem;font-weight:500;color:#999}.k-file-preview-details p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:hsla(0,0%,100%,.75);font-size:.875rem}.k-file-preview-details p a{display:block;width:100%;overflow:hidden;text-overflow:ellipsis}.k-grid{--columns:12;display:grid;grid-column-gap:0;grid-row-gap:0;grid-template-columns:1fr}@media screen and (min-width:30em){.k-grid[data-gutter=small]{grid-column-gap:1rem;grid-row-gap:1rem}.k-grid[data-gutter=huge],.k-grid[data-gutter=large],.k-grid[data-gutter=medium]{grid-column-gap:1.5rem;grid-row-gap:1.5rem}}@media screen and (min-width:65em){.k-grid{grid-template-columns:repeat(var(--columns),1fr)}.k-grid[data-gutter=large]{grid-column-gap:3rem}.k-grid[data-gutter=huge]{grid-column-gap:4.5rem}}@media screen and (min-width:90em){.k-grid[data-gutter=large]{grid-column-gap:4.5rem}.k-grid[data-gutter=huge]{grid-column-gap:6rem}}@media screen and (min-width:120em){.k-grid[data-gutter=large]{grid-column-gap:6rem}.k-grid[data-gutter=huge]{grid-column-gap:7.5rem}}.k-header{border-bottom:1px solid #ccc;margin-bottom:2rem;padding-top:4vh}.k-header .k-headline{min-height:1.25em;margin-bottom:.5rem}.k-header .k-header-buttons{margin-top:-.5rem;height:3.25rem}.k-header .k-headline-editable{cursor:pointer}.k-header .k-headline-editable .k-icon{color:#999;opacity:0;-webkit-transition:opacity .3s;transition:opacity .3s;display:inline-block}[dir=ltr] .k-header .k-headline-editable .k-icon{margin-left:.5rem}[dir=rtl] .k-header .k-headline-editable .k-icon{margin-right:.5rem}.k-header .k-headline-editable:hover .k-icon{opacity:1}.k-header-tabs{position:relative;background:#e9e9e9;border-top:1px solid #ccc;border-left:1px solid #ccc;border-right:1px solid #ccc}.k-header-tabs nav{display:-webkit-box;display:-ms-flexbox;display:flex;margin-left:-1px;margin-right:-1px}.k-header-tabs nav,.k-tab-button.k-button{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.k-tab-button.k-button{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.625rem .75rem;font-size:.75rem;text-transform:uppercase;text-align:center;font-weight:500;border-left:1px solid transparent;border-right:1px solid #ccc;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:15rem}@media screen and (min-width:30em){.k-tab-button.k-button{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media screen and (min-width:30em){.k-tab-button.k-button .k-icon{margin-right:.5rem}}.k-tab-button.k-button>.k-button-text{padding-top:.375rem;font-size:10px;overflow:hidden;max-width:10rem;text-overflow:ellipsis}[dir=ltr] .k-tab-button.k-button>.k-button-text{padding-left:0}[dir=rtl] .k-tab-button.k-button>.k-button-text{padding-right:0}@media screen and (min-width:30em){.k-tab-button.k-button>.k-button-text{font-size:.75rem;padding-top:0}}.k-tab-button:last-child{border-right:1px solid transparent}.k-tab-button[aria-current]{position:relative;background:#efefef;border-right:1px solid #ccc;pointer-events:none}.k-tab-button[aria-current]:first-child{border-left:1px solid #ccc}.k-tab-button[aria-current]:after,.k-tab-button[aria-current]:before{position:absolute;content:""}.k-tab-button[aria-current]:before{left:-1px;right:-1px;height:2px;top:-1px;background:#16171a}.k-tab-button[aria-current]:after{left:0;right:0;height:1px;bottom:-1px;background:#efefef}.k-tabs-dropdown{top:100%;right:0}.k-list .k-list-item:not(:last-child){margin-bottom:2px}.k-list-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#fff;border-radius:1px;-webkit-box-shadow:rgba(22,23,26,.05) 0 2px 5px;box-shadow:0 2px 5px rgba(22,23,26,.05)}.k-list-item .k-sort-handle{position:absolute;left:-1.5rem;width:1.5rem;height:38px;opacity:0}.k-list:hover .k-sort-handle{opacity:.25}.k-list-item:hover .k-sort-handle{opacity:1}.k-list-item.k-sortable-ghost{position:relative;outline:2px solid #4271ae;z-index:1;-webkit-box-shadow:rgba(22,23,26,.25) 0 5px 10px;box-shadow:0 5px 10px rgba(22,23,26,.25)}.k-list-item.k-sortable-fallback{opacity:.25!important;overflow:hidden}.k-list-item-image{width:38px;height:38px;overflow:hidden;-ms-flex-negative:0;flex-shrink:0;line-height:0}.k-list-item-image .k-image{width:38px;height:38px;-o-object-fit:contain;object-fit:contain}.k-list-item-image .k-icon{width:38px;height:38px}.k-list-item-image .k-icon svg{opacity:.5}.k-list-item-content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;overflow:hidden;outline:none}.k-list-item-content[data-tabbed]{outline:none;-webkit-box-shadow:#4271ae 0 0 0 2px,rgba(66,113,174,.2) 0 0 0 2px;box-shadow:0 0 0 2px #4271ae,0 0 0 2px rgba(66,113,174,.2)}.k-list-item-text{display:-webkit-box;display:-ms-flexbox;display:flex;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;width:100%;line-height:1.25rem;padding:.5rem .75rem}.k-list-item-text em{font-style:normal;margin-right:1rem;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:.875rem;color:#16171a}.k-list-item-text em,.k-list-item-text small{min-width:0;overflow:hidden;text-overflow:ellipsis}.k-list-item-text small{color:#999;font-size:.75rem;color:#777;display:none}@media screen and (min-width:30em){.k-list-item-text small{display:block}}.k-list-item-options{position:relative;-ms-flex-negative:0;flex-shrink:0}.k-list-item-options .k-dropdown-content{top:38px}.k-list-item-options>.k-button{height:38px;padding:0 12px}.k-list-item-options>.k-button>.k-button-icon{height:38px}.k-view{padding-left:1.5rem;padding-right:1.5rem;margin:0 auto;max-width:100rem}@media screen and (min-width:30em){.k-view{padding-left:3rem;padding-right:3rem}}@media screen and (min-width:90em){.k-view{padding-left:6rem;padding-right:6rem}}.k-view[data-align=center]{height:calc(100vh - 6rem);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0 3rem;overflow:auto}.k-view[data-align=center]>*{-ms-flex-preferred-size:22.5rem;flex-basis:22.5rem}.k-headline{font-size:1rem;font-weight:600;line-height:1.5em}.k-headline[data-size=small]{font-size:.875rem}.k-headline[data-size=large]{font-size:1.25rem;font-weight:400}@media screen and (min-width:65em){.k-headline[data-size=large]{font-size:1.5rem}}.k-headline[data-size=huge]{font-size:1.5rem;line-height:1.15em}@media screen and (min-width:65em){.k-headline[data-size=huge]{font-size:1.75rem}}.k-headline[data-theme=negative]{color:#c82829}.k-headline[data-theme=positive]{color:#5d800d}.k-headline abbr{color:#999;padding-left:.25rem;text-decoration:none}.k-icon{position:relative;line-height:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0}.k-icon svg{width:1rem;height:1rem;-moz-transform:scale(1)}.k-icon svg *{fill:currentColor}.k-icon[data-back=black]{background:#16171a;color:#fff}.k-icon[data-back=white]{background:#fff;color:#16171a}.k-icon[data-back=pattern]{background:#2d2f36 url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXR0ZXJuIGlkPSJhIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiPjxwYXRoIGZpbGw9InJnYmEoMCwgMCwgMCwgMC4yKSIgZD0iTTAgMGgxMHYxMEgwem0xMCAxMGgxMHYxMEgxMHoiLz48L3BhdHRlcm4+PHJlY3QgZmlsbD0idXJsKCNhKSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIvPjwvc3ZnPg==");color:#fff}.k-icon[data-size=medium] svg{width:2rem;height:2rem}.k-icon[data-size=large] svg{width:3rem;height:3rem}.k-icon-emoji{display:block;line-height:1;font-style:normal;font-size:1rem}@media not all,only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:2dppx),only screen and (min-resolution:192dpi){.k-icon-emoji{font-size:1.25rem;margin-left:.2rem}}.k-image span{position:relative;display:block;line-height:0;padding-bottom:100%}.k-image img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.k-image-error{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#fff;font-size:.9em}.k-image-error svg *{fill:hsla(0,0%,100%,.3)}.k-image[data-cover] img{-o-object-fit:cover;object-fit:cover}.k-image[data-back=black] span{background:#16171a}.k-image[data-back=white] span{background:#fff;color:#16171a}.k-image[data-back=white] .k-image-error{background:#16171a;color:#fff}.k-image[data-back=pattern] span{background:#2d2f36 url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXR0ZXJuIGlkPSJhIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiPjxwYXRoIGZpbGw9InJnYmEoMCwgMCwgMCwgMC4yKSIgZD0iTTAgMGgxMHYxMEgwem0xMCAxMGgxMHYxMEgxMHoiLz48L3BhdHRlcm4+PHJlY3QgZmlsbD0idXJsKCNhKSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIvPjwvc3ZnPg==")}.k-progress{-webkit-appearance:none;width:100%;height:.5rem;border-radius:5rem}.k-progress::-webkit-progress-bar{border:none;background:#ccc;height:.5rem;border-radius:20px}.k-progress::-webkit-progress-value{border-radius:20px;background:#4271ae;-webkit-transition:width .3s;transition:width .3s}.k-sort-handle{cursor:-webkit-grab;color:#16171a;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:0;width:2rem;height:2rem;display:-webkit-box;display:-ms-flexbox;display:flex;will-change:opacity,color;-webkit-transition:opacity .3s;transition:opacity .3s;z-index:1}.k-sort-handle svg{width:1rem}.k-sort-handle:active{cursor:-webkit-grabbing}.k-text{line-height:1.5em}.k-text p{margin-bottom:1.5em}.k-text a{text-decoration:underline}.k-text>:last-child{margin-bottom:0}.k-text[data-align=center]{text-align:center}.k-text[data-align=right]{text-align:right}.k-text[data-size=tiny]{font-size:.75rem}.k-text[data-size=small]{font-size:.875rem}.k-text[data-size=medium]{font-size:1rem}.k-text[data-size=large]{font-size:1.25rem}.k-text[data-theme=help]{font-size:.875rem;color:#777;line-height:1.25rem}button{line-height:inherit;border:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1rem;color:currentColor;background:none;cursor:pointer}button::-moz-focus-inner{padding:0;border:0}.k-button[data-disabled],.k-button[disabled]{pointer-events:none;opacity:.5}.k-button{display:inline-block;position:relative;font-size:.875rem;-webkit-transition:color .3s;transition:color .3s}.k-button,.k-button:focus,.k-button:hover{outline:none}.k-button[data-tabbed]{outline:none;-webkit-box-shadow:#4271ae 0 0 0 2px,rgba(66,113,174,.2) 0 0 0 2px;box-shadow:0 0 0 2px #4271ae,0 0 0 2px rgba(66,113,174,.2)}.k-button *{vertical-align:middle}.k-button[data-responsive] .k-button-text{display:none}@media screen and (min-width:30em){.k-button[data-responsive] .k-button-text{display:inline}}.k-button[data-theme=positive]{color:#5d800d}.k-button[data-theme=negative]{color:#c82829}.k-button-icon{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:0}[dir=ltr] .k-button-icon~.k-button-text{padding-left:.5rem}[dir=rtl] .k-button-icon~.k-button-text{padding-right:.5rem}.k-button-text{opacity:.75}.k-button:focus .k-button-text,.k-button:hover .k-button-text{opacity:1}.k-button-text b,.k-button-text span{vertical-align:baseline}.k-button-group{font-size:0;margin-left:-.75rem;margin-right:-.75rem}.k-button-group>.k-dropdown{height:3rem;display:inline-block}.k-button-group>.k-button,.k-button-group>.k-dropdown>.k-button{padding:1rem .75rem;line-height:1rem}.k-button-group .k-dropdown-content{top:calc(100% + 1px);margin:0 .75rem}.k-dropdown{position:relative}.k-dropdown-content{position:absolute;top:100%;background:#16171a;color:#fff;z-index:700;-webkit-box-shadow:rgba(22,23,26,.2) 0 2px 10px;box-shadow:0 2px 10px rgba(22,23,26,.2);border-radius:1px;text-align:left}[dir=ltr] .k-dropdown-content{left:0}[dir=rtl] .k-dropdown-content{right:0}[dir=ltr] .k-dropdown-content[data-align=right]{left:auto;right:0}[dir=rtl] .k-dropdown-content[data-align=right]{left:0;right:auto}.k-dropdown-content>.k-dropdown-item:first-child{margin-top:.5rem}.k-dropdown-content>.k-dropdown-item:last-child{margin-bottom:.5rem}.k-dropdown-content hr{position:relative;padding:.5rem 0;border:0}.k-dropdown-content hr:after{position:absolute;top:.5rem;left:1rem;right:1rem;content:"";height:1px;background:currentColor;opacity:.2}.k-dropdown-item{white-space:nowrap;line-height:1;display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:.875rem;padding:6px 16px}.k-dropdown-item:focus{outline:none;-webkit-box-shadow:#4271ae 0 0 0 2px,rgba(66,113,174,.2) 0 0 0 2px;box-shadow:0 0 0 2px #4271ae,0 0 0 2px rgba(66,113,174,.2)}.k-dropdown-item .k-button-figure{text-align:center;padding-right:.5rem}.k-pagination{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;direction:ltr}.k-pagination .k-button{padding:1rem}.k-pagination-details{white-space:nowrap}.k-pagination>span{font-size:.875rem}.k-pagination[data-align=center]{text-align:center}.k-pagination[data-align=right]{text-align:right}.k-dropdown-content.k-pagination-selector{position:absolute;top:100%;left:50%;width:14rem;margin-left:-7rem;background:#000}[dir=ltr] .k-dropdown-content.k-pagination-selector{direction:ltr}[dir=rtl] .k-dropdown-content.k-pagination-selector{direction:rtl}.k-pagination-selector>div{font-size:.875rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-pagination-selector .k-button{padding:.75rem 1rem;line-height:1}.k-pagination-selector>div>label{padding:.75rem 1rem}.k-pagination-selector>div>input{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font:inherit;border:0;padding:.75rem 1rem;color:#fff;background:none;text-align:center;border-left:1px solid hsla(0,0%,100%,.2);border-right:1px solid hsla(0,0%,100%,.2)}.k-pagination-selector>div>input:focus{outline:0}.k-prev-next{direction:ltr}.k-search{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;overflow:auto;background:rgba(22,23,26,.6)}.k-search-box{max-width:30rem;margin:0 auto;-webkit-box-shadow:rgba(22,23,26,.2) 0 2px 10px;box-shadow:0 2px 10px rgba(22,23,26,.2)}@media screen and (min-width:65em){.k-search-box{margin:2.5rem auto}}.k-search-input{background:#efefef}.k-search-input,.k-search-types{display:-webkit-box;display:-ms-flexbox;display:flex}.k-search-types{-ms-flex-negative:0;flex-shrink:0}.k-search-types>.k-button{padding:0 0 0 .7rem;font-size:1rem;line-height:1;height:2.5rem}.k-search-types>.k-button .k-icon{height:2.5rem}.k-search-types>.k-button .k-button-text{opacity:1;font-weight:500}.k-search-input input{background:none;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font:inherit;padding:.75rem;border:0;height:2.5rem}.k-search-close{width:2.5rem;line-height:1}.k-search input:focus{outline:0}.k-search ul{background:#fff}.k-search li{border-bottom:1px solid #efefef;line-height:1.125;display:-webkit-box;display:-ms-flexbox;display:flex}.k-search li .k-link{display:block;padding:.5rem .75rem;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.k-search li strong{display:block;font-size:.875rem;font-weight:400}.k-search li small{font-size:.75rem;color:#777}.k-search li[data-selected]{outline:2px solid #4271ae;background:rgba(66,113,174,.25);border-bottom:1px solid transparent}.k-search-empty{padding:.825rem .75rem;font-size:.75rem;background:#efefef;border-top:1px dashed #ccc;color:#777}.k-tag{position:relative;font-size:.875rem;line-height:1;cursor:pointer;background-color:#16171a;color:#efefef;border-radius:1px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.k-tag:focus{outline:0;background-color:#4271ae;border-color:#4271ae;color:#fff}.k-tag-text{padding:0 .75rem}.k-tag-toggle{color:hsla(0,0%,100%,.7);width:2rem;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-left:1px solid hsla(0,0%,100%,.15)}.k-tag-toggle:hover{background:hsla(0,0%,100%,.2);color:#fff}.k-topbar{position:relative;color:#fff;-ms-flex-negative:0;flex-shrink:0;height:2.5rem;line-height:1;background:#16171a}.k-topbar-wrapper{position:relative;margin-left:-.75rem;margin-right:-.75rem}.k-topbar-loader,.k-topbar-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-topbar-loader{position:absolute;top:0;right:0;bottom:0;height:2.5rem;width:2.5rem;padding:.75rem;background:#16171a;z-index:1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.k-topbar-loader svg{height:18px;width:18px;-webkit-animation:Spin .9s linear infinite;animation:Spin .9s linear infinite}.k-topbar-menu{-ms-flex-negative:0;flex-shrink:0}.k-topbar-menu ul{padding:.5rem 0}.k-topbar-menu-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-topbar-menu-button .k-button-text{opacity:1}.k-topbar-button,.k-topbar-signals-button{padding:.75rem;line-height:1;font-size:.875rem}.k-topbar-signals .k-button .k-button-text{opacity:1}.k-topbar-button .k-button-text{display:-webkit-box;display:-ms-flexbox;display:flex;opacity:1}.k-topbar-view-button{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;outline:none}.k-topbar-view-button[data-tabbed]{outline:none;-webkit-box-shadow:#4271ae 0 0 0 2px,rgba(66,113,174,.2) 0 0 0 2px;box-shadow:0 0 0 2px #4271ae,0 0 0 2px rgba(66,113,174,.2)}[dir=ltr] .k-topbar-view-button{padding-right:0}[dir=rtl] .k-topbar-view-button{padding-left:0}[dir=ltr] .k-topbar-view-button .k-icon{margin-right:.5rem}[dir=rtl] .k-topbar-view-button .k-icon{margin-left:.5rem}.k-topbar-crumbs{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex}.k-topbar-crumbs a{position:relative;font-size:.875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:none;padding-top:.75rem;padding-bottom:.75rem;line-height:1;-webkit-transition:opacity .3s;transition:opacity .3s;outline:none}.k-topbar-crumbs a:before{content:"/";padding:0 .5rem;opacity:.25}.k-topbar-crumbs a:focus,.k-topbar-crumbs a:hover{opacity:1}.k-topbar-crumbs a[data-tabbed]{outline:none;-webkit-box-shadow:#4271ae 0 0 0 2px,rgba(66,113,174,.2) 0 0 0 2px;box-shadow:0 0 0 2px #4271ae,0 0 0 2px rgba(66,113,174,.2)}.k-topbar-crumbs a:not(:last-child){max-width:15vw}.k-topbar-breadcrumb-menu{-ms-flex-negative:0;flex-shrink:0}@media screen and (min-width:30em){.k-topbar-crumbs a{display:block}.k-topbar-breadcrumb-menu{display:none}}.k-topbar-signals{position:absolute;top:0;background:#16171a;height:2.5rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}[dir=ltr] .k-topbar-signals{right:0}[dir=rtl] .k-topbar-signals{left:0}.k-topbar-signals:before{position:absolute;content:"";top:0;bottom:0;width:.5rem}[dir=ltr] .k-topbar-signals:before{left:-.5rem;background:-webkit-linear-gradient(left,rgba(22,23,26,0),#16171a)}[dir=rtl] .k-topbar-signals:before{right:-.5rem;background:-webkit-linear-gradient(right,rgba(22,23,26,0),#16171a)}.k-topbar-signals .k-button{line-height:1}.k-topbar-notification{font-weight:600;line-height:1;display:-webkit-box;display:-ms-flexbox;display:flex}.k-topbar .k-button[data-theme=positive]{color:#a7bd68}.k-topbar .k-button[data-theme=negative]{color:#d16464}.k-topbar .k-button[data-theme=negative] .k-button-text{display:none}@media screen and (min-width:30em){.k-topbar .k-button[data-theme=negative] .k-button-text{display:inline}}.k-topbar .k-button[data-theme] .k-button-text{opacity:1}.k-topbar .k-dropdown-content{color:#16171a;background:#fff}.k-topbar .k-dropdown-content hr:after{opacity:.1}.k-topbar-menu [aria-current] .k-link{color:#4271ae;font-weight:500}.k-registration{display:inline-block;margin-right:1rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-registration p{color:#d16464;font-size:.875rem;margin-right:1rem;font-weight:600;display:none}@media screen and (min-width:90em){.k-registration p{display:block}}.k-registration .k-button{color:#fff}.k-section,.k-sections{padding-bottom:3rem}.k-section-header{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;z-index:1}.k-section-header .k-headline{line-height:1.25rem;padding-bottom:.75rem;min-height:2rem}.k-section-header .k-button-group{position:absolute;top:-.875rem}[dir=ltr] .k-section-header .k-button-group{right:0}[dir=rtl] .k-section-header .k-button-group{left:0}.k-fields-issue-headline,.k-info-section-headline{margin-bottom:.5rem}.k-fields-section input[type=submit]{display:none}[data-locked] .k-fields-section{opacity:.2;pointer-events:none}.k-browser-view .k-error-view-content{text-align:left}.k-error-view{position:absolute;top:0;right:0;bottom:0;left:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.k-error-view-content{line-height:1.5em;max-width:25rem;text-align:center}.k-error-view-icon{color:#c82829;display:inline-block}.k-error-view-content p:not(:last-child){margin-bottom:.75rem}.k-installation-view .k-button{display:block;margin-top:1.5rem}.k-installation-view .k-headline{margin-bottom:.75rem}.k-installation-issues{line-height:1.5em;font-size:.875rem}.k-installation-issues li{position:relative;padding:1.5rem;background:#fff}[dir=ltr] .k-installation-issues li{padding-left:3.5rem}[dir=rtl] .k-installation-issues li{padding-right:3.5rem}.k-installation-issues .k-icon{position:absolute;top:calc(1.5rem + 2px)}[dir=ltr] .k-installation-issues .k-icon{left:1.5rem}[dir=rtl] .k-installation-issues .k-icon{right:1.5rem}.k-installation-issues .k-icon svg *{fill:#c82829}.k-installation-issues li:not(:last-child){margin-bottom:2px}.k-installation-issues li code{font:inherit;color:#c82829}.k-installation-view .k-button[type=submit]{padding:1rem}[dir=ltr] .k-installation-view .k-button[type=submit]{margin-left:-1rem}[dir=rtl] .k-installation-view .k-button[type=submit]{margin-right:-1rem}.k-login-form[data-invalid]{-webkit-animation:shake .5s linear;animation:shake .5s linear}.k-login-form[data-invalid] .k-field label{-webkit-animation:nope 2s linear;animation:nope 2s linear}.k-login-form label abbr{visibility:hidden}.k-login-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:1.5rem 0}.k-login-button{padding:.5rem 1rem;font-weight:500;-webkit-transition:opacity .3s;transition:opacity .3s}[dir=ltr] .k-login-button{margin-right:-1rem}[dir=rtl] .k-login-button{margin-left:-1rem}.k-login-button span{opacity:1}.k-login-button[disabled]{opacity:.25}.k-login-checkbox{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:.875rem;cursor:pointer}.k-login-checkbox .k-checkbox-text{opacity:.75;-webkit-transition:opacity .3s;transition:opacity .3s}.k-login-checkbox:focus span,.k-login-checkbox:hover span{opacity:1}@-webkit-keyframes nope{0%{color:#c82829}to{color:#16171a}}@keyframes nope{0%{color:#c82829}to{color:#16171a}}@-webkit-keyframes shake{8%,41%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}25%,58%{-webkit-transform:translateX(10px);transform:translateX(10px)}75%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}92%{-webkit-transform:translateX(5px);transform:translateX(5px)}0%,to{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes shake{8%,41%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}25%,58%{-webkit-transform:translateX(10px);transform:translateX(10px)}75%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}92%{-webkit-transform:translateX(5px);transform:translateX(5px)}0%,to{-webkit-transform:translateX(0);transform:translateX(0)}}.k-status-flag svg{width:14px;height:14px}.k-status-flag-listed .k-icon{color:#a7bd68}.k-status-flag-unlisted .k-icon{color:#81a2be}.k-status-flag-draft .k-icon{color:#d16464}.k-status-flag[disabled]{opacity:1}.k-settings-view section{margin-bottom:3rem}.k-settings-view .k-header{margin-bottom:1.5rem}.k-settings-view header{margin-bottom:.5rem;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.k-settings-view header,.k-system-info-box{display:-webkit-box;display:-ms-flexbox;display:flex}.k-system-info-box{background:#fff;padding:.75rem}.k-system-info-box li{-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0}.k-system-info-box dt{font-size:.875rem;color:#777;margin-bottom:.25rem}.k-system-unregistered{color:#c82829}.k-languages-section{margin-bottom:2rem}.k-user-profile{background:#fff}.k-user-profile>.k-view{padding-top:3rem;padding-bottom:3rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:0}.k-user-profile .k-button-group{overflow:hidden}[dir=ltr] .k-user-profile .k-button-group{margin-left:.75rem}[dir=rtl] .k-user-profile .k-button-group{margin-right:.75rem}.k-user-profile .k-button-group .k-button{display:block;padding-top:.25rem;padding-bottom:.25rem;overflow:hidden;white-space:nowrap}.k-user-profile .k-button-group .k-button[disabled]{opacity:1}.k-user-profile .k-dropdown-content{margin-top:.5rem;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.k-user-view-image .k-image{display:block;width:4rem;height:4rem;line-height:0}.k-user-view-image .k-button-text{opacity:1}.k-user-view-image .k-icon{width:4rem;height:4rem;background:#16171a;color:#999}.k-user-name-placeholder{color:#999;-webkit-transition:color .3s;transition:color .3s}.k-header[data-editable] .k-user-name-placeholder:hover{color:#16171a}
\ No newline at end of file
+*,:after,:before{margin:0;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}noscript{padding:1.5rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100vh;text-align:center}html{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;background:#efefef}body,html{color:#16171a;overflow:hidden;height:100%}a{color:inherit;text-decoration:none}li{list-style:none}b,strong{font-weight:600}.fade-enter-active,.fade-leave-active{-webkit-transition:opacity .5s;transition:opacity .5s}.fade-enter,.fade-leave-to{opacity:0}.k-panel{position:absolute;top:0;right:0;bottom:0;left:0;background:#efefef}.k-panel[data-loading]{-webkit-animation:LoadingCursor .5s;animation:LoadingCursor .5s}.k-panel-header{position:absolute;top:0;left:0;right:0;z-index:300}.k-panel .k-form-buttons{position:fixed;bottom:0;left:0;right:0;z-index:300}.k-panel-view{position:absolute;top:0;right:0;bottom:0;left:0;padding-bottom:6rem;overflow-y:scroll;-webkit-overflow-scrolling:touch;-webkit-transform:translateZ(0);transform:translateZ(0)}.k-panel[data-dialog] .k-panel-view{overflow:hidden;-webkit-transform:none;transform:none}.k-panel[data-topbar] .k-panel-view{top:2.5rem}.k-panel[data-dragging],.k-panel[data-loading]:after{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.k-offline-warning{position:fixed;content:" ";top:0;right:0;bottom:0;left:0;z-index:900;background:rgba(22,23,26,.7);content:"offline";display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff}@-webkit-keyframes LoadingCursor{to{cursor:progress}}@keyframes LoadingCursor{to{cursor:progress}}@-webkit-keyframes Spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes Spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.k-offscreen{-webkit-clip-path:inset(100%);clip-path:inset(100%);clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.k-icons{position:absolute;width:0;height:0}.k-dialog{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:fixed;top:0;right:0;bottom:0;left:0;border:0;width:100%;height:100%;background:rgba(22,23,26,.6);z-index:600;-webkit-transform:translateZ(0);transform:translateZ(0)}.k-dialog,.k-dialog-box{display:-webkit-box;display:-ms-flexbox;display:flex}.k-dialog-box{position:relative;background:#efefef;width:22rem;-webkit-box-shadow:rgba(22,23,26,.2) 0 2px 10px;box-shadow:0 2px 10px rgba(22,23,26,.2);border-radius:1px;line-height:1;max-height:calc(100vh - 3rem);margin:1.5rem;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.k-dialog-box[data-size=small]{width:20rem}.k-dialog-box[data-size=medium]{width:30rem}.k-dialog-box[data-size=large]{width:40rem}.k-dialog-notification{padding:.75rem 1.5rem;background:#16171a;width:100%;line-height:1.25rem;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-dialog-notification[data-theme=error]{background:#d16464;color:#000}.k-dialog-notification[data-theme=success]{background:#a7bd68;color:#000}.k-dialog-notification p{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;word-wrap:break-word;overflow:hidden}.k-dialog-notification .k-button{display:-webkit-box;display:-ms-flexbox;display:flex;margin-left:1rem}.k-dialog-body{padding:1.5rem;overflow-y:auto;overflow-x:hidden}.k-dialog-body .k-fieldset{padding-bottom:.5rem}.k-dialog-footer{border-top:1px solid #ccc;padding:0;border-bottom-left-radius:1px;border-bottom-right-radius:1px;line-height:1;-ms-flex-negative:0;flex-shrink:0}.k-dialog-footer .k-button-group{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.k-dialog-footer .k-button-group .k-button{padding:.75rem 1rem;line-height:1.25rem}.k-dialog-footer .k-button-group .k-button:first-child{text-align:left;padding-left:1.5rem}.k-dialog-footer .k-button-group .k-button:last-child{text-align:right;padding-right:1.5rem}.k-error-details{background:#fff;display:block;overflow:auto;padding:1rem;font-size:.875rem;line-height:1.25em;margin-top:.75rem}.k-error-details dt{color:#d16464;margin-bottom:.25rem}.k-error-details dd{overflow:hidden;overflow-wrap:break-word;text-overflow:ellipsis}.k-error-details dd:not(:last-of-type){margin-bottom:1.5em}.k-error-details li:not(:last-child){border-bottom:1px solid #efefef;padding-bottom:.25rem;margin-bottom:.25rem}.k-files-dialog .k-list-item{cursor:pointer}.k-page-remove-warning{margin:1.5rem 0}.k-page-remove-warning .k-box{font-size:1rem;line-height:1.5em;padding-top:.75rem;padding-bottom:.75rem}.k-pages-dialog-navbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:.5rem;padding-right:38px}.k-pages-dialog-navbar .k-button{width:38px}.k-pages-dialog-navbar .k-button[disabled]{opacity:0}.k-pages-dialog-navbar .k-headline{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.k-pages-dialog-search{margin-bottom:.5rem}.k-pages-dialog .k-list-item{cursor:pointer}.k-pages-dialog .k-list-item .k-button[data-theme=disabled],.k-pages-dialog .k-list-item .k-button[disabled]{opacity:.25}.k-pages-dialog .k-list-item .k-button[data-theme=disabled]:hover{opacity:1}.k-users-dialog .k-list-item{cursor:pointer}.k-calendar-input{padding:.5rem;background:#16171a;color:#efefef;border-radius:1px}.k-calendar-table{table-layout:fixed;width:100%;min-width:15rem;padding-top:.5rem}.k-calendar-input>nav{display:-webkit-box;display:-ms-flexbox;display:flex;direction:ltr}.k-calendar-input>nav .k-button{padding:.5rem}.k-calendar-selects{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}[dir=ltr] .k-calendar-selects{direction:ltr}[dir=rtl] .k-calendar-selects{direction:rtl}.k-calendar-selects .k-select-input{padding:0 .5rem;font-weight:400;font-size:.875rem}.k-calendar-selects .k-select-input:focus-within{color:#81a2be!important}.k-calendar-input th{padding:.5rem 0;color:#999;font-size:.75rem;font-weight:400;text-align:center}.k-calendar-day .k-button{width:2rem;height:2rem;margin:0 auto;color:#fff;line-height:1.75rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;border:2px solid transparent}.k-calendar-day .k-button .k-button-text{opacity:1}.k-calendar-table .k-button:hover{color:#fff}.k-calendar-day:hover .k-button{border-color:hsla(0,0%,100%,.25)}.k-calendar-day[aria-current=date] .k-button{color:#81a2be;font-weight:500}.k-calendar-day[aria-selected=date] .k-button{border-color:#a7bd68;color:#a7bd68}.k-calendar-today{text-align:center;padding-top:.5rem}.k-calendar-today .k-button{color:#81a2be;font-size:.75rem;padding:1rem}.k-calendar-today .k-button-text{opacity:1}.k-counter{font-size:.75rem;color:#16171a;font-weight:600}.k-counter[data-invalid]{color:#c82829}.k-counter-rules{color:#777;font-weight:400}[dir=ltr] .k-counter-rules{padding-left:.5rem}[dir=rtl] .k-counter-rules{padding-right:.5rem}.k-form-submitter{display:none}.k-form-buttons[data-theme=changes]{background:#de935f}.k-form-buttons[data-theme=lock]{background:#d16464}.k-form-buttons[data-theme=unlock]{background:#81a2be}.k-form-buttons .k-view{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.k-form-button,.k-form-buttons .k-view{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-form-button{font-weight:500;white-space:nowrap;line-height:1;height:2.5rem;padding:0 1rem}.k-form-button:first-child{margin-left:-1rem}.k-form-button:last-child{margin-right:-1rem}.k-form-lock-info{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.875rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1.5em;padding:.625rem 0;margin-right:3rem}.k-form-lock-info>.k-icon{margin-right:.5rem}.k-form-lock-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}.k-form-indicator-icon{color:#de935f}.k-form-indicator-info{font-size:.875rem;font-weight:600;padding:.75rem 1rem .25rem;line-height:1.25em;width:15rem}.k-field-label{font-weight:600;display:block;padding:0 0 .75rem;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;line-height:1.25rem}.k-field-label abbr{text-decoration:none;color:#999;padding-left:.25rem}.k-field-header{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.k-field-options{position:absolute;top:calc(-.5rem - 1px)}[dir=ltr] .k-field-options{right:0}[dir=rtl] .k-field-options{left:0}.k-field-options.k-button-group .k-dropdown{height:auto}.k-field-options.k-button-group .k-field-options-button.k-button{padding:.75rem;display:-webkit-box;display:-ms-flexbox;display:flex}.k-field[data-disabled]{cursor:not-allowed}.k-field[data-disabled] :not(.k-text[data-theme=help]){pointer-events:none}.k-field:focus-within>.k-field-header>.k-field-counter{display:block}.k-field-help{padding-top:.5rem}.k-fieldset{border:0}.k-fieldset .k-grid{grid-row-gap:2.25rem}@media screen and (min-width:30em){.k-fieldset .k-grid{grid-column-gap:1.5rem}}.k-sections>.k-column[data-width="1/3"] .k-fieldset .k-grid,.k-sections>.k-column[data-width="1/4"] .k-fieldset .k-grid{grid-template-columns:repeat(1,1fr)}.k-sections>.k-column[data-width="1/3"] .k-fieldset .k-grid .k-column,.k-sections>.k-column[data-width="1/4"] .k-fieldset .k-grid .k-column{grid-column-start:auto}.k-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1;border:0;outline:0;background:none}.k-input-element{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.k-input-icon{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:0}.k-input[data-disabled]{pointer-events:none}.k-input[data-theme=field]{line-height:1;border:1px solid #ccc;background:#fff}.k-input[data-theme=field]:focus-within{border:1px solid #4271ae;-webkit-box-shadow:rgba(66,113,174,.25) 0 0 0 2px;box-shadow:0 0 0 2px rgba(66,113,174,.25)}.k-input[data-theme=field][data-disabled]{background:#efefef}.k-input[data-theme=field][data-invalid]{border:1px solid rgba(200,40,41,.25);-webkit-box-shadow:rgba(200,40,41,.25) 0 0 3px 2px;box-shadow:0 0 3px 2px rgba(200,40,41,.25)}.k-input[data-theme=field][data-invalid]:focus-within{border:1px solid #c82829;-webkit-box-shadow:rgba(200,40,41,.25) 0 0 0 2px;box-shadow:0 0 0 2px rgba(200,40,41,.25)}.k-input[data-theme=field] .k-input-icon{width:2.25rem}.k-input[data-theme=field] .k-input-after,.k-input[data-theme=field] .k-input-before,.k-input[data-theme=field] .k-input-icon{-ms-flex-item-align:stretch;align-self:stretch;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-negative:0;flex-shrink:0}.k-input[data-theme=field] .k-input-after,.k-input[data-theme=field] .k-input-before{padding:0 .5rem}.k-input[data-theme=field] .k-input-before{color:#777;padding-right:0}.k-input[data-theme=field] .k-input-after{color:#777;padding-left:0}.k-input[data-theme=field] .k-input-icon>.k-dropdown{width:100%;height:100%}.k-input[data-theme=field] .k-input-icon-button{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0}.k-input[data-theme=field] .k-number-input,.k-input[data-theme=field] .k-select-input,.k-input[data-theme=field] .k-text-input{padding:.5rem;line-height:1.25rem}.k-input[data-theme=field] .k-date-input .k-select-input,.k-input[data-theme=field] .k-time-input .k-select-input{padding-left:0;padding-right:0}[dir=ltr] .k-input[data-theme=field] .k-date-input .k-select-input:first-child,[dir=ltr] .k-input[data-theme=field] .k-time-input .k-select-input:first-child{padding-left:.5rem}[dir=rtl] .k-input[data-theme=field] .k-date-input .k-select-input:first-child,[dir=rtl] .k-input[data-theme=field] .k-time-input .k-select-input:first-child{padding-right:.5rem}.k-input[data-theme=field] .k-date-input .k-select-input:focus-within,.k-input[data-theme=field] .k-time-input .k-select-input:focus-within{color:#4271ae;font-weight:600}.k-input[data-theme=field] .k-time-input .k-time-input-meridiem{padding-left:.5rem}.k-input[data-theme=field][data-type=checkboxes] .k-checkboxes-input li,.k-input[data-theme=field][data-type=checkboxes] .k-radio-input li,.k-input[data-theme=field][data-type=radio] .k-checkboxes-input li,.k-input[data-theme=field][data-type=radio] .k-radio-input li{min-width:0;overflow-wrap:break-word}.k-input[data-theme=field][data-type=checkboxes] .k-input-before{border-right:1px solid #efefef}.k-input[data-theme=field][data-type=checkboxes] .k-input-element+.k-input-after,.k-input[data-theme=field][data-type=checkboxes] .k-input-element+.k-input-icon{border-left:1px solid #efefef}.k-input[data-theme=field][data-type=checkboxes] .k-input-element{overflow:hidden}.k-input[data-theme=field][data-type=checkboxes] .k-checkboxes-input{display:grid;grid-template-columns:1fr;margin-bottom:-1px;margin-right:-1px}@media screen and (min-width:65em){.k-input[data-theme=field][data-type=checkboxes] .k-checkboxes-input{grid-template-columns:repeat(var(--columns),1fr)}}.k-input[data-theme=field][data-type=checkboxes] .k-checkboxes-input li{border-right:1px solid #efefef;border-bottom:1px solid #efefef}.k-input[data-theme=field][data-type=checkboxes] .k-checkboxes-input label{display:block;line-height:1.25rem;padding:.5rem .5rem}.k-input[data-theme=field][data-type=checkboxes] .k-checkbox-input-icon{top:.625rem;left:.5rem;margin-top:0}.k-input[data-theme=field][data-type=radio] .k-input-before{border-right:1px solid #efefef}.k-input[data-theme=field][data-type=radio] .k-input-element+.k-input-after,.k-input[data-theme=field][data-type=radio] .k-input-element+.k-input-icon{border-left:1px solid #efefef}.k-input[data-theme=field][data-type=radio] .k-input-element{overflow:hidden}.k-input[data-theme=field][data-type=radio] .k-radio-input{display:grid;grid-template-columns:1fr;margin-bottom:-1px;margin-right:-1px}@media screen and (min-width:65em){.k-input[data-theme=field][data-type=radio] .k-radio-input{grid-template-columns:repeat(var(--columns),1fr)}}.k-input[data-theme=field][data-type=radio] .k-radio-input li{border-right:1px solid #efefef;border-bottom:1px solid #efefef}.k-input[data-theme=field][data-type=radio] .k-radio-input label{display:block;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;min-height:2.25rem;line-height:1.25rem;padding:.5rem .5rem}.k-input[data-theme=field][data-type=radio] .k-radio-input label:before{top:.625rem;left:.5rem;margin-top:-1px}.k-input[data-theme=field][data-type=radio] .k-radio-input .k-radio-input-info{display:block;font-size:.875rem;color:#777;line-height:1.25rem;padding-top:.125rem}.k-input[data-theme=field][data-type=radio] .k-radio-input .k-icon{width:2.25rem;height:2.25rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.k-input[data-theme=field][data-type=range] .k-range-input{padding:.5rem}.k-input[data-theme=field][data-type=select]{position:relative}.k-input[data-theme=field][data-type=select] .k-input-icon{position:absolute;top:0;bottom:0}[dir=ltr] .k-input[data-theme=field][data-type=select] .k-input-icon{right:0}[dir=rtl] .k-input[data-theme=field][data-type=select] .k-input-icon{left:0}.k-input[data-theme=field][data-type=tags] .k-tags-input{padding:.25rem .25rem 0 .25rem}.k-input[data-theme=field][data-type=tags] .k-tag{margin-right:.25rem;margin-bottom:.25rem;height:1.75rem;font-size:.875rem}.k-input[data-theme=field][data-type=tags] .k-tags-input input{font-size:.875rem;padding:0 .25rem;height:1.75rem;line-height:1;margin-bottom:.25rem}.k-input[data-theme=field][data-type=tags] .k-tags-input .k-dropdown-content{top:calc(100% + .5rem + 2px)}.k-input[data-theme=field][data-type=multiselect]{position:relative}.k-input[data-theme=field][data-type=multiselect] .k-multiselect-input{padding:.25rem 2rem 0 .25rem;min-height:2.25rem}.k-input[data-theme=field][data-type=multiselect] .k-tag{margin-right:.25rem;margin-bottom:.25rem;height:1.75rem;font-size:.875rem}.k-input[data-theme=field][data-type=multiselect] .k-input-icon{position:absolute;top:0;right:0;bottom:0;pointer-events:none}.k-input[data-theme=field][data-type=textarea] .k-textarea-input-native{padding:.25rem .5rem;line-height:1.5rem}.k-input[data-theme=field][data-type=toggle] .k-input-before{padding-right:.25rem}.k-input[data-theme=field][data-type=toggle] .k-toggle-input{padding-left:.5rem}.k-input[data-theme=field][data-type=toggle] .k-toggle-input-label{padding:0 .5rem 0 .75rem;line-height:2.25rem}.k-upload input{position:absolute;top:0}[dir=ltr] .k-upload input{left:-3000px}[dir=rtl] .k-upload input{right:-3000px}.k-upload .k-headline{margin-bottom:.75rem}.k-upload-error-list,.k-upload-list{line-height:1.5em;font-size:.875rem}.k-upload-list-filename{color:#777}.k-upload-error-list li{padding:.75rem;background:#fff;border-radius:1px}.k-upload-error-list li:not(:last-child){margin-bottom:2px}.k-upload-error-filename{color:#c82829;font-weight:600}.k-upload-error-message{color:#777}.k-checkbox-input{position:relative;cursor:pointer}.k-checkbox-input-native{position:absolute;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:0;height:0;opacity:0}.k-checkbox-input-label{display:block;padding-left:1.75rem}.k-checkbox-input-icon{position:absolute;left:0;width:1rem;height:1rem;border:2px solid #999}.k-checkbox-input-icon svg{position:absolute;width:12px;height:12px;display:none}.k-checkbox-input-icon path{stroke:#fff}.k-checkbox-input-native:checked+.k-checkbox-input-icon{border-color:#16171a;background:#16171a}.k-checkbox-input-native:checked+.k-checkbox-input-icon svg{display:block}.k-checkbox-input-native:focus+.k-checkbox-input-icon{border-color:#4271ae}.k-checkbox-input-native:focus:checked+.k-checkbox-input-icon{background:#4271ae}.k-date-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-date-input-separator{padding:0 .125rem}.k-datetime-input{display:-webkit-box;display:-ms-flexbox;display:flex}.k-datetime-input .k-time-input{padding-left:.5rem}.k-text-input{width:100%;border:0;background:none;font:inherit;color:inherit}.k-text-input::-webkit-input-placeholder{color:#999}.k-text-input::-moz-placeholder{color:#999}.k-text-input:-ms-input-placeholder{color:#999}.k-text-input::-ms-input-placeholder{color:#999}.k-text-input::placeholder{color:#999}.k-text-input:focus{outline:0}.k-text-input:invalid{-webkit-box-shadow:none;box-shadow:none;outline:0}.k-multiselect-input{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;position:relative;font-size:.875rem;min-height:2.25rem;line-height:1}.k-multiselect-input .k-sortable-ghost{background:#4271ae}.k-multiselect-input .k-dropdown-content{width:100%}.k-multiselect-search{margin-top:0!important;color:#fff;background:#16171a;border-bottom:1px dashed hsla(0,0%,100%,.2)}.k-multiselect-search>.k-button-text{-webkit-box-flex:1;-ms-flex:1;flex:1}.k-multiselect-search input{width:100%;color:#fff;background:none;border:none;outline:none;padding:.25rem 0;font:inherit}.k-multiselect-options{position:relative;max-height:240px;overflow-y:scroll;padding:.5rem 0}.k-multiselect-option{position:relative}.k-multiselect-option.selected{color:#a7bd68}.k-multiselect-option.disabled:not(.selected) .k-icon{opacity:0}.k-multiselect-option b{color:#81a2be;font-weight:700}.k-multiselect-value{color:#999;margin-left:.25rem}.k-multiselect-value:before{content:" ("}.k-multiselect-value:after{content:")"}.k-multiselect-input[data-layout=list] .k-tag{width:100%;margin-right:0!important}.k-number-input{width:100%;border:0;background:none;font:inherit;color:inherit}.k-number-input::-webkit-input-placeholder{color:$color-light-grey}.k-number-input::-moz-placeholder{color:$color-light-grey}.k-number-input:-ms-input-placeholder{color:$color-light-grey}.k-number-input::-ms-input-placeholder{color:$color-light-grey}.k-number-input::placeholder{color:$color-light-grey}.k-number-input:focus{outline:0}.k-number-input:invalid{-webkit-box-shadow:none;box-shadow:none;outline:0}.k-radio-input li{position:relative;line-height:1.5rem;padding-left:1.75rem}.k-radio-input input{position:absolute;width:0;height:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;opacity:0}.k-radio-input label{cursor:pointer;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-radio-input label:before{position:absolute;top:.175em;left:0;content:"";width:1rem;height:1rem;border-radius:50%;border:2px solid #999;-webkit-box-shadow:#fff 0 0 0 2px inset;box-shadow:inset 0 0 0 2px #fff}.k-radio-input input:checked+label:before{border-color:#16171a;background:#16171a}.k-radio-input input:focus+label:before{border-color:#4271ae}.k-radio-input input:focus:checked+label:before{background:#4271ae}.k-radio-input-text{display:block}.k-range-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-range-input-native{--min:0;--max:100;--value:0;--range:calc(var(--max) - var(--min));--ratio:calc((var(--value) - var(--min))/var(--range));--position:calc(8px + var(--ratio)*(100% - 16px));-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:16px;background:transparent;font-size:.875rem;line-height:1}.k-range-input-native::-webkit-slider-thumb{-webkit-appearance:none;appearance:none}.k-range-input-native::-webkit-slider-runnable-track{border:none;border-radius:4px;width:100%;height:4px;background:#ccc;background:-webkit-gradient(linear,left top,left bottom,from(#16171a),to(#16171a)) 0/var(--position) 100% no-repeat #ccc;background:linear-gradient(#16171a,#16171a) 0/var(--position) 100% no-repeat #ccc}.k-range-input-native::-moz-range-track{border:none;border-radius:4px;width:100%;height:4px;background:#ccc}.k-range-input-native::-ms-track{border:none;border-radius:4px;width:100%;height:4px;background:#ccc}.k-range-input-native::-moz-range-progress{height:4px;background:#16171a}.k-range-input-native::-ms-fill-lower{height:4px;background:#16171a}.k-range-input-native::-webkit-slider-thumb{margin-top:-6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:16px;height:16px;background:#efefef;border:4px solid #16171a;border-radius:50%;cursor:pointer}.k-range-input-native::-moz-range-thumb{box-sizing:border-box;width:16px;height:16px;background:#efefef;border:4px solid #16171a;border-radius:50%;cursor:pointer}.k-range-input-native::-ms-thumb{margin-top:0;box-sizing:border-box;width:16px;height:16px;background:#efefef;border:4px solid #16171a;border-radius:50%;cursor:pointer}.k-range-input-native::-ms-tooltip{display:none}.k-range-input-native:focus{outline:none}.k-range-input-native:focus::-webkit-slider-runnable-track{border:none;border-radius:4px;width:100%;height:4px;background:#ccc;background:-webkit-gradient(linear,left top,left bottom,from(#4271ae),to(#4271ae)) 0/var(--position) 100% no-repeat #ccc;background:linear-gradient(#4271ae,#4271ae) 0/var(--position) 100% no-repeat #ccc}.k-range-input-native:focus::-moz-range-progress{height:4px;background:#4271ae}.k-range-input-native:focus::-ms-fill-lower{height:4px;background:#4271ae}.k-range-input-native:focus::-webkit-slider-thumb{background:#efefef;border:4px solid #4271ae}.k-range-input-native:focus::-moz-range-thumb{background:#efefef;border:4px solid #4271ae}.k-range-input-native:focus::-ms-thumb{background:#efefef;border:4px solid #4271ae}.k-range-input-tooltip{position:relative;max-width:20%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#fff;font-size:.75rem;line-height:1;text-align:center;border-radius:1px;background:#16171a;margin-left:1rem;padding:0 .25rem;white-space:nowrap}.k-range-input-tooltip:after{position:absolute;top:50%;left:-5px;width:0;height:0;-webkit-transform:translateY(-50%);transform:translateY(-50%);border-top:5px solid transparent;border-right:5px solid #16171a;border-bottom:5px solid transparent;content:""}.k-range-input-tooltip>*{padding:4px}.k-select-input{position:relative;display:block;cursor:pointer;overflow:hidden}.k-select-input-native{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;width:100%;font:inherit;z-index:1;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.k-select-input-native[disabled]{cursor:default}.k-select-input-native{font-weight:400}.k-tags-input{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.k-tags-input .k-sortable-ghost{background:#4271ae}.k-tags-input-element{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;min-width:0}.k-tags-input:focus-within .k-tags-input-element{-ms-flex-preferred-size:4rem;flex-basis:4rem}.k-tags-input-element input{font:inherit;border:0;width:100%;background:none}.k-tags-input-element input:focus{outline:0}.k-tags-input[data-layout=list] .k-tag{width:100%;margin-right:0!important}.k-textarea-input-wrapper{position:relative}.k-textarea-input-native{resize:none;border:0;width:100%;background:none;font:inherit;line-height:1.5em;color:inherit}.k-textarea-input-native::-webkit-input-placeholder{color:#999}.k-textarea-input-native::-moz-placeholder{color:#999}.k-textarea-input-native:-ms-input-placeholder{color:#999}.k-textarea-input-native::-ms-input-placeholder{color:#999}.k-textarea-input-native::placeholder{color:#999}.k-textarea-input-native:focus{outline:0}.k-textarea-input-native:invalid{-webkit-box-shadow:none;box-shadow:none;outline:0}.k-textarea-input-native[data-size=small]{min-height:7.5rem}.k-textarea-input-native[data-size=medium]{min-height:15rem}.k-textarea-input-native[data-size=large]{min-height:30rem}.k-textarea-input-native[data-size=huge]{min-height:45rem}.k-textarea-input-native[data-font=monospace]{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}.k-toolbar{margin-bottom:.25rem;color:#aaa}.k-textarea-input:focus-within .k-toolbar{position:-webkit-sticky;position:sticky;top:0;right:0;left:0;z-index:1;-webkit-box-shadow:rgba(0,0,0,.05) 0 2px 5px;box-shadow:0 2px 5px rgba(0,0,0,.05);border-bottom:1px solid rgba(0,0,0,.1);color:#000}.k-time-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1}.k-time-input-separator{padding:0 .125rem}.k-time-input-meridiem{padding-left:.5rem}.k-toggle-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-toggle-input-native{position:relative;height:16px;width:32px;border-radius:16px;border:2px solid #999;-webkit-box-shadow:inset 0 0 0 2px #fff,inset -16px 0 0 2px #fff;box-shadow:inset 0 0 0 2px #fff,inset -16px 0 0 2px #fff;background-color:#999;outline:0;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.k-toggle-input-native:checked{border-color:#16171a;-webkit-box-shadow:inset 0 0 0 2px #fff,inset 16px 0 0 2px #fff;box-shadow:inset 0 0 0 2px #fff,inset 16px 0 0 2px #fff;background-color:#16171a}.k-toggle-input-native[disabled]{border-color:#ccc;-webkit-box-shadow:inset 0 0 0 2px #efefef,inset -16px 0 0 2px #efefef;box-shadow:inset 0 0 0 2px #efefef,inset -16px 0 0 2px #efefef;background-color:#ccc}.k-toggle-input-native[disabled]:checked{-webkit-box-shadow:inset 0 0 0 2px #efefef,inset 16px 0 0 2px #efefef;box-shadow:inset 0 0 0 2px #efefef,inset 16px 0 0 2px #efefef}.k-toggle-input-native:focus:checked{border:2px solid #4271ae;background-color:#4271ae}.k-toggle-input-native::-ms-check{opacity:0}.k-toggle-input-label{cursor:pointer;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.k-files-field[data-disabled] *{pointer-events:all!important}body{counter-reset:headline-counter}.k-headline-field{position:relative;padding-top:1.5rem}.k-headline-field[data-numbered]:before{counter-increment:headline-counter;content:counter(headline-counter,decimal-leading-zero);color:#4271ae;font-weight:400;padding-right:.25rem}.k-fieldset>.k-grid .k-column:first-child .k-headline-field{padding-top:0}.k-info-field .k-headline{padding-bottom:.75rem;line-height:1.25rem}.k-line-field{position:relative;border:0;height:3rem;width:auto}.k-line-field:after{position:absolute;content:"";top:50%;margin-top:-1px;left:0;right:0;height:1px;background:#ccc}.k-pages-field[data-disabled] *{pointer-events:all!important}.k-structure-table{table-layout:fixed;width:100%;background:#fff;font-size:.875rem;border-spacing:0;-webkit-box-shadow:rgba(22,23,26,.05) 0 2px 5px;box-shadow:0 2px 5px rgba(22,23,26,.05)}.k-structure-table td,.k-structure-table th{border-bottom:1px solid #efefef;line-height:1.25em;overflow:hidden;text-overflow:ellipsis}[dir=ltr] .k-structure-table td,[dir=ltr] .k-structure-table th{border-right:1px solid #efefef}[dir=rtl] .k-structure-table td,[dir=rtl] .k-structure-table th{border-left:1px solid #efefef}.k-structure-table th{font-weight:400;color:#777;padding:0 .75rem;height:38px}[dir=ltr] .k-structure-table th{text-align:left}[dir=rtl] .k-structure-table th{text-align:right}.k-structure-table td:last-child,.k-structure-table th:last-child{width:38px}[dir=ltr] .k-structure-table td:last-child,[dir=ltr] .k-structure-table th:last-child{border-right:0}[dir=rtl] .k-structure-table td:last-child,[dir=rtl] .k-structure-table th:last-child{border-left:0}.k-structure-table tr:last-child td{border-bottom:0}.k-structure-table tbody tr:hover td{background:hsla(0,0%,93.7%,.25)}@media screen and (max-width:65em){.k-structure-table td,.k-structure-table th{display:none}.k-structure-table td:first-child,.k-structure-table td:last-child,.k-structure-table td:nth-child(2),.k-structure-table th:first-child,.k-structure-table th:last-child,.k-structure-table th:nth-child(2){display:table-cell}}.k-structure-table .k-structure-table-column[data-align=center]{text-align:center}[dir=ltr] .k-structure-table .k-structure-table-column[data-align=right]{text-align:right}[dir=rtl] .k-structure-table .k-structure-table-column[data-align=right]{text-align:left}.k-structure-table .k-structure-table-column[data-width="1/2"]{width:50%}.k-structure-table .k-structure-table-column[data-width="1/3"]{width:33.33%}.k-structure-table .k-structure-table-column[data-width="1/4"]{width:25%}.k-structure-table .k-structure-table-column[data-width="1/5"]{width:20%}.k-structure-table .k-structure-table-column[data-width="1/6"]{width:16.66%}.k-structure-table .k-structure-table-column[data-width="1/8"]{width:12.5%}.k-structure-table .k-structure-table-column[data-width="1/9"]{width:11.11%}.k-structure-table .k-structure-table-column[data-width="2/3"]{width:66.66%}.k-structure-table .k-structure-table-column[data-width="3/4"]{width:75%}.k-structure-table .k-structure-table-index{width:38px;text-align:center}.k-structure-table .k-structure-table-index-number{font-size:.75rem;color:#999;padding-top:.15rem}.k-structure-table .k-sort-handle{width:38px;height:38px;display:none}.k-structure-table[data-sortable] tr:hover .k-structure-table-index-number{display:none}.k-structure-table[data-sortable] tr:hover .k-sort-handle{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.k-structure-table .k-structure-table-option{width:38px;text-align:center}.k-structure-table .k-structure-table-option .k-button{width:38px;height:38px}.k-structure-table .k-structure-table-text{padding:0 .75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.k-structure-table .k-sortable-ghost{background:#fff;-webkit-box-shadow:rgba(22,23,26,.25) 0 5px 10px;box-shadow:0 5px 10px rgba(22,23,26,.25);outline:2px solid #4271ae;margin-bottom:2px;cursor:-webkit-grabbing}.k-sortable-row-fallback{opacity:0!important}.k-structure-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;height:100vh}.k-structure-form{position:relative;z-index:3;border-radius:1px;margin-bottom:1px;-webkit-box-shadow:rgba(22,23,26,.05) 0 0 0 3px;box-shadow:0 0 0 3px rgba(22,23,26,.05);border:1px solid #ccc;background:#efefef}.k-structure-form-fields{padding:1.5rem 1.5rem 2rem}.k-structure-form-buttons{border-top:1px solid #ccc;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.k-structure-form-buttons .k-pagination{display:none}@media screen and (min-width:65em){.k-structure-form-buttons .k-pagination{display:-webkit-box;display:-ms-flexbox;display:flex}}.k-structure-form-buttons .k-pagination>.k-button,.k-structure-form-buttons .k-pagination>span{padding:.875rem 1rem!important}.k-structure-form-cancel-button,.k-structure-form-submit-button{padding:.875rem 1.5rem;line-height:1rem;display:-webkit-box;display:-ms-flexbox;display:flex}.k-field-counter{display:none}.k-text-field:focus-within .k-field-counter{display:block}.k-users-field[data-disabled] *{pointer-events:all!important}.k-toolbar{background:#fff;border-bottom:1px solid #efefef;height:38px}.k-toolbar-wrapper{position:absolute;top:0;right:0;left:0;max-width:100%}.k-toolbar-buttons{display:-webkit-box;display:-ms-flexbox;display:flex}.k-toolbar-divider{width:1px;background:#efefef}.k-toolbar-button{width:36px;height:36px}.k-toolbar-button:hover{background:hsla(0,0%,93.7%,.5)}.k-files-field-preview{display:grid;grid-gap:.5rem;grid-template-columns:repeat(auto-fill,1.525rem);padding:0 .75rem}.k-files-field-preview li{line-height:0}.k-files-field-preview li .k-icon{height:100%}.k-url-field-preview{padding:0 .75rem}.k-url-field-preview a{color:#4271ae;text-decoration:underline;-webkit-transition:color .3s;transition:color .3s;overflow:hidden;white-space:nowrap;max-width:100%;text-overflow:ellipsis}.k-url-field-preview a:hover{color:#000}.k-pages-field-preview{padding:0 .25rem 0 .75rem;display:-webkit-box;display:-ms-flexbox;display:flex}.k-pages-field-preview li{line-height:0;margin-right:.5rem}.k-pages-field-preview .k-link{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;background:#efefef;-webkit-box-shadow:rgba(22,23,26,.05) 0 2px 5px;box-shadow:0 2px 5px rgba(22,23,26,.05)}.k-pages-field-preview-image{width:1.525rem;height:1.525rem;color:#999!important}.k-pages-field-preview figcaption{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;line-height:1.5em;padding:0 .5rem;border:1px solid #ccc;border-left:0;border-radius:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.k-users-field-preview{padding:0 .25rem 0 .75rem;display:-webkit-box;display:-ms-flexbox;display:flex}.k-users-field-preview li{line-height:0;margin-right:.5rem}.k-users-field-preview .k-link{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;background:#efefef;-webkit-box-shadow:rgba(22,23,26,.05) 0 2px 5px;box-shadow:0 2px 5px rgba(22,23,26,.05)}.k-users-field-preview-avatar{width:1.525rem;height:1.525rem;color:#999!important}.k-users-field-preview-avatar.k-image{display:block}.k-users-field-preview figcaption{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;line-height:1.5em;padding:0 .5rem;border:1px solid #ccc;border-left:0;border-radius:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.k-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;line-height:1}.k-bar-slot{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.k-bar-slot[data-position=center]{text-align:center}[dir=ltr] .k-bar-slot[data-position=right]{text-align:right}[dir=rtl] .k-bar-slot[data-position=right]{text-align:left}.k-box{background:#d9d9d9;border-radius:1px;padding:.375rem .75rem;line-height:1.25rem;border-left:2px solid #999;padding:.5rem 1.5rem;word-wrap:break-word;font-size:.875rem}.k-box[data-theme=code]{background:#16171a;border:1px solid #000;color:#efefef;font-family:Input,Menlo,monospace;font-size:.875rem;line-height:1.5}.k-box[data-theme=button]{padding:0}.k-box[data-theme=button] .k-button{padding:0 .75rem;height:2.25rem;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:2rem;text-align:left}.k-box[data-theme=positive]{background:#dbe4c1;border:0;border-left:2px solid #a7bd68;padding:.5rem 1.5rem}.k-box[data-theme=negative]{background:#eec6c6;border:0;border-left:2px solid #d16464;padding:.5rem 1.5rem}.k-box[data-theme=notice]{background:#f4dac9;border:0;border-left:2px solid #de935f;padding:.5rem 1.5rem}.k-box[data-theme=info]{background:#d5e0e9;border:0;border-left:2px solid #81a2be;padding:.5rem 1.5rem}.k-box[data-theme=empty]{text-align:center;border-left:0;padding:3rem 1.5rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background:#efefef;border-radius:1px;color:#777;border:1px dashed #ccc}.k-box[data-theme=empty] .k-icon{margin-bottom:.5rem;color:#999}.k-box[data-theme=empty] p{color:#777}.k-card{position:relative;border-radius:1px;-webkit-box-shadow:rgba(22,23,26,.05) 0 2px 5px;box-shadow:0 2px 5px rgba(22,23,26,.05)}.k-card,.k-card a{min-width:0;background:#fff}.k-card:focus-within{-webkit-box-shadow:#4271ae 0 0 0 2px;box-shadow:0 0 0 2px #4271ae}.k-card a:focus{outline:0}.k-card .k-sort-handle{position:absolute;top:.75rem;width:2rem;height:2rem;border-radius:1px;background:#fff;opacity:0;color:#16171a;z-index:1;will-change:opacity;-webkit-transition:opacity .3s;transition:opacity .3s}[dir=ltr] .k-card .k-sort-handle{right:.75rem}[dir=rtl] .k-card .k-sort-handle{left:.75rem}.k-cards:hover .k-sort-handle{opacity:.25}.k-card:hover .k-sort-handle{opacity:1}.k-card.k-sortable-ghost{outline:2px solid #4271ae;border-radius:0}.k-card-icon,.k-card-image{border-top-left-radius:1px;border-top-right-radius:1px;overflow:hidden}.k-card-icon{position:relative;display:block}.k-card-icon .k-icon{position:absolute;top:0;right:0;bottom:0;left:0}.k-card-icon .k-icon-emoji{font-size:3rem}.k-card-icon .k-icon svg{width:3rem;height:3rem}.k-card-content{line-height:1.25rem;border-bottom-left-radius:1px;border-bottom-right-radius:1px;min-height:2.25rem;padding:.5rem .75rem;overflow-wrap:break-word;word-wrap:break-word}.k-card-text{display:block;font-weight:400;text-overflow:ellipsis;font-size:.875rem}.k-card-text[data-noinfo]:after{content:" ";height:1em;width:5rem;display:inline-block}.k-card-info{color:#777;display:block;font-size:.875rem;text-overflow:ellipsis;overflow:hidden}[dir=ltr] .k-card-info{margin-right:4rem}[dir=rtl] .k-card-info{margin-left:4rem}.k-card-options{position:absolute;bottom:0}[dir=ltr] .k-card-options{right:0}[dir=rtl] .k-card-options{left:0}.k-card-options>.k-button{position:relative;float:left;height:2.25rem;padding:0 .75rem;line-height:1}.k-card-options-dropdown{top:2.25rem}.k-cards{display:grid;grid-gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))}@media screen and (min-width:30em){.k-cards[data-size=tiny]{grid-template-columns:repeat(auto-fill,minmax(12rem,1fr))}.k-cards[data-size=small]{grid-template-columns:repeat(auto-fill,minmax(16rem,1fr))}.k-cards[data-size=medium]{grid-template-columns:repeat(auto-fill,minmax(24rem,1fr))}.k-cards[data-size=huge],.k-cards[data-size=large]{grid-template-columns:1fr}}@media screen and (min-width:65em){.k-cards[data-size=large]{grid-template-columns:repeat(auto-fill,minmax(32rem,1fr))}}.k-collection-help{padding:.5rem .75rem}.k-collection-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-right:-.75rem;margin-left:-.75rem}.k-collection-pagination{line-height:1.25rem;min-height:2.75rem}.k-collection-pagination .k-pagination .k-button{padding:.5rem .75rem;line-height:1.125rem}.k-column{min-width:0;grid-column-start:span 12}@media screen and (min-width:65em){.k-column[data-width="1/1"],.k-column[data-width="2/2"],.k-column[data-width="3/3"],.k-column[data-width="4/4"],.k-column[data-width="6/6"]{grid-column-start:span 12}.k-column[data-width="1/2"],.k-column[data-width="2/4"],.k-column[data-width="3/6"]{grid-column-start:span 6}.k-column[data-width="1/3"],.k-column[data-width="2/6"]{grid-column-start:span 4}.k-column[data-width="2/3"],.k-column[data-width="4/6"]{grid-column-start:span 8}.k-column[data-width="1/4"]{grid-column-start:span 3}.k-column[data-width="1/6"]{grid-column-start:span 2}.k-column[data-width="5/6"]{grid-column-start:span 10}.k-column[data-width="3/4"]{grid-column-start:span 9}}.k-dropzone{position:relative}.k-dropzone:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;display:none;pointer-events:none;z-index:1}.k-dropzone[data-over]:after{display:block;outline:1px solid #4271ae;-webkit-box-shadow:rgba(66,113,174,.25) 0 0 0 3px;box-shadow:0 0 0 3px rgba(66,113,174,.25)}.k-empty{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;border-radius:1px;color:#777;border:1px dashed #ccc}.k-empty p{font-size:.875rem;color:#777}.k-empty>.k-icon{color:#999}.k-empty[data-layout=cards]{text-align:center;padding:1.5rem;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.k-empty[data-layout=cards] .k-icon{margin-bottom:1rem}.k-empty[data-layout=cards] .k-icon svg{width:2rem;height:2rem}.k-empty[data-layout=list]{min-height:38px}.k-empty[data-layout=list]>.k-icon{width:36px;min-height:36px;border-right:1px solid rgba(0,0,0,.05)}.k-empty[data-layout=list]>p{line-height:1.25rem;padding:.5rem .75rem}.k-file-preview{background:#2d2f36}.k-file-preview-layout{display:grid}@media screen and (max-width:65em){.k-file-preview-layout{padding:0!important}}@media screen and (min-width:30em){.k-file-preview-layout{grid-template-columns:50% auto}}@media screen and (min-width:65em){.k-file-preview-layout{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}}.k-file-preview-layout>*{min-width:0}.k-file-preview-image{position:relative;background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXR0ZXJuIGlkPSJhIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiPjxwYXRoIGZpbGw9InJnYmEoMCwgMCwgMCwgMC4yKSIgZD0iTTAgMGgxMHYxMEgwem0xMCAxMGgxMHYxMEgxMHoiLz48L3BhdHRlcm4+PHJlY3QgZmlsbD0idXJsKCNhKSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIvPjwvc3ZnPg==")}@media screen and (min-width:65em){.k-file-preview-image{width:33.33%}}@media screen and (min-width:90em){.k-file-preview-image{width:25%}}.k-file-preview-image .k-image span{overflow:hidden;padding-bottom:66.66%}@media screen and (min-width:30em) and (max-width:65em){.k-file-preview-image .k-image span{position:absolute;top:0;left:0;bottom:0;right:0;padding-bottom:0!important}}@media screen and (min-width:65em){.k-file-preview-image .k-image span{padding-bottom:100%}}.k-file-preview-placeholder{display:block;padding-bottom:100%}.k-file-preview-image img{padding:3rem}.k-file-preview-image-link{display:block;outline:0}.k-file-preview-image-link[data-tabbed]{outline:2px solid #4271ae!important;outline-offset:-2px}.k-file-preview-icon{position:relative;display:block;padding-bottom:100%;overflow:hidden;color:hsla(0,0%,100%,.5)}.k-file-preview-icon svg{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%) scale(4);transform:translate(-50%,-50%) scale(4)}.k-file-preview-details{padding:1.5rem;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}@media screen and (min-width:65em){.k-file-preview-details{padding:3rem}}.k-file-preview-details ul{line-height:1.5em;max-width:50rem;display:grid;grid-gap:1.5rem 3rem;grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}@media screen and (min-width:30em){.k-file-preview-details ul{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}.k-file-preview-details h3{font-size:.875rem;font-weight:500;color:#999}.k-file-preview-details p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:hsla(0,0%,100%,.75);font-size:.875rem}.k-file-preview-details p a{display:block;width:100%;overflow:hidden;text-overflow:ellipsis}.k-grid{--columns:12;display:grid;grid-column-gap:0;grid-row-gap:0;grid-template-columns:1fr}@media screen and (min-width:30em){.k-grid[data-gutter=small]{grid-column-gap:1rem;grid-row-gap:1rem}.k-grid[data-gutter=huge],.k-grid[data-gutter=large],.k-grid[data-gutter=medium]{grid-column-gap:1.5rem;grid-row-gap:1.5rem}}@media screen and (min-width:65em){.k-grid{grid-template-columns:repeat(var(--columns),1fr)}.k-grid[data-gutter=large]{grid-column-gap:3rem}.k-grid[data-gutter=huge]{grid-column-gap:4.5rem}}@media screen and (min-width:90em){.k-grid[data-gutter=large]{grid-column-gap:4.5rem}.k-grid[data-gutter=huge]{grid-column-gap:6rem}}@media screen and (min-width:120em){.k-grid[data-gutter=large]{grid-column-gap:6rem}.k-grid[data-gutter=huge]{grid-column-gap:7.5rem}}.k-header{border-bottom:1px solid #ccc;margin-bottom:2rem;padding-top:4vh}.k-header .k-headline{min-height:1.25em;margin-bottom:.5rem}.k-header .k-header-buttons{margin-top:-.5rem;height:3.25rem}.k-header .k-headline-editable{cursor:pointer}.k-header .k-headline-editable .k-icon{color:#999;opacity:0;-webkit-transition:opacity .3s;transition:opacity .3s;display:inline-block}[dir=ltr] .k-header .k-headline-editable .k-icon{margin-left:.5rem}[dir=rtl] .k-header .k-headline-editable .k-icon{margin-right:.5rem}.k-header .k-headline-editable:hover .k-icon{opacity:1}.k-header-tabs{position:relative;background:#e9e9e9;border-top:1px solid #ccc;border-left:1px solid #ccc;border-right:1px solid #ccc}.k-header-tabs nav{display:-webkit-box;display:-ms-flexbox;display:flex;margin-left:-1px;margin-right:-1px}.k-header-tabs nav,.k-tab-button.k-button{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.k-tab-button.k-button{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.625rem .75rem;font-size:.75rem;text-transform:uppercase;text-align:center;font-weight:500;border-left:1px solid transparent;border-right:1px solid #ccc;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:15rem}@media screen and (min-width:30em){.k-tab-button.k-button{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media screen and (min-width:30em){.k-tab-button.k-button .k-icon{margin-right:.5rem}}.k-tab-button.k-button>.k-button-text{padding-top:.375rem;font-size:10px;overflow:hidden;max-width:10rem;text-overflow:ellipsis}[dir=ltr] .k-tab-button.k-button>.k-button-text{padding-left:0}[dir=rtl] .k-tab-button.k-button>.k-button-text{padding-right:0}@media screen and (min-width:30em){.k-tab-button.k-button>.k-button-text{font-size:.75rem;padding-top:0}}.k-tab-button:last-child{border-right:1px solid transparent}.k-tab-button[aria-current]{position:relative;background:#efefef;border-right:1px solid #ccc;pointer-events:none}.k-tab-button[aria-current]:first-child{border-left:1px solid #ccc}.k-tab-button[aria-current]:after,.k-tab-button[aria-current]:before{position:absolute;content:""}.k-tab-button[aria-current]:before{left:-1px;right:-1px;height:2px;top:-1px;background:#16171a}.k-tab-button[aria-current]:after{left:0;right:0;height:1px;bottom:-1px;background:#efefef}.k-tabs-dropdown{top:100%;right:0}.k-list .k-list-item:not(:last-child){margin-bottom:2px}.k-list-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#fff;border-radius:1px;-webkit-box-shadow:rgba(22,23,26,.05) 0 2px 5px;box-shadow:0 2px 5px rgba(22,23,26,.05)}.k-list-item .k-sort-handle{position:absolute;left:-1.5rem;width:1.5rem;height:38px;opacity:0}.k-list:hover .k-sort-handle{opacity:.25}.k-list-item:hover .k-sort-handle{opacity:1}.k-list-item.k-sortable-ghost{position:relative;outline:2px solid #4271ae;z-index:1;-webkit-box-shadow:rgba(22,23,26,.25) 0 5px 10px;box-shadow:0 5px 10px rgba(22,23,26,.25)}.k-list-item.k-sortable-fallback{opacity:.25!important;overflow:hidden}.k-list-item-image{width:38px;height:38px;overflow:hidden;-ms-flex-negative:0;flex-shrink:0;line-height:0}.k-list-item-image .k-image{width:38px;height:38px;-o-object-fit:contain;object-fit:contain}.k-list-item-image .k-icon{width:38px;height:38px}.k-list-item-image .k-icon svg{opacity:.5}.k-list-item-content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;overflow:hidden;outline:none}.k-list-item-content[data-tabbed]{outline:none;-webkit-box-shadow:#4271ae 0 0 0 2px,rgba(66,113,174,.2) 0 0 0 2px;box-shadow:0 0 0 2px #4271ae,0 0 0 2px rgba(66,113,174,.2)}.k-list-item-text{display:-webkit-box;display:-ms-flexbox;display:flex;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;width:100%;line-height:1.25rem;padding:.5rem .75rem}.k-list-item-text em{font-style:normal;margin-right:1rem;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:.875rem;color:#16171a}.k-list-item-text em,.k-list-item-text small{min-width:0;overflow:hidden;text-overflow:ellipsis}.k-list-item-text small{color:#999;font-size:.75rem;color:#777;display:none}@media screen and (min-width:30em){.k-list-item-text small{display:block}}.k-list-item-options{position:relative;-ms-flex-negative:0;flex-shrink:0}.k-list-item-options .k-dropdown-content{top:38px}.k-list-item-options>.k-button{height:38px;padding:0 12px}.k-list-item-options>.k-button>.k-button-icon{height:38px}.k-view{padding-left:1.5rem;padding-right:1.5rem;margin:0 auto;max-width:100rem}@media screen and (min-width:30em){.k-view{padding-left:3rem;padding-right:3rem}}@media screen and (min-width:90em){.k-view{padding-left:6rem;padding-right:6rem}}.k-view[data-align=center]{height:calc(100vh - 6rem);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0 3rem;overflow:auto}.k-view[data-align=center]>*{-ms-flex-preferred-size:22.5rem;flex-basis:22.5rem}.k-headline{font-size:1rem;font-weight:600;line-height:1.5em}.k-headline[data-size=small]{font-size:.875rem}.k-headline[data-size=large]{font-size:1.25rem;font-weight:400}@media screen and (min-width:65em){.k-headline[data-size=large]{font-size:1.5rem}}.k-headline[data-size=huge]{font-size:1.5rem;line-height:1.15em}@media screen and (min-width:65em){.k-headline[data-size=huge]{font-size:1.75rem}}.k-headline[data-theme=negative]{color:#c82829}.k-headline[data-theme=positive]{color:#5d800d}.k-headline abbr{color:#999;padding-left:.25rem;text-decoration:none}.k-icon{position:relative;line-height:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0}.k-icon svg{width:1rem;height:1rem;-moz-transform:scale(1)}.k-icon svg *{fill:currentColor}.k-icon[data-back=black]{background:#16171a;color:#fff}.k-icon[data-back=white]{background:#fff;color:#16171a}.k-icon[data-back=pattern]{background:#2d2f36 url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXR0ZXJuIGlkPSJhIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiPjxwYXRoIGZpbGw9InJnYmEoMCwgMCwgMCwgMC4yKSIgZD0iTTAgMGgxMHYxMEgwem0xMCAxMGgxMHYxMEgxMHoiLz48L3BhdHRlcm4+PHJlY3QgZmlsbD0idXJsKCNhKSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIvPjwvc3ZnPg==");color:#fff}.k-icon[data-size=medium] svg{width:2rem;height:2rem}.k-icon[data-size=large] svg{width:3rem;height:3rem}.k-icon-emoji{display:block;line-height:1;font-style:normal;font-size:1rem}@media not all,only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:2dppx),only screen and (min-resolution:192dpi){.k-icon-emoji{font-size:1.25rem;margin-left:.2rem}}.k-image span{position:relative;display:block;line-height:0;padding-bottom:100%}.k-image img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.k-image-error{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#fff;font-size:.9em}.k-image-error svg *{fill:hsla(0,0%,100%,.3)}.k-image[data-cover] img{-o-object-fit:cover;object-fit:cover}.k-image[data-back=black] span{background:#16171a}.k-image[data-back=white] span{background:#fff;color:#16171a}.k-image[data-back=white] .k-image-error{background:#16171a;color:#fff}.k-image[data-back=pattern] span{background:#2d2f36 url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXR0ZXJuIGlkPSJhIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiPjxwYXRoIGZpbGw9InJnYmEoMCwgMCwgMCwgMC4yKSIgZD0iTTAgMGgxMHYxMEgwem0xMCAxMGgxMHYxMEgxMHoiLz48L3BhdHRlcm4+PHJlY3QgZmlsbD0idXJsKCNhKSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIvPjwvc3ZnPg==")}.k-progress{-webkit-appearance:none;width:100%;height:.5rem;border-radius:5rem}.k-progress::-webkit-progress-bar{border:none;background:#ccc;height:.5rem;border-radius:20px}.k-progress::-webkit-progress-value{border-radius:20px;background:#4271ae;-webkit-transition:width .3s;transition:width .3s}.k-sort-handle{cursor:-webkit-grab;color:#16171a;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:0;width:2rem;height:2rem;display:-webkit-box;display:-ms-flexbox;display:flex;will-change:opacity,color;-webkit-transition:opacity .3s;transition:opacity .3s;z-index:1}.k-sort-handle svg{width:1rem}.k-sort-handle:active{cursor:-webkit-grabbing}.k-text{line-height:1.5em}.k-text p{margin-bottom:1.5em}.k-text a{text-decoration:underline}.k-text>:last-child{margin-bottom:0}.k-text[data-align=center]{text-align:center}.k-text[data-align=right]{text-align:right}.k-text[data-size=tiny]{font-size:.75rem}.k-text[data-size=small]{font-size:.875rem}.k-text[data-size=medium]{font-size:1rem}.k-text[data-size=large]{font-size:1.25rem}.k-text[data-theme=help]{font-size:.875rem;color:#777;line-height:1.25rem}button{line-height:inherit;border:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1rem;color:currentColor;background:none;cursor:pointer}button::-moz-focus-inner{padding:0;border:0}.k-button[data-disabled],.k-button[disabled]{pointer-events:none;opacity:.5}.k-button{display:inline-block;position:relative;font-size:.875rem;-webkit-transition:color .3s;transition:color .3s}.k-button,.k-button:focus,.k-button:hover{outline:none}.k-button[data-tabbed]{outline:none;-webkit-box-shadow:#4271ae 0 0 0 2px,rgba(66,113,174,.2) 0 0 0 2px;box-shadow:0 0 0 2px #4271ae,0 0 0 2px rgba(66,113,174,.2)}.k-button *{vertical-align:middle}.k-button[data-responsive] .k-button-text{display:none}@media screen and (min-width:30em){.k-button[data-responsive] .k-button-text{display:inline}}.k-button[data-theme=positive]{color:#5d800d}.k-button[data-theme=negative]{color:#c82829}.k-button-icon{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:0}[dir=ltr] .k-button-icon~.k-button-text{padding-left:.5rem}[dir=rtl] .k-button-icon~.k-button-text{padding-right:.5rem}.k-button-text{opacity:.75}.k-button:focus .k-button-text,.k-button:hover .k-button-text{opacity:1}.k-button-text b,.k-button-text span{vertical-align:baseline}.k-button-group{font-size:0;margin-left:-.75rem;margin-right:-.75rem}.k-button-group>.k-dropdown{height:3rem;display:inline-block}.k-button-group>.k-button,.k-button-group>.k-dropdown>.k-button{padding:1rem .75rem;line-height:1rem}.k-button-group .k-dropdown-content{top:calc(100% + 1px);margin:0 .75rem}.k-dropdown{position:relative}.k-dropdown-content{position:absolute;top:100%;background:#16171a;color:#fff;z-index:700;-webkit-box-shadow:rgba(22,23,26,.2) 0 2px 10px;box-shadow:0 2px 10px rgba(22,23,26,.2);border-radius:1px;text-align:left}[dir=ltr] .k-dropdown-content{left:0}[dir=rtl] .k-dropdown-content{right:0}[dir=ltr] .k-dropdown-content[data-align=right]{left:auto;right:0}[dir=rtl] .k-dropdown-content[data-align=right]{left:0;right:auto}.k-dropdown-content>.k-dropdown-item:first-child{margin-top:.5rem}.k-dropdown-content>.k-dropdown-item:last-child{margin-bottom:.5rem}.k-dropdown-content hr{position:relative;padding:.5rem 0;border:0}.k-dropdown-content hr:after{position:absolute;top:.5rem;left:1rem;right:1rem;content:"";height:1px;background:currentColor;opacity:.2}.k-dropdown-item{white-space:nowrap;line-height:1;display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:.875rem;padding:6px 16px}.k-dropdown-item:focus{outline:none;-webkit-box-shadow:#4271ae 0 0 0 2px,rgba(66,113,174,.2) 0 0 0 2px;box-shadow:0 0 0 2px #4271ae,0 0 0 2px rgba(66,113,174,.2)}.k-dropdown-item .k-button-figure{text-align:center;padding-right:.5rem}.k-pagination{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;direction:ltr}.k-pagination .k-button{padding:1rem}.k-pagination-details{white-space:nowrap}.k-pagination>span{font-size:.875rem}.k-pagination[data-align=center]{text-align:center}.k-pagination[data-align=right]{text-align:right}.k-dropdown-content.k-pagination-selector{position:absolute;top:100%;left:50%;width:14rem;margin-left:-7rem;background:#000}[dir=ltr] .k-dropdown-content.k-pagination-selector{direction:ltr}[dir=rtl] .k-dropdown-content.k-pagination-selector{direction:rtl}.k-pagination-selector>div{font-size:.875rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-pagination-selector .k-button{padding:.75rem 1rem;line-height:1}.k-pagination-selector>div>label{padding:.75rem 1rem}.k-pagination-selector>div>input{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font:inherit;border:0;padding:.75rem 1rem;color:#fff;background:none;text-align:center;border-left:1px solid hsla(0,0%,100%,.2);border-right:1px solid hsla(0,0%,100%,.2)}.k-pagination-selector>div>input:focus{outline:0}.k-prev-next{direction:ltr}.k-search{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;overflow:auto;background:rgba(22,23,26,.6)}.k-search-box{max-width:30rem;margin:0 auto;-webkit-box-shadow:rgba(22,23,26,.2) 0 2px 10px;box-shadow:0 2px 10px rgba(22,23,26,.2)}@media screen and (min-width:65em){.k-search-box{margin:2.5rem auto}}.k-search-input{background:#efefef}.k-search-input,.k-search-types{display:-webkit-box;display:-ms-flexbox;display:flex}.k-search-types{-ms-flex-negative:0;flex-shrink:0}.k-search-types>.k-button{padding:0 0 0 .7rem;font-size:1rem;line-height:1;height:2.5rem}.k-search-types>.k-button .k-icon{height:2.5rem}.k-search-types>.k-button .k-button-text{opacity:1;font-weight:500}.k-search-input input{background:none;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font:inherit;padding:.75rem;border:0;height:2.5rem}.k-search-close{width:2.5rem;line-height:1}.k-search input:focus{outline:0}.k-search ul{background:#fff}.k-search li{border-bottom:1px solid #efefef;line-height:1.125;display:-webkit-box;display:-ms-flexbox;display:flex}.k-search li .k-link{display:block;padding:.5rem .75rem;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.k-search li strong{display:block;font-size:.875rem;font-weight:400}.k-search li small{font-size:.75rem;color:#777}.k-search li[data-selected]{outline:2px solid #4271ae;background:rgba(66,113,174,.25);border-bottom:1px solid transparent}.k-search-empty{padding:.825rem .75rem;font-size:.75rem;background:#efefef;border-top:1px dashed #ccc;color:#777}.k-tag{position:relative;font-size:.875rem;line-height:1;cursor:pointer;background-color:#16171a;color:#efefef;border-radius:1px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.k-tag:focus{outline:0;background-color:#4271ae;border-color:#4271ae;color:#fff}.k-tag-text{padding:0 .75rem}.k-tag-toggle{color:hsla(0,0%,100%,.7);width:2rem;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-left:1px solid hsla(0,0%,100%,.15)}.k-tag-toggle:hover{background:hsla(0,0%,100%,.2);color:#fff}.k-topbar{position:relative;color:#fff;-ms-flex-negative:0;flex-shrink:0;height:2.5rem;line-height:1;background:#16171a}.k-topbar-wrapper{position:relative;margin-left:-.75rem;margin-right:-.75rem}.k-topbar-loader,.k-topbar-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-topbar-loader{position:absolute;top:0;right:0;bottom:0;height:2.5rem;width:2.5rem;padding:.75rem;background:#16171a;z-index:1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.k-topbar-loader svg{height:18px;width:18px;-webkit-animation:Spin .9s linear infinite;animation:Spin .9s linear infinite}.k-topbar-menu{-ms-flex-negative:0;flex-shrink:0}.k-topbar-menu ul{padding:.5rem 0}.k-topbar-menu-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-topbar-menu-button .k-button-text{opacity:1}.k-topbar-button,.k-topbar-signals-button{padding:.75rem;line-height:1;font-size:.875rem}.k-topbar-signals .k-button .k-button-text{opacity:1}.k-topbar-button .k-button-text{display:-webkit-box;display:-ms-flexbox;display:flex;opacity:1}.k-topbar-view-button{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;outline:none}.k-topbar-view-button[data-tabbed]{outline:none;-webkit-box-shadow:#4271ae 0 0 0 2px,rgba(66,113,174,.2) 0 0 0 2px;box-shadow:0 0 0 2px #4271ae,0 0 0 2px rgba(66,113,174,.2)}[dir=ltr] .k-topbar-view-button{padding-right:0}[dir=rtl] .k-topbar-view-button{padding-left:0}[dir=ltr] .k-topbar-view-button .k-icon{margin-right:.5rem}[dir=rtl] .k-topbar-view-button .k-icon{margin-left:.5rem}.k-topbar-crumbs{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex}.k-topbar-crumbs a{position:relative;font-size:.875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:none;padding-top:.75rem;padding-bottom:.75rem;line-height:1;-webkit-transition:opacity .3s;transition:opacity .3s;outline:none}.k-topbar-crumbs a:before{content:"/";padding:0 .5rem;opacity:.25}.k-topbar-crumbs a:focus,.k-topbar-crumbs a:hover{opacity:1}.k-topbar-crumbs a[data-tabbed]{outline:none;-webkit-box-shadow:#4271ae 0 0 0 2px,rgba(66,113,174,.2) 0 0 0 2px;box-shadow:0 0 0 2px #4271ae,0 0 0 2px rgba(66,113,174,.2)}.k-topbar-crumbs a:not(:last-child){max-width:15vw}.k-topbar-breadcrumb-menu{-ms-flex-negative:0;flex-shrink:0}@media screen and (min-width:30em){.k-topbar-crumbs a{display:block}.k-topbar-breadcrumb-menu{display:none}}.k-topbar-signals{position:absolute;top:0;background:#16171a;height:2.5rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}[dir=ltr] .k-topbar-signals{right:0}[dir=rtl] .k-topbar-signals{left:0}.k-topbar-signals:before{position:absolute;content:"";top:0;bottom:0;width:.5rem}[dir=ltr] .k-topbar-signals:before{left:-.5rem;background:-webkit-linear-gradient(left,rgba(22,23,26,0),#16171a)}[dir=rtl] .k-topbar-signals:before{right:-.5rem;background:-webkit-linear-gradient(right,rgba(22,23,26,0),#16171a)}.k-topbar-signals .k-button{line-height:1}.k-topbar-notification{font-weight:600;line-height:1;display:-webkit-box;display:-ms-flexbox;display:flex}.k-topbar .k-button[data-theme=positive]{color:#a7bd68}.k-topbar .k-button[data-theme=negative]{color:#d16464}.k-topbar .k-button[data-theme=negative] .k-button-text{display:none}@media screen and (min-width:30em){.k-topbar .k-button[data-theme=negative] .k-button-text{display:inline}}.k-topbar .k-button[data-theme] .k-button-text{opacity:1}.k-topbar .k-dropdown-content{color:#16171a;background:#fff}.k-topbar .k-dropdown-content hr:after{opacity:.1}.k-topbar-menu [aria-current] .k-link{color:#4271ae;font-weight:500}.k-registration{display:inline-block;margin-right:1rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k-registration p{color:#d16464;font-size:.875rem;margin-right:1rem;font-weight:600;display:none}@media screen and (min-width:90em){.k-registration p{display:block}}.k-registration .k-button{color:#fff}.k-section,.k-sections{padding-bottom:3rem}.k-section-header{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;z-index:1}.k-section-header .k-headline{line-height:1.25rem;padding-bottom:.75rem;min-height:2rem}.k-section-header .k-button-group{position:absolute;top:-.875rem}[dir=ltr] .k-section-header .k-button-group{right:0}[dir=rtl] .k-section-header .k-button-group{left:0}.k-fields-issue-headline,.k-info-section-headline{margin-bottom:.5rem}.k-fields-section input[type=submit]{display:none}[data-locked] .k-fields-section{opacity:.2;pointer-events:none}.k-browser-view .k-error-view-content{text-align:left}.k-error-view{position:absolute;top:0;right:0;bottom:0;left:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.k-error-view-content{line-height:1.5em;max-width:25rem;text-align:center}.k-error-view-icon{color:#c82829;display:inline-block}.k-error-view-content p:not(:last-child){margin-bottom:.75rem}.k-installation-view .k-button{display:block;margin-top:1.5rem}.k-installation-view .k-headline{margin-bottom:.75rem}.k-installation-issues{line-height:1.5em;font-size:.875rem}.k-installation-issues li{position:relative;padding:1.5rem;background:#fff}[dir=ltr] .k-installation-issues li{padding-left:3.5rem}[dir=rtl] .k-installation-issues li{padding-right:3.5rem}.k-installation-issues .k-icon{position:absolute;top:calc(1.5rem + 2px)}[dir=ltr] .k-installation-issues .k-icon{left:1.5rem}[dir=rtl] .k-installation-issues .k-icon{right:1.5rem}.k-installation-issues .k-icon svg *{fill:#c82829}.k-installation-issues li:not(:last-child){margin-bottom:2px}.k-installation-issues li code{font:inherit;color:#c82829}.k-installation-view .k-button[type=submit]{padding:1rem}[dir=ltr] .k-installation-view .k-button[type=submit]{margin-left:-1rem}[dir=rtl] .k-installation-view .k-button[type=submit]{margin-right:-1rem}.k-login-form[data-invalid]{-webkit-animation:shake .5s linear;animation:shake .5s linear}.k-login-form[data-invalid] .k-field label{-webkit-animation:nope 2s linear;animation:nope 2s linear}.k-login-form label abbr{visibility:hidden}.k-login-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:1.5rem 0}.k-login-button{padding:.5rem 1rem;font-weight:500;-webkit-transition:opacity .3s;transition:opacity .3s}[dir=ltr] .k-login-button{margin-right:-1rem}[dir=rtl] .k-login-button{margin-left:-1rem}.k-login-button span{opacity:1}.k-login-button[disabled]{opacity:.25}.k-login-checkbox{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:.875rem;cursor:pointer}.k-login-checkbox .k-checkbox-text{opacity:.75;-webkit-transition:opacity .3s;transition:opacity .3s}.k-login-checkbox:focus span,.k-login-checkbox:hover span{opacity:1}@-webkit-keyframes nope{0%{color:#c82829}to{color:#16171a}}@keyframes nope{0%{color:#c82829}to{color:#16171a}}@-webkit-keyframes shake{8%,41%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}25%,58%{-webkit-transform:translateX(10px);transform:translateX(10px)}75%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}92%{-webkit-transform:translateX(5px);transform:translateX(5px)}0%,to{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes shake{8%,41%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}25%,58%{-webkit-transform:translateX(10px);transform:translateX(10px)}75%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}92%{-webkit-transform:translateX(5px);transform:translateX(5px)}0%,to{-webkit-transform:translateX(0);transform:translateX(0)}}.k-status-flag svg{width:14px;height:14px}.k-status-flag-listed .k-icon{color:#a7bd68}.k-status-flag-unlisted .k-icon{color:#81a2be}.k-status-flag-draft .k-icon{color:#d16464}.k-status-flag[disabled]{opacity:1}.k-settings-view section{margin-bottom:3rem}.k-settings-view .k-header{margin-bottom:1.5rem}.k-settings-view header{margin-bottom:.5rem;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.k-settings-view header,.k-system-info-box{display:-webkit-box;display:-ms-flexbox;display:flex}.k-system-info-box{background:#fff;padding:.75rem}.k-system-info-box li{-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0}.k-system-info-box dt{font-size:.875rem;color:#777;margin-bottom:.25rem}.k-system-unregistered{color:#c82829}.k-languages-section{margin-bottom:2rem}.k-user-profile{background:#fff}.k-user-profile>.k-view{padding-top:3rem;padding-bottom:3rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:0}.k-user-profile .k-button-group{overflow:hidden}[dir=ltr] .k-user-profile .k-button-group{margin-left:.75rem}[dir=rtl] .k-user-profile .k-button-group{margin-right:.75rem}.k-user-profile .k-button-group .k-button{display:block;padding-top:.25rem;padding-bottom:.25rem;overflow:hidden;white-space:nowrap}.k-user-profile .k-button-group .k-button[disabled]{opacity:1}.k-user-profile .k-dropdown-content{margin-top:.5rem;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.k-user-view-image .k-image{display:block;width:4rem;height:4rem;line-height:0}.k-user-view-image .k-button-text{opacity:1}.k-user-view-image .k-icon{width:4rem;height:4rem;background:#16171a;color:#999}.k-user-name-placeholder{color:#999;-webkit-transition:color .3s;transition:color .3s}.k-header[data-editable] .k-user-name-placeholder:hover{color:#16171a}
\ No newline at end of file
diff --git a/kirby/panel/dist/img/icons.svg b/kirby/panel/dist/img/icons.svg
index 4ec6dbd..87ef668 100755
--- a/kirby/panel/dist/img/icons.svg
+++ b/kirby/panel/dist/img/icons.svg
@@ -2,18 +2,15 @@
-
+
-
+
-
+
@@ -31,30 +28,24 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -62,32 +53,27 @@
-
+
-
+
-
+
-
+
-
+
@@ -98,19 +84,16 @@
-
+
-
+
-
+
@@ -122,93 +105,65 @@
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
+
-
+
@@ -222,46 +177,36 @@
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -324,49 +260,40 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -393,19 +320,21 @@
-
+
+
-
-
-
+
+
+
-
+
-
-
+
+
diff --git a/kirby/panel/dist/js/app.js b/kirby/panel/dist/js/app.js
index d8fd6de..3a080c2 100755
--- a/kirby/panel/dist/js/app.js
+++ b/kirby/panel/dist/js/app.js
@@ -1 +1 @@
-(function(t){function e(e){for(var i,o,r=e[0],l=e[1],u=e[2],d=0,p=[];d1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",i="-";return n="a-z0-9"+n,t=t.trim().toLowerCase(),e.forEach(function(e){e&&J()(e).forEach(function(n){var i="/"!==n.substr(0,1),s=n.substring(1,n.length-1),a=i?n:s;t=t.replace(new RegExp(RegExp.escape(a),"g"),e[n])})}),t=t.replace("/[^\t\n\r -~]/",""),t=t.replace(new RegExp("[^"+n+"]","ig"),i),t=t.replace(new RegExp("["+RegExp.escape(i)+"]{2,}","g"),i),t=t.replace("/",i),t=t.replace(new RegExp("^[^"+n+"]+","g"),""),t=t.replace(new RegExp("[^"+n+"]+$","g"),""),t},ot={mixins:[r],data:function(){return{parent:null,file:{id:null,name:null,filename:null,extension:null}}},computed:{fields:function(){return{name:{label:this.$t("name"),type:"text",required:!0,icon:"title",after:"."+this.file.extension,preselect:!0}}},slugs:function(){return this.$store.state.languages.default?this.$store.state.languages.default.rules:this.system.slugs},system:function(){return this.$store.state.system.info}},methods:{open:function(t,e){var n=this;this.$api.files.get(t,e,{select:["id","filename","name","extension"]}).then(function(e){n.file=e,n.parent=t,n.$refs.dialog.open()}).catch(function(t){n.$store.dispatch("notification/error",t)})},sluggify:function(t){return at(t,[this.slugs,this.system.ascii],".")},submit:function(){var t=this;this.file.name=this.file.name.trim(),0!==this.file.name.length?this.$api.files.rename(this.parent,this.file.filename,this.file.name).then(function(e){t.$store.dispatch("form/move",{old:t.$store.getters["form/id"](t.file.id),new:t.$store.getters["form/id"](e.id)}),t.$store.dispatch("notification/success",":)"),t.$emit("success",e),t.$events.$emit("file.changeName",e),t.$refs.dialog.close()}).catch(function(e){t.$refs.dialog.error(e.message)}):this.$refs.dialog.error(this.$t("error.file.changeName.empty"))}}},rt=ot,lt=Object(c["a"])(rt,Y,W,!1,null,null,null),ut=lt.exports,ct=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",staticClass:"k-files-dialog",attrs:{size:"medium"},on:{cancel:function(e){return t.$emit("cancel")},submit:t.submit}},[t.issue?[n("k-box",{attrs:{text:t.issue,theme:"negative"}})]:[t.models.length?n("k-list",t._l(t.models,function(e){return n("k-list-item",{key:e.filename,attrs:{text:e.text,info:e.info,image:e.image,icon:e.icon},on:{click:function(n){return t.toggle(e)}}},[t.isSelected(e)?n("k-button",{attrs:{slot:"options",autofocus:!0,icon:t.checkedIcon,tooltip:t.$t("remove"),theme:"positive"},slot:"options"}):n("k-button",{attrs:{slot:"options",autofocus:!0,tooltip:t.$t("select"),icon:"circle-outline"},slot:"options"})],1)}),1):n("k-empty",{attrs:{icon:"image"}},[t._v("\n "+t._s(t.$t("dialog.files.empty"))+"\n ")])]],2)},dt=[],pt=n("db0c"),ft=n.n(pt),ht=n("a745"),mt=n.n(ht),gt={data:function(){return{models:[],issue:null,selected:{},options:{endpoint:null,max:null,multiple:!0,parent:null,selected:[]}}},computed:{multiple:function(){return!0===this.options.multiple&&1!==this.options.max},checkedIcon:function(){return!0===this.multiple?"check":"circle-filled"}},methods:{fetch:function(){var t=this;return this.$api.get(this.options.endpoint,this.fetchData||{}).then(function(e){t.models=e.data||e.pages||e,t.onFetched&&t.onFetched(e)}).catch(function(e){t.models=[],t.issue=e.message})},open:function(t,e){var n=this,i=!0;mt()(t)?(this.models=t,i=!1):(this.models=[],e=t),this.options=Object(f["a"])({},this.options,e),this.selected={},this.options.selected.forEach(function(t){n.$set(n.selected,t,{id:t})}),i?this.fetch().then(function(){n.$refs.dialog.open()}):this.$refs.dialog.open()},submit:function(){this.$emit("submit",ft()(this.selected)),this.$refs.dialog.close()},isSelected:function(t){return void 0!==this.selected[t.id]},toggle:function(t){!1===this.options.multiple&&(this.selected={}),!0!==this.isSelected(t)?this.options.max&&this.options.max<=J()(this.selected).length||this.$set(this.selected,t.id,t):this.$delete(this.selected,t.id)}}},vt={mixins:[gt]},bt=vt,kt=(n("bf53"),Object(c["a"])(bt,ct,dt,!1,null,null,null)),$t=kt.exports,_t=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("language.create"),notification:t.notification,theme:"positive",size:"medium"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields,novalidate:!0},on:{submit:t.submit},model:{value:t.language,callback:function(e){t.language=e},expression:"language"}})],1)},yt=[],xt={mixins:[r],data:function(){return{notification:null,language:{name:"",code:"",direction:"ltr",locale:""}}},computed:{fields:function(){return{name:{label:this.$t("language.name"),type:"text",required:!0,icon:"title"},code:{label:this.$t("language.code"),type:"text",required:!0,counter:!1,icon:"globe",width:"1/2"},direction:{label:this.$t("language.direction"),type:"select",required:!0,empty:!1,options:[{value:"ltr",text:this.$t("language.direction.ltr")},{value:"rtl",text:this.$t("language.direction.rtl")}],width:"1/2"},locale:{label:this.$t("language.locale"),type:"text",placeholder:"en_US"}}},system:function(){return this.$store.state.system.info}},watch:{"language.name":function(t){this.onNameChanges(t)},"language.code":function(t){this.language.code=at(t,[this.system.ascii])}},methods:{onNameChanges:function(t){this.language.code=at(t,[this.language.rules,this.system.ascii]).substr(0,2)},open:function(){this.language={name:"",code:"",direction:"ltr"},this.$refs.dialog.open()},submit:function(){var t=this;this.$api.post("languages",{name:this.language.name,code:this.language.code,direction:this.language.direction,locale:this.language.locale}).then(function(){t.$store.dispatch("languages/load"),t.success({message:":)",event:"language.create"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},wt=xt,Ot=Object(c["a"])(wt,_t,yt,!1,null,null,null),Ct=Ot.exports,St=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("delete"),theme:"negative",icon:"trash"},on:{submit:t.submit}},[n("k-text",{domProps:{innerHTML:t._s(t.$t("language.delete.confirm",{name:t.language.name}))}})],1)},Et=[],jt={mixins:[r],data:function(){return{language:{name:null}}},methods:{open:function(t){var e=this;this.$api.get("languages/"+t).then(function(t){e.language=t,e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.$api.delete("languages/"+this.language.code).then(function(){t.$store.dispatch("languages/load"),t.success({message:t.$t("language.deleted"),event:"language.delete"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},Tt=jt,Lt=Object(c["a"])(Tt,St,Et,!1,null,null,null),It=Lt.exports,qt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("save"),notification:t.notification,size:"medium"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.language,callback:function(e){t.language=e},expression:"language"}})],1)},At=[],Nt=n("7618"),Bt={mixins:[Ct],computed:{fields:function(){var t=Ct.computed.fields.apply(this);return t.code.disabled=!0,"object"===Object(Nt["a"])(this.language.locale)&&(t.locale={label:t.locale.label,type:"info",text:this.$t("language.locale.warning")}),t}},methods:{onNameChanges:function(){return!1},open:function(t){var e=this;this.$api.get("languages/"+t).then(function(t){e.language=t;var n=J()(e.language.locale);1===n.length&&(e.language.locale=e.language.locale[n[0]]),e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.$api.patch("languages/"+this.language.code,{name:this.language.name,direction:this.language.direction,locale:this.language.locale}).then(function(){t.$store.dispatch("languages/load"),t.success({message:t.$t("language.updated"),event:"language.update"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},Dt=Bt,Pt=Object(c["a"])(Dt,qt,At,!1,null,null,null),Mt=Pt.exports,Rt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("page.draft.create"),notification:t.notification,size:"medium",theme:"positive"},on:{submit:function(e){return t.$refs.form.submit()},close:t.reset}},[n("k-form",{ref:"form",attrs:{fields:t.fields,novalidate:!0},on:{submit:t.submit},model:{value:t.page,callback:function(e){t.page=e},expression:"page"}})],1)},zt=[],Ft=(n("b54a"),{mixins:[r],data:function(){return{notification:null,parent:null,section:null,templates:[],page:this.emptyForm()}},computed:{fields:function(){return{title:{label:this.$t("title"),type:"text",required:!0,icon:"title"},slug:{label:this.$t("slug"),type:"text",required:!0,counter:!1,icon:"url"},template:{name:"template",label:this.$t("template"),type:"select",disabled:1===this.templates.length,required:!0,icon:"code",empty:!1,options:this.templates}}},slugs:function(){return this.$store.state.languages.default?this.$store.state.languages.default.rules:this.system.slugs},system:function(){return this.$store.state.system.info}},watch:{"page.title":function(t){this.page.slug=at(t,[this.slugs,this.system.ascii])}},methods:{emptyForm:function(){return{title:"",slug:"",template:null}},open:function(t,e,n){var i=this;this.parent=t,this.section=n,this.$api.get(e,{section:n}).then(function(t){i.templates=t.map(function(t){return{value:t.name,text:t.title}}),i.templates[0]&&(i.page.template=i.templates[0].value),i.$refs.dialog.open()}).catch(function(t){i.$store.dispatch("notification/error",t)})},submit:function(){var t=this;if(this.page.title=this.page.title.trim(),0===this.page.title.length)return this.$refs.dialog.error("Please enter a title"),!1;var e={template:this.page.template,slug:this.page.slug,content:{title:this.page.title}};this.$api.post(this.parent+"/children",e).then(function(e){t.success({route:t.$api.pages.link(e.id),message:":)",event:"page.create"})}).catch(function(e){t.$refs.dialog.error(e.message)})},reset:function(){this.page=this.emptyForm()}}}),Ut=Ft,Ht=Object(c["a"])(Ut,Rt,zt,!1,null,null,null),Kt=Ht.exports,Vt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("duplicate"),notification:t.notification,size:"medium",theme:"positive"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields,novalidate:!0},on:{submit:t.submit},model:{value:t.page,callback:function(e){t.page=e},expression:"page"}})],1)},Yt=[],Wt={mixins:[r],data:function(){return{notification:null,page:{children:!1,files:!1,hasChildren:!1,hasDrafts:!1,hasFiles:!1,id:null,slug:""}}},computed:{fields:function(){var t=this.page.hasChildren||this.page.hasDrafts,e=this.page.hasFiles,n={slug:{label:this.$t("slug"),type:"text",required:!0,counter:!1,spellcheck:!1,icon:"url"}};return e&&(n.files={label:this.$t("page.duplicate.files"),type:"toggle",required:!0,width:t?"1/2":null}),t&&(n.children={label:this.$t("page.duplicate.pages"),type:"toggle",required:!0,width:e?"1/2":null}),n},slugs:function(){return this.$store.state.languages.default?this.$store.state.languages.default.rules:this.system.slugs},system:function(){return this.$store.state.system.info}},watch:{"page.slug":function(t){this.page.slug=at(t,[this.slugs,this.system.ascii])}},methods:{open:function(t){var e=this;this.$api.pages.get(t,{language:"@default",select:"id,slug,hasChildren,hasDrafts,hasFiles,title"}).then(function(t){e.page.id=t.id,e.page.slug=t.slug+"-"+at(e.$t("page.duplicate.appendix")),e.page.hasChildren=t.hasChildren,e.page.hasDrafts=t.hasDrafts,e.page.hasFiles=t.hasFiles,e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.$api.pages.duplicate(this.page.id,this.page.slug,{children:this.page.children,files:this.page.files}).then(function(e){t.success({route:t.$api.pages.link(e.id),message:":)",event:"page.duplicate"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},Gt=Wt,Jt=Object(c["a"])(Gt,Vt,Yt,!1,null,null,null),Zt=Jt.exports,Xt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("delete"),size:t.hasSubpages?"medium":"small",theme:"negative",icon:"trash"},on:{submit:t.submit,close:t.reset}},[t.page.hasChildren||t.page.hasDrafts?[n("k-text",{domProps:{innerHTML:t._s(t.$t("page.delete.confirm",{title:t.page.title}))}}),n("div",{staticClass:"k-page-remove-warning"},[n("k-box",{attrs:{theme:"negative"},domProps:{innerHTML:t._s(t.$t("page.delete.confirm.subpages"))}})],1),t.hasSubpages?n("k-form",{attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.model,callback:function(e){t.model=e},expression:"model"}}):t._e()]:[n("k-text",{domProps:{innerHTML:t._s(t.$t("page.delete.confirm",{title:t.page.title}))},on:{keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.submit(e)}}})]],2)},Qt=[],te={mixins:[r],data:function(){return{page:{title:null,hasChildren:!1,hasDrafts:!1},model:this.emptyForm()}},computed:{hasSubpages:function(){return this.page.hasChildren||this.page.hasDrafts},fields:function(){return{check:{label:this.$t("page.delete.confirm.title"),type:"text",counter:!1}}}},methods:{emptyForm:function(){return{check:null}},open:function(t){var e=this;this.$api.pages.get(t,{select:"id, title, hasChildren, hasDrafts, parent"}).then(function(t){e.page=t,e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.hasSubpages&&this.model.check!==this.page.title?this.$refs.dialog.error(this.$t("error.page.delete.confirm")):this.$api.pages.delete(this.page.id,{force:!0}).then(function(){t.$store.dispatch("form/remove","pages/"+t.page.id);var e={message:":)",event:"page.delete"};t.$route.params.path&&t.page.id===t.$route.params.path.replace(/\+/g,"/")&&(t.page.parent?e.route=t.$api.pages.link(t.page.parent.id):e.route="/pages"),t.success(e)}).catch(function(e){t.$refs.dialog.error(e.message)})},reset:function(){this.model=this.emptyForm()}}},ee=te,ne=(n("12fb"),Object(c["a"])(ee,Xt,Qt,!1,null,null,null)),ie=ne.exports,se=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("rename"),size:"medium",theme:"positive"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.page,callback:function(e){t.page=e},expression:"page"}})],1)},ae=[],oe={mixins:[r],data:function(){return{page:{id:null,title:null}}},computed:{fields:function(){return{title:{label:this.$t("title"),type:"text",required:!0,icon:"title",preselect:!0}}}},methods:{open:function(t){var e=this;this.$api.pages.get(t,{select:["id","title"]}).then(function(t){e.page=t,e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.page.title=this.page.title.trim(),0!==this.page.title.length?this.$api.pages.title(this.page.id,this.page.title).then(function(){t.success({message:":)",event:"page.changeTitle"})}).catch(function(e){t.$refs.dialog.error(e.message)}):this.$refs.dialog.error(this.$t("error.page.changeTitle.empty"))}}},re=oe,le=Object(c["a"])(re,se,ae,!1,null,null,null),ue=le.exports,ce=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("change"),size:"medium",theme:"positive"},on:{submit:t.submit}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.changeStatus},model:{value:t.form,callback:function(e){t.form=e},expression:"form"}})],1)},de=[],pe={mixins:[r],data:function(){return{page:{id:null},isBlocked:!1,isIncomplete:!1,form:{status:null,position:null},states:{}}},computed:{fields:function(){var t=this,e={status:{name:"status",label:this.$t("page.changeStatus.select"),type:"radio",required:!0,options:J()(this.states).map(function(e){return{value:e,text:t.states[e].label,info:t.states[e].text}})}};return"listed"===this.form.status&&"default"===this.page.blueprint.num&&(e.position={name:"position",label:this.$t("page.changeStatus.position"),type:"select",empty:!1,options:this.sortingOptions()}),e}},methods:{sortingOptions:function(){var t=this,e=[],n=0;return this.page.siblings.forEach(function(i){if(i.id===t.page.id||i.num<1)return!1;n++,e.push({value:n,text:n}),e.push({value:i.id,text:i.title,disabled:!0})}),e.push({value:n+1,text:n+1}),e},open:function(t){var e=this;this.$api.pages.get(t,{select:["id","status","num","errors","siblings","blueprint"]}).then(function(t){return!1===t.blueprint.options.changeStatus?e.$store.dispatch("notification/error",{message:e.$t("error.page.changeStatus.permission")}):"draft"===t.status&&J()(t.errors).length>0?e.$store.dispatch("notification/error",{message:e.$t("error.page.changeStatus.incomplete"),details:t.errors}):(e.states=t.blueprint.status,e.page=t,e.form.status=t.status,e.form.position=t.num||t.siblings.length+1,void e.$refs.dialog.open())}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){this.$refs.form.submit()},changeStatus:function(){var t=this;this.$api.pages.status(this.page.id,this.form.status,this.form.position||1).then(function(){t.success({message:":)",event:"page.changeStatus"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},fe=pe,he=Object(c["a"])(fe,ce,de,!1,null,null,null),me=he.exports,ge=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("change"),size:"medium",theme:"positive"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.page,callback:function(e){t.page=e},expression:"page"}})],1)},ve=[],be={mixins:[r],data:function(){return{blueprints:[],page:{id:null,template:null}}},computed:{fields:function(){return{template:{label:this.$t("template"),type:"select",required:!0,empty:!1,options:this.page.blueprints,icon:"template"}}}},methods:{open:function(t){var e=this;this.$api.pages.get(t,{select:["id","template","blueprints"]}).then(function(t){if(t.blueprints.length<=1)return e.$store.dispatch("notification/error",{message:e.$t("error.page.changeTemplate.invalid",{slug:t.id})});e.page=t,e.page.blueprints=e.page.blueprints.map(function(t){return{text:t.title,value:t.name}}),e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.$events.$emit("keydown.cmd.s"),this.$api.pages.template(this.page.id,this.page.template).then(function(){t.success({message:":)",event:"page.changeTemplate"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},ke=be,$e=Object(c["a"])(ke,ge,ve,!1,null,null,null),_e=$e.exports,ye=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("change"),size:"medium",theme:"positive"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",on:{submit:t.submit}},[n("k-text-field",t._b({attrs:{value:t.slug},on:{input:function(e){return t.sluggify(e)}}},"k-text-field",t.field,!1),[n("k-button",{attrs:{slot:"options",icon:"wand","data-options":""},on:{click:function(e){return t.sluggify(t.page.title)}},slot:"options"},[t._v("\n "+t._s(t.$t("page.changeSlug.fromTitle"))+"\n ")])],1)],1)],1)},xe=[],we={mixins:[r],data:function(){return{slug:null,url:null,page:{id:null,parent:null,title:null}}},computed:{field:function(){return{name:"slug",label:this.$t("slug"),type:"text",required:!0,icon:"url",help:"/"+this.url,counter:!1,preselect:!0}},slugs:function(){return this.$store.state.languages.current?this.$store.state.languages.current.rules:this.system.slugs},system:function(){return this.$store.state.system.info}},methods:{sluggify:function(t){this.slug=at(t,[this.slugs,this.system.ascii]),this.page.parents?this.url=this.page.parents.map(function(t){return t.slug}).concat([this.slug]).join("/"):this.url=this.slug},open:function(t){var e=this;this.$api.pages.get(t,{view:"panel"}).then(function(t){e.page=t,e.sluggify(e.page.slug),e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;if(this.slug===this.page.slug)return this.$refs.dialog.close(),void this.$store.dispatch("notification/success",":)");0!==this.slug.length?this.$api.pages.slug(this.page.id,this.slug).then(function(e){t.$store.dispatch("form/move",{old:t.$store.getters["form/id"](t.page.id),new:t.$store.getters["form/id"](e.id)});var n={message:":)",event:"page.changeSlug"};!t.$route.params.path||t.page.id!==t.$route.params.path.replace(/\+/g,"/")||t.$store.state.languages.current&&!0!==t.$store.state.languages.current.default||(n.route=t.$api.pages.link(e.id),delete n.event),t.success(n)}).catch(function(e){t.$refs.dialog.error(e.message)}):this.$refs.dialog.error(this.$t("error.page.slug.invalid"))}}},Oe=we,Ce=Object(c["a"])(Oe,ye,xe,!1,null,null,null),Se=Ce.exports,Ee=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",staticClass:"k-pages-dialog",attrs:{size:"medium"},on:{cancel:function(e){return t.$emit("cancel")},submit:t.submit}},[t.issue?[n("k-box",{attrs:{text:t.issue,theme:"negative"}})]:[t.model?n("header",{staticClass:"k-pages-dialog-navbar"},[n("k-button",{attrs:{disabled:!t.model.id,tooltip:t.$t("back"),icon:"angle-left"},on:{click:t.back}}),n("k-headline",[t._v(t._s(t.model.title))])],1):t._e(),t.models.length?n("k-list",t._l(t.models,function(e){return n("k-list-item",{key:e.id,attrs:{text:e.text,info:e.info,image:e.image,icon:e.icon},on:{click:function(n){return t.toggle(e)}}},[n("template",{slot:"options"},[t.isSelected(e)?n("k-button",{attrs:{slot:"options",autofocus:!0,icon:t.checkedIcon,tooltip:t.$t("remove"),theme:"positive"},slot:"options"}):n("k-button",{attrs:{slot:"options",autofocus:!0,tooltip:t.$t("select"),icon:"circle-outline"},slot:"options"}),t.model?n("k-button",{attrs:{disabled:!e.hasChildren,tooltip:t.$t("open"),icon:"angle-right"},on:{click:function(n){return n.stopPropagation(),t.go(e)}}}):t._e()],1)],2)}),1):n("k-empty",{attrs:{icon:"page"}},[t._v("\n "+t._s(t.$t("dialog.pages.empty"))+"\n ")])]],2)},je=[],Te={mixins:[gt],data:function(){var t=gt.data();return Object(f["a"])({},t,{model:{title:null,parent:null},options:Object(f["a"])({},t.options,{parent:null})})},computed:{fetchData:function(){return{parent:this.options.parent}}},methods:{back:function(){this.options.parent=this.model.parent,this.fetch()},go:function(t){this.options.parent=t.id,this.fetch()},onFetched:function(t){this.model=t.model}}},Le=Te,Ie=(n("ac27"),Object(c["a"])(Le,Ee,je,!1,null,null,null)),qe=Ie.exports,Ae={extends:ue,methods:{open:function(){var t=this;this.$api.site.get({select:["title"]}).then(function(e){t.page=e,t.$refs.dialog.open()}).catch(function(e){t.$store.dispatch("notification/error",e)})},submit:function(){var t=this;this.$api.site.title(this.page.title).then(function(){t.$store.dispatch("system/title",t.page.title),t.success({message:":)",event:"site.changeTitle"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},Ne=Ae,Be=Object(c["a"])(Ne,Z,X,!1,null,null,null),De=Be.exports,Pe=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("create"),size:"medium",theme:"positive"},on:{submit:function(e){return t.$refs.form.submit()},close:t.reset}},[n("k-form",{ref:"form",attrs:{fields:t.fields,novalidate:!0},on:{submit:t.create},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})],1)},Me=[],Re={mixins:[r],data:function(){return{user:this.emptyForm(),languages:[],roles:[]}},computed:{fields:function(){return{name:{label:this.$t("name"),type:"text",icon:"user"},email:{label:this.$t("email"),type:"email",icon:"email",link:!1,required:!0},password:{label:this.$t("password"),type:"password",icon:"key"},language:{label:this.$t("language"),type:"select",icon:"globe",options:this.languages,required:!0,empty:!1},role:{label:this.$t("role"),type:1===this.roles.length?"hidden":"radio",required:!0,options:this.roles}}}},methods:{create:function(){var t=this;this.$api.users.create(this.user).then(function(){t.success({message:":)",event:"user.create"})}).catch(function(e){t.$refs.dialog.error(e.message)})},emptyForm:function(){return{name:"",email:"",password:"",language:"en",role:"admin"}},open:function(){var t=this;this.$api.roles.options().then(function(e){t.roles=e,"admin"!==t.$user.role.name&&(t.roles=t.roles.filter(function(t){return"admin"!==t.value})),t.$api.translations.options().then(function(e){t.languages=e,t.$refs.dialog.open()}).catch(function(e){t.$store.dispatch("notification/error",e)})}).catch(function(e){t.$store.dispatch("notification/error",e)})},reset:function(){this.user=this.emptyForm()}}},ze=Re,Fe=Object(c["a"])(ze,Pe,Me,!1,null,null,null),Ue=Fe.exports,He=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("change"),size:"medium",theme:"positive"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})],1)},Ke=[],Ve={mixins:[r],data:function(){return{user:{id:null,email:null}}},computed:{fields:function(){return{email:{label:this.$t("email"),preselect:!0,required:!0,type:"email"}}}},methods:{open:function(t){var e=this;this.$api.users.get(t,{select:["id","email"]}).then(function(t){e.user=t,e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.$api.users.changeEmail(this.user.id,this.user.email).then(function(e){t.$store.dispatch("form/revert","users/"+t.user.id);var n={message:":)",event:"user.changeEmail"};"User"===t.$route.name&&(n.route=t.$api.users.link(e.id)),t.success(n)}).catch(function(e){t.$refs.dialog.error(e.message)})}}},Ye=Ve,We=Object(c["a"])(Ye,He,Ke,!1,null,null,null),Ge=We.exports,Je=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("change"),theme:"positive",icon:"check"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})],1)},Ze=[],Xe={mixins:[r],data:function(){return{user:{language:"en"},languages:[]}},computed:{fields:function(){return{language:{label:this.$t("language"),type:"select",icon:"globe",options:this.languages,required:!0,empty:!1}}}},created:function(){var t=this;this.$api.translations.options().then(function(e){t.languages=e})},methods:{open:function(t){var e=this;this.$api.users.get(t,{view:"compact"}).then(function(t){e.user=t,e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.$api.users.changeLanguage(this.user.id,this.user.language).then(function(e){t.user=e,t.$store.state.user.current.id===t.user.id&&t.$store.dispatch("user/language",t.user.language),t.success({message:":)",event:"user.changeLanguage"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},Qe=Xe,tn=Object(c["a"])(Qe,Je,Ze,!1,null,null,null),en=tn.exports,nn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("change"),theme:"positive",icon:"check"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.values,callback:function(e){t.values=e},expression:"values"}})],1)},sn=[],an={mixins:[r],data:function(){return{user:null,values:{password:null,passwordConfirmation:null}}},computed:{fields:function(){return{password:{label:this.$t("user.changePassword.new"),type:"password",icon:"key"},passwordConfirmation:{label:this.$t("user.changePassword.new.confirm"),icon:"key",type:"password"}}}},methods:{open:function(t){var e=this;this.$api.users.get(t).then(function(t){e.user=t,e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;return this.values.password.length<8?(this.$refs.dialog.error(this.$t("error.user.password.invalid")),!1):this.values.password!==this.values.passwordConfirmation?(this.$refs.dialog.error(this.$t("error.user.password.notSame")),!1):void this.$api.users.changePassword(this.user.id,this.values.password).then(function(){t.success({message:":)",event:"user.changePassword"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},on=an,rn=Object(c["a"])(on,nn,sn,!1,null,null,null),ln=rn.exports,un=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("delete"),theme:"negative",icon:"trash"},on:{submit:t.submit}},[n("k-text",{domProps:{innerHTML:t._s(t.$t("user.delete.confirm",{email:t.user.email}))}})],1)},cn=[],dn={mixins:[r],data:function(){return{user:{email:null}}},methods:{open:function(t){var e=this;this.$api.users.get(t).then(function(t){e.user=t,e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.$api.users.delete(this.user.id).then(function(){t.$store.dispatch("form/remove","users/"+t.user.id),t.success({message:":)",event:"user.delete"}),"User"===t.$route.name&&t.$router.push("/users")}).catch(function(e){t.$refs.dialog.error(e.message)})}}},pn=dn,fn=Object(c["a"])(pn,un,cn,!1,null,null,null),hn=fn.exports,mn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("rename"),size:"medium",theme:"positive"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})],1)},gn=[],vn={mixins:[r],data:function(){return{user:{id:null,name:null}}},computed:{fields:function(){return{name:{label:this.$t("name"),type:"text",icon:"user",preselect:!0}}}},methods:{open:function(t){var e=this;this.$api.users.get(t,{select:["id","name"]}).then(function(t){e.user=t,e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.user.name=this.user.name.trim(),this.$api.users.changeName(this.user.id,this.user.name).then(function(){t.success({message:":)",event:"user.changeName"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},bn=vn,kn=Object(c["a"])(bn,mn,gn,!1,null,null,null),$n=kn.exports,_n=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("user.changeRole"),size:"medium",theme:"positive"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})],1)},yn=[],xn={mixins:[r],data:function(){return{roles:[],user:{id:null,role:"visitor"}}},computed:{fields:function(){return{role:{label:this.$t("user.changeRole.select"),type:"radio",required:!0,options:this.roles}}}},methods:{open:function(t){var e=this;this.id=t,this.$api.users.get(t).then(function(t){e.$api.roles.options().then(function(n){e.roles=n,e.user=t,e.user.role=e.user.role.name,e.$refs.dialog.open()})}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.$api.users.changeRole(this.user.id,this.user.role).then(function(){t.success({message:":)",event:"user.changeRole"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},wn=xn,On=Object(c["a"])(wn,_n,yn,!1,null,null,null),Cn=On.exports,Sn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",staticClass:"k-users-dialog",attrs:{size:"medium"},on:{cancel:function(e){return t.$emit("cancel")},submit:t.submit}},[t.issue?[n("k-box",{attrs:{text:t.issue,theme:"negative"}})]:[t.models.length?n("k-list",t._l(t.models,function(e){return n("k-list-item",{key:e.email,attrs:{text:e.username,image:e.image,icon:e.icon},on:{click:function(n){return t.toggle(e)}}},[t.isSelected(e)?n("k-button",{attrs:{slot:"options",autofocus:!0,icon:t.checkedIcon,tooltip:t.$t("remove"),theme:"positive"},slot:"options"}):n("k-button",{attrs:{slot:"options",autofocus:!0,tooltip:t.$t("select"),icon:"circle-outline"},slot:"options"})],1)}),1):n("k-empty",{attrs:{icon:"users"}},[t._v("\n "+t._s(t.$t("dialog.users.empty"))+"\n ")])]],2)},En=[],jn={mixins:[gt]},Tn=jn,Ln=(n("7568"),Object(c["a"])(Tn,Sn,En,!1,null,null,null)),In=Ln.exports,qn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dropdown",{staticClass:"k-autocomplete"},[t._t("default"),n("k-dropdown-content",t._g({ref:"dropdown",attrs:{autofocus:!0}},t.$listeners),t._l(t.matches,function(e,i){return n("k-dropdown-item",t._b({key:i,on:{mousedown:function(n){return t.onSelect(e)},keydown:[function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"tab",9,n.key,"Tab")?null:(n.preventDefault(),t.onSelect(e))},function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"enter",13,n.key,"Enter")?null:(n.preventDefault(),t.onSelect(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"left",37,e.key,["Left","ArrowLeft"])?null:"button"in e&&0!==e.button?null:(e.preventDefault(),t.close(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"backspace",void 0,e.key,void 0)?null:(e.preventDefault(),t.close(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"delete",[8,46],e.key,["Backspace","Delete","Del"])?null:(e.preventDefault(),t.close(e))}]}},"k-dropdown-item",e,!1),[t._v("\n "+t._s(e.text)+"\n ")])}),1),t._v("\n "+t._s(t.query)+"\n")],2)},An=[],Nn=(n("4917"),{props:{limit:10,skip:{type:Array,default:function(){return[]}},options:Array,query:String},data:function(){return{matches:[],selected:{text:null}}},methods:{close:function(){this.$refs.dropdown.close()},onSelect:function(t){this.$refs.dropdown.close(),this.$emit("select",t)},search:function(t){var e=this;if(!(t.length<1)){var n=new RegExp(RegExp.escape(t),"ig");this.matches=this.options.filter(function(t){return!!t.text&&(-1===e.skip.indexOf(t.value)&&null!==t.text.match(n))}).slice(0,this.limit),this.$emit("search",t,this.matches),this.$refs.dropdown.open()}}}}),Bn=Nn,Dn=Object(c["a"])(Bn,qn,An,!1,null,null,null),Pn=Dn.exports,Mn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-calendar-input"},[n("nav",[n("k-button",{attrs:{icon:"angle-left"},on:{click:t.prev}}),n("span",{staticClass:"k-calendar-selects"},[n("k-select-input",{attrs:{options:t.months,disabled:t.disabled,required:!0},model:{value:t.month,callback:function(e){t.month=t._n(e)},expression:"month"}}),n("k-select-input",{attrs:{options:t.years,disabled:t.disabled,required:!0},model:{value:t.year,callback:function(e){t.year=t._n(e)},expression:"year"}})],1),n("k-button",{attrs:{icon:"angle-right"},on:{click:t.next}})],1),n("table",{staticClass:"k-calendar-table"},[n("thead",[n("tr",t._l(t.weekdays,function(e){return n("th",{key:"weekday_"+e},[t._v(t._s(e))])}),0)]),n("tbody",t._l(t.numberOfWeeks,function(e){return n("tr",{key:"week_"+e},t._l(t.days(e),function(e,i){return n("td",{key:"day_"+i,staticClass:"k-calendar-day",attrs:{"aria-current":!!t.isToday(e)&&"date","aria-selected":!!t.isCurrent(e)&&"date"}},[e?n("k-button",{on:{click:function(n){return t.select(e)}}},[t._v(t._s(e))]):t._e()],1)}),0)}),0),n("tfoot",[n("tr",[n("td",{staticClass:"k-calendar-today",attrs:{colspan:"7"}},[n("k-button",{on:{click:function(e){return t.go("today")}}},[t._v(t._s(t.$t("today")))])],1)])])])])},Rn=[],zn=n("5a0c"),Fn=n.n(zn),Un=function(t,e){t=String(t);var n="";e=(e||2)-t.length;while(n.length0?t:7},weekdays:function(){return[this.$t("days.mon"),this.$t("days.tue"),this.$t("days.wed"),this.$t("days.thu"),this.$t("days.fri"),this.$t("days.sat"),this.$t("days.sun")]},monthnames:function(){return[this.$t("months.january"),this.$t("months.february"),this.$t("months.march"),this.$t("months.april"),this.$t("months.may"),this.$t("months.june"),this.$t("months.july"),this.$t("months.august"),this.$t("months.september"),this.$t("months.october"),this.$t("months.november"),this.$t("months.december")]},months:function(){var t=[];return this.monthnames.forEach(function(e,n){t.push({value:n,text:e})}),t},years:function(){for(var t=[],e=this.year-10;e<=this.year+10;e++)t.push({value:e,text:Un(e)});return t}},watch:{value:function(t){var e=Fn()(t);this.day=e.date(),this.month=e.month(),this.year=e.year(),this.current=e}},methods:{days:function(t){for(var e=[],n=7*(t-1)+1,i=n;ithis.numberOfDays?e.push(""):e.push(s)}return e},next:function(){var t=this.date.clone().add(1,"month");this.set(t)},isToday:function(t){return this.month===this.today.month()&&this.year===this.today.year()&&t===this.today.date()},isCurrent:function(t){return this.month===this.current.month()&&this.year===this.current.year()&&t===this.current.date()},prev:function(){var t=this.date.clone().subtract(1,"month");this.set(t)},go:function(t,e){"today"===t&&(t=this.today.year(),e=this.today.month()),this.year=t,this.month=e},set:function(t){this.day=t.date(),this.month=t.month(),this.year=t.year()},select:function(t){t&&(this.day=t);var e=Fn()(new Date(this.year,this.month,this.day,this.current.hour(),this.current.minute()));this.$emit("input",e.toISOString())}}},Kn=Hn,Vn=(n("ee15"),Object(c["a"])(Kn,Mn,Rn,!1,null,null,null)),Yn=Vn.exports,Wn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{staticClass:"k-counter",attrs:{"data-invalid":!t.valid}},[n("span",[t._v(t._s(t.count))]),t.min&&t.max?n("span",{staticClass:"k-counter-rules"},[t._v("("+t._s(t.min)+"–"+t._s(t.max)+")")]):t.min?n("span",{staticClass:"k-counter-rules"},[t._v("≥ "+t._s(t.min))]):t.max?n("span",{staticClass:"k-counter-rules"},[t._v("≤ "+t._s(t.max))]):t._e()])},Gn=[],Jn=(n("c5f6"),{props:{count:Number,min:Number,max:Number,required:{type:Boolean,default:!1}},computed:{valid:function(){return!1===this.required&&0===this.count||(!0!==this.required||0!==this.count)&&(!(this.min&&this.countthis.max))}}}),Zn=Jn,Xn=(n("fc0f"),Object(c["a"])(Zn,Wn,Gn,!1,null,null,null)),Qn=Xn.exports,ti=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{ref:"form",staticClass:"k-form",attrs:{method:"POST",autocomplete:"off",novalidate:""},on:{submit:function(e){return e.preventDefault(),t.onSubmit(e)}}},[t._t("header"),t._t("default",[n("k-fieldset",t._g({ref:"fields",attrs:{disabled:t.disabled,fields:t.fields,novalidate:t.novalidate},model:{value:t.value,callback:function(e){t.value=e},expression:"value"}},t.listeners))]),t._t("footer"),n("input",{ref:"submitter",staticClass:"k-form-submitter",attrs:{type:"submit"}})],2)},ei=[],ni={props:{disabled:Boolean,config:Object,fields:{type:[Array,Object],default:function(){return{}}},novalidate:{type:Boolean,default:!1},value:{type:Object,default:function(){return{}}}},data:function(){return{errors:{},listeners:Object(f["a"])({},this.$listeners,{submit:this.onSubmit})}},methods:{focus:function(t){this.$refs.fields&&this.$refs.fields.focus&&this.$refs.fields.focus(t)},onSubmit:function(){this.$emit("submit",this.value)},submit:function(){this.$refs.submitter.click()}}},ii=ni,si=(n("5d33"),Object(c["a"])(ii,ti,ei,!1,null,null,null)),ai=si.exports,oi=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("nav",{staticClass:"k-form-buttons",attrs:{"data-theme":t.mode}},["unlock"===t.mode?n("k-view",[n("p",{staticClass:"k-form-lock-info"},[t._v("\n "+t._s(t.$t("lock.isUnlocked"))+"\n ")]),n("span",{staticClass:"k-form-lock-buttons"},[n("k-button",{staticClass:"k-form-button",attrs:{icon:"download"},on:{click:t.onDownload}},[t._v("\n "+t._s(t.$t("download"))+"\n ")]),n("k-button",{staticClass:"k-form-button",attrs:{icon:"check"},on:{click:t.onResolve}},[t._v("\n "+t._s(t.$t("confirm"))+"\n ")])],1)]):"lock"===t.mode?n("k-view",[n("p",{staticClass:"k-form-lock-info"},[n("k-icon",{attrs:{type:"lock"}}),n("span",{domProps:{innerHTML:t._s(t.$t("lock.isLocked",{email:t.form.lock.email}))}})],1),n("k-button",{staticClass:"k-form-button",attrs:{disabled:!t.form.lock.unlockable,icon:"unlock"},on:{click:t.setUnlock}},[t._v("\n "+t._s(t.$t("lock.unlock"))+"\n ")])],1):"changes"===t.mode?n("k-view",[n("k-button",{staticClass:"k-form-button",attrs:{disabled:t.isDisabled,icon:"undo"},on:{click:t.onRevert}},[t._v("\n "+t._s(t.$t("revert"))+"\n ")]),n("k-button",{staticClass:"k-form-button",attrs:{disabled:t.isDisabled,icon:"check"},on:{click:t.onSave}},[t._v("\n "+t._s(t.$t("save"))+"\n ")])],1):t._e()],1)},ri=[],li=n("75fc"),ui={data:function(){return{supportsLocking:!0}},computed:{api:function(){return{lock:[this.$route.path+"/lock",null,null,!0],unlock:[this.$route.path+"/unlock",null,null,!0]}},hasChanges:function(){return this.$store.getters["form/hasChanges"](this.id)},form:function(){return{lock:this.$store.getters["form/lock"],unlock:this.$store.getters["form/unlock"]}},id:function(){return this.$store.getters["form/current"]},isDisabled:function(){return this.$store.getters["form/isDisabled"]},isLocked:function(){return null!==this.form.lock},isUnlocked:function(){return null!==this.form.unlock},mode:function(){return!0===this.isUnlocked?"unlock":!0===this.isLocked?"lock":!0===this.hasChanges?"changes":void 0}},watch:{hasChanges:function(t,e){if(!1===e&&!0===t)return this.$store.dispatch("heartbeat/remove",this.getLock),void this.$store.dispatch("heartbeat/add",[this.setLock,30]);this.id&&!0===e&&!1===t&&this.removeLock()},id:function(){if(!this.id)return this.$store.dispatch("heartbeat/remove",this.getLock),void this.$store.dispatch("heartbeat/remove",this.setLock);!1===this.hasChanges&&this.$store.dispatch("heartbeat/add",this.getLock)}},created:function(){this.$events.$on("keydown.cmd.s",this.onSave)},destroyed:function(){this.$events.$off("keydown.cmd.s",this.onSave)},methods:{getLock:function(){var t,e=this;return(t=this.$api).get.apply(t,Object(li["a"])(this.api.lock)).then(function(t){if(!1===t.supported)return e.supportsLocking=!1,e.$store.dispatch("heartbeat/remove",e.getLock),void console.warn("Content locking not supported for "+e.id);!1===t.locked?(e.isLocked&&e.form.lock.user!==e.$store.state.user.current.id&&e.$events.$emit("model.reload"),e.$store.dispatch("form/lock",null)):e.$store.dispatch("form/lock",t.locked)})},setLock:function(){var t,e=this;!0===this.supportsLocking&&(t=this.$api).patch.apply(t,Object(li["a"])(this.api.lock)).catch(function(){e.$store.dispatch("form/revert",e.id),e.$store.dispatch("heartbeat/remove",e.setLock),e.$store.dispatch("heartbeat/add",e.getLock)})},removeLock:function(){var t,e=this;!0===this.supportsLocking&&(this.$store.dispatch("heartbeat/remove",this.setLock),(t=this.$api).delete.apply(t,Object(li["a"])(this.api.lock)).then(function(){e.$store.dispatch("form/lock",null),e.$store.dispatch("heartbeat/add",e.getLock)}))},setUnlock:function(){var t,e=this;!0===this.supportsLocking&&(this.$store.dispatch("heartbeat/remove",this.setLock),(t=this.$api).patch.apply(t,Object(li["a"])(this.api.unlock)).then(function(){e.$store.dispatch("form/lock",null),e.$store.dispatch("heartbeat/add",e.getLock)}))},removeUnlock:function(){var t,e=this;!0===this.supportsLocking&&(this.$store.dispatch("heartbeat/remove",this.setLock),(t=this.$api).delete.apply(t,Object(li["a"])(this.api.unlock)).then(function(){e.$store.dispatch("form/unlock",null),e.$store.dispatch("heartbeat/add",e.getLock)}))},onDownload:function(){var t=this,e="";J()(this.form.unlock).forEach(function(n){e+=n+": \n\n"+t.form.unlock[n],e+="\n\n----\n\n"});var n=document.createElement("a");n.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(e)),n.setAttribute("download",this.id+".txt"),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)},onResolve:function(){this.$store.dispatch("form/revert",this.id),this.removeUnlock()},onRevert:function(){this.$store.dispatch("form/revert",this.id)},onSave:function(t){var e=this;return!!t&&(t.preventDefault&&t.preventDefault(),!1===this.hasChanges||void this.$store.dispatch("form/save",this.id).then(function(){e.$events.$emit("model.update"),e.$store.dispatch("notification/success",":)")}).catch(function(t){403!==t.code&&(t.details?e.$store.dispatch("notification/error",{message:e.$t("error.form.incomplete"),details:t.details}):e.$store.dispatch("notification/error",{message:e.$t("error.form.notSaved"),details:[{label:"Exception: "+t.exception,message:t.message}]}))}))}}},ci=ui,di=(n("18dd"),Object(c["a"])(ci,oi,ri,!1,null,null,null)),pi=di.exports,fi=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.storage.length>0?n("k-dropdown",{staticClass:"k-form-indicator"},[n("k-button",{staticClass:"k-topbar-button",on:{click:t.toggle}},[n("k-icon",{staticClass:"k-form-indicator-icon",attrs:{type:"edit"}})],1),n("k-dropdown-content",{ref:"list",attrs:{align:"right"}},[n("p",{staticClass:"k-form-indicator-info"},[t._v("\n "+t._s(t.$t("lock.unsaved"))+":\n ")]),n("hr"),t._l(t.entries,function(e){return n("k-dropdown-item",{key:e.link,attrs:{icon:e.icon,link:e.link}},[t._v("\n "+t._s(e.label)+"\n ")])})],2)],1):t._e()},hi=[],mi=(n("28a5"),n("795b")),gi=n.n(mi),vi=(n("5df3"),n("f559"),{data:function(){return{isOpen:!1,entries:[],storage:[]}},computed:{store:function(){return this.$store.state.form.models}},watch:{store:{handler:function(){this.loadFromStorage()},deep:!0}},created:function(){this.loadFromStorage()},methods:{loadFromApi:function(){var t=this,e=this.storage.map(function(e){return t.$api.get(e.api,{view:"compact"},null,!0).then(function(n){return e.id.startsWith("pages/")?{icon:"page",label:n.title,link:t.$api.pages.link(n.id)}:e.id.startsWith("files/")?{icon:"image",label:n.filename,link:n.link}:e.id.startsWith("users/")?{icon:"user",label:n.email,link:t.$api.users.link(n.id)}:void 0})});return gi.a.all(e).then(function(e){t.entries=e})},loadFromStorage:function(){var t=J()(localStorage);t=t.filter(function(t){return t.startsWith("kirby$form$")}),this.storage=t.map(function(t){return Object(f["a"])({},JSON.parse(localStorage.getItem(t)),{id:t.split("kirby$form$")[1]})}),this.storage=this.storage.filter(function(t){return J()(t.changes||{}).length>0})},toggle:function(){var t=this;this.isOpen=!this.isOpen,!0===this.isOpen?this.loadFromApi().then(function(){t.$refs.list.toggle()}):this.$refs.list.toggle()}}}),bi=vi,ki=(n("9e26"),Object(c["a"])(bi,fi,hi,!1,null,null,null)),$i=ki.exports,_i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{class:"k-field k-field-name-"+t.name,attrs:{"data-disabled":t.disabled},on:{focusin:function(e){return t.$emit("focus",e)},focusout:function(e){return t.$emit("blur",e)}}},[t._t("header",[n("header",{staticClass:"k-field-header"},[t._t("label",[n("label",{staticClass:"k-field-label",attrs:{for:t.input}},[t._v(t._s(t.labelText)+" "),t.required?n("abbr",{attrs:{title:"This field is required"}},[t._v("*")]):t._e()])]),t._t("options"),t._t("counter",[t.counter?n("k-counter",t._b({staticClass:"k-field-counter",attrs:{required:t.required}},"k-counter",t.counter,!1)):t._e()])],2)]),t._t("default"),t._t("footer",[t.help||t.$slots.help?n("footer",{staticClass:"k-field-footer"},[t._t("help",[t.help?n("k-text",{staticClass:"k-field-help",attrs:{theme:"help"},domProps:{innerHTML:t._s(t.help)}}):t._e()])],2):t._e()])],2)},yi=[],xi={inheritAttrs:!1,props:{counter:[Boolean,Object],disabled:Boolean,endpoints:Object,help:String,input:[String,Number],label:String,name:[String,Number],required:Boolean,type:String},computed:{labelText:function(){return this.label||" "}}},wi=xi,Oi=(n("a134"),Object(c["a"])(wi,_i,yi,!1,null,null,null)),Ci=Oi.exports,Si=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("fieldset",{staticClass:"k-fieldset"},[n("k-grid",t._l(t.fields,function(e,i){return"hidden"!==e.type&&t.meetsCondition(e)?n("k-column",{key:e.signature,attrs:{width:e.width}},[n("k-error-boundary",[t.hasFieldType(e.type)?n("k-"+e.type+"-field",t._b({ref:i,refInFor:!0,tag:"component",attrs:{name:i,novalidate:t.novalidate,disabled:t.disabled||e.disabled},on:{input:function(n){return t.$emit("input",t.value,e,i)},focus:function(n){return t.$emit("focus",n,e,i)},invalid:function(n,s){return t.onInvalid(n,s,e,i)},submit:function(n){return t.$emit("submit",n,e,i)}},model:{value:t.value[i],callback:function(e){t.$set(t.value,i,e)},expression:"value[fieldName]"}},"component",e,!1)):n("k-box",{attrs:{theme:"negative"}},[n("k-text",{attrs:{size:"small"}},[t._v("\n The field type "),n("strong",[t._v('"'+t._s(i)+'"')]),t._v(" does not exist\n ")])],1)],1)],1):t._e()}),1)],1)},Ei=[],ji={props:{config:Object,disabled:Boolean,fields:{type:[Array,Object],default:function(){return[]}},novalidate:{type:Boolean,default:!1},value:{type:Object,default:function(){return{}}}},data:function(){return{errors:{}}},methods:{focus:function(t){if(t)this.hasField(t)&&"function"===typeof this.$refs[t][0].focus&&this.$refs[t][0].focus();else{var e=J()(this.$refs)[0];this.focus(e)}},hasFieldType:function(t){return C["a"].options.components["k-"+t+"-field"]},hasField:function(t){return this.$refs[t]&&this.$refs[t][0]},meetsCondition:function(t){var e=this;if(!t.when)return!0;var n=!0;return J()(t.when).forEach(function(i){var s=e.value[i.toLowerCase()],a=t.when[i];s!==a&&(n=!1)}),n},onInvalid:function(t,e,n,i){this.errors[i]=e,this.$emit("invalid",this.errors)},hasErrors:function(){return J()(this.errors).length}}},Ti=ji,Li=(n("862b"),Object(c["a"])(Ti,Si,Ei,!1,null,null,null)),Ii=Li.exports,qi=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-input",attrs:{"data-disabled":t.disabled,"data-invalid":!t.novalidate&&t.isInvalid,"data-theme":t.theme,"data-type":t.type}},[t.$slots.before||t.before?n("span",{staticClass:"k-input-before",on:{click:t.focus}},[t._t("before",[t._v(t._s(t.before))])],2):t._e(),n("span",{staticClass:"k-input-element",on:{click:function(e){return e.stopPropagation(),t.focus(e)}}},[t._t("default",[n("k-"+t.type+"-input",t._g(t._b({ref:"input",tag:"component",attrs:{value:t.value}},"component",t.inputProps,!1),t.listeners))])],2),t.$slots.after||t.after?n("span",{staticClass:"k-input-after",on:{click:t.focus}},[t._t("after",[t._v(t._s(t.after))])],2):t._e(),t.$slots.icon||t.icon?n("span",{staticClass:"k-input-icon",on:{click:t.focus}},[t._t("icon",[n("k-icon",{attrs:{type:t.icon}})])],2):t._e()])},Ai=[],Ni={inheritAttrs:!1,props:{after:String,before:String,disabled:Boolean,type:String,icon:[String,Boolean],invalid:Boolean,theme:String,novalidate:{type:Boolean,default:!1},value:{type:[String,Boolean,Number,Object,Array],default:null}},data:function(){var t=this;return{isInvalid:this.invalid,listeners:Object(f["a"])({},this.$listeners,{invalid:function(e,n){t.isInvalid=e,t.$emit("invalid",e,n)}}),inputProps:Object(f["a"])({},this.$props,this.$attrs)}},methods:{blur:function(t){t.relatedTarget&&!1===this.$el.contains(t.relatedTarget)&&this.$refs.input.blur&&this.$refs.input.blur()},focus:function(t){if(t&&t.target&&"INPUT"===t.target.tagName)t.target.focus();else if(this.$refs.input&&this.$refs.input.focus)this.$refs.input.focus();else{var e=this.$el.querySelector("input, select, textarea");e&&e.focus()}}}},Bi=Ni,Di=(n("c7c8"),Object(c["a"])(Bi,qi,Ai,!1,null,null,null)),Pi=Di.exports,Mi=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-upload"},[n("input",{ref:"input",attrs:{accept:t.options.accept,multiple:t.options.multiple,"aria-hidden":"true",type:"file",tabindex:"-1"},on:{change:t.select}}),n("k-dialog",{ref:"dialog",attrs:{size:"medium"}},[t.errors.length>0?[n("k-headline",[t._v(t._s(t.$t("upload.errors")))]),n("ul",{staticClass:"k-upload-error-list"},t._l(t.errors,function(e,i){return n("li",{key:"error-"+i},[n("p",{staticClass:"k-upload-error-filename"},[t._v(t._s(e.file.name))]),n("p",{staticClass:"k-upload-error-message"},[t._v(t._s(e.message))])])}),0)]:[n("k-headline",[t._v(t._s(t.$t("upload.progress")))]),n("ul",{staticClass:"k-upload-list"},t._l(t.files,function(e,i){return n("li",{key:"file-"+i},[n("k-progress",{ref:e.name,refInFor:!0}),n("p",{staticClass:"k-upload-list-filename"},[t._v(t._s(e.name))]),n("p",[t._v(t._s(t.errors[e.name]))])],1)}),0)],n("template",{slot:"footer"},[t.errors.length>0?[n("k-button-group",[n("k-button",{attrs:{icon:"check"},on:{click:function(e){return t.$refs.dialog.close()}}},[t._v("\n "+t._s(t.$t("confirm"))+"\n ")])],1)]:t._e()],2)],2)],1)},Ri=[],zi=n("5176"),Fi=n.n(zi),Ui=function(t,e){var n={url:"/",field:"file",method:"POST",accept:"text",attributes:{},complete:function(){},error:function(){},success:function(){},progress:function(){}},i=Fi()(n,e),s=new FormData;s.append(i.field,t,t.name),i.attributes&&J()(i.attributes).forEach(function(t){s.append(t,i.attributes[t])});var a=new XMLHttpRequest,o=function(e){if(e.lengthComputable&&i.progress){var n=Math.max(0,Math.min(100,e.loaded/e.total*100));i.progress(a,t,Math.ceil(n))}};a.addEventListener("loadstart",o),a.addEventListener("progress",o),a.addEventListener("load",function(e){var n=null;try{n=JSON.parse(e.target.response)}catch(s){n={status:"error",message:"The file could not be uploaded"}}n.status&&"error"===n.status?i.error(a,t,n):(i.success(a,t,n),i.progress(a,t,100))}),a.addEventListener("error",function(e){var n=JSON.parse(e.target.response);i.error(a,t,n),i.progress(a,t,100)}),a.open("POST",i.url,!0),i.headers&&J()(i.headers).forEach(function(t){var e=i.headers[t];a.setRequestHeader(t,e)}),a.send(s)},Hi={props:{url:{type:String},accept:{type:String,default:"*"},attributes:{type:Object},multiple:{type:Boolean,default:!0},max:{type:Number}},data:function(){return{options:this.$props,completed:{},errors:[],files:[],total:0}},methods:{open:function(t){var e=this;this.params(t),setTimeout(function(){e.$refs.input.click()},1)},params:function(t){this.options=Fi()({},this.$props,t)},select:function(t){this.upload(t.target.files)},drop:function(t,e){this.params(e),this.upload(t)},upload:function(t){var e=this;this.$refs.dialog.open(),this.files=Object(li["a"])(t),this.completed={},this.errors=[],this.hasErrors=!1,this.options.max&&(this.files=this.files.slice(0,this.options.max)),this.total=this.files.length,this.files.forEach(function(t){Ui(t,{url:e.options.url,attributes:e.options.attributes,headers:{"X-CSRF":window.panel.csrf},progress:function(t,n,i){e.$refs[n.name]&&e.$refs[n.name][0]&&e.$refs[n.name][0].set(i)},success:function(t,n,i){e.complete(n,i.data)},error:function(t,n,i){e.errors.push({file:n,message:i.message}),e.complete(n,i.data)}})})},complete:function(t,e){var n=this;if(this.completed[t.name]=e,J()(this.completed).length==this.total){if(this.$refs.input.value="",this.errors.length>0)return this.$forceUpdate(),void this.$emit("error",this.files);setTimeout(function(){n.$refs.dialog.close(),n.$emit("success",n.files,ft()(n.completed))},250)}}}},Ki=Hi,Vi=(n("5aee"),Object(c["a"])(Ki,Mi,Ri,!1,null,null,null)),Yi=Vi.exports,Wi=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("label",{staticClass:"k-checkbox-input",on:{click:function(t){t.stopPropagation()}}},[n("input",{ref:"input",staticClass:"k-checkbox-input-native",attrs:{disabled:t.disabled,id:t.id,type:"checkbox"},domProps:{checked:t.value},on:{change:function(e){return t.onChange(e.target.checked)}}}),n("span",{staticClass:"k-checkbox-input-icon",attrs:{"aria-hidden":"true"}},[n("svg",{attrs:{width:"12",height:"10",viewBox:"0 0 12 10",xmlns:"http://www.w3.org/2000/svg"}},[n("path",{attrs:{d:"M1 5l3.3 3L11 1","stroke-width":"2",fill:"none","fill-rule":"evenodd"}})])]),n("span",{staticClass:"k-checkbox-input-label",domProps:{innerHTML:t._s(t.label)}})])},Gi=[],Ji=n("b5ae"),Zi={inheritAttrs:!1,props:{autofocus:Boolean,disabled:Boolean,id:[Number,String],label:String,required:Boolean,value:Boolean},watch:{value:function(){this.onInvalid()}},mounted:function(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus:function(){this.$refs.input.focus()},onChange:function(t){this.$emit("input",t)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},select:function(){this.focus()}},validations:function(){return{value:{required:!this.required||Ji["required"]}}}},Xi=Zi,Qi=(n("42e4"),Object(c["a"])(Xi,Wi,Gi,!1,null,null,null)),ts=Qi.exports,es=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ul",{staticClass:"k-checkboxes-input",style:"--columns:"+t.columns},t._l(t.options,function(e,i){return n("li",{key:i},[n("k-checkbox-input",{attrs:{id:t.id+"-"+i,label:e.text,value:-1!==t.selected.indexOf(e.value)},on:{input:function(n){return t.onInput(e.value,n)}}})],1)}),0)},ns=[],is={inheritAttrs:!1,props:{autofocus:Boolean,columns:Number,disabled:Boolean,id:{type:[Number,String],default:function(){return this._uid}},max:Number,min:Number,options:Array,required:Boolean,value:{type:[Array,Object],default:function(){return[]}}},data:function(){return{selected:this.valueToArray(this.value)}},watch:{value:function(t){this.selected=this.valueToArray(t)},selected:function(){this.onInvalid()}},mounted:function(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus:function(){this.$el.querySelector("input").focus()},onInput:function(t,e){if(!0===e)this.selected.push(t);else{var n=this.selected.indexOf(t);-1!==n&&this.selected.splice(n,1)}this.$emit("input",this.selected)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},select:function(){this.focus()},valueToArray:function(t){return!0===mt()(t)?t:"string"===typeof t?String(t).split(","):"object"===Object(Nt["a"])(t)?ft()(t):void 0}},validations:function(){return{selected:{required:!this.required||Ji["required"],min:!this.min||Object(Ji["minLength"])(this.min),max:!this.max||Object(Ji["maxLength"])(this.max)}}}},ss=is,as=Object(c["a"])(ss,es,ns,!1,null,null,null),os=as.exports,rs=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-date-input"},[n("k-select-input",{ref:"years",attrs:{"aria-label":t.$t("year"),options:t.years,disabled:t.disabled,required:t.required,value:t.year,placeholder:"––––"},on:{input:t.setYear,invalid:t.onInvalid}}),n("span",{staticClass:"k-date-input-separator"},[t._v("-")]),n("k-select-input",{ref:"months",attrs:{"aria-label":t.$t("month"),options:t.months,disabled:t.disabled,required:t.required,value:t.month,placeholder:"––"},on:{input:t.setMonth,invalid:t.onInvalid}}),n("span",{staticClass:"k-date-input-separator"},[t._v("-")]),n("k-select-input",{ref:"days",attrs:{"aria-label":t.$t("day"),autofocus:t.autofocus,id:t.id,options:t.days,disabled:t.disabled,required:t.required,value:t.day,placeholder:"––"},on:{input:t.setDay,invalid:t.onInvalid}})],1)},ls=[],us=n("e814"),cs=n.n(us),ds={inheritAttrs:!1,props:{autofocus:Boolean,disabled:Boolean,id:[String,Number],max:String,min:String,required:Boolean,value:String},data:function(){return{date:Fn()(this.value),minDate:this.calculate(this.min,"min"),maxDate:this.calculate(this.max,"max")}},computed:{day:function(){return isNaN(this.date.date())?"":this.date.date()},days:function(){return this.options(1,this.date.daysInMonth()||31,"days")},month:function(){return isNaN(this.date.date())?"":this.date.month()+1},months:function(){return this.options(1,12,"months")},year:function(){return isNaN(this.date.year())?"":this.date.year()},years:function(){var t=this.date.isBefore(this.minDate)?this.date.year():this.minDate.year(),e=this.date.isAfter(this.maxDate)?this.date.year():this.maxDate.year();return this.options(t,e)}},watch:{value:function(t){this.date=Fn()(t)}},methods:{calculate:function(t,e){var n={min:{run:"subtract",take:"startOf"},max:{run:"add",take:"endOf"}}[e],i=t?Fn()(t):null;return i&&!1!==i.isValid()||(i=Fn()()[n.run](10,"year")[n.take]("year")),i},focus:function(){this.$refs.years.focus()},onInput:function(){!1!==this.date.isValid()?this.$emit("input",this.date.toISOString()):this.$emit("input","")},onInvalid:function(t,e){this.$emit("invalid",t,e)},options:function(t,e){for(var n=[],i=t;i<=e;i++)n.push({value:i,text:Un(i)});return n},set:function(t,e){if(""===e||null===e||!1===e||-1===e)return this.setInvalid(),void this.onInput();if(!1===this.date.isValid())return this.setInitialDate(t,e),void this.onInput();var n=this.date,i=this.date.date();this.date=this.date.set(t,cs()(e)),"month"===t&&this.date.date()!==i&&(this.date=n.set("date",1).set("month",e).endOf("month")),this.onInput()},setInvalid:function(){this.date=Fn()("invalid")},setInitialDate:function(t,e){var n=Fn()();return this.date=Fn()().set(t,cs()(e)),"date"===t&&n.month()!==this.date.month()&&(this.date=n.endOf("month")),this.date},setDay:function(t){this.set("date",t)},setMonth:function(t){this.set("month",t-1)},setYear:function(t){this.set("year",t)}}},ps=ds,fs=(n("6ab3"),Object(c["a"])(ps,rs,ls,!1,null,null,null)),hs=fs.exports,ms=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-datetime-input"},[n("k-date-input",{ref:"dateInput",attrs:{autofocus:t.autofocus,required:t.required,id:t.id,min:t.min,max:t.max,disabled:t.disabled,value:t.dateValue},on:{input:t.setDate}}),n("k-time-input",t._b({ref:"timeInput",attrs:{required:t.required,disabled:t.disabled,value:t.timeValue},on:{input:t.setTime}},"k-time-input",t.timeOptions,!1))],1)},gs=[],vs={inheritAttrs:!1,props:Object(f["a"])({},hs.props,{time:{type:[Boolean,Object],default:function(){return{}}},value:String}),data:function(){return{dateValue:this.parseDate(this.value),timeValue:this.parseTime(this.value),timeOptions:this.setTimeOptions()}},watch:{value:function(t){this.dateValue=this.parseDate(t),this.timeValue=this.parseTime(t),this.onInvalid()}},mounted:function(){this.onInvalid()},methods:{focus:function(){this.$refs.dateInput.focus()},onInput:function(){if(this.timeValue&&this.dateValue){var t=this.dateValue+"T"+this.timeValue+":00";this.$emit("input",t)}else this.$emit("input","")},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},parseDate:function(t){var e=Fn()(t);return e.isValid()?e.format("YYYY-MM-DD"):null},parseTime:function(t){var e=Fn()(t);return e.isValid()?e.format("HH:mm"):null},setDate:function(t){t&&!this.timeValue&&(this.timeValue=Fn()().format("HH:mm")),t?this.dateValue=this.parseDate(t):(this.dateValue=null,this.timeValue=null),this.onInput()},setTime:function(t){t&&!this.dateValue&&(this.dateValue=Fn()().format("YYYY-MM-DD")),t?this.timeValue=t:(this.dateValue=null,this.timeValue=null),this.onInput()},setTimeOptions:function(){return!0===this.time?{}:this.time}},validations:function(){return{value:{required:!this.required||Ji["required"]}}}},bs=vs,ks=(n("4433"),Object(c["a"])(bs,ms,gs,!1,null,null,null)),$s=ks.exports,_s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("input",t._g(t._b({ref:"input",staticClass:"k-text-input"},"input",{autocomplete:t.autocomplete,autofocus:t.autofocus,disabled:t.disabled,id:t.id,minlength:t.minlength,name:t.name,pattern:t.pattern,placeholder:t.placeholder,required:t.required,spellcheck:t.spellcheck,type:t.type,value:t.value},!1),t.listeners))},ys=[],xs={inheritAttrs:!1,class:"k-text-input",props:{autocomplete:{type:[Boolean,String],default:"off"},autofocus:Boolean,disabled:Boolean,id:[Number,String],maxlength:Number,minlength:Number,name:[Number,String],pattern:String,placeholder:String,preselect:Boolean,required:Boolean,spellcheck:{type:[Boolean,String],default:"off"},type:{type:String,default:"text"},value:String},data:function(){var t=this;return{listeners:Object(f["a"])({},this.$listeners,{input:function(e){return t.onInput(e.target.value)}})}},watch:{value:function(){this.onInvalid()}},mounted:function(){this.onInvalid(),this.$props.autofocus&&this.focus(),this.$props.preselect&&this.select()},methods:{focus:function(){this.$refs.input.focus()},onInput:function(t){this.$emit("input",t)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},select:function(){this.$refs.input.select()}},validations:function(){return{value:{required:!this.required||Ji["required"],minLength:!this.minlength||Object(Ji["minLength"])(this.minlength),maxLength:!this.maxlength||Object(Ji["maxLength"])(this.maxlength),email:"email"!==this.type||Ji["email"],url:"url"!==this.type||Ji["url"]}}}},ws=xs,Os=(n("cb8f"),Object(c["a"])(ws,_s,ys,!1,null,null,null)),Cs=Os.exports,Ss={extends:Cs,props:Object(f["a"])({},Cs.props,{autocomplete:{type:String,default:"email"},placeholder:{type:String,default:function(){return this.$t("email.placeholder")}},type:{type:String,default:"email"}})},Es=Ss,js=Object(c["a"])(Es,Q,tt,!1,null,null,null),Ts=js.exports,Ls=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-draggable",{staticClass:"k-multiselect-input",attrs:{list:t.state,options:t.dragOptions,"data-layout":t.layout,element:"k-dropdown"},on:{end:t.onInput},nativeOn:{click:function(e){return t.$refs.dropdown.toggle(e)}}},[t._l(t.sorted,function(e){return n("k-tag",{key:e.value,ref:e.value,refInFor:!0,attrs:{removable:!0},on:{remove:function(n){return t.remove(e)}},nativeOn:{click:function(t){t.stopPropagation()},keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"left",37,e.key,["Left","ArrowLeft"])?null:"button"in e&&0!==e.button?null:t.navigate("prev")},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"right",39,e.key,["Right","ArrowRight"])?null:"button"in e&&2!==e.button?null:t.navigate("next")},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?null:t.$refs.dropdown.open(e)}]}},[t._v("\n "+t._s(e.text)+"\n ")])}),n("k-dropdown-content",{ref:"dropdown",attrs:{slot:"footer"},on:{open:t.onOpen},nativeOn:{keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"])?null:(e.stopPropagation(),t.close(e))}},slot:"footer"},[t.search?n("k-dropdown-item",{staticClass:"k-multiselect-search",attrs:{icon:"search"}},[n("input",{directives:[{name:"model",rawName:"v-model",value:t.q,expression:"q"}],ref:"search",domProps:{value:t.q},on:{keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"])?null:(e.stopPropagation(),t.escape(e))},input:function(e){e.target.composing||(t.q=e.target.value)}}})]):t._e(),n("div",{staticClass:"k-multiselect-options"},t._l(t.filtered,function(e){return n("k-dropdown-item",{key:e.value,class:{"k-multiselect-option":!0,selected:t.isSelected(e),disabled:!t.addable},attrs:{icon:t.isSelected(e)?"check":"circle-outline"},on:{click:function(n){return t.select(e)}},nativeOn:{keydown:[function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"enter",13,n.key,"Enter")?null:(n.preventDefault(),t.select(e))},function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"space",32,n.key,[" ","Spacebar"])?null:(n.preventDefault(),t.select(e))}]}},[n("span",{domProps:{innerHTML:t._s(e.display)}}),n("span",{staticClass:"k-multiselect-value",domProps:{innerHTML:t._s(e.info)}})])}),1)],1)],2)},Is=[],qs=(n("20d6"),n("55dd"),{inheritAttrs:!1,props:{disabled:Boolean,id:[Number,String],max:Number,min:Number,layout:String,options:{type:Array,default:function(){return[]}},required:Boolean,search:Boolean,separator:{type:String,default:","},sort:Boolean,value:{type:Array,required:!0,default:function(){return[]}}},data:function(){return{state:this.value,q:null}},computed:{addable:function(){return!this.max||this.state.length1&&!this.sort},dragOptions:function(){return{disabled:!this.draggable,draggable:".k-tag",delay:1}},filtered:function(){if(null===this.q)return this.options.map(function(t){return Object(f["a"])({},t,{display:t.text,info:t.value})});var t=new RegExp("(".concat(RegExp.escape(this.q),")"),"ig");return this.options.filter(function(e){return e.text.match(t)||e.value.match(t)}).map(function(e){return Object(f["a"])({},e,{display:e.text.replace(t,"$1"),info:e.value.replace(t,"$1")})})},sorted:function(){var t=this;if(!1===this.sort)return this.state;var e=this.state,n=function(e){return t.options.findIndex(function(t){return t.value===e.value})};return e.sort(function(t,e){return n(t)-n(e)})}},watch:{value:function(t){this.state=t,this.onInvalid()}},mounted:function(){this.onInvalid(),this.$events.$on("click",this.close),this.$events.$on("keydown.cmd.s",this.close)},destroyed:function(){this.$events.$off("click",this.close),this.$events.$off("keydown.cmd.s",this.close)},methods:{add:function(t){this.addable&&(this.state.push(t),this.onInput())},blur:function(){this.close()},close:function(){this.$refs.dropdown.close(),this.q=null,this.$el.focus()},escape:function(){this.q?this.q=null:this.close()},focus:function(){this.$refs.dropdown.open()},index:function(t){return this.state.findIndex(function(e){return e.value===t.value})},isSelected:function(t){return-1!==this.index(t)},navigate:function(t){var e=document.activeElement;switch(t){case"prev":e&&e.previousSibling&&e.previousSibling.focus();break;case"next":e&&e.nextSibling&&e.nextSibling.focus();break}},onInput:function(){this.$emit("input",this.sorted)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},onOpen:function(){var t=this;this.$nextTick(function(){t.$refs.search&&t.$refs.search.focus()})},remove:function(t){this.state.splice(this.index(t),1),this.onInput()},select:function(t){t={text:t.text,value:t.value},this.isSelected(t)?this.remove(t):this.add(t)}},validations:function(){return{state:{required:!this.required||Ji["required"],minLength:!this.min||Object(Ji["minLength"])(this.min),maxLength:!this.max||Object(Ji["maxLength"])(this.max)}}}}),As=qs,Ns=(n("11ae"),Object(c["a"])(As,Ls,Is,!1,null,null,null)),Bs=Ns.exports,Ds=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("input",t._g(t._b({ref:"input",staticClass:"k-number-input",attrs:{type:"number"}},"input",{autofocus:t.autofocus,disabled:t.disabled,id:t.id,max:t.max,min:t.min,name:t.name,placeholder:t.placeholder,required:t.required,step:t.step,value:t.value},!1),t.listeners))},Ps=[],Ms={inheritAttrs:!1,props:{autofocus:Boolean,disabled:Boolean,id:[Number,String],max:Number,min:Number,name:[Number,String],placeholder:String,preselect:Boolean,required:Boolean,step:Number,value:{type:[Number,String],default:null}},data:function(){var t=this;return{listeners:Object(f["a"])({},this.$listeners,{input:function(e){return t.onInput(e.target.value)}})}},watch:{value:function(){this.onInvalid()}},mounted:function(){this.onInvalid(),this.$props.autofocus&&this.focus(),this.$props.preselect&&this.select()},methods:{focus:function(){this.$refs.input.focus()},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},onInput:function(t){null!==t&&""!==t&&"-"!==t&&"-0"!==t&&(t=Number(t)),this.$emit("input",t)},select:function(){this.$refs.input.select()}},validations:function(){return{value:{required:!this.required||Ji["required"],min:!this.min||Object(Ji["minValue"])(this.min),max:!this.max||Object(Ji["maxValue"])(this.max)}}}},Rs=Ms,zs=(n("6018"),Object(c["a"])(Rs,Ds,Ps,!1,null,null,null)),Fs=zs.exports,Us={extends:Cs,props:Object(f["a"])({},Cs.props,{autocomplete:{type:String,default:"new-password"},type:{type:String,default:"password"}})},Hs=Us,Ks=Object(c["a"])(Hs,et,nt,!1,null,null,null),Vs=Ks.exports,Ys=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ul",{staticClass:"k-radio-input",style:"--columns:"+t.columns},t._l(t.options,function(e,i){return n("li",{key:i},[n("input",{staticClass:"k-radio-input-native",attrs:{id:t.id+"-"+i,name:t.id,type:"radio"},domProps:{value:e.value,checked:t.value===e.value},on:{change:function(n){return t.onInput(e.value)}}}),n("label",{attrs:{for:t.id+"-"+i}},[e.info?[n("span",{staticClass:"k-radio-input-text"},[t._v(t._s(e.text))]),n("span",{staticClass:"k-radio-input-info"},[t._v(t._s(e.info))])]:[t._v("\n "+t._s(e.text)+"\n ")]],2),e.icon?n("k-icon",{attrs:{type:e.icon}}):t._e()],1)}),0)},Ws=[],Gs={inheritAttrs:!1,props:{autofocus:Boolean,columns:Number,disabled:Boolean,id:{type:[Number,String],default:function(){return this._uid}},options:Array,required:Boolean,value:[String,Number,Boolean]},watch:{value:function(){this.onInvalid()}},mounted:function(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus:function(){this.$el.querySelector("input").focus()},onInput:function(t){this.$emit("input",t)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},select:function(){this.focus()}},validations:function(){return{value:{required:!this.required||Ji["required"]}}}},Js=Gs,Zs=(n("893d"),Object(c["a"])(Js,Ys,Ws,!1,null,null,null)),Xs=Zs.exports,Qs=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("label",{staticClass:"k-range-input"},[n("input",t._g(t._b({ref:"input",staticClass:"k-range-input-native",style:"--min: "+t.min+"; --max: "+t.max+"; --value: "+t.position,attrs:{type:"range"}},"input",{autofocus:t.autofocus,disabled:t.disabled,id:t.id,max:t.max,min:t.min,name:t.name,required:t.required,step:t.step,value:t.value},!1),t.listeners)),t.tooltip?n("span",{staticClass:"k-range-input-tooltip"},[t.tooltip.before?n("span",{staticClass:"k-range-input-tooltip-before"},[t._v(t._s(t.tooltip.before))]):t._e(),n("span",{staticClass:"k-range-input-tooltip-text"},[t._v(t._s(t.label))]),t.tooltip.after?n("span",{staticClass:"k-range-input-tooltip-after"},[t._v(t._s(t.tooltip.after))]):t._e()]):t._e()])},ta=[],ea=(n("6b54"),{inheritAttrs:!1,props:{autofocus:Boolean,disabled:Boolean,id:[String,Number],max:{type:Number,default:100},min:{type:Number,default:0},name:[String,Number],required:Boolean,step:{type:Number,default:1},tooltip:{type:[Boolean,Object],default:function(){return{before:null,after:null}}},value:[Number,String]},data:function(){var t=this;return{listeners:Object(f["a"])({},this.$listeners,{input:function(e){return t.onInput(e.target.value)}})}},computed:{label:function(){return null!==this.value?this.format(this.value):"–"},center:function(){var t=(this.max-this.min)/2+this.min;return Math.ceil(t/this.step)*this.step},position:function(){return null!==this.value?this.value:this.center}},watch:{value:function(){this.onInvalid()}},mounted:function(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus:function(){this.$refs.input.focus()},format:function(t){var e=document.lang?document.lang.replace("_","-"):"en",n=this.step.toString().split("."),i=n.length>1?n[1].length:0;return new Intl.NumberFormat(e,{minimumFractionDigits:i}).format(t)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},onInput:function(t){this.$emit("input",t)}},validations:function(){return{value:{required:!this.required||Ji["required"],min:!this.min||Object(Ji["minValue"])(this.min),max:!this.max||Object(Ji["maxValue"])(this.max)}}}}),na=ea,ia=(n("b5d2"),Object(c["a"])(na,Qs,ta,!1,null,null,null)),sa=ia.exports,aa=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{staticClass:"k-select-input",attrs:{"data-disabled":t.disabled,"data-empty":""===t.selected}},[n("select",t._g({ref:"input",staticClass:"k-select-input-native",attrs:{autofocus:t.autofocus,"aria-label":t.ariaLabel,disabled:t.disabled,id:t.id,name:t.name,required:t.required},domProps:{value:t.selected}},t.listeners),[t.hasEmptyOption?n("option",{attrs:{disabled:t.required,value:""}},[t._v("\n "+t._s(t.emptyOption)+"\n ")]):t._e(),t._l(t.options,function(e){return n("option",{key:e.value,attrs:{disabled:e.disabled},domProps:{value:e.value}},[t._v("\n "+t._s(e.text)+"\n ")])})],2),t._v("\n "+t._s(t.label)+"\n")])},oa=[],ra={inheritAttrs:!1,props:{autofocus:Boolean,ariaLabel:String,default:String,disabled:Boolean,empty:{type:[Boolean,String],default:!0},id:[Number,String],name:[Number,String],placeholder:String,options:{type:Array,default:function(){return[]}},required:Boolean,value:{type:[String,Number,Boolean],default:""}},data:function(){var t=this;return{selected:this.value,listeners:Object(f["a"])({},this.$listeners,{click:function(e){return t.onClick(e)},change:function(e){return t.onInput(e.target.value)},input:function(t){}})}},computed:{emptyOption:function(){return this.placeholder||"—"},hasEmptyOption:function(){return!1!==this.empty&&!(this.required&&this.default)},label:function(){var t=this.text(this.selected);return""===this.selected||null===this.selected||null===t?this.emptyOption:t}},watch:{value:function(t){this.selected=t,this.onInvalid()}},mounted:function(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus:function(){this.$refs.input.focus()},onClick:function(t){t.stopPropagation(),this.$emit("click",t)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},onInput:function(t){this.selected=t,this.$emit("input",this.selected)},select:function(){this.focus()},text:function(t){var e=null;return this.options.forEach(function(n){n.value==t&&(e=n.text)}),e}},validations:function(){return{selected:{required:!this.required||Ji["required"]}}}},la=ra,ua=(n("6a18"),Object(c["a"])(la,aa,oa,!1,null,null,null)),ca=ua.exports,da=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-draggable",{ref:"box",staticClass:"k-tags-input",attrs:{list:t.tags,"data-layout":t.layout,options:t.dragOptions},on:{end:t.onInput}},[t._l(t.tags,function(e,i){return n("k-tag",{key:i,ref:e.value,refInFor:!0,attrs:{removable:!t.disabled,name:"tag"},on:{remove:function(n){return t.remove(e)}},nativeOn:{click:function(t){t.stopPropagation()},blur:function(e){return t.selectTag(null)},focus:function(n){return t.selectTag(e)},keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"left",37,e.key,["Left","ArrowLeft"])?null:"button"in e&&0!==e.button?null:t.navigate("prev")},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"right",39,e.key,["Right","ArrowRight"])?null:"button"in e&&2!==e.button?null:t.navigate("next")}],dblclick:function(n){return t.edit(e)}}},[t._v("\n "+t._s(e.text)+"\n ")])}),n("span",{staticClass:"k-tags-input-element",attrs:{slot:"footer"},slot:"footer"},[n("k-autocomplete",{ref:"autocomplete",attrs:{options:t.options,skip:t.skip},on:{select:t.addTag,leave:function(e){return t.$refs.input.focus()}}},[n("input",{directives:[{name:"model",rawName:"v-model.trim",value:t.newTag,expression:"newTag",modifiers:{trim:!0}}],ref:"input",attrs:{autofocus:t.autofocus,disabled:t.disabled||t.max&&t.tags.length>=t.max,id:t.id,name:t.name,autocomplete:"off",type:"text"},domProps:{value:t.newTag},on:{input:[function(e){e.target.composing||(t.newTag=e.target.value.trim())},function(e){return t.type(e.target.value)}],blur:[t.blurInput,function(e){return t.$forceUpdate()}],keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"s",void 0,e.key,void 0)?null:e.metaKey?t.blurInput(e):null},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"left",37,e.key,["Left","ArrowLeft"])?null:"button"in e&&0!==e.button?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:t.leaveInput(e)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:t.enter(e)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"tab",9,e.key,"Tab")?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:t.tab(e)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"backspace",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:t.leaveInput(e)}]}})])],1)],2)},pa=[],fa={inheritAttrs:!1,props:{autofocus:Boolean,accept:{type:String,default:"all"},disabled:Boolean,icon:{type:[String,Boolean],default:"tag"},id:[Number,String],layout:String,max:Number,min:Number,name:[Number,String],options:{type:Array,default:function(){return[]}},required:Boolean,separator:{type:String,default:","},value:{type:Array,default:function(){return[]}}},data:function(){return{tags:this.prepareTags(this.value),selected:null,newTag:null,tagOptions:this.options.map(function(t){return t.icon="tag",t})}},computed:{dragOptions:function(){return{delay:1,disabled:!this.draggable,draggable:".k-tag"}},draggable:function(){return this.tags.length>1},skip:function(){return this.tags.map(function(t){return t.value})}},watch:{value:function(t){this.tags=this.prepareTags(t),this.onInvalid()}},mounted:function(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{addString:function(t){var e=this;if(t)if(t=t.trim(),t.includes(this.separator))t.split(this.separator).forEach(function(t){e.addString(t)});else if(0!==t.length)if("options"===this.accept){var n=this.options.filter(function(e){return e.text===t})[0];if(!n)return;this.addTag(n)}else this.addTag({text:t,value:t})},addTag:function(t){this.addTagToIndex(t),this.$refs.autocomplete.close(),this.$refs.input.focus()},addTagToIndex:function(t){if("options"===this.accept){var e=this.options.filter(function(e){return e.value===t.value})[0];if(!e)return}-1===this.index(t)&&(!this.max||this.tags.length0&&(t.preventDefault(),this.addString(this.newTag))},type:function(t){this.newTag=t,this.$refs.autocomplete.search(t)}},validations:function(){return{tags:{required:!this.required||Ji["required"],minLength:!this.min||Object(Ji["minLength"])(this.min),maxLength:!this.max||Object(Ji["maxLength"])(this.max)}}}},ha=fa,ma=(n("27c1"),Object(c["a"])(ha,da,pa,!1,null,null,null)),ga=ma.exports,va={extends:Cs,props:Object(f["a"])({},Cs.props,{autocomplete:{type:String,default:"tel"},type:{type:String,default:"tel"}})},ba=va,ka=Object(c["a"])(ba,it,st,!1,null,null,null),$a=ka.exports,_a=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-textarea-input",attrs:{"data-theme":t.theme,"data-over":t.over}},[n("div",{staticClass:"k-textarea-input-wrapper"},[t.buttons&&!t.disabled?n("k-toolbar",{ref:"toolbar",attrs:{buttons:t.buttons,disabled:t.disabled,uploads:t.uploads},on:{command:t.onCommand},nativeOn:{mousedown:function(t){t.preventDefault()}}}):t._e(),n("textarea",t._b({ref:"input",staticClass:"k-textarea-input-native",attrs:{"data-font":t.font,"data-size":t.size},on:{click:t.onClick,focus:t.onFocus,input:t.onInput,keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:e.metaKey?t.onSubmit(e):null},function(e){return e.metaKey?t.onShortcut(e):null}],dragover:t.onOver,dragleave:t.onOut,drop:t.onDrop}},"textarea",{autofocus:t.autofocus,disabled:t.disabled,id:t.id,minlength:t.minlength,name:t.name,placeholder:t.placeholder,required:t.required,spellcheck:t.spellcheck,value:t.value},!1))],1),n("k-toolbar-email-dialog",{ref:"emailDialog",on:{cancel:t.cancel,submit:function(e){return t.insert(e)}}}),n("k-toolbar-link-dialog",{ref:"linkDialog",on:{cancel:t.cancel,submit:function(e){return t.insert(e)}}}),n("k-files-dialog",{ref:"fileDialog",on:{cancel:t.cancel,submit:function(e){return t.insertFile(e)}}}),t.uploads?n("k-upload",{ref:"fileUpload",on:{success:t.insertUpload}}):t._e()],1)},ya=[],xa=n("19e9"),wa=n.n(xa),Oa={inheritAttrs:!1,props:{autofocus:Boolean,buttons:{type:[Boolean,Array],default:!0},disabled:Boolean,endpoints:Object,font:String,id:[Number,String],name:[Number,String],maxlength:Number,minlength:Number,placeholder:String,preselect:Boolean,required:Boolean,size:String,spellcheck:{type:[Boolean,String],default:"off"},theme:String,uploads:[Boolean,Object,Array],value:String},data:function(){return{over:!1}},watch:{value:function(){var t=this;this.onInvalid(),this.$nextTick(function(){t.resize()})}},mounted:function(){var t=this;this.$nextTick(function(){wa()(t.$refs.input)}),this.onInvalid(),this.$props.autofocus&&this.focus(),this.$props.preselect&&this.select()},methods:{cancel:function(){this.$refs.input.focus()},dialog:function(t){if(!this.$refs[t+"Dialog"])throw"Invalid toolbar dialog";this.$refs[t+"Dialog"].open(this.$refs.input,this.selection())},focus:function(){this.$refs.input.focus()},insert:function(t){var e=this,n=this.$refs.input,i=n.value;setTimeout(function(){if(n.focus(),document.execCommand("insertText",!1,t),n.value===i){var s=n.value.slice(0,n.selectionStart)+t+n.value.slice(n.selectionEnd);n.value=s,e.$emit("input",s)}}),this.resize()},insertFile:function(t){t&&t.length>0&&this.insert(t.map(function(t){return t.dragText}).join("\n\n"))},insertUpload:function(t,e){this.insert(e.map(function(t){return t.dragText}).join("\n\n")),this.$events.$emit("model.update")},onClick:function(){this.$refs.toolbar&&this.$refs.toolbar.close()},onCommand:function(t,e){"function"===typeof this[t]?"function"===typeof e?this[t](e(this.$refs.input,this.selection())):this[t](e):window.console.warn(t+" is not a valid command")},onDrop:function(t){if(t.dataTransfer&&!0===t.dataTransfer.types.includes("Files"))return this.$refs.fileUpload.drop(t.dataTransfer.files,{url:g.api+"/"+this.endpoints.field+"/upload",multiple:!1});var e=this.$store.state.drag;e&&"text"===e.type&&(this.focus(),this.insert(e.data))},onFocus:function(t){this.$emit("focus",t)},onInput:function(t){this.$emit("input",t.target.value)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},onOut:function(){this.$refs.input.blur(),this.over=!1},onOver:function(t){if(this.uploads&&t.dataTransfer&&!0===t.dataTransfer.types.includes("Files"))return t.dataTransfer.dropEffect="copy",this.focus(),void(this.over=!0);var e=this.$store.state.drag;e&&"text"===e.type&&(t.dataTransfer.dropEffect="copy",this.focus(),this.over=!0)},onShortcut:function(t){!1!==this.buttons&&"Meta"!==t.key&&this.$refs.toolbar&&this.$refs.toolbar.shortcut(t.key,t)},onSubmit:function(t){return this.$emit("submit",t)},prepend:function(t){this.insert(t+" "+this.selection())},resize:function(){wa.a.update(this.$refs.input)},select:function(){this.$refs.select()},selectFile:function(){this.$refs.fileDialog.open({endpoint:this.endpoints.field+"/files",multiple:!1})},selection:function(){var t=this.$refs.input,e=t.selectionStart,n=t.selectionEnd;return t.value.substring(e,n)},uploadFile:function(){this.$refs.fileUpload.open({url:g.api+"/"+this.endpoints.field+"/upload",multiple:!1})},wrap:function(t){this.insert(t+this.selection()+t)}},validations:function(){return{value:{required:!this.required||Ji["required"],minLength:!this.minlength||Object(Ji["minLength"])(this.minlength),maxLength:!this.maxlength||Object(Ji["maxLength"])(this.maxlength)}}}},Ca=Oa,Sa=(n("cca8"),Object(c["a"])(Ca,_a,ya,!1,null,null,null)),Ea=Sa.exports,ja=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-time-input"},[n("k-select-input",{ref:"hour",attrs:{id:t.id,"aria-label":t.$t("hour"),autofocus:t.autofocus,options:t.hours,required:t.required,disabled:t.disabled,placeholder:"––"},on:{input:t.setHour,invalid:t.onInvalid},model:{value:t.hour,callback:function(e){t.hour=e},expression:"hour"}}),n("span",{staticClass:"k-time-input-separator"},[t._v(":")]),n("k-select-input",{ref:"minute",attrs:{"aria-label":t.$t("minutes"),options:t.minutes,required:t.required,disabled:t.disabled,placeholder:"––"},on:{input:t.setMinute,invalid:t.onInvalid},model:{value:t.minute,callback:function(e){t.minute=e},expression:"minute"}}),12===t.notation?n("k-select-input",{ref:"meridiem",staticClass:"k-time-input-meridiem",attrs:{"aria-label":t.$t("meridiem"),empty:!1,options:[{value:"AM",text:"AM"},{value:"PM",text:"PM"}],required:t.required,disabled:t.disabled},on:{input:t.onInput},model:{value:t.meridiem,callback:function(e){t.meridiem=e},expression:"meridiem"}}):t._e()],1)},Ta=[],La=n("f906"),Ia=n.n(La);Fn.a.extend(Ia.a);var qa,Aa,Na={inheritAttrs:!1,props:{autofocus:Boolean,disabled:Boolean,id:[String,Number],notation:{type:Number,default:24},required:Boolean,step:{type:Number,default:5},value:{type:String}},data:function(){var t=this.toObject(this.value);return{time:this.value,hour:t.hour,minute:t.minute,meridiem:t.meridiem}},computed:{hours:function(){return this.options(24===this.notation?0:1,24===this.notation?23:12)},minutes:function(){return this.options(0,59,this.step)}},watch:{value:function(t){this.time=t},time:function(t){var e=this.toObject(t);this.hour=e.hour,this.minute=e.minute,this.meridiem=e.meridiem}},methods:{focus:function(){this.$refs.hour.focus()},setHour:function(t){t&&!this.minute&&(this.minute=0),t||(this.minute=null),this.onInput()},setMinute:function(t){t&&!this.hour&&(this.hour=0),t||(this.hour=null),this.onInput()},onInput:function(){if(null!==this.hour&&null!==this.minute){var t=Un(this.hour||0),e=Un(this.minute||0),n=String(this.meridiem).toUpperCase()||"AM",i=24===this.notation?"".concat(t,":").concat(e,":00"):"".concat(t,":").concat(e,":00 ").concat(n),s=24===this.notation?"HH:mm:ss":"hh:mm:ss A",a=Fn()("2000-01-01 "+i,"YYYY-MM-DD "+s);this.$emit("input",a.format("HH:mm"))}else this.$emit("input","")},onInvalid:function(t,e){this.$emit("invalid",t,e)},options:function(t,e){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,i=[],s=t;s<=e;s+=n)i.push({value:s,text:Un(s)});return i},reset:function(){this.hour=null,this.minute=null,this.meridiem=null},round:function(t){return Math.floor(t/this.step)*this.step},toObject:function(t){var e=Fn()("2001-01-01 "+t+":00","YYYY-MM-DD HH:mm:ss");return t&&!1!==e.isValid()?{hour:e.format(24===this.notation?"H":"h"),minute:this.round(e.format("m")),meridiem:e.format("A")}:{hour:null,minute:null,meridiem:null}}}},Ba=Na,Da=(n("50da"),Object(c["a"])(Ba,ja,Ta,!1,null,null,null)),Pa=Da.exports,Ma=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("label",{staticClass:"k-toggle-input",attrs:{"data-disabled":t.disabled}},[n("input",{ref:"input",staticClass:"k-toggle-input-native",attrs:{disabled:t.disabled,id:t.id,type:"checkbox"},domProps:{checked:t.value},on:{change:function(e){return t.onInput(e.target.checked)}}}),n("span",{staticClass:"k-toggle-input-label",domProps:{innerHTML:t._s(t.label)}})])},Ra=[],za={inheritAttrs:!1,props:{autofocus:Boolean,disabled:Boolean,id:[Number,String],text:{type:[Array,String],default:function(){return[this.$t("off"),this.$t("on")]}},required:Boolean,value:Boolean},computed:{label:function(){return mt()(this.text)?this.value?this.text[1]:this.text[0]:this.text}},watch:{value:function(){this.onInvalid()}},mounted:function(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus:function(){this.$refs.input.focus()},onEnter:function(t){"Enter"===t.key&&this.$refs.input.click()},onInput:function(t){this.$emit("input",t)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},select:function(){this.$refs.input.focus()}},validations:function(){return{value:{required:!this.required||Ji["required"]}}}},Fa=za,Ua=(n("bb41"),Object(c["a"])(Fa,Ma,Ra,!1,null,null,null)),Ha=Ua.exports,Ka={extends:Cs,props:Object(f["a"])({},Cs.props,{autocomplete:{type:String,default:"url"},type:{type:String,default:"url"}})},Va=Ka,Ya=Object(c["a"])(Va,qa,Aa,!1,null,null,null),Wa=Ya.exports,Ga=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-checkboxes-field",attrs:{counter:t.counterOptions}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},Ja=[],Za={inheritAttrs:!1,props:Object(f["a"])({},Ci.props,Pi.props,os.props,{counter:{type:Boolean,default:!0}}),computed:{counterOptions:function(){return null!==this.value&&!this.disabled&&!1!==this.counter&&{count:this.value&&mt()(this.value)?this.value.length:0,min:this.min,max:this.max}}},methods:{focus:function(){this.$refs.input.focus()}}},Xa=Za,Qa=Object(c["a"])(Xa,Ga,Ja,!1,null,null,null),to=Qa.exports,eo=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-date-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,type:t.inputType,value:t.date,theme:"field"}},"k-input",t.$props,!1),t.listeners),[n("template",{slot:"icon"},[n("k-dropdown",[n("k-button",{staticClass:"k-input-icon-button",attrs:{icon:t.icon,tooltip:t.$t("date.select"),tabindex:"-1"},on:{click:function(e){return t.$refs.dropdown.toggle()}}}),n("k-dropdown-content",{ref:"dropdown",attrs:{align:"right"}},[n("k-calendar",{attrs:{value:t.date},on:{input:function(e){t.onInput(e),t.$refs.dropdown.close()}}})],1)],1)],1)],2)],1)},no=[],io={inheritAttrs:!1,props:Object(f["a"])({},Ci.props,Pi.props,$s.props,{icon:{type:String,default:"calendar"}}),data:function(){return{date:this.value,listeners:Object(f["a"])({},this.$listeners,{input:this.onInput})}},computed:{inputType:function(){return!1===this.time?"date":"datetime"}},watch:{value:function(t){this.date=t}},methods:{focus:function(){this.$refs.input.focus()},onInput:function(t){this.date=t,this.$emit("input",t)}}},so=io,ao=Object(c["a"])(so,eo,no,!1,null,null,null),oo=ao.exports,ro=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-email-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners),[t.link?n("k-button",{staticClass:"k-input-icon-button",attrs:{slot:"icon",icon:t.icon,link:"mailto:"+t.value,tooltip:t.$t("open"),tabindex:"-1",target:"_blank"},slot:"icon"}):t._e()],1)],1)},lo=[],uo={inheritAttrs:!1,props:Object(f["a"])({},Ci.props,Pi.props,Ts.props,{link:{type:Boolean,default:!0},icon:{type:String,default:"email"}}),methods:{focus:function(){this.$refs.input.focus()}}},co=uo,po=Object(c["a"])(co,ro,lo,!1,null,null,null),fo=po.exports,ho=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-files-field"},"k-field",t.$props,!1),[t.more&&!t.disabled?n("template",{slot:"options"},[n("k-button-group",{staticClass:"k-field-options"},[t.uploads?[n("k-dropdown",[n("k-button",{ref:"pickerToggle",staticClass:"k-field-options-button",attrs:{icon:"add"},on:{click:function(e){return t.$refs.picker.toggle()}}},[t._v("\n "+t._s(t.$t("add"))+"\n ")]),n("k-dropdown-content",{ref:"picker",attrs:{align:"right"}},[n("k-dropdown-item",{attrs:{icon:"check"},on:{click:t.open}},[t._v(t._s(t.$t("select")))]),n("k-dropdown-item",{attrs:{icon:"upload"},on:{click:t.upload}},[t._v(t._s(t.$t("upload")))])],1)],1)]:[n("k-button",{staticClass:"k-field-options-button",attrs:{icon:"add"},on:{click:t.open}},[t._v(t._s(t.$t("add")))])]],2)],1):t._e(),t.selected.length?[n("k-draggable",{attrs:{element:t.elements.list,list:t.selected,"data-size":t.size,handle:!0},on:{end:t.onInput}},t._l(t.selected,function(e,i){return n(t.elements.item,{key:e.filename,tag:"component",attrs:{sortable:!t.disabled&&t.selected.length>1,text:e.text,link:e.link,info:e.info,image:e.image,icon:e.icon}},[t.disabled?t._e():n("k-button",{attrs:{slot:"options",tooltip:t.$t("remove"),icon:"remove"},on:{click:function(e){return t.remove(i)}},slot:"options"})],1)}),1)]:n("k-empty",{attrs:{layout:t.layout,icon:"image"},on:{click:t.open}},[t._v("\n "+t._s(t.empty||t.$t("field.files.empty"))+"\n ")]),n("k-files-dialog",{ref:"selector",on:{submit:t.select}}),n("k-upload",{ref:"fileUpload",on:{success:t.selectUpload}})],2)},mo=[],go={inheritAttrs:!1,props:Object(f["a"])({},Ci.props,{empty:String,info:String,layout:String,max:Number,multiple:Boolean,parent:String,size:String,text:String,value:{type:Array,default:function(){return[]}}}),data:function(){return{selected:this.value}},computed:{elements:function(){var t={cards:{list:"k-cards",item:"k-card"},list:{list:"k-list",item:"k-list-item"}};return t[this.layout]?t[this.layout]:t["list"]},more:function(){return!this.max||this.max>this.selected.length}},watch:{value:function(t){this.selected=t}},methods:{focus:function(){},onInput:function(){this.$emit("input",this.selected)},remove:function(t){this.selected.splice(t,1),this.onInput()},removeById:function(t){this.selected=this.selected.filter(function(e){return e.id!==t}),this.onInput()},select:function(t){var e=this;0!==t.length?(this.selected=this.selected.filter(function(e){return t.filter(function(t){return t.id===e.id}).length>0}),t.forEach(function(t){0===e.selected.filter(function(e){return t.id===e.id}).length&&e.selected.push(t)}),this.onInput()):this.selected=[]}}},vo={mixins:[go],props:{uploads:[Boolean,Object,Array]},created:function(){this.$events.$on("file.delete",this.removeById)},destroyed:function(){this.$events.$off("file.delete",this.removeById)},methods:{prompt:function(t){t.stopPropagation(),this.uploads?this.$refs.picker.toggle():this.open()},open:function(){if(this.disabled)return!1;this.$refs.selector.open({endpoint:this.endpoints.field,max:this.max,multiple:this.multiple,selected:this.selected.map(function(t){return t.id})})},selectUpload:function(t,e){var n=this;!1===this.multiple&&(this.selected=[]),e.forEach(function(t){n.selected.push(t)}),this.onInput(),this.$events.$emit("model.update")},upload:function(){this.$refs.fileUpload.open({url:g.api+"/"+this.endpoints.field+"/upload",multiple:this.multiple,accept:this.uploads.accept})}}},bo=vo,ko=(n("4a4b"),Object(c["a"])(bo,ho,mo,!1,null,null,null)),$o=ko.exports,_o=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-headline",{staticClass:"k-headline-field",attrs:{"data-numbered":t.numbered,size:"large"}},[t._v("\n "+t._s(t.label)+"\n")])},yo=[],xo={props:{label:String,numbered:Boolean}},wo=xo,Oo=(n("19d7"),Object(c["a"])(wo,_o,yo,!1,null,null,null)),Co=Oo.exports,So=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-field k-info-field"},[n("k-headline",[t._v(t._s(t.label))]),n("k-box",{attrs:{theme:t.theme}},[n("k-text",{domProps:{innerHTML:t._s(t.text)}})],1)],1)},Eo=[],jo={props:{label:String,text:String,theme:{type:String,default:"info"}}},To=jo,Lo=(n("ddfd"),Object(c["a"])(To,So,Eo,!1,null,null,null)),Io=Lo.exports,qo=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("hr",{staticClass:"k-line-field"})},Ao=[],No=(n("718c"),{}),Bo=Object(c["a"])(No,qo,Ao,!1,null,null,null),Do=Bo.exports,Po=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-multiselect-field",attrs:{input:t._uid,counter:t.counterOptions},on:{blur:t.blur}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},Mo=[],Ro={inheritAttrs:!1,props:Object(f["a"])({},Ci.props,Pi.props,Bs.props,{counter:{type:Boolean,default:!0},icon:{type:String,default:"angle-down"}}),computed:{counterOptions:function(){return null!==this.value&&!this.disabled&&!1!==this.counter&&{count:this.value&&mt()(this.value)?this.value.length:0,min:this.min,max:this.max}}},methods:{blur:function(t){this.$refs.input.blur(t)},focus:function(){this.$refs.input.focus()}}},zo=Ro,Fo=Object(c["a"])(zo,Po,Mo,!1,null,null,null),Uo=Fo.exports,Ho=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-number-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},Ko=[],Vo={inheritAttrs:!1,props:Object(f["a"])({},Ci.props,Pi.props,Fs.props),methods:{focus:function(){this.$refs.input.focus()}}},Yo=Vo,Wo=Object(c["a"])(Yo,Ho,Ko,!1,null,null,null),Go=Wo.exports,Jo=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-pages-field"},"k-field",t.$props,!1),[n("k-button-group",{staticClass:"k-field-options",attrs:{slot:"options"},slot:"options"},[t.more&&!t.disabled?n("k-button",{staticClass:"k-field-options-button",attrs:{icon:"add"},on:{click:t.open}},[t._v("\n "+t._s(t.$t("select"))+"\n ")]):t._e()],1),t.selected.length?[n("k-draggable",{attrs:{element:t.elements.list,handle:!0,list:t.selected,"data-size":t.size},on:{end:t.onInput}},t._l(t.selected,function(e,i){return n(t.elements.item,{key:e.id,tag:"component",attrs:{sortable:!t.disabled&&t.selected.length>1,text:e.text,info:e.info,link:e.link,icon:e.icon,image:e.image}},[t.disabled?t._e():n("k-button",{attrs:{slot:"options",icon:"remove"},on:{click:function(e){return t.remove(i)}},slot:"options"})],1)}),1)]:n("k-empty",{attrs:{layout:t.layout,icon:"page"},on:{click:t.open}},[t._v("\n "+t._s(t.empty||t.$t("field.pages.empty"))+"\n ")]),n("k-pages-dialog",{ref:"selector",on:{submit:t.select}})],2)},Zo=[],Xo={mixins:[go],methods:{open:function(){if(this.disabled)return!1;this.$refs.selector.open({endpoint:this.endpoints.field,max:this.max,multiple:this.multiple,selected:this.selected.map(function(t){return t.id})})}}},Qo=Xo,tr=(n("7e85"),Object(c["a"])(Qo,Jo,Zo,!1,null,null,null)),er=tr.exports,nr=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-password-field",attrs:{input:t._uid,counter:t.counterOptions}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},ir=[],sr={inheritAttrs:!1,props:Object(f["a"])({},Ci.props,Pi.props,Vs.props,{counter:{type:Boolean,default:!0},minlength:{type:Number,default:8},icon:{type:String,default:"key"}}),computed:{counterOptions:function(){return null!==this.value&&!this.disabled&&!1!==this.counter&&{count:this.value?String(this.value).length:0,min:this.minlength,max:this.maxlength}}},methods:{focus:function(){this.$refs.input.focus()}}},ar=sr,or=Object(c["a"])(ar,nr,ir,!1,null,null,null),rr=or.exports,lr=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-radio-field"},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},ur=[],cr={inheritAttrs:!1,props:Object(f["a"])({},Ci.props,Pi.props,Xs.props),methods:{focus:function(){this.$refs.input.focus()}}},dr=cr,pr=Object(c["a"])(dr,lr,ur,!1,null,null,null),fr=pr.exports,hr=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-range-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},mr=[],gr={inheritAttrs:!1,props:Object(f["a"])({},Ci.props,Pi.props,sa.props),methods:{focus:function(){this.$refs.input.focus()}}},vr=gr,br=Object(c["a"])(vr,hr,mr,!1,null,null,null),kr=br.exports,$r=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-select-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},_r=[],yr={inheritAttrs:!1,props:Object(f["a"])({},Ci.props,Pi.props,ca.props,{icon:{type:String,default:"angle-down"}}),methods:{focus:function(){this.$refs.input.focus()}}},xr=yr,wr=Object(c["a"])(xr,$r,_r,!1,null,null,null),Or=wr.exports,Cr=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-structure-field",nativeOn:{click:function(t){t.stopPropagation()}}},"k-field",t.$props,!1),[n("template",{slot:"options"},[t.more&&null===t.currentIndex?n("k-button",{ref:"add",attrs:{id:t._uid,icon:"add"},on:{click:t.add}},[t._v("\n "+t._s(t.$t("add"))+"\n ")]):t._e()],1),null!==t.currentIndex?[n("div",{staticClass:"k-structure-backdrop",on:{click:t.escape}}),n("section",{staticClass:"k-structure-form"},[n("k-form",{ref:"form",staticClass:"k-structure-form-fields",attrs:{fields:t.formFields},on:{input:t.onInput,submit:t.submit},model:{value:t.currentModel,callback:function(e){t.currentModel=e},expression:"currentModel"}}),n("footer",{staticClass:"k-structure-form-buttons"},[n("k-button",{staticClass:"k-structure-form-cancel-button",attrs:{icon:"cancel"},on:{click:t.close}},[t._v(t._s(t.$t("cancel")))]),"new"!==t.currentIndex?n("k-pagination",{attrs:{dropdown:!1,total:t.items.length,limit:1,page:t.currentIndex+1,details:!0,validate:t.beforePaginate},on:{paginate:t.paginate}}):t._e(),n("k-button",{staticClass:"k-structure-form-submit-button",attrs:{icon:"check"},on:{click:t.submit}},[t._v(t._s(t.$t("new"!==t.currentIndex?"confirm":"add")))])],1)],1)]:0===t.items.length?n("k-empty",{attrs:{icon:"list-bullet"},on:{click:t.add}},[t._v("\n "+t._s(t.empty||t.$t("field.structure.empty"))+"\n ")]):[n("table",{staticClass:"k-structure-table",attrs:{"data-sortable":t.isSortable}},[n("thead",[n("tr",[n("th",{staticClass:"k-structure-table-index"},[t._v("#")]),t._l(t.columns,function(e,i){return n("th",{key:i+"-header",staticClass:"k-structure-table-column",style:"width:"+t.width(e.width),attrs:{"data-align":e.align}},[t._v("\n "+t._s(e.label)+"\n ")])}),n("th")],2)]),n("k-draggable",{attrs:{list:t.items,"data-disabled":t.disabled,options:t.dragOptions,handle:!0,element:"tbody"},on:{end:t.onInput}},t._l(t.paginatedItems,function(e,i){return n("tr",{key:i,on:{click:function(t){t.stopPropagation()}}},[n("td",{staticClass:"k-structure-table-index"},[t.isSortable?n("k-sort-handle"):t._e(),n("span",{staticClass:"k-structure-table-index-number"},[t._v(t._s(t.indexOf(i)))])],1),t._l(t.columns,function(s,a){return n("td",{key:a,staticClass:"k-structure-table-column",style:"width:"+t.width(s.width),attrs:{title:s.label,"data-align":s.align},on:{click:function(e){return t.jump(i,a)}}},[!1===t.columnIsEmpty(e[a])?[t.previewExists(s.type)?n("k-"+s.type+"-field-preview",{tag:"component",attrs:{value:e[a],column:s,field:t.fields[a]}}):[n("p",{staticClass:"k-structure-table-text"},[t._v("\n "+t._s(s.before)+" "+t._s(t.displayText(t.fields[a],e[a])||"–")+" "+t._s(s.after)+"\n ")])]]:t._e()],2)}),n("td",{staticClass:"k-structure-table-option"},[n("k-button",{attrs:{tooltip:t.$t("remove"),icon:"remove"},on:{click:function(e){return t.confirmRemove(i)}}})],1)],2)}),0)],1),t.limit?n("k-pagination",t._b({on:{paginate:t.paginateItems}},"k-pagination",t.pagination,!1)):t._e(),t.disabled?t._e():n("k-dialog",{ref:"remove",attrs:{button:t.$t("delete"),theme:"negative"},on:{submit:t.remove}},[n("k-text",[t._v(t._s(t.$t("field.structure.delete.confirm")))])],1)]],2)},Sr=[],Er=n("59ad"),jr=n.n(Er),Tr=function(t){t=t||{};var e=t.desc?-1:1,n=-e,i=/^0/,s=/\s+/g,a=/^\s+|\s+$/g,o=/[^\x00-\x80]/,r=/^0x[0-9a-f]+$/i,l=/(0x[\da-fA-F]+|(^[\+\-]?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?(?=\D|\s|$))|\d+)/g,u=/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,c=t.insensitive?function(t){return d(""+t).replace(a,"")}:function(t){return(""+t).replace(a,"")};function d(t){return t.toLocaleLowerCase?t.toLocaleLowerCase():t.toLowerCase()}function p(t){return t.replace(l,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0")}function f(t,e){return(!t.match(i)||1===e)&&jr()(t)||t.replace(s," ").replace(a,"")||0}return function(t,i){var s=c(t),a=c(i);if(!s&&!a)return 0;if(!s&&a)return n;if(s&&!a)return e;var l=p(s),d=p(a),h=cs()(s.match(r),16)||1!==l.length&&Date.parse(s),m=cs()(a.match(r),16)||h&&a.match(u)&&Date.parse(a)||null;if(m){if(hm)return e}for(var g=l.length,v=d.length,b=0,k=Math.max(g,v);b0)return e;if(y<0)return n;if(b===k-1)return 0}else{if($<_)return n;if($>_)return e}}return 0}},Lr=n("f499"),Ir=n.n(Lr),qr=function(t){if(void 0!==t)return JSON.parse(Ir()(t))};Array.prototype.sortBy=function(t){var e=Tr(),n=t.split(" "),i=n[0],s=n[1]||"asc";return this.sort(function(t,n){var a=String(t[i]).toLowerCase(),o=String(n[i]).toLowerCase();return"desc"===s?e(o,a):e(a,o)})};var Ar,Nr,Br,Dr,Pr={inheritAttrs:!1,props:Object(f["a"])({},Ci.props,{columns:Object,empty:String,fields:Object,limit:Number,max:Number,min:Number,sortable:{type:Boolean,default:!0},sortBy:String,value:{type:Array,default:function(){return[]}}}),data:function(){return{items:this.makeItems(this.value),currentIndex:null,currentModel:null,trash:null,page:1}},computed:{dragOptions:function(){return{disabled:!this.isSortable,fallbackClass:"k-sortable-row-fallback"}},formFields:function(){var t=this,e={};return J()(this.fields).forEach(function(n){var i=t.fields[n];i.section=t.name,i.endpoints={field:t.endpoints.field+"+"+n,section:t.endpoints.section,model:t.endpoints.model},e[n]=i}),e},more:function(){return!0!==this.disabled&&!(this.max&&this.items.length>=this.max)},isSortable:function(){return!this.sortBy&&(!this.limit&&(!0!==this.disabled&&(!(this.items.length<=1)&&!1!==this.sortable)))},pagination:function(){var t=0;return this.limit&&(t=(this.page-1)*this.limit),{page:this.page,offset:t,limit:this.limit,total:this.items.length,align:"center",details:!0}},paginatedItems:function(){return this.limit?this.items.slice(this.pagination.offset,this.pagination.offset+this.limit):this.items}},watch:{value:function(t){t!=this.items&&(this.items=this.makeItems(t))}},methods:{add:function(){var t=this;if(!0===this.disabled)return!1;if(null!==this.currentIndex)return this.escape(),!1;var e={};J()(this.fields).forEach(function(n){var i=t.fields[n];i.default?e[n]=qr(i.default):e[n]=null}),this.currentIndex="new",this.currentModel=e,this.createForm()},close:function(){this.currentIndex=null,this.currentModel=null,this.$events.$off("keydown.esc",this.escape),this.$events.$off("keydown.cmd.s",this.submit),this.$store.dispatch("form/enable")},columnIsEmpty:function(t){return void 0===t||null===t||""===t||("object"===Object(Nt["a"])(t)&&0===J()(t).length&&t.constructor===Object||void 0!==t.length&&0===t.length)},confirmRemove:function(t){this.close(),this.trash=t,this.$refs.remove.open()},createForm:function(t){var e=this;this.$events.$on("keydown.esc",this.escape),this.$events.$on("keydown.cmd.s",this.submit),this.$store.dispatch("form/disable"),this.$nextTick(function(){e.$refs.form&&e.$refs.form.focus(t)})},displayText:function(t,e){switch(t.type){case"user":return e.email;case"date":var n=Fn()(e),i=!0===t.time?"YYYY-MM-DD HH:mm":"YYYY-MM-DD";return n.isValid()?n.format(i):"";case"tags":return e.map(function(t){return t.text}).join(", ");case"checkboxes":return e.map(function(e){var n=e;return t.options.forEach(function(t){t.value===e&&(n=t.text)}),n}).join(", ");case"radio":case"select":var s=t.options.filter(function(t){return t.value===e})[0];return s?s.text:null}return"object"===Object(Nt["a"])(e)&&null!==e?"…":e},escape:function(){var t=this;if("new"===this.currentIndex){var e=ft()(this.currentModel),n=!0;if(e.forEach(function(e){!1===t.columnIsEmpty(e)&&(n=!1)}),!0===n)return void this.close()}this.submit()},focus:function(){this.$refs.add.focus()},indexOf:function(t){return this.limit?(this.page-1)*this.limit+t+1:t+1},isActive:function(t){return this.currentIndex===t},jump:function(t,e){this.open(t+this.pagination.offset,e)},makeItems:function(t){return!1===mt()(t)?[]:this.sort(t)},onInput:function(){this.$emit("input",this.items)},open:function(t,e){this.currentIndex=t,this.currentModel=qr(this.items[t]),this.createForm(e)},beforePaginate:function(){return this.save(this.currentModel)},paginate:function(t){this.open(t.offset)},paginateItems:function(t){this.page=t.page},previewExists:function(t){return void 0!==C["a"].options.components["k-"+t+"-field-preview"]||void 0!==this.$options.components["k-"+t+"-field-preview"]},remove:function(){if(null===this.trash)return!1;this.items.splice(this.trash,1),this.trash=null,this.$refs.remove.close(),this.onInput(),0===this.paginatedItems.length&&this.page>1&&this.page--,this.items=this.sort(this.items)},sort:function(t){return this.sortBy?t.sortBy(this.sortBy):t},save:function(){var t=this;return null!==this.currentIndex&&void 0!==this.currentIndex?this.validate(this.currentModel).then(function(){return"new"===t.currentIndex?t.items.push(t.currentModel):t.items[t.currentIndex]=t.currentModel,t.items=t.sort(t.items),t.onInput(),!0}).catch(function(e){throw t.$store.dispatch("notification/error",{message:t.$t("error.form.incomplete"),details:e}),e}):gi.a.resolve()},submit:function(){this.save().then(this.close).catch(function(){})},validate:function(t){return this.$api.post(this.endpoints.field+"/validate",t).then(function(t){if(t.length>0)throw t;return!0})},width:function(t){if(!t)return"auto";var e=t.split("/");if(2!==e.length)return"auto";var n=Number(e[0]),i=Number(e[1]);return jr()(100/i*n,2).toFixed(2)+"%"}}},Mr=Pr,Rr=(n("088c"),Object(c["a"])(Mr,Cr,Sr,!1,null,null,null)),zr=Rr.exports,Fr=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-tags-field",attrs:{input:t._uid,counter:t.counterOptions}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},Ur=[],Hr={inheritAttrs:!1,props:Object(f["a"])({},Ci.props,Pi.props,ga.props,{counter:{type:Boolean,default:!0}}),computed:{counterOptions:function(){return null!==this.value&&!this.disabled&&!1!==this.counter&&{count:this.value&&mt()(this.value)?this.value.length:0,min:this.min,max:this.max}}},methods:{focus:function(){this.$refs.input.focus()}}},Kr=Hr,Vr=Object(c["a"])(Kr,Fr,Ur,!1,null,null,null),Yr=Vr.exports,Wr=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-tel-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},Gr=[],Jr={inheritAttrs:!1,props:Object(f["a"])({},Ci.props,Pi.props,$a.props,{icon:{type:String,default:"phone"}}),methods:{focus:function(){this.$refs.input.focus()}}},Zr=Jr,Xr=Object(c["a"])(Zr,Wr,Gr,!1,null,null,null),Qr=Xr.exports,tl=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-text-field",attrs:{input:t._uid,counter:t.counterOptions}},"k-field",t.$props,!1),[t._t("options",null,{slot:"options"}),n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],2)},el=[],nl={inheritAttrs:!1,props:Object(f["a"])({},Ci.props,Pi.props,Cs.props,{counter:{type:Boolean,default:!0}}),computed:{counterOptions:function(){return null!==this.value&&!this.disabled&&!1!==this.counter&&{count:this.value?String(this.value).length:0,min:this.minlength,max:this.maxlength}}},methods:{focus:function(){this.$refs.input.focus()}}},il=nl,sl=(n("b746"),Object(c["a"])(il,tl,el,!1,null,null,null)),al=sl.exports,ol=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-textarea-field",attrs:{input:t._uid,counter:t.counterOptions}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,type:"textarea",theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},rl=[],ll={inheritAttrs:!1,props:Object(f["a"])({},Ci.props,Pi.props,Ea.props,{counter:{type:Boolean,default:!0}}),computed:{counterOptions:function(){return null!==this.value&&!this.disabled&&!1!==this.counter&&{count:this.value?this.value.length:0,min:this.minlength,max:this.maxlength}}},methods:{focus:function(){this.$refs.input.focus()}}},ul=ll,cl=Object(c["a"])(ul,ol,rl,!1,null,null,null),dl=cl.exports,pl=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-time-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},fl=[],hl={inheritAttrs:!1,props:Object(f["a"])({},Ci.props,Pi.props,Pa.props,{icon:{type:String,default:"clock"}}),methods:{focus:function(){this.$refs.input.focus()}}},ml=hl,gl=Object(c["a"])(ml,pl,fl,!1,null,null,null),vl=gl.exports,bl=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-toggle-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},kl=[],$l={inheritAttrs:!1,props:Object(f["a"])({},Ci.props,Pi.props,Ha.props),methods:{focus:function(){this.$refs.input.focus()}}},_l=$l,yl=Object(c["a"])(_l,bl,kl,!1,null,null,null),xl=yl.exports,wl=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-url-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners),[t.link?n("k-button",{staticClass:"k-input-icon-button",attrs:{slot:"icon",icon:t.icon,link:t.value,tooltip:t.$t("open"),tabindex:"-1",target:"_blank"},slot:"icon"}):t._e()],1)],1)},Ol=[],Cl={inheritAttrs:!1,props:Object(f["a"])({},Ci.props,Pi.props,Wa.props,{link:{type:Boolean,default:!0},icon:{type:String,default:"url"}}),methods:{focus:function(){this.$refs.input.focus()}}},Sl=Cl,El=Object(c["a"])(Sl,wl,Ol,!1,null,null,null),jl=El.exports,Tl=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-users-field"},"k-field",t.$props,!1),[n("k-button-group",{staticClass:"k-field-options",attrs:{slot:"options"},slot:"options"},[t.more&&!t.disabled?n("k-button",{staticClass:"k-field-options-button",attrs:{icon:"add"},on:{click:t.open}},[t._v("\n "+t._s(t.$t("select"))+"\n ")]):t._e()],1),t.selected.length?[n("k-draggable",{attrs:{element:t.elements.list,list:t.selected,handle:!0},on:{end:t.onInput}},t._l(t.selected,function(e,i){return n(t.elements.item,{key:e.email,tag:"component",attrs:{sortable:!t.disabled&&t.selected.length>1,text:e.username,link:t.$api.users.link(e.id),image:e.image,icon:e.icon}},[t.disabled?t._e():n("k-button",{attrs:{slot:"options",icon:"remove"},on:{click:function(e){return t.remove(i)}},slot:"options"})],1)}),1)]:n("k-empty",{attrs:{icon:"users"},on:{click:t.open}},[t._v("\n "+t._s(t.empty||t.$t("field.users.empty"))+"\n ")]),n("k-users-dialog",{ref:"selector",on:{submit:t.select}})],2)},Ll=[],Il={mixins:[go],methods:{open:function(){if(this.disabled)return!1;this.$refs.selector.open({endpoint:this.endpoints.field,max:this.max,multiple:this.multiple,selected:this.selected.map(function(t){return t.id})})}}},ql=Il,Al=(n("7f6e"),Object(c["a"])(ql,Tl,Ll,!1,null,null,null)),Nl=Al.exports,Bl=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("nav",{staticClass:"k-toolbar"},[n("div",{staticClass:"k-toolbar-wrapper"},[n("div",{staticClass:"k-toolbar-buttons"},[t._l(t.layout,function(e,i){return[e.divider?[n("span",{key:i,staticClass:"k-toolbar-divider"})]:e.dropdown?[n("k-dropdown",{key:i},[n("k-button",{key:i,staticClass:"k-toolbar-button",attrs:{icon:e.icon,tooltip:e.label,tabindex:"-1"},on:{click:function(e){t.$refs[i+"-dropdown"][0].toggle()}}}),n("k-dropdown-content",{ref:i+"-dropdown",refInFor:!0},t._l(e.dropdown,function(e,i){return n("k-dropdown-item",{key:i,attrs:{icon:e.icon},on:{click:function(n){return t.command(e.command,e.args)}}},[t._v("\n "+t._s(e.label)+"\n ")])}),1)],1)]:[n("k-button",{key:i,staticClass:"k-toolbar-button",attrs:{icon:e.icon,tooltip:e.label,tabindex:"-1"},on:{click:function(n){return t.command(e.command,e.args)}}})]]})],2)])])},Dl=[],Pl=function(t){this.command("insert",function(e,n){var i=[];return n.split("\n").forEach(function(e,n){var s="ol"===t?n+1+".":"-";i.push(s+" "+e)}),i.join("\n")})},Ml={layout:["headlines","bold","italic","|","link","email","file","|","code","ul","ol"],props:{buttons:{type:[Boolean,Array],default:!0},uploads:[Boolean,Object,Array]},data:function(){var t={},e={},n=[],i=this.commands();return!1===this.buttons?t:(mt()(this.buttons)&&(n=this.buttons),!0!==mt()(this.buttons)&&(n=this.$options.layout),n.forEach(function(n,s){if("|"===n)t["divider-"+s]={divider:!0};else if(i[n]){var a=i[n];t[n]=a,a.shortcut&&(e[a.shortcut]=n)}}),{layout:t,shortcuts:e})},methods:{command:function(t,e){"function"===typeof t?t.apply(this):this.$emit("command",t,e)},close:function(){var t=this;J()(this.$refs).forEach(function(e){var n=t.$refs[e][0];n.close&&"function"===typeof n.close&&n.close()})},fileCommandSetup:function(){var t={label:this.$t("toolbar.button.file"),icon:"attachment"};return!1===this.uploads?t.command="selectFile":t.dropdown={select:{label:this.$t("toolbar.button.file.select"),icon:"check",command:"selectFile"},upload:{label:this.$t("toolbar.button.file.upload"),icon:"upload",command:"uploadFile"}},t},commands:function(){return{headlines:{label:this.$t("toolbar.button.headings"),icon:"title",dropdown:{h1:{label:this.$t("toolbar.button.heading.1"),icon:"title",command:"prepend",args:"#"},h2:{label:this.$t("toolbar.button.heading.2"),icon:"title",command:"prepend",args:"##"},h3:{label:this.$t("toolbar.button.heading.3"),icon:"title",command:"prepend",args:"###"}}},bold:{label:this.$t("toolbar.button.bold"),icon:"bold",command:"wrap",args:"**",shortcut:"b"},italic:{label:this.$t("toolbar.button.italic"),icon:"italic",command:"wrap",args:"*",shortcut:"i"},link:{label:this.$t("toolbar.button.link"),icon:"url",shortcut:"l",command:"dialog",args:"link"},email:{label:this.$t("toolbar.button.email"),icon:"email",shortcut:"e",command:"dialog",args:"email"},file:this.fileCommandSetup(),code:{label:this.$t("toolbar.button.code"),icon:"code",command:"wrap",args:"`"},ul:{label:this.$t("toolbar.button.ul"),icon:"list-bullet",command:function(){return Pl.apply(this,["ul"])}},ol:{label:this.$t("toolbar.button.ol"),icon:"list-numbers",command:function(){return Pl.apply(this,["ol"])}}}},shortcut:function(t,e){if(this.shortcuts[t]){var n=this.layout[this.shortcuts[t]];if(!n)return!1;e.preventDefault(),this.command(n.command,n.args)}}}},Rl=Ml,zl=(n("df0d"),Object(c["a"])(Rl,Bl,Dl,!1,null,null,null)),Fl=zl.exports,Ul=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("insert")},on:{close:t.cancel,submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.value,callback:function(e){t.value=e},expression:"value"}})],1)},Hl=[],Kl={data:function(){return{value:{email:null,text:null},fields:{email:{label:this.$t("email"),type:"email"},text:{label:this.$t("link.text"),type:"text"}}}},computed:{kirbytext:function(){return this.$store.state.system.info.kirbytext}},methods:{open:function(t,e){this.value.text=e,this.$refs.dialog.open()},cancel:function(){this.$emit("cancel")},createKirbytext:function(){var t=this.value.email||"";return this.value.text&&this.value.text.length>0?"(email: ".concat(t," text: ").concat(this.value.text,")"):"(email: ".concat(t,")")},createMarkdown:function(){var t=this.value.email||"";return this.value.text&&this.value.text.length>0?"[".concat(this.value.text,"](mailto:").concat(t,")"):"<".concat(t,">")},submit:function(){this.$emit("submit",this.kirbytext?this.createKirbytext():this.createMarkdown()),this.value={email:null,text:null},this.$refs.dialog.close()}}},Vl=Kl,Yl=Object(c["a"])(Vl,Ul,Hl,!1,null,null,null),Wl=Yl.exports,Gl=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("insert")},on:{close:t.cancel,submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.value,callback:function(e){t.value=e},expression:"value"}})],1)},Jl=[],Zl={data:function(){return{value:{url:null,text:null},fields:{url:{label:this.$t("link"),type:"text",placeholder:this.$t("url.placeholder"),icon:"url"},text:{label:this.$t("link.text"),type:"text"}}}},computed:{kirbytext:function(){return this.$store.state.system.info.kirbytext}},methods:{open:function(t,e){this.value.text=e,this.$refs.dialog.open()},cancel:function(){this.$emit("cancel")},createKirbytext:function(){return this.value.text.length>0?"(link: ".concat(this.value.url," text: ").concat(this.value.text,")"):"(link: ".concat(this.value.url,")")},createMarkdown:function(){return this.value.text.length>0?"[".concat(this.value.text,"](").concat(this.value.url,")"):"<".concat(this.value.url,">")},submit:function(){this.$emit("submit",this.kirbytext?this.createKirbytext():this.createMarkdown()),this.value={url:null,text:null},this.$refs.dialog.close()}}},Xl=Zl,Ql=Object(c["a"])(Xl,Gl,Jl,!1,null,null,null),tu=Ql.exports,eu=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.value?n("ul",{staticClass:"k-files-field-preview"},t._l(t.value,function(e){return n("li",{key:e.url},[n("k-link",{attrs:{title:e.filename,to:e.link},nativeOn:{click:function(t){t.stopPropagation()}}},[n("k-image",t._b({attrs:{src:e.url}},"k-image",t.image,!1))],1)],1)}),0):t._e()},nu=[],iu={props:{value:Array,field:Object},computed:{image:function(){var t=this.field.image||{};return Object(f["a"])({back:"pattern",cover:!1},t)}}},su=iu,au=(n("21dc"),Object(c["a"])(su,eu,nu,!1,null,null,null)),ou=au.exports,ru=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("p",{staticClass:"k-url-field-preview"},[t._v("\n "+t._s(t.column.before)+"\n "),n("k-link",{attrs:{to:t.link,target:"_blank"},nativeOn:{click:function(t){t.stopPropagation()}}},[t._v(t._s(t.value))]),t._v("\n "+t._s(t.column.after)+"\n")],1)},lu=[],uu={props:{column:{type:Object,default:function(){return{}}},value:String},computed:{link:function(){return this.value}}},cu=uu,du=(n("977f"),Object(c["a"])(cu,ru,lu,!1,null,null,null)),pu=du.exports,fu={extends:pu,computed:{link:function(){return"mailto:"+this.value}}},hu=fu,mu=Object(c["a"])(hu,Ar,Nr,!1,null,null,null),gu=mu.exports,vu=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.value?n("ul",{staticClass:"k-pages-field-preview"},t._l(t.value,function(e){return n("li",{key:e.id},[n("figure",[n("k-link",{attrs:{title:e.id,to:t.$api.pages.link(e.id)},nativeOn:{click:function(t){t.stopPropagation()}}},[n("k-icon",{staticClass:"k-pages-field-preview-image",attrs:{type:"page",back:"pattern"}}),n("figcaption",[t._v("\n "+t._s(e.text)+"\n ")])],1)],1)])}),0):t._e()},bu=[],ku={props:{value:Array}},$u=ku,_u=(n("d0c1"),Object(c["a"])($u,vu,bu,!1,null,null,null)),yu=_u.exports,xu=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.value?n("ul",{staticClass:"k-users-field-preview"},t._l(t.value,function(e){return n("li",{key:e.email},[n("figure",[n("k-link",{attrs:{title:e.email,to:t.$api.users.link(e.id)},nativeOn:{click:function(t){t.stopPropagation()}}},[e.avatar?n("k-image",{staticClass:"k-users-field-preview-avatar",attrs:{src:e.avatar.url,back:"pattern"}}):n("k-icon",{staticClass:"k-users-field-preview-avatar",attrs:{type:"user",back:"pattern"}}),n("figcaption",[t._v("\n "+t._s(e.username)+"\n ")])],1)],1)])}),0):t._e()},wu=[],Ou={props:{value:Array}},Cu=Ou,Su=(n("3a85"),Object(c["a"])(Cu,xu,wu,!1,null,null,null)),Eu=Su.exports,ju=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-bar"},[t.$slots.left?n("div",{staticClass:"k-bar-slot",attrs:{"data-position":"left"}},[t._t("left")],2):t._e(),t.$slots.center?n("div",{staticClass:"k-bar-slot",attrs:{"data-position":"center"}},[t._t("center")],2):t._e(),t.$slots.right?n("div",{staticClass:"k-bar-slot",attrs:{"data-position":"right"}},[t._t("right")],2):t._e()])},Tu=[],Lu=(n("6f7b"),{}),Iu=Object(c["a"])(Lu,ju,Tu,!1,null,null,null),qu=Iu.exports,Au=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",t._g({staticClass:"k-box",attrs:{"data-theme":t.theme}},t.$listeners),[t._t("default",[n("k-text",{domProps:{innerHTML:t._s(t.text)}})])],2)},Nu=[],Bu={props:{theme:String,text:String}},Du=Bu,Pu=(n("7dc7"),Object(c["a"])(Du,Au,Nu,!1,null,null,null)),Mu=Pu.exports,Ru=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("figure",t._g({staticClass:"k-card"},t.$listeners),[t.sortable?n("k-sort-handle"):t._e(),n(t.wrapper,{tag:"component",attrs:{to:t.link,target:t.target}},[t.imageOptions?n("k-image",t._b({staticClass:"k-card-image"},"k-image",t.imageOptions,!1)):n("span",{staticClass:"k-card-icon",style:"padding-bottom:"+t.ratioPadding},[n("k-icon",t._b({},"k-icon",t.icon,!1))],1),n("figcaption",{staticClass:"k-card-content"},[n("span",{staticClass:"k-card-text",attrs:{"data-noinfo":!t.info}},[t._v(t._s(t.text))]),t.info?n("span",{staticClass:"k-card-info",domProps:{innerHTML:t._s(t.info)}}):t._e()])],1),n("nav",{staticClass:"k-card-options"},[t.flag?n("k-button",t._b({staticClass:"k-card-options-button",on:{click:t.flag.click}},"k-button",t.flag,!1)):t._e(),t._t("options",[t.options?n("k-button",{staticClass:"k-card-options-button",attrs:{tooltip:t.$t("options"),icon:"dots"},on:{click:function(e){return e.stopPropagation(),t.$refs.dropdown.toggle()}}}):t._e(),n("k-dropdown-content",{ref:"dropdown",staticClass:"k-card-options-dropdown",attrs:{options:t.options,align:"right"},on:{action:function(e){return t.$emit("action",e)}}})])],2)],1)},zu=[],Fu=function(t){t=t||"3/2";var e=t.split("/");if(2!==e.length)return"100%";var n=Number(e[0]),i=Number(e[1]),s=100/n*i;return s+"%"},Uu={inheritAttrs:!1,props:{column:String,flag:Object,icon:{type:Object,default:function(){return{type:"file",back:"black"}}},image:Object,info:String,link:String,options:[Array,Function],sortable:Boolean,target:String,text:String},computed:{wrapper:function(){return this.link?"k-link":"div"},ratioPadding:function(){return this.icon&&this.icon.ratio?Fu(this.icon.ratio):Fu("3/2")},imageOptions:function(){if(!this.image)return!1;var t=null,e=null;return this.image.cards?(t=this.image.cards.url,e=this.image.cards.srcset):(t=this.image.url,e=this.image.srcset),!!t&&{src:t,srcset:e,back:this.image.back||"black",cover:this.image.cover,ratio:this.image.ratio||"3/2",sizes:this.getSizes(this.column)}}},methods:{getSizes:function(t){switch(t){case"1/2":case"2/4":return"(min-width: 30em) and (max-width: 65em) 59em, (min-width: 65em) 44em, 27em";case"1/3":return"(min-width: 30em) and (max-width: 65em) 59em, (min-width: 65em) 29.333em, 27em";case"1/4":return"(min-width: 30em) and (max-width: 65em) 59em, (min-width: 65em) 22em, 27em";case"2/3":return"(min-width: 30em) and (max-width: 65em) 59em, (min-width: 65em) 27em, 27em";case"3/4":return"(min-width: 30em) and (max-width: 65em) 59em, (min-width: 65em) 66em, 27em";default:return"(min-width: 30em) and (max-width: 65em) 59em, (min-width: 65em) 88em, 27em"}}}},Hu=Uu,Ku=(n("c119"),Object(c["a"])(Hu,Ru,zu,!1,null,null,null)),Vu=Ku.exports,Yu=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-cards"},[t._t("default",t._l(t.cards,function(e,i){return n("k-card",t._g(t._b({key:i},"k-card",e,!1),t.$listeners))}))],2)},Wu=[],Gu={props:{cards:Array}},Ju=Gu,Zu=(n("f56d"),Object(c["a"])(Ju,Yu,Wu,!1,null,null,null)),Xu=Zu.exports,Qu=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-collection",attrs:{"data-layout":t.layout}},[n("k-draggable",{attrs:{list:t.items,options:t.dragOptions,element:t.elements.list,"data-size":t.size,handle:!0},on:{change:function(e){return t.$emit("change",e)},end:t.onEnd}},t._l(t.items,function(e,i){return n(t.elements.item,t._b({key:i,tag:"component",class:{"k-draggable-item":e.sortable},on:{action:function(n){return t.$emit("action",e,n)},dragstart:function(n){return t.onDragStart(n,e.dragText)}}},"component",e,!1))}),1),t.hasFooter?n("footer",{staticClass:"k-collection-footer"},[t.help?n("k-text",{staticClass:"k-collection-help",attrs:{theme:"help"},domProps:{innerHTML:t._s(t.help)}}):t._e(),n("div",{staticClass:"k-collection-pagination"},[t.hasPagination?n("k-pagination",t._b({on:{paginate:function(e){return t.$emit("paginate",e)}}},"k-pagination",t.paginationOptions,!1)):t._e()],1)],1):t._e()],1)},tc=[],ec={props:{help:String,items:{type:[Array,Object],default:function(){return[]}},layout:{type:String,default:"list"},size:String,sortable:Boolean,pagination:{type:[Boolean,Object],default:function(){return!1}}},computed:{hasPagination:function(){return!1!==this.pagination&&(!0!==this.paginationOptions.hide&&!(this.pagination.total<=this.pagination.limit))},hasFooter:function(){return!(!this.hasPagination&&!this.help)},dragOptions:function(){return{sort:this.sortable,disabled:!1===this.sortable,draggable:".k-draggable-item"}},elements:function(){var t={cards:{list:"k-cards",item:"k-card"},list:{list:"k-list",item:"k-list-item"}};return t[this.layout]?t[this.layout]:t["list"]},paginationOptions:function(){var t="object"!==Object(Nt["a"])(this.pagination)?{}:this.pagination;return Object(f["a"])({limit:10,details:!0,keys:!1,total:0,hide:!1},t)}},watch:{$props:function(){this.$forceUpdate()}},over:null,methods:{onEnd:function(){this.over&&this.over.removeAttribute("data-over"),this.$emit("sort",this.items)},onDragStart:function(t,e){this.$store.dispatch("drag",{type:"text",data:e})}}},nc=ec,ic=(n("8c28"),Object(c["a"])(nc,Qu,tc,!1,null,null,null)),sc=ic.exports,ac=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-column",attrs:{"data-width":t.width}},[t._t("default")],2)},oc=[],rc={name:"KirbyColumn",props:{width:String}},lc=rc,uc=(n("c9cb"),Object(c["a"])(lc,ac,oc,!1,null,null,null)),cc=uc.exports,dc=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-dropzone",attrs:{"data-dragging":t.dragging,"data-over":t.over},on:{dragenter:t.onEnter,dragleave:t.onLeave,dragover:t.onOver,drop:t.onDrop}},[t._t("default")],2)},pc=[],fc={props:{label:{type:String,default:"Drop to upload"},disabled:{type:Boolean,default:!1}},data:function(){return{files:[],dragging:!1,over:!1}},methods:{cancel:function(){this.reset()},reset:function(){this.dragging=!1,this.over=!1},onDrop:function(t){return!0===this.disabled?this.reset():t.dataTransfer.types?!1===t.dataTransfer.types.includes("Files")?this.reset():(this.$events.$emit("dropzone.drop"),this.files=t.dataTransfer.files,this.$emit("drop",this.files),void this.reset()):this.reset()},onEnter:function(t){!1===this.disabled&&t.dataTransfer.types&&t.dataTransfer.types.includes("Files")&&(this.dragging=!0)},onLeave:function(){this.reset()},onOver:function(t){!1===this.disabled&&t.dataTransfer.types&&t.dataTransfer.types.includes("Files")&&(t.dataTransfer.dropEffect="copy",this.over=!0)}}},hc=fc,mc=(n("414d"),Object(c["a"])(hc,dc,pc,!1,null,null,null)),gc=mc.exports,vc=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",t._g({staticClass:"k-empty",attrs:{"data-layout":t.layout}},t.$listeners),[n("k-icon",{attrs:{type:t.icon}}),n("p",[t._t("default")],2)],1)},bc=[],kc={props:{text:String,icon:String,layout:{type:String,default:"list"}}},$c=kc,_c=(n("ba8f"),Object(c["a"])($c,vc,bc,!1,null,null,null)),yc=_c.exports,xc=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-file-preview"},[n("k-view",{staticClass:"k-file-preview-layout"},[n("div",{staticClass:"k-file-preview-image"},[n("a",{directives:[{name:"tab",rawName:"v-tab"}],staticClass:"k-file-preview-image-link",attrs:{href:t.file.url,title:t.$t("open"),target:"_blank"}},[t.file.panelImage&&t.file.panelImage.cards&&t.file.panelImage.cards.url?n("k-image",{attrs:{src:t.file.panelImage.cards.url,srcset:t.file.panelImage.cards.srcset,back:"none"}}):t.file.panelIcon?n("k-icon",{staticClass:"k-file-preview-icon",style:{color:t.file.panelIcon.color},attrs:{type:t.file.panelIcon.type}}):n("span",{staticClass:"k-file-preview-placeholder"})],1)]),n("div",{staticClass:"k-file-preview-details"},[n("ul",[n("li",[n("h3",[t._v(t._s(t.$t("template")))]),n("p",[t._v(t._s(t.file.template||"—"))])]),n("li",[n("h3",[t._v(t._s(t.$t("mime")))]),n("p",[t._v(t._s(t.file.mime))])]),n("li",[n("h3",[t._v(t._s(t.$t("url")))]),n("p",[n("k-link",{attrs:{to:t.file.url,tabindex:"-1",target:"_blank"}},[t._v("/"+t._s(t.file.id))])],1)]),n("li",[n("h3",[t._v(t._s(t.$t("size")))]),n("p",[t._v(t._s(t.file.niceSize))])]),n("li",[n("h3",[t._v(t._s(t.$t("dimensions")))]),t.file.dimensions?n("p",[t._v(t._s(t.file.dimensions.width)+"×"+t._s(t.file.dimensions.height)+" "+t._s(t.$t("pixel")))]):n("p",[t._v("—")])]),n("li",[n("h3",[t._v(t._s(t.$t("orientation")))]),t.file.dimensions?n("p",[t._v(t._s(t.$t("orientation."+t.file.dimensions.orientation)))]):n("p",[t._v("—")])])])])])],1)},wc=[],Oc={props:{file:Object}},Cc=Oc,Sc=(n("696b5"),Object(c["a"])(Cc,xc,wc,!1,null,null,null)),Ec=Sc.exports,jc=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-grid",attrs:{"data-gutter":t.gutter}},[t._t("default")],2)},Tc=[],Lc={props:{gutter:String}},Ic=Lc,qc=(n("5b23"),Object(c["a"])(Ic,jc,Tc,!1,null,null,null)),Ac=qc.exports,Nc=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("header",{staticClass:"k-header",attrs:{"data-editable":t.editable}},[n("k-headline",{attrs:{tag:"h1",size:"huge"}},[t.editable&&t.$listeners.edit?n("span",{staticClass:"k-headline-editable",on:{click:function(e){return t.$emit("edit")}}},[t._t("default"),n("k-icon",{attrs:{type:"edit"}})],2):t._t("default")],2),t.$slots.left||t.$slots.right?n("k-bar",{staticClass:"k-header-buttons"},[t._t("left",null,{slot:"left"}),t._t("right",null,{slot:"right"})],2):t._e(),t.tabs&&t.tabs.length>1?n("div",{staticClass:"k-header-tabs"},[n("nav",[t._l(t.visibleTabs,function(e,i){return n("k-button",{key:t.$route.fullPath+"-tab-"+i,staticClass:"k-tab-button",attrs:{link:"#"+e.name,current:t.currentTab&&t.currentTab.name===e.name,icon:e.icon,tooltip:e.label}},[t._v("\n "+t._s(e.label)+"\n ")])}),t.invisibleTabs.length?n("k-button",{staticClass:"k-tab-button k-tabs-dropdown-button",attrs:{icon:"dots"},on:{click:function(e){return e.stopPropagation(),t.$refs.more.toggle()}}},[t._v("\n "+t._s(t.$t("more"))+"\n ")]):t._e()],2),t.invisibleTabs.length?n("k-dropdown-content",{ref:"more",staticClass:"k-tabs-dropdown",attrs:{align:"right"}},t._l(t.invisibleTabs,function(e,i){return n("k-dropdown-item",{key:"more-"+i,attrs:{link:"#"+e.name,current:t.currentTab&&t.currentTab.name===e.name,icon:e.icon,tooltip:e.label}},[t._v("\n "+t._s(e.label)+"\n ")])}),1):t._e()],1):t._e()],1)},Bc=[],Dc={props:{editable:Boolean,tabs:Array,tab:Object},data:function(){return{size:null,currentTab:this.tab,visibleTabs:this.tabs,invisibleTabs:[]}},watch:{tab:function(){this.currentTab=this.tab},tabs:function(t){this.visibleTabs=t,this.invisibleTabs=[],this.resize(!0)}},created:function(){window.addEventListener("resize",this.resize)},destroyed:function(){window.removeEventListener("resize",this.resize)},methods:{resize:function(t){if(this.tabs&&!(this.tabs.length<=1)){if(this.tabs.length<=3)return this.visibleTabs=this.tabs,void(this.invisibleTabs=[]);if(window.innerWidth>=700){if("large"===this.size&&!t)return;this.visibleTabs=this.tabs,this.invisibleTabs=[],this.size="large"}else{if("small"===this.size&&!t)return;this.visibleTabs=this.tabs.slice(0,2),this.invisibleTabs=this.tabs.slice(2),this.size="small"}}}}},Pc=Dc,Mc=(n("53c5"),Object(c["a"])(Pc,Nc,Bc,!1,null,null,null)),Rc=Mc.exports,zc=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ul",{staticClass:"k-list"},[t._t("default",t._l(t.items,function(e,i){return n("k-list-item",t._g(t._b({key:i},"k-list-item",e,!1),t.$listeners))}))],2)},Fc=[],Uc={props:{items:Array}},Hc=Uc,Kc=(n("c857"),Object(c["a"])(Hc,zc,Fc,!1,null,null,null)),Vc=Kc.exports,Yc=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(t.element,t._g({tag:"component",staticClass:"k-list-item"},t.$listeners),[t.sortable?n("k-sort-handle"):t._e(),n("k-link",{directives:[{name:"tab",rawName:"v-tab"}],staticClass:"k-list-item-content",attrs:{to:t.link,target:t.target}},[n("span",{staticClass:"k-list-item-image"},[t.imageOptions?n("k-image",t._b({},"k-image",t.imageOptions,!1)):n("k-icon",t._b({},"k-icon",t.icon,!1))],1),n("span",{staticClass:"k-list-item-text"},[n("em",[t._v(t._s(t.text))]),t.info?n("small",{domProps:{innerHTML:t._s(t.info)}}):t._e()])]),n("nav",{staticClass:"k-list-item-options"},[t._t("options",[t.flag?n("k-button",t._b({on:{click:t.flag.click}},"k-button",t.flag,!1)):t._e(),t.options?n("k-button",{staticClass:"k-list-item-toggle",attrs:{tooltip:t.$t("options"),icon:"dots",alt:"Options"},on:{click:function(e){return e.stopPropagation(),t.$refs.options.toggle()}}}):t._e(),n("k-dropdown-content",{ref:"options",attrs:{options:t.options,align:"right"},on:{action:function(e){return t.$emit("action",e)}}})])],2)],1)},Wc=[],Gc={inheritAttrs:!1,props:{element:{type:String,default:"li"},image:Object,icon:{type:Object,default:function(){return{type:"file",back:"black"}}},sortable:Boolean,text:String,target:String,info:String,link:String,flag:Object,options:[Array,Function]},computed:{imageOptions:function(){if(!this.image)return!1;var t=null,e=null;return this.image.list?(t=this.image.list.url,e=this.image.list.srcset):(t=this.image.url,e=this.image.srcset),!!t&&{src:t,srcset:e,back:this.image.back||"black",cover:this.image.cover}}}},Jc=Gc,Zc=(n("fa6a"),Object(c["a"])(Jc,Yc,Wc,!1,null,null,null)),Xc=Zc.exports,Qc=function(){var t=this,e=t.$createElement,n=t._self._c||e;return 0===t.tabs.length?n("k-box",{attrs:{text:"This page has no blueprint setup yet",theme:"info"}}):t.tab?n("k-sections",{attrs:{parent:t.parent,blueprint:t.blueprint,columns:t.tab.columns},on:{submit:function(e){return t.$emit("submit",e)}}}):t._e()},td=[],ed={props:{parent:String,blueprint:String,tabs:Array},data:function(){return{tab:null}},watch:{$route:function(){this.open()},blueprint:function(){this.open()}},mounted:function(){this.open()},methods:{open:function(t){if(0!==this.tabs.length){t||(t=this.$route.hash.replace("#","")),t||(t=this.tabs[0].name);var e=null;this.tabs.forEach(function(n){n.name===t&&(e=n)}),e||(e=this.tabs[0]),this.tab=e,this.$emit("tab",this.tab)}}}},nd=ed,id=Object(c["a"])(nd,Qc,td,!1,null,null,null),sd=id.exports,ad=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-view",attrs:{"data-align":t.align}},[t._t("default")],2)},od=[],rd={props:{align:String}},ld=rd,ud=(n("daa8"),Object(c["a"])(ld,ad,od,!1,null,null,null)),cd=ud.exports,dd=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("draggable",t._g(t._b({staticClass:"k-draggable",attrs:{tag:t.element,list:t.list,move:t.move}},"draggable",t.dragOptions,!1),t.listeners),[t._t("default"),t._t("footer",null,{slot:"footer"})],2)},pd=[],fd=n("1980"),hd=n.n(fd),md={components:{draggable:hd.a},props:{element:String,handle:[String,Boolean],list:[Array,Object],move:Function,options:Object},data:function(){var t=this;return{listeners:Object(f["a"])({},this.$listeners,{start:function(e){t.$store.dispatch("drag",{}),t.$listeners.start&&t.$listeners.start(e)},end:function(e){t.$store.dispatch("drag",null),t.$listeners.end&&t.$listeners.end(e)}})}},computed:{dragOptions:function(){var t=!1;return t=!0===this.handle?".k-sort-handle":this.handle,Object(f["a"])({fallbackClass:"k-sortable-fallback",fallbackOnBody:!0,forceFallback:!0,ghostClass:"k-sortable-ghost",handle:t,scroll:document.querySelector(".k-panel-view")},this.options)}}},gd=md,vd=Object(c["a"])(gd,dd,pd,!1,null,null,null),bd=vd.exports,kd={data:function(){return{error:null}},errorCaptured:function(t){return g.debug&&window.console.warn(t),this.error=t,!1},render:function(t){return this.error?this.$slots.error?this.$slots.error[0]:this.$scopedSlots.error?this.$scopedSlots.error({error:this.error}):t("k-box",{attrs:{theme:"negative"}},this.error.message||this.error):this.$slots.default[0]}},$d=kd,_d=Object(c["a"])($d,Br,Dr,!1,null,null,null),yd=_d.exports,xd=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(t.tag,t._g({tag:"component",staticClass:"k-headline",attrs:{"data-theme":t.theme,"data-size":t.size}},t.$listeners),[t.link?n("k-link",{attrs:{to:t.link}},[t._t("default")],2):t._t("default")],2)},wd=[],Od={props:{link:String,size:{type:String},tag:{type:String,default:"h2"},theme:{type:String}}},Cd=Od,Sd=(n("f8a7"),Object(c["a"])(Cd,xd,wd,!1,null,null,null)),Ed=Sd.exports,jd=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{class:"k-icon k-icon-"+t.type,attrs:{"aria-label":t.alt,role:t.alt?"img":null,"aria-hidden":!t.alt,"data-back":t.back,"data-size":t.size}},[t.emoji?n("span",{staticClass:"k-icon-emoji"},[t._v(t._s(t.type))]):n("svg",{style:{color:t.color},attrs:{viewBox:"0 0 16 16"}},[n("use",{attrs:{"xlink:href":"#icon-"+t.type}})])])},Td=[],Ld={props:{alt:String,color:String,back:String,emoji:Boolean,size:String,type:String}},Id=Ld,qd=(n("3342"),Object(c["a"])(Id,jd,Td,!1,null,null,null)),Ad=qd.exports,Nd=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",t._g({staticClass:"k-image",attrs:{"data-ratio":t.ratio,"data-back":t.back,"data-cover":t.cover}},t.$listeners),[n("span",{style:"padding-bottom:"+t.ratioPadding},[t.loaded?n("img",{key:t.src,attrs:{alt:t.alt||"",src:t.src,srcset:t.srcset,sizes:t.sizes},on:{dragstart:function(t){t.preventDefault()}}}):t._e(),t.loaded||t.error?t._e():n("k-loader",{attrs:{position:"center",theme:"light"}}),!t.loaded&&t.error?n("k-icon",{staticClass:"k-image-error",attrs:{type:"cancel"}}):t._e()],1)])},Bd=[],Dd={props:{alt:String,back:String,cover:Boolean,ratio:String,sizes:String,src:String,srcset:String},data:function(){return{loaded:{type:Boolean,default:!1},error:{type:Boolean,default:!1}}},computed:{ratioPadding:function(){return Fu(this.ratio||"1/1")}},created:function(){var t=this,e=new Image;e.onload=function(){t.loaded=!0,t.$emit("load")},e.onerror=function(){t.error=!0,t.$emit("error")},e.src=this.src}},Pd=Dd,Md=(n("0d56"),Object(c["a"])(Pd,Nd,Bd,!1,null,null,null)),Rd=Md.exports,zd=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("progress",{staticClass:"k-progress",attrs:{max:"100"},domProps:{value:t.state}},[t._v("\n "+t._s(t.state)+"%\n")])},Fd=[],Ud={props:{value:{type:Number,default:0}},data:function(){return{state:this.value}},methods:{set:function(t){this.state=t}}},Hd=Ud,Kd=(n("9799"),Object(c["a"])(Hd,zd,Fd,!1,null,null,null)),Vd=Kd.exports,Yd=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{staticClass:"k-sort-handle",attrs:{"aria-hidden":"true"}},[n("svg",{attrs:{viewBox:"0 0 16 16"}},[n("use",{attrs:{"xlink:href":"#icon-sort"}})])])},Wd=[],Gd=(n("35cb"),{}),Jd=Object(c["a"])(Gd,Yd,Wd,!1,null,null,null),Zd=Jd.exports,Xd=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-text",attrs:{"data-align":t.align,"data-size":t.size,"data-theme":t.theme}},[t._t("default")],2)},Qd=[],tp={props:{align:String,size:String,theme:String}},ep=tp,np=(n("b0d6"),Object(c["a"])(ep,Xd,Qd,!1,null,null,null)),ip=np.exports,sp=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(t.component,t._g({directives:[{name:"tab",rawName:"v-tab"}],ref:"button",tag:"component",staticClass:"k-button",attrs:{"aria-current":t.current,autofocus:t.autofocus,id:t.id,disabled:t.disabled,"data-tabbed":t.tabbed,"data-theme":t.theme,"data-responsive":t.responsive,role:t.role,tabindex:t.tabindex,target:t.target,title:t.tooltip,to:t.link,type:t.link?null:t.type}},t.$listeners),[t.icon?n("k-icon",{staticClass:"k-button-icon",attrs:{type:t.icon,alt:t.tooltip}}):t._e(),t.$slots.default?n("span",{staticClass:"k-button-text"},[t._t("default")],2):t._e()],1)},ap=[],op={directives:{tab:_},inheritAttrs:!1,props:{autofocus:Boolean,current:[String,Boolean],disabled:Boolean,icon:String,id:[String,Number],link:String,responsive:Boolean,role:String,target:String,tabindex:String,theme:String,tooltip:String,type:{type:String,default:"button"}},data:function(){return{tabbed:!1}},computed:{component:function(){return this.link?"k-link":"button"},imageUrl:function(){return this.image?"object"===Object(Nt["a"])(this.image)?this.image.url:this.image:null}},methods:{focus:function(){this.$refs.button.focus()},tab:function(){this.focus(),this.tabbed=!0},untab:function(){this.tabbed=!1}}},rp=op,lp=(n("3787"),Object(c["a"])(rp,sp,ap,!1,null,null,null)),up=lp.exports,cp=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-button-group"},[t._t("default")],2)},dp=[],pp=(n("a567"),{}),fp=Object(c["a"])(pp,cp,dp,!1,null,null,null),hp=fp.exports,mp=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{staticClass:"k-dropdown",on:{click:function(t){t.stopPropagation()}}},[t._t("default")],2)},gp=[],vp=(n("f95f"),{}),bp=Object(c["a"])(vp,mp,gp,!1,null,null,null),kp=bp.exports,$p=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.isOpen?n("div",{staticClass:"k-dropdown-content",attrs:{"data-align":t.align}},[t._t("default",[t._l(t.items,function(e,i){return["-"===e?n("hr",{key:t._uid+"-item-"+i}):n("k-dropdown-item",t._b({key:t._uid+"-item-"+i,ref:t._uid+"-item-"+i,refInFor:!0,on:{click:function(n){return t.$emit("action",e.click)}}},"k-dropdown-item",e,!1),[t._v("\n "+t._s(e.text)+"\n ")])]})])],2):t._e()},_p=[],yp=null,xp={props:{options:[Array,Function],align:String},data:function(){return{items:[],current:-1,isOpen:!1}},methods:{fetchOptions:function(t){if(!this.options)return t(this.items);"string"===typeof this.options?fetch(this.options).then(function(t){return t.json()}).then(function(e){return t(e)}):"function"===typeof this.options?this.options(t):mt()(this.options)&&t(this.options)},open:function(){var t=this;this.reset(),yp&&yp!==this&&yp.close(),this.fetchOptions(function(e){t.$events.$on("keydown",t.navigate),t.$events.$on("click",t.close),t.items=e,t.isOpen=!0,t.$emit("open"),yp=t})},reset:function(){this.current=-1,this.$events.$off("keydown",this.navigate),this.$events.$off("click",this.close)},close:function(){this.reset(),this.isOpen=yp=!1,this.$emit("close")},toggle:function(){this.isOpen?this.close():this.open()},focus:function(t){t=t||0,this.$children[t]&&this.$children[t].focus&&(this.current=t,this.$children[t].focus())},navigate:function(t){switch(t.code){case"Escape":case"ArrowLeft":this.close(),this.$emit("leave",t.code);break;case"ArrowUp":t.preventDefault(),this.current>0?(this.current--,this.focus(this.current)):(this.close(),this.$emit("leave",t.code));break;case"ArrowDown":t.preventDefault(),this.current1?[t._v(t._s(t.detailsText))]:t._e(),t._v(t._s(t.total)+"\n ")],2),n("k-dropdown-content",{ref:"dropdown",staticClass:"k-pagination-selector",on:{open:function(e){t.$nextTick(function(){return t.$refs.page.focus()})}}},[n("div",[n("label",{attrs:{for:"k-pagination-input"}},[t._v(t._s(t.pageLabel))]),n("input",{ref:"page",attrs:{id:"k-pagination-input",min:1,max:t.pages,type:"number"},domProps:{value:t.currentPage},on:{keydown:[function(t){t.stopPropagation()},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.goTo(e.target.value)}]}}),n("k-button",{attrs:{icon:"angle-up"},on:{click:function(e){return t.goTo(t.$refs.page.value)}}})],1)])],1)]:[n("span",{staticClass:"k-pagination-details"},[t.total>1?[t._v(t._s(t.detailsText))]:t._e(),t._v(t._s(t.total)+"\n ")],2)]]:t._e(),t.show?n("k-button",{attrs:{disabled:!t.hasNext,tooltip:t.nextLabel,icon:"angle-right"},on:{click:t.next}}):t._e()],2):t._e()},Vp=[],Yp={props:{align:{type:String,default:"left"},details:{type:Boolean,default:!1},dropdown:{type:Boolean,default:!0},validate:{type:Function,default:function(){return gi.a.resolve()}},page:{type:Number,default:1},total:{type:Number,default:0},limit:{type:Number,default:10},keys:{type:Boolean,default:!1},pageLabel:{type:String,default:"Page"},prevLabel:{type:String,default:function(){return this.$t("prev")}},nextLabel:{type:String,default:function(){return this.$t("next")}}},data:function(){return{currentPage:this.page}},computed:{show:function(){return this.pages>1},start:function(){return(this.currentPage-1)*this.limit+1},end:function(){var t=this.start-1+this.limit;return t>this.total?this.total:t},detailsText:function(){return 1===this.limit?this.start+" / ":this.start+"-"+this.end+" / "},pages:function(){return Math.ceil(this.total/this.limit)},hasPrev:function(){return this.start>1},hasNext:function(){return this.endthis.limit},offset:function(){return this.start-1}},watch:{page:function(t){this.currentPage=t}},created:function(){!0===this.keys&&window.addEventListener("keydown",this.navigate,!1)},destroyed:function(){window.removeEventListener("keydown",this.navigate,!1)},methods:{goTo:function(t){var e=this;this.validate(t).then(function(){t<1&&(t=1),t>e.pages&&(t=e.pages),e.currentPage=t,e.$refs.dropdown&&e.$refs.dropdown.close(),e.$emit("paginate",{page:cs()(e.currentPage),start:e.start,end:e.end,limit:e.limit,offset:e.offset})}).catch(function(){})},prev:function(){this.goTo(this.currentPage-1)},next:function(){this.goTo(this.currentPage+1)},navigate:function(t){switch(t.code){case"ArrowLeft":this.prev();break;case"ArrowRight":this.next();break}}}},Wp=Yp,Gp=(n("a66d"),Object(c["a"])(Wp,Kp,Vp,!1,null,null,null)),Jp=Gp.exports,Zp=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-button-group",{staticClass:"k-prev-next"},[n("k-button",t._b({attrs:{icon:"angle-left"}},"k-button",t.prev,!1)),n("k-button",t._b({attrs:{icon:"angle-right"}},"k-button",t.next,!1))],1)},Xp=[],Qp={props:{prev:{type:Object,default:function(){return{disabled:!0,link:"#"}}},next:{type:Object,default:function(){return{disabled:!0,link:"#"}}}}},tf=Qp,ef=(n("7a7d"),Object(c["a"])(tf,Zp,Xp,!1,null,null,null)),nf=ef.exports,sf=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-search",attrs:{role:"search"},on:{click:t.close}},[n("div",{staticClass:"k-search-box",on:{click:function(t){t.stopPropagation()}}},[n("div",{staticClass:"k-search-input"},[n("k-dropdown",{staticClass:"k-search-types"},[n("k-button",{attrs:{icon:t.type.icon},on:{click:function(e){return t.$refs.types.toggle()}}},[t._v(t._s(t.type.label)+":")]),n("k-dropdown-content",{ref:"types"},t._l(t.types,function(e,i){return n("k-dropdown-item",{key:i,attrs:{icon:e.icon},on:{click:function(e){t.currentType=i}}},[t._v("\n "+t._s(e.label)+"\n ")])}),1)],1),n("input",{directives:[{name:"model",rawName:"v-model",value:t.q,expression:"q"}],ref:"input",attrs:{placeholder:t.$t("search")+" …","aria-label":"$t('search')",type:"text"},domProps:{value:t.q},on:{keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?null:(e.preventDefault(),t.down(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"])?null:(e.preventDefault(),t.up(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"tab",9,e.key,"Tab")?null:(e.preventDefault(),t.tab(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.enter(e)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"])?null:t.close(e)}],input:function(e){e.target.composing||(t.q=e.target.value)}}}),n("k-button",{staticClass:"k-search-close",attrs:{tooltip:t.$t("close"),icon:"cancel"},on:{click:t.close}})],1),n("ul",t._l(t.items,function(e,i){return n("li",{key:e.id,attrs:{"data-selected":t.selected===i},on:{mouseover:function(e){t.selected=i}}},[n("k-link",{attrs:{to:e.link},on:{click:function(e){return t.click(i)}}},[n("strong",[t._v(t._s(e.title))]),n("small",[t._v(t._s(e.info))])])],1)}),0)])])},af=[],of=function(t,e){var n=null;return function(){var i=this,s=arguments;clearTimeout(n),n=setTimeout(function(){t.apply(i,s)},e)}},rf={data:function(){return{items:[],q:null,selected:-1,currentType:"pages"}},computed:{type:function(){return this.types[this.currentType]||this.types["pages"]},types:function(){return{pages:{label:this.$t("pages"),icon:"page",endpoint:"site/search"},users:{label:this.$t("users"),icon:"users",endpoint:"users/search"}}}},watch:{q:of(function(t){this.search(t)},200),currentType:function(){this.search(this.q)}},mounted:function(){var t=this;this.$nextTick(function(){t.$refs.input.focus()})},methods:{open:function(t){t.preventDefault(),this.$store.dispatch("search",!0)},click:function(t){this.selected=t,this.tab()},close:function(){this.$store.dispatch("search",!1)},down:function(){this.selected=0&&this.selected--}}},lf=rf,uf=(n("4cb2"),Object(c["a"])(lf,sf,af,!1,null,null,null)),cf=uf.exports,df=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{ref:"button",staticClass:"k-tag",attrs:{"data-size":t.size,tabindex:"0"},on:{keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"delete",[8,46],e.key,["Backspace","Delete","Del"])?null:(e.preventDefault(),t.remove(e))}}},[n("span",{staticClass:"k-tag-text"},[t._t("default")],2),t.removable?n("span",{staticClass:"k-tag-toggle",on:{click:t.remove}},[t._v("×")]):t._e()])},pf=[],ff={props:{removable:Boolean,size:String},methods:{remove:function(){this.removable&&this.$emit("remove")},focus:function(){this.$refs.button.focus()}}},hf=ff,mf=(n("021f"),Object(c["a"])(hf,df,pf,!1,null,null,null)),gf=mf.exports,vf=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.user&&t.view?n("div",{staticClass:"k-topbar"},[n("k-view",[n("div",{staticClass:"k-topbar-wrapper"},[n("k-dropdown",{staticClass:"k-topbar-menu"},[n("k-button",{staticClass:"k-topbar-button k-topbar-menu-button",attrs:{tooltip:t.$t("menu"),icon:"bars"},on:{click:function(e){return t.$refs.menu.toggle()}}},[n("k-icon",{attrs:{type:"angle-down"}})],1),n("k-dropdown-content",{ref:"menu",staticClass:"k-topbar-menu"},[n("ul",[t._l(t.views,function(e,i){return e.menu?n("li",{key:"menu-item-"+i,attrs:{"aria-current":t.$store.state.view===i}},[n("k-dropdown-item",{attrs:{disabled:!1===t.$permissions.access[i],icon:e.icon,link:e.link}},[t._v("\n "+t._s(t.menuTitle(e,i))+"\n ")])],1):t._e()}),n("li",[n("hr")]),n("li",{attrs:{"aria-current":"account"===t.$route.meta.view}},[n("k-dropdown-item",{attrs:{icon:"account",link:"/account"}},[t._v("\n "+t._s(t.$t("view.account"))+"\n ")])],1),n("li",[n("hr")]),n("li",[n("k-dropdown-item",{attrs:{icon:"logout",link:"/logout"}},[t._v("\n "+t._s(t.$t("logout"))+"\n ")])],1)],2)])],1),t.view?n("k-link",{directives:[{name:"tab",rawName:"v-tab"}],staticClass:"k-topbar-button k-topbar-view-button",attrs:{to:t.view.link}},[n("k-icon",{attrs:{type:t.view.icon}}),t._v(" "+t._s(t.breadcrumbTitle)+"\n ")],1):t._e(),t.$store.state.breadcrumb.length>1?n("k-dropdown",{staticClass:"k-topbar-breadcrumb-menu"},[n("k-button",{staticClass:"k-topbar-button",on:{click:function(e){return t.$refs.crumb.toggle()}}},[t._v("\n …\n "),n("k-icon",{attrs:{type:"angle-down"}})],1),n("k-dropdown-content",{ref:"crumb"},[n("k-dropdown-item",{attrs:{icon:t.view.icon,link:t.view.link}},[t._v("\n "+t._s(t.$t("view."+t.$store.state.view,t.view.label))+"\n ")]),t._l(t.$store.state.breadcrumb,function(e,i){return n("k-dropdown-item",{key:"crumb-"+i+"-dropdown",attrs:{icon:t.view.icon,link:e.link}},[t._v("\n "+t._s(e.label)+"\n ")])})],2)],1):t._e(),n("nav",{staticClass:"k-topbar-crumbs"},t._l(t.$store.state.breadcrumb,function(e,i){return n("k-link",{directives:[{name:"tab",rawName:"v-tab"}],key:"crumb-"+i,attrs:{to:e.link}},[t._v("\n "+t._s(e.label)+"\n ")])}),1),n("div",{staticClass:"k-topbar-signals"},[n("span",{directives:[{name:"show",rawName:"v-show",value:t.$store.state.isLoading,expression:"$store.state.isLoading"}],staticClass:"k-topbar-loader"},[n("svg",{attrs:{viewBox:"0 0 16 18"}},[n("path",{attrs:{fill:"white",d:"M8,0 L16,4.50265232 L16,13.5112142 L8,18.0138665 L0,13.5112142 L0,4.50265232 L8,0 Z M2.10648757,5.69852516 L2.10648757,12.3153414 L8,15.632396 L13.8935124,12.3153414 L13.8935124,5.69852516 L8,2.38147048 L2.10648757,5.69852516 Z"}})])]),t.notification?[n("k-button",{staticClass:"k-topbar-notification k-topbar-signals-button",attrs:{theme:"positive"},on:{click:function(e){return t.$store.dispatch("notification/close")}}},[t._v("\n "+t._s(t.notification.message)+"\n ")])]:t.unregistered?[n("div",{staticClass:"k-registration"},[n("p",[t._v(t._s(t.$t("license.unregistered")))]),n("k-button",{staticClass:"k-topbar-signals-button",attrs:{responsive:!0,icon:"key"},on:{click:function(e){return t.$emit("register")}}},[t._v("\n "+t._s(t.$t("license.register"))+"\n ")]),n("k-button",{staticClass:"k-topbar-signals-button",attrs:{responsive:!0,link:"https://getkirby.com/buy",target:"_blank",icon:"cart"}},[t._v("\n "+t._s(t.$t("license.buy"))+"\n ")])],1)]:t._e(),n("k-button",{staticClass:"k-topbar-signals-button",attrs:{tooltip:t.$t("search"),icon:"search"},on:{click:function(e){return t.$store.dispatch("search",!0)}}})],2)],1)])],1):t._e()},bf=[],kf=Object(f["a"])({site:{link:"/site",icon:"page",menu:!0},users:{link:"/users",icon:"users",menu:!0},settings:{link:"/settings",icon:"settings",menu:!0},account:{link:"/account",icon:"users",menu:!1}},window.panel.plugins.views),$f={computed:{breadcrumbTitle:function(){var t=this.$t("view.".concat(this.$store.state.view),this.view.label);return"site"===this.$store.state.view&&this.$store.state.system.info.title||t},view:function(){return kf[this.$store.state.view]},views:function(){return kf},user:function(){return this.$store.state.user.current},notification:function(){return this.$store.state.notification.type&&"error"!==this.$store.state.notification.type?this.$store.state.notification:null},unregistered:function(){return!this.$store.state.system.info.license}},methods:{menuTitle:function(t,e){var n=this.$t("view."+e,t.label);return"site"===e&&this.$store.state.system.info.site||n}}},_f=$f,yf=(n("1e3b"),Object(c["a"])(_f,vf,bf,!1,null,null,null)),xf=yf.exports,wf=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-grid",{staticClass:"k-sections",attrs:{gutter:"large"}},t._l(t.columns,function(e,i){return n("k-column",{key:t.parent+"-column-"+i,attrs:{width:e.width}},[t._l(e.sections,function(s,a){return t.meetsCondition(s)?[t.exists(s.type)?n("k-"+s.type+"-section",t._b({key:t.parent+"-column-"+i+"-section-"+a+"-"+t.blueprint,tag:"component",class:"k-section k-section-name-"+s.name,attrs:{name:s.name,parent:t.parent,blueprint:t.blueprint,column:e.width},on:{submit:function(e){return t.$emit("submit",e)}}},"component",s,!1)):[n("k-box",{key:t.parent+"-column-"+i+"-section-"+a,attrs:{text:t.$t("error.section.type.invalid",{type:s.type}),theme:"negative"}})]]:t._e()})],2)}),1)},Of=[],Cf={props:{parent:String,blueprint:String,columns:[Array,Object]},computed:{content:function(){return this.$store.getters["form/values"]()}},methods:{exists:function(t){return C["a"].options.components["k-"+t+"-section"]},meetsCondition:function(t){var e=this;if(!t.when)return!0;var n=!0;return J()(t.when).forEach(function(i){var s=e.content[i.toLowerCase()],a=t.when[i];s!==a&&(n=!1)}),n}}},Sf=Cf,Ef=(n("6bcd"),Object(c["a"])(Sf,wf,Of,!1,null,null,null)),jf=Ef.exports,Tf=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"k-info-section"},[n("k-headline",{staticClass:"k-info-section-headline"},[t._v(t._s(t.headline))]),n("k-box",{attrs:{theme:t.theme}},[n("k-text",{domProps:{innerHTML:t._s(t.text)}})],1)],1)},Lf=[],If={props:{blueprint:String,help:String,name:String,parent:String},methods:{load:function(){return this.$api.get(this.parent+"/sections/"+this.name)}}},qf={mixins:[If],data:function(){return{headline:null,issue:null,text:null,theme:null}},created:function(){var t=this;this.load().then(function(e){t.headline=e.options.headline,t.text=e.options.text,t.theme=e.options.theme||"info"}).catch(function(e){t.issue=e})}},Af=qf,Nf=(n("4333"),Object(c["a"])(Af,Tf,Lf,!1,null,null,null)),Bf=Nf.exports,Df=function(){var t=this,e=t.$createElement,n=t._self._c||e;return!1===t.isLoading?n("section",{staticClass:"k-pages-section"},[n("header",{staticClass:"k-section-header"},[n("k-headline",{attrs:{link:t.options.link}},[t._v("\n "+t._s(t.headline)+" "),t.options.min?n("abbr",{attrs:{title:"This section is required"}},[t._v("*")]):t._e()]),t.add?n("k-button-group",[n("k-button",{attrs:{icon:"add"},on:{click:t.create}},[t._v(t._s(t.$t("add")))])],1):t._e()],1),t.error?[n("k-box",{attrs:{theme:"negative"}},[n("k-text",{attrs:{size:"small"}},[n("strong",[t._v(t._s(t.$t("error.section.notLoaded",{name:t.name}))+":")]),t._v("\n "+t._s(t.error)+"\n ")])],1)]:[t.data.length?n("k-collection",{attrs:{layout:t.options.layout,help:t.help,items:t.data,pagination:t.pagination,sortable:t.options.sortable,size:t.options.size},on:{change:t.sort,paginate:t.paginate,action:t.action}}):[n("k-empty",{attrs:{layout:t.options.layout,icon:"page"},on:{click:t.create}},[t._v("\n "+t._s(t.options.empty||t.$t("pages.empty"))+"\n ")]),n("footer",{staticClass:"k-collection-footer"},[t.help?n("k-text",{staticClass:"k-collection-help",attrs:{theme:"help"},domProps:{innerHTML:t._s(t.help)}}):t._e()],1)],n("k-page-create-dialog",{ref:"create"}),n("k-page-duplicate-dialog",{ref:"duplicate"}),n("k-page-rename-dialog",{ref:"rename",on:{success:t.update}}),n("k-page-url-dialog",{ref:"url",on:{success:t.update}}),n("k-page-status-dialog",{ref:"status",on:{success:t.update}}),n("k-page-template-dialog",{ref:"template",on:{success:t.update}}),n("k-page-remove-dialog",{ref:"remove",on:{success:t.update}})]],2):t._e()},Pf=[],Mf={inheritAttrs:!1,props:{blueprint:String,column:String,parent:String,name:String},data:function(){return{data:[],error:null,isLoading:!1,options:{empty:null,headline:null,help:null,layout:"list",link:null,max:null,min:null,size:null,sortable:null},pagination:{page:null}}},computed:{headline:function(){return this.options.headline||" "},help:function(){return this.options.help},language:function(){return this.$store.state.languages.current},paginationId:function(){return"kirby$pagination$"+this.parent+"/"+this.name}},watch:{language:function(){this.reload()}},methods:{items:function(t){return t},load:function(t){var e=this;t||(this.isLoading=!0),null===this.pagination.page&&(this.pagination.page=localStorage.getItem(this.paginationId)||1),this.$api.get(this.parent+"/sections/"+this.name,{page:this.pagination.page}).then(function(t){e.isLoading=!1,e.options=t.options,e.pagination=t.pagination,e.data=e.items(t.data)}).catch(function(t){e.isLoading=!1,e.error=t.message})},paginate:function(t){localStorage.setItem(this.paginationId,t.page),this.pagination=t,this.reload()},reload:function(){this.load(!0)}}},Rf={mixins:[Mf],computed:{add:function(){return this.options.add&&this.$permissions.pages.create}},created:function(){this.load(),this.$events.$on("page.changeStatus",this.reload)},destroyed:function(){this.$events.$off("page.changeStatus",this.reload)},methods:{create:function(){this.add&&this.$refs.create.open(this.options.link||this.parent,this.parent+"/children/blueprints",this.name)},action:function(t,e){var n=this,i=this.$api.pages.url(t.id,"lock");this.$api.get(i).then(function(i){if(i.locked&&!1===["preview"].includes(e))n.$store.dispatch("notification/error",n.$t("lock.page.isLocked",{email:i.email}));else switch(e){case"duplicate":n.$refs.duplicate.open(t.id);break;case"preview":var s=window.open("","_blank");s.document.write="...",n.$api.pages.preview(t.id).then(function(t){s.location.href=t}).catch(function(t){n.$store.dispatch("notification/error",t)});break;case"rename":n.$refs.rename.open(t.id);break;case"url":n.$refs.url.open(t.id);break;case"status":n.$refs.status.open(t.id);break;case"template":n.$refs.template.open(t.id);break;case"remove":if(n.data.length<=n.options.min){var a=n.options.min>1?"plural":"singular";n.$store.dispatch("notification/error",{message:n.$t("error.section.pages.min."+a,{section:n.options.headline||n.name,min:n.options.min})});break}n.$refs.remove.open(t.id);break;default:throw new Error("Invalid action")}})},items:function(t){var e=this;return t.map(function(t){return t.flag={class:"k-status-flag k-status-flag-"+t.status,tooltip:e.$t("page.status"),icon:!1===t.permissions.changeStatus?"protected":"circle",disabled:!1===t.permissions.changeStatus,click:function(){e.action(t,"status")}},t.options=function(n){e.$api.pages.options(t.id,"list").then(function(t){return n(t)}).catch(function(t){e.$store.dispatch("notification/error",t)})},t.sortable=t.permissions.sort&&e.options.sortable,t.column=e.column,t})},sort:function(t){var e=this,n=null;if(t.added&&(n="added"),t.moved&&(n="moved"),n){var i=t[n].element,s=t[n].newIndex+1+this.pagination.offset;this.$api.pages.status(i.id,"listed",s).then(function(){e.$store.dispatch("notification/success",":)")}).catch(function(t){e.$store.dispatch("notification/error",{message:t.message,details:t.details}),e.reload()})}},update:function(){this.reload(),this.$events.$emit("model.update")}}},zf=Rf,Ff=Object(c["a"])(zf,Df,Pf,!1,null,null,null),Uf=Ff.exports,Hf=function(){var t=this,e=t.$createElement,n=t._self._c||e;return!1===t.isLoading?n("section",{staticClass:"k-files-section"},[n("header",{staticClass:"k-section-header"},[n("k-headline",[t._v("\n "+t._s(t.headline)+" "),t.options.min?n("abbr",{attrs:{title:"This section is required"}},[t._v("*")]):t._e()]),t.add?n("k-button-group",[n("k-button",{attrs:{icon:"upload"},on:{click:t.upload}},[t._v(t._s(t.$t("add")))])],1):t._e()],1),t.error?[n("k-box",{attrs:{theme:"negative"}},[n("k-text",{attrs:{size:"small"}},[n("strong",[t._v(t._s(t.$t("error.section.notLoaded",{name:t.name}))+":")]),t._v("\n "+t._s(t.error)+"\n ")])],1)]:[n("k-dropzone",{attrs:{disabled:!1===t.add},on:{drop:t.drop}},[t.data.length?n("k-collection",{attrs:{help:t.help,items:t.data,layout:t.options.layout,pagination:t.pagination,sortable:t.options.sortable,size:t.options.size},on:{sort:t.sort,paginate:t.paginate,action:t.action}}):[n("k-empty",{attrs:{layout:t.options.layout,icon:"image"},on:{click:function(e){t.add&&t.upload()}}},[t._v("\n "+t._s(t.options.empty||t.$t("files.empty"))+"\n ")]),n("footer",{staticClass:"k-collection-footer"},[t.help?n("k-text",{staticClass:"k-collection-help",attrs:{theme:"help"},domProps:{innerHTML:t._s(t.help)}}):t._e()],1)]],2),n("k-file-rename-dialog",{ref:"rename",on:{success:t.update}}),n("k-file-remove-dialog",{ref:"remove",on:{success:t.update}}),n("k-upload",{ref:"upload",on:{success:t.uploaded,error:t.reload}})]],2):t._e()},Kf=[],Vf={mixins:[Mf],computed:{add:function(){return!(!this.$permissions.files.create||!1===this.options.upload)&&this.options.upload}},created:function(){this.load(),this.$events.$on("model.update",this.reload)},destroyed:function(){this.$events.$off("model.update",this.reload)},methods:{action:function(t,e){var n=this,i=this.$api.files.url(t.parent,t.filename,"lock");this.$api.get(i).then(function(i){if(i.locked&&!1===["download","edit"].includes(e))n.$store.dispatch("notification/error",n.$t("lock.file.isLocked",{email:i.email}));else switch(e){case"edit":n.$router.push(t.link);break;case"download":window.open(t.url);break;case"rename":n.$refs.rename.open(t.parent,t.filename);break;case"replace":n.replace(t);break;case"remove":if(n.data.length<=n.options.min){var s=n.options.min>1?"plural":"singular";n.$store.dispatch("notification/error",{message:n.$t("error.section.files.min."+s,{section:n.options.headline||n.name,min:n.options.min})});break}n.$refs.remove.open(t.parent,t.filename);break}})},drop:function(t){if(!1===this.add)return!1;this.$refs.upload.drop(t,Object(f["a"])({},this.add,{url:g.api+"/"+this.add.api}))},items:function(t){var e=this;return t.map(function(t){return t.options=function(n){e.$api.files.options(t.parent,t.filename,"list").then(function(t){return n(t)}).catch(function(t){e.$store.dispatch("notification/error",t)})},t.sortable=e.options.sortable,t.column=e.column,t})},replace:function(t){this.$refs.upload.open({url:g.api+"/"+this.$api.files.url(t.parent,t.filename),accept:t.mime,multiple:!1})},sort:function(t){var e=this;if(!1===this.options.sortable)return!1;t=t.map(function(t){return t.id}),this.$api.patch(this.parent+"/files/sort",{files:t,index:this.pagination.offset}).then(function(){e.$store.dispatch("notification/success",":)")}).catch(function(t){e.reload(),e.$store.dispatch("notification/error",t.message)})},update:function(){this.$events.$emit("model.update")},upload:function(){if(!1===this.add)return!1;this.$refs.upload.open(Object(f["a"])({},this.add,{url:g.api+"/"+this.add.api}))},uploaded:function(){this.$events.$emit("file.create"),this.$events.$emit("model.update"),this.$store.dispatch("notification/success",":)")}}},Yf=Vf,Wf=Object(c["a"])(Yf,Hf,Kf,!1,null,null,null),Gf=Wf.exports,Jf=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.isLoading?t._e():n("section",{staticClass:"k-fields-section"},[t.issue?[n("k-headline",{staticClass:"k-fields-issue-headline"},[t._v("Error")]),n("k-box",{attrs:{text:t.issue.message,theme:"negative"}})]:t._e(),n("k-form",{attrs:{fields:t.fields,validate:!0,value:t.values},on:{input:t.input,submit:t.onSubmit}})],2)},Zf=[],Xf={mixins:[If],inheritAttrs:!1,data:function(){return{fields:{},isLoading:!0,issue:null}},computed:{id:function(){return this.$store.state.form.current},language:function(){return this.$store.state.languages.current},values:function(){return this.$store.getters["form/values"](this.id)}},watch:{language:function(){this.fetch()}},created:function(){this.fetch()},methods:{input:function(t,e,n){this.$store.dispatch("form/update",[this.id,n,t[n]])},fetch:function(){var t=this;this.$api.get(this.parent+"/sections/"+this.name).then(function(e){t.fields=e.fields,J()(t.fields).forEach(function(e){t.fields[e].section=t.name,t.fields[e].endpoints={field:t.parent+"/fields/"+e,section:t.parent+"/sections/"+t.name,model:t.parent}}),t.isLoading=!1}).catch(function(e){t.issue=e,t.isLoading=!1})},onSubmit:function(t){this.$events.$emit("keydown.cmd.s",t)}}},Qf=Xf,th=(n("7d5d"),Object(c["a"])(Qf,Jf,Zf,!1,null,null,null)),eh=th.exports,nh=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-error-view",{staticClass:"k-browser-view"},[n("p",[t._v("\n We are really sorry, but your browser does not support\n all features required for the Kirby Panel.\n ")]),!1===t.hasFetchSupport?[n("p",[n("strong",[t._v("Fetch")]),n("br"),t._v("\n We use Javascript's new Fetch API. You can find a list of supported browsers for this feature on\n "),n("strong",[n("a",{attrs:{href:"https://caniuse.com/#feat=fetch"}},[t._v("caniuse.com")])])])]:t._e(),!1===t.hasGridSupport?[n("p",[n("strong",[t._v("CSS Grid")]),n("br"),t._v("\n We use CSS Grids for all our layouts. You can find a list of supported browsers for this feature on\n "),n("strong",[n("a",{attrs:{href:"https://caniuse.com/#feat=css-grid"}},[t._v("caniuse.com")])])])]:t._e()],2)},ih=[],sh={grid:function(){return!(!window.CSS||!window.CSS.supports("display","grid"))},fetch:function(){return void 0!==window.fetch},all:function(){return this.fetch()&&this.grid()}},ah={computed:{hasFetchSupport:function(){return sh.fetch()},hasGridSupport:function(){return sh.grid()}},created:function(){sh.all()&&this.$router.push("/")}},oh=ah,rh=(n("d6fc"),Object(c["a"])(oh,nh,ih,!1,null,null,null)),lh=rh.exports,uh=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-error-boundary",{key:t.plugin,scopedSlots:t._u([{key:"error",fn:function(e){var i=e.error;return n("k-error-view",{},[t._v("\n "+t._s(i.message||i)+"\n ")])}}])},[n("k-"+t.plugin+"-plugin-view",{tag:"component"})],1)},ch=[],dh={props:{plugin:String},beforeRouteEnter:function(t,e,n){n(function(t){t.$store.dispatch("breadcrumb",[])})},watch:{plugin:{handler:function(){this.$store.dispatch("view",this.plugin)},immediate:!0}}},ph=dh,fh=Object(c["a"])(ph,uh,ch,!1,null,null,null),hh=fh.exports,mh=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-view",{staticClass:"k-error-view"},[n("div",{staticClass:"k-error-view-content"},[n("k-text",[n("p",[n("k-icon",{staticClass:"k-error-view-icon",attrs:{type:"alert"}})],1),n("p",[t._t("default")],2)])],1)])},gh=[],vh=(n("d221"),{}),bh=Object(c["a"])(vh,mh,gh,!1,null,null,null),kh=bh.exports,$h=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.issue?n("k-error-view",[t._v("\n "+t._s(t.issue.message)+"\n")]):n("div",{staticClass:"k-file-view"},[n("k-file-preview",{attrs:{file:t.file}}),n("k-view",{staticClass:"k-file-content",attrs:{"data-locked":t.isLocked}},[n("k-header",{attrs:{editable:t.permissions.changeName&&!t.isLocked,tabs:t.tabs,tab:t.tab},on:{edit:function(e){return t.action("rename")}}},[t._v("\n\n "+t._s(t.file.filename)+"\n\n "),n("k-button-group",{attrs:{slot:"left"},slot:"left"},[n("k-button",{attrs:{responsive:!0,icon:"open"},on:{click:function(e){return t.action("download")}}},[t._v("\n "+t._s(t.$t("open"))+"\n ")]),n("k-dropdown",[n("k-button",{attrs:{responsive:!0,disabled:t.isLocked,icon:"cog"},on:{click:function(e){return t.$refs.settings.toggle()}}},[t._v("\n "+t._s(t.$t("settings"))+"\n ")]),n("k-dropdown-content",{ref:"settings",attrs:{options:t.options},on:{action:t.action}})],1),n("k-languages-dropdown")],1),t.file.id?n("k-prev-next",{attrs:{slot:"right",prev:t.prev,next:t.next},slot:"right"}):t._e()],1),t.file.id?n("k-tabs",{key:t.tabsKey,ref:"tabs",attrs:{parent:t.$api.files.url(t.path,t.file.filename),tabs:t.tabs,blueprint:t.file.blueprint.name},on:{tab:function(e){t.tab=e}}}):t._e(),n("k-file-rename-dialog",{ref:"rename",on:{success:t.renamed}}),n("k-file-remove-dialog",{ref:"remove",on:{success:t.deleted}}),n("k-upload",{ref:"upload",attrs:{url:t.uploadApi,accept:t.file.mime,multiple:!1},on:{success:t.uploaded}})],1)],1)},_h=[],yh={computed:{isLocked:function(){return null!==this.$store.getters["form/lock"]}},created:function(){this.fetch(),this.$events.$on("model.reload",this.fetch),this.$events.$on("keydown.left",this.toPrev),this.$events.$on("keydown.right",this.toNext)},destroyed:function(){this.$events.$off("model.reload",this.fetch),this.$events.$off("keydown.left",this.toPrev),this.$events.$off("keydown.right",this.toNext)},methods:{toPrev:function(t){this.prev&&"body"===t.target.localName&&this.$router.push(this.prev.link)},toNext:function(t){this.next&&"body"===t.target.localName&&this.$router.push(this.next.link)}}},xh={mixins:[yh],props:{path:{type:String},filename:{type:String,required:!0}},data:function(){return{name:"",file:{id:null,parent:null,filename:"",url:"",prev:null,next:null,panelIcon:null,panelImage:null,mime:null,content:{}},permissions:{changeName:!1,delete:!1},issue:null,tabs:[],tab:null,options:null}},computed:{uploadApi:function(){return g.api+"/"+this.path+"/files/"+this.filename},prev:function(){if(this.file.prev)return{link:this.$api.files.link(this.path,this.file.prev.filename),tooltip:this.file.prev.filename}},tabsKey:function(){return"file-"+this.file.id+"-tabs"},language:function(){return this.$store.state.languages.current},next:function(){if(this.file.next)return{link:this.$api.files.link(this.path,this.file.next.filename),tooltip:this.file.next.filename}}},watch:{language:function(){this.fetch()},filename:function(){this.fetch()}},methods:{fetch:function(){var t=this;this.$api.files.get(this.path,this.filename,{view:"panel"}).then(function(e){t.file=e,t.file.next=e.nextWithTemplate,t.file.prev=e.prevWithTemplate,t.file.url=e.url,t.name=e.name,t.tabs=e.blueprint.tabs,t.permissions=e.options,t.options=function(e){t.$api.files.options(t.path,t.file.filename).then(function(t){e(t)})},t.$store.dispatch("breadcrumb",t.$api.files.breadcrumb(t.file,t.$route.name)),t.$store.dispatch("title",t.filename),t.$store.dispatch("form/create",{id:"files/"+e.id,api:t.$api.files.link(t.path,t.filename),content:e.content})}).catch(function(e){window.console.error(e),t.issue=e})},action:function(t){switch(t){case"download":window.open(this.file.url);break;case"rename":this.$refs.rename.open(this.path,this.file.filename);break;case"replace":this.$refs.upload.open({url:g.api+"/"+this.$api.files.url(this.path,this.file.filename),accept:this.file.mime});break;case"remove":this.$refs.remove.open(this.path,this.file.filename);break}},deleted:function(){this.path?this.$router.push("/"+this.path):this.$router.push("/site")},renamed:function(t){this.$router.push(this.$api.files.link(this.path,t.filename))},uploaded:function(){this.fetch(),this.$store.dispatch("notification/success",":)")}}},wh=xh,Oh=Object(c["a"])(wh,$h,_h,!1,null,null,null),Ch=Oh.exports,Sh=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.system?n("k-view",{staticClass:"k-installation-view",attrs:{align:"center"}},["install"===t.state?n("form",{on:{submit:function(e){return e.preventDefault(),t.install(e)}}},[n("h1",{staticClass:"k-offscreen"},[t._v(t._s(t.$t("installation")))]),n("k-fieldset",{attrs:{fields:t.fields,novalidate:!0},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}}),n("k-button",{attrs:{type:"submit",icon:"check"}},[t._v(t._s(t.$t("install")))])],1):"completed"===t.state?n("k-text",[n("k-headline",[t._v(t._s(t.$t("installation.completed")))]),n("k-link",{attrs:{to:"/login"}},[t._v(t._s(t.$t("login")))])],1):n("div",[t.system.isInstalled?t._e():n("k-headline",[t._v(t._s(t.$t("installation.issues.headline")))]),n("ul",{staticClass:"k-installation-issues"},[!1===t.system.isInstallable?n("li",[n("k-icon",{attrs:{type:"alert"}}),n("span",{domProps:{innerHTML:t._s(t.$t("installation.disabled"))}})],1):t._e(),!1===t.requirements.php?n("li",[n("k-icon",{attrs:{type:"alert"}}),n("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.php"))}})],1):t._e(),!1===t.requirements.server?n("li",[n("k-icon",{attrs:{type:"alert"}}),n("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.server"))}})],1):t._e(),!1===t.requirements.mbstring?n("li",[n("k-icon",{attrs:{type:"alert"}}),n("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.mbstring"))}})],1):t._e(),!1===t.requirements.curl?n("li",[n("k-icon",{attrs:{type:"alert"}}),n("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.curl"))}})],1):t._e(),!1===t.requirements.accounts?n("li",[n("k-icon",{attrs:{type:"alert"}}),n("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.accounts"))}})],1):t._e(),!1===t.requirements.content?n("li",[n("k-icon",{attrs:{type:"alert"}}),n("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.content"))}})],1):t._e(),!1===t.requirements.media?n("li",[n("k-icon",{attrs:{type:"alert"}}),n("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.media"))}})],1):t._e(),!1===t.requirements.sessions?n("li",[n("k-icon",{attrs:{type:"alert"}}),n("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.sessions"))}})],1):t._e()]),n("k-button",{attrs:{icon:"refresh"},on:{click:t.check}},[n("span",{domProps:{innerHTML:t._s(t.$t("retry"))}})])],1)],1):t._e()},Eh=[],jh={data:function(){return{user:{name:"",email:"",language:"en",password:"",role:"admin"},languages:[],system:null}},computed:{state:function(){return this.system.isOk&&this.system.isInstallable&&!this.system.isInstalled?"install":this.system.isOk&&this.system.isInstallable&&this.system.isInstalled?"completed":void 0},translation:function(){return this.$store.state.translation.current},requirements:function(){return this.system&&this.system.requirements?this.system.requirements:{}},fields:function(){return{name:{label:this.$t("name"),type:"text",icon:"user",autofocus:!0},email:{label:this.$t("email"),type:"email",link:!1,required:!0},password:{label:this.$t("password"),type:"password",placeholder:this.$t("password")+" …",required:!0},language:{label:this.$t("language"),type:"select",options:this.languages,icon:"globe",empty:!1,required:!0}}}},watch:{translation:function(t){this.user.language=t},"user.language":function(t){this.$store.dispatch("translation/activate",t)}},created:function(){this.check()},methods:{install:function(){var t=this;this.$api.system.install(this.user).then(function(e){t.$store.dispatch("user/current",e),t.$store.dispatch("notification/success",t.$t("welcome")+"!"),t.$router.push("/")}).catch(function(e){t.$store.dispatch("notification/error",e)})},check:function(){var t=this;this.$store.dispatch("system/load",!0).then(function(e){!0===e.isInstalled&&e.isReady?t.$router.push("/login"):t.$api.translations.options().then(function(n){t.languages=n,t.system=e,t.$store.dispatch("title",t.$t("view.installation"))})})}}},Th=jh,Lh=(n("146c"),Object(c["a"])(Th,Sh,Eh,!1,null,null,null)),Ih=Lh.exports,qh=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.issue?n("k-error-view",[t._v("\n "+t._s(t.issue.message)+"\n")]):t.ready?n("k-view",{staticClass:"k-login-view",attrs:{align:"center"}},[n("k-login-form")],1):t._e()},Ah=[],Nh=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{staticClass:"k-login-form",attrs:{"data-invalid":t.invalid},on:{submit:function(e){return e.preventDefault(),t.login(e)}}},[n("h1",{staticClass:"k-offscreen"},[t._v(t._s(t.$t("login")))]),n("k-fieldset",{attrs:{novalidate:!0,fields:t.fields},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}}),n("div",{staticClass:"k-login-buttons"},[n("span",{staticClass:"k-login-checkbox"},[n("k-checkbox-input",{attrs:{value:t.user.remember,label:t.$t("login.remember")},on:{input:function(e){t.user.remember=e}}})],1),n("k-button",{staticClass:"k-login-button",attrs:{icon:"check",type:"submit"}},[t._v("\n "+t._s(t.$t("login"))+" "),t.isLoading?[t._v("…")]:t._e()],2)],1)],1)},Bh=[],Dh={data:function(){return{invalid:!1,isLoading:!1,user:{email:"",password:"",remember:!1}}},computed:{fields:function(){return{email:{autofocus:!0,label:this.$t("email"),type:"email",required:!0,link:!1},password:{label:this.$t("password"),type:"password",minLength:8,required:!0,autocomplete:"current-password",counter:!1}}}},methods:{login:function(){var t=this;this.invalid=!1,this.isLoading=!0,this.$store.dispatch("user/login",this.user).then(function(){t.$store.dispatch("system/load",!0).then(function(){t.$store.dispatch("notification/success",t.$t("welcome")),t.isLoading=!1})}).catch(function(){t.invalid=!0,t.isLoading=!1})}}},Ph=Dh,Mh=Object(c["a"])(Ph,Nh,Bh,!1,null,null,null),Rh=Mh.exports,zh={components:{"k-login-form":window.panel.plugins.login||Rh},data:function(){return{ready:!1,issue:null}},created:function(){var t=this;this.$store.dispatch("system/load").then(function(e){e.isReady||t.$router.push("/installation"),e.user&&e.user.id&&t.$router.push("/"),t.ready=!0,t.$store.dispatch("title",t.$t("login"))}).catch(function(e){t.issue=e})}},Fh=zh,Uh=(n("24c1"),Object(c["a"])(Fh,qh,Ah,!1,null,null,null)),Hh=Uh.exports,Kh=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.issue?n("k-error-view",[t._v("\n "+t._s(t.issue.message)+"\n")]):n("k-view",{staticClass:"k-page-view",attrs:{"data-locked":t.isLocked}},[n("k-header",{attrs:{tabs:t.tabs,tab:t.tab,editable:t.permissions.changeTitle&&!t.isLocked},on:{edit:function(e){return t.action("rename")}}},[t._v("\n "+t._s(t.page.title)+"\n "),n("k-button-group",{attrs:{slot:"left"},slot:"left"},[t.permissions.preview&&t.page.previewUrl?n("k-button",{attrs:{responsive:!0,link:t.page.previewUrl,target:"_blank",icon:"open"}},[t._v("\n "+t._s(t.$t("open"))+"\n ")]):t._e(),t.status?n("k-button",{class:["k-status-flag","k-status-flag-"+t.page.status],attrs:{disabled:!t.permissions.changeStatus||t.isLocked,icon:!t.permissions.changeStatus||t.isLocked?"protected":"circle",responsive:!0},on:{click:function(e){return t.action("status")}}},[t._v("\n "+t._s(t.status.label)+"\n ")]):t._e(),n("k-dropdown",[n("k-button",{attrs:{responsive:!0,disabled:!0===t.isLocked,icon:"cog"},on:{click:function(e){return t.$refs.settings.toggle()}}},[t._v("\n "+t._s(t.$t("settings"))+"\n ")]),n("k-dropdown-content",{ref:"settings",attrs:{options:t.options},on:{action:t.action}})],1),n("k-languages-dropdown")],1),t.page.id?n("k-prev-next",{attrs:{slot:"right",prev:t.prev,next:t.next},slot:"right"}):t._e()],1),t.page.id?n("k-tabs",{key:t.tabsKey,ref:"tabs",attrs:{parent:t.$api.pages.url(t.page.id),blueprint:t.blueprint,tabs:t.tabs},on:{tab:t.onTab}}):t._e(),n("k-page-rename-dialog",{ref:"rename",on:{success:t.update}}),n("k-page-duplicate-dialog",{ref:"duplicate"}),n("k-page-url-dialog",{ref:"url"}),n("k-page-status-dialog",{ref:"status",on:{success:t.update}}),n("k-page-template-dialog",{ref:"template",on:{success:t.update}}),n("k-page-remove-dialog",{ref:"remove"})],1)},Vh=[],Yh={mixins:[yh],props:{path:{type:String,required:!0}},data:function(){return{page:{title:"",id:null,prev:null,next:null,status:null},blueprint:null,preview:!0,permissions:{changeTitle:!1,changeStatus:!1},icon:"page",issue:null,tab:null,tabs:[],options:null}},computed:{language:function(){return this.$store.state.languages.current},next:function(){if(this.page.next)return{link:this.$api.pages.link(this.page.next.id),tooltip:this.page.next.title}},prev:function(){if(this.page.prev)return{link:this.$api.pages.link(this.page.prev.id),tooltip:this.page.prev.title}},status:function(){return null!==this.page.status?this.page.blueprint.status[this.page.status]:null},tabsKey:function(){return"page-"+this.page.id+"-tabs"}},watch:{language:function(){this.fetch()},path:function(){this.fetch()}},created:function(){this.$events.$on("page.changeSlug",this.update)},destroyed:function(){this.$events.$off("page.changeSlug",this.update)},methods:{action:function(t){switch(t){case"duplicate":this.$refs.duplicate.open(this.page.id);break;case"rename":this.$refs.rename.open(this.page.id);break;case"url":this.$refs.url.open(this.page.id);break;case"status":this.$refs.status.open(this.page.id);break;case"template":this.$refs.template.open(this.page.id);break;case"remove":this.$refs.remove.open(this.page.id);break;default:this.$store.dispatch("notification/error",this.$t("notification.notImplemented"));break}},fetch:function(){var t=this;this.$api.pages.get(this.path,{view:"panel"}).then(function(e){t.page=e,t.blueprint=e.blueprint.name,t.permissions=e.options,t.tabs=e.blueprint.tabs,t.options=function(e){t.$api.pages.options(t.page.id).then(function(t){e(t)})},t.$store.dispatch("breadcrumb",t.$api.pages.breadcrumb(e)),t.$store.dispatch("title",t.page.title),t.$store.dispatch("form/create",{id:"pages/"+t.page.id,api:t.$api.pages.link(t.page.id),content:t.page.content})}).catch(function(e){t.issue=e})},onTab:function(t){this.tab=t},update:function(){this.fetch(),this.$emit("model.update")}}},Wh=Yh,Gh=(n("202d"),Object(c["a"])(Wh,Kh,Vh,!1,null,null,null)),Jh=Gh.exports,Zh=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-view",{staticClass:"k-settings-view"},[n("k-header",[t._v("\n "+t._s(t.$t("view.settings"))+"\n ")]),n("section",{staticClass:"k-system-info"},[n("header",[n("k-headline",[t._v("Kirby")])],1),n("ul",{staticClass:"k-system-info-box"},[n("li",[n("dl",[n("dt",[t._v(t._s(t.$t("license")))]),n("dd",[t.license?[t._v("\n "+t._s(t.license)+"\n ")]:n("p",[n("strong",{staticClass:"k-system-unregistered"},[t._v(t._s(t.$t("license.unregistered")))])])],2)])]),n("li",[n("dl",[n("dt",[t._v(t._s(t.$t("version")))]),n("dd",[t._v(t._s(t.$store.state.system.info.version))])])])])]),t.multilang?n("section",{staticClass:"k-languages"},[t.languages.length>0?[n("section",{staticClass:"k-languages-section"},[n("header",[n("k-headline",[t._v(t._s(t.$t("languages.default")))])],1),n("k-collection",{attrs:{items:t.defaultLanguage},on:{action:t.action}})],1),n("section",{staticClass:"k-languages-section"},[n("header",[n("k-headline",[t._v(t._s(t.$t("languages.secondary")))]),n("k-button",{attrs:{icon:"add"},on:{click:function(e){return t.$refs.create.open()}}},[t._v(t._s(t.$t("language.create")))])],1),t.translations.length?n("k-collection",{attrs:{items:t.translations},on:{action:t.action}}):n("k-empty",{attrs:{icon:"globe"},on:{click:function(e){return t.$refs.create.open()}}},[t._v(t._s(t.$t("languages.secondary.empty")))])],1)]:0===t.languages.length?[n("header",[n("k-headline",[t._v(t._s(t.$t("languages")))]),n("k-button",{attrs:{icon:"add"},on:{click:function(e){return t.$refs.create.open()}}},[t._v(t._s(t.$t("language.create")))])],1),n("k-empty",{attrs:{icon:"globe"},on:{click:function(e){return t.$refs.create.open()}}},[t._v(t._s(t.$t("languages.empty")))])]:t._e(),n("k-language-create-dialog",{ref:"create",on:{success:t.fetch}}),n("k-language-update-dialog",{ref:"update",on:{success:t.fetch}}),n("k-language-remove-dialog",{ref:"remove",on:{success:t.fetch}})],2):t._e()],1)},Xh=[],Qh={data:function(){return{languages:[]}},computed:{defaultLanguage:function(){return this.languages.filter(function(t){return t.default})},multilang:function(){return this.$store.state.system.info.multilang},license:function(){return this.$store.state.system.info.license},translations:function(){return this.languages.filter(function(t){return!1===t.default})}},created:function(){this.fetch(),this.$store.dispatch("title",this.$t("view.settings")),this.$store.dispatch("breadcrumb",[])},methods:{fetch:function(){var t=this;!1!==this.multilang?this.$api.get("languages").then(function(e){t.languages=e.data.map(function(n){return{id:n.code,default:n.default,icon:{type:"globe",back:"black"},text:n.name,info:n.code,options:[{icon:"edit",text:t.$t("edit"),click:"update"},{icon:"trash",text:t.$t("delete"),disabled:n.default&&1!==e.data.length,click:"remove"}]}})}):this.languages=[]},action:function(t,e){switch(e){case"update":this.$refs.update.open(t.id);break;case"remove":this.$refs.remove.open(t.id);break}}}},tm=Qh,em=(n("9bd5"),Object(c["a"])(tm,Zh,Xh,!1,null,null,null)),nm=em.exports,im=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.issue?n("k-error-view",[t._v("\n "+t._s(t.issue.message)+"\n")]):n("k-view",{key:"site-view",staticClass:"k-site-view",attrs:{"data-locked":t.isLocked}},[n("k-header",{attrs:{tabs:t.tabs,tab:t.tab,editable:t.permissions.changeTitle&&!t.isLocked},on:{edit:function(e){return t.action("rename")}}},[t._v("\n "+t._s(t.site.title)+"\n "),n("k-button-group",{attrs:{slot:"left"},slot:"left"},[n("k-button",{attrs:{responsive:!0,link:t.site.previewUrl,target:"_blank",icon:"open"}},[t._v("\n "+t._s(t.$t("open"))+"\n ")]),n("k-languages-dropdown")],1)],1),t.site.url?n("k-tabs",{ref:"tabs",attrs:{tabs:t.tabs,blueprint:t.site.blueprint.name,parent:"site"},on:{tab:function(e){t.tab=e}}}):t._e(),n("k-site-rename-dialog",{ref:"rename",on:{success:t.fetch}})],1)},sm=[],am={data:function(){return{site:{title:null,url:null},issue:null,tab:null,tabs:[],options:null,permissions:{changeTitle:!0}}},computed:{isLocked:function(){return null!==this.$store.getters["form/lock"]},language:function(){return this.$store.state.languages.current}},watch:{language:function(){this.fetch()}},created:function(){this.fetch()},methods:{fetch:function(){var t=this;this.$api.site.get({view:"panel"}).then(function(e){t.site=e,t.tabs=e.blueprint.tabs,t.permissions=e.options,t.options=function(e){t.$api.site.options().then(function(t){e(t)})},t.$store.dispatch("breadcrumb",[]),t.$store.dispatch("title",null),t.$store.dispatch("form/create",{id:"site",api:"site",content:e.content})}).catch(function(e){t.issue=e})},action:function(t){switch(t){case"languages":this.$refs.languages.open();break;case"rename":this.$refs.rename.open();break;default:this.$store.dispatch("notification/error",this.$t("notification.notImplemented"));break}}}},om=am,rm=Object(c["a"])(om,im,sm,!1,null,null,null),lm=rm.exports,um=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.issue?n("k-error-view",[t._v("\n "+t._s(t.issue.message)+"\n")]):n("k-view",{staticClass:"k-users-view"},[n("k-header",[t._v("\n "+t._s(t.$t("view.users"))+"\n "),n("k-button-group",{attrs:{slot:"left"},slot:"left"},[n("k-button",{attrs:{disabled:!1===t.$permissions.users.create,icon:"add"},on:{click:function(e){return t.$refs.create.open()}}},[t._v(t._s(t.$t("user.create")))])],1),n("k-button-group",{attrs:{slot:"right"},slot:"right"},[n("k-dropdown",[n("k-button",{attrs:{responsive:!0,icon:"funnel"},on:{click:function(e){return t.$refs.roles.toggle()}}},[t._v("\n "+t._s(t.$t("role"))+": "+t._s(t.role?t.role.text:t.$t("role.all"))+"\n ")]),n("k-dropdown-content",{ref:"roles",attrs:{align:"right"}},[n("k-dropdown-item",{attrs:{icon:"bolt"},on:{click:function(e){return t.filter(!1)}}},[t._v("\n "+t._s(t.$t("role.all"))+"\n ")]),n("hr"),t._l(t.roles,function(e){return n("k-dropdown-item",{key:e.value,attrs:{icon:"bolt"},on:{click:function(n){return t.filter(e)}}},[t._v("\n "+t._s(e.text)+"\n ")])})],2)],1)],1)],1),t.users.length>0?[n("k-collection",{attrs:{items:t.users,pagination:t.pagination},on:{paginate:t.paginate,action:t.action}})]:0===t.total?[n("k-empty",{attrs:{icon:"users"}},[t._v(t._s(t.$t("role.empty")))])]:t._e(),n("k-user-create-dialog",{ref:"create",on:{success:t.fetch}}),n("k-user-email-dialog",{ref:"email",on:{success:t.fetch}}),n("k-user-language-dialog",{ref:"language",on:{success:t.fetch}}),n("k-user-password-dialog",{ref:"password"}),n("k-user-remove-dialog",{ref:"remove",on:{success:t.fetch}}),n("k-user-rename-dialog",{ref:"rename",on:{success:t.fetch}}),n("k-user-role-dialog",{ref:"role",on:{success:t.fetch}})],2)},cm=[],dm={data:function(){return{page:1,limit:20,total:null,users:[],roles:[],issue:null}},computed:{pagination:function(){return{page:this.page,limit:this.limit,total:this.total}},role:function(){var t=this,e=null;return this.$route.params.role&&this.roles.forEach(function(n){n.value===t.$route.params.role&&(e=n)}),e}},watch:{$route:function(){this.fetch()}},created:function(){var t=this;this.$api.roles.options().then(function(e){t.roles=e,t.fetch()})},methods:{fetch:function(){var t=this;this.$store.dispatch("title",this.$t("view.users"));var e={paginate:{page:this.page,limit:this.limit},sortBy:"username asc"};this.role&&(e.filterBy=[{field:"role",operator:"==",value:this.role.value}]),this.$api.users.list(e).then(function(e){t.users=e.data.map(function(e){var n={id:e.id,icon:{type:"user",back:"black"},text:e.name||e.email,info:e.role.title,link:"/users/"+e.id,options:function(n){t.$api.users.options(e.id,"list").then(function(t){return n(t)}).catch(function(e){t.$store.dispatch("notification/error",e)})},image:null};return e.avatar&&(n.image={url:e.avatar.url,cover:!0}),n}),t.role?t.$store.dispatch("breadcrumb",[{link:"/users/role/"+t.role.value,label:t.$t("role")+": "+t.role.text}]):t.$store.dispatch("breadcrumb",[]),t.total=e.pagination.total}).catch(function(e){t.issue=e})},paginate:function(t){this.page=t.page,this.limit=t.limit,this.fetch()},action:function(t,e){switch(e){case"edit":this.$router.push("/users/"+t.id);break;case"email":this.$refs.email.open(t.id);break;case"role":this.$refs.role.open(t.id);break;case"rename":this.$refs.rename.open(t.id);break;case"password":this.$refs.password.open(t.id);break;case"language":this.$refs.language.open(t.id);break;case"remove":this.$refs.remove.open(t.id);break}},filter:function(t){!1===t?this.$router.push("/users"):this.$router.push("/users/role/"+t.value),this.$refs.roles.close()}}},pm=dm,fm=Object(c["a"])(pm,um,cm,!1,null,null,null),hm=fm.exports,mm=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.issue?n("k-error-view",[t._v("\n "+t._s(t.issue.message)+"\n")]):t.ready?n("div",{staticClass:"k-user-view",attrs:{"data-locked":t.isLocked}},[n("div",{staticClass:"k-user-profile"},[n("k-view",[t.avatar?[n("k-dropdown",[n("k-button",{staticClass:"k-user-view-image",attrs:{tooltip:t.$t("avatar"),disabled:t.isLocked},on:{click:function(e){return t.$refs.picture.toggle()}}},[t.avatar?n("k-image",{attrs:{cover:!0,src:t.avatar,ratio:"1/1"}}):t._e()],1),n("k-dropdown-content",{ref:"picture"},[n("k-dropdown-item",{attrs:{icon:"upload"},on:{click:function(e){return t.$refs.upload.open()}}},[t._v("\n "+t._s(t.$t("change"))+"\n ")]),n("k-dropdown-item",{attrs:{icon:"trash"},on:{click:function(e){return t.action("picture.delete")}}},[t._v("\n "+t._s(t.$t("delete"))+"\n ")])],1)],1)]:[n("k-button",{staticClass:"k-user-view-image",attrs:{tooltip:t.$t("avatar")},on:{click:function(e){return t.$refs.upload.open()}}},[n("k-icon",{attrs:{type:"user"}})],1)],n("k-button-group",[n("k-button",{attrs:{disabled:!t.permissions.changeEmail||t.isLocked,icon:"email"},on:{click:function(e){return t.action("email")}}},[t._v(t._s(t.$t("email"))+": "+t._s(t.user.email))]),n("k-button",{attrs:{disabled:!t.permissions.changeRole||t.isLocked,icon:"bolt"},on:{click:function(e){return t.action("role")}}},[t._v(t._s(t.$t("role"))+": "+t._s(t.user.role.title))]),n("k-button",{attrs:{disabled:!t.permissions.changeLanguage||t.isLocked,icon:"globe"},on:{click:function(e){return t.action("language")}}},[t._v(t._s(t.$t("language"))+": "+t._s(t.user.language))])],1)],2)],1),n("k-view",[n("k-header",{attrs:{editable:t.permissions.changeName&&!t.isLocked,tabs:t.tabs,tab:t.tab},on:{edit:function(e){return t.action("rename")}}},[t.user.name&&0!==t.user.name.length?[t._v(t._s(t.user.name))]:n("span",{staticClass:"k-user-name-placeholder"},[t._v(t._s(t.$t("name"))+" …")]),n("k-button-group",{attrs:{slot:"left"},slot:"left"},[n("k-dropdown",[n("k-button",{attrs:{disabled:t.isLocked,icon:"cog"},on:{click:function(e){return t.$refs.settings.toggle()}}},[t._v("\n "+t._s(t.$t("settings"))+"\n ")]),n("k-dropdown-content",{ref:"settings",attrs:{options:t.options},on:{action:t.action}})],1),n("k-languages-dropdown")],1),t.user.id&&"User"===t.$route.name?n("k-prev-next",{attrs:{slot:"right",prev:t.prev,next:t.next},slot:"right"}):t._e()],2),t.user&&t.tabs.length?n("k-tabs",{key:t.tabsKey,ref:"tabs",attrs:{parent:"users/"+t.user.id,blueprint:t.user.blueprint.name,tabs:t.tabs},on:{tab:function(e){t.tab=e}}}):t.ready?n("k-box",{attrs:{text:t.$t("user.blueprint",{role:t.user.role.name}),theme:"info"}}):t._e(),n("k-user-email-dialog",{ref:"email",on:{success:t.fetch}}),n("k-user-language-dialog",{ref:"language",on:{success:t.fetch}}),n("k-user-password-dialog",{ref:"password"}),n("k-user-remove-dialog",{ref:"remove"}),n("k-user-rename-dialog",{ref:"rename",on:{success:t.fetch}}),n("k-user-role-dialog",{ref:"role",on:{success:t.fetch}}),n("k-upload",{ref:"upload",attrs:{url:t.uploadApi,multiple:!1,accept:"image/*"},on:{success:t.uploadedAvatar}})],1)],1):t._e()},gm=[],vm={mixins:[yh],props:{id:{type:String,required:!0}},data:function(){return{tab:null,tabs:[],ready:!1,user:{role:{name:null},name:null,language:null,prev:null,next:null},permissions:{changeEmail:!0,changeName:!0,changeLanguage:!0,changeRole:!0},issue:null,avatar:null,options:null}},computed:{language:function(){return this.$store.state.languages.current},next:function(){if(this.user.next)return{link:this.$api.users.link(this.user.next.id),tooltip:this.user.next.name}},prev:function(){if(this.user.prev)return{link:this.$api.users.link(this.user.prev.id),tooltip:this.user.prev.name}},tabsKey:function(){return"user-"+this.user.id+"-tabs"},uploadApi:function(){return g.api+"/users/"+this.user.id+"/avatar"}},watch:{language:function(){this.fetch()},id:function(){this.fetch()}},methods:{action:function(t){var e=this;switch(t){case"email":this.$refs.email.open(this.user.id);break;case"language":this.$refs.language.open(this.user.id);break;case"password":this.$refs.password.open(this.user.id);break;case"picture.delete":this.$api.users.deleteAvatar(this.id).then(function(){e.$store.dispatch("notification/success",":)"),e.avatar=null});break;case"remove":this.$refs.remove.open(this.user.id);break;case"rename":this.$refs.rename.open(this.user.id);break;case"role":this.$refs.role.open(this.user.id);break;default:this.$store.dispatch("notification/error","Not yet implemented")}},fetch:function(){var t=this;this.$api.users.get(this.id,{view:"panel"}).then(function(e){t.user=e,t.tabs=e.blueprint.tabs,t.ready=!0,t.permissions=e.options,t.options=function(e){t.$api.users.options(t.user.id).then(function(t){e(t)})},e.avatar?t.avatar=e.avatar.url:t.avatar=null,"User"===t.$route.name?t.$store.dispatch("breadcrumb",t.$api.users.breadcrumb(e)):t.$store.dispatch("breadcrumb",[]),t.$store.dispatch("title",t.user.name||t.user.email),t.$store.dispatch("form/create",{id:"users/"+e.id,api:t.$api.users.link(e.id),content:e.content})}).catch(function(e){t.issue=e})},uploadedAvatar:function(){this.$store.dispatch("notification/success",":)"),this.fetch()}}},bm=vm,km=(n("bd96"),Object(c["a"])(bm,mm,gm,!1,null,null,null)),$m=km.exports;C["a"].component("k-dialog",A),C["a"].component("k-error-dialog",R),C["a"].component("k-file-rename-dialog",ut),C["a"].component("k-file-remove-dialog",V),C["a"].component("k-files-dialog",$t),C["a"].component("k-language-create-dialog",Ct),C["a"].component("k-language-remove-dialog",It),C["a"].component("k-language-update-dialog",Mt),C["a"].component("k-page-create-dialog",Kt),C["a"].component("k-page-duplicate-dialog",Zt),C["a"].component("k-page-rename-dialog",ue),C["a"].component("k-page-remove-dialog",ie),C["a"].component("k-page-status-dialog",me),C["a"].component("k-page-template-dialog",_e),C["a"].component("k-page-url-dialog",Se),C["a"].component("k-pages-dialog",qe),C["a"].component("k-site-rename-dialog",De),C["a"].component("k-user-create-dialog",Ue),C["a"].component("k-user-email-dialog",Ge),C["a"].component("k-user-language-dialog",en),C["a"].component("k-user-password-dialog",ln),C["a"].component("k-user-remove-dialog",hn),C["a"].component("k-user-rename-dialog",$n),C["a"].component("k-user-role-dialog",Cn),C["a"].component("k-users-dialog",In),C["a"].component("k-calendar",Yn),C["a"].component("k-counter",Qn),C["a"].component("k-autocomplete",Pn),C["a"].component("k-form",ai),C["a"].component("k-form-buttons",pi),C["a"].component("k-form-indicator",$i),C["a"].component("k-field",Ci),C["a"].component("k-fieldset",Ii),C["a"].component("k-input",Pi),C["a"].component("k-upload",Yi),C["a"].component("k-checkbox-input",ts),C["a"].component("k-checkboxes-input",os),C["a"].component("k-date-input",hs),C["a"].component("k-datetime-input",$s),C["a"].component("k-email-input",Ts),C["a"].component("k-multiselect-input",Bs),C["a"].component("k-number-input",Fs),C["a"].component("k-password-input",Vs),C["a"].component("k-radio-input",Xs),C["a"].component("k-range-input",sa),C["a"].component("k-select-input",ca),C["a"].component("k-tags-input",ga),C["a"].component("k-tel-input",$a),C["a"].component("k-text-input",Cs),C["a"].component("k-textarea-input",Ea),C["a"].component("k-time-input",Pa),C["a"].component("k-toggle-input",Ha),C["a"].component("k-url-input",Wa),C["a"].component("k-checkboxes-field",to),C["a"].component("k-date-field",oo),C["a"].component("k-email-field",fo),C["a"].component("k-files-field",$o),C["a"].component("k-headline-field",Co),C["a"].component("k-info-field",Io),C["a"].component("k-line-field",Do),C["a"].component("k-multiselect-field",Uo),C["a"].component("k-number-field",Go),C["a"].component("k-pages-field",er),C["a"].component("k-password-field",rr),C["a"].component("k-radio-field",fr),C["a"].component("k-range-field",kr),C["a"].component("k-select-field",Or),C["a"].component("k-structure-field",zr),C["a"].component("k-tags-field",Yr),C["a"].component("k-text-field",al),C["a"].component("k-textarea-field",dl),C["a"].component("k-tel-field",Qr),C["a"].component("k-time-field",vl),C["a"].component("k-toggle-field",xl),C["a"].component("k-url-field",jl),C["a"].component("k-users-field",Nl),C["a"].component("k-toolbar",Fl),C["a"].component("k-toolbar-email-dialog",Wl),C["a"].component("k-toolbar-link-dialog",tu),C["a"].component("k-email-field-preview",gu),C["a"].component("k-files-field-preview",ou),C["a"].component("k-pages-field-preview",yu),C["a"].component("k-url-field-preview",pu),C["a"].component("k-users-field-preview",Eu),C["a"].component("k-bar",qu),C["a"].component("k-box",Mu),C["a"].component("k-card",Vu),C["a"].component("k-cards",Xu),C["a"].component("k-collection",sc),C["a"].component("k-column",cc),C["a"].component("k-dropzone",gc),C["a"].component("k-empty",yc),C["a"].component("k-file-preview",Ec),C["a"].component("k-grid",Ac),C["a"].component("k-header",Rc),C["a"].component("k-list",Vc),C["a"].component("k-list-item",Xc),C["a"].component("k-tabs",sd),C["a"].component("k-view",cd),C["a"].component("k-draggable",bd),C["a"].component("k-error-boundary",yd),C["a"].component("k-headline",Ed),C["a"].component("k-icon",Ad),C["a"].component("k-image",Rd),C["a"].component("k-progress",Vd),C["a"].component("k-sort-handle",Zd),C["a"].component("k-text",ip),C["a"].component("k-button",up),C["a"].component("k-button-group",hp),C["a"].component("k-dropdown",kp),C["a"].component("k-dropdown-content",Cp),C["a"].component("k-dropdown-item",Ip),C["a"].component("k-languages-dropdown",Hp),C["a"].component("k-link",Pp),C["a"].component("k-pagination",Jp),C["a"].component("k-prev-next",nf),C["a"].component("k-search",cf),C["a"].component("k-tag",gf),C["a"].component("k-topbar",xf),C["a"].component("k-sections",jf),C["a"].component("k-info-section",Bf),C["a"].component("k-pages-section",Uf),C["a"].component("k-files-section",Gf),C["a"].component("k-fields-section",eh),C["a"].component("k-browser-view",lh),C["a"].component("k-custom-view",hh),C["a"].component("k-error-view",kh),C["a"].component("k-file-view",Ch),C["a"].component("k-installation-view",Ih),C["a"].component("k-login-view",Hh),C["a"].component("k-page-view",Jh),C["a"].component("k-settings-view",nm),C["a"].component("k-site-view",lm),C["a"].component("k-users-view",hm),C["a"].component("k-user-view",$m);var _m={user:function(){return Km.get("auth")},login:function(t){var e={long:t.remember||!1,email:t.email,password:t.password};return Km.post("auth/login",e).then(function(t){return t.user})},logout:function(){return Km.post("auth/logout")}},ym={get:function(t,e,n){return Km.get(this.url(t,e),n).then(function(t){return!0===mt()(t.content)&&(t.content={}),t})},update:function(t,e,n){return Km.patch(this.url(t,e),n)},rename:function(t,e,n){return Km.patch(this.url(t,e,"name"),{name:n})},url:function(t,e,n){var i=t+"/files/"+e;return n&&(i+="/"+n),i},link:function(t,e,n){return"/"+this.url(t,e,n)},delete:function(t,e){return Km.delete(this.url(t,e))},options:function(t,e,n){return Km.get(this.url(t,e),{select:"options"}).then(function(t){var e=t.options,i=[];return"list"===n&&i.push({icon:"open",text:C["a"].i18n.translate("open"),click:"download"}),i.push({icon:"title",text:C["a"].i18n.translate("rename"),click:"rename",disabled:!e.changeName}),i.push({icon:"upload",text:C["a"].i18n.translate("replace"),click:"replace",disabled:!e.replace}),i.push({icon:"trash",text:C["a"].i18n.translate("delete"),click:"remove",disabled:!e.delete}),i})},breadcrumb:function(t,e){var n=null,i=[];switch(e){case"UserFile":i.push({label:t.parent.username,link:Km.users.link(t.parent.id)}),n="users/"+t.parent.id;break;case"SiteFile":n="site";break;case"PageFile":i=t.parents.map(function(t){return{label:t.title,link:Km.pages.link(t.id)}}),n=Km.pages.url(t.parent.id);break}return i.push({label:t.filename,link:this.link(n,t.filename)}),i}},xm={create:function(t,e){return null===t||"/"===t?Km.post("site/children",e):Km.post(this.url(t,"children"),e)},duplicate:function(t,e,n){return Km.post(this.url(t,"duplicate"),{slug:e,children:n.children||!1,files:n.files||!1})},url:function(t,e){var n=null===t?"pages":"pages/"+t.replace(/\//g,"+");return e&&(n+="/"+e),n},link:function(t){return"/"+this.url(t)},get:function(t,e){return Km.get(this.url(t),e).then(function(t){return!0===mt()(t.content)&&(t.content={}),t})},options:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"view";return Km.get(this.url(t),{select:"options"}).then(function(t){var n=t.options,i=[];return"list"===e&&(i.push({click:"preview",icon:"open",text:C["a"].i18n.translate("open"),disabled:!1===n.preview}),i.push("-")),i.push({click:"rename",icon:"title",text:C["a"].i18n.translate("rename"),disabled:!n.changeTitle}),i.push({click:"duplicate",icon:"copy",text:C["a"].i18n.translate("duplicate"),disabled:!n.duplicate}),i.push("-"),i.push({click:"url",icon:"url",text:C["a"].i18n.translate("page.changeSlug"),disabled:!n.changeSlug}),i.push({click:"status",icon:"preview",text:C["a"].i18n.translate("page.changeStatus"),disabled:!n.changeStatus}),i.push({click:"template",icon:"template",text:C["a"].i18n.translate("page.changeTemplate"),disabled:!n.changeTemplate}),i.push("-"),i.push({click:"remove",icon:"trash",text:C["a"].i18n.translate("delete"),disabled:!n.delete}),i})},preview:function(t){return this.get(t,{select:"previewUrl"}).then(function(t){return t.previewUrl})},update:function(t,e){return Km.patch(this.url(t),e)},children:function(t,e){return Km.post(this.url(t,"children/search"),e)},files:function(t,e){return Km.post(this.url(t,"files/search"),e)},delete:function(t,e){return Km.delete(this.url(t),e)},slug:function(t,e){return Km.patch(this.url(t,"slug"),{slug:e})},title:function(t,e){return Km.patch(this.url(t,"title"),{title:e})},template:function(t,e){return Km.patch(this.url(t,"template"),{template:e})},search:function(t,e){return t?Km.post("pages/"+t.replace("/","+")+"/children/search?select=id,title,hasChildren",e):Km.post("site/children/search?select=id,title,hasChildren",e)},status:function(t,e,n){return Km.patch(this.url(t,"status"),{status:e,position:n})},breadcrumb:function(t){var e=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=t.parents.map(function(t){return{label:t.title,link:e.link(t.id)}});return!0===n&&i.push({label:t.title,link:this.link(t.id)}),i}},wm=n("2f62"),Om=n("768b"),Cm={namespaced:!0,state:{models:{},current:null,isDisabled:!1,lock:null,unlock:null},getters:{current:function(t){return t.current},exists:function(t){return function(e){return t.models.hasOwnProperty(e)}},hasChanges:function(t,e){return function(t){return J()(e.model(t).changes).length>0}},id:function(t,e,n){return function(t){return n.languages.current?t+"/"+n.languages.current.code:t}},isCurrent:function(t){return function(e){return t.current===e}},isDisabled:function(t){return!0===t.isDisabled},lock:function(t){return t.lock},model:function(t,e){return function(n){return e.exists(n)?t.models[n]:{originals:{},values:{},changes:{},api:null}}},originals:function(t,e){return function(t){return qr(e.model(t).originals)}},values:function(t,e){return function(n){return n=n||t.current,qr(e.model(n).values)}},unlock:function(t){return t.unlock}},mutations:{CREATE:function(t,e){C["a"].set(t.models,e.id,{api:e.api,originals:qr(e.content),values:qr(e.content),changes:{}})},CURRENT:function(t,e){t.current=e},DELETE_CHANGES:function(t,e){C["a"].set(t.models[e],"changes",{}),C["a"].set(t.models[e],"values",qr(t.models[e].originals)),localStorage.removeItem("kirby$form$"+e)},IS_DISABLED:function(t,e){t.isDisabled=e},LOCK:function(t,e){t.lock=e},MOVE:function(t,e){var n=qr(t.models[e.old]);C["a"].delete(t.models,e.old),C["a"].set(t.models,e.new,n);var i=localStorage.getItem("kirby$form$"+e.old);localStorage.removeItem("kirby$form$"+e.old),localStorage.setItem("kirby$form$"+e.new,i)},REMOVE:function(t,e){C["a"].delete(t.models,e),localStorage.removeItem("kirby$form$"+e)},SET_ORIGINALS:function(t,e){var n=Object(Om["a"])(e,2),i=n[0],s=n[1];t.models[i].originals=qr(s)},SET_VALUES:function(t,e){var n=Object(Om["a"])(e,2),i=n[0],s=n[1];t.models[i].values=qr(s)},UNLOCK:function(t,e){t.unlock=e},UPDATE:function(t,e){var n=Object(Om["a"])(e,3),i=n[0],s=n[1],a=n[2];if(!t.models[i])return!1;a=qr(a),C["a"].set(t.models[i].values,s,a);var o=Ir()(t.models[i].originals[s]),r=Ir()(a);o===r?C["a"].delete(t.models[i].changes,s):C["a"].set(t.models[i].changes,s,!0),localStorage.setItem("kirby$form$"+i,Ir()({api:t.models[i].api,originals:t.models[i].originals,values:t.models[i].values,changes:t.models[i].changes}))}},actions:{create:function(t,e){t.rootState.languages.current&&t.rootState.languages.current.code&&(e.id=t.getters.id(e.id)),(e.id.startsWith("pages/")||e.id.startsWith("site"))&&delete e.content.title,t.commit("CREATE",e),t.commit("CURRENT",e.id),t.dispatch("load",e)},load:function(t,e){var n=localStorage.getItem("kirby$form$"+e.id);if(n){var i=JSON.parse(n);Km.get(e.api+"/unlock").then(function(n){!1!==n.supported&&!1!==n.unlocked?t.commit("UNLOCK",i.values):J()(i.values).forEach(function(n){var s=i.values[n];t.commit("UPDATE",[e.id,n,s])})})}},disable:function(t){t.commit("IS_DISABLED",!0)},enable:function(t){t.commit("IS_DISABLED",!1)},lock:function(t,e){t.commit("LOCK",e)},move:function(t,e){t.commit("MOVE",e)},remove:function(t,e){t.commit("REMOVE",e)},reset:function(t){t.commit("CURRENT",null),t.commit("LOCK",null),t.commit("UNLOCK",null)},revert:function(t,e){var n=t.getters.model(e);return Km.get(n.api,{select:"content"}).then(function(n){(e.startsWith("pages/")||e.startsWith("site"))&&delete n.content.title,t.commit("SET_ORIGINALS",[e,n.content]),t.commit("SET_VALUES",[e,n.content]),t.commit("DELETE_CHANGES",e)})},save:function(t,e){e=e||t.state.current;var n=t.getters.model(e);return(!t.getters.isCurrent(e)||!t.state.isDisabled)&&(t.dispatch("disable"),Km.patch(n.api,n.values).then(function(){t.dispatch("revert",e),t.dispatch("enable")}).catch(function(e){throw t.dispatch("enable"),e}))},unlock:function(t,e){t.commit("UNLOCK",e)},update:function(t,e){var n=Object(Om["a"])(e,3),i=n[0],s=n[1],a=n[2];t.commit("UPDATE",[i,s,a])}}},Sm={namespaced:!0,state:{instance:null,clock:0,step:5,beats:[]},mutations:{ADD:function(t,e){t.beats.push(e)},CLEAR:function(t){clearInterval(t.instance),t.clock=0},CLOCK:function(t){t.clock+=t.step},INITIALIZE:function(t,e){t.instance=e},REMOVE:function(t,e){var n=t.beats.map(function(t){return t.handler}).indexOf(e);-1!==n&&C["a"].delete(t.beats,n)}},actions:{add:function(t,e){e={handler:e[0]||e,interval:e[1]||t.state.step},e.handler(),t.commit("ADD",e),1===t.state.beats.length&&t.dispatch("run")},remove:function(t,e){t.commit("REMOVE",e),t.state.beats.length<1&&t.commit("CLEAR")},run:function(t){t.commit("CLEAR"),t.commit("INITIALIZE",setInterval(function(){t.commit("CLOCK"),t.state.beats.forEach(function(e){t.state.clock%e.interval===0&&e.handler()})},1e3*t.state.step))}}},Em={namespaced:!0,state:{all:[],current:null,default:null},mutations:{SET_ALL:function(t,e){t.all=e.map(function(t){return{code:t.code,name:t.name,default:t.default,direction:t.direction,rules:t.rules}})},SET_CURRENT:function(t,e){t.current=e,e&&e.code&&localStorage.setItem("kirby$language",e.code)},SET_DEFAULT:function(t,e){t.default=e}},actions:{current:function(t,e){t.commit("SET_CURRENT",e)},install:function(t,e){var n=e.filter(function(t){return t.default})[0];t.commit("SET_ALL",e),t.commit("SET_DEFAULT",n);var i=localStorage.getItem("kirby$language");if(i){var s=e.filter(function(t){return t.code===i})[0];if(s)return void t.dispatch("current",s)}t.dispatch("current",n||e[0]||null)},load:function(t){return Km.get("languages").then(function(e){t.dispatch("install",e.data)})}}},jm={timer:null,namespaced:!0,state:{type:null,message:null,details:null,timeout:null},mutations:{SET:function(t,e){t.type=e.type,t.message=e.message,t.details=e.details,t.timeout=e.timeout},UNSET:function(t){t.type=null,t.message=null,t.details=null,t.timeout=null}},actions:{close:function(t){clearTimeout(this.timer),t.commit("UNSET")},open:function(t,e){t.dispatch("close"),t.commit("SET",e),e.timeout&&(this.timer=setTimeout(function(){t.dispatch("close")},e.timeout))},success:function(t,e){"string"===typeof e&&(e={message:e}),t.dispatch("open",Object(f["a"])({type:"success",timeout:4e3},e))},error:function(t,e){"string"===typeof e&&(e={message:e}),t.dispatch("open",Object(f["a"])({type:"error"},e))}}},Tm={namespaced:!0,state:{info:{title:null}},mutations:{SET_INFO:function(t,e){t.info=e},SET_LICENSE:function(t,e){t.info.license=e},SET_TITLE:function(t,e){t.info.title=e}},actions:{title:function(t,e){t.commit("SET_TITLE",e)},register:function(t,e){t.commit("SET_LICENSE",e)},load:function(t,e){return!e&&t.state.info.isReady&&t.rootState.user.current?new gi.a(function(e){e(t.state.info)}):Km.system.info({view:"panel"}).then(function(e){return t.commit("SET_INFO",Object(f["a"])({isReady:e.isInstalled&&e.isOk},e)),e.languages&&t.dispatch("languages/install",e.languages,{root:!0}),t.dispatch("translation/install",e.translation,{root:!0}),t.dispatch("translation/activate",e.translation.id,{root:!0}),e.user&&t.dispatch("user/current",e.user,{root:!0}),t.state.info}).catch(function(e){t.commit("SET_INFO",{isBroken:!0,error:e.message})})}}},Lm={namespaced:!0,state:{current:null,installed:[]},mutations:{SET_CURRENT:function(t,e){t.current=e},INSTALL:function(t,e){t.installed[e.id]=e}},actions:{load:function(t,e){return Km.translations.get(e)},install:function(t,e){t.commit("INSTALL",e),C["a"].i18n.add(e.id,e.data)},activate:function(t,e){var n=t.state.installed[e];n?(C["a"].i18n.set(e),t.commit("SET_CURRENT",e),document.dir=n.direction,document.documentElement.lang=e):t.dispatch("load",e).then(function(n){t.dispatch("install",n),t.dispatch("activate",e)})}}},Im=n("8c4f"),qm=function(t,e,n){Pm.dispatch("system/load").then(function(){var e=Pm.state.user.current;if(!e)return Pm.dispatch("user/visit",t.path),Pm.dispatch("user/logout"),!1;var i=e.permissions.access;return!1===i.panel?(window.location.href=g.site,!1):!1===i[t.meta.view]?(Pm.dispatch("notification/error",{message:C["a"].i18n.translate("error.access.view")}),n("/")):void n()})},Am=[{path:"/",name:"Home",redirect:"/site"},{path:"/browser",name:"Browser",component:C["a"].component("k-browser-view"),meta:{outside:!0}},{path:"/login",component:C["a"].component("k-login-view"),meta:{outside:!0}},{path:"/logout",beforeEnter:function(){J()(localStorage).forEach(function(t){t.startsWith("kirby$form")&&localStorage.removeItem(t)}),Pm.dispatch("user/logout")},meta:{outside:!0}},{path:"/installation",component:C["a"].component("k-installation-view"),meta:{outside:!0}},{path:"/site",name:"Site",meta:{view:"site"},component:C["a"].component("k-site-view"),beforeEnter:qm},{path:"/site/files/:filename",name:"SiteFile",meta:{view:"site"},component:C["a"].component("k-file-view"),beforeEnter:qm,props:function(t){return{path:"site",filename:t.params.filename}}},{path:"/pages/:path/files/:filename",name:"PageFile",meta:{view:"site"},component:C["a"].component("k-file-view"),beforeEnter:qm,props:function(t){return{path:"pages/"+t.params.path,filename:t.params.filename}}},{path:"/users/:path/files/:filename",name:"UserFile",meta:{view:"users"},component:C["a"].component("k-file-view"),beforeEnter:qm,props:function(t){return{path:"users/"+t.params.path,filename:t.params.filename}}},{path:"/pages/:path",name:"Page",meta:{view:"site"},component:C["a"].component("k-page-view"),beforeEnter:qm,props:function(t){return{path:t.params.path}}},{path:"/settings",name:"Settings",meta:{view:"settings"},component:C["a"].component("k-settings-view"),beforeEnter:qm},{path:"/users/role/:role",name:"UsersByRole",meta:{view:"users"},component:C["a"].component("k-users-view"),beforeEnter:qm,props:function(t){return{role:t.params.role}}},{path:"/users",name:"Users",meta:{view:"users"},beforeEnter:qm,component:C["a"].component("k-users-view")},{path:"/users/:id",name:"User",meta:{view:"users"},component:C["a"].component("k-user-view"),beforeEnter:qm,props:function(t){return{id:t.params.id}}},{path:"/account",name:"Account",meta:{view:"account"},component:C["a"].component("k-user-view"),beforeEnter:qm,props:function(){return{id:Pm.state.user.current?Pm.state.user.current.id:null}}},{path:"/plugins/:id",name:"Plugin",meta:{view:"plugin"},props:function(t){return{plugin:t.params.id}},beforeEnter:qm,component:C["a"].component("k-custom-view")},{path:"*",name:"NotFound",beforeEnter:function(t,e,n){n("/")}}];C["a"].use(Im["a"]);var Nm=new Im["a"]({mode:"history",routes:Am,url:"/"===g.url?"":g.url});Nm.beforeEach(function(t,e,n){"Browser"!==t.name&&!1===sh.all()&&n("/browser"),Pm.dispatch("view",t.meta.view),t.path!==e.path&&Pm.dispatch("form/reset"),t.meta.outside||Pm.dispatch("user/visit",t.path),n()});var Bm=Nm,Dm={namespaced:!0,state:{current:null,path:null},mutations:{SET_CURRENT:function(t,e){t.current=e,e&&e.permissions?(C["a"].prototype.$user=e,C["a"].prototype.$permissions=e.permissions):(C["a"].prototype.$user=null,C["a"].prototype.$permissions=null)},SET_PATH:function(t,e){t.path=e}},actions:{current:function(t,e){t.commit("SET_CURRENT",e)},language:function(t,e){t.dispatch("translation/activate",e,{root:!0}),t.commit("SET_CURRENT",Object(f["a"])({language:e},t.state.current))},load:function(t){return Km.auth.user().then(function(e){return t.commit("SET_CURRENT",e),e})},login:function(t,e){return Km.auth.login(e).then(function(e){return t.commit("SET_CURRENT",e),t.dispatch("translation/activate",e.language,{root:!0}),Bm.push(t.state.path||"/"),e})},logout:function(t,e){t.commit("SET_CURRENT",null),e?window.location.href=(window.panel.url||"")+"/login":Km.auth.logout().then(function(){Bm.push("/login")}).catch(function(){Bm.push("/login")})},visit:function(t,e){t.commit("SET_PATH",e)}}};C["a"].use(wm["a"]);var Pm=new wm["a"].Store({strict:!1,state:{breadcrumb:[],dialog:null,drag:null,isLoading:!1,search:!1,title:null,view:null},mutations:{SET_BREADCRUMB:function(t,e){t.breadcrumb=e},SET_DIALOG:function(t,e){t.dialog=e},SET_DRAG:function(t,e){t.drag=e},SET_SEARCH:function(t,e){!0===e&&(e={}),t.search=e},SET_TITLE:function(t,e){t.title=e},SET_VIEW:function(t,e){t.view=e},START_LOADING:function(t){t.isLoading=!0},STOP_LOADING:function(t){t.isLoading=!1}},actions:{breadcrumb:function(t,e){t.commit("SET_BREADCRUMB",e)},dialog:function(t,e){t.commit("SET_DIALOG",e)},drag:function(t,e){t.commit("SET_DRAG",e)},isLoading:function(t,e){t.commit(!0===e?"START_LOADING":"STOP_LOADING")},search:function(t,e){t.commit("SET_SEARCH",e)},title:function(t,e){t.commit("SET_TITLE",e),document.title=e||"",t.state.system.info.title&&(document.title+=null!==e?" | "+t.state.system.info.title:t.state.system.info.title)},view:function(t,e){t.commit("SET_VIEW",e)}},modules:{form:Cm,heartbeat:Sm,languages:Em,notification:jm,system:Tm,translation:Lm,user:Dm}}),Mm={running:0,request:function(t,e){var n=this,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];e=Fi()(e||{},{credentials:"same-origin",cache:"no-store",headers:Object(f["a"])({"x-requested-with":"xmlhttprequest","content-type":"application/json"},e.headers)}),Pm.state.languages.current&&(e.headers["x-language"]=Pm.state.languages.current.code),e.headers["x-csrf"]=window.panel.csrf;var s=t+"/"+Ir()(e);return Km.config.onStart(s,i),this.running++,fetch(Km.config.endpoint+"/"+t,e).then(function(t){return t.text()}).then(function(t){try{return JSON.parse(t)}catch(e){throw new Error("The JSON response from the API could not be parsed. Please check your API connection.")}}).then(function(t){if(t.status&&"error"===t.status)throw t;var e=t;return t.data&&t.type&&"model"===t.type&&(e=t.data),n.running--,Km.config.onComplete(s),Km.config.onSuccess(t),e}).catch(function(t){throw n.running--,Km.config.onComplete(s),Km.config.onError(t),t})},get:function(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return e&&(t+="?"+J()(e).map(function(t){var n=e[t];return void 0!==n&&null!==n?t+"="+n:null}).filter(function(t){return null!==t}).join("&")),this.request(t,Fi()(n||{},{method:"GET"}),i)},post:function(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"POST",s=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return this.request(t,Fi()(n||{},{method:i,body:Ir()(e)}),s)},patch:function(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return this.post(t,e,n,"PATCH",i)},delete:function(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return this.post(t,e,n,"DELETE",i)}},Rm={list:function(){return Km.get("roles")},get:function(t){return Km.get("roles/"+t)},options:function(){return this.list().then(function(t){return t.data.map(function(t){return{info:t.description||"(".concat(C["a"].i18n.translate("role.description.placeholder"),")"),text:t.title,value:t.name}})})}},zm={info:function(t){return Km.get("system",t)},install:function(t){return Km.post("system/install",t).then(function(t){return t.user})},register:function(t){return Km.post("system/register",t)}},Fm={get:function(t){return Km.get("site",t)},update:function(t){return Km.post("site",t)},title:function(t){return Km.patch("site/title",{title:t})},options:function(){return Km.get("site",{select:"options"}).then(function(t){var e=t.options,n=[];return n.push({click:"rename",icon:"title",text:C["a"].i18n.translate("rename"),disabled:!e.changeTitle}),n})},children:function(t){return Km.post("site/children/search",t)},blueprint:function(){return Km.get("site/blueprint")},blueprints:function(){return Km.get("site/blueprints")}},Um={list:function(){return Km.get("translations")},get:function(t){return Km.get("translations/"+t)},options:function(){var t=[];return this.list().then(function(e){return t=e.data.map(function(t){return{value:t.id,text:t.name}}),t})}},Hm={create:function(t){return Km.post(this.url(),t)},list:function(t){return Km.post(this.url(null,"search"),t)},get:function(t,e){return Km.get(this.url(t),e)},update:function(t,e){return Km.patch(this.url(t),e)},delete:function(t){return Km.delete(this.url(t))},changeEmail:function(t,e){return Km.patch(this.url(t,"email"),{email:e})},changeLanguage:function(t,e){return Km.patch(this.url(t,"language"),{language:e})},changeName:function(t,e){return Km.patch(this.url(t,"name"),{name:e})},changePassword:function(t,e){return Km.patch(this.url(t,"password"),{password:e})},changeRole:function(t,e){return Km.patch(this.url(t,"role"),{role:e})},deleteAvatar:function(t){return Km.delete(this.url(t,"avatar"))},blueprint:function(t){return Km.get(this.url(t,"blueprint"))},breadcrumb:function(t){return[{link:"/users/"+t.id,label:t.username}]},options:function(t){return Km.get(this.url(t),{select:"options"}).then(function(t){var e=t.options,n=[];return n.push({click:"rename",icon:"title",text:C["a"].i18n.translate("user.changeName"),disabled:!e.changeName}),n.push({click:"email",icon:"email",text:C["a"].i18n.translate("user.changeEmail"),disabled:!e.changeEmail}),n.push({click:"role",icon:"bolt",text:C["a"].i18n.translate("user.changeRole"),disabled:!e.changeRole}),n.push({click:"password",icon:"key",text:C["a"].i18n.translate("user.changePassword"),disabled:!e.changePassword}),n.push({click:"language",icon:"globe",text:C["a"].i18n.translate("user.changeLanguage"),disabled:!e.changeLanguage}),n.push({click:"remove",icon:"trash",text:C["a"].i18n.translate("user.delete"),disabled:!e.delete}),n})},url:function(t,e){var n=t?"users/"+t:"users";return e&&(n+="/"+e),n},link:function(t,e){return"/"+this.url(t,e)}},Km=Object(f["a"])({config:{onStart:function(){},onComplete:function(){},onSuccess:function(){},onError:function(t){throw window.console.log(t.message),t}},auth:_m,files:ym,pages:xm,roles:Rm,system:zm,site:Fm,translations:Um,users:Hm},Mm);Km.config.endpoint=g.api,Km.requests=[],Km.config.onStart=function(t,e){!1===e&&Pm.dispatch("isLoading",!0),Km.requests.push(t)},Km.config.onComplete=function(t){Km.requests=Km.requests.filter(function(e){return e!==t}),0===Km.requests.length&&Pm.dispatch("isLoading",!1)},Km.config.onError=function(t){g.debug&&window.console.error(t),403!==t.code||"Unauthenticated"!==t.message&&"access.panel"!==t.key||Pm.dispatch("user/logout",!0)};var Vm=setInterval(Km.auth.user,3e5);Km.config.onSuccess=function(){clearInterval(Vm),Vm=setInterval(Km.auth.user,3e5)},C["a"].prototype.$api=Km,C["a"].config.errorHandler=function(t){g.debug&&window.console.error(t),Pm.dispatch("notification/error",{message:t.message||"An error occurred. Please reload the panel"})},window.panel=window.panel||{},window.panel.error=function(t,e){g.debug&&window.console.error(t+": "+e),Pm.dispatch("error",t+". See the console for more information.")};var Ym=n("f2f3");C["a"].use(Ym["a"].plugin,Pm);var Wm=n("2d1f"),Gm=n.n(Wm),Jm={};for(var Zm in C["a"].options.components)Jm[Zm]=C["a"].options.components[Zm];var Xm=function(t,e){e.template||e.render||e.extends?(e.extends&&"string"===typeof e.extends&&(e.extends=Jm[e.extends],e.template&&(e.render=null)),e.mixins&&(e.mixins=e.mixins.map(function(t){return"string"===typeof t?Jm[t]:t})),Jm[t]&&window.console.warn('Plugin is replacing "'.concat(t,'"')),C["a"].component(t,e)):Pm.dispatch("notification/error",'Neither template or render method provided nor extending a component when loading plugin component "'.concat(t,'". The component has not been registered.'))};Gm()(window.panel.plugins.components).forEach(function(t){var e=Object(Om["a"])(t,2),n=e[0],i=e[1];Xm(n,i)}),Gm()(window.panel.plugins.fields).forEach(function(t){var e=Object(Om["a"])(t,2),n=e[0],i=e[1];Xm(n,i)}),Gm()(window.panel.plugins.sections).forEach(function(t){var e=Object(Om["a"])(t,2),n=e[0],i=e[1];Xm(n,Object(f["a"])({},i,{mixins:[If].concat(i.mixins||[])}))}),Gm()(window.panel.plugins.views).forEach(function(t){var e=Object(Om["a"])(t,2),n=e[0],i=e[1];if(!i.component)return Pm.dispatch("notification/error",'No view component provided when loading view "'.concat(n,'". The view has not been registered.')),void delete window.panel.plugins.views[n];i.link="/plugins/"+n,void 0===i.icon&&(i.icon="page"),void 0===i.menu&&(i.menu=!0),window.panel.plugins.views[n]={link:i.link,icon:i.icon,menu:i.menu},C["a"].component("k-"+n+"-plugin-view",i.component)}),window.panel.plugins.use.forEach(function(t){C["a"].use(t)}),C["a"].use(y),C["a"].use(O),C["a"].use(x),C["a"].use(E.a),C["a"].config.productionTip=!1,C["a"].config.devtools=!0,new C["a"]({router:Bm,store:Pm,created:function(){var t=this;window.panel.app=this,window.panel.plugins.created.forEach(function(e){e(t)})},render:function(t){return t($)}}).$mount("#app")},5714:function(t,e,n){},"580a":function(t,e,n){"use strict";var i=n("61ab"),s=n.n(i);s.a},"589a":function(t,e,n){},"58e5":function(t,e,n){},"5ab5":function(t,e,n){},"5aee":function(t,e,n){"use strict";var i=n("04b2"),s=n.n(i);s.a},"5b23":function(t,e,n){"use strict";var i=n("9798"),s=n.n(i);s.a},"5c0b":function(t,e,n){"use strict";var i=n("5e27"),s=n.n(i);s.a},"5d33":function(t,e,n){"use strict";var i=n("2246"),s=n.n(i);s.a},"5e27":function(t,e,n){},"5f12":function(t,e,n){},6018:function(t,e,n){"use strict";var i=n("e30b"),s=n.n(i);s.a},"61ab":function(t,e,n){},"64e6":function(t,e,n){},"65a9":function(t,e,n){},"696b5":function(t,e,n){"use strict";var i=n("0cdc"),s=n.n(i);s.a},"6a18":function(t,e,n){"use strict";var i=n("de8a"),s=n.n(i);s.a},"6ab3":function(t,e,n){"use strict";var i=n("784e"),s=n.n(i);s.a},"6ab9":function(t,e,n){},"6b7f":function(t,e,n){},"6bcd":function(t,e,n){"use strict";var i=n("9e0a"),s=n.n(i);s.a},"6f7b":function(t,e,n){"use strict";var i=n("5ab5"),s=n.n(i);s.a},7075:function(t,e,n){},"718c":function(t,e,n){"use strict";var i=n("773d"),s=n.n(i);s.a},7568:function(t,e,n){"use strict";var i=n("4150"),s=n.n(i);s.a},"75cd":function(t,e,n){},7737:function(t,e,n){"use strict";var i=n("ca19"),s=n.n(i);s.a},"773d":function(t,e,n){},"778b":function(t,e,n){},7797:function(t,e,n){},"784e":function(t,e,n){},"7a7d":function(t,e,n){"use strict";var i=n("65a9"),s=n.n(i);s.a},"7d2d":function(t,e,n){},"7d5d":function(t,e,n){"use strict";var i=n("6ab9"),s=n.n(i);s.a},"7dc7":function(t,e,n){"use strict";var i=n("eb17"),s=n.n(i);s.a},"7e0c":function(t,e,n){},"7e85":function(t,e,n){"use strict";var i=n("d1c5"),s=n.n(i);s.a},"7f6e":function(t,e,n){"use strict";var i=n("4364"),s=n.n(i);s.a},"862b":function(t,e,n){"use strict";var i=n("589a"),s=n.n(i);s.a},"893d":function(t,e,n){"use strict";var i=n("abb3"),s=n.n(i);s.a},"8ae6":function(t,e,n){},"8c28":function(t,e,n){"use strict";var i=n("3d5b"),s=n.n(i);s.a},"8e4d":function(t,e,n){},"910b":function(t,e,n){},"957b":function(t,e,n){},9749:function(t,e,n){},"977f":function(t,e,n){"use strict";var i=n("b7f5"),s=n.n(i);s.a},9798:function(t,e,n){},9799:function(t,e,n){"use strict";var i=n("4fe0"),s=n.n(i);s.a},9811:function(t,e,n){},"98a1":function(t,e,n){"use strict";var i=n("f0cb"),s=n.n(i);s.a},"9bd5":function(t,e,n){"use strict";var i=n("64e6"),s=n.n(i);s.a},"9df7":function(t,e,n){},"9e0a":function(t,e,n){},"9e26":function(t,e,n){"use strict";var i=n("a440"),s=n.n(i);s.a},a134:function(t,e,n){"use strict";var i=n("4390"),s=n.n(i);s.a},a440:function(t,e,n){},a567:function(t,e,n){"use strict";var i=n("c0b5"),s=n.n(i);s.a},a5f3:function(t,e,n){"use strict";var i=n("43f4"),s=n.n(i);s.a},a66d:function(t,e,n){"use strict";var i=n("2eb5"),s=n.n(i);s.a},abb3:function(t,e,n){},ac27:function(t,e,n){"use strict";var i=n("3c9d"),s=n.n(i);s.a},b0d6:function(t,e,n){"use strict";var i=n("d31d"),s=n.n(i);s.a},b37e:function(t,e,n){},b3c3:function(t,e,n){},b5d2:function(t,e,n){"use strict";var i=n("ed7b"),s=n.n(i);s.a},b746:function(t,e,n){"use strict";var i=n("7e0c"),s=n.n(i);s.a},b7f5:function(t,e,n){},ba8f:function(t,e,n){"use strict";var i=n("9749"),s=n.n(i);s.a},bb41:function(t,e,n){"use strict";var i=n("ceb4"),s=n.n(i);s.a},bd96:function(t,e,n){"use strict";var i=n("d6a4"),s=n.n(i);s.a},bf53:function(t,e,n){"use strict";var i=n("3c80"),s=n.n(i);s.a},c0b5:function(t,e,n){},c119:function(t,e,n){"use strict";var i=n("4b49"),s=n.n(i);s.a},c7c8:function(t,e,n){"use strict";var i=n("1be2"),s=n.n(i);s.a},c857:function(t,e,n){"use strict";var i=n("7d2d"),s=n.n(i);s.a},c9cb:function(t,e,n){"use strict";var i=n("b37e"),s=n.n(i);s.a},ca19:function(t,e,n){},ca3a:function(t,e,n){},cb8f:function(t,e,n){"use strict";var i=n("8e4d"),s=n.n(i);s.a},cca8:function(t,e,n){"use strict";var i=n("18b7"),s=n.n(i);s.a},ceb4:function(t,e,n){},d0c1:function(t,e,n){"use strict";var i=n("9df7"),s=n.n(i);s.a},d0e7:function(t,e,n){},d1c5:function(t,e,n){},d221:function(t,e,n){"use strict";var i=n("6b7f"),s=n.n(i);s.a},d31d:function(t,e,n){},d6a4:function(t,e,n){},d6c1:function(t,e,n){},d6fc:function(t,e,n){"use strict";var i=n("08ec"),s=n.n(i);s.a},d9c4:function(t,e,n){},daa8:function(t,e,n){"use strict";var i=n("e60b"),s=n.n(i);s.a},db92:function(t,e,n){},ddfd:function(t,e,n){"use strict";var i=n("4dc8"),s=n.n(i);s.a},de8a:function(t,e,n){},df0d:function(t,e,n){"use strict";var i=n("3ab9"),s=n.n(i);s.a},e30b:function(t,e,n){},e60b:function(t,e,n){},e697:function(t,e,n){},eb17:function(t,e,n){},ec72:function(t,e,n){},ed7b:function(t,e,n){},ee15:function(t,e,n){"use strict";var i=n("fd81"),s=n.n(i);s.a},f0cb:function(t,e,n){},f56d:function(t,e,n){"use strict";var i=n("75cd"),s=n.n(i);s.a},f5e3:function(t,e,n){},f8a7:function(t,e,n){"use strict";var i=n("db92"),s=n.n(i);s.a},f95f:function(t,e,n){"use strict";var i=n("5f12"),s=n.n(i);s.a},fa6a:function(t,e,n){"use strict";var i=n("778b"),s=n.n(i);s.a},fb1a:function(t,e,n){},fc0f:function(t,e,n){"use strict";var i=n("424a"),s=n.n(i);s.a},fd81:function(t,e,n){},ff6d:function(t,e,n){},fffc:function(t,e,n){}});
\ No newline at end of file
+(function(t){function e(e){for(var i,o,r=e[0],l=e[1],u=e[2],d=0,p=[];d1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",i="-";return n="a-z0-9"+n,t=t.trim().toLowerCase(),e.forEach(function(e){e&&nt()(e).forEach(function(n){var i="/"!==n.substr(0,1),s=n.substring(1,n.length-1),a=i?n:s;t=t.replace(new RegExp(RegExp.escape(a),"g"),e[n])})}),t=t.replace("/[^\t\n\r -~]/",""),t=t.replace(new RegExp("[^"+n+"]","ig"),i),t=t.replace(new RegExp("["+RegExp.escape(i)+"]{2,}","g"),i),t=t.replace("/",i),t=t.replace(new RegExp("^[^"+n+"]+","g"),""),t=t.replace(new RegExp("[^"+n+"]+$","g"),""),t},pt={mixins:[h],data:function(){return{parent:null,file:{id:null,name:null,filename:null,extension:null}}},computed:{fields:function(){return{name:{label:this.$t("name"),type:"text",required:!0,icon:"title",after:"."+this.file.extension,preselect:!0}}},slugs:function(){return this.$store.state.languages.default?this.$store.state.languages.default.rules:this.system.slugs},system:function(){return this.$store.state.system.info}},methods:{open:function(t,e){var n=this;this.$api.files.get(t,e,{select:["id","filename","name","extension"]}).then(function(e){n.file=e,n.parent=t,n.$refs.dialog.open()}).catch(function(t){n.$store.dispatch("notification/error",t)})},sluggify:function(t){return dt(t,[this.slugs,this.system.ascii],".")},submit:function(){var t=this;this.file.name=this.file.name.trim(),0!==this.file.name.length?this.$api.files.rename(this.parent,this.file.filename,this.file.name).then(function(e){t.$store.dispatch("form/move",{old:t.$store.getters["form/id"](t.file.id),new:t.$store.getters["form/id"](e.id)}),t.$store.dispatch("notification/success",":)"),t.$emit("success",e),t.$events.$emit("file.changeName",e),t.$refs.dialog.close()}).catch(function(e){t.$refs.dialog.error(e.message)}):this.$refs.dialog.error(this.$t("error.file.changeName.empty"))}}},ft=pt,ht=Object(u["a"])(ft,Q,tt,!1,null,null,null),mt=ht.exports,gt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",staticClass:"k-files-dialog",attrs:{size:"medium"},on:{cancel:function(e){return t.$emit("cancel")},submit:t.submit}},[t.issue?[n("k-box",{attrs:{text:t.issue,theme:"negative"}})]:[t.models.length?n("k-list",t._l(t.models,function(e){return n("k-list-item",{key:e.filename,attrs:{text:e.text,info:e.info,image:e.image,icon:e.icon},on:{click:function(n){return t.toggle(e)}}},[t.isSelected(e)?n("k-button",{attrs:{slot:"options",autofocus:!0,icon:t.checkedIcon,tooltip:t.$t("remove"),theme:"positive"},slot:"options"}):n("k-button",{attrs:{slot:"options",autofocus:!0,tooltip:t.$t("select"),icon:"circle-outline"},slot:"options"})],1)}),1):n("k-empty",{attrs:{icon:"image"}},[t._v("\n "+t._s(t.$t("dialog.files.empty"))+"\n ")])]],2)},bt=[],vt=n("db0c"),kt=n.n(vt),$t=n("a745"),_t=n.n($t),yt={data:function(){return{models:[],issue:null,selected:{},options:{endpoint:null,max:null,multiple:!0,parent:null,selected:[]}}},computed:{multiple:function(){return!0===this.options.multiple&&1!==this.options.max},checkedIcon:function(){return!0===this.multiple?"check":"circle-filled"}},methods:{fetch:function(){var t=this;return this.$api.get(this.options.endpoint,this.fetchData||{}).then(function(e){t.models=e.data||e.pages||e,t.onFetched&&t.onFetched(e)}).catch(function(e){t.models=[],t.issue=e.message})},open:function(t,e){var n=this,i=!0;_t()(t)?(this.models=t,i=!1):(this.models=[],e=t),this.options=Object(k["a"])({},this.options,e),this.selected={},this.options.selected.forEach(function(t){n.$set(n.selected,t,{id:t})}),i?this.fetch().then(function(){n.$refs.dialog.open()}):this.$refs.dialog.open()},submit:function(){this.$emit("submit",kt()(this.selected)),this.$refs.dialog.close()},isSelected:function(t){return void 0!==this.selected[t.id]},toggle:function(t){!1!==this.options.multiple&&1!==this.options.max||(this.selected={}),!0!==this.isSelected(t)?this.options.max&&this.options.max<=nt()(this.selected).length||this.$set(this.selected,t.id,t):this.$delete(this.selected,t.id)}}},wt={mixins:[yt]},xt=wt,Ot=(n("bf53"),Object(u["a"])(xt,gt,bt,!1,null,null,null)),Ct=Ot.exports,St=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("language.create"),notification:t.notification,theme:"positive",size:"medium"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields,novalidate:!0},on:{submit:t.submit},model:{value:t.language,callback:function(e){t.language=e},expression:"language"}})],1)},Et=[],jt={mixins:[h],data:function(){return{notification:null,language:{name:"",code:"",direction:"ltr",locale:""}}},computed:{fields:function(){return{name:{label:this.$t("language.name"),type:"text",required:!0,icon:"title"},code:{label:this.$t("language.code"),type:"text",required:!0,counter:!1,icon:"globe",width:"1/2"},direction:{label:this.$t("language.direction"),type:"select",required:!0,empty:!1,options:[{value:"ltr",text:this.$t("language.direction.ltr")},{value:"rtl",text:this.$t("language.direction.rtl")}],width:"1/2"},locale:{label:this.$t("language.locale"),type:"text",placeholder:"en_US"}}},system:function(){return this.$store.state.system.info}},watch:{"language.name":function(t){this.onNameChanges(t)},"language.code":function(t){this.language.code=dt(t,[this.system.ascii])}},methods:{onNameChanges:function(t){this.language.code=dt(t,[this.language.rules,this.system.ascii]).substr(0,2)},open:function(){this.language={name:"",code:"",direction:"ltr"},this.$refs.dialog.open()},submit:function(){var t=this;this.$api.post("languages",{name:this.language.name,code:this.language.code,direction:this.language.direction,locale:this.language.locale}).then(function(){t.$store.dispatch("languages/load"),t.success({message:":)",event:"language.create"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},Tt=jt,Lt=Object(u["a"])(Tt,St,Et,!1,null,null,null),It=Lt.exports,qt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("delete"),theme:"negative",icon:"trash"},on:{submit:t.submit}},[n("k-text",{domProps:{innerHTML:t._s(t.$t("language.delete.confirm",{name:t.language.name}))}})],1)},At=[],Nt={mixins:[h],data:function(){return{language:{name:null}}},methods:{open:function(t){var e=this;this.$api.get("languages/"+t).then(function(t){e.language=t,e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.$api.delete("languages/"+this.language.code).then(function(){t.$store.dispatch("languages/load"),t.success({message:t.$t("language.deleted"),event:"language.delete"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},Bt=Nt,Pt=Object(u["a"])(Bt,qt,At,!1,null,null,null),Dt=Pt.exports,Mt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("save"),notification:t.notification,size:"medium"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.language,callback:function(e){t.language=e},expression:"language"}})],1)},Rt=[],zt=n("7618"),Ft={mixins:[It],computed:{fields:function(){var t=It.computed.fields.apply(this);return t.code.disabled=!0,"object"===Object(zt["a"])(this.language.locale)&&(t.locale={label:t.locale.label,type:"info",text:this.$t("language.locale.warning")}),t}},methods:{onNameChanges:function(){return!1},open:function(t){var e=this;this.$api.get("languages/"+t).then(function(t){e.language=t;var n=nt()(e.language.locale);1===n.length&&(e.language.locale=e.language.locale[n[0]]),e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.$api.patch("languages/"+this.language.code,{name:this.language.name,direction:this.language.direction,locale:this.language.locale}).then(function(){t.$store.dispatch("languages/load"),t.success({message:t.$t("language.updated"),event:"language.update"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},Ut=Ft,Ht=Object(u["a"])(Ut,Mt,Rt,!1,null,null,null),Kt=Ht.exports,Vt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("page.draft.create"),notification:t.notification,size:"medium",theme:"positive"},on:{submit:function(e){return t.$refs.form.submit()},close:t.reset}},[n("k-form",{ref:"form",attrs:{fields:t.fields,novalidate:!0},on:{submit:t.submit},model:{value:t.page,callback:function(e){t.page=e},expression:"page"}})],1)},Yt=[],Wt=(n("b54a"),{mixins:[h],data:function(){return{notification:null,parent:null,section:null,templates:[],page:this.emptyForm()}},computed:{fields:function(){return{title:{label:this.$t("title"),type:"text",required:!0,icon:"title"},slug:{label:this.$t("slug"),type:"text",required:!0,counter:!1,icon:"url"},template:{name:"template",label:this.$t("template"),type:"select",disabled:1===this.templates.length,required:!0,icon:"code",empty:!1,options:this.templates}}},slugs:function(){return this.$store.state.languages.default?this.$store.state.languages.default.rules:this.system.slugs},system:function(){return this.$store.state.system.info}},watch:{"page.title":function(t){this.page.slug=dt(t,[this.slugs,this.system.ascii])}},methods:{emptyForm:function(){return{title:"",slug:"",template:null}},open:function(t,e,n){var i=this;this.parent=t,this.section=n,this.$api.get(e,{section:n}).then(function(t){i.templates=t.map(function(t){return{value:t.name,text:t.title}}),i.templates[0]&&(i.page.template=i.templates[0].value),i.$refs.dialog.open()}).catch(function(t){i.$store.dispatch("notification/error",t)})},submit:function(){var t=this;if(this.page.title=this.page.title.trim(),0===this.page.title.length)return this.$refs.dialog.error("Please enter a title"),!1;var e={template:this.page.template,slug:this.page.slug,content:{title:this.page.title}};this.$api.post(this.parent+"/children",e).then(function(e){t.success({route:t.$api.pages.link(e.id),message:":)",event:"page.create"})}).catch(function(e){t.$refs.dialog.error(e.message)})},reset:function(){this.page=this.emptyForm()}}}),Gt=Wt,Jt=Object(u["a"])(Gt,Vt,Yt,!1,null,null,null),Zt=Jt.exports,Xt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("duplicate"),notification:t.notification,size:"medium",theme:"positive"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields,novalidate:!0},on:{submit:t.submit},model:{value:t.page,callback:function(e){t.page=e},expression:"page"}})],1)},Qt=[],te={mixins:[h],data:function(){return{notification:null,page:{children:!1,files:!1,hasChildren:!1,hasDrafts:!1,hasFiles:!1,id:null,slug:""}}},computed:{fields:function(){var t=this.page.hasChildren||this.page.hasDrafts,e=this.page.hasFiles,n={slug:{label:this.$t("slug"),type:"text",required:!0,counter:!1,spellcheck:!1,icon:"url"}};return e&&(n.files={label:this.$t("page.duplicate.files"),type:"toggle",required:!0,width:t?"1/2":null}),t&&(n.children={label:this.$t("page.duplicate.pages"),type:"toggle",required:!0,width:e?"1/2":null}),n},slugs:function(){return this.$store.state.languages.default?this.$store.state.languages.default.rules:this.system.slugs},system:function(){return this.$store.state.system.info}},watch:{"page.slug":function(t){this.page.slug=dt(t,[this.slugs,this.system.ascii])}},methods:{open:function(t){var e=this;this.$api.pages.get(t,{language:"@default",select:"id,slug,hasChildren,hasDrafts,hasFiles,title"}).then(function(t){e.page.id=t.id,e.page.slug=t.slug+"-"+dt(e.$t("page.duplicate.appendix")),e.page.hasChildren=t.hasChildren,e.page.hasDrafts=t.hasDrafts,e.page.hasFiles=t.hasFiles,e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.$api.pages.duplicate(this.page.id,this.page.slug,{children:this.page.children,files:this.page.files}).then(function(e){t.success({route:t.$api.pages.link(e.id),message:":)",event:"page.duplicate"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},ee=te,ne=Object(u["a"])(ee,Xt,Qt,!1,null,null,null),ie=ne.exports,se=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("delete"),size:t.hasSubpages?"medium":"small",theme:"negative",icon:"trash"},on:{submit:t.submit,close:t.reset}},[t.page.hasChildren||t.page.hasDrafts?[n("k-text",{domProps:{innerHTML:t._s(t.$t("page.delete.confirm",{title:t.page.title}))}}),n("div",{staticClass:"k-page-remove-warning"},[n("k-box",{attrs:{theme:"negative"},domProps:{innerHTML:t._s(t.$t("page.delete.confirm.subpages"))}})],1),t.hasSubpages?n("k-form",{attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.model,callback:function(e){t.model=e},expression:"model"}}):t._e()]:[n("k-text",{domProps:{innerHTML:t._s(t.$t("page.delete.confirm",{title:t.page.title}))},on:{keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.submit(e)}}})]],2)},ae=[],oe={mixins:[h],data:function(){return{page:{title:null,hasChildren:!1,hasDrafts:!1},model:this.emptyForm()}},computed:{hasSubpages:function(){return this.page.hasChildren||this.page.hasDrafts},fields:function(){return{check:{label:this.$t("page.delete.confirm.title"),type:"text",counter:!1}}}},methods:{emptyForm:function(){return{check:null}},open:function(t){var e=this;this.$api.pages.get(t,{select:"id, title, hasChildren, hasDrafts, parent"}).then(function(t){e.page=t,e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.hasSubpages&&this.model.check!==this.page.title?this.$refs.dialog.error(this.$t("error.page.delete.confirm")):this.$api.pages.delete(this.page.id,{force:!0}).then(function(){t.$store.dispatch("form/remove","pages/"+t.page.id);var e={message:":)",event:"page.delete"};t.$route.params.path&&t.page.id===t.$route.params.path.replace(/\+/g,"/")&&(t.page.parent?e.route=t.$api.pages.link(t.page.parent.id):e.route="/pages"),t.success(e)}).catch(function(e){t.$refs.dialog.error(e.message)})},reset:function(){this.model=this.emptyForm()}}},re=oe,le=(n("12fb"),Object(u["a"])(re,se,ae,!1,null,null,null)),ue=le.exports,ce=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("rename"),size:"medium",theme:"positive"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.page,callback:function(e){t.page=e},expression:"page"}})],1)},de=[],pe={mixins:[h],data:function(){return{page:{id:null,title:null}}},computed:{fields:function(){return{title:{label:this.$t("title"),type:"text",required:!0,icon:"title",preselect:!0}}}},methods:{open:function(t){var e=this;this.$api.pages.get(t,{select:["id","title"]}).then(function(t){e.page=t,e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.page.title=this.page.title.trim(),0!==this.page.title.length?this.$api.pages.title(this.page.id,this.page.title).then(function(){t.success({message:":)",event:"page.changeTitle"})}).catch(function(e){t.$refs.dialog.error(e.message)}):this.$refs.dialog.error(this.$t("error.page.changeTitle.empty"))}}},fe=pe,he=Object(u["a"])(fe,ce,de,!1,null,null,null),me=he.exports,ge=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("change"),size:"medium",theme:"positive"},on:{submit:t.submit}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.changeStatus},model:{value:t.form,callback:function(e){t.form=e},expression:"form"}})],1)},be=[],ve={mixins:[h],data:function(){return{page:{id:null},isBlocked:!1,isIncomplete:!1,form:{status:null,position:null},states:{}}},computed:{fields:function(){var t=this,e={status:{name:"status",label:this.$t("page.changeStatus.select"),type:"radio",required:!0,options:nt()(this.states).map(function(e){return{value:e,text:t.states[e].label,info:t.states[e].text}})}};return"listed"===this.form.status&&"default"===this.page.blueprint.num&&(e.position={name:"position",label:this.$t("page.changeStatus.position"),type:"select",empty:!1,options:this.sortingOptions()}),e}},methods:{sortingOptions:function(){var t=this,e=[],n=0;return this.page.siblings.forEach(function(i){if(i.id===t.page.id||i.num<1)return!1;n++,e.push({value:n,text:n}),e.push({value:i.id,text:i.title,disabled:!0})}),e.push({value:n+1,text:n+1}),e},open:function(t){var e=this;this.$api.pages.get(t,{select:["id","status","num","errors","siblings","blueprint"]}).then(function(t){return!1===t.blueprint.options.changeStatus?e.$store.dispatch("notification/error",{message:e.$t("error.page.changeStatus.permission")}):"draft"===t.status&&nt()(t.errors).length>0?e.$store.dispatch("notification/error",{message:e.$t("error.page.changeStatus.incomplete"),details:t.errors}):(e.states=t.blueprint.status,e.page=t,e.form.status=t.status,e.form.position=t.num||t.siblings.length+1,void e.$refs.dialog.open())}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){this.$refs.form.submit()},changeStatus:function(){var t=this;this.$api.pages.status(this.page.id,this.form.status,this.form.position||1).then(function(){t.success({message:":)",event:"page.changeStatus"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},ke=ve,$e=Object(u["a"])(ke,ge,be,!1,null,null,null),_e=$e.exports,ye=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("change"),size:"medium",theme:"positive"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.page,callback:function(e){t.page=e},expression:"page"}})],1)},we=[],xe={mixins:[h],data:function(){return{blueprints:[],page:{id:null,template:null}}},computed:{fields:function(){return{template:{label:this.$t("template"),type:"select",required:!0,empty:!1,options:this.page.blueprints,icon:"template"}}}},methods:{open:function(t){var e=this;this.$api.pages.get(t,{select:["id","template","blueprints"]}).then(function(t){if(t.blueprints.length<=1)return e.$store.dispatch("notification/error",{message:e.$t("error.page.changeTemplate.invalid",{slug:t.id})});e.page=t,e.page.blueprints=e.page.blueprints.map(function(t){return{text:t.title,value:t.name}}),e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.$events.$emit("keydown.cmd.s"),this.$api.pages.template(this.page.id,this.page.template).then(function(){t.success({message:":)",event:"page.changeTemplate"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},Oe=xe,Ce=Object(u["a"])(Oe,ye,we,!1,null,null,null),Se=Ce.exports,Ee=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("change"),size:"medium",theme:"positive"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",on:{submit:t.submit}},[n("k-text-field",t._b({attrs:{value:t.slug},on:{input:function(e){return t.sluggify(e)}}},"k-text-field",t.field,!1),[n("k-button",{attrs:{slot:"options",icon:"wand","data-options":""},on:{click:function(e){return t.sluggify(t.page.title)}},slot:"options"},[t._v("\n "+t._s(t.$t("page.changeSlug.fromTitle"))+"\n ")])],1)],1)],1)},je=[],Te={mixins:[h],data:function(){return{slug:null,url:null,page:{id:null,parent:null,title:null}}},computed:{field:function(){return{name:"slug",label:this.$t("slug"),type:"text",required:!0,icon:"url",help:"/"+this.url,counter:!1,preselect:!0}},slugs:function(){return this.$store.state.languages.current?this.$store.state.languages.current.rules:this.system.slugs},system:function(){return this.$store.state.system.info}},methods:{sluggify:function(t){this.slug=dt(t,[this.slugs,this.system.ascii]),this.page.parents?this.url=this.page.parents.map(function(t){return t.slug}).concat([this.slug]).join("/"):this.url=this.slug},open:function(t){var e=this;this.$api.pages.get(t,{view:"panel"}).then(function(t){e.page=t,e.sluggify(e.page.slug),e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;if(this.slug===this.page.slug)return this.$refs.dialog.close(),void this.$store.dispatch("notification/success",":)");0!==this.slug.length?this.$api.pages.slug(this.page.id,this.slug).then(function(e){t.$store.dispatch("form/move",{old:t.$store.getters["form/id"](t.page.id),new:t.$store.getters["form/id"](e.id)});var n={message:":)",event:"page.changeSlug"};!t.$route.params.path||t.page.id!==t.$route.params.path.replace(/\+/g,"/")||t.$store.state.languages.current&&!0!==t.$store.state.languages.current.default||(n.route=t.$api.pages.link(e.id),delete n.event),t.success(n)}).catch(function(e){t.$refs.dialog.error(e.message)}):this.$refs.dialog.error(this.$t("error.page.slug.invalid"))}}},Le=Te,Ie=Object(u["a"])(Le,Ee,je,!1,null,null,null),qe=Ie.exports,Ae=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",staticClass:"k-pages-dialog",attrs:{size:"medium"},on:{cancel:function(e){return t.$emit("cancel")},submit:t.submit}},[t.issue?[n("k-box",{attrs:{text:t.issue,theme:"negative"}})]:[t.model?n("header",{staticClass:"k-pages-dialog-navbar"},[n("k-button",{attrs:{disabled:!t.model.id,tooltip:t.$t("back"),icon:"angle-left"},on:{click:t.back}}),n("k-headline",[t._v(t._s(t.model.title))])],1):t._e(),t.models.length?n("k-list",t._l(t.models,function(e){return n("k-list-item",{key:e.id,attrs:{text:e.text,info:e.info,image:e.image,icon:e.icon},on:{click:function(n){return t.toggle(e)}}},[n("template",{slot:"options"},[t.isSelected(e)?n("k-button",{attrs:{slot:"options",autofocus:!0,icon:t.checkedIcon,tooltip:t.$t("remove"),theme:"positive"},slot:"options"}):n("k-button",{attrs:{slot:"options",autofocus:!0,tooltip:t.$t("select"),icon:"circle-outline"},slot:"options"}),t.model?n("k-button",{attrs:{disabled:!e.hasChildren,tooltip:t.$t("open"),icon:"angle-right"},on:{click:function(n){return n.stopPropagation(),t.go(e)}}}):t._e()],1)],2)}),1):n("k-empty",{attrs:{icon:"page"}},[t._v("\n "+t._s(t.$t("dialog.pages.empty"))+"\n ")])]],2)},Ne=[],Be={mixins:[yt],data:function(){var t=yt.data();return Object(k["a"])({},t,{model:{title:null,parent:null},options:Object(k["a"])({},t.options,{parent:null})})},computed:{fetchData:function(){return{parent:this.options.parent}}},methods:{back:function(){this.options.parent=this.model.parent,this.fetch()},go:function(t){this.options.parent=t.id,this.fetch()},onFetched:function(t){this.model=t.model}}},Pe=Be,De=(n("ac27"),Object(u["a"])(Pe,Ae,Ne,!1,null,null,null)),Me=De.exports,Re={extends:me,methods:{open:function(){var t=this;this.$api.site.get({select:["title"]}).then(function(e){t.page=e,t.$refs.dialog.open()}).catch(function(e){t.$store.dispatch("notification/error",e)})},submit:function(){var t=this;this.$api.site.title(this.page.title).then(function(){t.$store.dispatch("system/title",t.page.title),t.success({message:":)",event:"site.changeTitle"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},ze=Re,Fe=Object(u["a"])(ze,it,st,!1,null,null,null),Ue=Fe.exports,He=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("create"),size:"medium",theme:"positive"},on:{submit:function(e){return t.$refs.form.submit()},close:t.reset}},[n("k-form",{ref:"form",attrs:{fields:t.fields,novalidate:!0},on:{submit:t.create},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})],1)},Ke=[],Ve=n("795b"),Ye=n.n(Ve),We=(n("5df3"),{mixins:[h],data:function(){return{user:this.emptyForm(),languages:[],roles:[]}},computed:{fields:function(){return{name:{label:this.$t("name"),type:"text",icon:"user"},email:{label:this.$t("email"),type:"email",icon:"email",link:!1,required:!0},password:{label:this.$t("password"),type:"password",icon:"key"},language:{label:this.$t("language"),type:"select",icon:"globe",options:this.languages,required:!0,empty:!1},role:{label:this.$t("role"),type:1===this.roles.length?"hidden":"radio",required:!0,options:this.roles}}}},methods:{create:function(){var t=this;this.$api.users.create(this.user).then(function(){t.success({message:":)",event:"user.create"})}).catch(function(e){t.$refs.dialog.error(e.message)})},emptyForm:function(){return{name:"",email:"",password:"",language:this.$store.state.system.info.defaultLanguage||"en",role:this.$user.role.name}},open:function(){var t=this,e=this.$api.roles.options({canBe:"created"}).then(function(e){t.roles=e,"admin"!==t.$user.role.name&&(t.roles=t.roles.filter(function(t){return"admin"!==t.value}))}).catch(function(e){t.$store.dispatch("notification/error",e)}),n=this.$api.translations.options().then(function(e){t.languages=e}).catch(function(e){t.$store.dispatch("notification/error",e)});Ye.a.all([e,n]).then(function(){t.$refs.dialog.open()})},reset:function(){this.user=this.emptyForm()}}}),Ge=We,Je=Object(u["a"])(Ge,He,Ke,!1,null,null,null),Ze=Je.exports,Xe=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("change"),size:"medium",theme:"positive"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})],1)},Qe=[],tn={mixins:[h],data:function(){return{user:{id:null,email:null}}},computed:{fields:function(){return{email:{label:this.$t("email"),preselect:!0,required:!0,type:"email"}}}},methods:{open:function(t){var e=this;this.$api.users.get(t,{select:["id","email"]}).then(function(t){e.user=t,e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.$api.users.changeEmail(this.user.id,this.user.email).then(function(e){t.$store.dispatch("form/revert","users/"+t.user.id),t.$user.id===t.user.id&&t.$store.dispatch("user/email",t.user.email);var n={message:":)",event:"user.changeEmail"};"User"===t.$route.name&&(n.route=t.$api.users.link(e.id)),t.success(n)}).catch(function(e){t.$refs.dialog.error(e.message)})}}},en=tn,nn=Object(u["a"])(en,Xe,Qe,!1,null,null,null),sn=nn.exports,an=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("change"),theme:"positive",icon:"check"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})],1)},on=[],rn={mixins:[h],data:function(){return{user:{language:"en"},languages:[]}},computed:{fields:function(){return{language:{label:this.$t("language"),type:"select",icon:"globe",options:this.languages,required:!0,empty:!1}}}},created:function(){var t=this;this.$api.translations.options().then(function(e){t.languages=e})},methods:{open:function(t){var e=this;this.$api.users.get(t,{view:"compact"}).then(function(t){e.user=t,e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.$api.users.changeLanguage(this.user.id,this.user.language).then(function(e){t.user=e,t.$user.id===t.user.id&&t.$store.dispatch("user/language",t.user.language),t.success({message:":)",event:"user.changeLanguage"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},ln=rn,un=Object(u["a"])(ln,an,on,!1,null,null,null),cn=un.exports,dn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("change"),theme:"positive",icon:"check"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.values,callback:function(e){t.values=e},expression:"values"}})],1)},pn=[],fn={mixins:[h],data:function(){return{user:null,values:{password:null,passwordConfirmation:null}}},computed:{fields:function(){return{password:{label:this.$t("user.changePassword.new"),type:"password",icon:"key"},passwordConfirmation:{label:this.$t("user.changePassword.new.confirm"),icon:"key",type:"password"}}}},methods:{open:function(t){var e=this;this.$api.users.get(t).then(function(t){e.user=t,e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;return this.values.password.length<8?(this.$refs.dialog.error(this.$t("error.user.password.invalid")),!1):this.values.password!==this.values.passwordConfirmation?(this.$refs.dialog.error(this.$t("error.user.password.notSame")),!1):void this.$api.users.changePassword(this.user.id,this.values.password).then(function(){t.success({message:":)",event:"user.changePassword"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},hn=fn,mn=Object(u["a"])(hn,dn,pn,!1,null,null,null),gn=mn.exports,bn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("delete"),theme:"negative",icon:"trash"},on:{submit:t.submit}},[n("k-text",{domProps:{innerHTML:t._s(t.$t("user.delete.confirm",{email:t.user.email}))}})],1)},vn=[],kn={mixins:[h],data:function(){return{user:{email:null}}},methods:{open:function(t){var e=this;this.$api.users.get(t).then(function(t){e.user=t,e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.$api.users.delete(this.user.id).then(function(){t.$store.dispatch("form/remove","users/"+t.user.id),t.success({message:":)",event:"user.delete"}),"User"===t.$route.name&&t.$router.push("/users")}).catch(function(e){t.$refs.dialog.error(e.message)})}}},$n=kn,_n=Object(u["a"])($n,bn,vn,!1,null,null,null),yn=_n.exports,wn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("rename"),size:"medium",theme:"positive"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})],1)},xn=[],On={mixins:[h],data:function(){return{user:{id:null,name:null}}},computed:{fields:function(){return{name:{label:this.$t("name"),type:"text",icon:"user",preselect:!0}}}},methods:{open:function(t){var e=this;this.$api.users.get(t,{select:["id","name"]}).then(function(t){e.user=t,e.$refs.dialog.open()}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.user.name=this.user.name.trim(),this.$api.users.changeName(this.user.id,this.user.name).then(function(){t.$user.id===t.user.id&&t.$store.dispatch("user/name",t.user.name),t.success({message:":)",event:"user.changeName"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},Cn=On,Sn=Object(u["a"])(Cn,wn,xn,!1,null,null,null),En=Sn.exports,jn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("user.changeRole"),size:"medium",theme:"positive"},on:{submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}})],1)},Tn=[],Ln={mixins:[h],data:function(){return{roles:[],user:{id:null,role:"visitor"}}},computed:{fields:function(){return{role:{label:this.$t("user.changeRole.select"),type:"radio",required:!0,options:this.roles}}}},methods:{open:function(t){var e=this;this.id=t,this.$api.users.get(t).then(function(t){e.$api.roles.options({canBe:"changed"}).then(function(n){e.roles=n,"admin"!==e.$user.role.name&&(e.roles=e.roles.filter(function(t){return"admin"!==t.value})),e.user=t,e.user.role=e.user.role.name,e.$refs.dialog.open()})}).catch(function(t){e.$store.dispatch("notification/error",t)})},submit:function(){var t=this;this.$api.users.changeRole(this.user.id,this.user.role).then(function(){t.$user.id===t.user.id&&t.$store.dispatch("user/load"),t.success({message:":)",event:"user.changeRole"})}).catch(function(e){t.$refs.dialog.error(e.message)})}}},In=Ln,qn=Object(u["a"])(In,jn,Tn,!1,null,null,null),An=qn.exports,Nn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",staticClass:"k-users-dialog",attrs:{size:"medium"},on:{cancel:function(e){return t.$emit("cancel")},submit:t.submit}},[t.issue?[n("k-box",{attrs:{text:t.issue,theme:"negative"}})]:[t.models.length?n("k-list",t._l(t.models,function(e){return n("k-list-item",{key:e.email,attrs:{text:e.username,image:e.image,icon:e.icon},on:{click:function(n){return t.toggle(e)}}},[t.isSelected(e)?n("k-button",{attrs:{slot:"options",autofocus:!0,icon:t.checkedIcon,tooltip:t.$t("remove"),theme:"positive"},slot:"options"}):n("k-button",{attrs:{slot:"options",autofocus:!0,tooltip:t.$t("select"),icon:"circle-outline"},slot:"options"})],1)}),1):n("k-empty",{attrs:{icon:"users"}},[t._v("\n "+t._s(t.$t("dialog.users.empty"))+"\n ")])]],2)},Bn=[],Pn={mixins:[yt]},Dn=Pn,Mn=(n("7568"),Object(u["a"])(Dn,Nn,Bn,!1,null,null,null)),Rn=Mn.exports,zn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dropdown",{staticClass:"k-autocomplete"},[t._t("default"),n("k-dropdown-content",t._g({ref:"dropdown",attrs:{autofocus:!0}},t.$listeners),t._l(t.matches,function(e,i){return n("k-dropdown-item",t._b({key:i,on:{mousedown:function(n){return t.onSelect(e)},keydown:[function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"tab",9,n.key,"Tab")?null:(n.preventDefault(),t.onSelect(e))},function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"enter",13,n.key,"Enter")?null:(n.preventDefault(),t.onSelect(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"left",37,e.key,["Left","ArrowLeft"])?null:"button"in e&&0!==e.button?null:(e.preventDefault(),t.close(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"backspace",void 0,e.key,void 0)?null:(e.preventDefault(),t.close(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"delete",[8,46],e.key,["Backspace","Delete","Del"])?null:(e.preventDefault(),t.close(e))}]}},"k-dropdown-item",e,!1),[t._v("\n "+t._s(e.text)+"\n ")])}),1),t._v("\n "+t._s(t.query)+"\n")],2)},Fn=[],Un=(n("4917"),{props:{limit:10,skip:{type:Array,default:function(){return[]}},options:Array,query:String},data:function(){return{matches:[],selected:{text:null}}},methods:{close:function(){this.$refs.dropdown.close()},onSelect:function(t){this.$refs.dropdown.close(),this.$emit("select",t)},search:function(t){var e=this;if(!(t.length<1)){var n=new RegExp(RegExp.escape(t),"ig");this.matches=this.options.filter(function(t){return!!t.text&&(-1===e.skip.indexOf(t.value)&&null!==t.text.match(n))}).slice(0,this.limit),this.$emit("search",t,this.matches),this.$refs.dropdown.open()}}}}),Hn=Un,Kn=Object(u["a"])(Hn,zn,Fn,!1,null,null,null),Vn=Kn.exports,Yn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-calendar-input"},[n("nav",[n("k-button",{attrs:{icon:"angle-left"},on:{click:t.prev}}),n("span",{staticClass:"k-calendar-selects"},[n("k-select-input",{attrs:{options:t.months,disabled:t.disabled,required:!0},model:{value:t.month,callback:function(e){t.month=t._n(e)},expression:"month"}}),n("k-select-input",{attrs:{options:t.years,disabled:t.disabled,required:!0},model:{value:t.year,callback:function(e){t.year=t._n(e)},expression:"year"}})],1),n("k-button",{attrs:{icon:"angle-right"},on:{click:t.next}})],1),n("table",{staticClass:"k-calendar-table"},[n("thead",[n("tr",t._l(t.weekdays,function(e){return n("th",{key:"weekday_"+e},[t._v(t._s(e))])}),0)]),n("tbody",t._l(t.numberOfWeeks,function(e){return n("tr",{key:"week_"+e},t._l(t.days(e),function(e,i){return n("td",{key:"day_"+i,staticClass:"k-calendar-day",attrs:{"aria-current":!!t.isToday(e)&&"date","aria-selected":!!t.isCurrent(e)&&"date"}},[e?n("k-button",{on:{click:function(n){return t.select(e)}}},[t._v(t._s(e))]):t._e()],1)}),0)}),0),n("tfoot",[n("tr",[n("td",{staticClass:"k-calendar-today",attrs:{colspan:"7"}},[n("k-button",{on:{click:t.selectToday}},[t._v(t._s(t.$t("today")))])],1)])])])])},Wn=[],Gn=n("5a0c"),Jn=n.n(Gn),Zn=function(t,e){t=String(t);var n="";e=(e||2)-t.length;while(n.length0?t:7},weekdays:function(){return[this.$t("days.mon"),this.$t("days.tue"),this.$t("days.wed"),this.$t("days.thu"),this.$t("days.fri"),this.$t("days.sat"),this.$t("days.sun")]},monthnames:function(){return[this.$t("months.january"),this.$t("months.february"),this.$t("months.march"),this.$t("months.april"),this.$t("months.may"),this.$t("months.june"),this.$t("months.july"),this.$t("months.august"),this.$t("months.september"),this.$t("months.october"),this.$t("months.november"),this.$t("months.december")]},months:function(){var t=[];return this.monthnames.forEach(function(e,n){t.push({value:n,text:e})}),t},years:function(){for(var t=[],e=this.year-10;e<=this.year+10;e++)t.push({value:e,text:Zn(e)});return t}},watch:{value:function(t){var e=Jn()(t);this.day=e.date(),this.month=e.month(),this.year=e.year(),this.current=e}},methods:{days:function(t){for(var e=[],n=7*(t-1)+1,i=n;ithis.numberOfDays?e.push(""):e.push(s)}return e},next:function(){var t=this.date.clone().add(1,"month");this.set(t)},isToday:function(t){return this.month===this.today.month()&&this.year===this.today.year()&&t===this.today.date()},isCurrent:function(t){return this.month===this.current.month()&&this.year===this.current.year()&&t===this.current.date()},prev:function(){var t=this.date.clone().subtract(1,"month");this.set(t)},go:function(t,e){"today"===t&&(t=this.today.year(),e=this.today.month()),this.year=t,this.month=e},set:function(t){this.day=t.date(),this.month=t.month(),this.year=t.year()},selectToday:function(){this.set(Jn()()),this.select(this.day)},select:function(t){t&&(this.day=t);var e=Jn()(new Date(this.year,this.month,this.day,this.current.hour(),this.current.minute()));this.$emit("input",e.toISOString())}}},Qn=Xn,ti=(n("ee15"),Object(u["a"])(Qn,Yn,Wn,!1,null,null,null)),ei=ti.exports,ni=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{staticClass:"k-counter",attrs:{"data-invalid":!t.valid}},[n("span",[t._v(t._s(t.count))]),t.min&&t.max?n("span",{staticClass:"k-counter-rules"},[t._v("("+t._s(t.min)+"–"+t._s(t.max)+")")]):t.min?n("span",{staticClass:"k-counter-rules"},[t._v("≥ "+t._s(t.min))]):t.max?n("span",{staticClass:"k-counter-rules"},[t._v("≤ "+t._s(t.max))]):t._e()])},ii=[],si=(n("c5f6"),{props:{count:Number,min:Number,max:Number,required:{type:Boolean,default:!1}},computed:{valid:function(){return!1===this.required&&0===this.count||(!0!==this.required||0!==this.count)&&(!(this.min&&this.countthis.max))}}}),ai=si,oi=(n("fc0f"),Object(u["a"])(ai,ni,ii,!1,null,null,null)),ri=oi.exports,li=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{ref:"form",staticClass:"k-form",attrs:{method:"POST",autocomplete:"off",novalidate:""},on:{submit:function(e){return e.preventDefault(),t.onSubmit(e)}}},[t._t("header"),t._t("default",[n("k-fieldset",t._g({ref:"fields",attrs:{disabled:t.disabled,fields:t.fields,novalidate:t.novalidate},model:{value:t.value,callback:function(e){t.value=e},expression:"value"}},t.listeners))]),t._t("footer"),n("input",{ref:"submitter",staticClass:"k-form-submitter",attrs:{type:"submit"}})],2)},ui=[],ci={props:{disabled:Boolean,config:Object,fields:{type:[Array,Object],default:function(){return{}}},novalidate:{type:Boolean,default:!1},value:{type:Object,default:function(){return{}}}},data:function(){return{errors:{},listeners:Object(k["a"])({},this.$listeners,{submit:this.onSubmit})}},methods:{focus:function(t){this.$refs.fields&&this.$refs.fields.focus&&this.$refs.fields.focus(t)},onSubmit:function(){this.$emit("submit",this.value)},submit:function(){this.$refs.submitter.click()}}},di=ci,pi=(n("5d33"),Object(u["a"])(di,li,ui,!1,null,null,null)),fi=pi.exports,hi=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("nav",{staticClass:"k-form-buttons",attrs:{"data-theme":t.mode}},["unlock"===t.mode?n("k-view",[n("p",{staticClass:"k-form-lock-info"},[t._v("\n "+t._s(t.$t("lock.isUnlocked"))+"\n ")]),n("span",{staticClass:"k-form-lock-buttons"},[n("k-button",{staticClass:"k-form-button",attrs:{icon:"download"},on:{click:t.onDownload}},[t._v("\n "+t._s(t.$t("download"))+"\n ")]),n("k-button",{staticClass:"k-form-button",attrs:{icon:"check"},on:{click:t.onResolve}},[t._v("\n "+t._s(t.$t("confirm"))+"\n ")])],1)]):"lock"===t.mode?n("k-view",[n("p",{staticClass:"k-form-lock-info"},[n("k-icon",{attrs:{type:"lock"}}),n("span",{domProps:{innerHTML:t._s(t.$t("lock.isLocked",{email:t.form.lock.email}))}})],1),n("k-button",{staticClass:"k-form-button",attrs:{disabled:!t.form.lock.unlockable,icon:"unlock"},on:{click:t.setUnlock}},[t._v("\n "+t._s(t.$t("lock.unlock"))+"\n ")])],1):"changes"===t.mode?n("k-view",[n("k-button",{staticClass:"k-form-button",attrs:{disabled:t.isDisabled,icon:"undo"},on:{click:t.onRevert}},[t._v("\n "+t._s(t.$t("revert"))+"\n ")]),n("k-button",{staticClass:"k-form-button",attrs:{disabled:t.isDisabled,icon:"check"},on:{click:t.onSave}},[t._v("\n "+t._s(t.$t("save"))+"\n ")])],1):t._e()],1)},mi=[],gi=n("75fc"),bi={data:function(){return{supportsLocking:!0}},computed:{api:function(){return{lock:[this.$route.path+"/lock",null,null,!0],unlock:[this.$route.path+"/unlock",null,null,!0]}},hasChanges:function(){return this.$store.getters["form/hasChanges"](this.id)},form:function(){return{lock:this.$store.getters["form/lock"],unlock:this.$store.getters["form/unlock"]}},id:function(){return this.$store.getters["form/current"]},isDisabled:function(){return this.$store.getters["form/isDisabled"]},isLocked:function(){return null!==this.form.lock},isUnlocked:function(){return null!==this.form.unlock},mode:function(){return!0===this.isUnlocked?"unlock":!0===this.isLocked?"lock":!0===this.hasChanges?"changes":void 0}},watch:{hasChanges:function(t,e){if(!1===e&&!0===t)return this.$store.dispatch("heartbeat/remove",this.getLock),void this.$store.dispatch("heartbeat/add",[this.setLock,40]);this.id&&!0===e&&!1===t&&this.removeLock()},id:function(){this.id&&!1===this.hasChanges&&this.$store.dispatch("heartbeat/add",[this.getLock,15])}},created:function(){this.$events.$on("keydown.cmd.s",this.onSave)},destroyed:function(){this.$events.$off("keydown.cmd.s",this.onSave)},methods:{getLock:function(){var t,e=this;return(t=this.$api).get.apply(t,Object(gi["a"])(this.api.lock)).then(function(t){if(!1===t.supported)return e.supportsLocking=!1,void e.$store.dispatch("heartbeat/remove",e.getLock);!1===t.locked?(e.isLocked&&e.form.lock.user!==e.$store.state.user.current.id&&e.$events.$emit("model.reload"),e.$store.dispatch("form/lock",null)):e.$store.dispatch("form/lock",t.locked)})},setLock:function(){var t,e=this;!0===this.supportsLocking&&(t=this.$api).patch.apply(t,Object(gi["a"])(this.api.lock)).catch(function(){e.$store.dispatch("form/revert",e.id),e.$store.dispatch("heartbeat/remove",e.setLock),e.$store.dispatch("heartbeat/add",[e.getLock,15])})},removeLock:function(){var t,e=this;!0===this.supportsLocking&&(this.$store.dispatch("heartbeat/remove",this.setLock),(t=this.$api).delete.apply(t,Object(gi["a"])(this.api.lock)).then(function(){e.$store.dispatch("form/lock",null),e.$store.dispatch("heartbeat/add",[e.getLock,15])}))},setUnlock:function(){var t,e=this;!0===this.supportsLocking&&(this.$store.dispatch("heartbeat/remove",this.setLock),(t=this.$api).patch.apply(t,Object(gi["a"])(this.api.unlock)).then(function(){e.$store.dispatch("form/lock",null),e.$store.dispatch("heartbeat/add",[e.getLock,15])}))},removeUnlock:function(){var t,e=this;!0===this.supportsLocking&&(this.$store.dispatch("heartbeat/remove",this.setLock),(t=this.$api).delete.apply(t,Object(gi["a"])(this.api.unlock)).then(function(){e.$store.dispatch("form/unlock",null),e.$store.dispatch("heartbeat/add",[e.getLock,15])}))},onDownload:function(){var t=this,e="";nt()(this.form.unlock).forEach(function(n){e+=n+": \n\n"+t.form.unlock[n],e+="\n\n----\n\n"});var n=document.createElement("a");n.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(e)),n.setAttribute("download",this.id+".txt"),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)},onResolve:function(){this.$store.dispatch("form/revert",this.id),this.removeUnlock()},onRevert:function(){this.$store.dispatch("form/revert",this.id)},onSave:function(t){var e=this;return!!t&&(t.preventDefault&&t.preventDefault(),!1===this.hasChanges||void this.$store.dispatch("form/save",this.id).then(function(){e.$events.$emit("model.update"),e.$store.dispatch("notification/success",":)")}).catch(function(t){403!==t.code&&(t.details?e.$store.dispatch("notification/error",{message:e.$t("error.form.incomplete"),details:t.details}):e.$store.dispatch("notification/error",{message:e.$t("error.form.notSaved"),details:[{label:"Exception: "+t.exception,message:t.message}]}))}))}}},vi=bi,ki=(n("18dd"),Object(u["a"])(vi,hi,mi,!1,null,null,null)),$i=ki.exports,_i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.storage.length>0?n("k-dropdown",{staticClass:"k-form-indicator"},[n("k-button",{staticClass:"k-topbar-button",on:{click:t.toggle}},[n("k-icon",{staticClass:"k-form-indicator-icon",attrs:{type:"edit"}})],1),n("k-dropdown-content",{ref:"list",attrs:{align:"right"}},[n("p",{staticClass:"k-form-indicator-info"},[t._v("\n "+t._s(t.$t("lock.unsaved"))+":\n ")]),n("hr"),t._l(t.entries,function(e){return n("k-dropdown-item",{key:e.link,attrs:{icon:e.icon,link:e.link}},[t._v("\n "+t._s(e.label)+"\n ")])})],2)],1):t._e()},yi=[],wi=(n("28a5"),n("f559"),{data:function(){return{isOpen:!1,entries:[],storage:[]}},computed:{store:function(){return this.$store.state.form.models}},watch:{store:{handler:function(){this.loadFromStorage()},deep:!0}},created:function(){this.loadFromStorage()},methods:{loadFromApi:function(){var t=this,e=this.storage.map(function(e){return t.$api.get(e.api,{view:"compact"},null,!0).then(function(n){return e.id.startsWith("pages/")?{icon:"page",label:n.title,link:t.$api.pages.link(n.id)}:e.id.startsWith("files/")?{icon:"image",label:n.filename,link:n.link}:e.id.startsWith("users/")?{icon:"user",label:n.email,link:t.$api.users.link(n.id)}:void 0})});return Ye.a.all(e).then(function(e){t.entries=e})},loadFromStorage:function(){var t=nt()(localStorage);t=t.filter(function(t){return t.startsWith("kirby$form$")}),this.storage=t.map(function(t){return Object(k["a"])({},JSON.parse(localStorage.getItem(t)),{id:t.split("kirby$form$")[1]})}),this.storage=this.storage.filter(function(t){return nt()(t.changes||{}).length>0})},toggle:function(){var t=this;this.isOpen=!this.isOpen,!0===this.isOpen?this.loadFromApi().then(function(){t.$refs.list.toggle()}):this.$refs.list.toggle()}}}),xi=wi,Oi=(n("9e26"),Object(u["a"])(xi,_i,yi,!1,null,null,null)),Ci=Oi.exports,Si=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{class:"k-field k-field-name-"+t.name,attrs:{"data-disabled":t.disabled},on:{focusin:function(e){return t.$emit("focus",e)},focusout:function(e){return t.$emit("blur",e)}}},[t._t("header",[n("header",{staticClass:"k-field-header"},[t._t("label",[n("label",{staticClass:"k-field-label",attrs:{for:t.input}},[t._v(t._s(t.labelText)+" "),t.required?n("abbr",{attrs:{title:"This field is required"}},[t._v("*")]):t._e()])]),t._t("options"),t._t("counter",[t.counter?n("k-counter",t._b({staticClass:"k-field-counter",attrs:{required:t.required}},"k-counter",t.counter,!1)):t._e()])],2)]),t._t("default"),t._t("footer",[t.help||t.$slots.help?n("footer",{staticClass:"k-field-footer"},[t._t("help",[t.help?n("k-text",{staticClass:"k-field-help",attrs:{theme:"help"},domProps:{innerHTML:t._s(t.help)}}):t._e()])],2):t._e()])],2)},Ei=[],ji={inheritAttrs:!1,props:{counter:[Boolean,Object],disabled:Boolean,endpoints:Object,help:String,input:[String,Number],label:String,name:[String,Number],required:Boolean,type:String},computed:{labelText:function(){return this.label||" "}}},Ti=ji,Li=(n("a134"),Object(u["a"])(Ti,Si,Ei,!1,null,null,null)),Ii=Li.exports,qi=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("fieldset",{staticClass:"k-fieldset"},[n("k-grid",t._l(t.fields,function(e,i){return"hidden"!==e.type&&t.meetsCondition(e)?n("k-column",{key:e.signature,attrs:{width:e.width}},[n("k-error-boundary",[t.hasFieldType(e.type)?n("k-"+e.type+"-field",t._b({ref:i,refInFor:!0,tag:"component",attrs:{name:i,novalidate:t.novalidate,disabled:t.disabled||e.disabled},on:{input:function(n){return t.$emit("input",t.value,e,i)},focus:function(n){return t.$emit("focus",n,e,i)},invalid:function(n,s){return t.onInvalid(n,s,e,i)},submit:function(n){return t.$emit("submit",n,e,i)}},model:{value:t.value[i],callback:function(e){t.$set(t.value,i,e)},expression:"value[fieldName]"}},"component",e,!1)):n("k-box",{attrs:{theme:"negative"}},[n("k-text",{attrs:{size:"small"}},[t._v("\n The field type "),n("strong",[t._v('"'+t._s(i)+'"')]),t._v(" does not exist\n ")])],1)],1)],1):t._e()}),1)],1)},Ai=[],Ni={props:{config:Object,disabled:Boolean,fields:{type:[Array,Object],default:function(){return[]}},novalidate:{type:Boolean,default:!1},value:{type:Object,default:function(){return{}}}},data:function(){return{errors:{}}},methods:{focus:function(t){if(t)this.hasField(t)&&"function"===typeof this.$refs[t][0].focus&&this.$refs[t][0].focus();else{var e=nt()(this.$refs)[0];this.focus(e)}},hasFieldType:function(t){return I["a"].options.components["k-"+t+"-field"]},hasField:function(t){return this.$refs[t]&&this.$refs[t][0]},meetsCondition:function(t){var e=this;if(!t.when)return!0;var n=!0;return nt()(t.when).forEach(function(i){var s=e.value[i.toLowerCase()],a=t.when[i];s!==a&&(n=!1)}),n},onInvalid:function(t,e,n,i){this.errors[i]=e,this.$emit("invalid",this.errors)},hasErrors:function(){return nt()(this.errors).length}}},Bi=Ni,Pi=(n("862b"),Object(u["a"])(Bi,qi,Ai,!1,null,null,null)),Di=Pi.exports,Mi=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-input",attrs:{"data-disabled":t.disabled,"data-invalid":!t.novalidate&&t.isInvalid,"data-theme":t.theme,"data-type":t.type}},[t.$slots.before||t.before?n("span",{staticClass:"k-input-before",on:{click:t.focus}},[t._t("before",[t._v(t._s(t.before))])],2):t._e(),n("span",{staticClass:"k-input-element",on:{click:function(e){return e.stopPropagation(),t.focus(e)}}},[t._t("default",[n("k-"+t.type+"-input",t._g(t._b({ref:"input",tag:"component",attrs:{value:t.value}},"component",t.inputProps,!1),t.listeners))])],2),t.$slots.after||t.after?n("span",{staticClass:"k-input-after",on:{click:t.focus}},[t._t("after",[t._v(t._s(t.after))])],2):t._e(),t.$slots.icon||t.icon?n("span",{staticClass:"k-input-icon",on:{click:t.focus}},[t._t("icon",[n("k-icon",{attrs:{type:t.icon}})])],2):t._e()])},Ri=[],zi={inheritAttrs:!1,props:{after:String,before:String,disabled:Boolean,type:String,icon:[String,Boolean],invalid:Boolean,theme:String,novalidate:{type:Boolean,default:!1},value:{type:[String,Boolean,Number,Object,Array],default:null}},data:function(){var t=this;return{isInvalid:this.invalid,listeners:Object(k["a"])({},this.$listeners,{invalid:function(e,n){t.isInvalid=e,t.$emit("invalid",e,n)}}),inputProps:Object(k["a"])({},this.$props,this.$attrs)}},methods:{blur:function(t){t.relatedTarget&&!1===this.$el.contains(t.relatedTarget)&&this.$refs.input.blur&&this.$refs.input.blur()},focus:function(t){if(t&&t.target&&"INPUT"===t.target.tagName)t.target.focus();else if(this.$refs.input&&this.$refs.input.focus)this.$refs.input.focus();else{var e=this.$el.querySelector("input, select, textarea");e&&e.focus()}}}},Fi=zi,Ui=(n("c7c8"),Object(u["a"])(Fi,Mi,Ri,!1,null,null,null)),Hi=Ui.exports,Ki=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-upload"},[n("input",{ref:"input",attrs:{accept:t.options.accept,multiple:t.options.multiple,"aria-hidden":"true",type:"file",tabindex:"-1"},on:{change:t.select,click:function(t){t.stopPropagation()}}}),n("k-dialog",{ref:"dialog",attrs:{size:"medium"}},[t.errors.length>0?[n("k-headline",[t._v(t._s(t.$t("upload.errors")))]),n("ul",{staticClass:"k-upload-error-list"},t._l(t.errors,function(e,i){return n("li",{key:"error-"+i},[n("p",{staticClass:"k-upload-error-filename"},[t._v(t._s(e.file.name))]),n("p",{staticClass:"k-upload-error-message"},[t._v(t._s(e.message))])])}),0)]:[n("k-headline",[t._v(t._s(t.$t("upload.progress")))]),n("ul",{staticClass:"k-upload-list"},t._l(t.files,function(e,i){return n("li",{key:"file-"+i},[n("k-progress",{ref:e.name,refInFor:!0}),n("p",{staticClass:"k-upload-list-filename"},[t._v(t._s(e.name))]),n("p",[t._v(t._s(t.errors[e.name]))])],1)}),0)],n("template",{slot:"footer"},[t.errors.length>0?[n("k-button-group",[n("k-button",{attrs:{icon:"check"},on:{click:function(e){return t.$refs.dialog.close()}}},[t._v("\n "+t._s(t.$t("confirm"))+"\n ")])],1)]:t._e()],2)],2)],1)},Vi=[],Yi=n("5176"),Wi=n.n(Yi),Gi=function(t,e){var n={url:"/",field:"file",method:"POST",accept:"text",attributes:{},complete:function(){},error:function(){},success:function(){},progress:function(){}},i=Wi()(n,e),s=new FormData;s.append(i.field,t,t.name),i.attributes&&nt()(i.attributes).forEach(function(t){s.append(t,i.attributes[t])});var a=new XMLHttpRequest,o=function(e){if(e.lengthComputable&&i.progress){var n=Math.max(0,Math.min(100,e.loaded/e.total*100));i.progress(a,t,Math.ceil(n))}};a.addEventListener("loadstart",o),a.addEventListener("progress",o),a.addEventListener("load",function(e){var n=null;try{n=JSON.parse(e.target.response)}catch(s){n={status:"error",message:"The file could not be uploaded"}}n.status&&"error"===n.status?i.error(a,t,n):(i.success(a,t,n),i.progress(a,t,100))}),a.addEventListener("error",function(e){var n=JSON.parse(e.target.response);i.error(a,t,n),i.progress(a,t,100)}),a.open("POST",i.url,!0),i.headers&&nt()(i.headers).forEach(function(t){var e=i.headers[t];a.setRequestHeader(t,e)}),a.send(s)},Ji={props:{url:{type:String},accept:{type:String,default:"*"},attributes:{type:Object},multiple:{type:Boolean,default:!0},max:{type:Number}},data:function(){return{options:this.$props,completed:{},errors:[],files:[],total:0}},methods:{open:function(t){var e=this;this.params(t),setTimeout(function(){e.$refs.input.click()},1)},params:function(t){this.options=Wi()({},this.$props,t)},select:function(t){this.upload(t.target.files)},drop:function(t,e){this.params(e),this.upload(t)},upload:function(t){var e=this;this.$refs.dialog.open(),this.files=Object(gi["a"])(t),this.completed={},this.errors=[],this.hasErrors=!1,this.options.max&&(this.files=this.files.slice(0,this.options.max)),this.total=this.files.length,this.files.forEach(function(t){Gi(t,{url:e.options.url,attributes:e.options.attributes,headers:{"X-CSRF":window.panel.csrf},progress:function(t,n,i){e.$refs[n.name]&&e.$refs[n.name][0]&&e.$refs[n.name][0].set(i)},success:function(t,n,i){e.complete(n,i.data)},error:function(t,n,i){e.errors.push({file:n,message:i.message}),e.complete(n,i.data)}})})},complete:function(t,e){var n=this;if(this.completed[t.name]=e,nt()(this.completed).length==this.total){if(this.$refs.input.value="",this.errors.length>0)return this.$forceUpdate(),void this.$emit("error",this.files);setTimeout(function(){n.$refs.dialog.close(),n.$emit("success",n.files,kt()(n.completed))},250)}}}},Zi=Ji,Xi=(n("5aee"),Object(u["a"])(Zi,Ki,Vi,!1,null,null,null)),Qi=Xi.exports,ts=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("label",{staticClass:"k-checkbox-input",on:{click:function(t){t.stopPropagation()}}},[n("input",{ref:"input",staticClass:"k-checkbox-input-native",attrs:{disabled:t.disabled,id:t.id,type:"checkbox"},domProps:{checked:t.value},on:{change:function(e){return t.onChange(e.target.checked)}}}),n("span",{staticClass:"k-checkbox-input-icon",attrs:{"aria-hidden":"true"}},[n("svg",{attrs:{width:"12",height:"10",viewBox:"0 0 12 10",xmlns:"http://www.w3.org/2000/svg"}},[n("path",{attrs:{d:"M1 5l3.3 3L11 1","stroke-width":"2",fill:"none","fill-rule":"evenodd"}})])]),n("span",{staticClass:"k-checkbox-input-label",domProps:{innerHTML:t._s(t.label)}})])},es=[],ns=n("b5ae"),is={inheritAttrs:!1,props:{autofocus:Boolean,disabled:Boolean,id:[Number,String],label:String,required:Boolean,value:Boolean},watch:{value:function(){this.onInvalid()}},mounted:function(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus:function(){this.$refs.input.focus()},onChange:function(t){this.$emit("input",t)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},select:function(){this.focus()}},validations:function(){return{value:{required:!this.required||ns["required"]}}}},ss=is,as=(n("42e4"),Object(u["a"])(ss,ts,es,!1,null,null,null)),os=as.exports,rs=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ul",{staticClass:"k-checkboxes-input",style:"--columns:"+t.columns},t._l(t.options,function(e,i){return n("li",{key:i},[n("k-checkbox-input",{attrs:{id:t.id+"-"+i,label:e.text,value:-1!==t.selected.indexOf(e.value)},on:{input:function(n){return t.onInput(e.value,n)}}})],1)}),0)},ls=[],us={inheritAttrs:!1,props:{autofocus:Boolean,columns:Number,disabled:Boolean,id:{type:[Number,String],default:function(){return this._uid}},max:Number,min:Number,options:Array,required:Boolean,value:{type:[Array,Object],default:function(){return[]}}},data:function(){return{selected:this.valueToArray(this.value)}},watch:{value:function(t){this.selected=this.valueToArray(t)},selected:function(){this.onInvalid()}},mounted:function(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus:function(){this.$el.querySelector("input").focus()},onInput:function(t,e){if(!0===e)this.selected.push(t);else{var n=this.selected.indexOf(t);-1!==n&&this.selected.splice(n,1)}this.$emit("input",this.selected)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},select:function(){this.focus()},valueToArray:function(t){return!0===_t()(t)?t:"string"===typeof t?String(t).split(","):"object"===Object(zt["a"])(t)?kt()(t):void 0}},validations:function(){return{selected:{required:!this.required||ns["required"],min:!this.min||Object(ns["minLength"])(this.min),max:!this.max||Object(ns["maxLength"])(this.max)}}}},cs=us,ds=Object(u["a"])(cs,rs,ls,!1,null,null,null),ps=ds.exports,fs=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-date-input"},[n("k-select-input",{ref:"years",attrs:{"aria-label":t.$t("year"),options:t.years,disabled:t.disabled,required:t.required,value:t.year,placeholder:"––––"},on:{input:t.setYear,invalid:t.onInvalid}}),n("span",{staticClass:"k-date-input-separator"},[t._v("-")]),n("k-select-input",{ref:"months",attrs:{"aria-label":t.$t("month"),options:t.months,disabled:t.disabled,required:t.required,value:t.month,placeholder:"––"},on:{input:t.setMonth,invalid:t.onInvalid}}),n("span",{staticClass:"k-date-input-separator"},[t._v("-")]),n("k-select-input",{ref:"days",attrs:{"aria-label":t.$t("day"),autofocus:t.autofocus,id:t.id,options:t.days,disabled:t.disabled,required:t.required,value:t.day,placeholder:"––"},on:{input:t.setDay,invalid:t.onInvalid}})],1)},hs=[],ms=n("e814"),gs=n.n(ms),bs={inheritAttrs:!1,props:{autofocus:Boolean,disabled:Boolean,id:[String,Number],max:String,min:String,required:Boolean,value:String},data:function(){return{date:Jn()(this.value),minDate:this.calculate(this.min,"min"),maxDate:this.calculate(this.max,"max")}},computed:{day:function(){return isNaN(this.date.date())?"":this.date.date()},days:function(){return this.options(1,this.date.daysInMonth()||31,"days")},month:function(){return isNaN(this.date.date())?"":this.date.month()+1},months:function(){return this.options(1,12,"months")},year:function(){return isNaN(this.date.year())?"":this.date.year()},years:function(){var t=this.date.isBefore(this.minDate)?this.date.year():this.minDate.year(),e=this.date.isAfter(this.maxDate)?this.date.year():this.maxDate.year();return this.options(t,e)}},watch:{value:function(t){this.date=Jn()(t)}},methods:{calculate:function(t,e){var n={min:{run:"subtract",take:"startOf"},max:{run:"add",take:"endOf"}}[e],i=t?Jn()(t):null;return i&&!1!==i.isValid()||(i=Jn()()[n.run](10,"year")[n.take]("year")),i},focus:function(){this.$refs.years.focus()},onInput:function(){!1!==this.date.isValid()?this.$emit("input",this.date.toISOString()):this.$emit("input","")},onInvalid:function(t,e){this.$emit("invalid",t,e)},options:function(t,e){for(var n=[],i=t;i<=e;i++)n.push({value:i,text:Zn(i)});return n},set:function(t,e){if(""===e||null===e||!1===e||-1===e)return this.setInvalid(),void this.onInput();if(!1===this.date.isValid())return this.setInitialDate(t,e),void this.onInput();var n=this.date,i=this.date.date();this.date=this.date.set(t,gs()(e)),"month"===t&&this.date.date()!==i&&(this.date=n.set("date",1).set("month",e).endOf("month")),this.onInput()},setInvalid:function(){this.date=Jn()("invalid")},setInitialDate:function(t,e){var n=Jn()();return this.date=Jn()().set(t,gs()(e)),"date"===t&&n.month()!==this.date.month()&&(this.date=n.endOf("month")),this.date},setDay:function(t){this.set("date",t)},setMonth:function(t){this.set("month",t-1)},setYear:function(t){this.set("year",t)}}},vs=bs,ks=(n("6ab3"),Object(u["a"])(vs,fs,hs,!1,null,null,null)),$s=ks.exports,_s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-datetime-input"},[n("k-date-input",{ref:"dateInput",attrs:{autofocus:t.autofocus,required:t.required,id:t.id,min:t.min,max:t.max,disabled:t.disabled,value:t.dateValue},on:{input:t.setDate}}),n("k-time-input",t._b({ref:"timeInput",attrs:{required:t.required,disabled:t.disabled,value:t.timeValue},on:{input:t.setTime}},"k-time-input",t.timeOptions,!1))],1)},ys=[],ws={inheritAttrs:!1,props:Object(k["a"])({},$s.props,{time:{type:[Boolean,Object],default:function(){return{}}},value:String}),data:function(){return{dateValue:this.parseDate(this.value),timeValue:this.parseTime(this.value),timeOptions:this.setTimeOptions()}},watch:{value:function(t){this.dateValue=this.parseDate(t),this.timeValue=this.parseTime(t),this.onInvalid()}},mounted:function(){this.onInvalid()},methods:{focus:function(){this.$refs.dateInput.focus()},onInput:function(){if(this.timeValue&&this.dateValue){var t=this.dateValue+"T"+this.timeValue+":00";this.$emit("input",t)}else this.$emit("input","")},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},parseDate:function(t){var e=Jn()(t);return e.isValid()?e.format("YYYY-MM-DD"):null},parseTime:function(t){var e=Jn()(t);return e.isValid()?e.format("HH:mm"):null},setDate:function(t){t&&!this.timeValue&&(this.timeValue=Jn()().format("HH:mm")),t?this.dateValue=this.parseDate(t):(this.dateValue=null,this.timeValue=null),this.onInput()},setTime:function(t){t&&!this.dateValue&&(this.dateValue=Jn()().format("YYYY-MM-DD")),t?this.timeValue=t:(this.dateValue=null,this.timeValue=null),this.onInput()},setTimeOptions:function(){return!0===this.time?{}:this.time}},validations:function(){return{value:{required:!this.required||ns["required"]}}}},xs=ws,Os=(n("4433"),Object(u["a"])(xs,_s,ys,!1,null,null,null)),Cs=Os.exports,Ss=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("input",t._g(t._b({ref:"input",staticClass:"k-text-input"},"input",{autocomplete:t.autocomplete,autofocus:t.autofocus,disabled:t.disabled,id:t.id,minlength:t.minlength,name:t.name,pattern:t.pattern,placeholder:t.placeholder,required:t.required,spellcheck:t.spellcheck,type:t.type,value:t.value},!1),t.listeners))},Es=[],js={inheritAttrs:!1,class:"k-text-input",props:{autocomplete:{type:[Boolean,String],default:"off"},autofocus:Boolean,disabled:Boolean,id:[Number,String],maxlength:Number,minlength:Number,name:[Number,String],pattern:String,placeholder:String,preselect:Boolean,required:Boolean,spellcheck:{type:[Boolean,String],default:"off"},type:{type:String,default:"text"},value:String},data:function(){var t=this;return{listeners:Object(k["a"])({},this.$listeners,{input:function(e){return t.onInput(e.target.value)}})}},watch:{value:function(){this.onInvalid()}},mounted:function(){this.onInvalid(),this.$props.autofocus&&this.focus(),this.$props.preselect&&this.select()},methods:{focus:function(){this.$refs.input.focus()},onInput:function(t){this.$emit("input",t)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},select:function(){this.$refs.input.select()}},validations:function(){var t=this,e=function(e){return!t.required&&0===e.length||!t.$refs.input.validity.patternMismatch};return{value:{required:!this.required||ns["required"],minLength:!this.minlength||Object(ns["minLength"])(this.minlength),maxLength:!this.maxlength||Object(ns["maxLength"])(this.maxlength),email:"email"!==this.type||ns["email"],url:"url"!==this.type||ns["url"],pattern:!this.pattern||e}}}},Ts=js,Ls=(n("cb8f"),Object(u["a"])(Ts,Ss,Es,!1,null,null,null)),Is=Ls.exports,qs={extends:Is,props:Object(k["a"])({},Is.props,{autocomplete:{type:String,default:"email"},placeholder:{type:String,default:function(){return this.$t("email.placeholder")}},type:{type:String,default:"email"}})},As=qs,Ns=Object(u["a"])(As,at,ot,!1,null,null,null),Bs=Ns.exports,Ps=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-draggable",{staticClass:"k-multiselect-input",attrs:{list:t.state,options:t.dragOptions,"data-layout":t.layout,element:"k-dropdown"},on:{end:t.onInput},nativeOn:{click:function(e){return t.$refs.dropdown.toggle(e)}}},[t._l(t.sorted,function(e){return n("k-tag",{key:e.value,ref:e.value,refInFor:!0,attrs:{removable:!0},on:{remove:function(n){return t.remove(e)}},nativeOn:{click:function(t){t.stopPropagation()},keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"left",37,e.key,["Left","ArrowLeft"])?null:"button"in e&&0!==e.button?null:t.navigate("prev")},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"right",39,e.key,["Right","ArrowRight"])?null:"button"in e&&2!==e.button?null:t.navigate("next")},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?null:t.$refs.dropdown.open(e)}]}},[t._v("\n "+t._s(e.text)+"\n ")])}),n("k-dropdown-content",{ref:"dropdown",attrs:{slot:"footer"},on:{open:t.onOpen},nativeOn:{keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"])?null:(e.stopPropagation(),t.close(e))}},slot:"footer"},[t.search?n("k-dropdown-item",{staticClass:"k-multiselect-search",attrs:{icon:"search"}},[n("input",{directives:[{name:"model",rawName:"v-model",value:t.q,expression:"q"}],ref:"search",domProps:{value:t.q},on:{keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"])?null:(e.stopPropagation(),t.escape(e))},input:function(e){e.target.composing||(t.q=e.target.value)}}})]):t._e(),n("div",{staticClass:"k-multiselect-options"},t._l(t.filtered,function(e){return n("k-dropdown-item",{key:e.value,class:{"k-multiselect-option":!0,selected:t.isSelected(e),disabled:!t.addable},attrs:{icon:t.isSelected(e)?"check":"circle-outline"},on:{click:function(n){return t.select(e)}},nativeOn:{keydown:[function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"enter",13,n.key,"Enter")?null:(n.preventDefault(),t.select(e))},function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"space",32,n.key,[" ","Spacebar"])?null:(n.preventDefault(),t.select(e))}]}},[n("span",{domProps:{innerHTML:t._s(e.display)}}),n("span",{staticClass:"k-multiselect-value",domProps:{innerHTML:t._s(e.info)}})])}),1)],1)],2)},Ds=[],Ms=(n("20d6"),n("55dd"),{inheritAttrs:!1,props:{disabled:Boolean,id:[Number,String],max:Number,min:Number,layout:String,options:{type:Array,default:function(){return[]}},required:Boolean,search:Boolean,separator:{type:String,default:","},sort:Boolean,value:{type:Array,required:!0,default:function(){return[]}}},data:function(){return{state:this.value,q:null}},computed:{addable:function(){return!this.max||this.state.length1&&!this.sort},dragOptions:function(){return{disabled:!this.draggable,draggable:".k-tag",delay:1}},filtered:function(){if(null===this.q)return this.options.map(function(t){return Object(k["a"])({},t,{display:t.text,info:t.value})});var t=new RegExp("(".concat(RegExp.escape(this.q),")"),"ig");return this.options.filter(function(e){return e.text.match(t)||e.value.match(t)}).map(function(e){return Object(k["a"])({},e,{display:e.text.replace(t,"$1"),info:e.value.replace(t,"$1")})})},sorted:function(){var t=this;if(!1===this.sort)return this.state;var e=this.state,n=function(e){return t.options.findIndex(function(t){return t.value===e.value})};return e.sort(function(t,e){return n(t)-n(e)})}},watch:{value:function(t){this.state=t,this.onInvalid()}},mounted:function(){this.onInvalid(),this.$events.$on("click",this.close),this.$events.$on("keydown.cmd.s",this.close)},destroyed:function(){this.$events.$off("click",this.close),this.$events.$off("keydown.cmd.s",this.close)},methods:{add:function(t){this.addable&&(this.state.push(t),this.onInput())},blur:function(){this.close()},close:function(){this.$refs.dropdown.close(),this.q=null,this.$el.focus()},escape:function(){this.q?this.q=null:this.close()},focus:function(){this.$refs.dropdown.open()},index:function(t){return this.state.findIndex(function(e){return e.value===t.value})},isSelected:function(t){return-1!==this.index(t)},navigate:function(t){var e=document.activeElement;switch(t){case"prev":e&&e.previousSibling&&e.previousSibling.focus();break;case"next":e&&e.nextSibling&&e.nextSibling.focus();break}},onInput:function(){this.$emit("input",this.sorted)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},onOpen:function(){var t=this;this.$nextTick(function(){t.$refs.search&&t.$refs.search.focus()})},remove:function(t){this.state.splice(this.index(t),1),this.onInput()},select:function(t){t={text:t.text,value:t.value},this.isSelected(t)?this.remove(t):this.add(t)}},validations:function(){return{state:{required:!this.required||ns["required"],minLength:!this.min||Object(ns["minLength"])(this.min),maxLength:!this.max||Object(ns["maxLength"])(this.max)}}}}),Rs=Ms,zs=(n("11ae"),Object(u["a"])(Rs,Ps,Ds,!1,null,null,null)),Fs=zs.exports,Us=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("input",t._g(t._b({ref:"input",staticClass:"k-number-input",attrs:{type:"number"}},"input",{autofocus:t.autofocus,disabled:t.disabled,id:t.id,max:t.max,min:t.min,name:t.name,placeholder:t.placeholder,required:t.required,step:t.step,value:t.value},!1),t.listeners))},Hs=[],Ks={inheritAttrs:!1,props:{autofocus:Boolean,disabled:Boolean,id:[Number,String],max:Number,min:Number,name:[Number,String],placeholder:String,preselect:Boolean,required:Boolean,step:Number,value:{type:[Number,String],default:null}},data:function(){var t=this;return{listeners:Object(k["a"])({},this.$listeners,{input:function(e){return t.onInput(e.target.value)}})}},watch:{value:function(){this.onInvalid()}},mounted:function(){this.onInvalid(),this.$props.autofocus&&this.focus(),this.$props.preselect&&this.select()},methods:{focus:function(){this.$refs.input.focus()},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},onInput:function(t){null!==t&&""!==t&&"-"!==t&&"-0"!==t&&(t=Number(t)),this.$emit("input",t)},select:function(){this.$refs.input.select()}},validations:function(){return{value:{required:!this.required||ns["required"],min:!this.min||Object(ns["minValue"])(this.min),max:!this.max||Object(ns["maxValue"])(this.max)}}}},Vs=Ks,Ys=(n("6018"),Object(u["a"])(Vs,Us,Hs,!1,null,null,null)),Ws=Ys.exports,Gs={extends:Is,props:Object(k["a"])({},Is.props,{autocomplete:{type:String,default:"new-password"},type:{type:String,default:"password"}})},Js=Gs,Zs=Object(u["a"])(Js,rt,lt,!1,null,null,null),Xs=Zs.exports,Qs=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ul",{staticClass:"k-radio-input",style:"--columns:"+t.columns},t._l(t.options,function(e,i){return n("li",{key:i},[n("input",{staticClass:"k-radio-input-native",attrs:{id:t.id+"-"+i,name:t.id,type:"radio"},domProps:{value:e.value,checked:t.value===e.value},on:{change:function(n){return t.onInput(e.value)}}}),n("label",{attrs:{for:t.id+"-"+i}},[e.info?[n("span",{staticClass:"k-radio-input-text"},[t._v(t._s(e.text))]),n("span",{staticClass:"k-radio-input-info"},[t._v(t._s(e.info))])]:[t._v("\n "+t._s(e.text)+"\n ")]],2),e.icon?n("k-icon",{attrs:{type:e.icon}}):t._e()],1)}),0)},ta=[],ea={inheritAttrs:!1,props:{autofocus:Boolean,columns:Number,disabled:Boolean,id:{type:[Number,String],default:function(){return this._uid}},options:Array,required:Boolean,value:[String,Number,Boolean]},watch:{value:function(){this.onInvalid()}},mounted:function(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus:function(){this.$el.querySelector("input").focus()},onInput:function(t){this.$emit("input",t)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},select:function(){this.focus()}},validations:function(){return{value:{required:!this.required||ns["required"]}}}},na=ea,ia=(n("893d"),Object(u["a"])(na,Qs,ta,!1,null,null,null)),sa=ia.exports,aa=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("label",{staticClass:"k-range-input"},[n("input",t._g(t._b({ref:"input",staticClass:"k-range-input-native",style:"--min: "+t.min+"; --max: "+t.max+"; --value: "+t.position,attrs:{type:"range"},domProps:{value:t.position}},"input",{autofocus:t.autofocus,disabled:t.disabled,id:t.id,max:t.max,min:t.min,name:t.name,required:t.required,step:t.step},!1),t.listeners)),t.tooltip?n("span",{staticClass:"k-range-input-tooltip"},[t.tooltip.before?n("span",{staticClass:"k-range-input-tooltip-before"},[t._v(t._s(t.tooltip.before))]):t._e(),n("span",{staticClass:"k-range-input-tooltip-text"},[t._v(t._s(t.label))]),t.tooltip.after?n("span",{staticClass:"k-range-input-tooltip-after"},[t._v(t._s(t.tooltip.after))]):t._e()]):t._e()])},oa=[],ra=(n("6b54"),{inheritAttrs:!1,props:{autofocus:Boolean,disabled:Boolean,id:[String,Number],default:[Number,String],max:{type:Number,default:100},min:{type:Number,default:0},name:[String,Number],required:Boolean,step:{type:Number,default:1},tooltip:{type:[Boolean,Object],default:function(){return{before:null,after:null}}},value:[Number,String]},data:function(){var t=this;return{listeners:Object(k["a"])({},this.$listeners,{input:function(e){return t.onInput(e.target.value)}})}},computed:{baseline:function(){return this.min<0?0:this.min},label:function(){return this.required||this.value?this.format(this.position):"–"},position:function(){return this.value||this.default||this.baseline}},watch:{position:function(){this.onInvalid()}},mounted:function(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus:function(){this.$refs.input.focus()},format:function(t){var e=document.lang?document.lang.replace("_","-"):"en",n=this.step.toString().split("."),i=n.length>1?n[1].length:0;return new Intl.NumberFormat(e,{minimumFractionDigits:i}).format(t)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},onInput:function(t){this.$emit("input",t)}},validations:function(){return{position:{required:!this.required||ns["required"],min:!this.min||Object(ns["minValue"])(this.min),max:!this.max||Object(ns["maxValue"])(this.max)}}}}),la=ra,ua=(n("b5d2"),Object(u["a"])(la,aa,oa,!1,null,null,null)),ca=ua.exports,da=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{staticClass:"k-select-input",attrs:{"data-disabled":t.disabled,"data-empty":""===t.selected}},[n("select",t._g({ref:"input",staticClass:"k-select-input-native",attrs:{autofocus:t.autofocus,"aria-label":t.ariaLabel,disabled:t.disabled,id:t.id,name:t.name,required:t.required},domProps:{value:t.selected}},t.listeners),[t.hasEmptyOption?n("option",{attrs:{disabled:t.required,value:""}},[t._v("\n "+t._s(t.emptyOption)+"\n ")]):t._e(),t._l(t.options,function(e){return n("option",{key:e.value,attrs:{disabled:e.disabled},domProps:{value:e.value}},[t._v("\n "+t._s(e.text)+"\n ")])})],2),t._v("\n "+t._s(t.label)+"\n")])},pa=[],fa={inheritAttrs:!1,props:{autofocus:Boolean,ariaLabel:String,default:String,disabled:Boolean,empty:{type:[Boolean,String],default:!0},id:[Number,String],name:[Number,String],placeholder:String,options:{type:Array,default:function(){return[]}},required:Boolean,value:{type:[String,Number,Boolean],default:""}},data:function(){var t=this;return{selected:this.value,listeners:Object(k["a"])({},this.$listeners,{click:function(e){return t.onClick(e)},change:function(e){return t.onInput(e.target.value)},input:function(t){}})}},computed:{emptyOption:function(){return this.placeholder||"—"},hasEmptyOption:function(){return!1!==this.empty&&!(this.required&&this.default)},label:function(){var t=this.text(this.selected);return""===this.selected||null===this.selected||null===t?this.emptyOption:t}},watch:{value:function(t){this.selected=t,this.onInvalid()}},mounted:function(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus:function(){this.$refs.input.focus()},onClick:function(t){t.stopPropagation(),this.$emit("click",t)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},onInput:function(t){this.selected=t,this.$emit("input",this.selected)},select:function(){this.focus()},text:function(t){var e=null;return this.options.forEach(function(n){n.value==t&&(e=n.text)}),e}},validations:function(){return{selected:{required:!this.required||ns["required"]}}}},ha=fa,ma=(n("6a18"),Object(u["a"])(ha,da,pa,!1,null,null,null)),ga=ma.exports,ba=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-draggable",{ref:"box",staticClass:"k-tags-input",attrs:{list:t.tags,"data-layout":t.layout,options:t.dragOptions},on:{end:t.onInput}},[t._l(t.tags,function(e,i){return n("k-tag",{key:i,ref:e.value,refInFor:!0,attrs:{removable:!t.disabled,name:"tag"},on:{remove:function(n){return t.remove(e)}},nativeOn:{click:function(t){t.stopPropagation()},blur:function(e){return t.selectTag(null)},focus:function(n){return t.selectTag(e)},keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"left",37,e.key,["Left","ArrowLeft"])?null:"button"in e&&0!==e.button?null:t.navigate("prev")},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"right",39,e.key,["Right","ArrowRight"])?null:"button"in e&&2!==e.button?null:t.navigate("next")}],dblclick:function(n){return t.edit(e)}}},[t._v("\n "+t._s(e.text)+"\n ")])}),n("span",{staticClass:"k-tags-input-element",attrs:{slot:"footer"},slot:"footer"},[n("k-autocomplete",{ref:"autocomplete",attrs:{options:t.options,skip:t.skip},on:{select:t.addTag,leave:function(e){return t.$refs.input.focus()}}},[n("input",{directives:[{name:"model",rawName:"v-model.trim",value:t.newTag,expression:"newTag",modifiers:{trim:!0}}],ref:"input",attrs:{autofocus:t.autofocus,disabled:t.disabled||t.max&&t.tags.length>=t.max,id:t.id,name:t.name,autocomplete:"off",type:"text"},domProps:{value:t.newTag},on:{input:[function(e){e.target.composing||(t.newTag=e.target.value.trim())},function(e){return t.type(e.target.value)}],blur:[t.blurInput,function(e){return t.$forceUpdate()}],keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"s",void 0,e.key,void 0)?null:e.metaKey?t.blurInput(e):null},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"left",37,e.key,["Left","ArrowLeft"])?null:"button"in e&&0!==e.button?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:t.leaveInput(e)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:t.enter(e)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"tab",9,e.key,"Tab")?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:t.tab(e)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"backspace",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:t.leaveInput(e)}]}})])],1)],2)},va=[],ka={inheritAttrs:!1,props:{autofocus:Boolean,accept:{type:String,default:"all"},disabled:Boolean,icon:{type:[String,Boolean],default:"tag"},id:[Number,String],layout:String,max:Number,min:Number,name:[Number,String],options:{type:Array,default:function(){return[]}},required:Boolean,separator:{type:String,default:","},value:{type:Array,default:function(){return[]}}},data:function(){return{tags:this.prepareTags(this.value),selected:null,newTag:null,tagOptions:this.options.map(function(t){return t.icon="tag",t})}},computed:{dragOptions:function(){return{delay:1,disabled:!this.draggable,draggable:".k-tag"}},draggable:function(){return this.tags.length>1},skip:function(){return this.tags.map(function(t){return t.value})}},watch:{value:function(t){this.tags=this.prepareTags(t),this.onInvalid()}},mounted:function(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{addString:function(t){var e=this;if(t)if(t=t.trim(),t.includes(this.separator))t.split(this.separator).forEach(function(t){e.addString(t)});else if(0!==t.length)if("options"===this.accept){var n=this.options.filter(function(e){return e.text===t})[0];if(!n)return;this.addTag(n)}else this.addTag({text:t,value:t})},addTag:function(t){this.addTagToIndex(t),this.$refs.autocomplete.close(),this.$refs.input.focus()},addTagToIndex:function(t){if("options"===this.accept){var e=this.options.filter(function(e){return e.value===t.value})[0];if(!e)return}-1===this.index(t)&&(!this.max||this.tags.length0&&(t.preventDefault(),this.addString(this.newTag))},type:function(t){this.newTag=t,this.$refs.autocomplete.search(t)}},validations:function(){return{tags:{required:!this.required||ns["required"],minLength:!this.min||Object(ns["minLength"])(this.min),maxLength:!this.max||Object(ns["maxLength"])(this.max)}}}},$a=ka,_a=(n("27c1"),Object(u["a"])($a,ba,va,!1,null,null,null)),ya=_a.exports,wa={extends:Is,props:Object(k["a"])({},Is.props,{autocomplete:{type:String,default:"tel"},type:{type:String,default:"tel"}})},xa=wa,Oa=Object(u["a"])(xa,ut,ct,!1,null,null,null),Ca=Oa.exports,Sa=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-textarea-input",attrs:{"data-theme":t.theme,"data-over":t.over}},[n("div",{staticClass:"k-textarea-input-wrapper"},[t.buttons&&!t.disabled?n("k-toolbar",{ref:"toolbar",attrs:{buttons:t.buttons,disabled:t.disabled,uploads:t.uploads},on:{command:t.onCommand},nativeOn:{mousedown:function(t){t.preventDefault()}}}):t._e(),n("textarea",t._b({ref:"input",staticClass:"k-textarea-input-native",attrs:{"data-font":t.font,"data-size":t.size},on:{click:t.onClick,focus:t.onFocus,input:t.onInput,keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:e.metaKey?t.onSubmit(e):null},function(e){return e.metaKey?t.onShortcut(e):null}],dragover:t.onOver,dragleave:t.onOut,drop:t.onDrop}},"textarea",{autofocus:t.autofocus,disabled:t.disabled,id:t.id,minlength:t.minlength,name:t.name,placeholder:t.placeholder,required:t.required,spellcheck:t.spellcheck,value:t.value},!1))],1),n("k-toolbar-email-dialog",{ref:"emailDialog",on:{cancel:t.cancel,submit:function(e){return t.insert(e)}}}),n("k-toolbar-link-dialog",{ref:"linkDialog",on:{cancel:t.cancel,submit:function(e){return t.insert(e)}}}),n("k-files-dialog",{ref:"fileDialog",on:{cancel:t.cancel,submit:function(e){return t.insertFile(e)}}}),t.uploads?n("k-upload",{ref:"fileUpload",on:{success:t.insertUpload}}):t._e()],1)},Ea=[],ja=n("19e9"),Ta=n.n(ja),La={inheritAttrs:!1,props:{autofocus:Boolean,buttons:{type:[Boolean,Array],default:!0},disabled:Boolean,endpoints:Object,font:String,id:[Number,String],name:[Number,String],maxlength:Number,minlength:Number,placeholder:String,preselect:Boolean,required:Boolean,size:String,spellcheck:{type:[Boolean,String],default:"off"},theme:String,uploads:[Boolean,Object,Array],value:String},data:function(){return{over:!1}},watch:{value:function(){var t=this;this.onInvalid(),this.$nextTick(function(){t.resize()})}},mounted:function(){var t=this;this.$nextTick(function(){Ta()(t.$refs.input)}),this.onInvalid(),this.$props.autofocus&&this.focus(),this.$props.preselect&&this.select()},methods:{cancel:function(){this.$refs.input.focus()},dialog:function(t){if(!this.$refs[t+"Dialog"])throw"Invalid toolbar dialog";this.$refs[t+"Dialog"].open(this.$refs.input,this.selection())},focus:function(){this.$refs.input.focus()},insert:function(t){var e=this,n=this.$refs.input,i=n.value;setTimeout(function(){if(n.focus(),document.execCommand("insertText",!1,t),n.value===i){var s=n.value.slice(0,n.selectionStart)+t+n.value.slice(n.selectionEnd);n.value=s,e.$emit("input",s)}}),this.resize()},insertFile:function(t){t&&t.length>0&&this.insert(t.map(function(t){return t.dragText}).join("\n\n"))},insertUpload:function(t,e){this.insert(e.map(function(t){return t.dragText}).join("\n\n")),this.$events.$emit("model.update")},onClick:function(){this.$refs.toolbar&&this.$refs.toolbar.close()},onCommand:function(t,e){"function"===typeof this[t]?"function"===typeof e?this[t](e(this.$refs.input,this.selection())):this[t](e):window.console.warn(t+" is not a valid command")},onDrop:function(t){if(t.dataTransfer&&!0===t.dataTransfer.types.includes("Files"))return this.$refs.fileUpload.drop(t.dataTransfer.files,{url:y.api+"/"+this.endpoints.field+"/upload",multiple:!1});var e=this.$store.state.drag;e&&"text"===e.type&&(this.focus(),this.insert(e.data))},onFocus:function(t){this.$emit("focus",t)},onInput:function(t){this.$emit("input",t.target.value)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},onOut:function(){this.$refs.input.blur(),this.over=!1},onOver:function(t){if(this.uploads&&t.dataTransfer&&!0===t.dataTransfer.types.includes("Files"))return t.dataTransfer.dropEffect="copy",this.focus(),void(this.over=!0);var e=this.$store.state.drag;e&&"text"===e.type&&(t.dataTransfer.dropEffect="copy",this.focus(),this.over=!0)},onShortcut:function(t){!1!==this.buttons&&"Meta"!==t.key&&this.$refs.toolbar&&this.$refs.toolbar.shortcut(t.key,t)},onSubmit:function(t){return this.$emit("submit",t)},prepend:function(t){this.insert(t+" "+this.selection())},resize:function(){Ta.a.update(this.$refs.input)},select:function(){this.$refs.select()},selectFile:function(){this.$refs.fileDialog.open({endpoint:this.endpoints.field+"/files",multiple:!1})},selection:function(){var t=this.$refs.input,e=t.selectionStart,n=t.selectionEnd;return t.value.substring(e,n)},uploadFile:function(){this.$refs.fileUpload.open({url:y.api+"/"+this.endpoints.field+"/upload",multiple:!1})},wrap:function(t){this.insert(t+this.selection()+t)}},validations:function(){return{value:{required:!this.required||ns["required"],minLength:!this.minlength||Object(ns["minLength"])(this.minlength),maxLength:!this.maxlength||Object(ns["maxLength"])(this.maxlength)}}}},Ia=La,qa=(n("cca8"),Object(u["a"])(Ia,Sa,Ea,!1,null,null,null)),Aa=qa.exports,Na=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-time-input"},[n("k-select-input",{ref:"hour",attrs:{id:t.id,"aria-label":t.$t("hour"),autofocus:t.autofocus,options:t.hours,required:t.required,disabled:t.disabled,placeholder:"––"},on:{input:t.setHour,invalid:t.onInvalid},model:{value:t.hour,callback:function(e){t.hour=e},expression:"hour"}}),n("span",{staticClass:"k-time-input-separator"},[t._v(":")]),n("k-select-input",{ref:"minute",attrs:{"aria-label":t.$t("minutes"),options:t.minutes,required:t.required,disabled:t.disabled,placeholder:"––"},on:{input:t.setMinute,invalid:t.onInvalid},model:{value:t.minute,callback:function(e){t.minute=e},expression:"minute"}}),12===t.notation?n("k-select-input",{ref:"meridiem",staticClass:"k-time-input-meridiem",attrs:{"aria-label":t.$t("meridiem"),empty:!1,options:[{value:"AM",text:"AM"},{value:"PM",text:"PM"}],required:t.required,disabled:t.disabled},on:{input:t.onInput},model:{value:t.meridiem,callback:function(e){t.meridiem=e},expression:"meridiem"}}):t._e()],1)},Ba=[],Pa=n("f906"),Da=n.n(Pa);Jn.a.extend(Da.a);var Ma,Ra,za={inheritAttrs:!1,props:{autofocus:Boolean,disabled:Boolean,id:[String,Number],notation:{type:Number,default:24},required:Boolean,step:{type:Number,default:5},value:{type:String}},data:function(){var t=this.toObject(this.value);return{time:this.value,hour:t.hour,minute:t.minute,meridiem:t.meridiem}},computed:{hours:function(){return this.options(24===this.notation?0:1,24===this.notation?23:12)},minutes:function(){return this.options(0,59,this.step)}},watch:{value:function(t){this.time=t},time:function(t){var e=this.toObject(t);this.hour=e.hour,this.minute=e.minute,this.meridiem=e.meridiem}},methods:{focus:function(){this.$refs.hour.focus()},setHour:function(t){t&&!this.minute&&(this.minute=0),t||(this.minute=null),this.onInput()},setMinute:function(t){t&&!this.hour&&(this.hour=0),t||(this.hour=null),this.onInput()},onInput:function(){if(null!==this.hour&&null!==this.minute){var t=Zn(this.hour||0),e=Zn(this.minute||0),n=String(this.meridiem||"AM").toUpperCase(),i=24===this.notation?"".concat(t,":").concat(e,":00"):"".concat(t,":").concat(e,":00 ").concat(n),s=24===this.notation?"HH:mm:ss":"hh:mm:ss A",a=Jn()("2000-01-01 "+i,"YYYY-MM-DD "+s);this.$emit("input",a.format("HH:mm"))}else this.$emit("input","")},onInvalid:function(t,e){this.$emit("invalid",t,e)},options:function(t,e){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,i=[],s=t;s<=e;s+=n)i.push({value:s,text:Zn(s)});return i},reset:function(){this.hour=null,this.minute=null,this.meridiem=null},round:function(t){return Math.floor(t/this.step)*this.step},toObject:function(t){var e=Jn()("2001-01-01 "+t+":00","YYYY-MM-DD HH:mm:ss");return t&&!1!==e.isValid()?{hour:e.format(24===this.notation?"H":"h"),minute:this.round(e.format("m")),meridiem:e.format("A")}:{hour:null,minute:null,meridiem:null}}}},Fa=za,Ua=(n("50da"),Object(u["a"])(Fa,Na,Ba,!1,null,null,null)),Ha=Ua.exports,Ka=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("label",{staticClass:"k-toggle-input",attrs:{"data-disabled":t.disabled}},[n("input",{ref:"input",staticClass:"k-toggle-input-native",attrs:{disabled:t.disabled,id:t.id,type:"checkbox"},domProps:{checked:t.value},on:{change:function(e){return t.onInput(e.target.checked)}}}),n("span",{staticClass:"k-toggle-input-label",domProps:{innerHTML:t._s(t.label)}})])},Va=[],Ya={inheritAttrs:!1,props:{autofocus:Boolean,disabled:Boolean,id:[Number,String],text:{type:[Array,String],default:function(){return[this.$t("off"),this.$t("on")]}},required:Boolean,value:Boolean},computed:{label:function(){return _t()(this.text)?this.value?this.text[1]:this.text[0]:this.text}},watch:{value:function(){this.onInvalid()}},mounted:function(){this.onInvalid(),this.$props.autofocus&&this.focus()},methods:{focus:function(){this.$refs.input.focus()},onEnter:function(t){"Enter"===t.key&&this.$refs.input.click()},onInput:function(t){this.$emit("input",t)},onInvalid:function(){this.$emit("invalid",this.$v.$invalid,this.$v)},select:function(){this.$refs.input.focus()}},validations:function(){return{value:{required:!this.required||ns["required"]}}}},Wa=Ya,Ga=(n("bb41"),Object(u["a"])(Wa,Ka,Va,!1,null,null,null)),Ja=Ga.exports,Za={extends:Is,props:Object(k["a"])({},Is.props,{autocomplete:{type:String,default:"url"},type:{type:String,default:"url"}})},Xa=Za,Qa=Object(u["a"])(Xa,Ma,Ra,!1,null,null,null),to=Qa.exports,eo=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-checkboxes-field",attrs:{counter:t.counterOptions}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},no=[],io={inheritAttrs:!1,props:Object(k["a"])({},Ii.props,Hi.props,ps.props,{counter:{type:Boolean,default:!0}}),computed:{counterOptions:function(){return null!==this.value&&!this.disabled&&!1!==this.counter&&{count:this.value&&_t()(this.value)?this.value.length:0,min:this.min,max:this.max}}},methods:{focus:function(){this.$refs.input.focus()}}},so=io,ao=Object(u["a"])(so,eo,no,!1,null,null,null),oo=ao.exports,ro=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-date-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,type:t.inputType,value:t.date,theme:"field"}},"k-input",t.$props,!1),t.listeners),[n("template",{slot:"icon"},[n("k-dropdown",[n("k-button",{staticClass:"k-input-icon-button",attrs:{icon:t.icon,tooltip:t.$t("date.select"),tabindex:"-1"},on:{click:function(e){return t.$refs.dropdown.toggle()}}}),n("k-dropdown-content",{ref:"dropdown",attrs:{align:"right"}},[n("k-calendar",{attrs:{value:t.date},on:{input:function(e){t.onInput(e),t.$refs.dropdown.close()}}})],1)],1)],1)],2)],1)},lo=[],uo={inheritAttrs:!1,props:Object(k["a"])({},Ii.props,Hi.props,Cs.props,{icon:{type:String,default:"calendar"}}),data:function(){return{date:this.value,listeners:Object(k["a"])({},this.$listeners,{input:this.onInput})}},computed:{inputType:function(){return!1===this.time?"date":"datetime"}},watch:{value:function(t){this.date=t}},methods:{focus:function(){this.$refs.input.focus()},onInput:function(t){this.date=t,this.$emit("input",t)}}},co=uo,po=Object(u["a"])(co,ro,lo,!1,null,null,null),fo=po.exports,ho=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-email-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners),[t.link?n("k-button",{staticClass:"k-input-icon-button",attrs:{slot:"icon",icon:t.icon,link:"mailto:"+t.value,tooltip:t.$t("open"),tabindex:"-1",target:"_blank"},slot:"icon"}):t._e()],1)],1)},mo=[],go={inheritAttrs:!1,props:Object(k["a"])({},Ii.props,Hi.props,Bs.props,{link:{type:Boolean,default:!0},icon:{type:String,default:"email"}}),methods:{focus:function(){this.$refs.input.focus()}}},bo=go,vo=Object(u["a"])(bo,ho,mo,!1,null,null,null),ko=vo.exports,$o=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-files-field"},"k-field",t.$props,!1),[t.more&&!t.disabled?n("template",{slot:"options"},[n("k-button-group",{staticClass:"k-field-options"},[t.uploads?[n("k-dropdown",[n("k-button",{ref:"pickerToggle",staticClass:"k-field-options-button",attrs:{icon:"add"},on:{click:function(e){return t.$refs.picker.toggle()}}},[t._v("\n "+t._s(t.$t("add"))+"\n ")]),n("k-dropdown-content",{ref:"picker",attrs:{align:"right"}},[n("k-dropdown-item",{attrs:{icon:"check"},on:{click:t.open}},[t._v(t._s(t.$t("select")))]),n("k-dropdown-item",{attrs:{icon:"upload"},on:{click:t.upload}},[t._v(t._s(t.$t("upload")))])],1)],1)]:[n("k-button",{staticClass:"k-field-options-button",attrs:{icon:"add"},on:{click:t.open}},[t._v(t._s(t.$t("add")))])]],2)],1):t._e(),t.selected.length?[n("k-draggable",{attrs:{element:t.elements.list,list:t.selected,"data-size":t.size,handle:!0},on:{end:t.onInput}},t._l(t.selected,function(e,i){return n(t.elements.item,{key:e.filename,tag:"component",attrs:{sortable:!t.disabled&&t.selected.length>1,text:e.text,link:e.link,info:e.info,image:e.image,icon:e.icon}},[t.disabled?t._e():n("k-button",{attrs:{slot:"options",tooltip:t.$t("remove"),icon:"remove"},on:{click:function(e){return t.remove(i)}},slot:"options"})],1)}),1)]:n("k-empty",{attrs:{layout:t.layout,icon:"image"},on:{click:t.open}},[t._v("\n "+t._s(t.empty||t.$t("field.files.empty"))+"\n ")]),n("k-files-dialog",{ref:"selector",on:{submit:t.select}}),n("k-upload",{ref:"fileUpload",on:{success:t.selectUpload}})],2)},_o=[],yo={inheritAttrs:!1,props:Object(k["a"])({},Ii.props,{empty:String,info:String,layout:String,max:Number,multiple:Boolean,parent:String,size:String,text:String,value:{type:Array,default:function(){return[]}}}),data:function(){return{selected:this.value}},computed:{elements:function(){var t={cards:{list:"k-cards",item:"k-card"},list:{list:"k-list",item:"k-list-item"}};return t[this.layout]?t[this.layout]:t["list"]},more:function(){return!this.max||this.max>this.selected.length}},watch:{value:function(t){this.selected=t}},methods:{focus:function(){},onInput:function(){this.$emit("input",this.selected)},remove:function(t){this.selected.splice(t,1),this.onInput()},removeById:function(t){this.selected=this.selected.filter(function(e){return e.id!==t}),this.onInput()},select:function(t){var e=this;0!==t.length?(this.selected=this.selected.filter(function(e){return t.filter(function(t){return t.id===e.id}).length>0}),t.forEach(function(t){0===e.selected.filter(function(e){return t.id===e.id}).length&&e.selected.push(t)}),this.onInput()):this.selected=[]}}},wo={mixins:[yo],props:{uploads:[Boolean,Object,Array]},created:function(){this.$events.$on("file.delete",this.removeById)},destroyed:function(){this.$events.$off("file.delete",this.removeById)},methods:{prompt:function(t){t.stopPropagation(),this.uploads?this.$refs.picker.toggle():this.open()},open:function(){if(this.disabled)return!1;this.$refs.selector.open({endpoint:this.endpoints.field,max:this.max,multiple:this.multiple,selected:this.selected.map(function(t){return t.id})})},selectUpload:function(t,e){var n=this;!1===this.multiple&&(this.selected=[]),e.forEach(function(t){n.selected.push(t)}),this.onInput(),this.$events.$emit("model.update")},upload:function(){this.$refs.fileUpload.open({url:y.api+"/"+this.endpoints.field+"/upload",multiple:this.multiple,accept:this.uploads.accept})}}},xo=wo,Oo=(n("4a4b"),Object(u["a"])(xo,$o,_o,!1,null,null,null)),Co=Oo.exports,So=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-headline",{staticClass:"k-headline-field",attrs:{"data-numbered":t.numbered,size:"large"}},[t._v("\n "+t._s(t.label)+"\n")])},Eo=[],jo={props:{label:String,numbered:Boolean}},To=jo,Lo=(n("19d7"),Object(u["a"])(To,So,Eo,!1,null,null,null)),Io=Lo.exports,qo=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-field k-info-field"},[n("k-headline",[t._v(t._s(t.label))]),n("k-box",{attrs:{theme:t.theme}},[n("k-text",{domProps:{innerHTML:t._s(t.text)}})],1)],1)},Ao=[],No={props:{label:String,text:String,theme:{type:String,default:"info"}}},Bo=No,Po=(n("ddfd"),Object(u["a"])(Bo,qo,Ao,!1,null,null,null)),Do=Po.exports,Mo=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("hr",{staticClass:"k-line-field"})},Ro=[],zo=(n("718c"),{}),Fo=Object(u["a"])(zo,Mo,Ro,!1,null,null,null),Uo=Fo.exports,Ho=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-multiselect-field",attrs:{input:t._uid,counter:t.counterOptions},on:{blur:t.blur}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},Ko=[],Vo={inheritAttrs:!1,props:Object(k["a"])({},Ii.props,Hi.props,Fs.props,{counter:{type:Boolean,default:!0},icon:{type:String,default:"angle-down"}}),computed:{counterOptions:function(){return null!==this.value&&!this.disabled&&!1!==this.counter&&{count:this.value&&_t()(this.value)?this.value.length:0,min:this.min,max:this.max}}},methods:{blur:function(t){this.$refs.input.blur(t)},focus:function(){this.$refs.input.focus()}}},Yo=Vo,Wo=Object(u["a"])(Yo,Ho,Ko,!1,null,null,null),Go=Wo.exports,Jo=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-number-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},Zo=[],Xo={inheritAttrs:!1,props:Object(k["a"])({},Ii.props,Hi.props,Ws.props),methods:{focus:function(){this.$refs.input.focus()}}},Qo=Xo,tr=Object(u["a"])(Qo,Jo,Zo,!1,null,null,null),er=tr.exports,nr=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-pages-field"},"k-field",t.$props,!1),[n("k-button-group",{staticClass:"k-field-options",attrs:{slot:"options"},slot:"options"},[t.more&&!t.disabled?n("k-button",{staticClass:"k-field-options-button",attrs:{icon:"add"},on:{click:t.open}},[t._v("\n "+t._s(t.$t("select"))+"\n ")]):t._e()],1),t.selected.length?[n("k-draggable",{attrs:{element:t.elements.list,handle:!0,list:t.selected,"data-size":t.size},on:{end:t.onInput}},t._l(t.selected,function(e,i){return n(t.elements.item,{key:e.id,tag:"component",attrs:{sortable:!t.disabled&&t.selected.length>1,text:e.text,info:e.info,link:e.link,icon:e.icon,image:e.image}},[t.disabled?t._e():n("k-button",{attrs:{slot:"options",icon:"remove"},on:{click:function(e){return t.remove(i)}},slot:"options"})],1)}),1)]:n("k-empty",{attrs:{layout:t.layout,icon:"page"},on:{click:t.open}},[t._v("\n "+t._s(t.empty||t.$t("field.pages.empty"))+"\n ")]),n("k-pages-dialog",{ref:"selector",on:{submit:t.select}})],2)},ir=[],sr={mixins:[yo],methods:{open:function(){if(this.disabled)return!1;this.$refs.selector.open({endpoint:this.endpoints.field,max:this.max,multiple:this.multiple,selected:this.selected.map(function(t){return t.id})})}}},ar=sr,or=(n("7e85"),Object(u["a"])(ar,nr,ir,!1,null,null,null)),rr=or.exports,lr=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-password-field",attrs:{input:t._uid,counter:t.counterOptions}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},ur=[],cr={inheritAttrs:!1,props:Object(k["a"])({},Ii.props,Hi.props,Xs.props,{counter:{type:Boolean,default:!0},minlength:{type:Number,default:8},icon:{type:String,default:"key"}}),computed:{counterOptions:function(){return null!==this.value&&!this.disabled&&!1!==this.counter&&{count:this.value?String(this.value).length:0,min:this.minlength,max:this.maxlength}}},methods:{focus:function(){this.$refs.input.focus()}}},dr=cr,pr=Object(u["a"])(dr,lr,ur,!1,null,null,null),fr=pr.exports,hr=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-radio-field"},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},mr=[],gr={inheritAttrs:!1,props:Object(k["a"])({},Ii.props,Hi.props,sa.props),methods:{focus:function(){this.$refs.input.focus()}}},br=gr,vr=Object(u["a"])(br,hr,mr,!1,null,null,null),kr=vr.exports,$r=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-range-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},_r=[],yr={inheritAttrs:!1,props:Object(k["a"])({},Ii.props,Hi.props,ca.props),methods:{focus:function(){this.$refs.input.focus()}}},wr=yr,xr=Object(u["a"])(wr,$r,_r,!1,null,null,null),Or=xr.exports,Cr=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-select-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},Sr=[],Er={inheritAttrs:!1,props:Object(k["a"])({},Ii.props,Hi.props,ga.props,{icon:{type:String,default:"angle-down"}}),methods:{focus:function(){this.$refs.input.focus()}}},jr=Er,Tr=Object(u["a"])(jr,Cr,Sr,!1,null,null,null),Lr=Tr.exports,Ir=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-structure-field",nativeOn:{click:function(t){t.stopPropagation()}}},"k-field",t.$props,!1),[n("template",{slot:"options"},[t.more&&null===t.currentIndex?n("k-button",{ref:"add",attrs:{id:t._uid,icon:"add"},on:{click:t.add}},[t._v("\n "+t._s(t.$t("add"))+"\n ")]):t._e()],1),null!==t.currentIndex?[n("div",{staticClass:"k-structure-backdrop",on:{click:t.escape}}),n("section",{staticClass:"k-structure-form"},[n("k-form",{ref:"form",staticClass:"k-structure-form-fields",attrs:{fields:t.formFields},on:{input:t.onInput,submit:t.submit},model:{value:t.currentModel,callback:function(e){t.currentModel=e},expression:"currentModel"}}),n("footer",{staticClass:"k-structure-form-buttons"},[n("k-button",{staticClass:"k-structure-form-cancel-button",attrs:{icon:"cancel"},on:{click:t.close}},[t._v(t._s(t.$t("cancel")))]),"new"!==t.currentIndex?n("k-pagination",{attrs:{dropdown:!1,total:t.items.length,limit:1,page:t.currentIndex+1,details:!0,validate:t.beforePaginate},on:{paginate:t.paginate}}):t._e(),n("k-button",{staticClass:"k-structure-form-submit-button",attrs:{icon:"check"},on:{click:t.submit}},[t._v(t._s(t.$t("new"!==t.currentIndex?"confirm":"add")))])],1)],1)]:0===t.items.length?n("k-empty",{attrs:{icon:"list-bullet"},on:{click:t.add}},[t._v("\n "+t._s(t.empty||t.$t("field.structure.empty"))+"\n ")]):[n("table",{staticClass:"k-structure-table",attrs:{"data-sortable":t.isSortable}},[n("thead",[n("tr",[n("th",{staticClass:"k-structure-table-index"},[t._v("#")]),t._l(t.columns,function(e,i){return n("th",{key:i+"-header",staticClass:"k-structure-table-column",style:"width:"+t.width(e.width),attrs:{"data-align":e.align}},[t._v("\n "+t._s(e.label)+"\n ")])}),n("th")],2)]),n("k-draggable",{attrs:{list:t.items,"data-disabled":t.disabled,options:t.dragOptions,handle:!0,element:"tbody"},on:{end:t.onInput}},t._l(t.paginatedItems,function(e,i){return n("tr",{key:i,on:{click:function(t){t.stopPropagation()}}},[n("td",{staticClass:"k-structure-table-index"},[t.isSortable?n("k-sort-handle"):t._e(),n("span",{staticClass:"k-structure-table-index-number"},[t._v(t._s(t.indexOf(i)))])],1),t._l(t.columns,function(s,a){return n("td",{key:a,staticClass:"k-structure-table-column",style:"width:"+t.width(s.width),attrs:{title:s.label,"data-align":s.align},on:{click:function(e){return t.jump(i,a)}}},[!1===t.columnIsEmpty(e[a])?[t.previewExists(s.type)?n("k-"+s.type+"-field-preview",{tag:"component",attrs:{value:e[a],column:s,field:t.fields[a]}}):[n("p",{staticClass:"k-structure-table-text"},[t._v("\n "+t._s(s.before)+" "+t._s(t.displayText(t.fields[a],e[a])||"–")+" "+t._s(s.after)+"\n ")])]]:t._e()],2)}),n("td",{staticClass:"k-structure-table-option"},[n("k-button",{attrs:{tooltip:t.$t("remove"),icon:"remove"},on:{click:function(e){return t.confirmRemove(i)}}})],1)],2)}),0)],1),t.limit?n("k-pagination",t._b({on:{paginate:t.paginateItems}},"k-pagination",t.pagination,!1)):t._e(),t.disabled?t._e():n("k-dialog",{ref:"remove",attrs:{button:t.$t("delete"),theme:"negative"},on:{submit:t.remove}},[n("k-text",[t._v(t._s(t.$t("field.structure.delete.confirm")))])],1)]],2)},qr=[],Ar=n("59ad"),Nr=n.n(Ar),Br=function(t){t=t||{};var e=t.desc?-1:1,n=-e,i=/^0/,s=/\s+/g,a=/^\s+|\s+$/g,o=/[^\x00-\x80]/,r=/^0x[0-9a-f]+$/i,l=/(0x[\da-fA-F]+|(^[\+\-]?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?(?=\D|\s|$))|\d+)/g,u=/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,c=t.insensitive?function(t){return d(""+t).replace(a,"")}:function(t){return(""+t).replace(a,"")};function d(t){return t.toLocaleLowerCase?t.toLocaleLowerCase():t.toLowerCase()}function p(t){return t.replace(l,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0")}function f(t,e){return(!t.match(i)||1===e)&&Nr()(t)||t.replace(s," ").replace(a,"")||0}return function(t,i){var s=c(t),a=c(i);if(!s&&!a)return 0;if(!s&&a)return n;if(s&&!a)return e;var l=p(s),d=p(a),h=gs()(s.match(r),16)||1!==l.length&&Date.parse(s),m=gs()(a.match(r),16)||h&&a.match(u)&&Date.parse(a)||null;if(m){if(hm)return e}for(var g=l.length,b=d.length,v=0,k=Math.max(g,b);v0)return e;if(y<0)return n;if(v===k-1)return 0}else{if($<_)return n;if($>_)return e}}return 0}},Pr=n("f499"),Dr=n.n(Pr),Mr=function(t){if(void 0!==t)return JSON.parse(Dr()(t))};Array.prototype.sortBy=function(t){var e=Br(),n=t.split(" "),i=n[0],s=n[1]||"asc";return this.sort(function(t,n){var a=String(t[i]).toLowerCase(),o=String(n[i]).toLowerCase();return"desc"===s?e(o,a):e(a,o)})};var Rr,zr,Fr,Ur,Hr={inheritAttrs:!1,props:Object(k["a"])({},Ii.props,{columns:Object,empty:String,fields:Object,limit:Number,max:Number,min:Number,sortable:{type:Boolean,default:!0},sortBy:String,value:{type:Array,default:function(){return[]}}}),data:function(){return{items:this.makeItems(this.value),currentIndex:null,currentModel:null,trash:null,page:1}},computed:{dragOptions:function(){return{disabled:!this.isSortable,fallbackClass:"k-sortable-row-fallback"}},formFields:function(){var t=this,e={};return nt()(this.fields).forEach(function(n){var i=t.fields[n];i.section=t.name,i.endpoints={field:t.endpoints.field+"+"+n,section:t.endpoints.section,model:t.endpoints.model},e[n]=i}),e},more:function(){return!0!==this.disabled&&!(this.max&&this.items.length>=this.max)},isSortable:function(){return!this.sortBy&&(!this.limit&&(!0!==this.disabled&&(!(this.items.length<=1)&&!1!==this.sortable)))},pagination:function(){var t=0;return this.limit&&(t=(this.page-1)*this.limit),{page:this.page,offset:t,limit:this.limit,total:this.items.length,align:"center",details:!0}},paginatedItems:function(){return this.limit?this.items.slice(this.pagination.offset,this.pagination.offset+this.limit):this.items}},watch:{value:function(t){t!=this.items&&(this.items=this.makeItems(t))}},methods:{add:function(){var t=this;if(!0===this.disabled)return!1;if(null!==this.currentIndex)return this.escape(),!1;var e={};nt()(this.fields).forEach(function(n){var i=t.fields[n];null!==i.default?e[n]=Mr(i.default):e[n]=null}),this.currentIndex="new",this.currentModel=e,this.createForm()},close:function(){this.currentIndex=null,this.currentModel=null,this.$events.$off("keydown.esc",this.escape),this.$events.$off("keydown.cmd.s",this.submit),this.$store.dispatch("form/enable")},columnIsEmpty:function(t){return void 0===t||null===t||""===t||("object"===Object(zt["a"])(t)&&0===nt()(t).length&&t.constructor===Object||void 0!==t.length&&0===t.length)},confirmRemove:function(t){this.close(),this.trash=t,this.$refs.remove.open()},createForm:function(t){var e=this;this.$events.$on("keydown.esc",this.escape),this.$events.$on("keydown.cmd.s",this.submit),this.$store.dispatch("form/disable"),this.$nextTick(function(){e.$refs.form&&e.$refs.form.focus(t)})},displayText:function(t,e){switch(t.type){case"user":return e.email;case"date":var n=Jn()(e),i=!0===t.time?"YYYY-MM-DD HH:mm":"YYYY-MM-DD";return n.isValid()?n.format(i):"";case"tags":case"multiselect":return e.map(function(t){return t.text}).join(", ");case"checkboxes":return e.map(function(e){var n=e;return t.options.forEach(function(t){t.value===e&&(n=t.text)}),n}).join(", ");case"radio":case"select":var s=t.options.filter(function(t){return t.value===e})[0];return s?s.text:null}return"object"===Object(zt["a"])(e)&&null!==e?"…":e},escape:function(){var t=this;if("new"===this.currentIndex){var e=kt()(this.currentModel),n=!0;if(e.forEach(function(e){!1===t.columnIsEmpty(e)&&(n=!1)}),!0===n)return void this.close()}this.submit()},focus:function(){this.$refs.add&&this.$refs.add.focus&&this.$refs.add.focus()},indexOf:function(t){return this.limit?(this.page-1)*this.limit+t+1:t+1},isActive:function(t){return this.currentIndex===t},jump:function(t,e){this.open(t+this.pagination.offset,e)},makeItems:function(t){return!1===_t()(t)?[]:this.sort(t)},onInput:function(){this.$emit("input",this.items)},open:function(t,e){this.currentIndex=t,this.currentModel=Mr(this.items[t]),this.createForm(e)},beforePaginate:function(){return this.save(this.currentModel)},paginate:function(t){this.open(t.offset)},paginateItems:function(t){this.page=t.page},previewExists:function(t){return void 0!==I["a"].options.components["k-"+t+"-field-preview"]||void 0!==this.$options.components["k-"+t+"-field-preview"]},remove:function(){if(null===this.trash)return!1;this.items.splice(this.trash,1),this.trash=null,this.$refs.remove.close(),this.onInput(),0===this.paginatedItems.length&&this.page>1&&this.page--,this.items=this.sort(this.items)},sort:function(t){return this.sortBy?t.sortBy(this.sortBy):t},save:function(){var t=this;return null!==this.currentIndex&&void 0!==this.currentIndex?this.validate(this.currentModel).then(function(){return"new"===t.currentIndex?t.items.push(t.currentModel):t.items[t.currentIndex]=t.currentModel,t.items=t.sort(t.items),t.onInput(),!0}).catch(function(e){throw t.$store.dispatch("notification/error",{message:t.$t("error.form.incomplete"),details:e}),e}):Ye.a.resolve()},submit:function(){this.save().then(this.close).catch(function(){})},validate:function(t){return this.$api.post(this.endpoints.field+"/validate",t).then(function(t){if(t.length>0)throw t;return!0})},width:function(t){if(!t)return"auto";var e=t.toString().split("/");if(2!==e.length)return"auto";var n=Number(e[0]),i=Number(e[1]);return Nr()(100/i*n,2).toFixed(2)+"%"}}},Kr=Hr,Vr=(n("088c"),Object(u["a"])(Kr,Ir,qr,!1,null,null,null)),Yr=Vr.exports,Wr=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-tags-field",attrs:{input:t._uid,counter:t.counterOptions}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},Gr=[],Jr={inheritAttrs:!1,props:Object(k["a"])({},Ii.props,Hi.props,ya.props,{counter:{type:Boolean,default:!0}}),computed:{counterOptions:function(){return null!==this.value&&!this.disabled&&!1!==this.counter&&{count:this.value&&_t()(this.value)?this.value.length:0,min:this.min,max:this.max}}},methods:{focus:function(){this.$refs.input.focus()}}},Zr=Jr,Xr=Object(u["a"])(Zr,Wr,Gr,!1,null,null,null),Qr=Xr.exports,tl=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-tel-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},el=[],nl={inheritAttrs:!1,props:Object(k["a"])({},Ii.props,Hi.props,Ca.props,{icon:{type:String,default:"phone"}}),methods:{focus:function(){this.$refs.input.focus()}}},il=nl,sl=Object(u["a"])(il,tl,el,!1,null,null,null),al=sl.exports,ol=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-text-field",attrs:{input:t._uid,counter:t.counterOptions}},"k-field",t.$props,!1),[t._t("options",null,{slot:"options"}),n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],2)},rl=[],ll={inheritAttrs:!1,props:Object(k["a"])({},Ii.props,Hi.props,Is.props,{counter:{type:Boolean,default:!0}}),computed:{counterOptions:function(){return null!==this.value&&!this.disabled&&!1!==this.counter&&{count:this.value?String(this.value).length:0,min:this.minlength,max:this.maxlength}}},methods:{focus:function(){this.$refs.input.focus()}}},ul=ll,cl=(n("b746"),Object(u["a"])(ul,ol,rl,!1,null,null,null)),dl=cl.exports,pl=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-textarea-field",attrs:{input:t._uid,counter:t.counterOptions}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,type:"textarea",theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},fl=[],hl={inheritAttrs:!1,props:Object(k["a"])({},Ii.props,Hi.props,Aa.props,{counter:{type:Boolean,default:!0}}),computed:{counterOptions:function(){return null!==this.value&&!this.disabled&&!1!==this.counter&&{count:this.value?this.value.length:0,min:this.minlength,max:this.maxlength}}},methods:{focus:function(){this.$refs.input.focus()}}},ml=hl,gl=Object(u["a"])(ml,pl,fl,!1,null,null,null),bl=gl.exports,vl=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-time-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},kl=[],$l={inheritAttrs:!1,props:Object(k["a"])({},Ii.props,Hi.props,Ha.props,{icon:{type:String,default:"clock"}}),methods:{focus:function(){this.$refs.input.focus()}}},_l=$l,yl=Object(u["a"])(_l,vl,kl,!1,null,null,null),wl=yl.exports,xl=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-toggle-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners))],1)},Ol=[],Cl={inheritAttrs:!1,props:Object(k["a"])({},Ii.props,Hi.props,Ja.props),methods:{focus:function(){this.$refs.input.focus()}}},Sl=Cl,El=Object(u["a"])(Sl,xl,Ol,!1,null,null,null),jl=El.exports,Tl=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-url-field",attrs:{input:t._uid}},"k-field",t.$props,!1),[n("k-input",t._g(t._b({ref:"input",attrs:{id:t._uid,theme:"field"}},"k-input",t.$props,!1),t.$listeners),[t.link?n("k-button",{staticClass:"k-input-icon-button",attrs:{slot:"icon",icon:t.icon,link:t.value,tooltip:t.$t("open"),tabindex:"-1",target:"_blank"},slot:"icon"}):t._e()],1)],1)},Ll=[],Il={inheritAttrs:!1,props:Object(k["a"])({},Ii.props,Hi.props,to.props,{link:{type:Boolean,default:!0},icon:{type:String,default:"url"}}),methods:{focus:function(){this.$refs.input.focus()}}},ql=Il,Al=Object(u["a"])(ql,Tl,Ll,!1,null,null,null),Nl=Al.exports,Bl=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-field",t._b({staticClass:"k-users-field"},"k-field",t.$props,!1),[n("k-button-group",{staticClass:"k-field-options",attrs:{slot:"options"},slot:"options"},[t.more&&!t.disabled?n("k-button",{staticClass:"k-field-options-button",attrs:{icon:"add"},on:{click:t.open}},[t._v("\n "+t._s(t.$t("select"))+"\n ")]):t._e()],1),t.selected.length?[n("k-draggable",{attrs:{element:t.elements.list,list:t.selected,handle:!0},on:{end:t.onInput}},t._l(t.selected,function(e,i){return n(t.elements.item,{key:e.email,tag:"component",attrs:{sortable:!t.disabled&&t.selected.length>1,text:e.username,info:e.info,link:t.$api.users.link(e.id),image:e.image,icon:e.icon}},[t.disabled?t._e():n("k-button",{attrs:{slot:"options",icon:"remove"},on:{click:function(e){return t.remove(i)}},slot:"options"})],1)}),1)]:n("k-empty",{attrs:{icon:"users"},on:{click:t.open}},[t._v("\n "+t._s(t.empty||t.$t("field.users.empty"))+"\n ")]),n("k-users-dialog",{ref:"selector",on:{submit:t.select}})],2)},Pl=[],Dl={mixins:[yo],methods:{open:function(){if(this.disabled)return!1;this.$refs.selector.open({endpoint:this.endpoints.field,max:this.max,multiple:this.multiple,selected:this.selected.map(function(t){return t.id})})}}},Ml=Dl,Rl=(n("7f6e"),Object(u["a"])(Ml,Bl,Pl,!1,null,null,null)),zl=Rl.exports,Fl=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("nav",{staticClass:"k-toolbar"},[n("div",{staticClass:"k-toolbar-wrapper"},[n("div",{staticClass:"k-toolbar-buttons"},[t._l(t.layout,function(e,i){return[e.divider?[n("span",{key:i,staticClass:"k-toolbar-divider"})]:e.dropdown?[n("k-dropdown",{key:i},[n("k-button",{key:i,staticClass:"k-toolbar-button",attrs:{icon:e.icon,tooltip:e.label,tabindex:"-1"},on:{click:function(e){t.$refs[i+"-dropdown"][0].toggle()}}}),n("k-dropdown-content",{ref:i+"-dropdown",refInFor:!0},t._l(e.dropdown,function(e,i){return n("k-dropdown-item",{key:i,attrs:{icon:e.icon},on:{click:function(n){return t.command(e.command,e.args)}}},[t._v("\n "+t._s(e.label)+"\n ")])}),1)],1)]:[n("k-button",{key:i,staticClass:"k-toolbar-button",attrs:{icon:e.icon,tooltip:e.label,tabindex:"-1"},on:{click:function(n){return t.command(e.command,e.args)}}})]]})],2)])])},Ul=[],Hl=function(t){this.command("insert",function(e,n){var i=[];return n.split("\n").forEach(function(e,n){var s="ol"===t?n+1+".":"-";i.push(s+" "+e)}),i.join("\n")})},Kl={layout:["headlines","bold","italic","|","link","email","file","|","code","ul","ol"],props:{buttons:{type:[Boolean,Array],default:!0},uploads:[Boolean,Object,Array]},data:function(){var t={},e={},n=[],i=this.commands();return!1===this.buttons?t:(_t()(this.buttons)&&(n=this.buttons),!0!==_t()(this.buttons)&&(n=this.$options.layout),n.forEach(function(n,s){if("|"===n)t["divider-"+s]={divider:!0};else if(i[n]){var a=i[n];t[n]=a,a.shortcut&&(e[a.shortcut]=n)}}),{layout:t,shortcuts:e})},methods:{command:function(t,e){"function"===typeof t?t.apply(this):this.$emit("command",t,e)},close:function(){var t=this;nt()(this.$refs).forEach(function(e){var n=t.$refs[e][0];n.close&&"function"===typeof n.close&&n.close()})},fileCommandSetup:function(){var t={label:this.$t("toolbar.button.file"),icon:"attachment"};return!1===this.uploads?t.command="selectFile":t.dropdown={select:{label:this.$t("toolbar.button.file.select"),icon:"check",command:"selectFile"},upload:{label:this.$t("toolbar.button.file.upload"),icon:"upload",command:"uploadFile"}},t},commands:function(){return{headlines:{label:this.$t("toolbar.button.headings"),icon:"title",dropdown:{h1:{label:this.$t("toolbar.button.heading.1"),icon:"title",command:"prepend",args:"#"},h2:{label:this.$t("toolbar.button.heading.2"),icon:"title",command:"prepend",args:"##"},h3:{label:this.$t("toolbar.button.heading.3"),icon:"title",command:"prepend",args:"###"}}},bold:{label:this.$t("toolbar.button.bold"),icon:"bold",command:"wrap",args:"**",shortcut:"b"},italic:{label:this.$t("toolbar.button.italic"),icon:"italic",command:"wrap",args:"*",shortcut:"i"},link:{label:this.$t("toolbar.button.link"),icon:"url",shortcut:"l",command:"dialog",args:"link"},email:{label:this.$t("toolbar.button.email"),icon:"email",shortcut:"e",command:"dialog",args:"email"},file:this.fileCommandSetup(),code:{label:this.$t("toolbar.button.code"),icon:"code",command:"wrap",args:"`"},ul:{label:this.$t("toolbar.button.ul"),icon:"list-bullet",command:function(){return Hl.apply(this,["ul"])}},ol:{label:this.$t("toolbar.button.ol"),icon:"list-numbers",command:function(){return Hl.apply(this,["ol"])}}}},shortcut:function(t,e){if(this.shortcuts[t]){var n=this.layout[this.shortcuts[t]];if(!n)return!1;e.preventDefault(),this.command(n.command,n.args)}}}},Vl=Kl,Yl=(n("df0d"),Object(u["a"])(Vl,Fl,Ul,!1,null,null,null)),Wl=Yl.exports,Gl=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("insert")},on:{close:t.cancel,submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.value,callback:function(e){t.value=e},expression:"value"}})],1)},Jl=[],Zl={data:function(){return{value:{email:null,text:null},fields:{email:{label:this.$t("email"),type:"email"},text:{label:this.$t("link.text"),type:"text"}}}},computed:{kirbytext:function(){return this.$store.state.system.info.kirbytext}},methods:{open:function(t,e){this.value.text=e,this.$refs.dialog.open()},cancel:function(){this.$emit("cancel")},createKirbytext:function(){var t=this.value.email||"";return this.value.text&&this.value.text.length>0?"(email: ".concat(t," text: ").concat(this.value.text,")"):"(email: ".concat(t,")")},createMarkdown:function(){var t=this.value.email||"";return this.value.text&&this.value.text.length>0?"[".concat(this.value.text,"](mailto:").concat(t,")"):"<".concat(t,">")},submit:function(){this.$emit("submit",this.kirbytext?this.createKirbytext():this.createMarkdown()),this.value={email:null,text:null},this.$refs.dialog.close()}}},Xl=Zl,Ql=Object(u["a"])(Xl,Gl,Jl,!1,null,null,null),tu=Ql.exports,eu=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-dialog",{ref:"dialog",attrs:{button:t.$t("insert")},on:{close:t.cancel,submit:function(e){return t.$refs.form.submit()}}},[n("k-form",{ref:"form",attrs:{fields:t.fields},on:{submit:t.submit},model:{value:t.value,callback:function(e){t.value=e},expression:"value"}})],1)},nu=[],iu={data:function(){return{value:{url:null,text:null},fields:{url:{label:this.$t("link"),type:"text",placeholder:this.$t("url.placeholder"),icon:"url"},text:{label:this.$t("link.text"),type:"text"}}}},computed:{kirbytext:function(){return this.$store.state.system.info.kirbytext}},methods:{open:function(t,e){this.value.text=e,this.$refs.dialog.open()},cancel:function(){this.$emit("cancel")},createKirbytext:function(){return this.value.text.length>0?"(link: ".concat(this.value.url," text: ").concat(this.value.text,")"):"(link: ".concat(this.value.url,")")},createMarkdown:function(){return this.value.text.length>0?"[".concat(this.value.text,"](").concat(this.value.url,")"):"<".concat(this.value.url,">")},submit:function(){this.$emit("submit",this.kirbytext?this.createKirbytext():this.createMarkdown()),this.value={url:null,text:null},this.$refs.dialog.close()}}},su=iu,au=Object(u["a"])(su,eu,nu,!1,null,null,null),ou=au.exports,ru=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.value?n("ul",{staticClass:"k-files-field-preview"},t._l(t.value,function(e){return n("li",{key:e.url},[n("k-link",{attrs:{title:e.filename,to:e.link},nativeOn:{click:function(t){t.stopPropagation()}}},["image"===e.type?n("k-image",t._b({},"k-image",t.imageOptions(e),!1)):n("k-icon",t._b({},"k-icon",e.icon,!1))],1)],1)}),0):t._e()},lu=[],uu=function(t){if(!t)return!1;var e=null,n=null;return t.list?(e=t.list.url,n=t.list.srcset):(e=t.url,n=t.srcset),!!e&&{src:e,srcset:n,back:t.back||"black",cover:t.cover}},cu={props:{value:Array,field:Object},methods:{imageOptions:function(t){var e=uu(t.image);return e.src?Object(k["a"])({},e,{back:"pattern",cover:!1},this.field.image||{}):{src:t.url}}}},du=cu,pu=(n("21dc"),Object(u["a"])(du,ru,lu,!1,null,null,null)),fu=pu.exports,hu=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("p",{staticClass:"k-url-field-preview"},[t._v("\n "+t._s(t.column.before)+"\n "),n("k-link",{attrs:{to:t.link,target:"_blank"},nativeOn:{click:function(t){t.stopPropagation()}}},[t._v(t._s(t.value))]),t._v("\n "+t._s(t.column.after)+"\n")],1)},mu=[],gu={props:{column:{type:Object,default:function(){return{}}},value:String},computed:{link:function(){return this.value}}},bu=gu,vu=(n("977f"),Object(u["a"])(bu,hu,mu,!1,null,null,null)),ku=vu.exports,$u={extends:ku,computed:{link:function(){return"mailto:"+this.value}}},_u=$u,yu=Object(u["a"])(_u,Rr,zr,!1,null,null,null),wu=yu.exports,xu=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.value?n("ul",{staticClass:"k-pages-field-preview"},t._l(t.value,function(e){return n("li",{key:e.id},[n("figure",[n("k-link",{attrs:{title:e.id,to:t.$api.pages.link(e.id)},nativeOn:{click:function(t){t.stopPropagation()}}},[n("k-icon",{staticClass:"k-pages-field-preview-image",attrs:{type:"page",back:"pattern"}}),n("figcaption",[t._v("\n "+t._s(e.text)+"\n ")])],1)],1)])}),0):t._e()},Ou=[],Cu={props:{value:Array}},Su=Cu,Eu=(n("d0c1"),Object(u["a"])(Su,xu,Ou,!1,null,null,null)),ju=Eu.exports,Tu=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.value?n("ul",{staticClass:"k-users-field-preview"},t._l(t.value,function(e){return n("li",{key:e.email},[n("figure",[n("k-link",{attrs:{title:e.email,to:t.$api.users.link(e.id)},nativeOn:{click:function(t){t.stopPropagation()}}},[e.avatar?n("k-image",{staticClass:"k-users-field-preview-avatar",attrs:{src:e.avatar.url,back:"pattern"}}):n("k-icon",{staticClass:"k-users-field-preview-avatar",attrs:{type:"user",back:"pattern"}}),n("figcaption",[t._v("\n "+t._s(e.username)+"\n ")])],1)],1)])}),0):t._e()},Lu=[],Iu={props:{value:Array}},qu=Iu,Au=(n("3a85"),Object(u["a"])(qu,Tu,Lu,!1,null,null,null)),Nu=Au.exports,Bu=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-bar"},[t.$slots.left?n("div",{staticClass:"k-bar-slot",attrs:{"data-position":"left"}},[t._t("left")],2):t._e(),t.$slots.center?n("div",{staticClass:"k-bar-slot",attrs:{"data-position":"center"}},[t._t("center")],2):t._e(),t.$slots.right?n("div",{staticClass:"k-bar-slot",attrs:{"data-position":"right"}},[t._t("right")],2):t._e()])},Pu=[],Du=(n("6f7b"),{}),Mu=Object(u["a"])(Du,Bu,Pu,!1,null,null,null),Ru=Mu.exports,zu=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",t._g({staticClass:"k-box",attrs:{"data-theme":t.theme}},t.$listeners),[t._t("default",[n("k-text",{domProps:{innerHTML:t._s(t.text)}})])],2)},Fu=[],Uu={props:{theme:String,text:String}},Hu=Uu,Ku=(n("7dc7"),Object(u["a"])(Hu,zu,Fu,!1,null,null,null)),Vu=Ku.exports,Yu=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("figure",t._g({staticClass:"k-card"},t.$listeners),[t.sortable?n("k-sort-handle"):t._e(),n(t.wrapper,{tag:"component",attrs:{to:t.link,target:t.target}},[t.imageOptions?n("k-image",t._b({staticClass:"k-card-image"},"k-image",t.imageOptions,!1)):n("span",{staticClass:"k-card-icon",style:"padding-bottom:"+t.ratioPadding},[n("k-icon",t._b({},"k-icon",t.icon,!1))],1),n("figcaption",{staticClass:"k-card-content"},[n("span",{staticClass:"k-card-text",attrs:{"data-noinfo":!t.info}},[t._v(t._s(t.text))]),t.info?n("span",{staticClass:"k-card-info",domProps:{innerHTML:t._s(t.info)}}):t._e()])],1),n("nav",{staticClass:"k-card-options"},[t.flag?n("k-button",t._b({staticClass:"k-card-options-button",on:{click:t.flag.click}},"k-button",t.flag,!1)):t._e(),t._t("options",[t.options?n("k-button",{staticClass:"k-card-options-button",attrs:{tooltip:t.$t("options"),icon:"dots"},on:{click:function(e){return e.stopPropagation(),t.$refs.dropdown.toggle()}}}):t._e(),n("k-dropdown-content",{ref:"dropdown",staticClass:"k-card-options-dropdown",attrs:{options:t.options,align:"right"},on:{action:function(e){return t.$emit("action",e)}}})])],2)],1)},Wu=[],Gu=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"3/2",e=String(t).split("/");if(2!==e.length)return"100%";var n=Number(e[0]),i=Number(e[1]),s=100;return 0!==n&&0!==i&&(s=100/n*i),s+"%"},Ju={inheritAttrs:!1,props:{column:String,flag:Object,icon:{type:Object,default:function(){return{type:"file",back:"black"}}},image:Object,info:String,link:String,options:[Array,Function],sortable:Boolean,target:String,text:String},computed:{wrapper:function(){return this.link?"k-link":"div"},ratioPadding:function(){return this.icon&&this.icon.ratio?Gu(this.icon.ratio):Gu("3/2")},imageOptions:function(){if(!this.image)return!1;var t=null,e=null;return this.image.cards?(t=this.image.cards.url,e=this.image.cards.srcset):(t=this.image.url,e=this.image.srcset),!!t&&{src:t,srcset:e,back:this.image.back||"black",cover:this.image.cover,ratio:this.image.ratio||"3/2",sizes:this.getSizes(this.column)}}},methods:{getSizes:function(t){switch(t){case"1/2":case"2/4":return"(min-width: 30em) and (max-width: 65em) 59em, (min-width: 65em) 44em, 27em";case"1/3":return"(min-width: 30em) and (max-width: 65em) 59em, (min-width: 65em) 29.333em, 27em";case"1/4":return"(min-width: 30em) and (max-width: 65em) 59em, (min-width: 65em) 22em, 27em";case"2/3":return"(min-width: 30em) and (max-width: 65em) 59em, (min-width: 65em) 27em, 27em";case"3/4":return"(min-width: 30em) and (max-width: 65em) 59em, (min-width: 65em) 66em, 27em";default:return"(min-width: 30em) and (max-width: 65em) 59em, (min-width: 65em) 88em, 27em"}}}},Zu=Ju,Xu=(n("c119"),Object(u["a"])(Zu,Yu,Wu,!1,null,null,null)),Qu=Xu.exports,tc=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-cards"},[t._t("default",t._l(t.cards,function(e,i){return n("k-card",t._g(t._b({key:i},"k-card",e,!1),t.$listeners))}))],2)},ec=[],nc={props:{cards:Array}},ic=nc,sc=(n("f56d"),Object(u["a"])(ic,tc,ec,!1,null,null,null)),ac=sc.exports,oc=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-collection",attrs:{"data-layout":t.layout}},[n("k-draggable",{attrs:{list:t.items,options:t.dragOptions,element:t.elements.list,"data-size":t.size,handle:!0},on:{change:function(e){return t.$emit("change",e)},end:t.onEnd}},t._l(t.items,function(e,i){return n(t.elements.item,t._b({key:i,tag:"component",class:{"k-draggable-item":e.sortable},on:{action:function(n){return t.$emit("action",e,n)},dragstart:function(n){return t.onDragStart(n,e.dragText)}}},"component",e,!1))}),1),t.hasFooter?n("footer",{staticClass:"k-collection-footer"},[t.help?n("k-text",{staticClass:"k-collection-help",attrs:{theme:"help"},domProps:{innerHTML:t._s(t.help)}}):t._e(),n("div",{staticClass:"k-collection-pagination"},[t.hasPagination?n("k-pagination",t._b({on:{paginate:function(e){return t.$emit("paginate",e)}}},"k-pagination",t.paginationOptions,!1)):t._e()],1)],1):t._e()],1)},rc=[],lc={props:{help:String,items:{type:[Array,Object],default:function(){return[]}},layout:{type:String,default:"list"},size:String,sortable:Boolean,pagination:{type:[Boolean,Object],default:function(){return!1}}},computed:{hasPagination:function(){return!1!==this.pagination&&(!0!==this.paginationOptions.hide&&!(this.pagination.total<=this.pagination.limit))},hasFooter:function(){return!(!this.hasPagination&&!this.help)},dragOptions:function(){return{sort:this.sortable,disabled:!1===this.sortable,draggable:".k-draggable-item"}},elements:function(){var t={cards:{list:"k-cards",item:"k-card"},list:{list:"k-list",item:"k-list-item"}};return t[this.layout]?t[this.layout]:t["list"]},paginationOptions:function(){var t="object"!==Object(zt["a"])(this.pagination)?{}:this.pagination;return Object(k["a"])({limit:10,details:!0,keys:!1,total:0,hide:!1},t)}},watch:{$props:function(){this.$forceUpdate()}},over:null,methods:{onEnd:function(){this.over&&this.over.removeAttribute("data-over"),this.$emit("sort",this.items)},onDragStart:function(t,e){this.$store.dispatch("drag",{type:"text",data:e})}}},uc=lc,cc=(n("8c28"),Object(u["a"])(uc,oc,rc,!1,null,null,null)),dc=cc.exports,pc=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-column",attrs:{"data-width":t.width}},[t._t("default")],2)},fc=[],hc={props:{width:String}},mc=hc,gc=(n("c9cb"),Object(u["a"])(mc,pc,fc,!1,null,null,null)),bc=gc.exports,vc=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-dropzone",attrs:{"data-dragging":t.dragging,"data-over":t.over},on:{dragenter:t.onEnter,dragleave:t.onLeave,dragover:t.onOver,drop:t.onDrop}},[t._t("default")],2)},kc=[],$c={props:{label:{type:String,default:"Drop to upload"},disabled:{type:Boolean,default:!1}},data:function(){return{files:[],dragging:!1,over:!1}},methods:{cancel:function(){this.reset()},reset:function(){this.dragging=!1,this.over=!1},onDrop:function(t){return!0===this.disabled?this.reset():t.dataTransfer.types?!1===t.dataTransfer.types.includes("Files")?this.reset():(this.$events.$emit("dropzone.drop"),this.files=t.dataTransfer.files,this.$emit("drop",this.files),void this.reset()):this.reset()},onEnter:function(t){!1===this.disabled&&t.dataTransfer.types&&t.dataTransfer.types.includes("Files")&&(this.dragging=!0)},onLeave:function(){this.reset()},onOver:function(t){!1===this.disabled&&t.dataTransfer.types&&t.dataTransfer.types.includes("Files")&&(t.dataTransfer.dropEffect="copy",this.over=!0)}}},_c=$c,yc=(n("414d"),Object(u["a"])(_c,vc,kc,!1,null,null,null)),wc=yc.exports,xc=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",t._g({staticClass:"k-empty",attrs:{"data-layout":t.layout}},t.$listeners),[t.icon?n("k-icon",{attrs:{type:t.icon}}):t._e(),n("p",[t._t("default")],2)],1)},Oc=[],Cc={props:{text:String,icon:String,layout:{type:String,default:"list"}}},Sc=Cc,Ec=(n("ba8f"),Object(u["a"])(Sc,xc,Oc,!1,null,null,null)),jc=Ec.exports,Tc=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-file-preview"},[n("k-view",{staticClass:"k-file-preview-layout"},[n("div",{staticClass:"k-file-preview-image"},[n("a",{directives:[{name:"tab",rawName:"v-tab"}],staticClass:"k-file-preview-image-link",attrs:{href:t.file.url,title:t.$t("open"),target:"_blank"}},[t.file.panelImage&&t.file.panelImage.cards&&t.file.panelImage.cards.url?n("k-image",{attrs:{src:t.file.panelImage.cards.url,srcset:t.file.panelImage.cards.srcset,back:"none"}}):t.file.panelIcon?n("k-icon",{staticClass:"k-file-preview-icon",style:{color:t.file.panelIcon.color},attrs:{type:t.file.panelIcon.type}}):n("span",{staticClass:"k-file-preview-placeholder"})],1)]),n("div",{staticClass:"k-file-preview-details"},[n("ul",[n("li",[n("h3",[t._v(t._s(t.$t("template")))]),n("p",[t._v(t._s(t.file.template||"—"))])]),n("li",[n("h3",[t._v(t._s(t.$t("mime")))]),n("p",[t._v(t._s(t.file.mime))])]),n("li",[n("h3",[t._v(t._s(t.$t("url")))]),n("p",[n("k-link",{attrs:{to:t.file.url,tabindex:"-1",target:"_blank"}},[t._v("/"+t._s(t.file.id))])],1)]),n("li",[n("h3",[t._v(t._s(t.$t("size")))]),n("p",[t._v(t._s(t.file.niceSize))])]),n("li",[n("h3",[t._v(t._s(t.$t("dimensions")))]),t.file.dimensions?n("p",[t._v(t._s(t.file.dimensions.width)+"×"+t._s(t.file.dimensions.height)+" "+t._s(t.$t("pixel")))]):n("p",[t._v("—")])]),n("li",[n("h3",[t._v(t._s(t.$t("orientation")))]),t.file.dimensions?n("p",[t._v(t._s(t.$t("orientation."+t.file.dimensions.orientation)))]):n("p",[t._v("—")])])])])])],1)},Lc=[],Ic={props:{file:Object}},qc=Ic,Ac=(n("696b5"),Object(u["a"])(qc,Tc,Lc,!1,null,null,null)),Nc=Ac.exports,Bc=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-grid",attrs:{"data-gutter":t.gutter}},[t._t("default")],2)},Pc=[],Dc={props:{gutter:String}},Mc=Dc,Rc=(n("5b23"),Object(u["a"])(Mc,Bc,Pc,!1,null,null,null)),zc=Rc.exports,Fc=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("header",{staticClass:"k-header",attrs:{"data-editable":t.editable}},[n("k-headline",{attrs:{tag:"h1",size:"huge"}},[t.editable&&t.$listeners.edit?n("span",{staticClass:"k-headline-editable",on:{click:function(e){return t.$emit("edit")}}},[t._t("default"),n("k-icon",{attrs:{type:"edit"}})],2):t._t("default")],2),t.$slots.left||t.$slots.right?n("k-bar",{staticClass:"k-header-buttons"},[t._t("left",null,{slot:"left"}),t._t("right",null,{slot:"right"})],2):t._e(),t.tabs&&t.tabs.length>1?n("div",{staticClass:"k-header-tabs"},[n("nav",[t._l(t.visibleTabs,function(e,i){return n("k-button",{key:t.$route.fullPath+"-tab-"+i,staticClass:"k-tab-button",attrs:{link:"#"+e.name,current:t.currentTab&&t.currentTab.name===e.name,icon:e.icon,tooltip:e.label}},[t._v("\n "+t._s(e.label)+"\n ")])}),t.invisibleTabs.length?n("k-button",{staticClass:"k-tab-button k-tabs-dropdown-button",attrs:{icon:"dots"},on:{click:function(e){return e.stopPropagation(),t.$refs.more.toggle()}}},[t._v("\n "+t._s(t.$t("more"))+"\n ")]):t._e()],2),t.invisibleTabs.length?n("k-dropdown-content",{ref:"more",staticClass:"k-tabs-dropdown",attrs:{align:"right"}},t._l(t.invisibleTabs,function(e,i){return n("k-dropdown-item",{key:"more-"+i,attrs:{link:"#"+e.name,current:t.currentTab&&t.currentTab.name===e.name,icon:e.icon,tooltip:e.label}},[t._v("\n "+t._s(e.label)+"\n ")])}),1):t._e()],1):t._e()],1)},Uc=[],Hc={props:{editable:Boolean,tabs:Array,tab:Object},data:function(){return{size:null,currentTab:this.tab,visibleTabs:this.tabs,invisibleTabs:[]}},watch:{tab:function(){this.currentTab=this.tab},tabs:function(t){this.visibleTabs=t,this.invisibleTabs=[],this.resize(!0)}},created:function(){window.addEventListener("resize",this.resize)},destroyed:function(){window.removeEventListener("resize",this.resize)},methods:{resize:function(t){if(this.tabs&&!(this.tabs.length<=1)){if(this.tabs.length<=3)return this.visibleTabs=this.tabs,void(this.invisibleTabs=[]);if(window.innerWidth>=700){if("large"===this.size&&!t)return;this.visibleTabs=this.tabs,this.invisibleTabs=[],this.size="large"}else{if("small"===this.size&&!t)return;this.visibleTabs=this.tabs.slice(0,2),this.invisibleTabs=this.tabs.slice(2),this.size="small"}}}}},Kc=Hc,Vc=(n("53c5"),Object(u["a"])(Kc,Fc,Uc,!1,null,null,null)),Yc=Vc.exports,Wc=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ul",{staticClass:"k-list"},[t._t("default",t._l(t.items,function(e,i){return n("k-list-item",t._g(t._b({key:i},"k-list-item",e,!1),t.$listeners))}))],2)},Gc=[],Jc={props:{items:Array}},Zc=Jc,Xc=(n("c857"),Object(u["a"])(Zc,Wc,Gc,!1,null,null,null)),Qc=Xc.exports,td=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(t.element,t._g({tag:"component",staticClass:"k-list-item"},t.$listeners),[t.sortable?n("k-sort-handle"):t._e(),n("k-link",{directives:[{name:"tab",rawName:"v-tab"}],staticClass:"k-list-item-content",attrs:{to:t.link,target:t.target}},[n("span",{staticClass:"k-list-item-image"},[t.imageOptions?n("k-image",t._b({},"k-image",t.imageOptions,!1)):n("k-icon",t._b({},"k-icon",t.icon,!1))],1),n("span",{staticClass:"k-list-item-text"},[n("em",[t._v(t._s(t.text))]),t.info?n("small",{domProps:{innerHTML:t._s(t.info)}}):t._e()])]),n("nav",{staticClass:"k-list-item-options"},[t._t("options",[t.flag?n("k-button",t._b({on:{click:t.flag.click}},"k-button",t.flag,!1)):t._e(),t.options?n("k-button",{staticClass:"k-list-item-toggle",attrs:{tooltip:t.$t("options"),icon:"dots",alt:"Options"},on:{click:function(e){return e.stopPropagation(),t.$refs.options.toggle()}}}):t._e(),n("k-dropdown-content",{ref:"options",attrs:{options:t.options,align:"right"},on:{action:function(e){return t.$emit("action",e)}}})])],2)],1)},ed=[],nd={inheritAttrs:!1,props:{element:{type:String,default:"li"},image:Object,icon:{type:Object,default:function(){return{type:"file",back:"black"}}},sortable:Boolean,text:String,target:String,info:String,link:String,flag:Object,options:[Array,Function]},computed:{imageOptions:function(){return uu(this.image)}}},id=nd,sd=(n("fa6a"),Object(u["a"])(id,td,ed,!1,null,null,null)),ad=sd.exports,od=function(){var t=this,e=t.$createElement,n=t._self._c||e;return 0===t.tabs.length?n("k-box",{attrs:{text:"This page has no blueprint setup yet",theme:"info"}}):t.tab?n("k-sections",{attrs:{parent:t.parent,blueprint:t.blueprint,columns:t.tab.columns},on:{submit:function(e){return t.$emit("submit",e)}}}):t._e()},rd=[],ld={props:{parent:String,blueprint:String,tabs:Array},data:function(){return{tab:null}},watch:{$route:function(){this.open()},blueprint:function(){this.open()}},mounted:function(){this.open()},methods:{open:function(t){if(0!==this.tabs.length){t||(t=this.$route.hash.replace("#","")),t||(t=this.tabs[0].name);var e=null;this.tabs.forEach(function(n){n.name===t&&(e=n)}),e||(e=this.tabs[0]),this.tab=e,this.$emit("tab",this.tab)}}}},ud=ld,cd=Object(u["a"])(ud,od,rd,!1,null,null,null),dd=cd.exports,pd=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-view",attrs:{"data-align":t.align}},[t._t("default")],2)},fd=[],hd={props:{align:String}},md=hd,gd=(n("daa8"),Object(u["a"])(md,pd,fd,!1,null,null,null)),bd=gd.exports,vd=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("draggable",t._g(t._b({staticClass:"k-draggable",attrs:{tag:t.element,list:t.list,move:t.move}},"draggable",t.dragOptions,!1),t.listeners),[t._t("default"),t._t("footer",null,{slot:"footer"})],2)},kd=[],$d=n("1980"),_d=n.n($d),yd={components:{draggable:_d.a},props:{element:String,handle:[String,Boolean],list:[Array,Object],move:Function,options:Object},data:function(){var t=this;return{listeners:Object(k["a"])({},this.$listeners,{start:function(e){t.$store.dispatch("drag",{}),t.$listeners.start&&t.$listeners.start(e)},end:function(e){t.$store.dispatch("drag",null),t.$listeners.end&&t.$listeners.end(e)}})}},computed:{dragOptions:function(){var t=!1;return t=!0===this.handle?".k-sort-handle":this.handle,Object(k["a"])({fallbackClass:"k-sortable-fallback",fallbackOnBody:!0,forceFallback:!0,ghostClass:"k-sortable-ghost",handle:t,scroll:document.querySelector(".k-panel-view")},this.options)}}},wd=yd,xd=Object(u["a"])(wd,vd,kd,!1,null,null,null),Od=xd.exports,Cd={data:function(){return{error:null}},errorCaptured:function(t){return y.debug&&window.console.warn(t),this.error=t,!1},render:function(t){return this.error?this.$slots.error?this.$slots.error[0]:this.$scopedSlots.error?this.$scopedSlots.error({error:this.error}):t("k-box",{attrs:{theme:"negative"}},this.error.message||this.error):this.$slots.default[0]}},Sd=Cd,Ed=Object(u["a"])(Sd,Fr,Ur,!1,null,null,null),jd=Ed.exports,Td=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(t.tag,t._g({tag:"component",staticClass:"k-headline",attrs:{"data-theme":t.theme,"data-size":t.size}},t.$listeners),[t.link?n("k-link",{attrs:{to:t.link}},[t._t("default")],2):t._t("default")],2)},Ld=[],Id={props:{link:String,size:{type:String},tag:{type:String,default:"h2"},theme:{type:String}}},qd=Id,Ad=(n("f8a7"),Object(u["a"])(qd,Td,Ld,!1,null,null,null)),Nd=Ad.exports,Bd=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{class:"k-icon k-icon-"+t.type,attrs:{"aria-label":t.alt,role:t.alt?"img":null,"aria-hidden":!t.alt,"data-back":t.back,"data-size":t.size}},[t.emoji?n("span",{staticClass:"k-icon-emoji"},[t._v(t._s(t.type))]):n("svg",{style:{color:t.color},attrs:{viewBox:"0 0 16 16"}},[n("use",{attrs:{"xlink:href":"#icon-"+t.type}})])])},Pd=[],Dd={props:{alt:String,color:String,back:String,emoji:Boolean,size:String,type:String}},Md=Dd,Rd=(n("3342"),Object(u["a"])(Md,Bd,Pd,!1,null,null,null)),zd=Rd.exports,Fd=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",t._g({staticClass:"k-image",attrs:{"data-ratio":t.ratio,"data-back":t.back,"data-cover":t.cover}},t.$listeners),[n("span",{style:"padding-bottom:"+t.ratioPadding},[t.loaded?n("img",{key:t.src,attrs:{alt:t.alt||"",src:t.src,srcset:t.srcset,sizes:t.sizes},on:{dragstart:function(t){t.preventDefault()}}}):t._e(),t.loaded||t.error?t._e():n("k-loader",{attrs:{position:"center",theme:"light"}}),!t.loaded&&t.error?n("k-icon",{staticClass:"k-image-error",attrs:{type:"cancel"}}):t._e()],1)])},Ud=[],Hd={props:{alt:String,back:String,cover:Boolean,ratio:String,sizes:String,src:String,srcset:String},data:function(){return{loaded:{type:Boolean,default:!1},error:{type:Boolean,default:!1}}},computed:{ratioPadding:function(){return Gu(this.ratio||"1/1")}},created:function(){var t=this,e=new Image;e.onload=function(){t.loaded=!0,t.$emit("load")},e.onerror=function(){t.error=!0,t.$emit("error")},e.src=this.src}},Kd=Hd,Vd=(n("0d56"),Object(u["a"])(Kd,Fd,Ud,!1,null,null,null)),Yd=Vd.exports,Wd=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("progress",{staticClass:"k-progress",attrs:{max:"100"},domProps:{value:t.state}},[t._v("\n "+t._s(t.state)+"%\n")])},Gd=[],Jd={props:{value:{type:Number,default:0}},data:function(){return{state:this.value}},methods:{set:function(t){this.state=t}}},Zd=Jd,Xd=(n("9799"),Object(u["a"])(Zd,Wd,Gd,!1,null,null,null)),Qd=Xd.exports,tp=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{staticClass:"k-sort-handle",attrs:{"aria-hidden":"true"}},[n("svg",{attrs:{viewBox:"0 0 16 16"}},[n("use",{attrs:{"xlink:href":"#icon-sort"}})])])},ep=[],np=(n("35cb"),{}),ip=Object(u["a"])(np,tp,ep,!1,null,null,null),sp=ip.exports,ap=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-text",attrs:{"data-align":t.align,"data-size":t.size,"data-theme":t.theme}},[t._t("default")],2)},op=[],rp={props:{align:String,size:String,theme:String}},lp=rp,up=(n("b0d6"),Object(u["a"])(lp,ap,op,!1,null,null,null)),cp=up.exports,dp=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(t.component,t._g({directives:[{name:"tab",rawName:"v-tab"}],ref:"button",tag:"component",staticClass:"k-button",attrs:{"aria-current":t.current,autofocus:t.autofocus,id:t.id,disabled:t.disabled,"data-tabbed":t.tabbed,"data-theme":t.theme,"data-responsive":t.responsive,role:t.role,tabindex:t.tabindex,target:t.target,title:t.tooltip,to:t.link,type:t.link?null:t.type}},t.$listeners),[t.icon?n("k-icon",{staticClass:"k-button-icon",attrs:{type:t.icon,alt:t.tooltip}}):t._e(),t.$slots.default?n("span",{staticClass:"k-button-text"},[t._t("default")],2):t._e()],1)},pp=[],fp={directives:{tab:S},inheritAttrs:!1,props:{autofocus:Boolean,current:[String,Boolean],disabled:Boolean,icon:String,id:[String,Number],link:String,responsive:Boolean,role:String,target:String,tabindex:String,theme:String,tooltip:String,type:{type:String,default:"button"}},data:function(){return{tabbed:!1}},computed:{component:function(){return this.link?"k-link":"button"},imageUrl:function(){return this.image?"object"===Object(zt["a"])(this.image)?this.image.url:this.image:null}},methods:{focus:function(){this.$refs.button.focus()},tab:function(){this.focus(),this.tabbed=!0},untab:function(){this.tabbed=!1}}},hp=fp,mp=(n("3787"),Object(u["a"])(hp,dp,pp,!1,null,null,null)),gp=mp.exports,bp=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-button-group"},[t._t("default")],2)},vp=[],kp=(n("a567"),{}),$p=Object(u["a"])(kp,bp,vp,!1,null,null,null),_p=$p.exports,yp=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{staticClass:"k-dropdown",on:{click:function(t){t.stopPropagation()}}},[t._t("default")],2)},wp=[],xp=(n("f95f"),{}),Op=Object(u["a"])(xp,yp,wp,!1,null,null,null),Cp=Op.exports,Sp=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.isOpen?n("div",{staticClass:"k-dropdown-content",attrs:{"data-align":t.align}},[t._t("default",[t._l(t.items,function(e,i){return["-"===e?n("hr",{key:t._uid+"-item-"+i}):n("k-dropdown-item",t._b({key:t._uid+"-item-"+i,ref:t._uid+"-item-"+i,refInFor:!0,on:{click:function(n){return t.$emit("action",e.click)}}},"k-dropdown-item",e,!1),[t._v("\n "+t._s(e.text)+"\n ")])]})])],2):t._e()},Ep=[],jp=null,Tp={props:{options:[Array,Function],align:String},data:function(){return{items:[],current:-1,isOpen:!1}},methods:{fetchOptions:function(t){if(!this.options)return t(this.items);"string"===typeof this.options?fetch(this.options).then(function(t){return t.json()}).then(function(e){return t(e)}):"function"===typeof this.options?this.options(t):_t()(this.options)&&t(this.options)},open:function(){var t=this;this.reset(),jp&&jp!==this&&jp.close(),this.fetchOptions(function(e){t.$events.$on("keydown",t.navigate),t.$events.$on("click",t.close),t.items=e,t.isOpen=!0,t.$emit("open"),jp=t})},reset:function(){this.current=-1,this.$events.$off("keydown",this.navigate),this.$events.$off("click",this.close)},close:function(){this.reset(),this.isOpen=jp=!1,this.$emit("close")},toggle:function(){this.isOpen?this.close():this.open()},focus:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.$children[t]&&this.$children[t].focus&&(this.current=t,this.$children[t].focus())},navigate:function(t){switch(t.code){case"Escape":case"ArrowLeft":this.close(),this.$emit("leave",t.code);break;case"ArrowUp":t.preventDefault();while(1){if(this.current--,this.current<0){this.close(),this.$emit("leave",t.code);break}if(this.$children[this.current]&&!1===this.$children[this.current].disabled){this.focus(this.current);break}}break;case"ArrowDown":t.preventDefault();while(1){if(this.current++,this.current>this.$children.length-1){var e=this.$children.filter(function(t){return!1===t.disabled});this.current=this.$children.indexOf(e[e.length-1]);break}if(this.$children[this.current]&&!1===this.$children[this.current].disabled){this.focus(this.current);break}}break}}}},Lp=Tp,Ip=(n("98a1"),Object(u["a"])(Lp,Sp,Ep,!1,null,null,null)),qp=Ip.exports,Ap=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-button",t._g(t._b({ref:"button",staticClass:"k-dropdown-item"},"k-button",t.$props,!1),t.listeners),[t._t("default")],2)},Np=[],Bp={inheritAttrs:!1,props:{disabled:Boolean,icon:String,image:[String,Object],link:String,target:String,theme:String,upload:String,current:[String,Boolean]},data:function(){var t=this;return{listeners:Object(k["a"])({},this.$listeners,{click:function(e){t.$parent.close(),t.$emit("click",e)}})}},methods:{focus:function(){this.$refs.button.focus()},tab:function(){this.$refs.button.tab()}}},Pp=Bp,Dp=(n("580a"),Object(u["a"])(Pp,Ap,Np,!1,null,null,null)),Mp=Dp.exports,Rp=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.to&&!t.disabled?n("a",t._g({ref:"link",staticClass:"k-link",attrs:{href:t.href,rel:t.relAttr,tabindex:t.tabindex,target:t.target,title:t.title}},t.listeners),[t._t("default")],2):n("span",{staticClass:"k-link",attrs:{title:t.title,"data-disabled":""}},[t._t("default")],2)},zp=[],Fp={props:{disabled:Boolean,rel:String,tabindex:[String,Number],target:String,title:String,to:String},data:function(){return{relAttr:"_blank"===this.target?"noreferrer noopener":this.rel,listeners:Object(k["a"])({},this.$listeners,{click:this.onClick})}},computed:{href:function(){return void 0===this.$route||"/"!==this.to[0]||this.target?this.to:(this.$router.options.url||"")+this.to}},methods:{isRoutable:function(t){return void 0!==this.$route&&(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&(!t.defaultPrevented&&((void 0===t.button||0===t.button)&&!this.target)))},onClick:function(t){if(!0===this.disabled)return t.preventDefault(),!1;this.isRoutable(t)&&(t.preventDefault(),this.$router.push(this.to)),this.$emit("click",t)},focus:function(){this.$refs.link.focus()}}},Up=Fp,Hp=Object(u["a"])(Up,Rp,zp,!1,null,null,null),Kp=Hp.exports,Vp=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.languages.length?n("k-dropdown",[n("k-button",{attrs:{responsive:!0,icon:"globe"},on:{click:function(e){return t.$refs.languages.toggle()}}},[t._v("\n "+t._s(t.language.name)+"\n ")]),t.languages?n("k-dropdown-content",{ref:"languages"},[n("k-dropdown-item",{on:{click:function(e){return t.change(t.defaultLanguage)}}},[t._v(t._s(t.defaultLanguage.name))]),n("hr"),t._l(t.languages,function(e){return n("k-dropdown-item",{key:e.code,on:{click:function(n){return t.change(e)}}},[t._v("\n "+t._s(e.name)+"\n ")])})],2):t._e()],1):t._e()},Yp=[],Wp={computed:{defaultLanguage:function(){return this.$store.state.languages.default},language:function(){return this.$store.state.languages.current},languages:function(){return this.$store.state.languages.all.filter(function(t){return!1===t.default})}},methods:{change:function(t){this.$store.dispatch("languages/current",t),this.$emit("change",t)}}},Gp=Wp,Jp=Object(u["a"])(Gp,Vp,Yp,!1,null,null,null),Zp=Jp.exports,Xp=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.show?n("nav",{staticClass:"k-pagination",attrs:{"data-align":t.align}},[t.show?n("k-button",{attrs:{disabled:!t.hasPrev,tooltip:t.prevLabel,icon:"angle-left"},on:{click:t.prev}}):t._e(),t.details?[t.dropdown?[n("k-dropdown",[n("k-button",{staticClass:"k-pagination-details",attrs:{disabled:!t.hasPages},on:{click:function(e){return t.$refs.dropdown.toggle()}}},[t.total>1?[t._v(t._s(t.detailsText))]:t._e(),t._v(t._s(t.total)+"\n ")],2),n("k-dropdown-content",{ref:"dropdown",staticClass:"k-pagination-selector",on:{open:function(e){t.$nextTick(function(){return t.$refs.page.focus()})}}},[n("div",[n("label",{attrs:{for:"k-pagination-input"}},[t._v(t._s(t.pageLabel))]),n("input",{ref:"page",attrs:{id:"k-pagination-input",min:1,max:t.pages,type:"number"},domProps:{value:t.currentPage},on:{keydown:[function(t){t.stopPropagation()},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.goTo(e.target.value)}]}}),n("k-button",{attrs:{icon:"angle-up"},on:{click:function(e){return t.goTo(t.$refs.page.value)}}})],1)])],1)]:[n("span",{staticClass:"k-pagination-details"},[t.total>1?[t._v(t._s(t.detailsText))]:t._e(),t._v(t._s(t.total)+"\n ")],2)]]:t._e(),t.show?n("k-button",{attrs:{disabled:!t.hasNext,tooltip:t.nextLabel,icon:"angle-right"},on:{click:t.next}}):t._e()],2):t._e()},Qp=[],tf={props:{align:{type:String,default:"left"},details:{type:Boolean,default:!1},dropdown:{type:Boolean,default:!0},validate:{type:Function,default:function(){return Ye.a.resolve()}},page:{type:Number,default:1},total:{type:Number,default:0},limit:{type:Number,default:10},keys:{type:Boolean,default:!1},pageLabel:{type:String,default:"Page"},prevLabel:{type:String,default:function(){return this.$t("prev")}},nextLabel:{type:String,default:function(){return this.$t("next")}}},data:function(){return{currentPage:this.page}},computed:{show:function(){return this.pages>1},start:function(){return(this.currentPage-1)*this.limit+1},end:function(){var t=this.start-1+this.limit;return t>this.total?this.total:t},detailsText:function(){return 1===this.limit?this.start+" / ":this.start+"-"+this.end+" / "},pages:function(){return Math.ceil(this.total/this.limit)},hasPrev:function(){return this.start>1},hasNext:function(){return this.endthis.limit},offset:function(){return this.start-1}},watch:{page:function(t){this.currentPage=t}},created:function(){!0===this.keys&&window.addEventListener("keydown",this.navigate,!1)},destroyed:function(){window.removeEventListener("keydown",this.navigate,!1)},methods:{goTo:function(t){var e=this;this.validate(t).then(function(){t<1&&(t=1),t>e.pages&&(t=e.pages),e.currentPage=t,e.$refs.dropdown&&e.$refs.dropdown.close(),e.$emit("paginate",{page:gs()(e.currentPage),start:e.start,end:e.end,limit:e.limit,offset:e.offset})}).catch(function(){})},prev:function(){this.goTo(this.currentPage-1)},next:function(){this.goTo(this.currentPage+1)},navigate:function(t){switch(t.code){case"ArrowLeft":this.prev();break;case"ArrowRight":this.next();break}}}},ef=tf,nf=(n("a66d"),Object(u["a"])(ef,Xp,Qp,!1,null,null,null)),sf=nf.exports,af=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-button-group",{staticClass:"k-prev-next"},[n("k-button",t._b({attrs:{icon:"angle-left"}},"k-button",t.prev,!1)),n("k-button",t._b({attrs:{icon:"angle-right"}},"k-button",t.next,!1))],1)},of=[],rf={props:{prev:{type:Object,default:function(){return{disabled:!0,link:"#"}}},next:{type:Object,default:function(){return{disabled:!0,link:"#"}}}}},lf=rf,uf=(n("7a7d"),Object(u["a"])(lf,af,of,!1,null,null,null)),cf=uf.exports,df=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"k-search",attrs:{role:"search"},on:{click:t.close}},[n("div",{staticClass:"k-search-box",on:{click:function(t){t.stopPropagation()}}},[n("div",{staticClass:"k-search-input"},[n("k-dropdown",{staticClass:"k-search-types"},[n("k-button",{attrs:{icon:t.type.icon},on:{click:function(e){return t.$refs.types.toggle()}}},[t._v(t._s(t.type.label)+":")]),n("k-dropdown-content",{ref:"types"},t._l(t.types,function(e,i){return n("k-dropdown-item",{key:i,attrs:{icon:e.icon},on:{click:function(e){t.currentType=i}}},[t._v("\n "+t._s(e.label)+"\n ")])}),1)],1),n("input",{directives:[{name:"model",rawName:"v-model",value:t.q,expression:"q"}],ref:"input",attrs:{placeholder:t.$t("search")+" …","aria-label":"$t('search')",type:"text"},domProps:{value:t.q},on:{keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?null:(e.preventDefault(),t.down(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"])?null:(e.preventDefault(),t.up(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"tab",9,e.key,"Tab")?null:(e.preventDefault(),t.tab(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.enter(e)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"])?null:t.close(e)}],input:function(e){e.target.composing||(t.q=e.target.value)}}}),n("k-button",{staticClass:"k-search-close",attrs:{tooltip:t.$t("close"),icon:"cancel"},on:{click:t.close}})],1),n("ul",t._l(t.items,function(e,i){return n("li",{key:e.id,attrs:{"data-selected":t.selected===i},on:{mouseover:function(e){t.selected=i}}},[n("k-link",{attrs:{to:e.link},on:{click:function(e){return t.click(i)}}},[n("strong",[t._v(t._s(e.title))]),n("small",[t._v(t._s(e.info))])])],1)}),0)])])},pf=[],ff=function(t,e){var n=null;return function(){var i=this,s=arguments;clearTimeout(n),n=setTimeout(function(){t.apply(i,s)},e)}},hf={data:function(){return{items:[],q:null,selected:-1,currentType:"pages"}},computed:{type:function(){return this.types[this.currentType]||this.types["pages"]},types:function(){return{pages:{label:this.$t("pages"),icon:"page",endpoint:"site/search"},users:{label:this.$t("users"),icon:"users",endpoint:"users/search"}}}},watch:{q:ff(function(t){this.search(t)},200),currentType:function(){this.search(this.q)}},mounted:function(){var t=this;this.$nextTick(function(){t.$refs.input.focus()})},methods:{open:function(t){t.preventDefault(),this.$store.dispatch("search",!0)},click:function(t){this.selected=t,this.tab()},close:function(){this.$store.dispatch("search",!1)},down:function(){this.selected=0&&this.selected--}}},mf=hf,gf=(n("4cb2"),Object(u["a"])(mf,df,pf,!1,null,null,null)),bf=gf.exports,vf=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{ref:"button",staticClass:"k-tag",attrs:{"data-size":t.size,tabindex:"0"},on:{keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"delete",[8,46],e.key,["Backspace","Delete","Del"])?null:(e.preventDefault(),t.remove(e))}}},[n("span",{staticClass:"k-tag-text"},[t._t("default")],2),t.removable?n("span",{staticClass:"k-tag-toggle",on:{click:t.remove}},[t._v("×")]):t._e()])},kf=[],$f={props:{removable:Boolean,size:String},methods:{remove:function(){this.removable&&this.$emit("remove")},focus:function(){this.$refs.button.focus()}}},_f=$f,yf=(n("021f"),Object(u["a"])(_f,vf,kf,!1,null,null,null)),wf=yf.exports,xf=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.user&&t.view?n("div",{staticClass:"k-topbar"},[n("k-view",[n("div",{staticClass:"k-topbar-wrapper"},[n("k-dropdown",{staticClass:"k-topbar-menu"},[n("k-button",{staticClass:"k-topbar-button k-topbar-menu-button",attrs:{tooltip:t.$t("menu"),icon:"bars"},on:{click:function(e){return t.$refs.menu.toggle()}}},[n("k-icon",{attrs:{type:"angle-down"}})],1),n("k-dropdown-content",{ref:"menu",staticClass:"k-topbar-menu"},[n("ul",[t._l(t.views,function(e,i){return e.menu?n("li",{key:"menu-item-"+i,attrs:{"aria-current":t.$store.state.view===i}},[n("k-dropdown-item",{attrs:{disabled:!1===t.$permissions.access[i],icon:e.icon,link:e.link}},[t._v("\n "+t._s(t.menuTitle(e,i))+"\n ")])],1):t._e()}),n("li",[n("hr")]),n("li",{attrs:{"aria-current":"account"===t.$route.meta.view}},[n("k-dropdown-item",{attrs:{icon:"account",link:"/account"}},[t._v("\n "+t._s(t.$t("view.account"))+"\n ")])],1),n("li",[n("hr")]),n("li",[n("k-dropdown-item",{attrs:{icon:"logout",link:"/logout"}},[t._v("\n "+t._s(t.$t("logout"))+"\n ")])],1)],2)])],1),t.view?n("k-link",{directives:[{name:"tab",rawName:"v-tab"}],staticClass:"k-topbar-button k-topbar-view-button",attrs:{to:t.view.link}},[n("k-icon",{attrs:{type:t.view.icon}}),t._v(" "+t._s(t.breadcrumbTitle)+"\n ")],1):t._e(),t.$store.state.breadcrumb.length>1?n("k-dropdown",{staticClass:"k-topbar-breadcrumb-menu"},[n("k-button",{staticClass:"k-topbar-button",on:{click:function(e){return t.$refs.crumb.toggle()}}},[t._v("\n …\n "),n("k-icon",{attrs:{type:"angle-down"}})],1),n("k-dropdown-content",{ref:"crumb"},[n("k-dropdown-item",{attrs:{icon:t.view.icon,link:t.view.link}},[t._v("\n "+t._s(t.$t("view."+t.$store.state.view,t.view.label))+"\n ")]),t._l(t.$store.state.breadcrumb,function(e,i){return n("k-dropdown-item",{key:"crumb-"+i+"-dropdown",attrs:{icon:t.view.icon,link:e.link}},[t._v("\n "+t._s(e.label)+"\n ")])})],2)],1):t._e(),n("nav",{staticClass:"k-topbar-crumbs"},t._l(t.$store.state.breadcrumb,function(e,i){return n("k-link",{directives:[{name:"tab",rawName:"v-tab"}],key:"crumb-"+i,attrs:{to:e.link}},[t._v("\n "+t._s(e.label)+"\n ")])}),1),n("div",{staticClass:"k-topbar-signals"},[n("span",{directives:[{name:"show",rawName:"v-show",value:t.$store.state.isLoading,expression:"$store.state.isLoading"}],staticClass:"k-topbar-loader"},[n("svg",{attrs:{viewBox:"0 0 16 18"}},[n("path",{attrs:{fill:"white",d:"M8,0 L16,4.50265232 L16,13.5112142 L8,18.0138665 L0,13.5112142 L0,4.50265232 L8,0 Z M2.10648757,5.69852516 L2.10648757,12.3153414 L8,15.632396 L13.8935124,12.3153414 L13.8935124,5.69852516 L8,2.38147048 L2.10648757,5.69852516 Z"}})])]),t.notification?[n("k-button",{staticClass:"k-topbar-notification k-topbar-signals-button",attrs:{theme:"positive"},on:{click:function(e){return t.$store.dispatch("notification/close")}}},[t._v("\n "+t._s(t.notification.message)+"\n ")])]:t.unregistered?[n("div",{staticClass:"k-registration"},[n("p",[t._v(t._s(t.$t("license.unregistered")))]),n("k-button",{staticClass:"k-topbar-signals-button",attrs:{responsive:!0,icon:"key"},on:{click:function(e){return t.$emit("register")}}},[t._v("\n "+t._s(t.$t("license.register"))+"\n ")]),n("k-button",{staticClass:"k-topbar-signals-button",attrs:{responsive:!0,link:"https://getkirby.com/buy",target:"_blank",icon:"cart"}},[t._v("\n "+t._s(t.$t("license.buy"))+"\n ")])],1)]:t._e(),n("k-button",{staticClass:"k-topbar-signals-button",attrs:{tooltip:t.$t("search"),icon:"search"},on:{click:function(e){return t.$store.dispatch("search",!0)}}})],2)],1)])],1):t._e()},Of=[],Cf=Object(k["a"])({site:{link:"/site",icon:"page",menu:!0},users:{link:"/users",icon:"users",menu:!0},settings:{link:"/settings",icon:"settings",menu:!0},account:{link:"/account",icon:"users",menu:!1}},window.panel.plugins.views),Sf={computed:{breadcrumbTitle:function(){var t=this.$t("view.".concat(this.$store.state.view),this.view.label);return"site"===this.$store.state.view&&this.$store.state.system.info.title||t},view:function(){return Cf[this.$store.state.view]},views:function(){return Cf},user:function(){return this.$store.state.user.current},notification:function(){return this.$store.state.notification.type&&"error"!==this.$store.state.notification.type?this.$store.state.notification:null},unregistered:function(){return!this.$store.state.system.info.license}},methods:{menuTitle:function(t,e){var n=this.$t("view."+e,t.label);return"site"===e&&this.$store.state.system.info.site||n}}},Ef=Sf,jf=(n("1e3b"),Object(u["a"])(Ef,xf,Of,!1,null,null,null)),Tf=jf.exports,Lf=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-grid",{staticClass:"k-sections",attrs:{gutter:"large"}},t._l(t.columns,function(e,i){return n("k-column",{key:t.parent+"-column-"+i,attrs:{width:e.width}},[t._l(e.sections,function(s,a){return t.meetsCondition(s)?[t.exists(s.type)?n("k-"+s.type+"-section",t._b({key:t.parent+"-column-"+i+"-section-"+a+"-"+t.blueprint,tag:"component",class:"k-section k-section-name-"+s.name,attrs:{name:s.name,parent:t.parent,blueprint:t.blueprint,column:e.width},on:{submit:function(e){return t.$emit("submit",e)}}},"component",s,!1)):[n("k-box",{key:t.parent+"-column-"+i+"-section-"+a,attrs:{text:t.$t("error.section.type.invalid",{type:s.type}),theme:"negative"}})]]:t._e()})],2)}),1)},If=[],qf={props:{parent:String,blueprint:String,columns:[Array,Object]},computed:{content:function(){return this.$store.getters["form/values"]()}},methods:{exists:function(t){return I["a"].options.components["k-"+t+"-section"]},meetsCondition:function(t){var e=this;if(!t.when)return!0;var n=!0;return nt()(t.when).forEach(function(i){var s=e.content[i.toLowerCase()],a=t.when[i];s!==a&&(n=!1)}),n}}},Af=qf,Nf=(n("6bcd"),Object(u["a"])(Af,Lf,If,!1,null,null,null)),Bf=Nf.exports,Pf=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"k-info-section"},[n("k-headline",{staticClass:"k-info-section-headline"},[t._v(t._s(t.headline))]),n("k-box",{attrs:{theme:t.theme}},[n("k-text",{domProps:{innerHTML:t._s(t.text)}})],1)],1)},Df=[],Mf={props:{blueprint:String,help:String,name:String,parent:String},methods:{load:function(){return this.$api.get(this.parent+"/sections/"+this.name)}}},Rf={mixins:[Mf],data:function(){return{headline:null,issue:null,text:null,theme:null}},created:function(){var t=this;this.load().then(function(e){t.headline=e.options.headline,t.text=e.options.text,t.theme=e.options.theme||"info"}).catch(function(e){t.issue=e})}},zf=Rf,Ff=(n("4333"),Object(u["a"])(zf,Pf,Df,!1,null,null,null)),Uf=Ff.exports,Hf=function(){var t=this,e=t.$createElement,n=t._self._c||e;return!1===t.isLoading?n("section",{staticClass:"k-pages-section"},[n("header",{staticClass:"k-section-header"},[n("k-headline",{attrs:{link:t.options.link}},[t._v("\n "+t._s(t.headline)+" "),t.options.min?n("abbr",{attrs:{title:"This section is required"}},[t._v("*")]):t._e()]),t.add?n("k-button-group",[n("k-button",{attrs:{icon:"add"},on:{click:t.create}},[t._v(t._s(t.$t("add")))])],1):t._e()],1),t.error?[n("k-box",{attrs:{theme:"negative"}},[n("k-text",{attrs:{size:"small"}},[n("strong",[t._v(t._s(t.$t("error.section.notLoaded",{name:t.name}))+":")]),t._v("\n "+t._s(t.error)+"\n ")])],1)]:[t.data.length?n("k-collection",{attrs:{layout:t.options.layout,help:t.help,items:t.data,pagination:t.pagination,sortable:t.options.sortable,size:t.options.size},on:{change:t.sort,paginate:t.paginate,action:t.action}}):[n("k-empty",{attrs:{layout:t.options.layout,icon:"page"},on:{click:t.create}},[t._v("\n "+t._s(t.options.empty||t.$t("pages.empty"))+"\n ")]),n("footer",{staticClass:"k-collection-footer"},[t.help?n("k-text",{staticClass:"k-collection-help",attrs:{theme:"help"},domProps:{innerHTML:t._s(t.help)}}):t._e()],1)],n("k-page-create-dialog",{ref:"create"}),n("k-page-duplicate-dialog",{ref:"duplicate"}),n("k-page-rename-dialog",{ref:"rename",on:{success:t.update}}),n("k-page-url-dialog",{ref:"url",on:{success:t.update}}),n("k-page-status-dialog",{ref:"status",on:{success:t.update}}),n("k-page-template-dialog",{ref:"template",on:{success:t.update}}),n("k-page-remove-dialog",{ref:"remove",on:{success:t.update}})]],2):t._e()},Kf=[],Vf={inheritAttrs:!1,props:{blueprint:String,column:String,parent:String,name:String},data:function(){return{data:[],error:null,isLoading:!1,options:{empty:null,headline:null,help:null,layout:"list",link:null,max:null,min:null,size:null,sortable:null},pagination:{page:null}}},computed:{headline:function(){return this.options.headline||" "},help:function(){return this.options.help},language:function(){return this.$store.state.languages.current},paginationId:function(){return"kirby$pagination$"+this.parent+"/"+this.name}},watch:{language:function(){this.reload()}},methods:{items:function(t){return t},load:function(t){var e=this;t||(this.isLoading=!0),null===this.pagination.page&&(this.pagination.page=localStorage.getItem(this.paginationId)||1),this.$api.get(this.parent+"/sections/"+this.name,{page:this.pagination.page}).then(function(t){e.isLoading=!1,e.options=t.options,e.pagination=t.pagination,e.data=e.items(t.data)}).catch(function(t){e.isLoading=!1,e.error=t.message})},paginate:function(t){localStorage.setItem(this.paginationId,t.page),this.pagination=t,this.reload()},reload:function(){this.load(!0)}}},Yf={mixins:[Vf],computed:{add:function(){return this.options.add&&this.$permissions.pages.create}},created:function(){this.load(),this.$events.$on("page.changeStatus",this.reload)},destroyed:function(){this.$events.$off("page.changeStatus",this.reload)},methods:{create:function(){this.add&&this.$refs.create.open(this.options.link||this.parent,this.parent+"/children/blueprints",this.name)},action:function(t,e){var n=this,i=this.$api.pages.url(t.id,"lock");this.$api.get(i).then(function(i){if(i.locked&&!1===["preview"].includes(e))n.$store.dispatch("notification/error",n.$t("lock.page.isLocked",{email:i.email}));else switch(e){case"duplicate":n.$refs.duplicate.open(t.id);break;case"preview":var s=window.open("","_blank");s.document.write="...",n.$api.pages.preview(t.id).then(function(t){s.location.href=t}).catch(function(t){n.$store.dispatch("notification/error",t)});break;case"rename":n.$refs.rename.open(t.id);break;case"url":n.$refs.url.open(t.id);break;case"status":n.$refs.status.open(t.id);break;case"template":n.$refs.template.open(t.id);break;case"remove":if(n.data.length<=n.options.min){var a=n.options.min>1?"plural":"singular";n.$store.dispatch("notification/error",{message:n.$t("error.section.pages.min."+a,{section:n.options.headline||n.name,min:n.options.min})});break}n.$refs.remove.open(t.id);break;default:throw new Error("Invalid action")}})},items:function(t){var e=this;return t.map(function(t){return t.flag={class:"k-status-flag k-status-flag-"+t.status,tooltip:e.$t("page.status"),icon:!1===t.permissions.changeStatus?"protected":"circle",disabled:!1===t.permissions.changeStatus,click:function(){e.action(t,"status")}},t.options=function(n){e.$api.pages.options(t.id,"list").then(function(t){return n(t)}).catch(function(t){e.$store.dispatch("notification/error",t)})},t.sortable=t.permissions.sort&&e.options.sortable,t.column=e.column,t})},sort:function(t){var e=this,n=null;if(t.added&&(n="added"),t.moved&&(n="moved"),n){var i=t[n].element,s=t[n].newIndex+1+this.pagination.offset;this.$api.pages.status(i.id,"listed",s).then(function(){e.$store.dispatch("notification/success",":)")}).catch(function(t){e.$store.dispatch("notification/error",{message:t.message,details:t.details}),e.reload()})}},update:function(){this.reload(),this.$events.$emit("model.update")}}},Wf=Yf,Gf=Object(u["a"])(Wf,Hf,Kf,!1,null,null,null),Jf=Gf.exports,Zf=function(){var t=this,e=t.$createElement,n=t._self._c||e;return!1===t.isLoading?n("section",{staticClass:"k-files-section"},[n("header",{staticClass:"k-section-header"},[n("k-headline",[t._v("\n "+t._s(t.headline)+" "),t.options.min?n("abbr",{attrs:{title:"This section is required"}},[t._v("*")]):t._e()]),t.add?n("k-button-group",[n("k-button",{attrs:{icon:"upload"},on:{click:t.upload}},[t._v(t._s(t.$t("add")))])],1):t._e()],1),t.error?[n("k-box",{attrs:{theme:"negative"}},[n("k-text",{attrs:{size:"small"}},[n("strong",[t._v(t._s(t.$t("error.section.notLoaded",{name:t.name}))+":")]),t._v("\n "+t._s(t.error)+"\n ")])],1)]:[n("k-dropzone",{attrs:{disabled:!1===t.add},on:{drop:t.drop}},[t.data.length?n("k-collection",{attrs:{help:t.help,items:t.data,layout:t.options.layout,pagination:t.pagination,sortable:t.options.sortable,size:t.options.size},on:{sort:t.sort,paginate:t.paginate,action:t.action}}):[n("k-empty",{attrs:{layout:t.options.layout,icon:"image"},on:{click:function(e){t.add&&t.upload()}}},[t._v("\n "+t._s(t.options.empty||t.$t("files.empty"))+"\n ")]),n("footer",{staticClass:"k-collection-footer"},[t.help?n("k-text",{staticClass:"k-collection-help",attrs:{theme:"help"},domProps:{innerHTML:t._s(t.help)}}):t._e()],1)]],2),n("k-file-rename-dialog",{ref:"rename",on:{success:t.update}}),n("k-file-remove-dialog",{ref:"remove",on:{success:t.update}}),n("k-upload",{ref:"upload",on:{success:t.uploaded,error:t.reload}})]],2):t._e()},Xf=[],Qf={mixins:[Vf],computed:{add:function(){return!(!this.$permissions.files.create||!1===this.options.upload)&&this.options.upload}},created:function(){this.load(),this.$events.$on("model.update",this.reload)},destroyed:function(){this.$events.$off("model.update",this.reload)},methods:{action:function(t,e){var n=this,i=this.$api.files.url(t.parent,t.filename,"lock");this.$api.get(i).then(function(i){if(i.locked&&!1===["download","edit"].includes(e))n.$store.dispatch("notification/error",n.$t("lock.file.isLocked",{email:i.email}));else switch(e){case"edit":n.$router.push(t.link);break;case"download":window.open(t.url);break;case"rename":n.$refs.rename.open(t.parent,t.filename);break;case"replace":n.replace(t);break;case"remove":if(n.data.length<=n.options.min){var s=n.options.min>1?"plural":"singular";n.$store.dispatch("notification/error",{message:n.$t("error.section.files.min."+s,{section:n.options.headline||n.name,min:n.options.min})});break}n.$refs.remove.open(t.parent,t.filename);break}})},drop:function(t){if(!1===this.add)return!1;this.$refs.upload.drop(t,Object(k["a"])({},this.add,{url:y.api+"/"+this.add.api}))},items:function(t){var e=this;return t.map(function(t){return t.options=function(n){e.$api.files.options(t.parent,t.filename,"list").then(function(t){return n(t)}).catch(function(t){e.$store.dispatch("notification/error",t)})},t.sortable=e.options.sortable,t.column=e.column,t})},replace:function(t){this.$refs.upload.open({url:y.api+"/"+this.$api.files.url(t.parent,t.filename),accept:t.mime,multiple:!1})},sort:function(t){var e=this;if(!1===this.options.sortable)return!1;t=t.map(function(t){return t.id}),this.$api.patch(this.parent+"/files/sort",{files:t,index:this.pagination.offset}).then(function(){e.$store.dispatch("notification/success",":)")}).catch(function(t){e.reload(),e.$store.dispatch("notification/error",t.message)})},update:function(){this.$events.$emit("model.update")},upload:function(){if(!1===this.add)return!1;this.$refs.upload.open(Object(k["a"])({},this.add,{url:y.api+"/"+this.add.api}))},uploaded:function(){this.$events.$emit("file.create"),this.$events.$emit("model.update"),this.$store.dispatch("notification/success",":)")}}},th=Qf,eh=Object(u["a"])(th,Zf,Xf,!1,null,null,null),nh=eh.exports,ih=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.isLoading?t._e():n("section",{staticClass:"k-fields-section"},[t.issue?[n("k-headline",{staticClass:"k-fields-issue-headline"},[t._v("Error")]),n("k-box",{attrs:{text:t.issue.message,theme:"negative"}})]:t._e(),n("k-form",{attrs:{fields:t.fields,validate:!0,value:t.values},on:{input:t.input,submit:t.onSubmit}})],2)},sh=[],ah={mixins:[Mf],inheritAttrs:!1,data:function(){return{fields:{},isLoading:!0,issue:null}},computed:{id:function(){return this.$store.state.form.current},language:function(){return this.$store.state.languages.current},values:function(){return this.$store.getters["form/values"](this.id)}},watch:{language:function(){this.fetch()}},created:function(){this.fetch()},methods:{input:function(t,e,n){this.$store.dispatch("form/update",[this.id,n,t[n]])},fetch:function(){var t=this;this.$api.get(this.parent+"/sections/"+this.name).then(function(e){t.fields=e.fields,nt()(t.fields).forEach(function(e){t.fields[e].section=t.name,t.fields[e].endpoints={field:t.parent+"/fields/"+e,section:t.parent+"/sections/"+t.name,model:t.parent}}),t.isLoading=!1}).catch(function(e){t.issue=e,t.isLoading=!1})},onSubmit:function(t){this.$events.$emit("keydown.cmd.s",t)}}},oh=ah,rh=(n("7d5d"),Object(u["a"])(oh,ih,sh,!1,null,null,null)),lh=rh.exports,uh=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-error-view",{staticClass:"k-browser-view"},[n("p",[t._v("\n We are really sorry, but your browser does not support\n all features required for the Kirby Panel.\n ")]),!1===t.hasFetchSupport?[n("p",[n("strong",[t._v("Fetch")]),n("br"),t._v("\n We use Javascript's new Fetch API. You can find a list of supported browsers for this feature on\n "),n("strong",[n("a",{attrs:{href:"https://caniuse.com/#feat=fetch"}},[t._v("caniuse.com")])])])]:t._e(),!1===t.hasGridSupport?[n("p",[n("strong",[t._v("CSS Grid")]),n("br"),t._v("\n We use CSS Grids for all our layouts. You can find a list of supported browsers for this feature on\n "),n("strong",[n("a",{attrs:{href:"https://caniuse.com/#feat=css-grid"}},[t._v("caniuse.com")])])])]:t._e()],2)},ch=[],dh={grid:function(){return!(!window.CSS||!window.CSS.supports("display","grid"))},fetch:function(){return void 0!==window.fetch},all:function(){return this.fetch()&&this.grid()}},ph={computed:{hasFetchSupport:function(){return dh.fetch()},hasGridSupport:function(){return dh.grid()}},created:function(){this.$store.dispatch("form/current",null),dh.all()&&this.$router.push("/")}},fh=ph,hh=(n("d6fc"),Object(u["a"])(fh,uh,ch,!1,null,null,null)),mh=hh.exports,gh=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-error-boundary",{key:t.plugin,scopedSlots:t._u([{key:"error",fn:function(e){var i=e.error;return n("k-error-view",{},[t._v("\n "+t._s(i.message||i)+"\n ")])}}])},[n("k-"+t.plugin+"-plugin-view",{tag:"component"})],1)},bh=[],vh={props:{plugin:String},beforeRouteEnter:function(t,e,n){n(function(t){t.$store.dispatch("breadcrumb",[]),t.$store.dispatch("form/current",null)})},watch:{plugin:{handler:function(){this.$store.dispatch("view",this.plugin)},immediate:!0}}},kh=vh,$h=Object(u["a"])(kh,gh,bh,!1,null,null,null),_h=$h.exports,yh=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-view",{staticClass:"k-error-view"},[n("div",{staticClass:"k-error-view-content"},[n("k-text",[n("p",[n("k-icon",{staticClass:"k-error-view-icon",attrs:{type:"alert"}})],1),n("p",[t._t("default")],2)])],1)])},wh=[],xh=(n("d221"),{}),Oh=Object(u["a"])(xh,yh,wh,!1,null,null,null),Ch=Oh.exports,Sh=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.issue?n("k-error-view",[t._v("\n "+t._s(t.issue.message)+"\n")]):n("div",{staticClass:"k-file-view"},[n("k-file-preview",{attrs:{file:t.file}}),n("k-view",{staticClass:"k-file-content",attrs:{"data-locked":t.isLocked}},[n("k-header",{attrs:{editable:t.permissions.changeName&&!t.isLocked,tabs:t.tabs,tab:t.tab},on:{edit:function(e){return t.action("rename")}}},[t._v("\n\n "+t._s(t.file.filename)+"\n\n "),n("k-button-group",{attrs:{slot:"left"},slot:"left"},[n("k-button",{attrs:{responsive:!0,icon:"open"},on:{click:function(e){return t.action("download")}}},[t._v("\n "+t._s(t.$t("open"))+"\n ")]),n("k-dropdown",[n("k-button",{attrs:{responsive:!0,disabled:t.isLocked,icon:"cog"},on:{click:function(e){return t.$refs.settings.toggle()}}},[t._v("\n "+t._s(t.$t("settings"))+"\n ")]),n("k-dropdown-content",{ref:"settings",attrs:{options:t.options},on:{action:t.action}})],1),n("k-languages-dropdown")],1),t.file.id?n("k-prev-next",{attrs:{slot:"right",prev:t.prev,next:t.next},slot:"right"}):t._e()],1),t.file.id?n("k-tabs",{key:t.tabsKey,ref:"tabs",attrs:{parent:t.$api.files.url(t.path,t.file.filename),tabs:t.tabs,blueprint:t.file.blueprint.name},on:{tab:function(e){t.tab=e}}}):t._e(),n("k-file-rename-dialog",{ref:"rename",on:{success:t.renamed}}),n("k-file-remove-dialog",{ref:"remove",on:{success:t.deleted}}),n("k-upload",{ref:"upload",attrs:{url:t.uploadApi,accept:t.file.mime,multiple:!1},on:{success:t.uploaded}})],1)],1)},Eh=[],jh={computed:{isLocked:function(){return null!==this.$store.getters["form/lock"]}},created:function(){this.fetch(),this.$events.$on("model.reload",this.fetch),this.$events.$on("keydown.left",this.toPrev),this.$events.$on("keydown.right",this.toNext)},destroyed:function(){this.$events.$off("model.reload",this.fetch),this.$events.$off("keydown.left",this.toPrev),this.$events.$off("keydown.right",this.toNext)},methods:{toPrev:function(t){this.prev&&"body"===t.target.localName&&this.$router.push(this.prev.link)},toNext:function(t){this.next&&"body"===t.target.localName&&this.$router.push(this.next.link)}}},Th={mixins:[jh],props:{path:{type:String},filename:{type:String,required:!0}},data:function(){return{name:"",file:{id:null,parent:null,filename:"",url:"",prev:null,next:null,panelIcon:null,panelImage:null,mime:null,content:{}},permissions:{changeName:!1,delete:!1},issue:null,tabs:[],tab:null,options:null}},computed:{uploadApi:function(){return y.api+"/"+this.path+"/files/"+this.filename},prev:function(){if(this.file.prev)return{link:this.$api.files.link(this.path,this.file.prev.filename),tooltip:this.file.prev.filename}},tabsKey:function(){return"file-"+this.file.id+"-tabs"},language:function(){return this.$store.state.languages.current},next:function(){if(this.file.next)return{link:this.$api.files.link(this.path,this.file.next.filename),tooltip:this.file.next.filename}}},watch:{language:function(){this.fetch()},filename:function(){this.fetch()}},methods:{fetch:function(){var t=this;this.$api.files.get(this.path,this.filename,{view:"panel"}).then(function(e){t.file=e,t.file.next=e.nextWithTemplate,t.file.prev=e.prevWithTemplate,t.file.url=e.url,t.name=e.name,t.tabs=e.blueprint.tabs,t.permissions=e.options,t.options=function(e){t.$api.files.options(t.path,t.file.filename).then(function(t){e(t)})},t.$store.dispatch("breadcrumb",t.$api.files.breadcrumb(t.file,t.$route.name)),t.$store.dispatch("title",t.filename),t.$store.dispatch("form/create",{id:"files/"+e.id,api:t.$api.files.link(t.path,t.filename),content:e.content})}).catch(function(e){window.console.error(e),t.issue=e})},action:function(t){switch(t){case"download":window.open(this.file.url);break;case"rename":this.$refs.rename.open(this.path,this.file.filename);break;case"replace":this.$refs.upload.open({url:y.api+"/"+this.$api.files.url(this.path,this.file.filename),accept:this.file.mime});break;case"remove":this.$refs.remove.open(this.path,this.file.filename);break}},deleted:function(){this.path?this.$router.push("/"+this.path):this.$router.push("/site")},renamed:function(t){this.$router.push(this.$api.files.link(this.path,t.filename))},uploaded:function(){this.fetch(),this.$store.dispatch("notification/success",":)")}}},Lh=Th,Ih=Object(u["a"])(Lh,Sh,Eh,!1,null,null,null),qh=Ih.exports,Ah=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.system?n("k-view",{staticClass:"k-installation-view",attrs:{align:"center"}},["install"===t.state?n("form",{on:{submit:function(e){return e.preventDefault(),t.install(e)}}},[n("h1",{staticClass:"k-offscreen"},[t._v(t._s(t.$t("installation")))]),n("k-fieldset",{attrs:{fields:t.fields,novalidate:!0},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}}),n("k-button",{attrs:{type:"submit",icon:"check"}},[t._v(t._s(t.$t("install")))])],1):"completed"===t.state?n("k-text",[n("k-headline",[t._v(t._s(t.$t("installation.completed")))]),n("k-link",{attrs:{to:"/login"}},[t._v(t._s(t.$t("login")))])],1):n("div",[t.system.isInstalled?t._e():n("k-headline",[t._v(t._s(t.$t("installation.issues.headline")))]),n("ul",{staticClass:"k-installation-issues"},[!1===t.system.isInstallable?n("li",[n("k-icon",{attrs:{type:"alert"}}),n("span",{domProps:{innerHTML:t._s(t.$t("installation.disabled"))}})],1):t._e(),!1===t.requirements.php?n("li",[n("k-icon",{attrs:{type:"alert"}}),n("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.php"))}})],1):t._e(),!1===t.requirements.server?n("li",[n("k-icon",{attrs:{type:"alert"}}),n("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.server"))}})],1):t._e(),!1===t.requirements.mbstring?n("li",[n("k-icon",{attrs:{type:"alert"}}),n("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.mbstring"))}})],1):t._e(),!1===t.requirements.curl?n("li",[n("k-icon",{attrs:{type:"alert"}}),n("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.curl"))}})],1):t._e(),!1===t.requirements.accounts?n("li",[n("k-icon",{attrs:{type:"alert"}}),n("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.accounts"))}})],1):t._e(),!1===t.requirements.content?n("li",[n("k-icon",{attrs:{type:"alert"}}),n("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.content"))}})],1):t._e(),!1===t.requirements.media?n("li",[n("k-icon",{attrs:{type:"alert"}}),n("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.media"))}})],1):t._e(),!1===t.requirements.sessions?n("li",[n("k-icon",{attrs:{type:"alert"}}),n("span",{domProps:{innerHTML:t._s(t.$t("installation.issues.sessions"))}})],1):t._e()]),n("k-button",{attrs:{icon:"refresh"},on:{click:t.check}},[n("span",{domProps:{innerHTML:t._s(t.$t("retry"))}})])],1)],1):t._e()},Nh=[],Bh={data:function(){return{user:{name:"",email:"",language:"",password:"",role:"admin"},languages:[],system:null}},computed:{state:function(){return this.system.isOk&&this.system.isInstallable&&!this.system.isInstalled?"install":this.system.isOk&&this.system.isInstallable&&this.system.isInstalled?"completed":void 0},translation:function(){return this.$store.state.translation.current},requirements:function(){return this.system&&this.system.requirements?this.system.requirements:{}},fields:function(){return{name:{label:this.$t("name"),type:"text",icon:"user",autofocus:!0},email:{label:this.$t("email"),type:"email",link:!1,required:!0},password:{label:this.$t("password"),type:"password",placeholder:this.$t("password")+" …",required:!0},language:{label:this.$t("language"),type:"select",options:this.languages,icon:"globe",empty:!1,required:!0}}}},watch:{translation:{handler:function(t){this.user.language=t},immediate:!0},"user.language":function(t){this.$store.dispatch("translation/activate",t)}},created:function(){this.$store.dispatch("form/current",null),this.check()},methods:{install:function(){var t=this;this.$api.system.install(this.user).then(function(e){t.$store.dispatch("user/current",e),t.$store.dispatch("notification/success",t.$t("welcome")+"!"),t.$router.push("/")}).catch(function(e){t.$store.dispatch("notification/error",e)})},check:function(){var t=this;this.$store.dispatch("system/load",!0).then(function(e){!0===e.isInstalled&&e.isReady?t.$router.push("/login"):t.$api.translations.options().then(function(n){t.languages=n,t.system=e,t.$store.dispatch("title",t.$t("view.installation"))})})}}},Ph=Bh,Dh=(n("146c"),Object(u["a"])(Ph,Ah,Nh,!1,null,null,null)),Mh=Dh.exports,Rh=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.issue?n("k-error-view",[t._v("\n "+t._s(t.issue.message)+"\n")]):t.ready?n("k-view",{staticClass:"k-login-view",attrs:{align:"center"}},[n("k-login-form")],1):t._e()},zh=[],Fh=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{staticClass:"k-login-form",attrs:{"data-invalid":t.invalid},on:{submit:function(e){return e.preventDefault(),t.login(e)}}},[n("h1",{staticClass:"k-offscreen"},[t._v(t._s(t.$t("login")))]),n("k-fieldset",{attrs:{novalidate:!0,fields:t.fields},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}}),n("div",{staticClass:"k-login-buttons"},[n("span",{staticClass:"k-login-checkbox"},[n("k-checkbox-input",{attrs:{value:t.user.remember,label:t.$t("login.remember")},on:{input:function(e){t.user.remember=e}}})],1),n("k-button",{staticClass:"k-login-button",attrs:{icon:"check",type:"submit"}},[t._v("\n "+t._s(t.$t("login"))+" "),t.isLoading?[t._v("…")]:t._e()],2)],1)],1)},Uh=[],Hh={data:function(){return{invalid:!1,isLoading:!1,user:{email:"",password:"",remember:!1}}},computed:{fields:function(){return{email:{autofocus:!0,label:this.$t("email"),type:"email",required:!0,link:!1},password:{label:this.$t("password"),type:"password",minLength:8,required:!0,autocomplete:"current-password",counter:!1}}}},methods:{login:function(){var t=this;this.invalid=!1,this.isLoading=!0,this.$store.dispatch("user/login",this.user).then(function(){t.$store.dispatch("system/load",!0).then(function(){t.$store.dispatch("notification/success",t.$t("welcome")),t.isLoading=!1})}).catch(function(){t.invalid=!0,t.isLoading=!1})}}},Kh=Hh,Vh=Object(u["a"])(Kh,Fh,Uh,!1,null,null,null),Yh=Vh.exports,Wh={components:{"k-login-form":window.panel.plugins.login||Yh},data:function(){return{ready:!1,issue:null}},created:function(){var t=this;this.$store.dispatch("form/current",null),this.$store.dispatch("system/load").then(function(e){e.isReady||t.$router.push("/installation"),e.user&&e.user.id&&t.$router.push("/"),t.ready=!0,t.$store.dispatch("title",t.$t("login"))}).catch(function(e){t.issue=e})}},Gh=Wh,Jh=(n("24c1"),Object(u["a"])(Gh,Rh,zh,!1,null,null,null)),Zh=Jh.exports,Xh=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.issue?n("k-error-view",[t._v("\n "+t._s(t.issue.message)+"\n")]):n("k-view",{staticClass:"k-page-view",attrs:{"data-locked":t.isLocked}},[n("k-header",{attrs:{tabs:t.tabs,tab:t.tab,editable:t.permissions.changeTitle&&!t.isLocked},on:{edit:function(e){return t.action("rename")}}},[t._v("\n "+t._s(t.page.title)+"\n "),n("k-button-group",{attrs:{slot:"left"},slot:"left"},[t.permissions.preview&&t.page.previewUrl?n("k-button",{attrs:{responsive:!0,link:t.page.previewUrl,target:"_blank",icon:"open"}},[t._v("\n "+t._s(t.$t("open"))+"\n ")]):t._e(),t.status?n("k-button",{class:["k-status-flag","k-status-flag-"+t.page.status],attrs:{disabled:!t.permissions.changeStatus||t.isLocked,icon:!t.permissions.changeStatus||t.isLocked?"protected":"circle",responsive:!0},on:{click:function(e){return t.action("status")}}},[t._v("\n "+t._s(t.status.label)+"\n ")]):t._e(),n("k-dropdown",[n("k-button",{attrs:{responsive:!0,disabled:!0===t.isLocked,icon:"cog"},on:{click:function(e){return t.$refs.settings.toggle()}}},[t._v("\n "+t._s(t.$t("settings"))+"\n ")]),n("k-dropdown-content",{ref:"settings",attrs:{options:t.options},on:{action:t.action}})],1),n("k-languages-dropdown")],1),t.page.id?n("k-prev-next",{attrs:{slot:"right",prev:t.prev,next:t.next},slot:"right"}):t._e()],1),t.page.id?n("k-tabs",{key:t.tabsKey,ref:"tabs",attrs:{parent:t.$api.pages.url(t.page.id),blueprint:t.blueprint,tabs:t.tabs},on:{tab:t.onTab}}):t._e(),n("k-page-rename-dialog",{ref:"rename",on:{success:t.update}}),n("k-page-duplicate-dialog",{ref:"duplicate"}),n("k-page-url-dialog",{ref:"url"}),n("k-page-status-dialog",{ref:"status",on:{success:t.update}}),n("k-page-template-dialog",{ref:"template",on:{success:t.update}}),n("k-page-remove-dialog",{ref:"remove"})],1)},Qh=[],tm={mixins:[jh],props:{path:{type:String,required:!0}},data:function(){return{page:{title:"",id:null,prev:null,next:null,status:null},blueprint:null,preview:!0,permissions:{changeTitle:!1,changeStatus:!1},icon:"page",issue:null,tab:null,tabs:[],options:null}},computed:{language:function(){return this.$store.state.languages.current},next:function(){if(this.page.next)return{link:this.$api.pages.link(this.page.next.id),tooltip:this.page.next.title}},prev:function(){if(this.page.prev)return{link:this.$api.pages.link(this.page.prev.id),tooltip:this.page.prev.title}},status:function(){return null!==this.page.status?this.page.blueprint.status[this.page.status]:null},tabsKey:function(){return"page-"+this.page.id+"-tabs"}},watch:{language:function(){this.fetch()},path:function(){this.fetch()}},created:function(){this.$events.$on("page.changeSlug",this.update)},destroyed:function(){this.$events.$off("page.changeSlug",this.update)},methods:{action:function(t){switch(t){case"duplicate":this.$refs.duplicate.open(this.page.id);break;case"rename":this.$refs.rename.open(this.page.id);break;case"url":this.$refs.url.open(this.page.id);break;case"status":this.$refs.status.open(this.page.id);break;case"template":this.$refs.template.open(this.page.id);break;case"remove":this.$refs.remove.open(this.page.id);break;default:this.$store.dispatch("notification/error",this.$t("notification.notImplemented"));break}},fetch:function(){var t=this;this.$api.pages.get(this.path,{view:"panel"}).then(function(e){t.page=e,t.blueprint=e.blueprint.name,t.permissions=e.options,t.tabs=e.blueprint.tabs,t.options=function(e){t.$api.pages.options(t.page.id).then(function(t){e(t)})},t.$store.dispatch("breadcrumb",t.$api.pages.breadcrumb(e)),t.$store.dispatch("title",t.page.title),t.$store.dispatch("form/create",{id:"pages/"+t.page.id,api:t.$api.pages.link(t.page.id),content:t.page.content})}).catch(function(e){t.issue=e})},onTab:function(t){this.tab=t},update:function(){this.fetch(),this.$emit("model.update")}}},em=tm,nm=(n("202d"),Object(u["a"])(em,Xh,Qh,!1,null,null,null)),im=nm.exports,sm=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("k-view",{staticClass:"k-settings-view"},[n("k-header",[t._v("\n "+t._s(t.$t("view.settings"))+"\n ")]),n("section",{staticClass:"k-system-info"},[n("header",[n("k-headline",[t._v("Kirby")])],1),n("ul",{staticClass:"k-system-info-box"},[n("li",[n("dl",[n("dt",[t._v(t._s(t.$t("license")))]),n("dd",[t.license?[t._v("\n "+t._s(t.license)+"\n ")]:n("p",[n("strong",{staticClass:"k-system-unregistered"},[t._v(t._s(t.$t("license.unregistered")))])])],2)])]),n("li",[n("dl",[n("dt",[t._v(t._s(t.$t("version")))]),n("dd",[t._v(t._s(t.$store.state.system.info.version))])])])])]),t.multilang?n("section",{staticClass:"k-languages"},[t.languages.length>0?[n("section",{staticClass:"k-languages-section"},[n("header",[n("k-headline",[t._v(t._s(t.$t("languages.default")))])],1),n("k-collection",{attrs:{items:t.defaultLanguage},on:{action:t.action}})],1),n("section",{staticClass:"k-languages-section"},[n("header",[n("k-headline",[t._v(t._s(t.$t("languages.secondary")))]),n("k-button",{attrs:{icon:"add"},on:{click:function(e){return t.$refs.create.open()}}},[t._v(t._s(t.$t("language.create")))])],1),t.translations.length?n("k-collection",{attrs:{items:t.translations},on:{action:t.action}}):n("k-empty",{attrs:{icon:"globe"},on:{click:function(e){return t.$refs.create.open()}}},[t._v(t._s(t.$t("languages.secondary.empty")))])],1)]:0===t.languages.length?[n("header",[n("k-headline",[t._v(t._s(t.$t("languages")))]),n("k-button",{attrs:{icon:"add"},on:{click:function(e){return t.$refs.create.open()}}},[t._v(t._s(t.$t("language.create")))])],1),n("k-empty",{attrs:{icon:"globe"},on:{click:function(e){return t.$refs.create.open()}}},[t._v(t._s(t.$t("languages.empty")))])]:t._e(),n("k-language-create-dialog",{ref:"create",on:{success:t.fetch}}),n("k-language-update-dialog",{ref:"update",on:{success:t.fetch}}),n("k-language-remove-dialog",{ref:"remove",on:{success:t.fetch}})],2):t._e()],1)},am=[],om={data:function(){return{languages:[]}},computed:{defaultLanguage:function(){return this.languages.filter(function(t){return t.default})},multilang:function(){return this.$store.state.system.info.multilang},license:function(){return this.$store.state.system.info.license},translations:function(){return this.languages.filter(function(t){return!1===t.default})}},created:function(){this.$store.dispatch("form/current",null),this.$store.dispatch("title",this.$t("view.settings")),this.$store.dispatch("breadcrumb",[]),this.fetch()},methods:{fetch:function(){var t=this;!1!==this.multilang?this.$api.get("languages").then(function(e){t.languages=e.data.map(function(n){return{id:n.code,default:n.default,icon:{type:"globe",back:"black"},text:n.name,info:n.code,options:[{icon:"edit",text:t.$t("edit"),click:"update"},{icon:"trash",text:t.$t("delete"),disabled:n.default&&1!==e.data.length,click:"remove"}]}})}):this.languages=[]},action:function(t,e){switch(e){case"update":this.$refs.update.open(t.id);break;case"remove":this.$refs.remove.open(t.id);break}}}},rm=om,lm=(n("9bd5"),Object(u["a"])(rm,sm,am,!1,null,null,null)),um=lm.exports,cm=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.issue?n("k-error-view",[t._v("\n "+t._s(t.issue.message)+"\n")]):n("k-view",{key:"site-view",staticClass:"k-site-view",attrs:{"data-locked":t.isLocked}},[n("k-header",{attrs:{tabs:t.tabs,tab:t.tab,editable:t.permissions.changeTitle&&!t.isLocked},on:{edit:function(e){return t.action("rename")}}},[t._v("\n "+t._s(t.site.title)+"\n "),n("k-button-group",{attrs:{slot:"left"},slot:"left"},[n("k-button",{attrs:{responsive:!0,link:t.site.previewUrl,target:"_blank",icon:"open"}},[t._v("\n "+t._s(t.$t("open"))+"\n ")]),n("k-languages-dropdown")],1)],1),t.site.url?n("k-tabs",{ref:"tabs",attrs:{tabs:t.tabs,blueprint:t.site.blueprint.name,parent:"site"},on:{tab:function(e){t.tab=e}}}):t._e(),n("k-site-rename-dialog",{ref:"rename",on:{success:t.fetch}})],1)},dm=[],pm={data:function(){return{site:{title:null,url:null},issue:null,tab:null,tabs:[],options:null,permissions:{changeTitle:!0}}},computed:{isLocked:function(){return null!==this.$store.getters["form/lock"]},language:function(){return this.$store.state.languages.current}},watch:{language:function(){this.fetch()}},created:function(){this.fetch()},methods:{fetch:function(){var t=this;this.$api.site.get({view:"panel"}).then(function(e){t.site=e,t.tabs=e.blueprint.tabs,t.permissions=e.options,t.options=function(e){t.$api.site.options().then(function(t){e(t)})},t.$store.dispatch("breadcrumb",[]),t.$store.dispatch("title",null),t.$store.dispatch("form/create",{id:"site",api:"site",content:e.content})}).catch(function(e){t.issue=e})},action:function(t){switch(t){case"languages":this.$refs.languages.open();break;case"rename":this.$refs.rename.open();break;default:this.$store.dispatch("notification/error",this.$t("notification.notImplemented"));break}}}},fm=pm,hm=Object(u["a"])(fm,cm,dm,!1,null,null,null),mm=hm.exports,gm=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.issue?n("k-error-view",[t._v("\n "+t._s(t.issue.message)+"\n")]):n("k-view",{staticClass:"k-users-view"},[n("k-header",[t._v("\n "+t._s(t.$t("view.users"))+"\n "),n("k-button-group",{attrs:{slot:"left"},slot:"left"},[n("k-button",{attrs:{disabled:!1===t.$permissions.users.create,icon:"add"},on:{click:function(e){return t.$refs.create.open()}}},[t._v(t._s(t.$t("user.create")))])],1),n("k-button-group",{attrs:{slot:"right"},slot:"right"},[n("k-dropdown",[n("k-button",{attrs:{responsive:!0,icon:"funnel"},on:{click:function(e){return t.$refs.roles.toggle()}}},[t._v("\n "+t._s(t.$t("role"))+": "+t._s(t.role?t.role.text:t.$t("role.all"))+"\n ")]),n("k-dropdown-content",{ref:"roles",attrs:{align:"right"}},[n("k-dropdown-item",{attrs:{icon:"bolt"},on:{click:function(e){return t.filter(!1)}}},[t._v("\n "+t._s(t.$t("role.all"))+"\n ")]),n("hr"),t._l(t.roles,function(e){return n("k-dropdown-item",{key:e.value,attrs:{icon:"bolt"},on:{click:function(n){return t.filter(e)}}},[t._v("\n "+t._s(e.text)+"\n ")])})],2)],1)],1)],1),t.users.length>0?[n("k-collection",{attrs:{items:t.users,pagination:t.pagination},on:{paginate:t.paginate,action:t.action}})]:0===t.total?[n("k-empty",{attrs:{icon:"users"}},[t._v(t._s(t.$t("role.empty")))])]:t._e(),n("k-user-create-dialog",{ref:"create",on:{success:t.fetch}}),n("k-user-email-dialog",{ref:"email",on:{success:t.fetch}}),n("k-user-language-dialog",{ref:"language",on:{success:t.fetch}}),n("k-user-password-dialog",{ref:"password"}),n("k-user-remove-dialog",{ref:"remove",on:{success:t.fetch}}),n("k-user-rename-dialog",{ref:"rename",on:{success:t.fetch}}),n("k-user-role-dialog",{ref:"role",on:{success:t.fetch}})],2)},bm=[],vm={data:function(){return{page:1,limit:20,total:null,users:[],roles:[],issue:null}},computed:{pagination:function(){return{page:this.page,limit:this.limit,total:this.total}},role:function(){var t=this,e=null;return this.$route.params.role&&this.roles.forEach(function(n){n.value===t.$route.params.role&&(e=n)}),e}},watch:{$route:function(){this.fetch()}},created:function(){var t=this;this.$store.dispatch("form/current",null),this.$api.roles.options().then(function(e){t.roles=e,t.fetch()})},methods:{fetch:function(){var t=this;this.$store.dispatch("title",this.$t("view.users"));var e={paginate:{page:this.page,limit:this.limit},sortBy:"username asc"};this.role&&(e.filterBy=[{field:"role",operator:"==",value:this.role.value}]),this.$api.users.list(e).then(function(e){t.users=e.data.map(function(e){var n={id:e.id,icon:{type:"user",back:"black"},text:e.name||e.email,info:e.role.title,link:"/users/"+e.id,options:function(n){t.$api.users.options(e.id,"list").then(function(t){return n(t)}).catch(function(e){t.$store.dispatch("notification/error",e)})},image:null};return e.avatar&&(n.image={url:e.avatar.url,cover:!0}),n}),t.role?t.$store.dispatch("breadcrumb",[{link:"/users/role/"+t.role.value,label:t.$t("role")+": "+t.role.text}]):t.$store.dispatch("breadcrumb",[]),t.total=e.pagination.total}).catch(function(e){t.issue=e})},paginate:function(t){this.page=t.page,this.limit=t.limit,this.fetch()},action:function(t,e){switch(e){case"edit":this.$router.push("/users/"+t.id);break;case"email":this.$refs.email.open(t.id);break;case"role":this.$refs.role.open(t.id);break;case"rename":this.$refs.rename.open(t.id);break;case"password":this.$refs.password.open(t.id);break;case"language":this.$refs.language.open(t.id);break;case"remove":this.$refs.remove.open(t.id);break}},filter:function(t){!1===t?this.$router.push("/users"):this.$router.push("/users/role/"+t.value),this.$refs.roles.close()}}},km=vm,$m=Object(u["a"])(km,gm,bm,!1,null,null,null),_m=$m.exports,ym=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.issue?n("k-error-view",[t._v("\n "+t._s(t.issue.message)+"\n")]):t.ready?n("div",{staticClass:"k-user-view",attrs:{"data-locked":t.isLocked}},[n("div",{staticClass:"k-user-profile"},[n("k-view",[t.avatar?[n("k-dropdown",[n("k-button",{staticClass:"k-user-view-image",attrs:{tooltip:t.$t("avatar"),disabled:t.isLocked},on:{click:function(e){return t.$refs.picture.toggle()}}},[t.avatar?n("k-image",{attrs:{cover:!0,src:t.avatar,ratio:"1/1"}}):t._e()],1),n("k-dropdown-content",{ref:"picture"},[n("k-dropdown-item",{attrs:{icon:"upload"},on:{click:function(e){return t.$refs.upload.open()}}},[t._v("\n "+t._s(t.$t("change"))+"\n ")]),n("k-dropdown-item",{attrs:{icon:"trash"},on:{click:function(e){return t.action("picture.delete")}}},[t._v("\n "+t._s(t.$t("delete"))+"\n ")])],1)],1)]:[n("k-button",{staticClass:"k-user-view-image",attrs:{tooltip:t.$t("avatar")},on:{click:function(e){return t.$refs.upload.open()}}},[n("k-icon",{attrs:{type:"user"}})],1)],n("k-button-group",[n("k-button",{attrs:{disabled:!t.permissions.changeEmail||t.isLocked,icon:"email"},on:{click:function(e){return t.action("email")}}},[t._v(t._s(t.$t("email"))+": "+t._s(t.user.email))]),n("k-button",{attrs:{disabled:!t.permissions.changeRole||t.isLocked,icon:"bolt"},on:{click:function(e){return t.action("role")}}},[t._v(t._s(t.$t("role"))+": "+t._s(t.user.role.title))]),n("k-button",{attrs:{disabled:!t.permissions.changeLanguage||t.isLocked,icon:"globe"},on:{click:function(e){return t.action("language")}}},[t._v(t._s(t.$t("language"))+": "+t._s(t.user.language))])],1)],2)],1),n("k-view",[n("k-header",{attrs:{editable:t.permissions.changeName&&!t.isLocked,tabs:t.tabs,tab:t.tab},on:{edit:function(e){return t.action("rename")}}},[t.user.name&&0!==t.user.name.length?[t._v(t._s(t.user.name))]:n("span",{staticClass:"k-user-name-placeholder"},[t._v(t._s(t.$t("name"))+" …")]),n("k-button-group",{attrs:{slot:"left"},slot:"left"},[n("k-dropdown",[n("k-button",{attrs:{disabled:t.isLocked,icon:"cog"},on:{click:function(e){return t.$refs.settings.toggle()}}},[t._v("\n "+t._s(t.$t("settings"))+"\n ")]),n("k-dropdown-content",{ref:"settings",attrs:{options:t.options},on:{action:t.action}})],1),n("k-languages-dropdown")],1),t.user.id&&"User"===t.$route.name?n("k-prev-next",{attrs:{slot:"right",prev:t.prev,next:t.next},slot:"right"}):t._e()],2),t.user&&t.tabs.length?n("k-tabs",{key:t.tabsKey,ref:"tabs",attrs:{parent:"users/"+t.user.id,blueprint:t.user.blueprint.name,tabs:t.tabs},on:{tab:function(e){t.tab=e}}}):t.ready?n("k-box",{attrs:{text:t.$t("user.blueprint",{role:t.user.role.name}),theme:"info"}}):t._e(),n("k-user-email-dialog",{ref:"email",on:{success:t.fetch}}),n("k-user-language-dialog",{ref:"language",on:{success:t.fetch}}),n("k-user-password-dialog",{ref:"password"}),n("k-user-remove-dialog",{ref:"remove"}),n("k-user-rename-dialog",{ref:"rename",on:{success:t.fetch}}),n("k-user-role-dialog",{ref:"role",on:{success:t.fetch}}),n("k-upload",{ref:"upload",attrs:{url:t.uploadApi,multiple:!1,accept:"image/*"},on:{success:t.uploadedAvatar}})],1)],1):t._e()},wm=[],xm={mixins:[jh],props:{id:{type:String,required:!0}},data:function(){return{tab:null,tabs:[],ready:!1,user:{role:{name:null},name:null,language:null,prev:null,next:null},permissions:{changeEmail:!0,changeName:!0,changeLanguage:!0,changeRole:!0},issue:null,avatar:null,options:null}},computed:{language:function(){return this.$store.state.languages.current},next:function(){if(this.user.next)return{link:this.$api.users.link(this.user.next.id),tooltip:this.user.next.name}},prev:function(){if(this.user.prev)return{link:this.$api.users.link(this.user.prev.id),tooltip:this.user.prev.name}},tabsKey:function(){return"user-"+this.user.id+"-tabs"},uploadApi:function(){return y.api+"/users/"+this.user.id+"/avatar"}},watch:{language:function(){this.fetch()},id:function(){this.fetch()}},methods:{action:function(t){var e=this;switch(t){case"email":this.$refs.email.open(this.user.id);break;case"language":this.$refs.language.open(this.user.id);break;case"password":this.$refs.password.open(this.user.id);break;case"picture.delete":this.$api.users.deleteAvatar(this.id).then(function(){e.$store.dispatch("notification/success",":)"),e.avatar=null});break;case"remove":this.$refs.remove.open(this.user.id);break;case"rename":this.$refs.rename.open(this.user.id);break;case"role":this.$refs.role.open(this.user.id);break;default:this.$store.dispatch("notification/error","Not yet implemented")}},fetch:function(){var t=this;this.$api.users.get(this.id,{view:"panel"}).then(function(e){t.user=e,t.tabs=e.blueprint.tabs,t.ready=!0,t.permissions=e.options,t.options=function(e){t.$api.users.options(t.user.id).then(function(t){e(t)})},e.avatar?t.avatar=e.avatar.url:t.avatar=null,"User"===t.$route.name?t.$store.dispatch("breadcrumb",t.$api.users.breadcrumb(e)):t.$store.dispatch("breadcrumb",[]),t.$store.dispatch("title",t.user.name||t.user.email),t.$store.dispatch("form/create",{id:"users/"+e.id,api:t.$api.users.link(e.id),content:e.content})}).catch(function(e){t.issue=e})},uploadedAvatar:function(){this.$store.dispatch("notification/success",":)"),this.fetch()}}},Om=xm,Cm=(n("bd96"),Object(u["a"])(Om,ym,wm,!1,null,null,null)),Sm=Cm.exports;I["a"].component("k-dialog",R),I["a"].component("k-error-dialog",V),I["a"].component("k-file-rename-dialog",mt),I["a"].component("k-file-remove-dialog",X),I["a"].component("k-files-dialog",Ct),I["a"].component("k-language-create-dialog",It),I["a"].component("k-language-remove-dialog",Dt),I["a"].component("k-language-update-dialog",Kt),I["a"].component("k-page-create-dialog",Zt),I["a"].component("k-page-duplicate-dialog",ie),I["a"].component("k-page-rename-dialog",me),I["a"].component("k-page-remove-dialog",ue),I["a"].component("k-page-status-dialog",_e),I["a"].component("k-page-template-dialog",Se),I["a"].component("k-page-url-dialog",qe),I["a"].component("k-pages-dialog",Me),I["a"].component("k-site-rename-dialog",Ue),I["a"].component("k-user-create-dialog",Ze),I["a"].component("k-user-email-dialog",sn),I["a"].component("k-user-language-dialog",cn),I["a"].component("k-user-password-dialog",gn),I["a"].component("k-user-remove-dialog",yn),I["a"].component("k-user-rename-dialog",En),I["a"].component("k-user-role-dialog",An),I["a"].component("k-users-dialog",Rn),I["a"].component("k-calendar",ei),I["a"].component("k-counter",ri),I["a"].component("k-autocomplete",Vn),I["a"].component("k-form",fi),I["a"].component("k-form-buttons",$i),I["a"].component("k-form-indicator",Ci),I["a"].component("k-field",Ii),I["a"].component("k-fieldset",Di),I["a"].component("k-input",Hi),I["a"].component("k-upload",Qi),I["a"].component("k-checkbox-input",os),I["a"].component("k-checkboxes-input",ps),I["a"].component("k-date-input",$s),I["a"].component("k-datetime-input",Cs),I["a"].component("k-email-input",Bs),I["a"].component("k-multiselect-input",Fs),I["a"].component("k-number-input",Ws),I["a"].component("k-password-input",Xs),I["a"].component("k-radio-input",sa),I["a"].component("k-range-input",ca),I["a"].component("k-select-input",ga),I["a"].component("k-tags-input",ya),I["a"].component("k-tel-input",Ca),I["a"].component("k-text-input",Is),I["a"].component("k-textarea-input",Aa),I["a"].component("k-time-input",Ha),I["a"].component("k-toggle-input",Ja),I["a"].component("k-url-input",to),I["a"].component("k-checkboxes-field",oo),I["a"].component("k-date-field",fo),I["a"].component("k-email-field",ko),I["a"].component("k-files-field",Co),I["a"].component("k-headline-field",Io),I["a"].component("k-info-field",Do),I["a"].component("k-line-field",Uo),I["a"].component("k-multiselect-field",Go),I["a"].component("k-number-field",er),I["a"].component("k-pages-field",rr),I["a"].component("k-password-field",fr),I["a"].component("k-radio-field",kr),I["a"].component("k-range-field",Or),I["a"].component("k-select-field",Lr),I["a"].component("k-structure-field",Yr),I["a"].component("k-tags-field",Qr),I["a"].component("k-text-field",dl),I["a"].component("k-textarea-field",bl),I["a"].component("k-tel-field",al),I["a"].component("k-time-field",wl),I["a"].component("k-toggle-field",jl),I["a"].component("k-url-field",Nl),I["a"].component("k-users-field",zl),I["a"].component("k-toolbar",Wl),I["a"].component("k-toolbar-email-dialog",tu),I["a"].component("k-toolbar-link-dialog",ou),I["a"].component("k-email-field-preview",wu),I["a"].component("k-files-field-preview",fu),I["a"].component("k-pages-field-preview",ju),I["a"].component("k-url-field-preview",ku),I["a"].component("k-users-field-preview",Nu),I["a"].component("k-bar",Ru),I["a"].component("k-box",Vu),I["a"].component("k-card",Qu),I["a"].component("k-cards",ac),I["a"].component("k-collection",dc),I["a"].component("k-column",bc),I["a"].component("k-dropzone",wc),I["a"].component("k-empty",jc),I["a"].component("k-file-preview",Nc),I["a"].component("k-grid",zc),I["a"].component("k-header",Yc),I["a"].component("k-list",Qc),I["a"].component("k-list-item",ad),I["a"].component("k-tabs",dd),I["a"].component("k-view",bd),I["a"].component("k-draggable",Od),I["a"].component("k-error-boundary",jd),I["a"].component("k-headline",Nd),I["a"].component("k-icon",zd),I["a"].component("k-image",Yd),I["a"].component("k-progress",Qd),I["a"].component("k-sort-handle",sp),I["a"].component("k-text",cp),I["a"].component("k-button",gp),I["a"].component("k-button-group",_p),I["a"].component("k-dropdown",Cp),I["a"].component("k-dropdown-content",qp),I["a"].component("k-dropdown-item",Mp),I["a"].component("k-languages-dropdown",Zp),I["a"].component("k-link",Kp),I["a"].component("k-pagination",sf),I["a"].component("k-prev-next",cf),I["a"].component("k-search",bf),I["a"].component("k-tag",wf),I["a"].component("k-topbar",Tf),I["a"].component("k-sections",Bf),I["a"].component("k-info-section",Uf),I["a"].component("k-pages-section",Jf),I["a"].component("k-files-section",nh),I["a"].component("k-fields-section",lh),I["a"].component("k-browser-view",mh),I["a"].component("k-custom-view",_h),I["a"].component("k-error-view",Ch),I["a"].component("k-file-view",qh),I["a"].component("k-installation-view",Mh),I["a"].component("k-login-view",Zh),I["a"].component("k-page-view",im),I["a"].component("k-settings-view",um),I["a"].component("k-site-view",mm),I["a"].component("k-users-view",_m),I["a"].component("k-user-view",Sm);var Em={user:function(){return Xm.get("auth")},login:function(t){var e={long:t.remember||!1,email:t.email,password:t.password};return Xm.post("auth/login",e).then(function(t){return t.user})},logout:function(){return Xm.post("auth/logout")}},jm={get:function(t,e,n){return Xm.get(this.url(t,e),n).then(function(t){return!0===_t()(t.content)&&(t.content={}),t})},update:function(t,e,n){return Xm.patch(this.url(t,e),n)},rename:function(t,e,n){return Xm.patch(this.url(t,e,"name"),{name:n})},url:function(t,e,n){var i=t+"/files/"+e;return n&&(i+="/"+n),i},link:function(t,e,n){return"/"+this.url(t,e,n)},delete:function(t,e){return Xm.delete(this.url(t,e))},options:function(t,e,n){return Xm.get(this.url(t,e),{select:"options"}).then(function(t){var e=t.options,i=[];return"list"===n&&i.push({icon:"open",text:I["a"].i18n.translate("open"),click:"download"}),i.push({icon:"title",text:I["a"].i18n.translate("rename"),click:"rename",disabled:!e.changeName}),i.push({icon:"upload",text:I["a"].i18n.translate("replace"),click:"replace",disabled:!e.replace}),i.push({icon:"trash",text:I["a"].i18n.translate("delete"),click:"remove",disabled:!e.delete}),i})},breadcrumb:function(t,e){var n=null,i=[];switch(e){case"UserFile":i.push({label:t.parent.username,link:Xm.users.link(t.parent.id)}),n="users/"+t.parent.id;break;case"SiteFile":n="site";break;case"PageFile":i=t.parents.map(function(t){return{label:t.title,link:Xm.pages.link(t.id)}}),n=Xm.pages.url(t.parent.id);break}return i.push({label:t.filename,link:this.link(n,t.filename)}),i}},Tm={create:function(t,e){return null===t||"/"===t?Xm.post("site/children",e):Xm.post(this.url(t,"children"),e)},duplicate:function(t,e,n){return Xm.post(this.url(t,"duplicate"),{slug:e,children:n.children||!1,files:n.files||!1})},url:function(t,e){var n=null===t?"pages":"pages/"+t.replace(/\//g,"+");return e&&(n+="/"+e),n},link:function(t){return"/"+this.url(t)},get:function(t,e){return Xm.get(this.url(t),e).then(function(t){return!0===_t()(t.content)&&(t.content={}),t})},options:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"view";return Xm.get(this.url(t),{select:"options"}).then(function(t){var n=t.options,i=[];return"list"===e&&(i.push({click:"preview",icon:"open",text:I["a"].i18n.translate("open"),disabled:!1===n.preview}),i.push("-")),i.push({click:"rename",icon:"title",text:I["a"].i18n.translate("rename"),disabled:!n.changeTitle}),i.push({click:"duplicate",icon:"copy",text:I["a"].i18n.translate("duplicate"),disabled:!n.duplicate}),i.push("-"),i.push({click:"url",icon:"url",text:I["a"].i18n.translate("page.changeSlug"),disabled:!n.changeSlug}),i.push({click:"status",icon:"preview",text:I["a"].i18n.translate("page.changeStatus"),disabled:!n.changeStatus}),i.push({click:"template",icon:"template",text:I["a"].i18n.translate("page.changeTemplate"),disabled:!n.changeTemplate}),i.push("-"),i.push({click:"remove",icon:"trash",text:I["a"].i18n.translate("delete"),disabled:!n.delete}),i})},preview:function(t){return this.get(t,{select:"previewUrl"}).then(function(t){return t.previewUrl})},update:function(t,e){return Xm.patch(this.url(t),e)},children:function(t,e){return Xm.post(this.url(t,"children/search"),e)},files:function(t,e){return Xm.post(this.url(t,"files/search"),e)},delete:function(t,e){return Xm.delete(this.url(t),e)},slug:function(t,e){return Xm.patch(this.url(t,"slug"),{slug:e})},title:function(t,e){return Xm.patch(this.url(t,"title"),{title:e})},template:function(t,e){return Xm.patch(this.url(t,"template"),{template:e})},search:function(t,e){return t?Xm.post("pages/"+t.replace("/","+")+"/children/search?select=id,title,hasChildren",e):Xm.post("site/children/search?select=id,title,hasChildren",e)},status:function(t,e,n){return Xm.patch(this.url(t,"status"),{status:e,position:n})},breadcrumb:function(t){var e=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=t.parents.map(function(t){return{label:t.title,link:e.link(t.id)}});return!0===n&&i.push({label:t.title,link:this.link(t.id)}),i}},Lm=n("2f62"),Im=n("768b"),qm={namespaced:!0,state:{models:{},current:null,isDisabled:!1,lock:null,unlock:null},getters:{current:function(t){return t.current},exists:function(t){return function(e){return t.models.hasOwnProperty(e)}},hasChanges:function(t,e){return function(t){return nt()(e.model(t).changes).length>0}},id:function(t,e,n){return function(t){return n.languages.current?t+"/"+n.languages.current.code:t}},isCurrent:function(t){return function(e){return t.current===e}},isDisabled:function(t){return!0===t.isDisabled},lock:function(t){return t.lock},model:function(t,e){return function(n){return e.exists(n)?t.models[n]:{originals:{},values:{},changes:{},api:null}}},originals:function(t,e){return function(t){return Mr(e.model(t).originals)}},values:function(t,e){return function(n){return n=n||t.current,Mr(e.model(n).values)}},unlock:function(t){return t.unlock}},mutations:{CREATE:function(t,e){I["a"].set(t.models,e.id,{api:e.api,originals:Mr(e.content),values:Mr(e.content),changes:{}})},CURRENT:function(t,e){t.current=e},DELETE_CHANGES:function(t,e){I["a"].set(t.models[e],"changes",{}),I["a"].set(t.models[e],"values",Mr(t.models[e].originals)),localStorage.removeItem("kirby$form$"+e)},IS_DISABLED:function(t,e){t.isDisabled=e},LOCK:function(t,e){t.lock=e},MOVE:function(t,e){var n=Mr(t.models[e.old]);I["a"].delete(t.models,e.old),I["a"].set(t.models,e.new,n);var i=localStorage.getItem("kirby$form$"+e.old);localStorage.removeItem("kirby$form$"+e.old),localStorage.setItem("kirby$form$"+e.new,i)},REMOVE:function(t,e){I["a"].delete(t.models,e),localStorage.removeItem("kirby$form$"+e)},SET_ORIGINALS:function(t,e){var n=Object(Im["a"])(e,2),i=n[0],s=n[1];t.models[i].originals=Mr(s)},SET_VALUES:function(t,e){var n=Object(Im["a"])(e,2),i=n[0],s=n[1];t.models[i].values=Mr(s)},UNLOCK:function(t,e){t.unlock=e},UPDATE:function(t,e){var n=Object(Im["a"])(e,3),i=n[0],s=n[1],a=n[2];if(!t.models[i])return!1;a=Mr(a),I["a"].set(t.models[i].values,s,a);var o=Dr()(t.models[i].originals[s]),r=Dr()(a);o===r?I["a"].delete(t.models[i].changes,s):I["a"].set(t.models[i].changes,s,!0),localStorage.setItem("kirby$form$"+i,Dr()({api:t.models[i].api,originals:t.models[i].originals,values:t.models[i].values,changes:t.models[i].changes}))}},actions:{create:function(t,e){t.rootState.languages.current&&t.rootState.languages.current.code&&(e.id=t.getters.id(e.id)),(e.id.startsWith("pages/")||e.id.startsWith("site"))&&delete e.content.title,t.commit("CREATE",e),t.dispatch("current",e.id),t.dispatch("load",e)},current:function(t,e){t.commit("CURRENT",e)},load:function(t,e){var n=localStorage.getItem("kirby$form$"+e.id);if(n){var i=JSON.parse(n);Xm.get(e.api+"/unlock").then(function(n){!1!==n.supported&&!1!==n.unlocked?t.commit("UNLOCK",i.values):nt()(i.values).forEach(function(n){var s=i.values[n];t.commit("UPDATE",[e.id,n,s])})})}},disable:function(t){t.commit("IS_DISABLED",!0)},enable:function(t){t.commit("IS_DISABLED",!1)},lock:function(t,e){t.commit("LOCK",e)},move:function(t,e){t.commit("MOVE",e)},remove:function(t,e){t.commit("REMOVE",e)},revert:function(t,e){var n=t.getters.model(e);return Xm.get(n.api,{select:"content"}).then(function(n){(e.startsWith("pages/")||e.startsWith("site"))&&delete n.content.title,t.commit("SET_ORIGINALS",[e,n.content]),t.commit("SET_VALUES",[e,n.content]),t.commit("DELETE_CHANGES",e)})},save:function(t,e){e=e||t.state.current;var n=t.getters.model(e);return(!t.getters.isCurrent(e)||!t.state.isDisabled)&&(t.dispatch("disable"),Xm.patch(n.api,n.values).then(function(){t.dispatch("revert",e),t.dispatch("enable")}).catch(function(e){throw t.dispatch("enable"),e}))},unlock:function(t,e){t.commit("UNLOCK",e)},update:function(t,e){var n=Object(Im["a"])(e,3),i=n[0],s=n[1],a=n[2];t.commit("UPDATE",[i,s,a])}}},Am={namespaced:!0,state:{instance:null,clock:0,step:5,beats:[]},mutations:{ADD:function(t,e){t.beats.push(e)},CLEAR:function(t){clearInterval(t.instance),t.clock=0},CLOCK:function(t){t.clock+=t.step},INITIALIZE:function(t,e){t.instance=e},REMOVE:function(t,e){var n=t.beats.map(function(t){return t.handler}).indexOf(e);-1!==n&&I["a"].delete(t.beats,n)}},actions:{add:function(t,e){e={handler:e[0]||e,interval:e[1]||t.state.step},e.handler(),t.commit("ADD",e),1===t.state.beats.length&&t.dispatch("run")},clear:function(t){t.commit("CLEAR")},remove:function(t,e){t.commit("REMOVE",e),t.state.beats.length<1&&t.commit("CLEAR")},run:function(t){t.commit("CLEAR"),t.commit("INITIALIZE",setInterval(function(){t.commit("CLOCK"),t.state.beats.forEach(function(e){t.state.clock%e.interval===0&&e.handler()})},1e3*t.state.step))}}},Nm={namespaced:!0,state:{all:[],current:null,default:null},mutations:{SET_ALL:function(t,e){t.all=e.map(function(t){return{code:t.code,name:t.name,default:t.default,direction:t.direction,rules:t.rules}})},SET_CURRENT:function(t,e){t.current=e,e&&e.code&&localStorage.setItem("kirby$language",e.code)},SET_DEFAULT:function(t,e){t.default=e}},actions:{current:function(t,e){t.commit("SET_CURRENT",e)},install:function(t,e){var n=e.filter(function(t){return t.default})[0];t.commit("SET_ALL",e),t.commit("SET_DEFAULT",n);var i=localStorage.getItem("kirby$language");if(i){var s=e.filter(function(t){return t.code===i})[0];if(s)return void t.dispatch("current",s)}t.dispatch("current",n||e[0]||null)},load:function(t){return Xm.get("languages").then(function(e){t.dispatch("install",e.data)})}}},Bm={timer:null,namespaced:!0,state:{type:null,message:null,details:null,timeout:null},mutations:{SET:function(t,e){t.type=e.type,t.message=e.message,t.details=e.details,t.timeout=e.timeout},UNSET:function(t){t.type=null,t.message=null,t.details=null,t.timeout=null}},actions:{close:function(t){clearTimeout(this.timer),t.commit("UNSET")},open:function(t,e){t.dispatch("close"),t.commit("SET",e),e.timeout&&(this.timer=setTimeout(function(){t.dispatch("close")},e.timeout))},success:function(t,e){"string"===typeof e&&(e={message:e}),t.dispatch("open",Object(k["a"])({type:"success",timeout:4e3},e))},error:function(t,e){"string"===typeof e&&(e={message:e}),t.dispatch("open",Object(k["a"])({type:"error"},e))}}},Pm={namespaced:!0,state:{info:{title:null}},mutations:{SET_INFO:function(t,e){t.info=e},SET_LICENSE:function(t,e){t.info.license=e},SET_TITLE:function(t,e){t.info.title=e}},actions:{title:function(t,e){t.commit("SET_TITLE",e)},register:function(t,e){t.commit("SET_LICENSE",e)},load:function(t,e){return!e&&t.state.info.isReady&&t.rootState.user.current?new Ye.a(function(e){e(t.state.info)}):Xm.system.info({view:"panel"}).then(function(e){return t.commit("SET_INFO",Object(k["a"])({isReady:e.isInstalled&&e.isOk},e)),e.languages&&t.dispatch("languages/install",e.languages,{root:!0}),t.dispatch("translation/install",e.translation,{root:!0}),t.dispatch("translation/activate",e.translation.id,{root:!0}),e.user&&t.dispatch("user/current",e.user,{root:!0}),t.state.info}).catch(function(e){t.commit("SET_INFO",{isBroken:!0,error:e.message})})}}},Dm={namespaced:!0,state:{current:null,installed:[]},mutations:{SET_CURRENT:function(t,e){t.current=e},INSTALL:function(t,e){t.installed[e.id]=e}},actions:{load:function(t,e){return Xm.translations.get(e)},install:function(t,e){t.commit("INSTALL",e),I["a"].i18n.add(e.id,e.data)},activate:function(t,e){var n=t.state.installed[e];n?(I["a"].i18n.set(e),t.commit("SET_CURRENT",e),document.dir=n.direction,document.documentElement.lang=e):t.dispatch("load",e).then(function(n){t.dispatch("install",n),t.dispatch("activate",e)})}}},Mm=n("8c4f"),Rm=function(t,e,n){Km.dispatch("system/load").then(function(){var e=Km.state.user.current;if(!e)return Km.dispatch("user/visit",t.path),Km.dispatch("user/logout"),!1;var i=e.permissions.access;return!1===i.panel?(window.location.href=y.site,!1):!1===i[t.meta.view]?(Km.dispatch("notification/error",{message:I["a"].i18n.translate("error.access.view")}),n("/")):void n()})},zm=[{path:"/",name:"Home",redirect:"/site"},{path:"/browser",name:"Browser",component:I["a"].component("k-browser-view"),meta:{outside:!0}},{path:"/login",component:I["a"].component("k-login-view"),meta:{outside:!0}},{path:"/logout",beforeEnter:function(){nt()(localStorage).forEach(function(t){t.startsWith("kirby$form")&&localStorage.removeItem(t)}),Km.dispatch("user/logout")},meta:{outside:!0}},{path:"/installation",component:I["a"].component("k-installation-view"),meta:{outside:!0}},{path:"/site",name:"Site",meta:{view:"site"},component:I["a"].component("k-site-view"),beforeEnter:Rm},{path:"/site/files/:filename",name:"SiteFile",meta:{view:"site"},component:I["a"].component("k-file-view"),beforeEnter:Rm,props:function(t){return{path:"site",filename:t.params.filename}}},{path:"/pages/:path/files/:filename",name:"PageFile",meta:{view:"site"},component:I["a"].component("k-file-view"),beforeEnter:Rm,props:function(t){return{path:"pages/"+t.params.path,filename:t.params.filename}}},{path:"/users/:path/files/:filename",name:"UserFile",meta:{view:"users"},component:I["a"].component("k-file-view"),beforeEnter:Rm,props:function(t){return{path:"users/"+t.params.path,filename:t.params.filename}}},{path:"/pages/:path",name:"Page",meta:{view:"site"},component:I["a"].component("k-page-view"),beforeEnter:Rm,props:function(t){return{path:t.params.path}}},{path:"/settings",name:"Settings",meta:{view:"settings"},component:I["a"].component("k-settings-view"),beforeEnter:Rm},{path:"/users/role/:role",name:"UsersByRole",meta:{view:"users"},component:I["a"].component("k-users-view"),beforeEnter:Rm,props:function(t){return{role:t.params.role}}},{path:"/users",name:"Users",meta:{view:"users"},beforeEnter:Rm,component:I["a"].component("k-users-view")},{path:"/users/:id",name:"User",meta:{view:"users"},component:I["a"].component("k-user-view"),beforeEnter:Rm,props:function(t){return{id:t.params.id}}},{path:"/account",name:"Account",meta:{view:"account"},component:I["a"].component("k-user-view"),beforeEnter:Rm,props:function(){return{id:Km.state.user.current?Km.state.user.current.id:null}}},{path:"/plugins/:id",name:"Plugin",meta:{view:"plugin"},props:function(t){return{plugin:t.params.id}},beforeEnter:Rm,component:I["a"].component("k-custom-view")},{path:"*",name:"NotFound",beforeEnter:function(t,e,n){n("/")}}];I["a"].use(Mm["a"]);var Fm=new Mm["a"]({mode:"history",routes:zm,url:"/"===y.url?"":y.url});Fm.beforeEach(function(t,e,n){"Browser"!==t.name&&!1===dh.all()&&n("/browser"),t.meta.outside||Km.dispatch("user/visit",t.path),Km.dispatch("view",t.meta.view),Km.dispatch("form/lock",null),Km.dispatch("form/unlock",null),Km.dispatch("heartbeat/clear"),n()});var Um=Fm,Hm={namespaced:!0,state:{current:null,path:null},mutations:{SET_CURRENT:function(t,e){t.current=e,e&&e.permissions?(I["a"].prototype.$user=e,I["a"].prototype.$permissions=e.permissions):(I["a"].prototype.$user=null,I["a"].prototype.$permissions=null)},SET_PATH:function(t,e){t.path=e}},actions:{current:function(t,e){t.commit("SET_CURRENT",e)},email:function(t,e){t.commit("SET_CURRENT",Object(k["a"])({},t.state.current,{email:e}))},language:function(t,e){t.dispatch("translation/activate",e,{root:!0}),t.commit("SET_CURRENT",Object(k["a"])({},t.state.current,{language:e}))},load:function(t){return Xm.auth.user().then(function(e){return t.commit("SET_CURRENT",e),e})},login:function(t,e){return Xm.auth.login(e).then(function(e){return t.commit("SET_CURRENT",e),t.dispatch("translation/activate",e.language,{root:!0}),Um.push(t.state.path||"/"),e})},logout:function(t,e){t.commit("SET_CURRENT",null),e?window.location.href=(window.panel.url||"")+"/login":Xm.auth.logout().then(function(){Um.push("/login")}).catch(function(){Um.push("/login")})},name:function(t,e){t.commit("SET_CURRENT",Object(k["a"])({},t.state.current,{name:e}))},visit:function(t,e){t.commit("SET_PATH",e)}}};I["a"].use(Lm["a"]);var Km=new Lm["a"].Store({strict:!1,state:{breadcrumb:[],dialog:null,drag:null,isLoading:!1,search:!1,title:null,view:null},mutations:{SET_BREADCRUMB:function(t,e){t.breadcrumb=e},SET_DIALOG:function(t,e){t.dialog=e},SET_DRAG:function(t,e){t.drag=e},SET_SEARCH:function(t,e){!0===e&&(e={}),t.search=e},SET_TITLE:function(t,e){t.title=e},SET_VIEW:function(t,e){t.view=e},START_LOADING:function(t){t.isLoading=!0},STOP_LOADING:function(t){t.isLoading=!1}},actions:{breadcrumb:function(t,e){t.commit("SET_BREADCRUMB",e)},dialog:function(t,e){t.commit("SET_DIALOG",e)},drag:function(t,e){t.commit("SET_DRAG",e)},isLoading:function(t,e){t.commit(!0===e?"START_LOADING":"STOP_LOADING")},search:function(t,e){t.commit("SET_SEARCH",e)},title:function(t,e){t.commit("SET_TITLE",e),document.title=e||"",t.state.system.info.title&&(document.title+=null!==e?" | "+t.state.system.info.title:t.state.system.info.title)},view:function(t,e){t.commit("SET_VIEW",e)}},modules:{form:qm,heartbeat:Am,languages:Nm,notification:Bm,system:Pm,translation:Dm,user:Hm}}),Vm={running:0,request:function(t,e){var n=this,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];e=Wi()(e||{},{credentials:"same-origin",cache:"no-store",headers:Object(k["a"])({"x-requested-with":"xmlhttprequest","content-type":"application/json"},e.headers)}),Km.state.languages.current&&(e.headers["x-language"]=Km.state.languages.current.code),e.headers["x-csrf"]=window.panel.csrf;var s=t+"/"+Dr()(e);return Xm.config.onStart(s,i),this.running++,fetch(Xm.config.endpoint+"/"+t,e).then(function(t){return t.text()}).then(function(t){try{return JSON.parse(t)}catch(e){throw new Error("The JSON response from the API could not be parsed. Please check your API connection.")}}).then(function(t){if(t.status&&"error"===t.status)throw t;var e=t;return t.data&&t.type&&"model"===t.type&&(e=t.data),n.running--,Xm.config.onComplete(s),Xm.config.onSuccess(t),e}).catch(function(t){throw n.running--,Xm.config.onComplete(s),Xm.config.onError(t),t})},get:function(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return e&&(t+="?"+nt()(e).map(function(t){var n=e[t];return void 0!==n&&null!==n?t+"="+n:null}).filter(function(t){return null!==t}).join("&")),this.request(t,Wi()(n||{},{method:"GET"}),i)},post:function(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"POST",s=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return this.request(t,Wi()(n||{},{method:i,body:Dr()(e)}),s)},patch:function(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return this.post(t,e,n,"PATCH",i)},delete:function(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return this.post(t,e,n,"DELETE",i)}},Ym={list:function(t){return Xm.get("roles",t)},get:function(t){return Xm.get("roles/"+t)},options:function(t){return this.list(t).then(function(t){return t.data.map(function(t){return{info:t.description||"(".concat(I["a"].i18n.translate("role.description.placeholder"),")"),text:t.title,value:t.name}})})}},Wm={info:function(t){return Xm.get("system",t)},install:function(t){return Xm.post("system/install",t).then(function(t){return t.user})},register:function(t){return Xm.post("system/register",t)}},Gm={get:function(t){return Xm.get("site",t)},update:function(t){return Xm.post("site",t)},title:function(t){return Xm.patch("site/title",{title:t})},options:function(){return Xm.get("site",{select:"options"}).then(function(t){var e=t.options,n=[];return n.push({click:"rename",icon:"title",text:I["a"].i18n.translate("rename"),disabled:!e.changeTitle}),n})},children:function(t){return Xm.post("site/children/search",t)},blueprint:function(){return Xm.get("site/blueprint")},blueprints:function(){return Xm.get("site/blueprints")}},Jm={list:function(){return Xm.get("translations")},get:function(t){return Xm.get("translations/"+t)},options:function(){var t=[];return this.list().then(function(e){return t=e.data.map(function(t){return{value:t.id,text:t.name}}),t})}},Zm={create:function(t){return Xm.post(this.url(),t)},list:function(t){return Xm.post(this.url(null,"search"),t)},get:function(t,e){return Xm.get(this.url(t),e)},update:function(t,e){return Xm.patch(this.url(t),e)},delete:function(t){return Xm.delete(this.url(t))},changeEmail:function(t,e){return Xm.patch(this.url(t,"email"),{email:e})},changeLanguage:function(t,e){return Xm.patch(this.url(t,"language"),{language:e})},changeName:function(t,e){return Xm.patch(this.url(t,"name"),{name:e})},changePassword:function(t,e){return Xm.patch(this.url(t,"password"),{password:e})},changeRole:function(t,e){return Xm.patch(this.url(t,"role"),{role:e})},deleteAvatar:function(t){return Xm.delete(this.url(t,"avatar"))},blueprint:function(t){return Xm.get(this.url(t,"blueprint"))},breadcrumb:function(t){return[{link:"/users/"+t.id,label:t.username}]},options:function(t){return Xm.get(this.url(t),{select:"options"}).then(function(t){var e=t.options,n=[];return n.push({click:"rename",icon:"title",text:I["a"].i18n.translate("user.changeName"),disabled:!e.changeName}),n.push({click:"email",icon:"email",text:I["a"].i18n.translate("user.changeEmail"),disabled:!e.changeEmail}),n.push({click:"role",icon:"bolt",text:I["a"].i18n.translate("user.changeRole"),disabled:!e.changeRole}),n.push({click:"password",icon:"key",text:I["a"].i18n.translate("user.changePassword"),disabled:!e.changePassword}),n.push({click:"language",icon:"globe",text:I["a"].i18n.translate("user.changeLanguage"),disabled:!e.changeLanguage}),n.push({click:"remove",icon:"trash",text:I["a"].i18n.translate("user.delete"),disabled:!e.delete}),n})},url:function(t,e){var n=t?"users/"+t:"users";return e&&(n+="/"+e),n},link:function(t,e){return"/"+this.url(t,e)}},Xm=Object(k["a"])({config:{onStart:function(){},onComplete:function(){},onSuccess:function(){},onError:function(t){throw window.console.log(t.message),t}},auth:Em,files:jm,pages:Tm,roles:Ym,system:Wm,site:Gm,translations:Jm,users:Zm},Vm);Xm.config.endpoint=y.api,Xm.requests=[],Xm.config.onStart=function(t,e){!1===e&&Km.dispatch("isLoading",!0),Xm.requests.push(t)},Xm.config.onComplete=function(t){Xm.requests=Xm.requests.filter(function(e){return e!==t}),0===Xm.requests.length&&Km.dispatch("isLoading",!1)},Xm.config.onError=function(t){y.debug&&window.console.error(t),403!==t.code||"Unauthenticated"!==t.message&&"access.panel"!==t.key||Km.dispatch("user/logout",!0)};var Qm=setInterval(Xm.auth.user,3e5);Xm.config.onSuccess=function(){clearInterval(Qm),Qm=setInterval(Xm.auth.user,3e5)},I["a"].prototype.$api=Xm,I["a"].config.errorHandler=function(t){y.debug&&window.console.error(t),Km.dispatch("notification/error",{message:t.message||"An error occurred. Please reload the panel"})},window.panel=window.panel||{},window.panel.error=function(t,e){y.debug&&window.console.error(t+": "+e),Km.dispatch("error",t+". See the console for more information.")};var tg=n("f2f3");I["a"].use(tg["a"].plugin,Km);var eg=n("2d1f"),ng=n.n(eg),ig={};for(var sg in I["a"].options.components)ig[sg]=I["a"].options.components[sg];var ag=function(t,e){e.template||e.render||e.extends?(e.extends&&"string"===typeof e.extends&&(e.extends=ig[e.extends],e.template&&(e.render=null)),e.mixins&&(e.mixins=e.mixins.map(function(t){return"string"===typeof t?ig[t]:t})),ig[t]&&window.console.warn('Plugin is replacing "'.concat(t,'"')),I["a"].component(t,e)):Km.dispatch("notification/error",'Neither template or render method provided nor extending a component when loading plugin component "'.concat(t,'". The component has not been registered.'))};ng()(window.panel.plugins.components).forEach(function(t){var e=Object(Im["a"])(t,2),n=e[0],i=e[1];ag(n,i)}),ng()(window.panel.plugins.fields).forEach(function(t){var e=Object(Im["a"])(t,2),n=e[0],i=e[1];ag(n,i)}),ng()(window.panel.plugins.sections).forEach(function(t){var e=Object(Im["a"])(t,2),n=e[0],i=e[1];ag(n,Object(k["a"])({},i,{mixins:[Mf].concat(i.mixins||[])}))}),ng()(window.panel.plugins.views).forEach(function(t){var e=Object(Im["a"])(t,2),n=e[0],i=e[1];if(!i.component)return Km.dispatch("notification/error",'No view component provided when loading view "'.concat(n,'". The view has not been registered.')),void delete window.panel.plugins.views[n];i.link="/plugins/"+n,void 0===i.icon&&(i.icon="page"),void 0===i.menu&&(i.menu=!0),window.panel.plugins.views[n]={link:i.link,icon:i.icon,menu:i.menu},I["a"].component("k-"+n+"-plugin-view",i.component)}),window.panel.plugins.use.forEach(function(t){I["a"].use(t)}),I["a"].use(E),I["a"].use(L),I["a"].use(j),I["a"].use(A.a),I["a"].config.productionTip=!1,I["a"].config.devtools=!0,new I["a"]({router:Um,store:Km,created:function(){var t=this;window.panel.app=this,window.panel.plugins.created.forEach(function(e){e(t)})},render:function(t){return t(C)}}).$mount("#app")},5714:function(t,e,n){},"580a":function(t,e,n){"use strict";var i=n("61ab"),s=n.n(i);s.a},"589a":function(t,e,n){},"58e5":function(t,e,n){},"5ab5":function(t,e,n){},"5aee":function(t,e,n){"use strict";var i=n("04b2"),s=n.n(i);s.a},"5b23":function(t,e,n){"use strict";var i=n("9798"),s=n.n(i);s.a},"5c0b":function(t,e,n){"use strict";var i=n("5e27"),s=n.n(i);s.a},"5d33":function(t,e,n){"use strict";var i=n("2246"),s=n.n(i);s.a},"5e27":function(t,e,n){},"5f12":function(t,e,n){},6018:function(t,e,n){"use strict";var i=n("e30b"),s=n.n(i);s.a},"61ab":function(t,e,n){},"64e6":function(t,e,n){},"65a9":function(t,e,n){},"696b5":function(t,e,n){"use strict";var i=n("0cdc"),s=n.n(i);s.a},"6a18":function(t,e,n){"use strict";var i=n("de8a"),s=n.n(i);s.a},"6ab3":function(t,e,n){"use strict";var i=n("784e"),s=n.n(i);s.a},"6ab9":function(t,e,n){},"6b7f":function(t,e,n){},"6bcd":function(t,e,n){"use strict";var i=n("9e0a"),s=n.n(i);s.a},"6f7b":function(t,e,n){"use strict";var i=n("5ab5"),s=n.n(i);s.a},7075:function(t,e,n){},"718c":function(t,e,n){"use strict";var i=n("773d"),s=n.n(i);s.a},7568:function(t,e,n){"use strict";var i=n("4150"),s=n.n(i);s.a},"75cd":function(t,e,n){},7737:function(t,e,n){"use strict";var i=n("ca19"),s=n.n(i);s.a},"773d":function(t,e,n){},"778b":function(t,e,n){},7797:function(t,e,n){},"784e":function(t,e,n){},"7a7d":function(t,e,n){"use strict";var i=n("65a9"),s=n.n(i);s.a},"7d2d":function(t,e,n){},"7d5d":function(t,e,n){"use strict";var i=n("6ab9"),s=n.n(i);s.a},"7dc7":function(t,e,n){"use strict";var i=n("eb17"),s=n.n(i);s.a},"7e0c":function(t,e,n){},"7e85":function(t,e,n){"use strict";var i=n("d1c5"),s=n.n(i);s.a},"7f6e":function(t,e,n){"use strict";var i=n("4364"),s=n.n(i);s.a},"862b":function(t,e,n){"use strict";var i=n("589a"),s=n.n(i);s.a},"893d":function(t,e,n){"use strict";var i=n("abb3"),s=n.n(i);s.a},"8ae6":function(t,e,n){},"8c28":function(t,e,n){"use strict";var i=n("3d5b"),s=n.n(i);s.a},"8e4d":function(t,e,n){},"910b":function(t,e,n){},"957b":function(t,e,n){},9749:function(t,e,n){},"977f":function(t,e,n){"use strict";var i=n("b7f5"),s=n.n(i);s.a},9798:function(t,e,n){},9799:function(t,e,n){"use strict";var i=n("4fe0"),s=n.n(i);s.a},9811:function(t,e,n){},"98a1":function(t,e,n){"use strict";var i=n("f0cb"),s=n.n(i);s.a},"9bd5":function(t,e,n){"use strict";var i=n("64e6"),s=n.n(i);s.a},"9df7":function(t,e,n){},"9e0a":function(t,e,n){},"9e26":function(t,e,n){"use strict";var i=n("a440"),s=n.n(i);s.a},a134:function(t,e,n){"use strict";var i=n("4390"),s=n.n(i);s.a},a440:function(t,e,n){},a567:function(t,e,n){"use strict";var i=n("c0b5"),s=n.n(i);s.a},a5f3:function(t,e,n){"use strict";var i=n("43f4"),s=n.n(i);s.a},a66d:function(t,e,n){"use strict";var i=n("2eb5"),s=n.n(i);s.a},abb3:function(t,e,n){},ac27:function(t,e,n){"use strict";var i=n("3c9d"),s=n.n(i);s.a},b0d6:function(t,e,n){"use strict";var i=n("d31d"),s=n.n(i);s.a},b37e:function(t,e,n){},b3c3:function(t,e,n){},b5d2:function(t,e,n){"use strict";var i=n("ed7b"),s=n.n(i);s.a},b746:function(t,e,n){"use strict";var i=n("7e0c"),s=n.n(i);s.a},b7f5:function(t,e,n){},ba8f:function(t,e,n){"use strict";var i=n("9749"),s=n.n(i);s.a},bb41:function(t,e,n){"use strict";var i=n("ceb4"),s=n.n(i);s.a},bd96:function(t,e,n){"use strict";var i=n("d6a4"),s=n.n(i);s.a},bf53:function(t,e,n){"use strict";var i=n("3c80"),s=n.n(i);s.a},c0b5:function(t,e,n){},c119:function(t,e,n){"use strict";var i=n("4b49"),s=n.n(i);s.a},c7c8:function(t,e,n){"use strict";var i=n("1be2"),s=n.n(i);s.a},c857:function(t,e,n){"use strict";var i=n("7d2d"),s=n.n(i);s.a},c9cb:function(t,e,n){"use strict";var i=n("b37e"),s=n.n(i);s.a},ca19:function(t,e,n){},ca3a:function(t,e,n){},cb8f:function(t,e,n){"use strict";var i=n("8e4d"),s=n.n(i);s.a},cca8:function(t,e,n){"use strict";var i=n("18b7"),s=n.n(i);s.a},ceb4:function(t,e,n){},d0c1:function(t,e,n){"use strict";var i=n("9df7"),s=n.n(i);s.a},d0e7:function(t,e,n){},d1c5:function(t,e,n){},d221:function(t,e,n){"use strict";var i=n("6b7f"),s=n.n(i);s.a},d31d:function(t,e,n){},d6a4:function(t,e,n){},d6c1:function(t,e,n){},d6fc:function(t,e,n){"use strict";var i=n("08ec"),s=n.n(i);s.a},d9c4:function(t,e,n){},daa8:function(t,e,n){"use strict";var i=n("e60b"),s=n.n(i);s.a},db92:function(t,e,n){},ddfd:function(t,e,n){"use strict";var i=n("4dc8"),s=n.n(i);s.a},de8a:function(t,e,n){},df0d:function(t,e,n){"use strict";var i=n("3ab9"),s=n.n(i);s.a},e30b:function(t,e,n){},e60b:function(t,e,n){},e697:function(t,e,n){},eb17:function(t,e,n){},ec72:function(t,e,n){},ed7b:function(t,e,n){},ee15:function(t,e,n){"use strict";var i=n("fd81"),s=n.n(i);s.a},f0cb:function(t,e,n){},f56d:function(t,e,n){"use strict";var i=n("75cd"),s=n.n(i);s.a},f5e3:function(t,e,n){},f8a7:function(t,e,n){"use strict";var i=n("db92"),s=n.n(i);s.a},f95f:function(t,e,n){"use strict";var i=n("5f12"),s=n.n(i);s.a},fa6a:function(t,e,n){"use strict";var i=n("778b"),s=n.n(i);s.a},fb1a:function(t,e,n){},fc0f:function(t,e,n){"use strict";var i=n("424a"),s=n.n(i);s.a},fd81:function(t,e,n){},ff6d:function(t,e,n){},fffc:function(t,e,n){}});
\ No newline at end of file
diff --git a/kirby/panel/dist/js/plugins.js b/kirby/panel/dist/js/plugins.js
index 08363d7..d386ebd 100755
--- a/kirby/panel/dist/js/plugins.js
+++ b/kirby/panel/dist/js/plugins.js
@@ -4,6 +4,7 @@ window.panel.plugins = {
components: {},
created: [],
fields: {},
+ icons: {},
sections: {},
routes: [],
use: [],
@@ -21,6 +22,11 @@ window.panel.plugin = function (plugin, parts) {
window.panel.plugins["fields"][`k-${name}-field`] = options;
});
+ // Icons
+ resolve(parts, "icons", function (name, options) {
+ window.panel.plugins["icons"][name] = options;
+ });
+
// Sections
resolve(parts, "sections", function (name, options) {
window.panel.plugins["sections"][`k-${name}-section`] = options;
diff --git a/kirby/src/Api/Api.php b/kirby/src/Api/Api.php
index e69ba8c..1610de6 100755
--- a/kirby/src/Api/Api.php
+++ b/kirby/src/Api/Api.php
@@ -4,14 +4,13 @@ namespace Kirby\Api;
use Closure;
use Exception;
-use Throwable;
-
use Kirby\Exception\NotFoundException;
-use Kirby\Http\Router;
use Kirby\Http\Response;
+use Kirby\Http\Router;
use Kirby\Toolkit\F;
use Kirby\Toolkit\Properties;
use Kirby\Toolkit\Str;
+use Throwable;
/**
* The API class is a generic container
@@ -169,12 +168,41 @@ class Api
$auth = $this->route->attributes()['auth'] ?? true;
if ($auth !== false) {
- $this->authenticate();
+ $user = $this->authenticate();
+
+ // set PHP locales based on *user* language
+ // so that e.g. strftime() gets formatted correctly
+ if (is_a($user, 'Kirby\Cms\User') === true) {
+ $locale = $language = $user->language();
+
+ // if it's not already a full locale, "fake" one
+ // and assume that the country equals the language
+ if (Str::contains($locale, '_') !== true) {
+ $locale .= '_' . strtoupper($locale);
+ }
+
+ // provide some variants as fallbacks to be
+ // compatible with as many systems as possible
+ $locales = [
+ $locale,
+ $locale . '.UTF-8',
+ $locale . '.UTF8',
+ $locale . '.ISO8859-1',
+ $language,
+ setlocale(LC_ALL, 0) // fall back to the previously defined locale
+ ];
+
+ // set the locales that are relevant for string formatting
+ // *don't* set LC_CTYPE to avoid breaking other parts of the system
+ setlocale(LC_MONETARY, $locales);
+ setlocale(LC_NUMERIC, $locales);
+ setlocale(LC_TIME, $locales);
+ }
}
$output = $this->route->action()->call($this, ...$this->route->arguments());
- if (is_object($output) === true) {
+ if (is_object($output) === true && is_a($output, 'Kirby\\Http\\Response') !== true) {
return $this->resolve($output)->toResponse();
}
@@ -186,7 +214,7 @@ class Api
*
* @param string $name
* @param array|null $collection
- * @return Kirby\Api\Collection
+ * @return \Kirby\Api\Collection
*
* @throws NotFoundException If no collection for `$name` exists
*/
@@ -263,7 +291,7 @@ class Api
*
* @param string $name
* @param mixed $object
- * @return Kirby\Api\Model
+ * @return \Kirby\Api\Model
*
* @throws NotFoundException If no model for `$name` exists
*/
@@ -375,7 +403,7 @@ class Api
* API model or collection representation
*
* @param mixed $object
- * @return Kirby\Api\Model|Kirby\Api\Collection
+ * @return \Kirby\Api\Model|\Kirby\Api\Collection
*
* @throws NotFoundException If `$object` cannot be resolved
*/
@@ -540,50 +568,15 @@ class Api
try {
$result = $this->call($path, $method, $requestData);
} catch (Throwable $e) {
- if (is_a($e, 'Kirby\Exception\Exception') === true) {
- $result = [
- 'status' => 'error',
- 'route' => ($this->route)? $this->route->pattern() : null
- ] + $e->toArray();
- } else {
- // remove the document root from the file path
- $file = $e->getFile();
- if (empty($_SERVER['DOCUMENT_ROOT']) === false) {
- $file = ltrim(Str::after($file, $_SERVER['DOCUMENT_ROOT']), '/');
- }
-
- $result = [
- 'status' => 'error',
- 'exception' => get_class($e),
- 'message' => $e->getMessage(),
- 'file' => $file,
- 'line' => $e->getLine(),
- 'code' => empty($e->getCode()) === false ? $e->getCode() : 500,
- 'route' => $this->route ? $this->route->pattern() : null
- ];
- }
+ $result = $this->responseForException($e);
}
if ($result === null) {
- $result = [
- 'status' => 'error',
- 'message' => 'not found',
- 'code' => 404,
- ];
- }
-
- if ($result === true) {
- $result = [
- 'status' => 'ok',
- ];
- }
-
- if ($result === false) {
- $result = [
- 'status' => 'error',
- 'message' => 'bad request',
- 'code' => 400,
- ];
+ $result = $this->responseFor404();
+ } elseif ($result === false) {
+ $result = $this->responseFor400();
+ } elseif ($result === true) {
+ $result = $this->responseFor200();
}
if (is_array($result) === false) {
@@ -593,17 +586,6 @@ class Api
// pretty print json data
$pretty = (bool)($requestData['query']['pretty'] ?? false) === true;
- // remove critical info from the result set if
- // debug mode is switched off
- if ($this->debug !== true) {
- unset(
- $result['file'],
- $result['exception'],
- $result['line'],
- $result['route']
- );
- }
-
if (($result['status'] ?? 'ok') === 'error') {
$code = $result['code'] ?? 400;
@@ -618,6 +600,95 @@ class Api
return Response::json($result, 200, $pretty);
}
+ /**
+ * Returns a 200 - ok
+ * response array.
+ *
+ * @return array
+ */
+ public function responseFor200(): array
+ {
+ return [
+ 'status' => 'ok',
+ 'message' => 'ok',
+ 'code' => 200
+ ];
+ }
+
+ /**
+ * Returns a 400 - bad request
+ * response array.
+ *
+ * @return array
+ */
+ public function responseFor400(): array
+ {
+ return [
+ 'status' => 'error',
+ 'message' => 'bad request',
+ 'code' => 400,
+ ];
+ }
+
+ /**
+ * Returns a 404 - not found
+ * response array.
+ *
+ * @return array
+ */
+ public function responseFor404(): array
+ {
+ return [
+ 'status' => 'error',
+ 'message' => 'not found',
+ 'code' => 404,
+ ];
+ }
+
+ /**
+ * Creates the response array for
+ * an exception. Kirby exceptions will
+ * have more information
+ *
+ * @param Exception $e
+ * @return array
+ */
+ public function responseForException($e): array
+ {
+ // prepare the result array for all exception types
+ $result = [
+ 'status' => 'error',
+ 'message' => $e->getMessage(),
+ 'code' => empty($e->getCode()) === true ? 500 : $e->getCode(),
+ 'exception' => get_class($e),
+ 'key' => null,
+ 'file' => F::relativepath($e->getFile(), $_SERVER['DOCUMENT_ROOT'] ?? null),
+ 'line' => $e->getLine(),
+ 'details' => [],
+ 'route' => $this->route ? $this->route->pattern() : null
+ ];
+
+ // extend the information for Kirby Exceptions
+ if (is_a($e, 'Kirby\Exception\Exception') === true) {
+ $result['key'] = $e->getKey();
+ $result['details'] = $e->getDetails();
+ $result['code'] = $e->getHttpCode();
+ }
+
+ // remove critical info from the result set if
+ // debug mode is switched off
+ if ($this->debug !== true) {
+ unset(
+ $result['file'],
+ $result['exception'],
+ $result['line'],
+ $result['route']
+ );
+ }
+
+ return $result;
+ }
+
/**
* Upload helper method
*
@@ -635,8 +706,26 @@ class Api
$errors = [];
$files = $this->requestFiles();
+ // get error messages from translation
+ $errorMessages = [
+ UPLOAD_ERR_INI_SIZE => t('upload.error.iniSize'),
+ UPLOAD_ERR_FORM_SIZE => t('upload.error.formSize'),
+ UPLOAD_ERR_PARTIAL => t('upload.error.partial'),
+ UPLOAD_ERR_NO_FILE => t('upload.error.noFile'),
+ UPLOAD_ERR_NO_TMP_DIR => t('upload.error.tmpDir'),
+ UPLOAD_ERR_CANT_WRITE => t('upload.error.cantWrite'),
+ UPLOAD_ERR_EXTENSION => t('upload.error.extension')
+ ];
+
if (empty($files) === true) {
- throw new Exception('No uploaded files');
+ $postMaxSize = Str::toBytes(ini_get('post_max_size'));
+ $uploadMaxFileSize = Str::toBytes(ini_get('upload_max_filesize'));
+
+ if ($postMaxSize < $uploadMaxFileSize) {
+ throw new Exception(t('upload.error.iniPostSize'));
+ } else {
+ throw new Exception(t('upload.error.noFiles'));
+ }
}
foreach ($files as $upload) {
@@ -648,7 +737,8 @@ class Api
try {
if ($upload['error'] !== 0) {
- throw new Exception('Upload error');
+ $errorMessage = $errorMessages[$upload['error']] ?? t('upload.error.default');
+ throw new Exception($errorMessage);
}
// get the extension of the uploaded file
@@ -659,7 +749,7 @@ class Api
if (empty($extension) === true || in_array($extension, ['tmp', 'temp'])) {
$mime = F::mime($upload['tmp_name']);
$extension = F::mimeToExtension($mime);
- $filename = F::name($upload['name']) . '.' .$extension;
+ $filename = F::name($upload['name']) . '.' . $extension;
} else {
$filename = basename($upload['name']);
}
@@ -669,7 +759,7 @@ class Api
// move the file to a location including the extension,
// for better mime detection
if (move_uploaded_file($upload['tmp_name'], $source) === false) {
- throw new Exception('The uploaded file could not be moved');
+ throw new Exception(t('upload.error.cantMove'));
}
$data = $callback($source, $filename);
diff --git a/kirby/src/Cache/ApcuCache.php b/kirby/src/Cache/ApcuCache.php
index f59540c..96011c7 100755
--- a/kirby/src/Cache/ApcuCache.php
+++ b/kirby/src/Cache/ApcuCache.php
@@ -15,7 +15,6 @@ use APCUIterator;
*/
class ApcuCache extends Cache
{
-
/**
* Determines if an item exists in the cache
*
@@ -59,7 +58,7 @@ class ApcuCache extends Cache
* needs to return a Value object or null if not found
*
* @param string $key
- * @return Kirby\Cache\Value|null
+ * @return \Kirby\Cache\Value|null
*/
public function retrieve(string $key)
{
diff --git a/kirby/src/Cache/Cache.php b/kirby/src/Cache/Cache.php
index 3761b65..5e7e06b 100755
--- a/kirby/src/Cache/Cache.php
+++ b/kirby/src/Cache/Cache.php
@@ -16,7 +16,6 @@ namespace Kirby\Cache;
*/
abstract class Cache
{
-
/**
* Stores all options for the driver
* @var array
@@ -71,7 +70,7 @@ abstract class Cache
* this needs to be defined by the driver
*
* @param string $key
- * @return Kirby\Cache\Value|null
+ * @return \Kirby\Cache\Value|null
*/
abstract public function retrieve(string $key);
@@ -96,7 +95,7 @@ abstract class Cache
$value = $this->retrieve($key);
// check for a valid cache value
- if (!is_a($value, Value::class)) {
+ if (!is_a($value, 'Kirby\Cache\Value')) {
return $default;
}
@@ -141,7 +140,7 @@ abstract class Cache
$value = $this->retrieve($key);
// check for a valid Value object
- if (!is_a($value, Value::class)) {
+ if (!is_a($value, 'Kirby\Cache\Value')) {
return false;
}
@@ -182,7 +181,7 @@ abstract class Cache
$value = $this->retrieve($key);
// check for a valid Value object
- if (!is_a($value, Value::class)) {
+ if (!is_a($value, 'Kirby\Cache\Value')) {
return false;
}
diff --git a/kirby/src/Cache/FileCache.php b/kirby/src/Cache/FileCache.php
index 18a242e..9f0d373 100755
--- a/kirby/src/Cache/FileCache.php
+++ b/kirby/src/Cache/FileCache.php
@@ -16,7 +16,6 @@ use Kirby\Toolkit\F;
*/
class FileCache extends Cache
{
-
/**
* Full root including prefix
* @var string
@@ -93,7 +92,7 @@ class FileCache extends Cache
* needs to return a Value object or null if not found
*
* @param string $key
- * @return Kirby\Cache\Value|null
+ * @return \Kirby\Cache\Value|null
*/
public function retrieve(string $key)
{
diff --git a/kirby/src/Cache/MemCached.php b/kirby/src/Cache/MemCached.php
index 627761a..4c459c5 100755
--- a/kirby/src/Cache/MemCached.php
+++ b/kirby/src/Cache/MemCached.php
@@ -13,7 +13,6 @@ namespace Kirby\Cache;
*/
class MemCached extends Cache
{
-
/**
* store for the memache connection
* @var Memcached
@@ -65,7 +64,7 @@ class MemCached extends Cache
* needs to return a Value object or null if not found
*
* @param string $key
- * @return Kirby\Cache\Value|null
+ * @return \Kirby\Cache\Value|null
*/
public function retrieve(string $key)
{
diff --git a/kirby/src/Cache/MemoryCache.php b/kirby/src/Cache/MemoryCache.php
index 4446d78..bd4cac7 100755
--- a/kirby/src/Cache/MemoryCache.php
+++ b/kirby/src/Cache/MemoryCache.php
@@ -13,7 +13,6 @@ namespace Kirby\Cache;
*/
class MemoryCache extends Cache
{
-
/**
* Cache data
* @var array
@@ -45,7 +44,7 @@ class MemoryCache extends Cache
* needs to return a Value object or null if not found
*
* @param string $key
- * @return Kirby\Cache\Value|null
+ * @return \Kirby\Cache\Value|null
*/
public function retrieve(string $key)
{
diff --git a/kirby/src/Cache/NullCache.php b/kirby/src/Cache/NullCache.php
index e2824e1..c0c47dd 100755
--- a/kirby/src/Cache/NullCache.php
+++ b/kirby/src/Cache/NullCache.php
@@ -13,7 +13,6 @@ namespace Kirby\Cache;
*/
class NullCache extends Cache
{
-
/**
* Writes an item to the cache for a given number of minutes and
* returns whether the operation was successful
@@ -38,7 +37,7 @@ class NullCache extends Cache
* needs to return a Value object or null if not found
*
* @param string $key
- * @return Kirby\Cache\Value|null
+ * @return \Kirby\Cache\Value|null
*/
public function retrieve(string $key)
{
diff --git a/kirby/src/Cache/Value.php b/kirby/src/Cache/Value.php
index a5fc5b2..038965c 100755
--- a/kirby/src/Cache/Value.php
+++ b/kirby/src/Cache/Value.php
@@ -17,7 +17,6 @@ use Throwable;
*/
class Value
{
-
/**
* Cached value
* @var mixed
diff --git a/kirby/src/Cms/Api.php b/kirby/src/Cms/Api.php
index f1489b6..255e169 100755
--- a/kirby/src/Cms/Api.php
+++ b/kirby/src/Cms/Api.php
@@ -92,7 +92,7 @@ class Api extends BaseApi
*
* @param string $path Path to file's parent model
* @param string $filename Filename
- * @return Kirby\Cms\File|null
+ * @return \Kirby\Cms\File|null
*/
public function file(string $path = null, string $filename)
{
@@ -114,7 +114,7 @@ class Api extends BaseApi
* Returns the model's object for the given path
*
* @param string $path Path to parent model
- * @return Kirby\Cms\Model|null
+ * @return \Kirby\Cms\Model|null
*/
public function parent(string $path)
{
@@ -166,7 +166,7 @@ class Api extends BaseApi
/**
* Returns the Kirby instance
*
- * @return Kirby\Cms\App
+ * @return \Kirby\Cms\App
*/
public function kirby()
{
@@ -184,11 +184,11 @@ class Api extends BaseApi
}
/**
- * Returns the page object for the given id
- *
- * @param string $id Page's id
- * @return Kirby\Cms\Page|null
- */
+ * Returns the page object for the given id
+ *
+ * @param string $id Page's id
+ * @return \Kirby\Cms\Page|null
+ */
public function page(string $id)
{
$id = str_replace('+', '/', $id);
@@ -214,7 +214,7 @@ class Api extends BaseApi
}
/**
- * @param Kirby\Cms\App $kirby
+ * @param \Kirby\Cms\App $kirby
*/
protected function setKirby(App $kirby)
{
@@ -225,7 +225,7 @@ class Api extends BaseApi
/**
* Returns the site object
*
- * @return Kirby\Cms\Site
+ * @return \Kirby\Cms\Site
*/
public function site()
{
@@ -238,7 +238,7 @@ class Api extends BaseApi
* id is passed
*
* @param string $id User's id
- * @return Kirby\Cms\User|null
+ * @return \Kirby\Cms\User|null
*/
public function user(string $id = null)
{
@@ -263,7 +263,7 @@ class Api extends BaseApi
/**
* Returns the users collection
*
- * @return Kirby\Cms\Users
+ * @return \Kirby\Cms\Users
*/
public function users()
{
diff --git a/kirby/src/Cms/App.php b/kirby/src/Cms/App.php
index 09504cb..df6746d 100755
--- a/kirby/src/Cms/App.php
+++ b/kirby/src/Cms/App.php
@@ -6,8 +6,8 @@ use Kirby\Data\Data;
use Kirby\Email\PHPMailer as Emailer;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Exception\NotFoundException;
-use Kirby\Http\Router;
use Kirby\Http\Request;
+use Kirby\Http\Router;
use Kirby\Http\Server;
use Kirby\Http\Visitor;
use Kirby\Session\AutoSession;
@@ -15,8 +15,8 @@ use Kirby\Text\KirbyTag;
use Kirby\Toolkit\A;
use Kirby\Toolkit\Config;
use Kirby\Toolkit\Controller;
-use Kirby\Toolkit\F;
use Kirby\Toolkit\Dir;
+use Kirby\Toolkit\F;
use Kirby\Toolkit\Properties;
/**
@@ -132,7 +132,7 @@ class App
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return [
'languages' => $this->languages(),
@@ -149,7 +149,7 @@ class App
* Returns the Api instance
*
* @internal
- * @return Kirby\Cms\Api
+ * @return \Kirby\Cms\Api
*/
public function api()
{
@@ -181,7 +181,7 @@ class App
*
* @internal
* @param string $name Hook name
- * @param mixed $args Arguments to pass to the hooks
+ * @param mixed ...$args Arguments to pass to the hooks
* @return mixed Resulting value as modified by the hooks
*/
public function apply(string $name, ...$args)
@@ -294,7 +294,7 @@ class App
* automatically injected
*
* @param string $name
- * @return Kirby\Cms\Collection|null
+ * @return \Kirby\Cms\Collection|null
*/
public function collection(string $name)
{
@@ -309,11 +309,11 @@ class App
/**
* Returns all user-defined collections
*
- * @return Kirby\Cms\Collections
+ * @return \Kirby\Cms\Collections
*/
public function collections()
{
- return $this->collections = $this->collections ?? new Collections;
+ return $this->collections = $this->collections ?? new Collections();
}
/**
@@ -357,6 +357,7 @@ class App
* @internal
* @param string $name
* @param array $arguments
+ * @param string $contentType
* @return array
*/
public function controller(string $name, array $arguments = [], string $contentType = 'html'): array
@@ -388,7 +389,8 @@ class App
* Try to find a controller by name
*
* @param string $name
- * @return Kirby\Toolkit\Controller|null
+ * @param string $contentType
+ * @return \Kirby\Toolkit\Controller|null
*/
protected function controllerLookup(string $name, string $contentType = 'html')
{
@@ -403,7 +405,7 @@ class App
// registry controller
if ($controller = $this->extension('controllers', $name)) {
- return is_a($controller, Controller::class) ? $controller : new Controller($controller);
+ return is_a($controller, 'Kirby\Toolkit\Controller') ? $controller : new Controller($controller);
}
return null;
@@ -412,7 +414,7 @@ class App
/**
* Returns the default language object
*
- * @return Kirby\Cms\Language|null
+ * @return \Kirby\Cms\Language|null
*/
public function defaultLanguage()
{
@@ -434,7 +436,7 @@ class App
/**
* Detect the prefered language from the visitor object
*
- * @return Kirby\Cms\Language
+ * @return \Kirby\Cms\Language
*/
public function detectedLanguage()
{
@@ -459,7 +461,9 @@ class App
/**
* Returns the Email singleton
*
- * @return Kirby\Email\PHPMailer
+ * @param mixed $preset
+ * @param array $props
+ * @return \Kirby\Email\PHPMailer
*/
public function email($preset = [], array $props = [])
{
@@ -470,8 +474,9 @@ class App
* Finds any file in the content directory
*
* @param string $path
+ * @param mixed $parent
* @param boolean $drafts
- * @return Kirby\Cms\File|null
+ * @return \Kirby\Cms\File|null
*/
public function file(string $path, $parent = null, bool $drafts = true)
{
@@ -479,11 +484,11 @@ class App
$id = dirname($path);
$filename = basename($path);
- if (is_a($parent, User::class) === true) {
+ if (is_a($parent, 'Kirby\Cms\User') === true) {
return $parent->file($filename);
}
- if (is_a($parent, File::class) === true) {
+ if (is_a($parent, 'Kirby\Cms\File') === true) {
$parent = $parent->parent();
}
@@ -511,13 +516,13 @@ class App
/**
* Returns the current App instance
*
- * @param Kirby\Cms\App $instance
+ * @param \Kirby\Cms\App $instance
* @return self
*/
public static function instance(self $instance = null)
{
if ($instance === null) {
- return static::$instance ?? new static;
+ return static::$instance ?? new static();
}
return static::$instance = $instance;
@@ -529,7 +534,7 @@ class App
*
* @internal
* @param mixed $input
- * @return Kirby\Http\Response
+ * @return \Kirby\Http\Response
*/
public function io($input)
{
@@ -652,6 +657,7 @@ class App
* @internal
* @param string $text
* @param array $data
+ * @param bool $inline
* @return string
*/
public function kirbytext(string $text = null, array $data = [], bool $inline = false): string
@@ -673,7 +679,7 @@ class App
* Returns the current language
*
* @param string|null $code
- * @return Kirby\Cms\Language|null
+ * @return \Kirby\Cms\Language|null
*/
public function language(string $code = null)
{
@@ -696,6 +702,7 @@ class App
* Returns the current language code
*
* @internal
+ * @param string|null $languageCode
* @return string|null
*/
public function languageCode(string $languageCode = null): ?string
@@ -710,7 +717,7 @@ class App
/**
* Returns all available site languages
*
- * @return Kirby\Cms\Languages
+ * @return \Kirby\Cms\Languages
*/
public function languages()
{
@@ -724,7 +731,7 @@ class App
/**
* Returns the app's locks object
*
- * @return Kirby\Cms\ContentLocks
+ * @return \Kirby\Cms\ContentLocks
*/
public function locks(): ContentLocks
{
@@ -732,7 +739,7 @@ class App
return $this->locks;
}
- return $this->locks = new ContentLocks;
+ return $this->locks = new ContentLocks();
}
/**
@@ -787,6 +794,7 @@ class App
/**
* Inject options from Kirby instance props
*
+ * @param array $options
* @return array
*/
protected function optionsFromProps(array $options = []): array
@@ -819,9 +827,9 @@ class App
* Returns any page from the content folder
*
* @param string $id
- * @param Kirby\Cms\Page|Kirby\Cms\Site|null $parent
+ * @param \Kirby\Cms\Page|\Kirby\Cms\Site|null $parent
* @param bool $drafts
- * @return Kirby\Cms\Page|null
+ * @return \Kirby\Cms\Page|null
*/
public function page(string $id, $parent = null, bool $drafts = true)
{
@@ -863,7 +871,9 @@ class App
* Returns the Response object for the
* current request
*
- * @return Kirby\Http\Response
+ * @param string|null $path
+ * @param string|null $method
+ * @return \Kirby\Http\Response
*/
public function render(string $path = null, string $method = null)
{
@@ -873,11 +883,11 @@ class App
/**
* Returns the Request singleton
*
- * @return Kirby\Http\Request
+ * @return \Kirby\Http\Request
*/
public function request()
{
- return $this->request = $this->request ?? new Request;
+ return $this->request = $this->request ?? new Request();
}
/**
@@ -954,17 +964,17 @@ class App
/**
* Response configuration
*
- * @return Kirby\Cms\Responder
+ * @return \Kirby\Cms\Responder
*/
public function response()
{
- return $this->response = $this->response ?? new Responder;
+ return $this->response = $this->response ?? new Responder();
}
/**
* Returns all user roles
*
- * @return Kirby\Cms\Roles
+ * @return \Kirby\Cms\Roles
*/
public function roles()
{
@@ -985,7 +995,7 @@ class App
/**
* Returns the directory structure
*
- * @return Kirby\Cms\Ingredients
+ * @return \Kirby\Cms\Ingredients
*/
public function roots()
{
@@ -995,7 +1005,7 @@ class App
/**
* Returns the currently active route
*
- * @return Kirby\Http\Route|null
+ * @return \Kirby\Http\Route|null
*/
public function route()
{
@@ -1006,7 +1016,7 @@ class App
* Returns the Router singleton
*
* @internal
- * @return Kirby\Http\Router
+ * @return \Kirby\Http\Router
*/
public function router()
{
@@ -1046,7 +1056,7 @@ class App
* Returns the current session object
*
* @param array $options Additional options, see the session component
- * @return Kirby\Session\Session
+ * @return \Kirby\Session\Session
*/
public function session(array $options = [])
{
@@ -1123,7 +1133,7 @@ class App
/**
* Sets a custom Site object
*
- * @param Kirby\Cms\Site|array $site
+ * @param \Kirby\Cms\Site|array $site
* @return self
*/
protected function setSite($site = null)
@@ -1141,17 +1151,17 @@ class App
/**
* Returns the Server object
*
- * @return Kirby\Http\Server
+ * @return \Kirby\Http\Server
*/
public function server()
{
- return $this->server = $this->server ?? new Server;
+ return $this->server = $this->server ?? new Server();
}
/**
* Initializes and returns the Site object
*
- * @return Kirby\Cms\Site
+ * @return \Kirby\Cms\Site
*/
public function site()
{
@@ -1186,7 +1196,9 @@ class App
* and return a template snippet
*
* @internal
- * @return string
+ * @param mixed $name
+ * @param array $data
+ * @return string|null
*/
public function snippet($name, array $data = []): ?string
{
@@ -1196,7 +1208,7 @@ class App
/**
* System check class
*
- * @return Kirby\Cms\System
+ * @return \Kirby\Cms\System
*/
public function system()
{
@@ -1208,7 +1220,10 @@ class App
* and return the Template object
*
* @internal
- * @return Kirby\Cms\Template
+ * @return \Kirby\Cms\Template
+ * @param string $name
+ * @param string $type
+ * @param string $defaultType
*/
public function template(string $name, string $type = 'html', string $defaultType = 'html')
{
@@ -1277,7 +1292,7 @@ class App
/**
* Returns the url structure
*
- * @return Kirby\Cms\Ingredients
+ * @return \Kirby\Cms\Ingredients
*/
public function urls()
{
@@ -1308,7 +1323,7 @@ class App
/**
* Returns the visitor object
*
- * @return Kirby\Cms\Visitor
+ * @return \Kirby\Cms\Visitor
*/
public function visitor()
{
diff --git a/kirby/src/Cms/AppCaches.php b/kirby/src/Cms/AppCaches.php
index fbdd62e..862bc38 100755
--- a/kirby/src/Cms/AppCaches.php
+++ b/kirby/src/Cms/AppCaches.php
@@ -23,7 +23,7 @@ trait AppCaches
* Returns a cache instance by key
*
* @param string $key
- * @return Kirby\Cache\Cache
+ * @return \Kirby\Cache\Cache
*/
public function cache(string $key)
{
@@ -36,7 +36,7 @@ trait AppCaches
if ($options['active'] === false) {
// use a dummy cache that does nothing
- return $this->caches[$key] = new NullCache;
+ return $this->caches[$key] = new NullCache();
}
$type = strtolower($options['type']);
@@ -55,7 +55,7 @@ trait AppCaches
$cache = new $className($options);
// check if it is a useable cache object
- if (is_a($cache, Cache::class) !== true) {
+ if (is_a($cache, 'Kirby\Cache\Cache') !== true) {
throw new InvalidArgumentException([
'key' => 'app.invalid.cacheType',
'data' => ['type' => $type]
diff --git a/kirby/src/Cms/AppErrors.php b/kirby/src/Cms/AppErrors.php
index 745fdc9..7c90c3a 100755
--- a/kirby/src/Cms/AppErrors.php
+++ b/kirby/src/Cms/AppErrors.php
@@ -3,11 +3,11 @@
namespace Kirby\Cms;
use Kirby\Http\Response;
-use Whoops\Run as Whoops;
-use Whoops\Handler\Handler;
-use Whoops\Handler\PrettyPageHandler;
-use Whoops\Handler\PlainTextHandler;
use Whoops\Handler\CallbackHandler;
+use Whoops\Handler\Handler;
+use Whoops\Handler\PlainTextHandler;
+use Whoops\Handler\PrettyPageHandler;
+use Whoops\Run as Whoops;
/**
* AppErrors
@@ -22,8 +22,8 @@ trait AppErrors
{
protected function handleCliErrors(): void
{
- $whoops = new Whoops;
- $whoops->pushHandler(new PlainTextHandler);
+ $whoops = new Whoops();
+ $whoops->pushHandler(new PlainTextHandler());
$whoops->register();
}
@@ -45,11 +45,11 @@ trait AppErrors
protected function handleHtmlErrors()
{
- $whoops = new Whoops;
+ $whoops = new Whoops();
if ($this->option('debug') === true) {
if ($this->option('whoops', true) === true) {
- $handler = new PrettyPageHandler;
+ $handler = new PrettyPageHandler();
$handler->setPageTitle('Kirby CMS Debugger');
if ($editor = $this->option('editor')) {
@@ -79,7 +79,7 @@ trait AppErrors
protected function handleJsonErrors()
{
- $whoops = new Whoops;
+ $whoops = new Whoops();
$handler = new CallbackHandler(function ($exception, $inspector, $run) {
if (is_a($exception, 'Kirby\Exception\Exception') === true) {
$httpCode = $exception->getHttpCode();
diff --git a/kirby/src/Cms/AppPlugins.php b/kirby/src/Cms/AppPlugins.php
index e88d5c8..5121f43 100755
--- a/kirby/src/Cms/AppPlugins.php
+++ b/kirby/src/Cms/AppPlugins.php
@@ -23,7 +23,6 @@ use Kirby\Toolkit\V;
*/
trait AppPlugins
{
-
/**
* A list of all registered plugins
*
@@ -83,7 +82,7 @@ trait AppPlugins
*
* @internal
* @param array $extensions
- * @param Kirby\Cms\Plugin $plugin The plugin which defined those extensions
+ * @param \Kirby\Cms\Plugin $plugin The plugin which defined those extensions
* @return array
*/
public function extend(array $extensions, Plugin $plugin = null): array
@@ -106,7 +105,7 @@ trait AppPlugins
protected function extendApi($api): array
{
if (is_array($api) === true) {
- if (is_a($api['routes'] ?? [], Closure::class) === true) {
+ if (is_a($api['routes'] ?? [], 'Closure') === true) {
$api['routes'] = $api['routes']($this);
}
@@ -254,7 +253,7 @@ trait AppPlugins
/**
* Registers markdown component
*
- * @param Closure $blueprints
+ * @param Closure $markdown
* @return Closure
*/
protected function extendMarkdown(Closure $markdown)
@@ -266,7 +265,7 @@ trait AppPlugins
* Registers additional options
*
* @param array $options
- * @param Kirby\Cms\Plugin|null $plugin
+ * @param \Kirby\Cms\Plugin|null $plugin
* @return array
*/
protected function extendOptions(array $options, Plugin $plugin = null): array
@@ -336,7 +335,7 @@ trait AppPlugins
*/
protected function extendRoutes($routes): array
{
- if (is_a($routes, Closure::class) === true) {
+ if (is_a($routes, 'Closure') === true) {
$routes = $routes($this);
}
@@ -480,7 +479,7 @@ trait AppPlugins
/**
* Returns the extensions registry
-
+ *
* @internal
* @param string|null $type
* @return array
@@ -556,6 +555,7 @@ trait AppPlugins
/**
* Apply all passed extensions
*
+ * @param array $props
* @return void
*/
protected function extensionsFromProps(array $props)
@@ -643,7 +643,7 @@ trait AppPlugins
*
* @param string $name
* @param array|null $extends If null is passed it will be used as getter. Otherwise as factory.
- * @return Kirby\Cms\Plugin|null
+ * @return \Kirby\Cms\Plugin|null
*/
public static function plugin(string $name, array $extends = null)
{
@@ -658,7 +658,7 @@ trait AppPlugins
$name = $plugin->name();
if (isset(static::$plugins[$name]) === true) {
- throw new DuplicateException('The plugin "'. $name . '" has already been registered');
+ throw new DuplicateException('The plugin "' . $name . '" has already been registered');
}
return static::$plugins[$name] = $plugin;
diff --git a/kirby/src/Cms/AppTranslations.php b/kirby/src/Cms/AppTranslations.php
index d34440c..5c898c4 100755
--- a/kirby/src/Cms/AppTranslations.php
+++ b/kirby/src/Cms/AppTranslations.php
@@ -85,7 +85,7 @@ trait AppTranslations
*
* @internal
* @param string $languageCode
- * @return Kirby\Cms\Language|null
+ * @return \Kirby\Cms\Language|null
*/
public function setCurrentLanguage(string $languageCode = null)
{
@@ -140,7 +140,7 @@ trait AppTranslations
* Load a specific translation by locale
*
* @param string|null $locale
- * @return Kirby\Cms\Translation|null
+ * @return \Kirby\Cms\Translation|null
*/
public function translation(string $locale = null)
{
@@ -164,7 +164,7 @@ trait AppTranslations
/**
* Returns all available translations
*
- * @return Kirby\Cms\Translations
+ * @return \Kirby\Cms\Translations
*/
public function translations()
{
diff --git a/kirby/src/Cms/AppUsers.php b/kirby/src/Cms/AppUsers.php
index bc128ff..54135d5 100755
--- a/kirby/src/Cms/AppUsers.php
+++ b/kirby/src/Cms/AppUsers.php
@@ -15,7 +15,6 @@ use Throwable;
*/
trait AppUsers
{
-
/**
* Cache for the auth auth layer
*
@@ -27,7 +26,7 @@ trait AppUsers
* Returns the Authentication layer class
*
* @internal
- * @return Kirby\Cms\Auth
+ * @return \Kirby\Cms\Auth
*/
public function auth()
{
@@ -38,7 +37,7 @@ trait AppUsers
* Become any existing user
*
* @param string|null $who
- * @return Kirby\Cms\User|null
+ * @return \Kirby\Cms\User|null
*/
public function impersonate(string $who = null)
{
@@ -48,8 +47,8 @@ trait AppUsers
/**
* Set the currently active user id
*
- * @param Kirby\Cms\User|string $user
- * @return Kirby\Cms\App
+ * @param \Kirby\Cms\User|string $user
+ * @return \Kirby\Cms\App
*/
protected function setUser($user = null)
{
@@ -61,7 +60,7 @@ trait AppUsers
* Create your own set of app users
*
* @param array $users
- * @return Kirby\Cms\App
+ * @return \Kirby\Cms\App
*/
protected function setUsers(array $users = null)
{
@@ -79,7 +78,7 @@ trait AppUsers
* or the current user if no id is given
*
* @param string $id
- * @return Kirby\Cms\User|null
+ * @return \Kirby\Cms\User|null
*/
public function user(string $id = null)
{
@@ -101,7 +100,7 @@ trait AppUsers
/**
* Returns all users
*
- * @return Kirby\Cms\Users
+ * @return \Kirby\Cms\Users
*/
public function users()
{
diff --git a/kirby/src/Cms/Asset.php b/kirby/src/Cms/Asset.php
index fab9fae..a722238 100755
--- a/kirby/src/Cms/Asset.php
+++ b/kirby/src/Cms/Asset.php
@@ -31,6 +31,8 @@ class Asset
/**
* Creates a new Asset object
* for the given path.
+ *
+ * @param string $path
*/
public function __construct(string $path)
{
diff --git a/kirby/src/Cms/Auth.php b/kirby/src/Cms/Auth.php
index 01c4f79..e90d38f 100755
--- a/kirby/src/Cms/Auth.php
+++ b/kirby/src/Cms/Auth.php
@@ -3,9 +3,9 @@
namespace Kirby\Cms;
use Kirby\Data\Data;
-use Kirby\Exception\PermissionException;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Exception\NotFoundException;
+use Kirby\Exception\PermissionException;
use Kirby\Http\Request\Auth\BasicAuth;
use Kirby\Toolkit\F;
use Throwable;
@@ -27,7 +27,7 @@ class Auth
protected $userException;
/**
- * @param Kirby\Cms\App $kirby
+ * @param \Kirby\Cms\App $kirby
* @codeCoverageIgnore
*/
public function __construct(App $kirby)
@@ -61,8 +61,8 @@ class Auth
* for a basic authentication header with
* valid credentials
*
- * @param Kirby\Http\Request\Auth\BasicAuth|null $auth
- * @return Kirby\Cms\User|null
+ * @param \Kirby\Http\Request\Auth\BasicAuth|null $auth
+ * @return \Kirby\Cms\User|null
*/
public function currentUserFromBasicAuth(BasicAuth $auth = null)
{
@@ -90,8 +90,8 @@ class Auth
* the current session and finding a valid
* valid user id in there
*
- * @param Kirby\Cms\Session|array|null $session
- * @return Kirby\Cms\User|null
+ * @param \Kirby\Session\Session|array|null $session
+ * @return \Kirby\Cms\User|null
*/
public function currentUserFromSession($session = null)
{
@@ -125,7 +125,7 @@ class Auth
* Become any existing user
*
* @param string|null $who
- * @return Kirby\Cms\User|null
+ * @return \Kirby\Cms\User|null
*/
public function impersonate(string $who = null)
{
@@ -196,7 +196,7 @@ class Auth
* @param string $email
* @param string $password
* @param boolean $long
- * @return Kirby\Cms\User
+ * @return \Kirby\Cms\User
*
* @throws PermissionException If the rate limit was exceeded or if any other error occured with debug mode off
* @throws NotFoundException If the email was invalid
@@ -226,7 +226,7 @@ class Auth
*
* @param string $email
* @param string $password
- * @return Kirby\Cms\User
+ * @return \Kirby\Cms\User
*
* @throws PermissionException If the rate limit was exceeded or if any other error occured with debug mode off
* @throws NotFoundException If the email was invalid
@@ -413,8 +413,8 @@ class Auth
/**
* Validates the currently logged in user
*
- * @param Kirby\Session\Session|array|null $session
- * @return Kirby\Cms\User
+ * @param \Kirby\Session\Session|array|null $session
+ * @return \Kirby\Cms\User
* @throws
*/
public function user($session = null)
diff --git a/kirby/src/Cms/Blueprint.php b/kirby/src/Cms/Blueprint.php
index c6caf5b..ffa3a2f 100755
--- a/kirby/src/Cms/Blueprint.php
+++ b/kirby/src/Cms/Blueprint.php
@@ -3,9 +3,9 @@
namespace Kirby\Cms;
use Exception;
+use Kirby\Data\Data;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Exception\NotFoundException;
-use Kirby\Data\Data;
use Kirby\Form\Field;
use Kirby\Toolkit\A;
use Kirby\Toolkit\F;
@@ -90,7 +90,7 @@ class Blueprint
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->props ?? [];
}
@@ -222,7 +222,7 @@ class Blueprint
*
* @param string $name
* @param string $fallback
- * @param Kirby\Cms\Model $model
+ * @param \Kirby\Cms\Model $model
* @return self
*/
public static function factory(string $name, string $fallback = null, Model $model)
@@ -352,7 +352,7 @@ class Blueprint
/**
* Returns the parent model
*
- * @return Kirby\Cms\Model
+ * @return \Kirby\Cms\Model
*/
public function model()
{
@@ -603,7 +603,14 @@ class Blueprint
'type' => $type = $sectionProps['type'] ?? null
]);
- if (isset(Section::$types[$type]) === false) {
+ if (empty($type) === true || is_string($type) === false) {
+ $sections[$sectionName] = [
+ 'name' => $sectionName,
+ 'headline' => 'Invalid section type for section "' . $sectionName . '"',
+ 'type' => 'info',
+ 'text' => 'The following section types are available: ' . $this->helpList(array_keys(Section::$types))
+ ];
+ } elseif (isset(Section::$types[$type]) === false) {
$sections[$sectionName] = [
'name' => $sectionName,
'headline' => 'Invalid section type ("' . $type . '")',
@@ -712,7 +719,7 @@ class Blueprint
* Returns a single section by name
*
* @param string $name
- * @return Kirby\Cms\Section|null
+ * @return \Kirby\Cms\Section|null
*/
public function section(string $name)
{
diff --git a/kirby/src/Cms/Collection.php b/kirby/src/Cms/Collection.php
index db709b6..7f6e0de 100755
--- a/kirby/src/Cms/Collection.php
+++ b/kirby/src/Cms/Collection.php
@@ -101,23 +101,22 @@ class Collection extends BaseCollection
/**
* Appends an element to the data array
*
- * @param mixed $key
+ * @param mixed $key Optional collection key, will be determined from the item if not given
* @param mixed $item
- * @return Kirby\Cms\Collection
+ * @return \Kirby\Cms\Collection
*/
public function append(...$args)
{
if (count($args) === 1) {
- if (is_object($args[0]) === true) {
- $this->data[$args[0]->id()] = $args[0];
+ // try to determine the key from the provided item
+ if (is_object($args[0]) === true && is_callable([$args[0], 'id']) === true) {
+ return parent::append($args[0]->id(), $args[0]);
} else {
- $this->data[] = $args[0];
+ return parent::append($args[0]);
}
- } elseif (count($args) === 2) {
- $this->set($args[0], $args[1]);
}
- return $this;
+ return parent::append(...$args);
}
/**
@@ -126,7 +125,7 @@ class Collection extends BaseCollection
*
* @param string $field
* @param bool $i Ignore upper/lowercase for group names
- * @return Kirby\Cms\Collection
+ * @return \Kirby\Cms\Collection
*/
public function groupBy($field, bool $i = true)
{
@@ -165,7 +164,7 @@ class Collection extends BaseCollection
* Checks if the given object or id
* is in the collection
*
- * @param string|object
+ * @param string|object $id
* @return boolean
*/
public function has($id): bool
@@ -197,8 +196,8 @@ class Collection extends BaseCollection
/**
* Returns a Collection without the given element(s)
*
- * @param mixed[] $keys any number of keys, passed as individual arguments
- * @return Kirby\Cms\Collection
+ * @param mixed ...$keys any number of keys, passed as individual arguments
+ * @return \Kirby\Cms\Collection
*/
public function not(...$keys)
{
@@ -217,7 +216,8 @@ class Collection extends BaseCollection
/**
* Add pagination and return a sliced set of data.
*
- * @return Kirby\Cms\Collection
+ * @param mixed ...$arguments
+ * @return \Kirby\Cms\Collection
*/
public function paginate(...$arguments)
{
@@ -230,13 +230,34 @@ class Collection extends BaseCollection
/**
* Returns the parent model
*
- * @return Kirby\Cms\Model
+ * @return \Kirby\Cms\Model
*/
public function parent()
{
return $this->parent;
}
+ /**
+ * Prepends an element to the data array
+ *
+ * @param mixed $key Optional collection key, will be determined from the item if not given
+ * @param mixed $item
+ * @return Kirby\Cms\Collection
+ */
+ public function prepend(...$args)
+ {
+ if (count($args) === 1) {
+ // try to determine the key from the provided item
+ if (is_object($args[0]) === true && is_callable([$args[0], 'id']) === true) {
+ return parent::prepend($args[0]->id(), $args[0]);
+ } else {
+ return parent::prepend($args[0]);
+ }
+ }
+
+ return parent::prepend(...$args);
+ }
+
/**
* Runs a combination of filterBy, sortBy, not
* offset, limit, search and paginate on the collection.
diff --git a/kirby/src/Cms/Collections.php b/kirby/src/Cms/Collections.php
index 5d7b5e8..5f09e4d 100755
--- a/kirby/src/Cms/Collections.php
+++ b/kirby/src/Cms/Collections.php
@@ -21,7 +21,6 @@ use Kirby\Toolkit\Controller;
*/
class Collections
{
-
/**
* Each collection is cached once it
* has been called, to avoid further
@@ -45,7 +44,7 @@ class Collections
*
* @param string $name
* @param array $arguments
- * @return Kirby\Cms\Collection|null
+ * @return \Kirby\Cms\Collection|null
*/
public function __call(string $name, array $arguments = [])
{
@@ -57,7 +56,7 @@ class Collections
*
* @param string $name
* @param array $data
- * @return Kirby\Cms\Collection|null
+ * @return \Kirby\Cms\Collection|null
*/
public function get(string $name, array $data = [])
{
diff --git a/kirby/src/Cms/Content.php b/kirby/src/Cms/Content.php
index 4c74fcd..52eb39e 100755
--- a/kirby/src/Cms/Content.php
+++ b/kirby/src/Cms/Content.php
@@ -14,7 +14,6 @@ namespace Kirby\Cms;
*/
class Content
{
-
/**
* The raw data array
*
@@ -47,7 +46,7 @@ class Content
*
* @param string $name
* @param array $arguments
- * @return Kirby\Cms\Field
+ * @return \Kirby\Cms\Field
*/
public function __call(string $name, array $arguments = [])
{
@@ -73,7 +72,7 @@ class Content
* @see self::data()
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->toArray();
}
@@ -147,8 +146,8 @@ class Content
* Returns either a single field object
* or all registered fields
*
- * @param string $key
- * @return Kirby\Cms\Field|array
+ * @param string $key
+ * @return \Kirby\Cms\Field|array
*/
public function get(string $key = null)
{
@@ -217,7 +216,7 @@ class Content
* Returns the parent
* Site, Page, File or User object
*
- * @return Kirby\Cms\Model
+ * @return \Kirby\Cms\Model
*/
public function parent()
{
@@ -227,7 +226,7 @@ class Content
/**
* Set the parent model
*
- * @param Kirby\Cms\Model $parent
+ * @param \Kirby\Cms\Model $parent
* @return self
*/
public function setParent(Model $parent)
diff --git a/kirby/src/Cms/ContentLock.php b/kirby/src/Cms/ContentLock.php
index a0cc942..a8f7d7a 100755
--- a/kirby/src/Cms/ContentLock.php
+++ b/kirby/src/Cms/ContentLock.php
@@ -17,7 +17,6 @@ use Kirby\Exception\PermissionException;
*/
class ContentLock
{
-
/**
* Lock data
*
@@ -33,7 +32,7 @@ class ContentLock
protected $model;
/**
- * @param Kirby\Cms\ModelWithContent $model
+ * @param \Kirby\Cms\ModelWithContent $model
*/
public function __construct(ModelWithContent $model)
{
@@ -80,13 +79,13 @@ class ContentLock
$data['user'] !== $this->user()->id() &&
$user = $this->kirby()->user($data['user'])
) {
- $time = intval($data['time']);
+ $time = (int)($data['time']);
return [
'user' => $user->id(),
'email' => $user->email(),
'time' => $time,
- 'unlockable' => $time + $this->kirby()->option('lock.duration', 60 * 2) <= time()
+ 'unlockable' => ($time + 200) <= time()
];
}
@@ -124,7 +123,7 @@ class ContentLock
/**
* Returns the app instance
*
- * @return Kirby\Cms\App
+ * @return \Kirby\Cms\App
*/
protected function kirby(): App
{
@@ -201,7 +200,7 @@ class ContentLock
* Returns currently authenticated user;
* throws exception if none is authenticated
*
- * @return Kirby\Cms\User
+ * @return \Kirby\Cms\User
*/
protected function user(): User
{
diff --git a/kirby/src/Cms/ContentLocks.php b/kirby/src/Cms/ContentLocks.php
index 5d979cb..2c4c3ee 100755
--- a/kirby/src/Cms/ContentLocks.php
+++ b/kirby/src/Cms/ContentLocks.php
@@ -18,7 +18,6 @@ use Kirby\Toolkit\F;
*/
class ContentLocks
{
-
/**
* Data from the `.lock` files
* that have been read so far
@@ -73,7 +72,7 @@ class ContentLocks
/**
* Returns the path to a model's lock file
*
- * @param Kirby\Cms\ModelWithContent $model
+ * @param \Kirby\Cms\ModelWithContent $model
* @return string
*/
public static function file(ModelWithContent $model): string
@@ -84,7 +83,7 @@ class ContentLocks
/**
* Returns the lock/unlock data for the specified model
*
- * @param Kirby\Cms\ModelWithContent $model
+ * @param \Kirby\Cms\ModelWithContent $model
* @return array
*/
public function get(ModelWithContent $model): array
@@ -155,7 +154,7 @@ class ContentLocks
* Returns model ID used as the key for the data array;
* prepended with a slash because the $site otherwise won't have an ID
*
- * @param Kirby\Cms\ModelWithContent $model
+ * @param \Kirby\Cms\ModelWithContent $model
* @return string
*/
public static function id(ModelWithContent $model): string
@@ -166,7 +165,7 @@ class ContentLocks
/**
* Sets and writes the lock/unlock data for the specified model
*
- * @param Kirby\Cms\ModelWithContent $model
+ * @param \Kirby\Cms\ModelWithContent $model
* @param array $data
* @return boolean
*/
diff --git a/kirby/src/Cms/ContentTranslation.php b/kirby/src/Cms/ContentTranslation.php
index ca26e94..3bc4786 100755
--- a/kirby/src/Cms/ContentTranslation.php
+++ b/kirby/src/Cms/ContentTranslation.php
@@ -60,7 +60,7 @@ class ContentTranslation
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->toArray();
}
@@ -154,7 +154,7 @@ class ContentTranslation
/**
* Returns the parent page, file or site object
*
- * @return Kirby\Cms\Model
+ * @return \Kirby\Cms\Model
*/
public function parent()
{
@@ -182,7 +182,7 @@ class ContentTranslation
}
/**
- * @param Kirby\Cms\Model $parent
+ * @param \Kirby\Cms\Model $parent
* @return self
*/
protected function setParent(Model $parent)
diff --git a/kirby/src/Cms/Email.php b/kirby/src/Cms/Email.php
index aa4cdc7..7a876ae 100755
--- a/kirby/src/Cms/Email.php
+++ b/kirby/src/Cms/Email.php
@@ -109,7 +109,7 @@ class Email
*
* @param string $name
* @param string|null $type
- * @return Kirby\Cms\Template
+ * @return \Kirby\Cms\Template
*/
protected function getTemplate(string $name, string $type = null)
{
diff --git a/kirby/src/Cms/Field.php b/kirby/src/Cms/Field.php
index 0abcba4..02e8747 100755
--- a/kirby/src/Cms/Field.php
+++ b/kirby/src/Cms/Field.php
@@ -27,7 +27,6 @@ use Kirby\Exception\InvalidArgumentException;
*/
class Field
{
-
/**
* Field method aliases
*
@@ -111,7 +110,7 @@ class Field
* @see Field::toArray
* @return void
*/
- public function __debuginfo()
+ public function __debugInfo()
{
return $this->toArray();
}
@@ -170,7 +169,7 @@ class Field
/**
* @see Field::parent()
- * @return Kirby\Cms\Model|null
+ * @return \Kirby\Cms\Model|null
*/
public function model()
{
@@ -201,7 +200,7 @@ class Field
/**
* Returns the parent object of the field
*
- * @return Kirby\Cms\Model|null
+ * @return \Kirby\Cms\Model|null
*/
public function parent()
{
diff --git a/kirby/src/Cms/File.php b/kirby/src/Cms/File.php
index de3e8b5..50bdd73 100755
--- a/kirby/src/Cms/File.php
+++ b/kirby/src/Cms/File.php
@@ -5,7 +5,6 @@ namespace Kirby\Cms;
use Kirby\Image\Image;
use Kirby\Toolkit\A;
use Kirby\Toolkit\F;
-use Kirby\Toolkit\Str;
/**
* The `$file` object provides a set
@@ -42,14 +41,14 @@ class File extends ModelWithContent
* This is used to do actual file
* method calls, like size, mime, etc.
*
- * @var Kirby\Image\Image
+ * @var \Kirby\Image\Image
*/
protected $asset;
/**
* Cache for the initialized blueprint object
*
- * @var Kirby\Cms\FileBlueprint
+ * @var \Kirby\Cms\FileBlueprint
*/
protected $blueprint;
@@ -73,7 +72,7 @@ class File extends ModelWithContent
/**
* The parent object
*
- * @var Kirby\Cms\Model
+ * @var \Kirby\Cms\Model
*/
protected $parent;
@@ -141,7 +140,7 @@ class File extends ModelWithContent
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return array_merge($this->toArray(), [
'content' => $this->content(),
@@ -165,7 +164,7 @@ class File extends ModelWithContent
* Returns the Image object
*
* @internal
- * @return Kirby\Image\Image
+ * @return \Kirby\Image\Image
*/
public function asset()
{
@@ -175,7 +174,7 @@ class File extends ModelWithContent
/**
* Returns the FileBlueprint object for the file
*
- * @return Kirby\Cms\FileBlueprint
+ * @return \Kirby\Cms\FileBlueprint
*/
public function blueprint()
{
@@ -189,7 +188,7 @@ class File extends ModelWithContent
/**
* Store the template in addition to the
* other content.
-
+ *
* @internal
* @param array $data
* @param string|null $languageCode
@@ -232,28 +231,32 @@ class File extends ModelWithContent
* gets dragged onto a textarea
*
* @internal
- * @param string $type
+ * @param string $type (auto|kirbytext|markdown)
* @param bool $absolute
* @return string
*/
- public function dragText($type = 'kirbytext', bool $absolute = false): string
+ public function dragText($type = 'auto', bool $absolute = false): string
{
+ if ($type === 'auto') {
+ $type = option('panel.kirbytext', true) ? 'kirbytext' : 'markdown';
+ }
+
$url = $absolute ? $this->id() : $this->filename();
switch ($type) {
- case 'kirbytext':
- if ($this->type() === 'image') {
- return '(image: ' . $url . ')';
- } else {
- return '(file: ' . $url . ')';
- }
- // no break
case 'markdown':
if ($this->type() === 'image') {
return '';
} else {
return '[' . $this->filename() . '](' . $url . ')';
}
+ // no break
+ default:
+ if ($this->type() === 'image') {
+ return '(image: ' . $url . ')';
+ } else {
+ return '(file: ' . $url . ')';
+ }
}
}
@@ -261,6 +264,7 @@ class File extends ModelWithContent
* Constructs a File object
*
* @internal
+ * @param mixed $props
* @return self
*/
public static function factory($props)
@@ -281,7 +285,7 @@ class File extends ModelWithContent
/**
* Returns the parent Files collection
*
- * @return Kirby\Cms\Files
+ * @return \Kirby\Cms\Files
*/
public function files()
{
@@ -311,7 +315,7 @@ class File extends ModelWithContent
/**
* Compares the current object with the given file object
*
- * @param Kirby\Cms\File $file
+ * @param \Kirby\Cms\File $file
* @return bool
*/
public function is(File $file): bool
@@ -355,7 +359,7 @@ class File extends ModelWithContent
/**
* @deprecated 3.0.0 Use `File::content()` instead
*
- * @return Kirby\Cms\Content
+ * @return \Kirby\Cms\Content
*/
public function meta()
{
@@ -409,7 +413,7 @@ class File extends ModelWithContent
/**
* Returns the parent Page object
*
- * @return Kirby\Cms\Page|null
+ * @return \Kirby\Cms\Page|null
*/
public function page()
{
@@ -468,7 +472,7 @@ class File extends ModelWithContent
*
* @internal
* @param string|null $query
- * @return Kirby\Cms\File|Kirby\Cms\Asset|null
+ * @return \Kirby\Cms\File|\Kirby\Cms\Asset|null
*/
protected function panelImageSource(string $query = null)
{
@@ -538,7 +542,7 @@ class File extends ModelWithContent
/**
* Returns the parent Model object
*
- * @return Kirby\Cms\Model
+ * @return \Kirby\Cms\Model
*/
public function parent()
{
@@ -563,7 +567,7 @@ class File extends ModelWithContent
/**
* Returns a collection of all parent pages
*
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function parents()
{
@@ -571,13 +575,13 @@ class File extends ModelWithContent
return $this->parent()->parents()->prepend($this->parent()->id(), $this->parent());
}
- return new Pages;
+ return new Pages();
}
/**
* Returns the permissions object for this file
*
- * @return Kirby\Cms\FilePermissions
+ * @return \Kirby\Cms\FilePermissions
*/
public function permissions()
{
@@ -598,7 +602,7 @@ class File extends ModelWithContent
* Returns the FileRules class to
* validate any important action.
*
- * @return Kirby\Cms\FileRules
+ * @return \Kirby\Cms\FileRules
*/
protected function rules()
{
@@ -636,7 +640,7 @@ class File extends ModelWithContent
/**
* Sets the parent model object
*
- * @param Kirby\Cms\Model $parent
+ * @param \Kirby\Cms\Model $parent
* @return self
*/
protected function setParent(Model $parent = null)
@@ -684,7 +688,7 @@ class File extends ModelWithContent
* Returns the parent Files collection
* @internal
*
- * @return Kirby\Cms\Files
+ * @return \Kirby\Cms\Files
*/
protected function siblingsCollection()
{
@@ -694,7 +698,7 @@ class File extends ModelWithContent
/**
* Returns the parent Site object
*
- * @return Kirby\Cms\Site
+ * @return \Kirby\Cms\Site
*/
public function site()
{
@@ -715,7 +719,7 @@ class File extends ModelWithContent
* Returns siblings with the same template
*
* @param bool $self
- * @return Kirby\Cms\Files
+ * @return \Kirby\Cms\Files
*/
public function templateSiblings(bool $self = true)
{
diff --git a/kirby/src/Cms/FileActions.php b/kirby/src/Cms/FileActions.php
index 3be7ed6..4aef8cf 100755
--- a/kirby/src/Cms/FileActions.php
+++ b/kirby/src/Cms/FileActions.php
@@ -19,7 +19,6 @@ use Kirby\Toolkit\F;
*/
trait FileActions
{
-
/**
* Renames the file without touching the extension
* The store is used to actually execute this.
@@ -53,7 +52,9 @@ trait FileActions
}
// remove the lock of the old file
- $oldFile->lock()->remove();
+ if ($lock = $oldFile->lock()) {
+ $lock->remove();
+ }
// remove all public versions
$oldFile->unpublish();
@@ -121,8 +122,8 @@ trait FileActions
/**
* Copy the file to the given page
*
- * @param Kirby\Cms\Page $page
- * @return Kirby\Cms\File
+ * @param \Kirby\Cms\Page $page
+ * @return \Kirby\Cms\File
*/
public function copy(Page $page)
{
@@ -216,7 +217,9 @@ trait FileActions
$file->unpublish();
// remove the lock of the old file
- $file->lock()->remove();
+ if ($lock = $file->lock()) {
+ $lock->remove();
+ }
if ($file->kirby()->multilang() === true) {
foreach ($file->translations() as $translation) {
diff --git a/kirby/src/Cms/FileBlueprint.php b/kirby/src/Cms/FileBlueprint.php
index 2f8d0bd..e570e42 100755
--- a/kirby/src/Cms/FileBlueprint.php
+++ b/kirby/src/Cms/FileBlueprint.php
@@ -44,6 +44,7 @@ class FileBlueprint extends Blueprint
}
/**
+ * @param mixed $accept
* @return array
*/
protected function normalizeAccept($accept = null): array
diff --git a/kirby/src/Cms/FileFoundation.php b/kirby/src/Cms/FileFoundation.php
index 717fa13..be70c66 100755
--- a/kirby/src/Cms/FileFoundation.php
+++ b/kirby/src/Cms/FileFoundation.php
@@ -72,7 +72,7 @@ trait FileFoundation
/**
* Returns the Image object
*
- * @return Kirby\Image\Image
+ * @return \Kirby\Image\Image
*/
public function asset()
{
@@ -155,7 +155,7 @@ trait FileFoundation
/**
* Returns the app instance
*
- * @return Kirby\Cms\App
+ * @return \Kirby\Cms\App
*/
public function kirby()
{
diff --git a/kirby/src/Cms/FileModifications.php b/kirby/src/Cms/FileModifications.php
index 825162b..2a50ce2 100755
--- a/kirby/src/Cms/FileModifications.php
+++ b/kirby/src/Cms/FileModifications.php
@@ -15,12 +15,11 @@ use Kirby\Exception\InvalidArgumentException;
*/
trait FileModifications
{
-
/**
* Blurs the image by the given amount of pixels
*
* @param boolean $pixels
- * @return Kirby\Cms\FileVersion|Kirby\Cms\File
+ * @return \Kirby\Cms\FileVersion|\Kirby\Cms\File
*/
public function blur($pixels = true)
{
@@ -30,7 +29,7 @@ trait FileModifications
/**
* Converts the image to black and white
*
- * @return Kirby\Cms\FileVersion|Kirby\Cms\File
+ * @return \Kirby\Cms\FileVersion|\Kirby\Cms\File
*/
public function bw()
{
@@ -43,7 +42,7 @@ trait FileModifications
* @param integer $width
* @param integer $height
* @param string|array $options
- * @return Kirby\Cms\FileVersion|Kirby\Cms\File
+ * @return \Kirby\Cms\FileVersion|\Kirby\Cms\File
*/
public function crop(int $width, int $height = null, $options = null)
{
@@ -73,7 +72,7 @@ trait FileModifications
* Sets the JPEG compression quality
*
* @param integer $quality
- * @return Kirby\Cms\FileVersion|Kirby\Cms\File
+ * @return \Kirby\Cms\FileVersion|\Kirby\Cms\File
*/
public function quality(int $quality)
{
@@ -87,7 +86,7 @@ trait FileModifications
* @param integer $width
* @param integer $height
* @param integer $quality
- * @return Kirby\Cms\FileVersion|Kirby\Cms\File
+ * @return \Kirby\Cms\FileVersion|\Kirby\Cms\File
*/
public function resize(int $width = null, int $height = null, int $quality = null)
{
@@ -155,7 +154,7 @@ trait FileModifications
* place.
*
* @param array|null|string $options
- * @return Kirby\Cms\FileVersion|Kirby\Cms\File
+ * @return \Kirby\Cms\FileVersion|\Kirby\Cms\File
*/
public function thumb($options = null)
{
@@ -172,7 +171,7 @@ trait FileModifications
$result = $this->kirby()->component('file::version')($this->kirby(), $this, $options);
- if (is_a($result, FileVersion::class) === false && is_a($result, File::class) === false) {
+ if (is_a($result, 'Kirby\Cms\FileVersion') === false && is_a($result, 'Kirby\Cms\File') === false) {
throw new InvalidArgumentException('The file::version component must return a File or FileVersion object');
}
diff --git a/kirby/src/Cms/FileVersion.php b/kirby/src/Cms/FileVersion.php
index b6f865e..c597fd5 100755
--- a/kirby/src/Cms/FileVersion.php
+++ b/kirby/src/Cms/FileVersion.php
@@ -37,7 +37,7 @@ class FileVersion
return $this->asset()->$method(...$arguments);
}
- if (is_a($this->original(), File::class) === true) {
+ if (is_a($this->original(), 'Kirby\Cms\File') === true) {
// content fields
return $this->original()->content()->get($method, $arguments);
}
@@ -49,7 +49,7 @@ class FileVersion
}
/**
- * @return Kirby\Cms\App
+ * @return \Kirby\Cms\App
*/
public function kirby()
{
diff --git a/kirby/src/Cms/Filename.php b/kirby/src/Cms/Filename.php
index 72c9dd0..a34c110 100755
--- a/kirby/src/Cms/Filename.php
+++ b/kirby/src/Cms/Filename.php
@@ -28,7 +28,6 @@ use Kirby\Toolkit\Str;
*/
class Filename
{
-
/**
* List of all applicable attributes
*
@@ -167,7 +166,7 @@ class Filename
return false;
}
- return intval($value);
+ return (int)$value;
}
/**
@@ -257,7 +256,7 @@ class Filename
return false;
}
- return intval($value);
+ return (int)$value;
}
/**
diff --git a/kirby/src/Cms/Files.php b/kirby/src/Cms/Files.php
index 033fb78..ce32bf9 100755
--- a/kirby/src/Cms/Files.php
+++ b/kirby/src/Cms/Files.php
@@ -18,7 +18,6 @@ namespace Kirby\Cms;
*/
class Files extends Collection
{
-
/**
* All registered files methods
*
@@ -31,7 +30,7 @@ class Files extends Collection
* an entire second collection to the
* current collection
*
- * @param mixed $item
+ * @param mixed $object
* @return self
*/
public function add($object)
@@ -45,7 +44,7 @@ class Files extends Collection
$this->__set($file->id(), $file);
// add a file object
- } elseif (is_a($object, File::class) === true) {
+ } elseif (is_a($object, 'Kirby\Cms\File') === true) {
$this->__set($object->id(), $object);
}
@@ -76,7 +75,7 @@ class Files extends Collection
* Creates a files collection from an array of props
*
* @param array $files
- * @param Kirby\Cms\Model $parent
+ * @param \Kirby\Cms\Model $parent
* @param array $inject
* @return self
*/
@@ -102,7 +101,7 @@ class Files extends Collection
* Tries to find a file by id/filename
*
* @param string $id
- * @return Kirby\Cms\File|null
+ * @return \Kirby\Cms\File|null
*/
public function findById(string $id)
{
@@ -115,7 +114,7 @@ class Files extends Collection
* map the get method correctly.
*
* @param string $key
- * @return Kirby\Cms\File|null
+ * @return \Kirby\Cms\File|null
*/
public function findByKey(string $key)
{
diff --git a/kirby/src/Cms/Form.php b/kirby/src/Cms/Form.php
index a82ece1..30e72fc 100755
--- a/kirby/src/Cms/Form.php
+++ b/kirby/src/Cms/Form.php
@@ -45,7 +45,7 @@ class Form extends BaseForm
}
/**
- * @param Kirby\Cms\Model $model
+ * @param \Kirby\Cms\Model $model
* @param array $props
* @return self
*/
diff --git a/kirby/src/Cms/HasChildren.php b/kirby/src/Cms/HasChildren.php
index e21c162..0e01be5 100755
--- a/kirby/src/Cms/HasChildren.php
+++ b/kirby/src/Cms/HasChildren.php
@@ -15,25 +15,24 @@ use Kirby\Toolkit\Str;
*/
trait HasChildren
{
-
/**
* The Pages collection
*
- * @var Kirby\Cms\Pages
+ * @var \Kirby\Cms\Pages
*/
public $children;
/**
* The list of available drafts
*
- * @var Kirby\Cms\Pages
+ * @var \Kirby\Cms\Pages
*/
public $drafts;
/**
* Returns the Pages collection
*
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function children()
{
@@ -47,7 +46,7 @@ trait HasChildren
/**
* Returns all children and drafts at the same time
*
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function childrenAndDrafts()
{
@@ -69,7 +68,7 @@ trait HasChildren
* Searches for a child draft by id
*
* @param string $path
- * @return Kirby\Cms\Page|null
+ * @return \Kirby\Cms\Page|null
*/
public function draft(string $path)
{
@@ -102,7 +101,7 @@ trait HasChildren
/**
* Return all drafts of the model
*
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function drafts()
{
@@ -127,7 +126,7 @@ trait HasChildren
* Finds one or multiple children by id
*
* @param string ...$arguments
- * @return Kirby\Cms\Page|Kirby\Cms\Pages
+ * @return \Kirby\Cms\Page|\Kirby\Cms\Pages
*/
public function find(...$arguments)
{
@@ -137,7 +136,8 @@ trait HasChildren
/**
* Finds a single page or draft
*
- * @return Kirby\Cms\Page|null
+ * @param string $path
+ * @return \Kirby\Cms\Page|null
*/
public function findPageOrDraft(string $path)
{
@@ -147,7 +147,7 @@ trait HasChildren
/**
* Returns a collection of all children of children
*
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function grandChildren()
{
@@ -216,7 +216,7 @@ trait HasChildren
* Creates a flat child index
*
* @param bool $drafts
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function index(bool $drafts = false)
{
diff --git a/kirby/src/Cms/HasFiles.php b/kirby/src/Cms/HasFiles.php
index c6b1820..9156a47 100755
--- a/kirby/src/Cms/HasFiles.php
+++ b/kirby/src/Cms/HasFiles.php
@@ -13,18 +13,17 @@ namespace Kirby\Cms;
*/
trait HasFiles
{
-
/**
* The Files collection
*
- * @var Kirby\Cms\Files
+ * @var \Kirby\Cms\Files
*/
protected $files;
/**
* Filters the Files collection by type audio
*
- * @return Kirby\Cms\Files
+ * @return \Kirby\Cms\Files
*/
public function audio()
{
@@ -34,7 +33,7 @@ trait HasFiles
/**
* Filters the Files collection by type code
*
- * @return Kirby\Cms\Files
+ * @return \Kirby\Cms\Files
*/
public function code()
{
@@ -56,7 +55,7 @@ trait HasFiles
* Creates a new file
*
* @param array $props
- * @return Kirby\Cms\File
+ * @return \Kirby\Cms\File
*/
public function createFile(array $props)
{
@@ -71,7 +70,7 @@ trait HasFiles
/**
* Filters the Files collection by type documents
*
- * @return Kirby\Cms\Files
+ * @return \Kirby\Cms\Files
*/
public function documents()
{
@@ -83,7 +82,7 @@ trait HasFiles
*
* @param string $filename
* @param string $in
- * @return Kirby\Cms\File|null
+ * @return \Kirby\Cms\File|null
*/
public function file(string $filename = null, string $in = 'files')
{
@@ -108,7 +107,7 @@ trait HasFiles
/**
* Returns the Files collection
*
- * @return Kirby\Cms\Files
+ * @return \Kirby\Cms\Files
*/
public function files()
{
@@ -183,7 +182,7 @@ trait HasFiles
* Returns a specific image by filename or the first one
*
* @param string $filename
- * @return Kirby\Cms\File|null
+ * @return \Kirby\Cms\File|null
*/
public function image(string $filename = null)
{
@@ -193,7 +192,7 @@ trait HasFiles
/**
* Filters the Files collection by type image
*
- * @return Kirby\Cms\Files
+ * @return \Kirby\Cms\Files
*/
public function images()
{
@@ -203,7 +202,7 @@ trait HasFiles
/**
* Sets the Files collection
*
- * @param Kirby\Cms\Files|null $files
+ * @param \Kirby\Cms\Files|null $files
* @return self
*/
protected function setFiles(array $files = null)
@@ -218,7 +217,7 @@ trait HasFiles
/**
* Filters the Files collection by type videos
*
- * @return Kirby\Cms\Files
+ * @return \Kirby\Cms\Files
*/
public function videos()
{
diff --git a/kirby/src/Cms/HasMethods.php b/kirby/src/Cms/HasMethods.php
index 98830fc..9fd7065 100755
--- a/kirby/src/Cms/HasMethods.php
+++ b/kirby/src/Cms/HasMethods.php
@@ -13,7 +13,6 @@ namespace Kirby\Cms;
*/
trait HasMethods
{
-
/**
* All registered methods
*
diff --git a/kirby/src/Cms/HasSiblings.php b/kirby/src/Cms/HasSiblings.php
index d66425e..78ad1d7 100755
--- a/kirby/src/Cms/HasSiblings.php
+++ b/kirby/src/Cms/HasSiblings.php
@@ -14,7 +14,6 @@ namespace Kirby\Cms;
*/
trait HasSiblings
{
-
/**
* Returns the position / index in the collection
*
@@ -28,7 +27,7 @@ trait HasSiblings
/**
* Returns the next item in the collection if available
*
- * @return Kirby\Cms\Model|null
+ * @return \Kirby\Cms\Model|null
*/
public function next()
{
@@ -38,7 +37,7 @@ trait HasSiblings
/**
* Returns the end of the collection starting after the current item
*
- * @return Kirby\Cms\Collection
+ * @return \Kirby\Cms\Collection
*/
public function nextAll()
{
@@ -48,7 +47,7 @@ trait HasSiblings
/**
* Returns the previous item in the collection if available
*
- * @return Kirby\Cms\Model|null
+ * @return \Kirby\Cms\Model|null
*/
public function prev()
{
@@ -58,7 +57,7 @@ trait HasSiblings
/**
* Returns the beginning of the collection before the current item
*
- * @return Kirby\Cms\Collection
+ * @return \Kirby\Cms\Collection
*/
public function prevAll()
{
@@ -69,7 +68,7 @@ trait HasSiblings
* Returns all sibling elements
*
* @param bool $self
- * @return Kirby\Cms\Collection
+ * @return \Kirby\Cms\Collection
*/
public function siblings(bool $self = true)
{
@@ -125,6 +124,7 @@ trait HasSiblings
/**
* Checks if the item is at a certain position
*
+ * @param int $n
* @return bool
*/
public function isNth(int $n): bool
diff --git a/kirby/src/Cms/Ingredients.php b/kirby/src/Cms/Ingredients.php
index 5a44d60..64fd9d2 100755
--- a/kirby/src/Cms/Ingredients.php
+++ b/kirby/src/Cms/Ingredients.php
@@ -16,7 +16,6 @@ namespace Kirby\Cms;
*/
class Ingredients
{
-
/**
* @var array
*/
@@ -49,7 +48,7 @@ class Ingredients
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->ingredients;
}
diff --git a/kirby/src/Cms/KirbyTag.php b/kirby/src/Cms/KirbyTag.php
index be76d75..86fade3 100755
--- a/kirby/src/Cms/KirbyTag.php
+++ b/kirby/src/Cms/KirbyTag.php
@@ -14,7 +14,6 @@ namespace Kirby\Cms;
*/
class KirbyTag extends \Kirby\Text\KirbyTag
{
-
/**
* Finds a file for the given path.
* The method first searches the file
@@ -22,7 +21,7 @@ class KirbyTag extends \Kirby\Text\KirbyTag
* Afterwards it uses Kirby's global file finder.
*
* @param string $path
- * @return Kirby\Cms\File|null
+ * @return \Kirby\Cms\File|null
*/
public function file(string $path)
{
@@ -32,7 +31,7 @@ class KirbyTag extends \Kirby\Text\KirbyTag
return $file;
}
- if (is_a($parent, File::class) === true && $file = $parent->page()->file($path)) {
+ if (is_a($parent, 'Kirby\Cms\File') === true && $file = $parent->page()->file($path)) {
return $file;
}
@@ -42,7 +41,7 @@ class KirbyTag extends \Kirby\Text\KirbyTag
/**
* Returns the current Kirby instance
*
- * @return Kirby\Cms\App
+ * @return \Kirby\Cms\App
*/
public function kirby()
{
@@ -52,7 +51,7 @@ class KirbyTag extends \Kirby\Text\KirbyTag
/**
* Returns the parent model
*
- * @return Kirby\Cms\Model|null
+ * @return \Kirby\Cms\Model|null
*/
public function parent()
{
diff --git a/kirby/src/Cms/KirbyTags.php b/kirby/src/Cms/KirbyTags.php
index 2e20624..6442fa2 100755
--- a/kirby/src/Cms/KirbyTags.php
+++ b/kirby/src/Cms/KirbyTags.php
@@ -14,13 +14,12 @@ namespace Kirby\Cms;
*/
class KirbyTags extends \Kirby\Text\KirbyTags
{
-
/**
* The KirbyTag rendering class
*
* @var string
*/
- protected static $tagClass = KirbyTag::class;
+ protected static $tagClass = 'Kirby\Cms\KirbyTag';
/**
* @param string $text
diff --git a/kirby/src/Cms/Language.php b/kirby/src/Cms/Language.php
index c839db7..a5f96a8 100755
--- a/kirby/src/Cms/Language.php
+++ b/kirby/src/Cms/Language.php
@@ -3,7 +3,6 @@
namespace Kirby\Cms;
use Kirby\Data\Data;
-use Kirby\Exception\DuplicateException;
use Kirby\Exception\Exception;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Exception\PermissionException;
@@ -29,7 +28,6 @@ use Throwable;
*/
class Language extends Model
{
-
/**
* @var string
*/
@@ -97,7 +95,7 @@ class Language extends Model
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->toArray();
}
@@ -230,6 +228,7 @@ class Language extends Model
* When the language is deleted, all content files with
* the language code must be removed as well.
*
+ * @param mixed $code
* @return bool
*/
protected function deleteContentFiles($code): bool
@@ -355,7 +354,7 @@ class Language extends Model
* which is used to handle language specific
* routes.
*
- * @return Kirby\Cms\LanguageRouter
+ * @return \Kirby\Cms\LanguageRouter
*/
public function router()
{
@@ -480,7 +479,7 @@ class Language extends Model
}
/**
- * @param array $slug
+ * @param array $slugs
* @return self
*/
protected function setSlugs(array $slugs = null)
diff --git a/kirby/src/Cms/LanguageRouter.php b/kirby/src/Cms/LanguageRouter.php
index 6c50ae8..383e530 100755
--- a/kirby/src/Cms/LanguageRouter.php
+++ b/kirby/src/Cms/LanguageRouter.php
@@ -20,7 +20,6 @@ use Kirby\Toolkit\Str;
*/
class LanguageRouter
{
-
/**
* The parent language
*
@@ -39,7 +38,7 @@ class LanguageRouter
* Creates a new language router instance
* for the given language
*
- * @param Kirby\Cms\Language $language
+ * @param \Kirby\Cms\Language $language
*/
public function __construct(Language $language)
{
diff --git a/kirby/src/Cms/LanguageRules.php b/kirby/src/Cms/LanguageRules.php
index 34b774d..9db3ece 100755
--- a/kirby/src/Cms/LanguageRules.php
+++ b/kirby/src/Cms/LanguageRules.php
@@ -4,8 +4,6 @@ namespace Kirby\Cms;
use Kirby\Exception\DuplicateException;
use Kirby\Exception\InvalidArgumentException;
-use Kirby\Exception\LogicException;
-use Kirby\Exception\PermissionException;
use Kirby\Toolkit\Str;
/**
diff --git a/kirby/src/Cms/Languages.php b/kirby/src/Cms/Languages.php
index 4dd529a..0ca08fc 100755
--- a/kirby/src/Cms/Languages.php
+++ b/kirby/src/Cms/Languages.php
@@ -16,7 +16,6 @@ use Kirby\Toolkit\F;
*/
class Languages extends Collection
{
-
/**
* Creates a new collection with the given language objects
*
@@ -51,7 +50,7 @@ class Languages extends Collection
*
* @internal
* @param array $props
- * @return Kirby\Cms\Language
+ * @return \Kirby\Cms\Language
*/
public function create(array $props)
{
@@ -61,7 +60,7 @@ class Languages extends Collection
/**
* Returns the default language
*
- * @return Kirby\Cms\Language|null
+ * @return \Kirby\Cms\Language|null
*/
public function default()
{
@@ -74,7 +73,7 @@ class Languages extends Collection
/**
* @deprecated 3.0.0 Use `Languages::default()`instead
- * @return Kirby\Cms\Language|null
+ * @return \Kirby\Cms\Language|null
*/
public function findDefault()
{
diff --git a/kirby/src/Cms/Media.php b/kirby/src/Cms/Media.php
index c90184e..544749a 100755
--- a/kirby/src/Cms/Media.php
+++ b/kirby/src/Cms/Media.php
@@ -19,15 +19,14 @@ use Throwable;
*/
class Media
{
-
/**
* Tries to find a file by model and filename
* and to copy it to the media folder.
*
- * @param Kirby\Cms\Model $model
+ * @param \Kirby\Cms\Model $model
* @param string $hash
* @param string $filename
- * @return Kirby\Cms\Response|false
+ * @return \Kirby\Cms\Response|false
*/
public static function link(Model $model = null, string $hash, string $filename)
{
@@ -80,10 +79,10 @@ class Media
* given filename and then calls the thumb
* component to create a thumbnail accordingly
*
- * @param Kirby\Cms\Model $model
+ * @param \Kirby\Cms\Model $model
* @param string $hash
* @param string $filename
- * @return Kirby\Cms\Response|false
+ * @return \Kirby\Cms\Response|false
*/
public static function thumb($model, string $hash, string $filename)
{
diff --git a/kirby/src/Cms/Model.php b/kirby/src/Cms/Model.php
index f0ca3dc..5788640 100755
--- a/kirby/src/Cms/Model.php
+++ b/kirby/src/Cms/Model.php
@@ -20,14 +20,14 @@ abstract class Model
/**
* The parent Kirby instance
*
- * @var Kirby\Cms\App
+ * @var \Kirby\Cms\App
*/
public static $kirby;
/**
* The parent site instance
*
- * @var Kirby\Cms\Site
+ * @var \Kirby\Cms\Site
*/
protected $site;
@@ -55,7 +55,7 @@ abstract class Model
/**
* Returns the parent Kirby instance
*
- * @return Kirby\Cms\App
+ * @return \Kirby\Cms\App
*/
public function kirby()
{
@@ -65,7 +65,7 @@ abstract class Model
/**
* Returns the parent Site instance
*
- * @return Kirby\Cms\Site
+ * @return \Kirby\Cms\Site
*/
public function site()
{
@@ -75,7 +75,7 @@ abstract class Model
/**
* Setter for the parent Kirby object
*
- * @param Kirby\Cms\App|null $kirby
+ * @param \Kirby\Cms\App|null $kirby
* @return self
*/
protected function setKirby(App $kirby = null)
@@ -88,7 +88,7 @@ abstract class Model
* Setter for the parent site object
*
* @internal
- * @param Kirby\Cms\Site|null $site
+ * @param \Kirby\Cms\Site|null $site
* @return self
*/
public function setSite(Site $site = null)
diff --git a/kirby/src/Cms/ModelPermissions.php b/kirby/src/Cms/ModelPermissions.php
index 54918f3..214c5a7 100755
--- a/kirby/src/Cms/ModelPermissions.php
+++ b/kirby/src/Cms/ModelPermissions.php
@@ -39,7 +39,7 @@ abstract class ModelPermissions
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->toArray();
}
diff --git a/kirby/src/Cms/ModelWithContent.php b/kirby/src/Cms/ModelWithContent.php
index fed4e10..7d34232 100755
--- a/kirby/src/Cms/ModelWithContent.php
+++ b/kirby/src/Cms/ModelWithContent.php
@@ -19,23 +19,22 @@ use Throwable;
*/
abstract class ModelWithContent extends Model
{
-
/**
* The content
*
- * @var Kirby\Cms\Content
+ * @var \Kirby\Cms\Content
*/
public $content;
/**
- * @var Kirby\Cms\Translations
+ * @var \Kirby\Cms\Translations
*/
public $translations;
/**
* Returns the blueprint of the model
*
- * @return Kirby\Cms\Blueprint
+ * @return \Kirby\Cms\Blueprint
*/
abstract public function blueprint();
@@ -53,7 +52,7 @@ abstract class ModelWithContent extends Model
* Returns the content
*
* @param string $languageCode
- * @return Kirby\Cms\Content
+ * @return \Kirby\Cms\Content
*/
public function content(string $languageCode = null)
{
@@ -263,13 +262,17 @@ abstract class ModelWithContent extends Model
* Only if a content directory exists,
* virtual pages will need to overwrite this method
*
- * @return Kirby\Cms\ContentLock|null
+ * @return \Kirby\Cms\ContentLock|null
*/
public function lock()
{
$dir = $this->contentFileDirectory();
- if (is_string($dir) === true && file_exists($dir) === true) {
+ if (
+ $this->kirby()->option('content.locking', true) &&
+ is_string($dir) === true &&
+ file_exists($dir) === true
+ ) {
return new ContentLock($this);
}
}
@@ -360,19 +363,19 @@ abstract class ModelWithContent extends Model
*
* @internal
* @param string|null $query
- * @return Kirby\Cms\File|Kirby\Cms\Asset|null
+ * @return \Kirby\Cms\File|\Kirby\Cms\Asset|null
*/
protected function panelImageSource(string $query = null)
{
$image = $this->query($query ?? null);
// validate the query result
- if (is_a($image, File::class) === false && is_a($image, Asset::class) === false) {
+ if (is_a($image, 'Kirby\Cms\File') === false && is_a($image, 'Kirby\Cms\Asset') === false) {
$image = null;
}
// fallback for files
- if ($image === null && is_a($this, File::class) === true && $this->isViewable() === true) {
+ if ($image === null && is_a($this, 'Kirby\Cms\File') === true && $this->isViewable() === true) {
$image = $this;
}
@@ -395,7 +398,7 @@ abstract class ModelWithContent extends Model
$result = Str::query($query, [
'kirby' => $this->kirby(),
- 'site' => is_a($this, Site::class) ? $this : $this->site(),
+ 'site' => is_a($this, 'Kirby\Cms\Site') ? $this : $this->site(),
static::CLASS_ALIAS => $this
]);
@@ -488,8 +491,22 @@ abstract class ModelWithContent extends Model
throw new InvalidArgumentException('Invalid language: ' . $languageCode);
}
- // merge the translation with the new data
- $translation->update($data, $overwrite);
+ // get the content to store
+ $content = $translation->update($data, $overwrite)->content();
+ $kirby = $this->kirby();
+ $languageCode = $kirby->languageCode($languageCode);
+
+ // remove all untranslatable fields
+ if ($languageCode !== $kirby->defaultLanguage()->code()) {
+ foreach ($this->blueprint()->fields() as $field) {
+ if (($field['translate'] ?? true) === false) {
+ $content[$field['name']] = null;
+ }
+ }
+
+ // merge the translation with the new data
+ $translation->update($content, true);
+ }
// send the full translation array to the writer
$clone->writeContent($translation->content(), $languageCode);
@@ -526,7 +543,7 @@ abstract class ModelWithContent extends Model
protected function setTranslations(array $translations = null)
{
if ($translations !== null) {
- $this->translations = new Collection;
+ $this->translations = new Collection();
foreach ($translations as $props) {
$props['parent'] = $this;
@@ -552,7 +569,7 @@ abstract class ModelWithContent extends Model
$result = Str::template($template, [
'kirby' => $this->kirby(),
- 'site' => is_a($this, Site::class) ? $this : $this->site(),
+ 'site' => is_a($this, 'Kirby\Cms\Site') ? $this : $this->site(),
static::CLASS_ALIAS => $this
]);
@@ -564,7 +581,7 @@ abstract class ModelWithContent extends Model
* If no code is specified the current translation is returned
*
* @param string|null $languageCode
- * @return Kirby\Cms\ContentTranslation|null
+ * @return \Kirby\Cms\ContentTranslation|null
*/
public function translation(string $languageCode = null)
{
@@ -574,7 +591,7 @@ abstract class ModelWithContent extends Model
/**
* Returns the translations collection
*
- * @return Kirby\Cms\Collection
+ * @return \Kirby\Cms\Collection
*/
public function translations()
{
@@ -582,7 +599,7 @@ abstract class ModelWithContent extends Model
return $this->translations;
}
- $this->translations = new Collection;
+ $this->translations = new Collection();
foreach ($this->kirby()->languages() as $language) {
$translation = new ContentTranslation([
@@ -623,7 +640,13 @@ abstract class ModelWithContent extends Model
}
return $this->commit('update', [$this, $form->data(), $form->strings(), $languageCode], function ($model, $values, $strings, $languageCode) {
- return $model->save($strings, $languageCode, true);
+ // save updated values
+ $model = $model->save($strings, $languageCode, true);
+
+ // update model in siblings collection
+ $model->siblings()->add($model);
+
+ return $model;
});
}
diff --git a/kirby/src/Cms/NestCollection.php b/kirby/src/Cms/NestCollection.php
index 448b326..e3bf7c5 100755
--- a/kirby/src/Cms/NestCollection.php
+++ b/kirby/src/Cms/NestCollection.php
@@ -16,7 +16,6 @@ use Kirby\Toolkit\Collection as BaseCollection;
*/
class NestCollection extends BaseCollection
{
-
/**
* Converts all objects in the collection
* to an array. This can also take a callback
diff --git a/kirby/src/Cms/NestObject.php b/kirby/src/Cms/NestObject.php
index ed58959..f225376 100755
--- a/kirby/src/Cms/NestObject.php
+++ b/kirby/src/Cms/NestObject.php
@@ -15,7 +15,6 @@ use Kirby\Toolkit\Obj;
*/
class NestObject extends Obj
{
-
/**
* Converts the object to an array
*
diff --git a/kirby/src/Cms/Page.php b/kirby/src/Cms/Page.php
index 6adaebf..c6dc55a 100755
--- a/kirby/src/Cms/Page.php
+++ b/kirby/src/Cms/Page.php
@@ -49,7 +49,7 @@ class Page extends ModelWithContent
/**
* The PageBlueprint object
*
- * @var Kirby\Cms\PageBlueprint
+ * @var \Kirby\Cms\PageBlueprint
*/
protected $blueprint;
@@ -92,7 +92,7 @@ class Page extends ModelWithContent
* The template, that should be loaded
* if it exists
*
- * @var Kirby\Cms\Template
+ * @var \Kirby\Cms\Template
*/
protected $intendedTemplate;
@@ -111,7 +111,7 @@ class Page extends ModelWithContent
/**
* The parent page
*
- * @var Kirby\Cms\Page|null
+ * @var \Kirby\Cms\Page|null
*/
protected $parent;
@@ -125,7 +125,7 @@ class Page extends ModelWithContent
/**
* The parent Site object
*
- * @var Kirby\Cms\Site|null
+ * @var \Kirby\Cms\Site|null
*/
protected $site;
@@ -154,7 +154,7 @@ class Page extends ModelWithContent
* Magic caller
*
* @param string $method
- * @param array $args
+ * @param array $arguments
* @return mixed
*/
public function __call(string $method, array $arguments = [])
@@ -192,7 +192,7 @@ class Page extends ModelWithContent
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return array_merge($this->toArray(), [
'content' => $this->content(),
@@ -222,7 +222,7 @@ class Page extends ModelWithContent
/**
* Returns the blueprint object
*
- * @return Kirby\Cms\PageBlueprint
+ * @return \Kirby\Cms\PageBlueprint
*/
public function blueprint()
{
@@ -236,6 +236,7 @@ class Page extends ModelWithContent
/**
* Returns an array with all blueprints that are available for the page
*
+ * @param string $inSection
* @return array
*/
public function blueprints(string $inSection = null): array
@@ -300,6 +301,8 @@ class Page extends ModelWithContent
* Prepares the content for the write method
*
* @internal
+ * @param array $data
+ * @param string $languageCode
* @return array
*/
public function contentFileData(array $data, string $languageCode = null): array
@@ -405,15 +408,20 @@ class Page extends ModelWithContent
* gets dragged onto a textarea
*
* @internal
+ * @param string $type (auto|kirbytext|markdown)
* @return string
*/
- public function dragText($type = 'kirbytext'): string
+ public function dragText(string $type = 'auto'): string
{
+ if ($type === 'auto') {
+ $type = option('panel.kirbytext', true) ? 'kirbytext' : 'markdown';
+ }
+
switch ($type) {
- case 'kirbytext':
- return '(link: ' . $this->id() . ' text: ' . $this->title() . ')';
case 'markdown':
return '[' . $this->title() . '](' . $this->url() . ')';
+ default:
+ return '(link: ' . $this->id() . ' text: ' . $this->title() . ')';
}
}
@@ -432,6 +440,7 @@ class Page extends ModelWithContent
* takes page models into account.
*
* @internal
+ * @param mixed $props
* @return self
*/
public static function factory($props)
@@ -477,7 +486,7 @@ class Page extends ModelWithContent
* Returns the template that should be
* loaded if it exists.
*
- * @return Kirby\Cms\Template
+ * @return \Kirby\Cms\Template
*/
public function intendedTemplate()
{
@@ -514,12 +523,12 @@ class Page extends ModelWithContent
/**
* Compares the current object with the given page object
*
- * @param Kirby\Cms\Page|string $page
+ * @param \Kirby\Cms\Page|string $page
* @return bool
*/
public function is($page): bool
{
- if (is_a($page, Page::class) === false) {
+ if (is_a($page, 'Kirby\Cms\Page') === false) {
if (is_string($page) === false) {
return false;
}
@@ -527,7 +536,7 @@ class Page extends ModelWithContent
$page = $this->kirby()->page($page);
}
- if (is_a($page, Page::class) === false) {
+ if (is_a($page, 'Kirby\Cms\Page') === false) {
return false;
}
@@ -553,6 +562,7 @@ class Page extends ModelWithContent
/**
* Checks if the page is a direct or indirect ancestor of the given $page object
*
+ * @param Page $child
* @return boolean
*/
public function isAncestorOf(Page $child): bool
@@ -617,7 +627,7 @@ class Page extends ModelWithContent
/**
* Checks if the page is a child of the given page
*
- * @param Kirby\Cms\Page|string $parent
+ * @param \Kirby\Cms\Page|string $parent
* @return boolean
*/
public function isChildOf($parent): bool
@@ -632,7 +642,7 @@ class Page extends ModelWithContent
/**
* Checks if the page is a descendant of the given page
*
- * @param Kirby\Cms\Page|string $parent
+ * @param \Kirby\Cms\Page|string $parent
* @return boolean
*/
public function isDescendantOf($parent): bool
@@ -920,7 +930,7 @@ class Page extends ModelWithContent
*
* @internal
* @param string|null $query
- * @return Kirby\Cms\File|Kirby\Cms\Asset|null
+ * @return \Kirby\Cms\File|\Kirby\Cms\Asset|null
*/
protected function panelImageSource(string $query = null)
{
@@ -972,6 +982,7 @@ class Page extends ModelWithContent
* in the panel
*
* @internal
+ * @param bool $relative
* @return string
*/
public function panelUrl(bool $relative = false): string
@@ -986,7 +997,7 @@ class Page extends ModelWithContent
/**
* Returns the parent Page object
*
- * @return Kirby\Cms\Page|null
+ * @return \Kirby\Cms\Page|null
*/
public function parent()
{
@@ -1014,7 +1025,7 @@ class Page extends ModelWithContent
* or the Site
*
* @internal
- * @return Kirby\Cms\Page|Kirby\Cms\Site
+ * @return \Kirby\Cms\Page|\Kirby\Cms\Site
*/
public function parentModel()
{
@@ -1024,11 +1035,11 @@ class Page extends ModelWithContent
/**
* Returns a list of all parents and their parents recursively
*
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function parents()
{
- $parents = new Pages;
+ $parents = new Pages();
$page = $this->parent();
while ($page !== null) {
@@ -1042,7 +1053,7 @@ class Page extends ModelWithContent
/**
* Returns the permissions object for this page
*
- * @return Kirby\Cms\PagePermissions
+ * @return \Kirby\Cms\PagePermissions
*/
public function permissions()
{
@@ -1146,7 +1157,8 @@ class Page extends ModelWithContent
/**
* @internal
- * @return Kirby\Cms\Template
+ * @param mixed $type
+ * @return \Kirby\Cms\Template
*/
public function representation($type)
{
@@ -1177,7 +1189,7 @@ class Page extends ModelWithContent
* which is being used in various methods
* to check for valid actions and input.
*
- * @return Kirby\Cms\PageRules
+ * @return \Kirby\Cms\PageRules
*/
protected function rules()
{
@@ -1189,7 +1201,7 @@ class Page extends ModelWithContent
*
* @param string $query
* @param array $params
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function search(string $query = null, $params = [])
{
@@ -1246,14 +1258,14 @@ class Page extends ModelWithContent
*/
protected function setNum(int $num = null)
{
- $this->num = $num === null ? $num : intval($num);
+ $this->num = $num === null ? $num : (int)$num;
return $this;
}
/**
* Sets the parent page object
*
- * @param Kirby\Cms\Page|null $parent
+ * @param \Kirby\Cms\Page|null $parent
* @return self
*/
protected function setParent(Page $parent = null)
@@ -1360,7 +1372,7 @@ class Page extends ModelWithContent
/**
* Returns the final template
*
- * @return Kirby\Cms\Template
+ * @return \Kirby\Cms\Template
*/
public function template()
{
@@ -1380,7 +1392,7 @@ class Page extends ModelWithContent
/**
* Returns the title field or the slug as fallback
*
- * @return Kirby\Cms\Field
+ * @return \Kirby\Cms\Field
*/
public function title()
{
diff --git a/kirby/src/Cms/PageActions.php b/kirby/src/Cms/PageActions.php
index 34c8085..d180c46 100755
--- a/kirby/src/Cms/PageActions.php
+++ b/kirby/src/Cms/PageActions.php
@@ -23,7 +23,6 @@ use Kirby\Toolkit\Str;
*/
trait PageActions
{
-
/**
* Changes the sorting number
* The sorting number must already be correct
@@ -69,7 +68,7 @@ trait PageActions
* Changes the slug/uid of the page
*
* @param string $slug
- * @param string $language
+ * @param string $languageCode
* @return self
*/
public function changeSlug(string $slug, string $languageCode = null)
@@ -101,13 +100,18 @@ trait PageActions
if ($oldPage->exists() === true) {
// remove the lock of the old page
- $oldPage->lock()->remove();
+ if ($lock = $oldPage->lock()) {
+ $lock->remove();
+ }
// actually move stuff on disk
if (Dir::move($oldPage->root(), $newPage->root()) !== true) {
throw new LogicException('The page directory cannot be moved');
}
+ // remove from the siblings
+ $oldPage->parentModel()->children()->remove($oldPage);
+
Dir::remove($oldPage->mediaRoot());
}
@@ -126,7 +130,7 @@ trait PageActions
* Change the slug for a specific language
*
* @param string $slug
- * @param string $language
+ * @param string $languageCode
* @return self
*/
protected function changeSlugForLanguage(string $slug, string $languageCode = null)
@@ -175,7 +179,7 @@ trait PageActions
protected function changeStatusToDraft()
{
- $page = $this->commit('changeStatus', [$this, 'draft'], function ($page) {
+ $page = $this->commit('changeStatus', [$this, 'draft', null], function ($page) {
return $page->unpublish();
});
@@ -216,7 +220,7 @@ trait PageActions
return $this;
}
- $page = $this->commit('changeStatus', [$this, 'unlisted'], function ($page) {
+ $page = $this->commit('changeStatus', [$this, 'unlisted', null], function ($page) {
return $page->publish()->changeNum(null);
});
@@ -295,7 +299,8 @@ trait PageActions
* 5. returns the result
*
* @param string $action
- * @param mixed ...$arguments
+ * @param array $arguments
+ * @param Closure $callback
* @return mixed
*/
protected function commit(string $action, array $arguments, Closure $callback)
@@ -314,7 +319,7 @@ trait PageActions
* Copies the page to a new parent
*
* @param array $options
- * @return Kirby\Cms\Page
+ * @return \Kirby\Cms\Page
*/
public function copy(array $options = [])
{
@@ -370,6 +375,13 @@ trait PageActions
}
}
+ // add copy to siblings
+ if ($isDraft === true) {
+ $parentModel->drafts()->append($copy->id(), $copy);
+ } else {
+ $parentModel->children()->append($copy->id(), $copy);
+ }
+
return $copy;
}
@@ -500,7 +512,7 @@ trait PageActions
'site' => $this->site(),
]);
- return intval($template);
+ return (int)$template;
}
}
@@ -561,7 +573,7 @@ trait PageActions
*
* @param string $slug
* @param array $options
- * @return Kirby\Cms\Page
+ * @return \Kirby\Cms\Page
*/
public function duplicate(string $slug = null, array $options = [])
{
diff --git a/kirby/src/Cms/PageBlueprint.php b/kirby/src/Cms/PageBlueprint.php
index 296d237..7256bc5 100755
--- a/kirby/src/Cms/PageBlueprint.php
+++ b/kirby/src/Cms/PageBlueprint.php
@@ -13,7 +13,6 @@ namespace Kirby\Cms;
*/
class PageBlueprint extends Blueprint
{
-
/**
* Creates a new page blueprint object
* with the given props
diff --git a/kirby/src/Cms/PageSiblings.php b/kirby/src/Cms/PageSiblings.php
index 3cc947d..16af4c3 100755
--- a/kirby/src/Cms/PageSiblings.php
+++ b/kirby/src/Cms/PageSiblings.php
@@ -13,7 +13,6 @@ namespace Kirby\Cms;
*/
trait PageSiblings
{
-
/**
* @deprecated 3.0.0 Use `Page::hasNextUnlisted` instead
* @return boolean
@@ -106,7 +105,7 @@ trait PageSiblings
/**
* Returns the next listed page if it exists
*
- * @return Kirby\Cms\Page|null
+ * @return \Kirby\Cms\Page|null
*/
public function nextListed()
{
@@ -116,7 +115,7 @@ trait PageSiblings
/**
* Returns the next unlisted page if it exists
*
- * @return Kirby\Cms\Page|null
+ * @return \Kirby\Cms\Page|null
*/
public function nextUnlisted()
{
@@ -144,7 +143,7 @@ trait PageSiblings
/**
* Returns the previous listed page
*
- * @return Kirby\Cms\Page|null
+ * @return \Kirby\Cms\Page|null
*/
public function prevListed()
{
@@ -154,7 +153,7 @@ trait PageSiblings
/**
* Returns the previous unlisted page
*
- * @return Kirby\Cms\Page|null
+ * @return \Kirby\Cms\Page|null
*/
public function prevUnlisted()
{
@@ -173,7 +172,7 @@ trait PageSiblings
/**
* Private siblings collector
*
- * @return Kirby\Cms\Collection
+ * @return \Kirby\Cms\Collection
*/
protected function siblingsCollection()
{
@@ -188,7 +187,7 @@ trait PageSiblings
* Returns siblings with the same template
*
* @param bool $self
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function templateSiblings(bool $self = true)
{
diff --git a/kirby/src/Cms/Pages.php b/kirby/src/Cms/Pages.php
index d5a7a35..199e520 100755
--- a/kirby/src/Cms/Pages.php
+++ b/kirby/src/Cms/Pages.php
@@ -20,11 +20,10 @@ namespace Kirby\Cms;
*/
class Pages extends Collection
{
-
/**
* Cache for the index
*
- * @var Kirby\Cms\Pages|null
+ * @var \Kirby\Cms\Pages|null
*/
protected $index = null;
@@ -40,7 +39,7 @@ class Pages extends Collection
* an entire second collection to the
* current collection
*
- * @param mixed $item
+ * @param mixed $object
* @return self
*/
public function add($object)
@@ -54,7 +53,7 @@ class Pages extends Collection
$this->__set($page->id(), $page);
// add a page object
- } elseif (is_a($object, Page::class) === true) {
+ } elseif (is_a($object, 'Kirby\Cms\Page') === true) {
$this->__set($object->id(), $object);
}
@@ -64,17 +63,17 @@ class Pages extends Collection
/**
* Returns all audio files of all children
*
- * @return Kirby\Cms\Files
+ * @return \Kirby\Cms\Files
*/
public function audio()
{
- return $this->files()->filterBy("type", "audio");
+ return $this->files()->filterBy('type', 'audio');
}
/**
* Returns all children for each page in the array
*
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function children()
{
@@ -92,27 +91,27 @@ class Pages extends Collection
/**
* Returns all code files of all children
*
- * @return Kirby\Cms\Files
+ * @return \Kirby\Cms\Files
*/
public function code()
{
- return $this->files()->filterBy("type", "code");
+ return $this->files()->filterBy('type', 'code');
}
/**
* Returns all documents of all children
*
- * @return Kirby\Cms\Files
+ * @return \Kirby\Cms\Files
*/
public function documents()
{
- return $this->files()->filterBy("type", "document");
+ return $this->files()->filterBy('type', 'document');
}
/**
* Fetch all drafts for all pages in the collection
*
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function drafts()
{
@@ -131,8 +130,7 @@ class Pages extends Collection
* Creates a pages collection from an array of props
*
* @param array $pages
- * @param Kirby\Cms\Model $parent
- * @param array $inject
+ * @param \Kirby\Cms\Model $model
* @param bool $draft
* @return self
*/
@@ -167,7 +165,7 @@ class Pages extends Collection
/**
* Returns all files of all children
*
- * @return Kirby\Cms\Files
+ * @return \Kirby\Cms\Files
*/
public function files()
{
@@ -271,7 +269,7 @@ class Pages extends Collection
* Alias for Pages::findById
*
* @param string $id
- * @return Kirby\Cms\Page|null
+ * @return \Kirby\Cms\Page|null
*/
public function findByUri(string $id)
{
@@ -281,7 +279,7 @@ class Pages extends Collection
/**
* Finds the currently open page
*
- * @return Kirby\Cms\Page|null
+ * @return \Kirby\Cms\Page|null
*/
public function findOpen()
{
@@ -293,7 +291,8 @@ class Pages extends Collection
* extension pages
*
* @param string $key
- * @return Kirby\Cms\Page|null
+ * @param mixed $default
+ * @return \Kirby\Cms\Page|null
*/
public function get($key, $default = null)
{
@@ -311,11 +310,11 @@ class Pages extends Collection
/**
* Returns all images of all children
*
- * @return Kirby\Cms\Files
+ * @return \Kirby\Cms\Files
*/
public function images()
{
- return $this->files()->filterBy("type", "image");
+ return $this->files()->filterBy('type', 'image');
}
/**
@@ -323,7 +322,7 @@ class Pages extends Collection
* pages and subpages, etc.
*
* @param bool $drafts
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function index(bool $drafts = false)
{
@@ -357,7 +356,7 @@ class Pages extends Collection
/**
* Returns all listed pages in the collection
*
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function listed()
{
@@ -367,7 +366,7 @@ class Pages extends Collection
/**
* Returns all unlisted pages in the collection
*
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function unlisted()
{
@@ -377,6 +376,7 @@ class Pages extends Collection
/**
* Include all given items in the collection
*
+ * @param mixed ...$args
* @return self
*/
public function merge(...$args)
@@ -441,7 +441,7 @@ class Pages extends Collection
/*
* Returns all listed and unlisted pages in the collection
*
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function published()
{
@@ -452,7 +452,7 @@ class Pages extends Collection
* Filter all pages by the given template
*
* @param string|array $templates
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function template($templates)
{
@@ -472,17 +472,17 @@ class Pages extends Collection
/**
* Returns all video files of all children
*
- * @return Kirby\Cms\Files
+ * @return \Kirby\Cms\Files
*/
public function videos()
{
- return $this->files()->filterBy("type", "video");
+ return $this->files()->filterBy('type', 'video');
}
/**
* Deprecated alias for Pages::listed()
*
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function visible()
{
diff --git a/kirby/src/Cms/Pagination.php b/kirby/src/Cms/Pagination.php
index e9403b4..4a90082 100755
--- a/kirby/src/Cms/Pagination.php
+++ b/kirby/src/Cms/Pagination.php
@@ -22,7 +22,6 @@ use Kirby\Toolkit\Pagination as BasePagination;
*/
class Pagination extends BasePagination
{
-
/**
* Pagination method (param or query)
*
diff --git a/kirby/src/Cms/Panel.php b/kirby/src/Cms/Panel.php
index fdd3e2b..d2eaa05 100755
--- a/kirby/src/Cms/Panel.php
+++ b/kirby/src/Cms/Panel.php
@@ -24,12 +24,29 @@ use Throwable;
*/
class Panel
{
+ public static function customCss(App $kirby)
+ {
+ if ($css = $kirby->option('panel.css')) {
+ $asset = asset($css);
+
+ if ($asset->exists() === true) {
+ return $asset->url() . '?' . $asset->modified();
+ }
+ }
+
+ return false;
+ }
+
+ public static function icons(App $kirby): string
+ {
+ return F::read($kirby->root('kirby') . '/panel/dist/img/icons.svg');
+ }
/**
* Links all dist files in the media folder
* and returns the link to the requested asset
*
- * @param Kirby\Cms\App $kirby
+ * @param \Kirby\Cms\App $kirby
* @return bool
*/
public static function link(App $kirby): bool
@@ -61,8 +78,8 @@ class Panel
/**
* Renders the main panel view
*
- * @param Kirby\Cms\App $kirby
- * @return Kirby\Cms\Response
+ * @param \Kirby\Cms\App $kirby
+ * @return \Kirby\Cms\Response
*/
public static function render(App $kirby)
{
@@ -85,19 +102,20 @@ class Panel
'kirby' => $kirby,
'config' => $kirby->option('panel'),
'assetUrl' => $kirby->url('media') . '/panel/' . $kirby->versionHash(),
+ 'customCss' => static::customCss($kirby),
+ 'icons' => static::icons($kirby),
'pluginCss' => $plugins->url('css'),
'pluginJs' => $plugins->url('js'),
- 'icons' => F::read($kirby->root('panel') . '/dist/img/icons.svg'),
'panelUrl' => $uri->path()->toString(true) . '/',
'options' => [
'url' => $url,
'site' => $kirby->url('index'),
'api' => $kirby->url('api'),
- 'csrf' => $kirby->option('api')['csrf'] ?? csrf(),
+ 'csrf' => $kirby->option('api.csrf') ?? csrf(),
'translation' => 'en',
'debug' => $kirby->option('debug', false),
'search' => [
- 'limit' => $kirby->option('panel')['search']['limit'] ?? 10
+ 'limit' => $kirby->option('panel.search.limit') ?? 10
]
]
]);
diff --git a/kirby/src/Cms/PanelPlugins.php b/kirby/src/Cms/PanelPlugins.php
index 8f928c6..e05caea 100755
--- a/kirby/src/Cms/PanelPlugins.php
+++ b/kirby/src/Cms/PanelPlugins.php
@@ -2,7 +2,6 @@
namespace Kirby\Cms;
-use Kirby\Toolkit\Dir;
use Kirby\Toolkit\F;
use Kirby\Toolkit\Str;
@@ -19,7 +18,6 @@ use Kirby\Toolkit\Str;
*/
class PanelPlugins
{
-
/**
* Cache of all collected plugin files
*
diff --git a/kirby/src/Cms/PluginAssets.php b/kirby/src/Cms/PluginAssets.php
index 63bb35a..20f53c8 100755
--- a/kirby/src/Cms/PluginAssets.php
+++ b/kirby/src/Cms/PluginAssets.php
@@ -54,7 +54,7 @@ class PluginAssets
*
* @param string $pluginName
* @param string $filename
- * @return Kirby\Cms\Response|null
+ * @return \Kirby\Cms\Response|null
*/
public static function resolve(string $pluginName, string $filename)
{
diff --git a/kirby/src/Cms/R.php b/kirby/src/Cms/R.php
index 53dafe6..9c9c354 100755
--- a/kirby/src/Cms/R.php
+++ b/kirby/src/Cms/R.php
@@ -2,7 +2,6 @@
namespace Kirby\Cms;
-use Kirby\Http\Request;
use Kirby\Toolkit\Facade;
/**
@@ -17,7 +16,7 @@ use Kirby\Toolkit\Facade;
class R extends Facade
{
/**
- * @return Kirby\Cms\Request
+ * @return \Kirby\Http\Request
*/
public static function instance()
{
diff --git a/kirby/src/Cms/Responder.php b/kirby/src/Cms/Responder.php
index 3df0804..bcb5896 100755
--- a/kirby/src/Cms/Responder.php
+++ b/kirby/src/Cms/Responder.php
@@ -16,7 +16,6 @@ use Kirby\Toolkit\Str;
*/
class Responder
{
-
/**
* HTTP status code
*
@@ -174,7 +173,7 @@ class Responder
* Creates and returns the response object from the config
*
* @param string|null $body
- * @return Kirby\Cms\Response
+ * @return \Kirby\Cms\Response
*/
public function send(string $body = null)
{
diff --git a/kirby/src/Cms/Response.php b/kirby/src/Cms/Response.php
index feb3411..5eb6d88 100755
--- a/kirby/src/Cms/Response.php
+++ b/kirby/src/Cms/Response.php
@@ -14,7 +14,6 @@ namespace Kirby\Cms;
*/
class Response extends \Kirby\Http\Response
{
-
/**
* Adjusted redirect creation which
* parses locations with the Url::to method
diff --git a/kirby/src/Cms/Role.php b/kirby/src/Cms/Role.php
index 75834bc..0405c35 100755
--- a/kirby/src/Cms/Role.php
+++ b/kirby/src/Cms/Role.php
@@ -34,7 +34,7 @@ class Role extends Model
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->toArray();
}
@@ -133,7 +133,7 @@ class Role extends Model
}
/**
- * @return Kirby\Cms\Permissions
+ * @return \Kirby\Cms\Permissions
*/
public function permissions()
{
diff --git a/kirby/src/Cms/Roles.php b/kirby/src/Cms/Roles.php
index 90604d3..8c3b56e 100755
--- a/kirby/src/Cms/Roles.php
+++ b/kirby/src/Cms/Roles.php
@@ -20,6 +20,51 @@ use Kirby\Toolkit\Dir;
*/
class Roles extends Collection
{
+ /**
+ * Returns a filtered list of all
+ * roles that can be created by the
+ * current user
+ *
+ * @return self
+ */
+ public function canBeChanged()
+ {
+ if ($user = App::instance()->user()) {
+ return $this->filter(function ($role) use ($user) {
+ $newUser = new User([
+ 'email' => 'test@getkirby.com',
+ 'role' => $role->id()
+ ]);
+
+ return $newUser->permissions()->can('changeRole');
+ });
+ }
+
+ return $this;
+ }
+
+ /**
+ * Returns a filtered list of all
+ * roles that can be created by the
+ * current user
+ *
+ * @return self
+ */
+ public function canBeCreated()
+ {
+ if ($user = App::instance()->user()) {
+ return $this->filter(function ($role) use ($user) {
+ $newUser = new User([
+ 'email' => 'test@getkirby.com',
+ 'role' => $role->id()
+ ]);
+
+ return $newUser->permissions()->can('create');
+ });
+ }
+
+ return $this;
+ }
/**
* @param array $roles
@@ -28,7 +73,7 @@ class Roles extends Collection
*/
public static function factory(array $roles, array $inject = [])
{
- $collection = new static;
+ $collection = new static();
// read all user blueprints
foreach ($roles as $props) {
@@ -52,7 +97,7 @@ class Roles extends Collection
*/
public static function load(string $root = null, array $inject = [])
{
- $roles = new static;
+ $roles = new static();
// load roles from plugins
foreach (App::instance()->extensions('blueprints') as $blueprintName => $blueprint) {
diff --git a/kirby/src/Cms/S.php b/kirby/src/Cms/S.php
index 1d27cf4..8830077 100755
--- a/kirby/src/Cms/S.php
+++ b/kirby/src/Cms/S.php
@@ -17,7 +17,7 @@ use Kirby\Toolkit\Facade;
class S extends Facade
{
/**
- * @return Kirby\Session\Session
+ * @return \Kirby\Session\Session
*/
public static function instance()
{
diff --git a/kirby/src/Cms/Search.php b/kirby/src/Cms/Search.php
index 435e952..42e08e2 100755
--- a/kirby/src/Cms/Search.php
+++ b/kirby/src/Cms/Search.php
@@ -18,11 +18,10 @@ use Kirby\Toolkit\Str;
*/
class Search
{
-
/**
* @param string $query
* @param array $params
- * @return Kirby\Cms\Files
+ * @return \Kirby\Cms\Files
*/
public static function files(string $query = null, $params = [])
{
@@ -31,6 +30,10 @@ class Search
/**
* Native search method to search for anything within the collection
+ *
+ * @param Collection $collection
+ * @param string $query
+ * @param mixed $params
*/
public static function collection(Collection $collection, string $query = null, $params = [])
{
@@ -69,10 +72,10 @@ class Search
$keys = array_keys($data);
$keys[] = 'id';
- if (is_a($item, User::class) === true) {
+ if (is_a($item, 'Kirby\Cms\User') === true) {
$keys[] = 'email';
$keys[] = 'role';
- } elseif (is_a($item, Page::class) === true) {
+ } elseif (is_a($item, 'Kirby\Cms\Page') === true) {
// apply the default score for pages
$options['score'] = array_merge([
'id' => 64,
@@ -126,7 +129,7 @@ class Search
/**
* @param string $query
* @param array $params
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public static function pages(string $query = null, $params = [])
{
@@ -136,7 +139,7 @@ class Search
/**
* @param string $query
* @param array $params
- * @return Kirby\Cms\Users
+ * @return \Kirby\Cms\Users
*/
public static function users(string $query = null, $params = [])
{
diff --git a/kirby/src/Cms/Section.php b/kirby/src/Cms/Section.php
index 0abd867..6e7abbc 100755
--- a/kirby/src/Cms/Section.php
+++ b/kirby/src/Cms/Section.php
@@ -16,7 +16,6 @@ use Kirby\Toolkit\Component;
*/
class Section extends Component
{
-
/**
* Registry for all component mixins
*
@@ -46,7 +45,7 @@ class Section extends Component
}
/**
- * @return Kirby\Cms\App
+ * @return \Kirby\Cms\App
*/
public function kirby()
{
@@ -54,7 +53,7 @@ class Section extends Component
}
/**
- * @return Kirby\Cms\Model
+ * @return \Kirby\Cms\Model
*/
public function model()
{
diff --git a/kirby/src/Cms/Site.php b/kirby/src/Cms/Site.php
index b0cd2f0..6be5737 100755
--- a/kirby/src/Cms/Site.php
+++ b/kirby/src/Cms/Site.php
@@ -5,7 +5,6 @@ namespace Kirby\Cms;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Exception\LogicException;
use Kirby\Toolkit\A;
-use Kirby\Toolkit\Str;
/**
* The `$site` object is the root element
@@ -132,7 +131,7 @@ class Site extends ModelWithContent
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return array_merge($this->toArray(), [
'content' => $this->content(),
@@ -160,7 +159,7 @@ class Site extends ModelWithContent
/**
* Returns the blueprint object
*
- * @return Kirby\Cms\SiteBlueprint
+ * @return \Kirby\Cms\SiteBlueprint
*/
public function blueprint()
{
@@ -175,7 +174,7 @@ class Site extends ModelWithContent
* Returns an array with all blueprints that are available
* as subpages of the site
*
- * @params string $inSection
+ * @param string $inSection
* @return array
*/
public function blueprints(string $inSection = null): array
@@ -200,7 +199,7 @@ class Site extends ModelWithContent
/**
* Builds a breadcrumb collection
*
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function breadcrumb()
{
@@ -220,6 +219,8 @@ class Site extends ModelWithContent
* Prepares the content for the write method
*
* @internal
+ * @param array $data
+ * @param string $languageCode
* @return array
*/
public function contentFileData(array $data, string $languageCode = null): array
@@ -243,7 +244,7 @@ class Site extends ModelWithContent
/**
* Returns the error page object
*
- * @return Kirby\Cms\Page|null
+ * @return \Kirby\Cms\Page|null
*/
public function errorPage()
{
@@ -282,7 +283,7 @@ class Site extends ModelWithContent
/**
* Returns the home page object
*
- * @return Kirby\Cms\Page|null
+ * @return \Kirby\Cms\Page|null
*/
public function homePage()
{
@@ -339,7 +340,7 @@ class Site extends ModelWithContent
*/
public function is($site): bool
{
- if (is_a($site, Site::class) === false) {
+ if (is_a($site, 'Kirby\Cms\Site') === false) {
return false;
}
@@ -391,7 +392,7 @@ class Site extends ModelWithContent
* it can be found. (see `Site::homePage()`)
*
* @param string $path
- * @return Kirby\Cms\Page|null
+ * @return \Kirby\Cms\Page|null
*/
public function page(string $path = null)
{
@@ -413,7 +414,7 @@ class Site extends ModelWithContent
/**
* Alias for `Site::children()`
*
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function pages()
{
@@ -451,7 +452,7 @@ class Site extends ModelWithContent
/**
* Returns the permissions object for this site
*
- * @return Kirby\Cms\SitePermissions
+ * @return \Kirby\Cms\SitePermissions
*/
public function permissions()
{
@@ -496,7 +497,7 @@ class Site extends ModelWithContent
* which is being used in various methods
* to check for valid actions and input.
*
- * @return Kirby\Cms\SiteRules
+ * @return \Kirby\Cms\SiteRules
*/
protected function rules()
{
@@ -508,7 +509,7 @@ class Site extends ModelWithContent
*
* @param string $query
* @param array $params
- * @return Kirby\Cms\Pages
+ * @return \Kirby\Cms\Pages
*/
public function search(string $query = null, $params = [])
{
@@ -565,7 +566,7 @@ class Site extends ModelWithContent
* Sets the current page object
*
* @internal
- * @param Kirby\Cms\Page|null $page
+ * @param \Kirby\Cms\Page|null $page
* @return self
*/
public function setPage(Page $page = null)
@@ -644,9 +645,9 @@ class Site extends ModelWithContent
* returns the current page
*
* @internal
- * @param string|Kirby\Cms\Page $page
+ * @param string|\Kirby\Cms\Page $page
* @param string|null $languageCode
- * @return Kirby\Cms\Page
+ * @return \Kirby\Cms\Page
*/
public function visit($page, string $languageCode = null)
{
@@ -677,6 +678,7 @@ class Site extends ModelWithContent
* modified after the given unix timestamp
* This is mainly used to auto-update the cache
*
+ * @param mixed $time
* @return bool
*/
public function wasModifiedAfter($time): bool
diff --git a/kirby/src/Cms/SiteActions.php b/kirby/src/Cms/SiteActions.php
index 1edf438..0814419 100755
--- a/kirby/src/Cms/SiteActions.php
+++ b/kirby/src/Cms/SiteActions.php
@@ -15,7 +15,6 @@ use Closure;
*/
trait SiteActions
{
-
/**
* Commits a site action, by following these steps
*
@@ -27,6 +26,7 @@ trait SiteActions
*
* @param string $action
* @param mixed ...$arguments
+ * @param Closure $callback
* @return mixed
*/
protected function commit(string $action, array $arguments, Closure $callback)
@@ -60,7 +60,7 @@ trait SiteActions
* Creates a main page
*
* @param array $props
- * @return Kirby\Cms\Page
+ * @return \Kirby\Cms\Page
*/
public function createChild(array $props)
{
diff --git a/kirby/src/Cms/Structure.php b/kirby/src/Cms/Structure.php
index d770bb5..f1c3602 100755
--- a/kirby/src/Cms/Structure.php
+++ b/kirby/src/Cms/Structure.php
@@ -2,6 +2,8 @@
namespace Kirby\Cms;
+use Kirby\Exception\InvalidArgumentException;
+
/**
* The Structure class wraps
* array data into a nicely chainable
@@ -18,7 +20,6 @@ namespace Kirby\Cms;
*/
class Structure extends Collection
{
-
/**
* Creates a new Collection with the given objects
*
@@ -38,13 +39,17 @@ class Structure extends Collection
* StructureObjects
*
* @param string $id
- * @param array|StructureObject $object
+ * @param array|StructureObject $props
*/
public function __set(string $id, $props)
{
- if (is_a($props, StructureObject::class) === true) {
+ if (is_a($props, 'Kirby\Cms\StructureObject') === true) {
$object = $props;
} else {
+ if (is_array($props) === false) {
+ throw new InvalidArgumentException('Invalid structure data');
+ }
+
$object = new StructureObject([
'content' => $props,
'id' => $props['id'] ?? $id,
diff --git a/kirby/src/Cms/StructureObject.php b/kirby/src/Cms/StructureObject.php
index 1559d2f..e04a78a 100755
--- a/kirby/src/Cms/StructureObject.php
+++ b/kirby/src/Cms/StructureObject.php
@@ -77,7 +77,7 @@ class StructureObject extends Model
/**
* Returns the content
*
- * @return Kirby\Cms\Content
+ * @return \Kirby\Cms\Content
*/
public function content()
{
@@ -110,7 +110,7 @@ class StructureObject extends Model
*/
public function is($structure): bool
{
- if (is_a($structure, StructureObject::class) === false) {
+ if (is_a($structure, 'Kirby\Cms\StructureObject') === false) {
return false;
}
@@ -120,7 +120,7 @@ class StructureObject extends Model
/**
* Returns the parent Model object
*
- * @return Kirby\Cms\Model
+ * @return \Kirby\Cms\Model
*/
public function parent()
{
@@ -158,7 +158,7 @@ class StructureObject extends Model
* Sets the parent Model. This can either be a
* Page, Site, File or User object
*
- * @param Kirby\Cms\Model|null $parent
+ * @param \Kirby\Cms\Model|null $parent
* @return self
*/
protected function setParent(Model $parent = null)
@@ -170,7 +170,7 @@ class StructureObject extends Model
/**
* Sets the parent Structure collection
*
- * @param Kirby\Cms\Structure $structure
+ * @param \Kirby\Cms\Structure $structure
* @return self
*/
protected function setStructure(Structure $structure = null)
@@ -182,7 +182,7 @@ class StructureObject extends Model
/**
* Returns the parent Structure collection as siblings
*
- * @return Kirby\Cms\Structure
+ * @return \Kirby\Cms\Structure
*/
protected function siblingsCollection()
{
diff --git a/kirby/src/Cms/System.php b/kirby/src/Cms/System.php
index 4a466de..ff5f242 100755
--- a/kirby/src/Cms/System.php
+++ b/kirby/src/Cms/System.php
@@ -2,7 +2,6 @@
namespace Kirby\Cms;
-use Throwable;
use Kirby\Data\Json;
use Kirby\Exception\Exception;
use Kirby\Exception\InvalidArgumentException;
@@ -14,6 +13,7 @@ use Kirby\Toolkit\Dir;
use Kirby\Toolkit\F;
use Kirby\Toolkit\Str;
use Kirby\Toolkit\V;
+use Throwable;
/**
* The System class gathers all information
@@ -31,14 +31,13 @@ use Kirby\Toolkit\V;
*/
class System
{
-
/**
* @var App
*/
protected $app;
/**
- * @param Kirby\Cms\App $app
+ * @param \Kirby\Cms\App $app
*/
public function __construct(App $app)
{
@@ -53,7 +52,7 @@ class System
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->toArray();
}
@@ -138,20 +137,21 @@ class System
*/
public function init()
{
- /* /site/accounts */
+ // init /site/accounts
try {
Dir::make($this->app->root('accounts'));
} catch (Throwable $e) {
throw new PermissionException('The accounts directory could not be created');
}
- /* /content */
+ // init /content
try {
Dir::make($this->app->root('content'));
} catch (Throwable $e) {
throw new PermissionException('The content directory could not be created');
}
+ // init /media
try {
Dir::make($this->app->root('media'));
} catch (Throwable $e) {
diff --git a/kirby/src/Cms/Template.php b/kirby/src/Cms/Template.php
index 775b460..c4b0690 100755
--- a/kirby/src/Cms/Template.php
+++ b/kirby/src/Cms/Template.php
@@ -18,7 +18,6 @@ use Kirby\Toolkit\Tpl;
*/
class Template
{
-
/**
* Global template data
*
@@ -126,7 +125,7 @@ class Template
// Try the default template in the default template directory.
return F::realpath($this->root() . '/' . $this->name() . '.' . $this->extension(), $this->root());
} catch (Exception $e) {
- //
+ // ignore errors, continue searching
}
// Look for the default template provided by an extension.
diff --git a/kirby/src/Cms/Translation.php b/kirby/src/Cms/Translation.php
index a8944f2..c5cc66e 100755
--- a/kirby/src/Cms/Translation.php
+++ b/kirby/src/Cms/Translation.php
@@ -42,7 +42,7 @@ class Translation
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->toArray();
}
diff --git a/kirby/src/Cms/Translations.php b/kirby/src/Cms/Translations.php
index 17d1284..468f782 100755
--- a/kirby/src/Cms/Translations.php
+++ b/kirby/src/Cms/Translations.php
@@ -35,7 +35,7 @@ class Translations extends Collection
*/
public static function factory(array $translations)
{
- $collection = new static;
+ $collection = new static();
foreach ($translations as $code => $props) {
$translation = new Translation($code, $props);
@@ -52,7 +52,7 @@ class Translations extends Collection
*/
public static function load(string $root, array $inject = [])
{
- $collection = new static;
+ $collection = new static();
foreach (Dir::read($root) as $filename) {
if (F::extension($filename) !== 'json') {
diff --git a/kirby/src/Cms/User.php b/kirby/src/Cms/User.php
index caade86..c28d60a 100755
--- a/kirby/src/Cms/User.php
+++ b/kirby/src/Cms/User.php
@@ -140,7 +140,7 @@ class User extends ModelWithContent
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return array_merge($this->toArray(), [
'avatar' => $this->avatar(),
@@ -168,7 +168,7 @@ class User extends ModelWithContent
/**
* Returns the File object for the avatar or null
*
- * @return Kirby\Cms\File|null
+ * @return \Kirby\Cms\File|null
*/
public function avatar()
{
@@ -178,7 +178,7 @@ class User extends ModelWithContent
/**
* Returns the UserBlueprint object
*
- * @return Kirby\Cms\UserBlueprint
+ * @return \Kirby\Cms\UserBlueprint
*/
public function blueprint()
{
@@ -260,6 +260,7 @@ class User extends ModelWithContent
* takes User models into account.
*
* @internal
+ * @param mixed $props
* @return self
*/
public static function factory($props)
@@ -326,7 +327,7 @@ class User extends ModelWithContent
/**
* Compares the current object with the given user object
*
- * @param Kirby\Cms\User|null $user
+ * @param \Kirby\Cms\User|null $user
* @return bool
*/
public function is(User $user = null): bool
@@ -404,7 +405,7 @@ class User extends ModelWithContent
* Logs the user in
*
* @param string $password
- * @param Kirby\Session\Session|array $session Session options or session object to set the user in
+ * @param \Kirby\Session\Session|array $session Session options or session object to set the user in
* @return bool
*
* @throws PermissionException If the password is not valid
@@ -420,7 +421,7 @@ class User extends ModelWithContent
/**
* Logs the user in without checking the password
*
- * @param Kirby\Session\Session|array $session Session options or session object to set the user in
+ * @param \Kirby\Session\Session|array $session Session options or session object to set the user in
* @return void
*/
public function loginPasswordless($session = null): void
@@ -434,7 +435,7 @@ class User extends ModelWithContent
/**
* Logs the user out
*
- * @param Kirby\Session\Session|array $session Session options or session object to unset the user in
+ * @param \Kirby\Session\Session|array $session Session options or session object to unset the user in
* @return void
*/
public function logout($session = null): void
@@ -480,7 +481,7 @@ class User extends ModelWithContent
* @internal
* @param string $name
* @param array $props
- * @return Kirby\Cms\User
+ * @return \Kirby\Cms\User
*/
public static function model(string $name, array $props = [])
{
@@ -515,7 +516,7 @@ class User extends ModelWithContent
/**
* Returns the user's name
*
- * @return Kirby\Cms\Field
+ * @return \Kirby\Cms\Field
*/
public function name()
{
@@ -563,7 +564,7 @@ class User extends ModelWithContent
*
* @internal
* @param string|null $query
- * @return Kirby\Cms\File|Kirby\Cms\Asset|null
+ * @return \Kirby\Cms\File|\Kirby\Cms\Asset|null
*/
protected function panelImageSource(string $query = null)
{
@@ -640,7 +641,7 @@ class User extends ModelWithContent
}
/**
- * @return Kirby\Cms\UserPermissions
+ * @return \Kirby\Cms\UserPermissions
*/
public function permissions()
{
@@ -650,7 +651,7 @@ class User extends ModelWithContent
/**
* Returns the user role
*
- * @return Kirby\Cms\Role
+ * @return \Kirby\Cms\Role
*/
public function role()
{
@@ -681,7 +682,7 @@ class User extends ModelWithContent
* Returns the UserRules class to
* validate any important action.
*
- * @return Kirby\Cms\UserRules
+ * @return \Kirby\Cms\UserRules
*/
protected function rules()
{
@@ -781,8 +782,8 @@ class User extends ModelWithContent
/**
* Converts session options into a session object
*
- * @param Kirby\Session\Session|array $session Session options or session object to unset the user in
- * @return Kirby\Session\Session
+ * @param \Kirby\Session\Session|array $session Session options or session object to unset the user in
+ * @return \Kirby\Session\Session
*/
protected function sessionFromOptions($session)
{
@@ -799,7 +800,7 @@ class User extends ModelWithContent
/**
* Returns the parent Users collection
*
- * @return Kirby\Cms\Users
+ * @return \Kirby\Cms\Users
*/
protected function siblingsCollection()
{
diff --git a/kirby/src/Cms/UserActions.php b/kirby/src/Cms/UserActions.php
index 3df99f5..97dc0ef 100755
--- a/kirby/src/Cms/UserActions.php
+++ b/kirby/src/Cms/UserActions.php
@@ -21,7 +21,6 @@ use Kirby\Toolkit\Str;
*/
trait UserActions
{
-
/**
* Changes the user email address
*
@@ -158,7 +157,7 @@ trait UserActions
/**
* Creates a new User from the given props and returns a new User object
*
- * @param array $input
+ * @param array $props
* @return self
*/
public static function create(array $props = null)
@@ -199,6 +198,9 @@ trait UserActions
$languageCode = null;
}
+ // add the user to users collection
+ $user->kirby()->users()->add($user);
+
// write the user data
return $user->save($user->content()->toArray(), $languageCode);
});
@@ -242,6 +244,9 @@ trait UserActions
throw new LogicException('The user directory for "' . $user->email() . '" could not be deleted');
}
+ // remove the user from users collection
+ $user->kirby()->users()->remove($user);
+
return true;
});
}
@@ -287,6 +292,7 @@ trait UserActions
/**
* Writes the account information to disk
*
+ * @param array $credentials
* @return boolean
*/
protected function writeCredentials(array $credentials): bool
diff --git a/kirby/src/Cms/UserPermissions.php b/kirby/src/Cms/UserPermissions.php
index aeb2e1c..bc4ef36 100755
--- a/kirby/src/Cms/UserPermissions.php
+++ b/kirby/src/Cms/UserPermissions.php
@@ -25,6 +25,11 @@ class UserPermissions extends ModelPermissions
protected function canChangeRole(): bool
{
+ // only one role, makes no sense to change it
+ if ($this->user->kirby()->roles()->count() < 2) {
+ return false;
+ }
+
// users who are not admins cannot change their own role
if ($this->user->is($this->model) === true && $this->user->isAdmin() === false) {
return false;
@@ -33,6 +38,21 @@ class UserPermissions extends ModelPermissions
return $this->model->isLastAdmin() !== true;
}
+ protected function canCreate(): bool
+ {
+ // the admin can always create new users
+ if ($this->user->isAdmin() === true) {
+ return true;
+ }
+
+ // users who are not admins cannot create admins
+ if ($this->model->isAdmin() === true) {
+ return false;
+ }
+
+ return true;
+ }
+
protected function canDelete(): bool
{
return $this->model->isLastAdmin() !== true;
diff --git a/kirby/src/Cms/UserRules.php b/kirby/src/Cms/UserRules.php
index d142176..20ed836 100755
--- a/kirby/src/Cms/UserRules.php
+++ b/kirby/src/Cms/UserRules.php
@@ -70,13 +70,27 @@ class UserRules
public static function changeRole(User $user, string $role): bool
{
- if ($user->kirby()->user()->isAdmin() === false) {
+ // protect admin from role changes by non-admin
+ if (
+ $user->kirby()->user()->isAdmin() === false &&
+ $user->isAdmin() === true
+ ) {
throw new PermissionException([
'key' => 'user.changeRole.permission',
'data' => ['name' => $user->username()]
]);
}
+ // prevent non-admins making a user to admin
+ if (
+ $user->kirby()->user()->isAdmin() === false &&
+ $role === 'admin'
+ ) {
+ throw new PermissionException([
+ 'key' => 'user.changeRole.toAdmin'
+ ]);
+ }
+
static::validRole($user, $role);
if ($role !== 'admin' && $user->isLastAdmin() === true) {
@@ -101,23 +115,29 @@ class UserRules
static::validId($user, $user->id());
static::validEmail($user, $user->email(), true);
static::validLanguage($user, $user->language());
-
- // only admins are allowed to add admins
- $role = $props['role'] ?? null;
+
+ if (empty($props['password']) === false) {
+ static::validPassword($user, $props['password']);
+ }
// get the current user if it exists
$currentUser = $user->kirby()->user();
+
+ // admins are allowed everything
+ if ($currentUser && $currentUser->isAdmin() === true) {
+ return true;
+ }
+
+ // only admins are allowed to add admins
+ $role = $props['role'] ?? null;
if ($role === 'admin' && $currentUser && $currentUser->isAdmin() === false) {
throw new PermissionException([
'key' => 'user.create.permission'
]);
}
-
- if (empty($props['password']) === false) {
- static::validPassword($user, $props['password']);
- }
-
+
+ // check user permissions (if not on install)
if ($user->kirby()->users()->count() > 0) {
if ($user->permissions()->create() !== true) {
throw new PermissionException([
diff --git a/kirby/src/Cms/Users.php b/kirby/src/Cms/Users.php
index a308bb7..61fafd6 100755
--- a/kirby/src/Cms/Users.php
+++ b/kirby/src/Cms/Users.php
@@ -19,7 +19,6 @@ use Kirby\Toolkit\Str;
*/
class Users extends Collection
{
-
/**
* All registered users methods
*
@@ -37,7 +36,7 @@ class Users extends Collection
* an entire second collection to the
* current collection
*
- * @param mixed $item
+ * @param mixed $object
* @return self
*/
public function add($object)
@@ -51,7 +50,7 @@ class Users extends Collection
$this->__set($user->id(), $user);
// add a user object
- } elseif (is_a($object, User::class) === true) {
+ } elseif (is_a($object, 'Kirby\Cms\User') === true) {
$this->__set($object->id(), $object);
}
@@ -67,7 +66,7 @@ class Users extends Collection
*/
public static function factory(array $users, array $inject = [])
{
- $collection = new static;
+ $collection = new static();
// read all user blueprints
foreach ($users as $props) {
@@ -82,7 +81,7 @@ class Users extends Collection
* Finds a user in the collection by id or email address
*
* @param string $key
- * @return Kirby\Cms\User|null
+ * @return \Kirby\Cms\User|null
*/
public function findByKey(string $key)
{
@@ -102,7 +101,7 @@ class Users extends Collection
*/
public static function load(string $root, array $inject = [])
{
- $users = new static;
+ $users = new static();
foreach (Dir::read($root) as $userDirectory) {
if (is_dir($root . '/' . $userDirectory) === false) {
diff --git a/kirby/src/Cms/Visitor.php b/kirby/src/Cms/Visitor.php
index a4ef7b1..19eeeb0 100755
--- a/kirby/src/Cms/Visitor.php
+++ b/kirby/src/Cms/Visitor.php
@@ -16,7 +16,7 @@ use Kirby\Toolkit\Facade;
class Visitor extends Facade
{
/**
- * @return Kirby\Http\Visitor
+ * @return \Kirby\Http\Visitor
*/
public static function instance()
{
diff --git a/kirby/src/Data/Data.php b/kirby/src/Data/Data.php
index 5149cda..eadc9fb 100755
--- a/kirby/src/Data/Data.php
+++ b/kirby/src/Data/Data.php
@@ -24,7 +24,6 @@ use Kirby\Toolkit\F;
*/
class Data
{
-
/**
* Handler Type Aliases
*
@@ -52,7 +51,7 @@ class Data
* Handler getter
*
* @param string $type
- * @return Kirby\Data\Handler
+ * @return \Kirby\Data\Handler
*/
public static function handler(string $type)
{
@@ -65,7 +64,7 @@ class Data
null;
if (class_exists($handler)) {
- return new $handler;
+ return new $handler();
}
throw new Exception('Missing handler for type: "' . $type . '"');
diff --git a/kirby/src/Data/Handler.php b/kirby/src/Data/Handler.php
index 803f384..d47bf57 100755
--- a/kirby/src/Data/Handler.php
+++ b/kirby/src/Data/Handler.php
@@ -18,7 +18,6 @@ use Kirby\Toolkit\F;
*/
abstract class Handler
{
-
/**
* Parses an encoded string and returns a multi-dimensional array
*
@@ -55,6 +54,7 @@ abstract class Handler
/**
* Writes data to a file
*
+ * @param string $file
* @param array $data
* @return boolean
*/
diff --git a/kirby/src/Data/Json.php b/kirby/src/Data/Json.php
index 2f37f6b..8eb553e 100755
--- a/kirby/src/Data/Json.php
+++ b/kirby/src/Data/Json.php
@@ -15,7 +15,6 @@ use Exception;
*/
class Json extends Handler
{
-
/**
* Converts an array to an encoded JSON string
*
@@ -24,13 +23,13 @@ class Json extends Handler
*/
public static function encode($data): string
{
- return json_encode($data);
+ return json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
}
/**
* Parses an encoded JSON string and returns a multi-dimensional array
*
- * @param string $string
+ * @param string $json
* @return array
*/
public static function decode($json): array
diff --git a/kirby/src/Data/PHP.php b/kirby/src/Data/PHP.php
index b36d359..7251e3b 100755
--- a/kirby/src/Data/PHP.php
+++ b/kirby/src/Data/PHP.php
@@ -16,7 +16,6 @@ use Kirby\Toolkit\F;
*/
class PHP extends Handler
{
-
/**
* Converts an array to PHP file content
*
@@ -35,7 +34,7 @@ class PHP extends Handler
$array[] = "$indent " . ($indexed ? '' : static::encode($key) . ' => ') . static::encode($value, "$indent ");
}
- return "[\n" . implode(",\n", $array) . "\n" . $indent . "]";
+ return "[\n" . implode(",\n", $array) . "\n" . $indent . ']';
case 'boolean':
return $data ? 'true' : 'false';
case 'int':
@@ -75,6 +74,7 @@ class PHP extends Handler
/**
* Creates a PHP file with the given data
*
+ * @param string $file
* @param array $data
* @return boolean
*/
diff --git a/kirby/src/Data/Txt.php b/kirby/src/Data/Txt.php
index 82e982b..3d8e744 100755
--- a/kirby/src/Data/Txt.php
+++ b/kirby/src/Data/Txt.php
@@ -15,7 +15,6 @@ use Kirby\Toolkit\Str;
*/
class Txt extends Handler
{
-
/**
* Converts an array to an encoded Kirby txt string
*
diff --git a/kirby/src/Data/Yaml.php b/kirby/src/Data/Yaml.php
index 81ef4f5..2e7cda2 100755
--- a/kirby/src/Data/Yaml.php
+++ b/kirby/src/Data/Yaml.php
@@ -16,7 +16,6 @@ use Spyc;
*/
class Yaml extends Handler
{
-
/**
* Converts an array to an encoded YAML string
*
@@ -43,7 +42,7 @@ class Yaml extends Handler
/**
* Parses an encoded YAML string and returns a multi-dimensional array
*
- * @param string $string
+ * @param string $yaml
* @return array
*/
public static function decode($yaml): array
diff --git a/kirby/src/Database/Database.php b/kirby/src/Database/Database.php
index be4b2ff..30bd1f7 100755
--- a/kirby/src/Database/Database.php
+++ b/kirby/src/Database/Database.php
@@ -21,7 +21,6 @@ use Throwable;
*/
class Database
{
-
/**
* The number of affected rows for the last query
*
@@ -180,7 +179,7 @@ class Database
* Connects to a database
*
* @param array|null $params This can either be a config key or an array of parameters for the connection
- * @return Kirby\Database\Database
+ * @return \Kirby\Database\Database
*/
public function connect(array $params = null)
{
@@ -223,7 +222,7 @@ class Database
/**
* Returns the currently active connection
*
- * @return Kirby\Database\Database|null
+ * @return \Kirby\Database\Database|null
*/
public function connection()
{
@@ -234,7 +233,7 @@ class Database
* Sets the exception mode for the next query
*
* @param boolean $fail
- * @return Kirby\Database\Database
+ * @return \Kirby\Database\Database
*/
public function fail(bool $fail = true)
{
@@ -467,7 +466,7 @@ class Database
* Returns the correct Sql generator instance
* for the type of database
*
- * @return Kirby\Database\Sql
+ * @return \Kirby\Database\Sql
*/
public function sql()
{
@@ -481,7 +480,7 @@ class Database
* for that table
*
* @param string $table
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function table(string $table)
{
@@ -579,6 +578,9 @@ class Database
* Magic way to start queries for tables by
* using a method named like the table.
* I.e. $db->users()->all()
+ *
+ * @param mixed $method
+ * @param mixed $arguments
*/
public function __call($method, $arguments = null)
{
diff --git a/kirby/src/Database/Db.php b/kirby/src/Database/Db.php
index 68fd5da..f8a7cef 100755
--- a/kirby/src/Database/Db.php
+++ b/kirby/src/Database/Db.php
@@ -36,7 +36,7 @@ class Db
* (Re)connect the database
*
* @param array $params Pass [] to use the default params from the config
- * @return Kirby\Database\Database
+ * @return \Kirby\Database\Database
*/
public static function connect(array $params = null)
{
@@ -61,7 +61,7 @@ class Db
/**
* Returns the current database connection
*
- * @return Kirby\Database\Database
+ * @return \Kirby\Database\Database
*/
public static function connection()
{
@@ -74,7 +74,7 @@ class Db
* that table.
*
* @param string $table
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public static function table($table)
{
@@ -177,12 +177,12 @@ Db::$queries['column'] = function (string $table, string $column, $where = null,
};
/**
-* Shortcut for inserting a new row into a table
-*
-* @param string $table The name of the table, which should be queried
-* @param array $values An array of values, which should be inserted
-* @return boolean
-*/
+ * Shortcut for inserting a new row into a table
+ *
+ * @param string $table The name of the table, which should be queried
+ * @param array $values An array of values, which should be inserted
+ * @return bool
+ */
Db::$queries['insert'] = function (string $table, array $values) {
return Db::table($table)->insert($values);
};
@@ -193,7 +193,7 @@ Db::$queries['insert'] = function (string $table, array $values) {
* @param string $table The name of the table, which should be queried
* @param array $values An array of values, which should be inserted
* @param mixed $where An optional where clause
- * @return boolean
+ * @return bool
*/
Db::$queries['update'] = function (string $table, array $values, $where = null) {
return Db::table($table)->where($where)->update($values);
@@ -204,7 +204,7 @@ Db::$queries['update'] = function (string $table, array $values, $where = null)
*
* @param string $table The name of the table, which should be queried
* @param mixed $where An optional where clause
- * @return boolean
+ * @return bool
*/
Db::$queries['delete'] = function (string $table, $where = null) {
return Db::table($table)->where($where)->delete();
diff --git a/kirby/src/Database/Query.php b/kirby/src/Database/Query.php
index 6bf776f..660044f 100755
--- a/kirby/src/Database/Query.php
+++ b/kirby/src/Database/Query.php
@@ -150,7 +150,7 @@ class Query
/**
* Constructor
*
- * @param Kirby\Database\Database $database Database object
+ * @param \Kirby\Database\Database $database Database object
* @param string $table Optional name of the table, which should be queried
*/
public function __construct(Database $database, string $table)
@@ -185,7 +185,7 @@ class Query
* the query instead of actually executing the query and returning results
*
* @param boolean $debug
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function debug(bool $debug = true)
{
@@ -197,7 +197,7 @@ class Query
* Enables distinct select clauses.
*
* @param boolean $distinct
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function distinct(bool $distinct = true)
{
@@ -210,7 +210,7 @@ class Query
* If enabled queries will no longer fail silently but throw an exception
*
* @param boolean $fail
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function fail(bool $fail = true)
{
@@ -223,7 +223,7 @@ class Query
* Set this to array to get a simple array instead of an object
*
* @param string $fetch
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function fetch(string $fetch)
{
@@ -236,7 +236,7 @@ class Query
* Set this to array to get a simple array instead of an iterator object
*
* @param string $iterator
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function iterator(string $iterator)
{
@@ -245,11 +245,11 @@ class Query
}
/**
- * Sets the name of the table, which should be queried
- *
- * @param string $table
- * @return Kirby\Database\Query
- */
+ * Sets the name of the table, which should be queried
+ *
+ * @param string $table
+ * @return \Kirby\Database\Query
+ */
public function table(string $table)
{
if ($this->database->validateTable($table) === false) {
@@ -264,7 +264,7 @@ class Query
* Sets the name of the primary key column
*
* @param string $primaryKeyName
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function primaryKeyName(string $primaryKeyName)
{
@@ -277,7 +277,7 @@ class Query
* By default all columns will be selected
*
* @param mixed $select Pass either a string of columns or an array
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function select($select)
{
@@ -310,7 +310,7 @@ class Query
*
* @param string $table Name of the table, which should be joined
* @param string $on The on clause for this join
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function leftJoin(string $table, string $on)
{
@@ -322,7 +322,7 @@ class Query
*
* @param string $table Name of the table, which should be joined
* @param string $on The on clause for this join
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function rightJoin(string $table, string $on)
{
@@ -334,7 +334,7 @@ class Query
*
* @param string $table Name of the table, which should be joined
* @param string $on The on clause for this join
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function innerJoin($table, $on)
{
@@ -345,7 +345,7 @@ class Query
* Sets the values which should be used for the update or insert clause
*
* @param mixed $values Can either be a string or an array of values
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function values($values = [])
{
@@ -383,8 +383,8 @@ class Query
* ->where('username like ?', 'myuser') (args: 2)
* ->where('username', 'like', 'myuser'); (args: 3)
*
- * @param list
- * @return Kirby\Database\Query
+ * @param mixed ...$args
+ * @return \Kirby\Database\Query
*/
public function where(...$args)
{
@@ -396,8 +396,8 @@ class Query
* Shortcut to attach a where clause with an OR operator.
* Check out the where() method docs for additional info.
*
- * @param list
- * @return Kirby\Database\Query
+ * @param mixed ...$args
+ * @return \Kirby\Database\Query
*/
public function orWhere(...$args)
{
@@ -420,8 +420,8 @@ class Query
* Shortcut to attach a where clause with an AND operator.
* Check out the where() method docs for additional info.
*
- * @param list
- * @return Kirby\Database\Query
+ * @param mixed ...$args
+ * @return \Kirby\Database\Query
*/
public function andWhere(...$args)
{
@@ -441,11 +441,11 @@ class Query
}
/**
- * Attaches a group by clause
- *
- * @param string $group
- * @return Kirby\Database\Query
- */
+ * Attaches a group by clause
+ *
+ * @param string $group
+ * @return \Kirby\Database\Query
+ */
public function group(string $group = null)
{
$this->group = $group;
@@ -463,8 +463,8 @@ class Query
* ->having('username like ?', 'myuser') (args: 2)
* ->having('username', 'like', 'myuser'); (args: 3)
*
- * @param list
- * @return Kirby\Database\Query
+ * @param mixed ...$args
+ * @return \Kirby\Database\Query
*/
public function having(...$args)
{
@@ -476,7 +476,7 @@ class Query
* Attaches an order clause
*
* @param string $order
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function order(string $order = null)
{
@@ -488,7 +488,7 @@ class Query
* Sets the offset for select clauses
*
* @param int $offset
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function offset(int $offset = null)
{
@@ -500,7 +500,7 @@ class Query
* Sets the limit for select clauses
*
* @param int $limit
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function limit(int $limit = null)
{
@@ -559,7 +559,7 @@ class Query
/**
* Builds a count query
*
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function count()
{
@@ -570,7 +570,7 @@ class Query
* Builds a max query
*
* @param string $column
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function max(string $column)
{
@@ -581,7 +581,7 @@ class Query
* Builds a min query
*
* @param string $column
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function min(string $column)
{
@@ -592,7 +592,7 @@ class Query
* Builds a sum query
*
* @param string $column
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function sum(string $column)
{
@@ -603,7 +603,7 @@ class Query
* Builds an average query
*
* @param string $column
- * @return Kirby\Database\Query
+ * @return \Kirby\Database\Query
*/
public function avg(string $column)
{
@@ -815,7 +815,7 @@ class Query
$sql = $this->database->sql();
$primaryKey = $sql->combineIdentifier($this->table, $this->primaryKeyName);
- $results = $this->query($this->select(array($column))->order($primaryKey . ' ASC')->build('select'), [
+ $results = $this->query($this->select([$column])->order($primaryKey . ' ASC')->build('select'), [
'iterator' => 'array',
'fetch' => 'array',
]);
diff --git a/kirby/src/Database/Sql.php b/kirby/src/Database/Sql.php
index 56ed5cb..5bd0a3f 100755
--- a/kirby/src/Database/Sql.php
+++ b/kirby/src/Database/Sql.php
@@ -2,7 +2,6 @@
namespace Kirby\Database;
-use Closure;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Toolkit\A;
use Kirby\Toolkit\Str;
@@ -18,7 +17,6 @@ use Kirby\Toolkit\Str;
*/
class Sql
{
-
/**
* List of literals which should not be escaped in queries
*
@@ -36,7 +34,7 @@ class Sql
/**
* Constructor
*
- * @param Kirby\Database\Database $database
+ * @param \Kirby\Database\Database $database
*/
public function __construct($database)
{
@@ -464,7 +462,7 @@ class Sql
/**
* Create the syntax for multiple joins
*
- * @params array $joins
+ * @param array $joins
* @return array
*/
public function joins(array $joins = null): array
@@ -677,11 +675,11 @@ class Sql
switch (count($parts)) {
// non-qualified identifier
case 1:
- return array($table, $this->unquoteIdentifier($parts[0]));
+ return [$table, $this->unquoteIdentifier($parts[0])];
// qualified identifier
case 2:
- return array($this->unquoteIdentifier($parts[0]), $this->unquoteIdentifier($parts[1]));
+ return [$this->unquoteIdentifier($parts[0]), $this->unquoteIdentifier($parts[1])];
// every other number is an error
default:
diff --git a/kirby/src/Database/Sql/Sqlite.php b/kirby/src/Database/Sql/Sqlite.php
index c80ba06..842aa80 100755
--- a/kirby/src/Database/Sql/Sqlite.php
+++ b/kirby/src/Database/Sql/Sqlite.php
@@ -15,7 +15,6 @@ use Kirby\Database\Sql;
*/
class Sqlite extends Sql
{
-
/**
* Returns a list of columns for a specified table
* SQLite version
diff --git a/kirby/src/Email/Body.php b/kirby/src/Email/Body.php
index 2a156c4..bf557e7 100755
--- a/kirby/src/Email/Body.php
+++ b/kirby/src/Email/Body.php
@@ -14,7 +14,7 @@ use Kirby\Toolkit\Properties;
* @link https://getkirby.com
* @copyright Bastian Allgeier GmbH
* @license https://opensource.org/licenses/MIT
-*/
+ */
class Body
{
use Properties;
diff --git a/kirby/src/Email/Email.php b/kirby/src/Email/Email.php
index f9037da..13633b6 100755
--- a/kirby/src/Email/Email.php
+++ b/kirby/src/Email/Email.php
@@ -2,11 +2,10 @@
namespace Kirby\Email;
+use Exception;
use Kirby\Toolkit\Properties;
use Kirby\Toolkit\V;
-use Exception;
-
/**
* Wrapper for email libraries
*
@@ -16,7 +15,7 @@ use Exception;
* @link https://getkirby.com
* @copyright Bastian Allgeier GmbH
* @license https://opensource.org/licenses/MIT
-*/
+ */
class Email
{
use Properties;
@@ -47,7 +46,7 @@ class Email
}
/**
- * @return Kirby\Email\Body
+ * @return \Kirby\Email\Body
*/
public function body()
{
diff --git a/kirby/src/Email/PHPMailer.php b/kirby/src/Email/PHPMailer.php
index c2a0a3d..9f098db 100755
--- a/kirby/src/Email/PHPMailer.php
+++ b/kirby/src/Email/PHPMailer.php
@@ -13,7 +13,7 @@ use PHPMailer\PHPMailer\PHPMailer as Mailer;
* @link https://getkirby.com
* @copyright Bastian Allgeier GmbH
* @license https://opensource.org/licenses/MIT
-*/
+ */
class PHPMailer extends Email
{
public function send(bool $debug = false): bool
diff --git a/kirby/src/Exception/Exception.php b/kirby/src/Exception/Exception.php
index 0330614..303a766 100755
--- a/kirby/src/Exception/Exception.php
+++ b/kirby/src/Exception/Exception.php
@@ -2,7 +2,6 @@
namespace Kirby\Exception;
-use Kirby\Cms\App;
use Kirby\Toolkit\I18n;
use Kirby\Toolkit\Str;
diff --git a/kirby/src/Form/Field.php b/kirby/src/Form/Field.php
index 70c0114..2d5f728 100755
--- a/kirby/src/Form/Field.php
+++ b/kirby/src/Form/Field.php
@@ -3,7 +3,6 @@
namespace Kirby\Form;
use Exception;
-use Kirby\Cms\App;
use Kirby\Cms\Model;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Toolkit\Component;
@@ -23,7 +22,6 @@ use Kirby\Toolkit\V;
*/
class Field extends Component
{
-
/**
* Registry for all component mixins
*
@@ -51,6 +49,10 @@ class Field extends Component
throw new InvalidArgumentException('The field type "' . $type . '" does not exist');
}
+ if (isset($attrs['model']) === false) {
+ throw new InvalidArgumentException('Field requires a model');
+ }
+
// use the type as fallback for the name
$attrs['name'] = $attrs['name'] ?? $type;
$attrs['type'] = $type;
@@ -71,6 +73,7 @@ class Field extends Component
}
/**
+ * @param mixed $default
* @return mixed
*/
public function data($default = false)
@@ -177,6 +180,39 @@ class Field extends Component
'value' => function ($value = null) {
return $value;
}
+ ],
+ 'computed' => [
+ 'after' => function () {
+ if ($this->after !== null) {
+ return $this->model()->toString($this->after);
+ }
+ },
+ 'before' => function () {
+ if ($this->before !== null) {
+ return $this->model()->toString($this->before);
+ }
+ },
+ 'default' => function () {
+ if ($this->default === null) {
+ return;
+ }
+
+ if (is_string($this->default) === false) {
+ return $this->default;
+ }
+
+ return $this->model()->toString($this->default);
+ },
+ 'label' => function () {
+ if ($this->label !== null) {
+ return $this->model()->toString($this->label);
+ }
+ },
+ 'placeholder' => function () {
+ if ($this->placeholder !== null) {
+ return $this->model()->toString($this->placeholder);
+ }
+ }
]
];
}
@@ -217,7 +253,7 @@ class Field extends Component
}
/**
- * @return Kirby\Cms\App
+ * @return \Kirby\Cms\App
*/
public function kirby()
{
diff --git a/kirby/src/Form/Fields.php b/kirby/src/Form/Fields.php
index c3f9c72..6908efd 100755
--- a/kirby/src/Form/Fields.php
+++ b/kirby/src/Form/Fields.php
@@ -16,14 +16,13 @@ use Kirby\Toolkit\Collection;
*/
class Fields extends Collection
{
-
/**
* Internal setter for each object in the Collection.
* This takes care of validation and of setting
* the collection prop on each object correctly.
*
- * @param string $id
- * @param object $object
+ * @param string $name
+ * @param object $field
*/
public function __set(string $name, $field)
{
diff --git a/kirby/src/Form/Form.php b/kirby/src/Form/Form.php
index 60a725d..f3847e3 100755
--- a/kirby/src/Form/Form.php
+++ b/kirby/src/Form/Form.php
@@ -2,8 +2,8 @@
namespace Kirby\Form;
-use Throwable;
use Kirby\Data\Yaml;
+use Throwable;
/**
* The main form class, that is being
@@ -37,7 +37,7 @@ class Form
unset($inject['fields'], $inject['values'], $inject['input']);
- $this->fields = new Fields;
+ $this->fields = new Fields();
$this->values = [];
foreach ($fields as $name => $props) {
diff --git a/kirby/src/Form/OptionsApi.php b/kirby/src/Form/OptionsApi.php
index 9cbee48..bed3771 100755
--- a/kirby/src/Form/OptionsApi.php
+++ b/kirby/src/Form/OptionsApi.php
@@ -4,8 +4,8 @@ namespace Kirby\Form;
use Kirby\Cms\Nest;
use Kirby\Exception\InvalidArgumentException;
-use Kirby\Toolkit\Query;
use Kirby\Toolkit\Properties;
+use Kirby\Toolkit\Query;
use Kirby\Toolkit\Str;
/**
diff --git a/kirby/src/Form/Validations.php b/kirby/src/Form/Validations.php
index fe3c584..fdc260a 100755
--- a/kirby/src/Form/Validations.php
+++ b/kirby/src/Form/Validations.php
@@ -107,6 +107,19 @@ class Validations
return true;
}
+ public static function pattern(Field $field, $value): bool
+ {
+ if ($field->isEmpty($value) === false && $field->pattern() !== null) {
+ if (V::match($value, '/' . $field->pattern() . '/i') === false) {
+ throw new InvalidArgumentException(
+ V::message('match')
+ );
+ }
+ }
+
+ return true;
+ }
+
public static function required(Field $field, $value): bool
{
if ($field->isRequired() === true && $field->save() === true && $field->isEmpty($value) === true) {
diff --git a/kirby/src/Http/Cookie.php b/kirby/src/Http/Cookie.php
index 6e1db05..8e2f03c 100755
--- a/kirby/src/Http/Cookie.php
+++ b/kirby/src/Http/Cookie.php
@@ -16,7 +16,6 @@ use Kirby\Toolkit\Str;
*/
class Cookie
{
-
/**
* Key to use for cookie signing
* @var string
diff --git a/kirby/src/Http/Header.php b/kirby/src/Http/Header.php
index 6e8c7c3..f0d7327 100755
--- a/kirby/src/Http/Header.php
+++ b/kirby/src/Http/Header.php
@@ -16,7 +16,6 @@ use Kirby\Toolkit\F;
*/
class Header
{
-
// configuration
public static $codes = [
@@ -139,7 +138,7 @@ class Header
$code = substr($code, 0, 3);
} else {
$code = array_key_exists('_' . $code, $codes) === false ? 500 : $code;
- $message = isset($codes['_' . $code]) ? $codes['_' . $code] : 'Something went wrong';
+ $message = $codes['_' . $code] ?? 'Something went wrong';
}
$header = $protocol . ' ' . $code . ' ' . $message;
@@ -302,7 +301,7 @@ class Header
header('Pragma: public');
header('Expires: 0');
- header('Last-Modified: '. gmdate('D, d M Y H:i:s', $options['modified']) . ' GMT');
+ header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $options['modified']) . ' GMT');
header('Content-Disposition: attachment; filename="' . $options['name'] . '"');
header('Content-Transfer-Encoding: binary');
diff --git a/kirby/src/Http/Idn.php b/kirby/src/Http/Idn.php
index dee1ff4..4c5dd2e 100755
--- a/kirby/src/Http/Idn.php
+++ b/kirby/src/Http/Idn.php
@@ -12,7 +12,7 @@ use TrueBV\Punycode;
* @link https://getkirby.com
* @copyright Bastian Allgeier GmbH
* @license https://opensource.org/licenses/MIT
-*/
+ */
class Idn
{
public static function decode(string $domain)
diff --git a/kirby/src/Http/Params.php b/kirby/src/Http/Params.php
index 343b5d0..71d7bb3 100755
--- a/kirby/src/Http/Params.php
+++ b/kirby/src/Http/Params.php
@@ -17,7 +17,6 @@ use Kirby\Toolkit\Str;
*/
class Params extends Query
{
-
/**
* @var null|string
*/
diff --git a/kirby/src/Http/Remote.php b/kirby/src/Http/Remote.php
index 9083bce..686b578 100755
--- a/kirby/src/Http/Remote.php
+++ b/kirby/src/Http/Remote.php
@@ -18,7 +18,6 @@ use Kirby\Toolkit\Str;
*/
class Remote
{
-
/**
* @var array
*/
@@ -285,7 +284,7 @@ class Remote
* Decode the response content
*
* @param bool $array decode as array or object
- * @return array|stdClass
+ * @return array|\stdClass
*/
public function json(bool $array = true)
{
diff --git a/kirby/src/Http/Request.php b/kirby/src/Http/Request.php
index e861292..7b77e8e 100755
--- a/kirby/src/Http/Request.php
+++ b/kirby/src/Http/Request.php
@@ -24,7 +24,6 @@ use Kirby\Toolkit\Str;
*/
class Request
{
-
/**
* The auth object if available
*
@@ -132,7 +131,7 @@ class Request
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return [
'body' => $this->body(),
@@ -150,13 +149,13 @@ class Request
*/
public function ajax(): bool
{
- return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest');
+ return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';
}
/**
* Returns the Auth object if authentication is set
*
- * @return Kirby\Http\Request\Auth\BasicAuth|Kirby\Http\Request\Auth\BearerAuth|null
+ * @return \Kirby\Http\Request\Auth\BasicAuth|\Kirby\Http\Request\Auth\BearerAuth|null
*/
public function auth()
{
@@ -182,7 +181,7 @@ class Request
/**
* Returns the Body object
*
- * @return Kirby\Http\Request\Body
+ * @return \Kirby\Http\Request\Body
*/
public function body()
{
@@ -244,7 +243,7 @@ class Request
/**
* Returns the Files object
*
- * @return Kirby\Cms\Files
+ * @return \Kirby\Cms\Files
*/
public function files()
{
@@ -354,7 +353,7 @@ class Request
/**
* Returns the Query object
*
- * @return Kirby\Http\Query
+ * @return \Kirby\Http\Query
*/
public function query()
{
@@ -378,7 +377,7 @@ class Request
* the original object.
*
* @param array $props
- * @return Kirby\Http\Uri
+ * @return \Kirby\Http\Uri
*/
public function url(array $props = null)
{
diff --git a/kirby/src/Http/Request/Auth/BasicAuth.php b/kirby/src/Http/Request/Auth/BasicAuth.php
index 1e5ec35..4df6e8f 100755
--- a/kirby/src/Http/Request/Auth/BasicAuth.php
+++ b/kirby/src/Http/Request/Auth/BasicAuth.php
@@ -9,7 +9,6 @@ use Kirby\Toolkit\Str;
*/
class BasicAuth extends BearerAuth
{
-
/**
* @var string
*/
diff --git a/kirby/src/Http/Request/Auth/BearerAuth.php b/kirby/src/Http/Request/Auth/BearerAuth.php
index f49a8af..2c5b1c2 100755
--- a/kirby/src/Http/Request/Auth/BearerAuth.php
+++ b/kirby/src/Http/Request/Auth/BearerAuth.php
@@ -7,7 +7,6 @@ namespace Kirby\Http\Request\Auth;
*/
class BearerAuth
{
-
/**
* @var string
*/
diff --git a/kirby/src/Http/Request/Data.php b/kirby/src/Http/Request/Data.php
index d53da74..aaf6558 100755
--- a/kirby/src/Http/Request/Data.php
+++ b/kirby/src/Http/Request/Data.php
@@ -18,13 +18,12 @@ namespace Kirby\Http\Request;
*/
trait Data
{
-
/**
* Improved `var_dump` output
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->toArray();
}
diff --git a/kirby/src/Http/Response.php b/kirby/src/Http/Response.php
index 05de816..1c9d309 100755
--- a/kirby/src/Http/Response.php
+++ b/kirby/src/Http/Response.php
@@ -3,9 +3,8 @@
namespace Kirby\Http;
use Exception;
-use Throwable;
-
use Kirby\Toolkit\F;
+use Throwable;
/**
* Representation of an Http response,
@@ -20,7 +19,6 @@ use Kirby\Toolkit\F;
*/
class Response
{
-
/**
* Store for all registered headers,
* which will be sent with the response
@@ -63,6 +61,8 @@ class Response
* @param string $body
* @param string $type
* @param integer $code
+ * @param array $headers
+ * @param string $charset
*/
public function __construct($body = '', ?string $type = null, ?int $code = null, ?array $headers = null, ?string $charset = null)
{
@@ -94,7 +94,7 @@ class Response
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->toArray();
}
@@ -183,6 +183,7 @@ class Response
* Creates a response for a file and
* sends the file content to the browser
*
+ * @param string $file
* @return self
*/
public static function file(string $file)
diff --git a/kirby/src/Http/Route.php b/kirby/src/Http/Route.php
index 13c60c6..7f5c33e 100755
--- a/kirby/src/Http/Route.php
+++ b/kirby/src/Http/Route.php
@@ -13,7 +13,6 @@ use Closure;
*/
class Route
{
-
/**
* The callback action function
*
@@ -92,6 +91,7 @@ class Route
* @param string|array $pattern
* @param string|array $method
* @param Closure $action
+ * @param array $attributes
*/
public function __construct($pattern, $method = 'GET', Closure $action, array $attributes = [])
{
diff --git a/kirby/src/Http/Router.php b/kirby/src/Http/Router.php
index a5b99c9..7a71fb1 100755
--- a/kirby/src/Http/Router.php
+++ b/kirby/src/Http/Router.php
@@ -129,7 +129,7 @@ class Router
* @param string $path
* @param string $method
* @param array $ignore
- * @return Kirby\Http\Route|null
+ * @return \Kirby\Http\Route|null
*/
public function find(string $path, string $method, array $ignore = null)
{
@@ -159,7 +159,7 @@ class Router
* once Router::find() has been called
* and only if a route was found.
*
- * @return Kirby\Http\Route|null
+ * @return \Kirby\Http\Route|null
*/
public function route()
{
diff --git a/kirby/src/Http/Server.php b/kirby/src/Http/Server.php
index 39f53a3..132f474 100755
--- a/kirby/src/Http/Server.php
+++ b/kirby/src/Http/Server.php
@@ -14,7 +14,6 @@ namespace Kirby\Http;
*/
class Server
{
-
/**
* Cache for the cli status
*
@@ -105,7 +104,7 @@ class Server
break;
case 'SERVER_PORT':
case 'HTTP_X_FORWARDED_PORT':
- $value = intval(preg_replace('![^0-9]+!', '', $value));
+ $value = (int)(preg_replace('![^0-9]+!', '', $value));
break;
}
diff --git a/kirby/src/Http/Uri.php b/kirby/src/Http/Uri.php
index 7aed424..ab46bea 100755
--- a/kirby/src/Http/Uri.php
+++ b/kirby/src/Http/Uri.php
@@ -2,9 +2,9 @@
namespace Kirby\Http;
-use Throwable;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Toolkit\Properties;
+use Throwable;
/**
* Uri builder class
@@ -393,7 +393,7 @@ class Uri
}
/**
- * @param Kirby\Http\Params|string|array|null $path
+ * @param Kirby\Http\Params|string|array|null $params
* @return self
*/
public function setParams($params = null)
@@ -413,7 +413,7 @@ class Uri
}
/**
- * @param Kirby\Http\Path|string|array|null $path
+ * @param \Kirby\Http\Path|string|array|null $path
* @return self
*/
public function setPath($path = null)
@@ -423,7 +423,7 @@ class Uri
}
/**
- * @param int|null $port
+ * @param int|null $port
* @return self
*/
public function setPort(int $port = null)
@@ -443,7 +443,7 @@ class Uri
}
/**
- * @param Kirby\Http\Query|string|array|null $query
+ * @param \Kirby\Http\Query|string|array|null $query
* @return self
*/
public function setQuery($query = null)
diff --git a/kirby/src/Http/Url.php b/kirby/src/Http/Url.php
index 0eb65ea..fd3396e 100755
--- a/kirby/src/Http/Url.php
+++ b/kirby/src/Http/Url.php
@@ -15,7 +15,6 @@ use Kirby\Toolkit\Str;
*/
class Url
{
-
/**
* The base Url to build absolute Urls from
*
@@ -112,6 +111,7 @@ class Url
/**
* Checks if an URL is absolute
*
+ * @param string $url
* @return boolean
*/
public static function isAbsolute(string $url = null): bool
@@ -278,7 +278,7 @@ class Url
* Converts the Url to a Uri object
*
* @param string $url
- * @return Kirby\Http\Uri
+ * @return \Kirby\Http\Uri
*/
public static function toObject($url = null)
{
diff --git a/kirby/src/Http/Visitor.php b/kirby/src/Http/Visitor.php
index 564770a..a9204ee 100755
--- a/kirby/src/Http/Visitor.php
+++ b/kirby/src/Http/Visitor.php
@@ -17,10 +17,9 @@ use Kirby\Toolkit\Str;
* @link https://getkirby.com
* @copyright Bastian Allgeier GmbH
* @license https://opensource.org/licenses/MIT
-*/
+ */
class Visitor
{
-
/**
* IP address
* @var string|null
@@ -68,7 +67,7 @@ class Visitor
* accepted language otherwise
*
* @param string|null $acceptedLanguage
- * @return Kirby\Toolkit\Obj|Kirby\Http\Visitor|null
+ * @return \Kirby\Toolkit\Obj|\Kirby\Http\Visitor|null
*/
public function acceptedLanguage(string $acceptedLanguage = null)
{
@@ -84,7 +83,7 @@ class Visitor
* Returns an array of all accepted languages
* including their quality and locale
*
- * @return Kirby\Toolkit\Collection
+ * @return \Kirby\Toolkit\Collection
*/
public function acceptedLanguages()
{
@@ -135,7 +134,7 @@ class Visitor
* accepted mime type otherwise
*
* @param string|null $acceptedMimeType
- * @return Kirby\Toolkit\Obj|Kirby\Http\Visitor
+ * @return \Kirby\Toolkit\Obj|\Kirby\Http\Visitor
*/
public function acceptedMimeType(string $acceptedMimeType = null)
{
@@ -150,7 +149,7 @@ class Visitor
/**
* Returns a collection of all accepted mime types
*
- * @return Kirby\Toolkit\Collection
+ * @return \Kirby\Toolkit\Collection
*/
public function acceptedMimeTypes()
{
diff --git a/kirby/src/Image/Camera.php b/kirby/src/Image/Camera.php
index 4821bab..a59e4d9 100755
--- a/kirby/src/Image/Camera.php
+++ b/kirby/src/Image/Camera.php
@@ -13,7 +13,6 @@ namespace Kirby\Image;
*/
class Camera
{
-
/**
* Make exif data
*
@@ -87,7 +86,7 @@ class Camera
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->toArray();
}
diff --git a/kirby/src/Image/Darkroom/GdLib.php b/kirby/src/Image/Darkroom/GdLib.php
index 6cffb7e..3d9b08c 100755
--- a/kirby/src/Image/Darkroom/GdLib.php
+++ b/kirby/src/Image/Darkroom/GdLib.php
@@ -4,7 +4,6 @@ namespace Kirby\Image\Darkroom;
ini_set('memory_limit', '512M');
-use Exception;
use claviska\SimpleImage;
use Kirby\Image\Darkroom;
diff --git a/kirby/src/Image/Dimensions.php b/kirby/src/Image/Dimensions.php
index ee8ed4b..cd82014 100755
--- a/kirby/src/Image/Dimensions.php
+++ b/kirby/src/Image/Dimensions.php
@@ -16,7 +16,6 @@ namespace Kirby\Image;
*/
class Dimensions
{
-
/**
* the height of the parent object
*
@@ -48,7 +47,7 @@ class Dimensions
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->toArray();
}
@@ -178,7 +177,7 @@ class Dimensions
* @param bool $force If true, the dimensions will be
* upscaled to fit the box if smaller
* @return self object with recalculated dimensions
- */
+ */
protected function fitSize(string $ref, int $fit = null, bool $force = false)
{
if ($fit === 0 || $fit === null) {
@@ -217,7 +216,7 @@ class Dimensions
* @param bool $force If true, the dimensions will be
* upscaled to fit the box if smaller
* @return self object with recalculated dimensions
- */
+ */
public function fitWidth(int $fit = null, bool $force = false)
{
return $this->fitSize('width', $fit, $force);
@@ -286,12 +285,12 @@ class Dimensions
if ($xml !== false) {
$attr = $xml->attributes();
- $width = floatval($attr->width);
- $height = floatval($attr->height);
+ $width = (float)($attr->width);
+ $height = (float)($attr->height);
if (($width === 0.0 || $height === 0.0) && empty($attr->viewBox) === false) {
$box = explode(' ', $attr->viewBox);
- $width = floatval($box[2] ?? 0);
- $height = floatval($box[3] ?? 0);
+ $width = (float)($box[2] ?? 0);
+ $height = (float)($box[3] ?? 0);
}
}
@@ -356,7 +355,7 @@ class Dimensions
public function ratio(): float
{
if ($this->width !== 0 && $this->height !== 0) {
- return ($this->width / $this->height);
+ return $this->width / $this->height;
}
return 0;
@@ -386,7 +385,7 @@ class Dimensions
/**
* Resize and crop
*
- * @params array $options
+ * @param array $options
* @return self
*/
public function thumb(array $options = [])
diff --git a/kirby/src/Image/Exif.php b/kirby/src/Image/Exif.php
index 3fa8930..ef8393a 100755
--- a/kirby/src/Image/Exif.php
+++ b/kirby/src/Image/Exif.php
@@ -15,7 +15,6 @@ use Kirby\Toolkit\V;
*/
class Exif
{
-
/**
* the parent image object
* @var Image
@@ -84,7 +83,7 @@ class Exif
/**
* Constructor
*
- * @param Kirby\Image\Image $image
+ * @param \Kirby\Image\Image $image
*/
public function __construct(Image $image)
{
@@ -106,7 +105,7 @@ class Exif
/**
* Returns the Camera object
*
- * @return Kirby\Image\Camera|null
+ * @return \Kirby\Image\Camera|null
*/
public function camera()
{
@@ -120,7 +119,7 @@ class Exif
/**
* Returns the location object
*
- * @return Kirby\Image\Location|null
+ * @return \Kirby\Image\Location|null
*/
public function location()
{
@@ -287,7 +286,7 @@ class Exif
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return array_merge($this->toArray(), [
'camera' => $this->camera(),
diff --git a/kirby/src/Image/Image.php b/kirby/src/Image/Image.php
index a52464b..2c30272 100755
--- a/kirby/src/Image/Image.php
+++ b/kirby/src/Image/Image.php
@@ -7,7 +7,6 @@ use Kirby\Http\Response;
use Kirby\Toolkit\File;
use Kirby\Toolkit\Html;
use Kirby\Toolkit\Mime;
-use Kirby\Toolkit\Str;
use Kirby\Toolkit\V;
/**
@@ -21,10 +20,9 @@ use Kirby\Toolkit\V;
* @link https://getkirby.com
* @copyright Bastian Allgeier GmbH
* @license https://opensource.org/licenses/MIT
-*/
+ */
class Image extends File
{
-
/**
* optional url where the file is reachable
* @var string
@@ -58,7 +56,7 @@ class Image extends File
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return array_merge($this->toArray(), [
'dimensions' => $this->dimensions(),
@@ -80,7 +78,7 @@ class Image extends File
/**
* Returns the dimensions of the file if possible
*
- * @return Kirby\Image\Dimensions
+ * @return \Kirby\Image\Dimensions
*/
public function dimensions()
{
@@ -114,7 +112,7 @@ class Image extends File
/**
* Returns the exif object for this file (if image)
*
- * @return Kirby\Image\Exif
+ * @return \Kirby\Image\Exif
*/
public function exif()
{
@@ -129,7 +127,7 @@ class Image extends File
* Sends an appropriate header for the asset
*
* @param boolean $send
- * @return Kirby\Http\Response|string
+ * @return \Kirby\Http\Response|string
*/
public function header(bool $send = true)
{
@@ -200,6 +198,7 @@ class Image extends File
/**
* Runs a set of validations on the image object
*
+ * @param array $rules
* @return bool
*/
public function match(array $rules): bool
diff --git a/kirby/src/Image/Location.php b/kirby/src/Image/Location.php
index 2c2e5f8..3b02735 100755
--- a/kirby/src/Image/Location.php
+++ b/kirby/src/Image/Location.php
@@ -14,7 +14,6 @@ namespace Kirby\Image;
*/
class Location
{
-
/**
* latitude
*
@@ -99,7 +98,7 @@ class Location
return $parts[0];
}
- return floatval($parts[0]) / floatval($parts[1]);
+ return (float)($parts[0]) / (float)($parts[1]);
}
/**
@@ -130,7 +129,7 @@ class Location
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->toArray();
}
diff --git a/kirby/src/Session/AutoSession.php b/kirby/src/Session/AutoSession.php
index e26c071..82c9c8e 100755
--- a/kirby/src/Session/AutoSession.php
+++ b/kirby/src/Session/AutoSession.php
@@ -21,7 +21,7 @@ class AutoSession
/**
* Creates a new AutoSession instance
*
- * @param Kirby\Session\SessionStore|string $store SessionStore object or a path to the storage directory (uses the FileSessionStore)
+ * @param \Kirby\Session\SessionStore|string $store SessionStore object or a path to the storage directory (uses the FileSessionStore)
* @param array $options Optional additional options:
* - `durationNormal`: Duration of normal sessions in seconds
* Defaults to 2 hours
@@ -34,7 +34,6 @@ class AutoSession
* Defaults to `kirby_session`
* - `gcInterval`: How often should the garbage collector be run?
* Integer or `false` for never; defaults to `100`
- *
*/
public function __construct($store, array $options = [])
{
@@ -66,7 +65,7 @@ class AutoSession
* Defaults to `cookie`
* - `long`: Whether the session is a long "remember me" session or a normal session
* Defaults to `false`
- * @return Kirby\Session\Session
+ * @return \Kirby\Session\Session
*/
public function get(array $options = [])
{
@@ -149,7 +148,7 @@ class AutoSession
* Defaults to `1800` (half an hour)
* - `renewable`: Should it be possible to extend the expiry date?
* Defaults to `true`
- * @return Kirby\Session\Session
+ * @return \Kirby\Session\Session
*/
public function createManually(array $options = [])
{
diff --git a/kirby/src/Session/Session.php b/kirby/src/Session/Session.php
index 988dbe9..cfd99a5 100755
--- a/kirby/src/Session/Session.php
+++ b/kirby/src/Session/Session.php
@@ -2,7 +2,6 @@
namespace Kirby\Session;
-use Throwable;
use Kirby\Exception\BadMethodCallException;
use Kirby\Exception\Exception;
use Kirby\Exception\InvalidArgumentException;
@@ -11,6 +10,7 @@ use Kirby\Exception\NotFoundException;
use Kirby\Http\Cookie;
use Kirby\Http\Url;
use Kirby\Toolkit\Str;
+use Throwable;
/**
* @package Kirby Session
@@ -49,7 +49,7 @@ class Session
/**
* Creates a new Session instance
*
- * @param Kirby\Session\Sessions $sessions Parent sessions object
+ * @param \Kirby\Session\Sessions $sessions Parent sessions object
* @param string|null $token Session token or null for a new session
* @param array $options Optional additional options:
* - `mode`: Token transmission mode (cookie or manual)
@@ -305,7 +305,7 @@ class Session
/**
* Returns the session data object
*
- * @return Kirby\Session\SessionData
+ * @return \Kirby\Session\SessionData
*/
public function data()
{
@@ -719,7 +719,7 @@ class Session
$this->renewable = $data['renewable'];
// reload data into existing object to avoid breaking memory references
- if (is_a($this->data, SessionData::class)) {
+ if (is_a($this->data, 'Kirby\Session\SessionData')) {
$this->data()->reload($data['data']);
} else {
$this->data = new SessionData($this, $data['data']);
diff --git a/kirby/src/Session/SessionData.php b/kirby/src/Session/SessionData.php
index 7675605..37acadd 100755
--- a/kirby/src/Session/SessionData.php
+++ b/kirby/src/Session/SessionData.php
@@ -25,8 +25,8 @@ class SessionData
* Creates a new SessionData instance
*
* @codeCoverageIgnore
- * @param Kirby\Session\Session $session Session object this data belongs to
- * @param array $data Currently stored session data
+ * @param \Kirby\Session\Session $session Session object this data belongs to
+ * @param array $data Currently stored session data
*/
public function __construct(Session $session, array $data)
{
diff --git a/kirby/src/Session/Sessions.php b/kirby/src/Session/Sessions.php
index 813b90d..8f53ce9 100755
--- a/kirby/src/Session/Sessions.php
+++ b/kirby/src/Session/Sessions.php
@@ -2,13 +2,13 @@
namespace Kirby\Session;
-use Throwable;
use Kirby\Exception\Exception;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Exception\LogicException;
use Kirby\Http\Cookie;
use Kirby\Http\Request;
use Kirby\Toolkit\Str;
+use Throwable;
/**
* Sessions - Base class for all session fiddling
@@ -30,7 +30,7 @@ class Sessions
/**
* Creates a new Sessions instance
*
- * @param Kirby\Session\SessionStore|string $store SessionStore object or a path to the storage directory (uses the FileSessionStore)
+ * @param \Kirby\Session\SessionStore|string $store SessionStore object or a path to the storage directory (uses the FileSessionStore)
* @param array $options Optional additional options:
* - `mode`: Default token transmission mode (cookie, header or manual)
* Defaults to `cookie`
@@ -38,7 +38,6 @@ class Sessions
* Defaults to `kirby_session`
* - `gcInterval`: How often should the garbage collector be run?
* Integer or `false` for never; defaults to `100`
- *
*/
public function __construct($store, array $options = [])
{
@@ -105,7 +104,7 @@ class Sessions
* Defaults to `1800` (half an hour)
* - `renewable`: Should it be possible to extend the expiry date?
* Defaults to `true`
- * @return Kirby\Session\Session
+ * @return \Kirby\Session\Session
*/
public function create(array $options = [])
{
@@ -122,7 +121,7 @@ class Sessions
*
* @param string $token Session token, either including or without the key
* @param string $mode Optional transmission mode override
- * @return Kirby\Session\Session
+ * @return \Kirby\Session\Session
*/
public function get(string $token, string $mode = null)
{
@@ -139,7 +138,7 @@ class Sessions
* - In `header` mode: Gets the session from the `Authorization` request header
* - In `manual` mode: Fails and throws an Exception
*
- * @return Kirby\Session\Session|null Either the current session or null in case there isn't one
+ * @return \Kirby\Session\Session|null Either the current session or null in case there isn't one
*/
public function current()
{
@@ -183,7 +182,7 @@ class Sessions
* - Tries to get the session from the cookie
* - Otherwise returns null
*
- * @return Kirby\Session\Session|null Either the current session or null in case there isn't one
+ * @return \Kirby\Session\Session|null Either the current session or null in case there isn't one
*/
public function currentDetected()
{
@@ -211,7 +210,7 @@ class Sessions
* Getter for the session store instance
* Used internally
*
- * @return Kirby\Session\SessionStore
+ * @return \Kirby\Session\SessionStore
*/
public function store()
{
@@ -247,7 +246,7 @@ class Sessions
* session or a session with a regenerated token
*
* @internal
- * @param Kirby\Session\Session $session Session instance to push to the cache
+ * @param \Kirby\Session\Session $session Session instance to push to the cache
*/
public function updateCache(Session $session)
{
diff --git a/kirby/src/Text/KirbyTag.php b/kirby/src/Text/KirbyTag.php
index fd4669f..60634aa 100755
--- a/kirby/src/Text/KirbyTag.php
+++ b/kirby/src/Text/KirbyTag.php
@@ -2,9 +2,8 @@
namespace Kirby\Text;
-use Closure;
-use Kirby\Exception\InvalidArgumentException;
use Kirby\Exception\BadMethodCallException;
+use Kirby\Exception\InvalidArgumentException;
/**
* Representation and parse of a single KirbyTag.
@@ -129,7 +128,7 @@ class KirbyTag
{
$callback = static::$types[$this->type]['html'] ?? null;
- if (is_a($callback, Closure::class) === true) {
+ if (is_a($callback, 'Closure') === true) {
return (string)$callback($this);
}
diff --git a/kirby/src/Text/KirbyTags.php b/kirby/src/Text/KirbyTags.php
index 690647b..08feffc 100755
--- a/kirby/src/Text/KirbyTags.php
+++ b/kirby/src/Text/KirbyTags.php
@@ -18,7 +18,7 @@ use Exception;
*/
class KirbyTags
{
- protected static $tagClass = KirbyTag::class;
+ protected static $tagClass = 'Kirby\Text\KirbyTag';
public static function parse(string $text = null, array $data = [], array $options = []): string
{
diff --git a/kirby/src/Text/Markdown.php b/kirby/src/Text/Markdown.php
index 7ae1cb2..db3814f 100755
--- a/kirby/src/Text/Markdown.php
+++ b/kirby/src/Text/Markdown.php
@@ -20,7 +20,6 @@ use ParsedownExtra;
*/
class Markdown
{
-
/**
* Array with all configured options
* for the parser
@@ -64,9 +63,9 @@ class Markdown
public function parse(string $text, bool $inline = false): string
{
if ($this->options['extra'] === true) {
- $parser = new ParsedownExtra;
+ $parser = new ParsedownExtra();
} else {
- $parser = new Parsedown;
+ $parser = new Parsedown();
}
$parser->setBreaksEnabled($this->options['breaks']);
diff --git a/kirby/src/Text/SmartyPants.php b/kirby/src/Text/SmartyPants.php
index 61279cb..3c6374a 100755
--- a/kirby/src/Text/SmartyPants.php
+++ b/kirby/src/Text/SmartyPants.php
@@ -18,7 +18,6 @@ use Michelf\SmartyPantsTypographer;
*/
class SmartyPants
{
-
/**
* Array with all configured options
* for the parser
diff --git a/kirby/src/Toolkit/A.php b/kirby/src/Toolkit/A.php
index 68a2af5..ba15bd4 100755
--- a/kirby/src/Toolkit/A.php
+++ b/kirby/src/Toolkit/A.php
@@ -19,7 +19,6 @@ use Exception;
*/
class A
{
-
/**
* Appends the given array
*
@@ -112,6 +111,8 @@ class A
}
/**
+ * @param mixed $value
+ * @param mixed $separator
* @return string
*/
public static function join($value, $separator = ', ')
@@ -535,6 +536,7 @@ class A
* // ];
*
*
+ * @param array ...$arrays
* @return array
*/
public static function extend(...$arrays): array
diff --git a/kirby/src/Toolkit/Collection.php b/kirby/src/Toolkit/Collection.php
index ec0c3a0..68c5114 100755
--- a/kirby/src/Toolkit/Collection.php
+++ b/kirby/src/Toolkit/Collection.php
@@ -19,7 +19,6 @@ use Exception;
*/
class Collection extends Iterator implements Countable
{
-
/**
* All registered collection filters
*
@@ -60,7 +59,7 @@ class Collection extends Iterator implements Countable
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->keys();
}
@@ -117,13 +116,13 @@ class Collection extends Iterator implements Countable
*
* @param mixed $key
* @param mixed $item
- * @return Kirby\Toolkit\Collection
+ * @return \Kirby\Toolkit\Collection
*/
public function append(...$args)
{
if (count($args) === 1) {
$this->data[] = $args[0];
- } elseif (count($args) === 2) {
+ } elseif (count($args) > 1) {
$this->set($args[0], $args[1]);
}
@@ -135,7 +134,7 @@ class Collection extends Iterator implements Countable
* The last chunk may be smaller
*
* @param int $size Number of elements per chunk
- * @return Kirby\Toolkit\Collection A new collection with an element for each chunk and
+ * @return \Kirby\Toolkit\Collection A new collection with an element for each chunk and
* a sub collection in each chunk
*/
public function chunk(int $size)
@@ -197,7 +196,7 @@ class Collection extends Iterator implements Countable
/**
* Clone and remove all elements from the collection
*
- * @return Kirby\Toolkit\Collection
+ * @return \Kirby\Toolkit\Collection
*/
public function empty()
{
@@ -210,6 +209,7 @@ class Collection extends Iterator implements Countable
/**
* Adds all elements to the collection
*
+ * @param mixed $items
* @return self
*/
public function extend($items)
@@ -250,6 +250,7 @@ class Collection extends Iterator implements Countable
* predefined filter methods.
*
* @param string $field
+ * @param array ...$args
* @return self
*/
public function filterBy(string $field, ...$args)
@@ -409,7 +410,7 @@ class Collection extends Iterator implements Countable
/**
* Returns the elements in reverse order
*
- * @return Kirby\Toolkit\Collection
+ * @return \Kirby\Toolkit\Collection
*/
public function flip()
{
@@ -525,7 +526,7 @@ class Collection extends Iterator implements Countable
*
* @param string $field
* @param bool $i
- * @return Kirby\Toolkit\Collection A new collection with an element for each group and a subcollection in each group
+ * @return \Kirby\Toolkit\Collection A new collection with an element for each group and a subcollection in each group
*/
public function groupBy($field, bool $i = true)
{
@@ -596,7 +597,7 @@ class Collection extends Iterator implements Countable
* Returns a new object with a limited number of elements
*
* @param int $limit The number of elements to return
- * @return Kirby\Toolkit\Collection
+ * @return \Kirby\Toolkit\Collection
*/
public function limit(int $limit)
{
@@ -607,7 +608,7 @@ class Collection extends Iterator implements Countable
* Map a function to each element
*
* @param callable $callback
- * @return Kirby\Toolkit\Collection
+ * @return \Kirby\Toolkit\Collection
*/
public function map(callable $callback)
{
@@ -629,8 +630,8 @@ class Collection extends Iterator implements Countable
/**
* Returns a Collection without the given element(s)
*
- * @param args any number of keys, passed as individual arguments
- * @return Kirby\Toolkit\Collection
+ * @param string ...$keys any number of keys, passed as individual arguments
+ * @return \Kirby\Toolkit\Collection
*/
public function not(...$keys)
{
@@ -645,7 +646,7 @@ class Collection extends Iterator implements Countable
* Returns a new object starting from the given offset
*
* @param int $offset The index to start from
- * @return Kirby\Toolkit\Collection
+ * @return \Kirby\Toolkit\Collection
*/
public function offset(int $offset)
{
@@ -655,7 +656,8 @@ class Collection extends Iterator implements Countable
/**
* Add pagination
*
- * @return Kirby\Toolkit\Collection a sliced set of data
+ * @param array ...$arguments
+ * @return \Kirby\Toolkit\Collection a sliced set of data
*/
public function paginate(...$arguments)
{
@@ -668,7 +670,7 @@ class Collection extends Iterator implements Countable
/**
* Get the previously added pagination object
*
- * @return Kirby\Toolkit\Pagination|null
+ * @return \Kirby\Toolkit\Pagination|null
*/
public function pagination()
{
@@ -716,7 +718,7 @@ class Collection extends Iterator implements Countable
{
if (count($args) === 1) {
array_unshift($this->data, $args[0]);
- } elseif (count($args) === 2) {
+ } elseif (count($args) > 1) {
$data = $this->data;
$this->data = [];
$this->set($args[0], $args[1]);
@@ -807,7 +809,7 @@ class Collection extends Iterator implements Countable
/**
* Shuffle all elements
*
- * @return Kirby\Toolkit\Collection
+ * @return \Kirby\Toolkit\Collection
*/
public function shuffle()
{
@@ -830,7 +832,7 @@ class Collection extends Iterator implements Countable
*
* @param int $offset The optional index to start the slice from
* @param int $limit The optional number of elements to return
- * @return Kirby\Toolkit\Collection
+ * @return \Kirby\Toolkit\Collection
*/
public function slice(int $offset = 0, int $limit = null)
{
@@ -942,7 +944,34 @@ class Collection extends Iterator implements Countable
$params[] = $field['flags'] ?? SORT_NATURAL | SORT_FLAG_CASE;
}
- $params[] = &$array;
+ // check what kind of collection items we have; only check for the first
+ // item for better performance (we assume that all collection items are
+ // of the same type)
+ $firstItem = $collection->first();
+ if (is_object($firstItem) === true) {
+ // avoid the "Nesting level too deep - recursive dependency?" error
+ // when PHP tries to sort by the objects directly (in case all other
+ // fields are 100 % equal for some elements)
+ if (method_exists($firstItem, '__toString') === true) {
+ // PHP can easily convert the objects to strings, so it should
+ // compare them as strings instead of as objects to avoid the recursion
+ $params[] = &$array;
+ $params[] = SORT_STRING;
+ } else {
+ // we can't convert the objects to strings, so we need a fallback:
+ // custom fictional field that is guaranteed to have a unique value
+ // for each item; WARNING: may lead to slightly wrong sorting results
+ // and is therefore only used as a fallback if we don't have another way
+ $params[] = range(1, count($array));
+ $params[] = SORT_ASC;
+ $params[] = SORT_NUMERIC;
+
+ $params[] = &$array;
+ }
+ } else {
+ // collection items are scalar or array; no correction necessary
+ $params[] = &$array;
+ }
// array_multisort receives $params as separate params
array_multisort(...$params);
@@ -955,6 +984,7 @@ class Collection extends Iterator implements Countable
/**
* Converts the object into an array
*
+ * @param Closure $map
* @return array
*/
public function toArray(Closure $map = null): array
@@ -1000,8 +1030,8 @@ class Collection extends Iterator implements Countable
/**
* Alias for $this->not()
*
- * @param args any number of keys, passed as individual arguments
- * @return Kirby\Toolkit\Collection
+ * @param string ...$keys any number of keys, passed as individual arguments
+ * @return \Kirby\Toolkit\Collection
*/
public function without(...$keys)
{
diff --git a/kirby/src/Toolkit/Component.php b/kirby/src/Toolkit/Component.php
index e8afd48..2b12488 100755
--- a/kirby/src/Toolkit/Component.php
+++ b/kirby/src/Toolkit/Component.php
@@ -17,7 +17,6 @@ use TypeError;
*/
class Component
{
-
/**
* Registry for all component mixins
*
@@ -138,7 +137,7 @@ class Component
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->toArray();
}
@@ -208,7 +207,9 @@ class Component
protected function applyComputed(array $computed): void
{
foreach ($computed as $computedName => $computedFunction) {
- $this->$computedName = $this->computed[$computedName] = $computedFunction->call($this);
+ if (is_callable($computedFunction) === true) {
+ $this->$computedName = $this->computed[$computedName] = $computedFunction->call($this);
+ }
}
}
diff --git a/kirby/src/Toolkit/Dir.php b/kirby/src/Toolkit/Dir.php
index c84dc05..e8ba48d 100755
--- a/kirby/src/Toolkit/Dir.php
+++ b/kirby/src/Toolkit/Dir.php
@@ -20,7 +20,6 @@ use Throwable;
*/
class Dir
{
-
/**
* Ignore when scanning directories
*
@@ -84,6 +83,7 @@ class Dir
* Get all subdirectories
*
* @param string $dir
+ * @param array $ignore
* @param bool $absolute
* @return array
*/
@@ -102,6 +102,7 @@ class Dir
* Get all files
*
* @param string $dir
+ * @param array $ignore
* @param bool $absolute
* @return array
*/
@@ -120,7 +121,9 @@ class Dir
* Read the directory and all subdirectories
*
* @param string $dir
+ * @param bool $recursive
* @param array $ignore
+ * @param string $path
* @return array
*/
public static function index(string $dir, bool $recursive = false, array $ignore = null, string $path = null)
@@ -145,6 +148,7 @@ class Dir
/**
* Checks if the folder has any contents
*
+ * @param string $dir
* @return boolean
*/
public static function isEmpty(string $dir): bool
diff --git a/kirby/src/Toolkit/Escape.php b/kirby/src/Toolkit/Escape.php
index a3601b7..0a15676 100755
--- a/kirby/src/Toolkit/Escape.php
+++ b/kirby/src/Toolkit/Escape.php
@@ -23,7 +23,6 @@ use Zend\Escaper\Escaper;
*/
class Escape
{
-
/**
* Escape common HTML attributes data
*
diff --git a/kirby/src/Toolkit/F.php b/kirby/src/Toolkit/F.php
index cf8feed..d959339 100755
--- a/kirby/src/Toolkit/F.php
+++ b/kirby/src/Toolkit/F.php
@@ -48,6 +48,7 @@ class F
'py',
'scss',
'xml',
+ 'yaml',
'yml',
],
'document' => [
@@ -102,7 +103,7 @@ class F
],
];
- public static $units = ['B','kB','MB','GB','TB','PB', 'EB', 'ZB', 'YB'];
+ public static $units = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
/**
* Appends new content to an existing file
@@ -130,7 +131,7 @@ class F
/**
* Copy a file to a new location.
*
- * @param string $file
+ * @param string $source
* @param string $target
* @param boolean $force
* @return boolean
@@ -359,6 +360,7 @@ class F
* Loads a file and returns the result
*
* @param string $file
+ * @param mixed $fallback
* @return mixed
*/
public static function load(string $file, $fallback = null)
@@ -573,6 +575,31 @@ class F
return $realpath;
}
+ /**
+ * Returns the relative path of the file
+ * starting after $in
+ *
+ * @param string $file
+ * @param string $in
+ * @return string
+ */
+ public static function relativepath(string $file, string $in = null): string
+ {
+ if (empty($in) === true) {
+ return basename($file);
+ }
+
+ // windows
+ $file = str_replace('\\', '/', $file);
+ $in = str_replace('\\', '/', $in);
+
+ if (Str::contains($file, $in) === false) {
+ return basename($file);
+ }
+
+ return Str::after($file, $in);
+ }
+
/**
* Deletes a file
*
@@ -633,6 +660,7 @@ class F
* building a glob based on the path
*
* @param string $path
+ * @param string $pattern
* @return array
*/
public static function similar(string $path, string $pattern = '*'): array
@@ -708,7 +736,7 @@ class F
throw new Exception('The ZipArchive class is not available');
}
- $zip = new ZipArchive;
+ $zip = new ZipArchive();
if ($zip->open($file) === true) {
$zip->extractTo($to);
diff --git a/kirby/src/Toolkit/Facade.php b/kirby/src/Toolkit/Facade.php
index 25a4679..3387a97 100755
--- a/kirby/src/Toolkit/Facade.php
+++ b/kirby/src/Toolkit/Facade.php
@@ -14,7 +14,6 @@ namespace Kirby\Toolkit;
*/
abstract class Facade
{
-
/**
* Returns the instance that should be
* available statically
diff --git a/kirby/src/Toolkit/File.php b/kirby/src/Toolkit/File.php
index edd16f2..857a416 100755
--- a/kirby/src/Toolkit/File.php
+++ b/kirby/src/Toolkit/File.php
@@ -16,7 +16,6 @@ use Exception;
*/
class File
{
-
/**
* Absolute file path
*
@@ -39,7 +38,7 @@ class File
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->toArray();
}
diff --git a/kirby/src/Toolkit/Html.php b/kirby/src/Toolkit/Html.php
index 244b0f2..02cfad2 100755
--- a/kirby/src/Toolkit/Html.php
+++ b/kirby/src/Toolkit/Html.php
@@ -16,7 +16,6 @@ use Kirby\Http\Url;
*/
class Html
{
-
/**
* An internal store for a html entities translation table
*
diff --git a/kirby/src/Toolkit/I18n.php b/kirby/src/Toolkit/I18n.php
index caf9d8f..97a2dd2 100755
--- a/kirby/src/Toolkit/I18n.php
+++ b/kirby/src/Toolkit/I18n.php
@@ -16,7 +16,6 @@ use Exception;
*/
class I18n
{
-
/**
* Custom loader function
*
@@ -116,7 +115,7 @@ class I18n
return $key[$locale];
}
if (is_array($fallback)) {
- return $fallback[$locale] ?? null;
+ return $fallback[$locale] ?? $fallback['en'] ?? reset($fallback);
}
return $fallback;
}
@@ -196,6 +195,7 @@ class I18n
*
* @param string $key
* @param integer $count
+ * @param string $locale
* @return mixed
*/
public static function translateCount(string $key, int $count, string $locale = null)
diff --git a/kirby/src/Toolkit/Iterator.php b/kirby/src/Toolkit/Iterator.php
index d39e469..a39e156 100755
--- a/kirby/src/Toolkit/Iterator.php
+++ b/kirby/src/Toolkit/Iterator.php
@@ -15,7 +15,6 @@ namespace Kirby\Toolkit;
*/
class Iterator implements \Iterator
{
-
/**
* The data array
*
@@ -162,7 +161,7 @@ class Iterator implements \Iterator
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->data;
}
diff --git a/kirby/src/Toolkit/Mime.php b/kirby/src/Toolkit/Mime.php
index 1966b10..93f044d 100755
--- a/kirby/src/Toolkit/Mime.php
+++ b/kirby/src/Toolkit/Mime.php
@@ -106,6 +106,8 @@ class Mime
'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
'xsl' => 'text/xml',
+ 'yaml' => ['application/yaml', 'text/yaml'],
+ 'yml' => ['application/yaml', 'text/yaml'],
'zip' => ['application/x-zip', 'application/zip', 'application/x-zip-compressed'],
];
@@ -122,12 +124,12 @@ class Mime
// fixing map
$map = [
'text/html' => [
- 'svg' => [Mime::class, 'fromSvg'],
+ 'svg' => ['Kirby\Toolkit\Mime', 'fromSvg'],
],
'text/plain' => [
'css' => 'text/css',
'json' => 'application/json',
- 'svg' => [Mime::class, 'fromSvg'],
+ 'svg' => ['Kirby\Toolkit\Mime', 'fromSvg'],
],
'text/x-asm' => [
'css' => 'text/css'
@@ -219,6 +221,8 @@ class Mime
/**
* Undocumented function
*
+ * @param string $mime
+ * @param string $pattern
* @return boolean
*/
public static function isAccepted(string $mime, string $pattern): bool
@@ -284,6 +288,7 @@ class Mime
* Returns the mime type of a file
*
* @param string $file
+ * @param string $extension
* @return string|false
*/
public static function type(string $file, string $extension = null)
diff --git a/kirby/src/Toolkit/Obj.php b/kirby/src/Toolkit/Obj.php
index b60fa7b..bce4e9b 100755
--- a/kirby/src/Toolkit/Obj.php
+++ b/kirby/src/Toolkit/Obj.php
@@ -16,7 +16,6 @@ use stdClass;
*/
class Obj extends stdClass
{
-
/**
* Constructor
*
@@ -46,7 +45,7 @@ class Obj extends stdClass
*
* @return array
*/
- public function __debuginfo(): array
+ public function __debugInfo(): array
{
return $this->toArray();
}
@@ -97,6 +96,7 @@ class Obj extends stdClass
/**
* Converts the object to a json string
*
+ * @param mixed ...$arguments
* @return string
*/
public function toJson(...$arguments): string
diff --git a/kirby/src/Toolkit/Pagination.php b/kirby/src/Toolkit/Pagination.php
index 0f524db..b23210e 100755
--- a/kirby/src/Toolkit/Pagination.php
+++ b/kirby/src/Toolkit/Pagination.php
@@ -15,7 +15,6 @@ use Exception;
*/
class Pagination
{
-
/**
* The current page
*
@@ -54,8 +53,8 @@ class Pagination
* Creates a pagination instance for the given
* collection with a flexible argument api
*
- * @param Kirby\CmToolkits\Collection $collection
- * @param ...mixed $arguments
+ * @param \Kirby\Toolkit\Collection $collection
+ * @param mixed ...$arguments
* @return self
*/
public static function for(Collection $collection, ...$arguments)
@@ -116,8 +115,8 @@ class Pagination
/**
* Getter and setter for the current page
*
- * @param int|null $page
- * @return int|Pagination
+ * @param int|null $page
+ * @return int|\Kirby\Toolkit\Pagination
*/
public function page(int $page = null)
{
@@ -140,8 +139,8 @@ class Pagination
/**
* Getter and setter for the total number of items
*
- * @param int|null $total
- * @return int|Pagination
+ * @param int|null $total
+ * @return int|\Kirby\Toolkit\Pagination
*/
public function total(int $total = null)
{
@@ -160,8 +159,8 @@ class Pagination
/**
* Getter and setter for the number of items per page
*
- * @param int|null $limit
- * @return int|Pagination
+ * @param int|null $limit
+ * @return int|\Kirby\Toolkit\Pagination
*/
public function limit(int $limit = null)
{
@@ -256,6 +255,7 @@ class Pagination
/**
* Checks if the given page exists
*
+ * @param int $page
* @return boolean
*/
public function hasPage(int $page): bool
@@ -344,6 +344,7 @@ class Pagination
/**
* Creates a range of page numbers for Google-like pagination
*
+ * @param int $range
* @return array
*/
public function range(int $range = 5): array
@@ -376,6 +377,7 @@ class Pagination
/**
* Returns the first page of the created range
*
+ * @param int $range
* @return int
*/
public function rangeStart(int $range = 5): int
@@ -386,6 +388,7 @@ class Pagination
/**
* Returns the last page of the created range
*
+ * @param int $range
* @return int
*/
public function rangeEnd(int $range = 5): int
diff --git a/kirby/src/Toolkit/Silo.php b/kirby/src/Toolkit/Silo.php
index 760beeb..4158ea6 100755
--- a/kirby/src/Toolkit/Silo.php
+++ b/kirby/src/Toolkit/Silo.php
@@ -15,19 +15,18 @@ namespace Kirby\Toolkit;
*/
class Silo
{
-
/**
* @var array
*/
public static $data = [];
/**
- * Setter for new data.
- *
- * @param string|array $key
- * @param mixed $value
- * @return array
- */
+ * Setter for new data.
+ *
+ * @param string|array $key
+ * @param mixed $value
+ * @return array
+ */
public static function set($key, $value = null): array
{
if (is_array($key) === true) {
diff --git a/kirby/src/Toolkit/Str.php b/kirby/src/Toolkit/Str.php
index cedaa18..1554e18 100755
--- a/kirby/src/Toolkit/Str.php
+++ b/kirby/src/Toolkit/Str.php
@@ -17,7 +17,6 @@ use Exception;
*/
class Str
{
-
/**
* Language translation table
*
@@ -804,7 +803,7 @@ class Str
{
if (!ctype_lower($value)) {
$value = preg_replace('/\s+/u', '', ucwords($value));
- $value = static::lower(preg_replace('/(.)(?=[A-Z])/u', '$1'.$delimiter, $value));
+ $value = static::lower(preg_replace('/(.)(?=[A-Z])/u', '$1' . $delimiter, $value));
}
return $value;
}
@@ -883,6 +882,8 @@ class Str
* @param array $data Associative array with placeholders as
* keys and replacements as values
* @param string $fallback A fallback if a token does not have any matches
+ * @param string $start Placeholder start characters
+ * @param string $end Placeholder end characters
* @return string The filled-in string
*/
public static function template(string $string = null, array $data = [], string $fallback = null, string $start = '{{', string $end = '}}'): string
@@ -896,6 +897,33 @@ class Str
}, $string);
}
+ /**
+ * Converts a filesize string with shortcuts
+ * like M, G or K to an integer value
+ *
+ * @param mixed $size
+ * @return int
+ */
+ public static function toBytes($size): int
+ {
+ $size = trim($size);
+ $last = strtolower($size[strlen($size)-1] ?? null);
+ $size = (int)$size;
+
+ switch ($last) {
+ case 'g':
+ $size *= 1024;
+ // no break
+ case 'm':
+ $size *= 1024;
+ // no break
+ case 'k':
+ $size *= 1024;
+ }
+
+ return $size;
+ }
+
/**
* Convert the string to the given type
*
@@ -917,10 +945,10 @@ class Str
return filter_var($string, FILTER_VALIDATE_BOOLEAN);
case 'double':
case 'float':
- return floatval($string);
+ return (float)$string;
case 'int':
case 'integer':
- return intval($string);
+ return (int)$string;
}
return (string)$string;
@@ -1020,7 +1048,7 @@ class Str
{
return preg_replace_callback('|([^\s])\s+([^\s]+)\s*$|u', function ($matches) {
if (static::contains($matches[2], '-')) {
- return $matches[1] . ' ' . str_replace('-', '‑', $matches[2]);
+ return $matches[1] . ' ' . str_replace('-', '‑', $matches[2]);
} else {
return $matches[1] . ' ' . $matches[2];
}
diff --git a/kirby/src/Toolkit/Tpl.php b/kirby/src/Toolkit/Tpl.php
index 6dd62e1..41816f3 100755
--- a/kirby/src/Toolkit/Tpl.php
+++ b/kirby/src/Toolkit/Tpl.php
@@ -15,7 +15,6 @@ use Throwable;
*/
class Tpl
{
-
/**
* Renders the template
*
diff --git a/kirby/src/Toolkit/V.php b/kirby/src/Toolkit/V.php
index ed88d7a..b5b6eed 100755
--- a/kirby/src/Toolkit/V.php
+++ b/kirby/src/Toolkit/V.php
@@ -4,7 +4,6 @@ namespace Kirby\Toolkit;
use Exception;
use Kirby\Http\Idn;
-use Kirby\Toolkit\Str;
use ReflectionFunction;
use Throwable;
@@ -19,7 +18,6 @@ use Throwable;
*/
class V
{
-
/**
* An array with all installed validators
*
@@ -245,9 +243,9 @@ V::$validators = [
*/
'date' => function ($value): bool {
$date = date_parse($value);
- return ($date !== false &&
+ return $date !== false &&
$date['error_count'] === 0 &&
- $date['warning_count'] === 0);
+ $date['warning_count'] === 0;
},
/**
diff --git a/kirby/src/Toolkit/View.php b/kirby/src/Toolkit/View.php
index 8deb488..a40559e 100755
--- a/kirby/src/Toolkit/View.php
+++ b/kirby/src/Toolkit/View.php
@@ -16,7 +16,6 @@ use Throwable;
*/
class View
{
-
/**
* The absolute path to the view file
*
diff --git a/kirby/src/Toolkit/Xml.php b/kirby/src/Toolkit/Xml.php
index 1e4498f..fdf000c 100755
--- a/kirby/src/Toolkit/Xml.php
+++ b/kirby/src/Toolkit/Xml.php
@@ -13,7 +13,6 @@ namespace Kirby\Toolkit;
*/
class Xml
{
-
/**
* Conversion table for html entities
*
@@ -186,12 +185,13 @@ class Xml
* @param string $name
* @param mixed $content
* @param array $attr
+ * @param mixed $indent
* @return string
*/
public static function tag(string $name, $content = null, array $attr = null, $indent = null): string
{
$attr = Html::attr($attr);
- $start = '<' . $name . ($attr ? ' ' . $attr : null) . '>';
+ $start = '<' . $name . ($attr ? ' ' . $attr : null) . '>';
$end = '' . $name . '>';
if (is_array($content) === true) {
diff --git a/kirby/views/panel.php b/kirby/views/panel.php
index 6c9d38c..8906c58 100755
--- a/kirby/views/panel.php
+++ b/kirby/views/panel.php
@@ -10,8 +10,8 @@
-
-
+
+
@@ -20,13 +20,18 @@
- = $icons ?>
+
+
+ = $icons ?>
+