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) * * * @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 @@ - - + + - + - + - + - + - + - + - + - + - + @@ -275,45 +220,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 '![' . $this->alt() . '](' . $url . ')'; } 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 = ''; 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 @@ - + +

+ +